不同哈希算法的冲突率

信息安全 密码学 攻击 哈希
2021-09-02 18:43:43

流行的哈希算法(md5、crc32、sha-*)是否有任何冲突率度量?

如果这仅取决于输出大小,则测量起来非常简单,但我认为这也取决于分布和算法的内部结构(我认为它需要某种形式的证明)。

1个回答

如果我尝试为 MD5 创建冲突,我可以在我的 PC 上每 14 秒(平均)使用单核(Core2,2.4 GHz)进行一次冲突。这利用了 MD5 内部结构的弱点。如果我只尝试随机数据并等待冲突出现,那么,我将等待相当长的时间:第一次冲突预计在大约 2 64 个散列消息之后(给我一千台 PC,我应该在大约 20年的全职计算)。

对于当前未中断的加密哈希函数,没有已知的内部弱点(这就是“未中断”的含义),因此尝试随机消息是创建冲突的最知名方法。对于具有 n 位输出的散列函数,在您散列至少 2 n/2条消息之前,以这种方式发生冲突的机会非常小。这意味着对于任何输出为 256 位或更多位的适当散列函数,在实际条件下,冲突率为零(您将不会得到任何结果,这就是故事的结尾)。

维基百科有一些关于这个主题的指针。另见应用密码学手册第 9 章(第 369 页)。