在他们关于SHA-1碰撞的工作中(参见Stevens,Karpman和Peyrin撰写的EUROCRYPT-2016论文“在完全SHA-1上的Freestart碰撞”),Stevens等人证明了他们能够在SHA- 1。他们说:


尽管自由启动碰撞并没有直接导致SHA-1发生实际碰撞,但在我们的案例中,我们在此过程中获得的实验数据可以使对SHA-1的预测更加准确与以前的预测相比,SHA-1实际碰撞的实际成本。


什么是哈希函数上的“自由启动冲突”?

#1 楼

定义
在用于哈希函数的Damgard-Merkle构造中,压缩函数将作为输入:

消息块和
链接值。

对于第一个块没有先前的“链接值”。而是给出了一个称为初始化向量(IV)的特定值。
自由启动冲突是攻击者可以选择IV的冲突。
特别是在他们的论文中(表2-1,第3页) ),作者发现两个略有不同的IV(只有两个位不同):

$ IV_1:$ 50 6b 01 78 ff 6d 18 90 20 22 91 fd 3a de 38 71 b2 c6 65 ea
$ IV_2:$ 50 6b 01 78 ff 6d 18 91 a0 22 91 fd 3a de 38 71 b2 c6 65 ea

他们的攻击是他们的第一次攻击,正如他们在工作中所声称的那样破坏了SHA-1压缩功能的整个80轮。
效果
即使自由启动碰撞没有立即产生标准碰撞,也可以将其用于多块碰撞搜索。链接值的确是前一个块的压缩函数输出。
(或者至少对我而言)不清楚从自由启动碰撞到标准碰撞的路径有多容易。
例如:MD5用了8年的时间。 MD5的第一个自由启动碰撞是在1996年发现的(Dobbertin,Eurocrypt Rump Session),而MD5的第一个标准碰撞直到2004年才发布。
在散列函数中发现自由启动冲突并不能完全破坏该函数,但存在很大的缺陷。通过自由启动碰撞,研究人员展示了两个碰撞信息的后半部分。可以说我们现在知道导致碰撞的路径,但是我们还不知道它从哪里开始。
要研究的最后一步是找出一个块消息$ m_0 $,其中$ SHA $-$ 1(m_0)$等于自由启动IV。
找到这样的消息后,将提供冲突。必须说,找出被散列为给定值的消息是不可行的(对于损坏的MD5散列函数来说,这仍然是一个难题)。
UPDATE:已发现完全冲突:https:// /shattered.it/

评论


$ \ begingroup $
最后一句话有点误导;首先,由于史蒂文斯(Stevens)等人造成的自由启动碰撞。使用两个不同的IV,其次,在可预见的将来,找到散列到特定数字的消息(即获取原像)可能仍然不可行。 (例如,在MD5上获取原像仍然不可行:crypto.stackexchange.com/questions/13303/…)。取而代之的是,研究可能会通过在不控制IV的情况下更轻松地发现碰撞而取得进展。
$ \ endgroup $
–尼基塔·鲍里索夫(Nikita Borisov)
15年10月23日在21:31

$ \ begingroup $
谢谢,我将尝试改写它。或者,您也可以根据需要建议修改
$ \ endgroup $
–ddddavidee
15-10-24在7:29