我知道SHA-224,SHA-256,SHA-384和SHA-512都是沙-2散列函数族的一部分.但是现在也有一种新的SHA-3哈希算法.
你能告诉我SHA-2和SHA-3的区别吗?我什么时候为什么要使用SHA-3?SHA-3实际上包括哪些安全的哈希算法?
发布于 2013-01-16 11:47:01
沙三,也称为Keccak (在它被选为NIST SHA-3比赛获胜者之前的原名),是一种全新的哈希算法,与SHA-1和SHA-2无关。
事实上,NIST选择Keccak而不是其他SHA-3竞争决赛的原因之一是它不同于现有的SHA-1/2算法;有人认为,这种不同使它更好地补充了现有的SHA-2算法(NIST仍然认为这些算法是安全的和推荐的),并使未来任何密码分析突破都不太可能损害SHA-2和SHA-3的安全性。
在一些新的密码分析攻击使SHA-1的安全性受到质疑之后,2007年NIST首次宣布了SHA-3哈希函数竞争的背景。虽然当时对SHA-1的攻击主要是理论上的兴趣,但人们担心,对这些技术的进一步改进可能会允许对SHA-1进行实际的碰撞发现攻击,同样的技术也可能应用于SHA-2,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。如果您感到非常偏执,您甚至可能想使用两者,并设计您的密码系统,使它保持安全,即使其中一个哈希函数被打破。
https://stackoverflow.com/questions/14356526
复制相似问题