zoukankan      html  css  js  c++  java
  • 生日攻击

    本文链接:https://blog.csdn.net/px_farmer/article/details/52688806
    上一篇文章提到了生日悖论。总结起来,生日悖论的本质就是,随着元素增多,出现重复元素的概率会以惊人速度增长,而我们低估了它的速度。

    那什么又是生日攻击呢?

    将生日悖论的问题抽象成散列函数,教室里每个人作为函数的输入x,每个人对应的生日作为函数的输出y,那么可以写成H(x)= y,由于一年有365 天,所以y可以取的值有365种。这时候我们改变输入x取值范围,发现只要当x取值数大于23种时,y碰撞的几率就达到50%以上。

    简单来说,生日攻击就是利用散列函数发生碰撞的可能性,进行n次尝试直到找到一对碰撞的输入。一个40比特长的消息摘要是很不安全的,大约一百万次随机Hash可至少以50%的概率找到一个碰撞。

    然而当我知道生日攻击的原理后,另一个问题在我脑海中产生了。生日攻击有什么实际意义吗?如果说给定一个hash输入(hash算法就是一种散列函数的实例,编程加密,算签名等经常用到),攻击者能找到另一个输入与其碰撞,那么这种攻击肯定是致命的。但是根据生日攻击,攻击者仅仅能找到一对碰撞,它们和已有的数据并无关联,那它们又能起到什么作用呢?

    直到看到一篇帖子,我豁然开朗(原贴地址:http://bbs.kafan.cn/thread-1388224-1-1.html)。引用其中三楼生动的解释:

    一个简单的例子

    我先写封信:
    这个(LZ/楼主)是个(老手/专家),(大家/同志们)一定要(向/像)他学习

    然后在写封信
    这个(LZ/楼主)是个(新手/菜鸟),(大家/回帖的各位)记住(鄙视他/陪他玩玩)

    注意,同样的一句话,根据简单的同义词,我就可以产生2^N种不同组合
    当N很大的时候,比如说64对同义词,那么:
    对于这个意思完全相反的两段话,分别得到了2^64个不同的文件
    计算得到两组摘要,每组2^64

    根据生日攻击方法,这两组摘要中很可能有一组匹配的

    然后我把第一段发给你的某个朋友,让他对这个摘要签名。他肯定会同意
    我再把第二段公开出来,声称你的朋友对它签名了,也就是你的朋友同意了骂你的那一段
    由于这两段的摘要完全相同,那么他无法为自己有效的辩解——第三方很容易识别出,他对那段骂你的摘要进行了签名


    ————————————————
    版权声明:本文为CSDN博主「-_-px」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/px_farmer/article/details/52688806

  • 相关阅读:
    在SQLite中使用索引优化查询速度
    SQLite支持的SQL数据操作
    left (outer) join , right (outer) join, full (outer) join, (inner) join, cross join 区别
    深入理解Android内存管理原理(六)
    Merge Sorted Array
    Sort Colors
    Construct Binary Tree from Preorder and Inorder Traversal
    Binary Tree Postorder Traversal
    Symmetric Tree
    Rotate Image
  • 原文地址:https://www.cnblogs.com/qiyuexin/p/11847009.html
Copyright © 2011-2022 走看看