我知道SHA-224,SHA-256,SHA-384和SHA-512都是SHA-2 hash function family的一部分。但现在还有一种新的SHA-3哈希算法。
你能告诉我SHA-2和SHA-3之间的区别吗?何时以及为什么要使用SHA-3? SHA-3实际上包含哪些安全哈希算法?
答案 0 :(得分:28)
SHA-3,也称为Keccak(在它被选为NIST SHA-3 competition的获胜者之前的原始名称),是一种全新的哈希算法,与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。
然而,在对SHA-1 was finally demonstrated in 2017进行真实世界碰撞攻击时,对SHA-2的恐惧攻击未能实现。现在人们普遍认为,打破SHA-2并不像十年前那样容易,因此在可预见的未来,SHA-2的所有变体仍然被认为是安全的。然而,由于NIST承诺将在2012年选择SHA-3,并且因为很多人花了相当多的时间和精力来提交和评估竞赛的新哈希函数,并且因为有一些非常好的设计在决赛选手中,如果不选择其中任何一个作为胜利者,那将是一种耻辱。所以NIST决定选择Keccak作为SHA-3,并推荐它作为SHA-2哈希函数的替代(不是后继)。
这意味着,如果你想要一个安全的标准化哈希函数,你可以选择SHA-2或SHA-3。如果你感觉真的偏执,你甚至可能想要同时使用它们,并设计你的密码系统,这样即使其中一个哈希函数被破坏,它仍然是安全的。