从表面上看,SHA1和MD5看起来很相似。他们的图包括位块,位旋转,异或和特殊功能。它们的实现大致相同的长度(至少是我所见过的)。然而,众所周知MD5已损坏,但目前SHA1尚未损坏。

增加的回合数与安全性有区别吗? SHA1比MD5的64有80。还是摘要大小更大? SHA1似乎被描述为“更保守”,但是我不确定这意味着什么。

评论

实际上,SHA-1即将被破坏。对其的最佳攻击是在$ O(2 ^ {61})$操作中发现冲突,而不是其输出长度所期望的$ O(2 ^ {80})$。

SHA1之所以被认为是保守的,是因为与MD5(基于MD5)相比,舍入常数数量有限,并且使用了固定旋转与取决于圆的旋转

我不明白您的问题-每个哈希函数都可以描述为具有“块,位旋转,异或和特殊功能”。

@ pg1989我的意思是特别是Merkle-Damgard结构。相比之下,SHA-3的运行方式有所不同。

#1 楼

MD5和SHA-1有很多共同点。 SHA-1显然受到MD5或MD4或两者的启发(SHA-1是SHA-0的修补版本,于1993年发布,而MD5在1992年被描述为RFC)。

主要结构差异如下:


SHA-1具有更大的状态:160位和128位。
SHA-1具有更多的回合:80 vs 64 。
SHA-1舍入有一个额外的位旋转,并且状态字的混合略有不同(主要用于解释第五个字)。
按位组合函数和舍入常数不同。
SHA-1中的位循环计数在所有回合中都是相同的,而在MD5中,每个回合都有其自己的循环计数。
消息字在SHA-0和SHA-1中进行了预处理。在MD5中,每个回合使用“原样”这16个消息词之一;在SHA-0中,使用某种逐字线性反馈移位寄存器将16个消息字扩展为80个派生字。 SHA-1进一步增加了这些单词派生的旋转度。它也使SHA-1抵御碰撞攻击的能力更强,确实发现了SHA-0碰撞(付出了$ 2 ^ {39} $的努力,因此非常可行),而SHA-1碰撞却困难得多。 >
关于使哈希函数更强大的理论,我们尚无定论。但是,我们仍然会有一些“直觉”,我自己的肠子告诉我,在类似MD的函数(MD4,MD5,SHA-0,SHA-1和SHA-2函数)中,这两个函数重要点是:


旋转很多。基于差分路径的碰撞攻击试图引起小的差异,并防止它们非线性地传播到任何地方。一个有用的工具是,在逐字加法中缺少超出高位的进位(加法运算$ 2 ^ {32} $的加法运算之一中高位的差以概率$ 1 $传播到输出;两个这样的差异就可以相互抵消)。 SHA-1中添加的1位旋转有效地使难以找到差分路径。
做“足够的工作”。如果计算每个输入字节的基本操作数(或多或少会转换为代码大小或速度,尤其是在GPU上),您会发现SHA-1比MD5重约30%,而SHA-256接近比SHA-1重两倍。通常,SHA-3候选者比SHA-1更为“重”(有些可以通过利用CPU中的SIMD操作码来提高速度,但每个输入字节仍有更多操作)。


评论


$ \ begingroup $
关于您的最后声明,BLAKE2b呢?它声称比MD5还要快。这是仅是由于利用了现代硬件的特殊优势,还是“更聪明而不是更努力地工作”的结果?
$ \ endgroup $
–斯蒂芬·托瑟(Stephen Touset)
2014年8月26日在18:58

$ \ begingroup $
@StephenTouset您可能需要阅读BLAKE2论文。它具有令人惊讶的可读性(不像其他一些论文那么多,不像特定领域的数学那么多),并且为提高性能的设计决策提供了广泛的理由。
$ \ endgroup $
–森林
19年2月18日在11:14