2013-01-16 968 views
12

我知道SHA-224,SHA-256,SHA-384和SHA-512都是SHA-2 hash function family的一部分。但是现在还有一个新的SHA-3哈希算法。哈希算法SHA-2和SHA-3有什么区别?

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

+0

@xuinkrbin。这是一个耻辱,因为它在这个论坛上脱离主题 - 这个问题会更好在crypto.stackexchange。请注意,我们现在有一个答案,并且不能添加其他答案。所以,这绝不会成为谷歌有用的打击 - 即使Ilmari的答案并不糟糕。但是我已经删除了我颇有攻击性的评论。 –

+0

这对我很有用。 :-) –

回答

18

SHA-3也被称为Keccak(它的原始名称在它被选为NIST SHA-3 competition的获胜者之前)是一种全新的散列算法,与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,它与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。如果你真的感觉偏执,你甚至可能想要同时使用它们,并设计你的密码系统,以便即使其中一个散列函数被破坏,它仍然是安全的。

+5

如果你不知道你在做什么,同时使用这两个散列函数可能会有点危险。这取决于你想要达到的目标。 –

相关问题