我知道SHA-224、SHA-256、SHA-384和SHA-512都是SHA-2哈希函数家族的一部分。但现在还有一个新的SHA-3哈希算法。
请问你能告诉我SHA-2和SHA-3之间的区别吗?何时以及为什么应该使用SHA-3?SHA-3实际包含哪些安全哈希算法?
我知道SHA-224、SHA-256、SHA-384和SHA-512都是SHA-2哈希函数家族的一部分。但现在还有一个新的SHA-3哈希算法。
请问你能告诉我SHA-2和SHA-3之间的区别吗?何时以及为什么应该使用SHA-3?SHA-3实际包含哪些安全哈希算法?
SHA-3,也称作Keccak(在其成为NIST SHA-3比赛的获胜者之前拥有的原名),是一种全新的哈希算法,与SHA-1和SHA-2没有任何关系。
事实上,NIST选择Keccak作为SHA-3比赛的获胜者之一,其中一个声明的原因是它与现有的SHA-1/2算法不同。据称,这种不同使它更好地补充了现有的SHA-2算法(仍被NIST视为安全并推荐使用),同时也降低了未来密码分析突破会危及SHA-2和SHA-3安全性的可能性。
对于一些背景知识,SHA-3哈希函数比赛最初由NIST于2007年宣布,此前一些新的密码分析攻击曾对SHA-1的安全性提出质疑。虽然当时对SHA-1的攻击主要是理论探讨,但人们担心进一步完善这些技术可能会导致SHA-1面临实际的碰撞攻击,并且相似设计的SHA-2也可能受到同样的攻击。因此,NIST决定举办一次比赛,以选择SHA-2的后继者,并将其命名为SHA-3。
然而,尽管SHA-1在2017年最终发生了真实世界的碰撞攻击(详见此处),但对SHA-2的担心攻击并未出现。现今普遍认为,破解SHA-2不会像10年前那么容易,因此SHA-2的所有变种在可预见的未来仍被认为是安全的。然而,由于NIST承诺在2012年选择SHA-3,并且由于许多人花费了相当多的时间和精力提交和评估新的哈希函数,而且决赛中有一些真正不错的设计,如果毕竟没有选择任何一个作为获胜者,那将是一件遗憾的事情。因此,NIST决定选择Keccak作为SHA-3,并将其推荐为SHA-2哈希函数的替代选项(而非后继者)。