哈希算法SHA-2和SHA-3之间有什么区别?

use*_*193 18 hash cryptography cryptographic-hash-function

我知道SHA-224,SHA-256,SHA-384和SHA-512都是SHA-2散列函数系列的一部分.但现在还有一种新的SHA-3哈希算法.

你能告诉我SHA-2和SHA-3之间的区别吗?何时以及为什么要使用SHA-3?SHA-3实际包含哪些安全哈希算法?

Ilm*_*nen 29

SHA-3,也称为Keccak(在被选为NIST SHA-3竞赛的获胜者之前的原始名称),是一种全新的哈希算法,与SHA-1和SHA-2无关.

事实上,NIST之所以选择Keccak而不是其他SHA-3竞赛决赛选手的原因之一是它与现有的SHA-1/2算法不同; 有人认为,这种不同性使其成为现有SHA-2算法(仍然被NIST认为是安全和推荐的)的更好补充,并且使得未来任何密码分析突破都​​不太可能损害两者的安全性. 2和SHA-3.

在某些背景下,SHA-3哈希函数竞争最初是由NIST于2007年宣布的,此前一些新的密码分析攻击称SHA-1的安全性受到质疑.虽然当时对SHA-1的攻击主要是理论上的兴趣,但人们担心这些技术的进一步改进可能会对SHA-1产生实际的碰撞攻击,并且相同的技术也可能适用于SHA-2,它与SHA-1具有相似的设计.因此,NIST决定举办一场竞赛,选择SHA-2的继任者,这将被命名为SHA-3.

然而,虽然2017年最终证实了对SHA-1的真实世界碰撞攻击,但是对SHA-2的恐惧袭击未能实现.现在人们普遍认为,打破SHA-2并不像十年前那样容易,因此在可预见的未来,SHA-2的所有变体仍然被认为是安全的.然而,由于NIST承诺将在2012年选择SHA-3,并且因为很多人花了相当多的时间和精力来提交和评估竞赛的新哈希函数,并且因为有一些非常好的设计在决赛选手中,如果不选择其中任何一个作为胜利者,那将是一种耻辱.所以NIST决定选择Keccak作为SHA-3,并推荐它作为SHA-2哈希函数的替代(不是继承者).

这意味着,如果您想要一个安全的标准化哈希函数,您可以选择SHA-2或SHA-3.如果你感觉真的很偏执,你甚至可能想要同时使用它们,并设计你的密码系统,这样即使其中一个散列函数被破坏,它仍然是安全的.

  • 如果您不知道自己在做什么,使用这两个哈希函数可能会有点危险.这取决于你想要达到的目标. (6认同)
  • 危险如何?(不确定此处可能存在的陷阱...) (2认同)
  • 这里不是密码分析师,但我认为危险可能意味着碰撞 sha3(sha2(X)) 比碰撞 sha2(X) 或 sha3(X) 更容易,或者可能意味着同时提供 sha2(X) 和sha3(X) 可能会泄露比预期更多的有关 X 的信息,并使猜测 X 变得更容易。 (2认同)