我知道 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 算法的安全性。 2 和 SHA-3。
在某些背景下,SHA-3 哈希函数竞赛最初是由 NIST 在 2007 年宣布的,当时一些新的密码分析攻击使 SHA-1 的安全性受到质疑。虽然当时对 SHA-1 的攻击主要是理论上的兴趣,但人们担心这些技术的进一步改进可能会允许对 SHA-1 进行实际的碰撞发现攻击,并且相同的技术也可能适用于 SHA-2,它与 SHA-1 具有相似的设计。因此,NIST 决定举办一场比赛来选择 SHA-2 的继任者,将其命名为 SHA-3。
然而,虽然对 SHA-1 的真实世界碰撞攻击最终在 2017 年得到证实,但对 SHA-2 的可怕攻击却未能实现。现在人们普遍认为,破解 SHA-2 不会像十年前那样容易,因此在可预见的未来,SHA-2 的所有变体仍然被认为是安全的。然而,由于 NIST 已承诺 SHA-3 将在 2012 年被选中,并且由于很多人花费了相当多的时间和精力来提交和评估新的哈希函数以供竞赛,并且因为有一些非常好的设计在决赛选手中,毕竟不选择他们中的任何一个作为获胜者似乎是一种耻辱。所以 NIST 决定选择 Keccak 作为 SHA-3,并推荐它作为替代方案(不是继任者)SHA-2 哈希函数。
这意味着,如果您想要一个安全且标准化的哈希函数,您可以选择 SHA-2 或 SHA-3。如果你真的很偏执,你甚至可能想要同时使用这两种方法,并设计你的密码系统,以便即使其中一个哈希函数被破坏,它也能保持安全。