生日攻击

突然看到关于\(Hash\)碰撞攻击的题,就顺便复习一下orz(学啥忘啥星人)

Hash碰撞攻击

穷举攻击

  • 对于一个输出长度是n-bit\(Hash\)函数,寻找碰撞最直接的方法是穷举攻击:产生\(2^n+1\)个不同的消息,分别计算它们的\(Hash\)值。很明显,最多有\(2^n\)个不同的\(Hash\)值。而\(2^n+1\)个消息必然产生\(2^n+1\)\(Hash\)值。

  • 根据抽屉原理,必然有两个不同的消息,它们的\(Hash\)值相同,如此便找到了一对碰撞。很明显,穷举攻击的时间复杂度为\(O(2^n)\)

抽屉原理:桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放不少于两个苹果。这一现象就是我们所说的“抽屉原理”。 抽屉原理的一般含义为:“如果每个抽屉代表一个集合,每一个苹果就可以代表一个元素,假如有n+1个元素放到n个集合中去,其中必定有一个集合里至少有两个元素。” 抽屉原理有时也被称为鸽巢原理。它是组合数学中一个重要的原理。

生日攻击

  • 比起效率低的穷举攻击,有没有更快的方法呢?当然有:生日攻击可以\(O(2^{\frac{n}{2}})\)的时间复杂度找到一对碰撞。

先记个结论,具体内容之后再补orz

参考资料:【现代密码学入门】44. 生日攻击

posted @ 2022-05-22 18:41  Weisswire  阅读(247)  评论(0编辑  收藏  举报