生日攻击

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

那什么又是生日攻击呢?

将生日悖论的问题抽象成散列函数,教室里每个人作为函数的输入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

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

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


  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值