2010-10-25 62 views
2

维基百科,我读:为什么加密散列函数中的冲突检测使查找其他冲突更容易?

茹[3]注意的是,2-碰撞导致正的碰撞:如果它是可行的找到具有相同MD5哈希两个消息,它是有效地没有更多的困难找到与攻击者所期望的具有相同MD5哈希值的尽可能多的消息。

但为什么这样呢?我无法想象为什么?这些算法是开放的,人们可以阅读产生哈希的数学,这是摘要机制。所以如果我们知道一次碰撞,为什么它会帮助找到新的?

它是只是对这两个第一个碰撞消息进行小的迭代,然后监视它们的更改以重新映射它们?

+0

好的问题,但不幸与编程无关。 – 2010-10-25 16:50:40

+0

找到其他碰撞将需要编程... – Vass 2010-10-25 17:10:22

回答

6

这不是所有散列函数的属性,而是Merkle–Damgård construction(其中MD5和SHA-1基于)的弱点,称为长度扩展。这个弱点涉及到一个事实,即你可以用特别选择的附加数据“恢复”散列计算。对于如何充分的细节被用来生成任意多次碰撞,请参阅:

对于基于这个想法相关的攻击,请参阅:

+1

虽然长度扩展是相关的,但这是一个明显的弱点。特别是散列函数可以具有这个属性,而不会受长度扩展的影响。例如,当您在Skein-512-512中发现相同长度的碰撞时,这意味着状态碰撞,并因此允许多重碰撞。对于其他散列函数,输出冲突并不意味着状态冲突,但状态冲突仍然意味着多重冲突。 – CodesInChaos 2012-11-02 12:32:38

0

我认为这里的关键是“可行”这个词。在crypto-land中,可行的意思是“相对于我试图破解的任何价值而言的合理时间量”,或者可能是“根据你看待事物的方式使用暴力所花的时间”。因此,如果我能够切实地找到1次碰撞,那么我可以发现n次碰撞是可行的,因为n*small仍然很小。

仍然会有部分 n其中n*small > value of breakage

这是否适用于其他散列函数?我相信,但我可能是错的。

让火焰开始。

+0

如果您知道一个MD5冲突(具有相同长度的消息),则发现更多相关冲突与查找第一次冲突相比便宜得多/便宜得多。只需将相同的字符串附加到它们两个上,它仍然是一个碰撞。 – CodesInChaos 2012-11-02 12:34:05