SHA512优于MD5的原因

Lee*_*ner 28 hash md5 cryptography sha512

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

Tom*_*ter 61

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

但是有些地方MD5已被打破:

  1. 对于初学者:MD5很老,很常见.有很多彩虹表反对它,它们很容易找到.所以,如果你正在哈希密码(没有盐羞耻!) - 使用md5 - 你也可能不会对它们进行哈希处理,它们很容易找到.即使你真的使用简单的盐进行哈希处理.
  2. 其次,MD5不再像加密哈希函数一样安全(实际上它甚至不再被认为是加密哈希函数,正如Forked One所指出的那样).您可以生成散列到相同值的不同消息.因此,如果你有一个带有MD5哈希的SSL证书,我可以生成一个重复的证书,说明我想要的,产生相同的哈希值.这通常是人们说MD5被"破坏"时的意思 - 这样的事情.
  3. 第三,类似于消息,您还可以生成散列到相同值的不同文件 ,因此使用MD5作为文件校验和是"已损坏".

现在,SHA-512是SHA-2系列哈希算法.SHA-1现在被认为是'呃',我会忽略它.然而,SHA-2对它的攻击相对较少.维基百科主要讨论的是一个简化的原始图像攻击,这意味着如果你以极其错误的方式使用SHA-512,我可以打破它.很明显,你不太可能以这种方式使用它,但是攻击只会变得更好,并且它是一个很好的跳板,可以用更多的研究来打破SHA-512,就像MD5被打破一样.

但是,在所有可用的Hash功能中,SHA-2系列目前是最强大的,也是考虑共性,分析和安全性的最佳选择.(但并不一定速度,如果你在嵌入式系统中的时候,你需要执行一个整体的其他分析.)

  • "因为你可以生成散列到相同值的不同消息." - 这就是它不再被视为加密哈希的原因,因为它不再符合所有要求(http://en.wikipedia.org/wiki/Cryptographic_hash_function) (7认同)

Joe*_*oey 10

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

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

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

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

  • 请注意,SHA-512 是 SHA-2 系列中的算法之一。(解释参考 SHA-3。) (2认同)

Nic*_*ele 6

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

从数学上讲,如果您对哈希和节流尝试进行加盐(即使是 1 秒),MD5 不会“损坏”,您的安全性将与攻击者用木勺子:

需要几千年的时间,到那时所有参与的人都会死;还有更重要的事情需要担心。

如果您在第 20 次尝试时锁定他们的帐户...问题解决了。在你的墙上击中 20 次 = 0.0000000001% 的几率他们通过。从字面上看,你实际上是耶稣的统计机会更好。

你想错了。

同样重要的是要注意,绝对任何散列函数都将容易受到冲突的影响,因为散列是什么:“其他东西的(小)唯一 id”。

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

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

SHA-2,如果存在的话,将有 4 个可能的唯一 ID 用于其他东西...... 00、01、10 和 11。显然,它会产生冲突。你看到这里的问题了吗?散列只是您要识别的内容的生成 ID。

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

所使用的方法大约是发生碰撞可能性较小的原因的 0.1%。真正的原因是更大的位空间。

这实际上是 SHA-256 和 SHA-512 不易发生冲突的唯一原因;因为他们使用更大的空间作为唯一的 id。

SHA-256 和 SHA-512 用于生成散列的实际方法实际上更好,但不是很多;如果它们的 ID 中的位数较少,则相同的彩虹攻击将对它们起作用,并且文件甚至密码可以使用 SHA-256 和 SHA-512 具有相同的 ID,但这种可能性要小得多,因为它使用了更多的位数。

真正的问题是你如何实现你的安全

如果您允许自动攻击每秒攻击您的身份验证端点 1,000 次,您将被入侵。如果您限制为每 3 秒尝试 1 次,并在第 10 次尝试后将帐户锁定 24 小时,则您不是。

如果您在不加盐的情况下存储密码(加盐只是生成器的附加秘密,这使得识别“31337”或“密码”等错误密码变得更加困难)并且拥有大量用户,您将被黑客入侵。如果你给它们加盐,即使你使用 MD5,你也不是。

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

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