您的位置:首页 > 其它

生日攻击

2016-09-28 12:32 162 查看
上一篇文章提到了生日悖论。总结起来,生日悖论的本质就是,随着元素增多,出现重复元素的概率会以惊人速度增长,而我们低估了它的速度。

那什么又是生日攻击呢?
将生日悖论的问题抽象成散列函数,教室里每个人作为函数的输入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

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

然后我把第一段发给你的某个朋友,让他对这个摘要签名。他肯定会同意

我再把第二段公开出来,声称你的朋友对它签名了,也就是你的朋友同意了骂你的那一段

由于这两段的摘要完全相同,那么他无法为自己有效的辩解——第三方很容易识别出,他对那段骂你的摘要进行了签名

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: