SHA512优于MD5的原因

时间:2010-01-22 14:09:53

标签: cryptography md5 hash sha512

我想知道我是否可以解释资源的原因或链接,解释为什么SHA512是MD5的优秀哈希算法。

7 个答案:

答案 0 :(得分:61)

这取决于您的使用案例。你不能广泛宣称“优越感”。 (我的意思是,是的,你可以,在某些情况下,但要严格,你不能真的)。

但有些地方MD5已被破坏:

  1. 对于初学者:MD5很老,也很常见。有很多彩虹表反对它,它们很容易找到。因此,如果你正在哈希密码(没有盐羞耻!) - 使用md5 - 你也可能不会对它们进行哈希处理,它们很容易找到。即使你真的用简单的盐进行哈希扫描。
  2. 其次,MD5不再像加密哈希函数一样安全(实际上它甚至不再被认为是加密哈希函数,正如Forked One指出的那样)。您可以生成散列到相同值的不同消息。因此,如果你有一个带有MD5哈希的SSL证书,我可以生成一个重复的证书,说出我想要的,产生the same hash。这通常是人们说MD5被“破坏”时的意思 - 就像这样。
  3. 第三,与消息类似,您也可以生成不同的文件 that hash to the same value,因此使用MD5作为文件校验和是“已损坏”。
  4. 现在,SHA-512是一个SHA-2 Family哈希算法。 SHA-1现在被认为是'呃',我会忽略它。然而,SHA-2对它的攻击相对较少。维基百科主要讨论的是a reduced-round preimage attack,这意味着如果你以极其错误的方式使用SHA-512,我可以打破它。很明显,你不太可能以这种方式使用它,但是攻击只会变得更好,而且它是进行更多研究以打破SHA-512的良好跳板,就像MD5被破坏一样。

    然而,在所有可用的Hash功能中,SHA-2系列目前是最强大的,也是考虑共性,分析和安全性的最佳选择。 (但必然速度。如果你在嵌入式系统中,则需要进行整个其他分析。)

答案 1 :(得分:10)

MD5已经加密破解了很长一段时间了。这基本上意味着通常由哈希算法保证的一些属性不再存在。例如,可以在比输出长度可能需要的时间少得多的时间内找到散列冲突。

SHA-512(SHA-2系列哈希函数之一)目前已足够安全,但在可预见的未来可能不会太长。这就是NIST开始参加SHA-3比赛的原因。

通常,您希望哈希算法是单向函数。他们将一些输入映射到某些输出。通常输出具有固定长度,从而提供原始输入的“摘要”。例如,常见属性是输入的微小变化会使输出产生很大的变化(这有助于检测篡改),并且该功能不易逆转。对于后一种属性,输出的长度非常有用,因为它为碰撞攻击的复杂性提供了理论上限。但是,设计或实施方面的缺陷通常会降低攻击的复杂性。一旦知道了,就应该评估是否仍然使用哈希函数。如果攻击复杂性下降得足够远,那么实际攻击很容易进入没有专门计算设备的人群中。

注意:我这里只讨论过一种攻击。现实如果更细微,但也更难掌握。由于散列函数非常常用于验证文件/消息的完整性,因此碰撞事件可能是最容易理解和遵循的事物。

答案 2 :(得分:3)

这里有几点没有得到解决,我觉得这是因为缺乏对哈希是什么,它是如何工作的,以及使用彩虹或任何其他方法成功攻击它们需要多长时间的理解目前为人所知...

从数学上讲,MD5并没有被打破"如果你对哈希和节流尝试加盐(即使是1秒),你的安全性就会像#34;破坏"就像一个攻击者用木勺慢慢地向你的1英尺坚固钢墙倾斜一样:

这需要几千年的时间,届时所有参与者都将死亡;还有更重要的事情需要担心。

如果您在第20次尝试锁定帐户...问题已解决。墙上20次点击= 0.0000000001%他们通过的机会。事实上,耶稣确实有更好的统计机会。

You're thinking about it wrong.

同样重要的是要注意,绝对任何哈希函数都会因为哈希是什么而容易受到冲突:&#34;其他东西的#(小)唯一ID&#34;。< / p>

当你增加位空间时,你会降低碰撞率,但你也会增加id的大小和计算它所需的时间。

让我们做一个小小的思想实验......

SHA-2,如果它存在,将有4个可能的唯一ID用于其他东西... 00,01,10&amp; 11.显然会产生碰撞。你看到这个问题吗?哈希只是您尝试识别的生成ID。

MD5实际上非常非常擅长根据输入随机选择一个数字。 SHA实际上并没有那么好; SHA只有更多的ID空间。

使用的方法大约是碰撞不太可能的原因的0.1%。真正的原因是比特空间更大。

这实际上是SHA-256和SHA-512不易受碰撞的唯一原因;因为他们使用更大的空间来获得唯一的身份。

用于生成哈希的实际方法SHA-256和SHA-512实际上更好,但不是很多;如果他们的ID位数较少,并且文件甚至密码使用SHA-256和SHA-512都具有相同的ID,那么相同的彩虹攻击会对他们起作用,因为它使用了更多的位,所以它的可能性要小得多

  

真实问题是您实施安全的方式

如果您允许自动攻击每秒击中您的身份验证端点1,000次,那么您将会被闯入。如果你每3秒踩一次尝试并在第10次尝试后锁定帐户24小时,你就不会。

如果你存储没有盐的密码(盐只是生成器的一个额外秘密,使得更难识别错误的密码,如&#34; 31337&#34;或&#34;密码&#34;)并且很多用户,你会被黑客攻击。如果你加盐,即使你使用MD5,你也不会。

考虑到MD5使用128位(HEX为32个字节,二进制为16个字节),SHA 512仅为空间的4倍,但实际上通过为您提供2 ^ 384个可能的ID来消除碰撞率...使用SHA- 512,每次。

但如果您担心如果使用MD5会发生什么事情,并且您不了解真实的,实际的差异,那么您仍然可能会被黑客入侵,感?

答案 3 :(得分:2)

reading this

  

然而,已经表明MD5不是抗冲击的

more information about collision here

答案 4 :(得分:1)

MD5有可能发生冲突(http://www.mscs.dal.ca/~selinger/md5collision/),并且有许多MD5彩虹表可以在网上查找反向密码并可供下载。

答案 5 :(得分:0)

它需要一个更大的字典来向后映射,并且碰撞的可能性更低。

答案 6 :(得分:0)

很简单,MD5坏了;)(见Wikipedia

  

布鲁斯·施奈尔(Bruce Schneier)写道,“已经知道MD5是一个破坏的哈希函数”并且“不再有人应该使用MD5了。”