什么是 SHA-3,我们为什么要更改它?

信息安全 哈希 尼斯特 沙2 sha-3
2021-09-06 10:33:42

10 月 2 日 NIST 决定 SHA-3 是新的标准哈希算法,这是否意味着我们需要停止使用 SHA-2,因为它不安全?

这个 SHA-3 到底是什么?

4个回答

SHA-3哈希竞赛是一个开放的过程,NIST 通过它定义了一个新的标准哈希函数(美国联邦使用的标准,但事情是这样的,这可能会成为全球事实上的标准)。该过程始于 2007 年。当时,针对 SHA-2 函数的前身(SHA-256、SHA-512...),即 MD5 和 SHA-1,已经发现了许多弱点和攻击,因此人们担心 SHA-256 很快就会被“破坏”或至少被削弱。由于选择和指定加密原语需要时间,NIST 开始了 SHA-3 过程,其目的是寻找SHA-2的替代品,但没有说出口,但很清楚。

结果证明 SHA-2 比预期的更强大。我们真的不知道为什么;有一些不成熟的论点(消息扩展是非线性的,该函数累积的基本操作是 SHA-1 的两倍......)但也有人怀疑 SHA-256 没有受到伤害,因为所有研究人员都很忙研究 SHA-3 候选者。无论如何,随着 SHA-2 的末日被无限期推迟,NIST 改变了它的目标,而不是选择替代品,他们定义了一个备用计划:一个可以保存在玻璃柜中的功能,以备不时之需。相应地,性能失去了大部分相关性。

这突出了Keccak的选择:在比赛决赛中,它是与 SHA-2 和 AES 最不同的功能;因此它降低了所有标准加密算法同时被破解的风险,并且 NIST 隐喻地被他们的苏格兰短裙抓住了。

让我们不要急于求成:不仅 SHA-2 仍然很好(官方和科学上),而且 SHA-3 刚刚宣布:我们还需要几个月才能获得规范(尽管我们可以根据什么来准备实现)已提交参加比赛)。现在必须做的(实际上应该在十年前做)是为算法敏捷性准备协议和应用程序,即在需要时切换功能的能力(与 SSL/TLS 具有“密码套件”的方式相同) ”)。

至少有一种用法 SHA-2 似乎比 SHA-3 更好,这就是 关键拉伸

SHA-3 被设计为在硬件方面非常高效,但在软件方面相对较慢。与 SHA-2 相比,SHA-3 在软件中运行的时间大约是 SHA-2 的两倍,而在硬件中运行的时间大约是 SHA-2 的四分之一。

由于 SHA-3 需要双倍的时间在软件中运行,如果您想在服务器上使用相同的密码处理时间,您将需要执行一半的迭代次数。但攻击者可以使用硬件实现来破解密码。因此,攻击者破解 SHA-3 哈希密码的速度比 SHA-2 哈希密码快 8 倍 - 因为我们需要将哈希迭代次数减半,所以要快 2 倍,因为 SHA-3 硬件比 SHA-2 快,所以要快 4 倍硬件。

2012 年 10 月 2 日,NIST 决定使用什么算法来执行散列。这就是 Keccak 算法。

Keccak 算法基于密封海绵策略这是新的标准算法。我们使用标准使兼容性更好。

Keccak 由 Guido Bertoni、Joan Daemen(AES 的创建者之一)、Michaël Peeters 和 Gilles Van Assche 设计。他们基于Radiogatùn 算法构建了它。

这是否意味着 SHA-2 不安全?没有 SHA-2 仍然被认为是安全的,我们只知道将来它不再安全,我们需要保证会有替代方案可用。我们也不想从一天过渡到另一天,因此他们已经标准化了一种新的哈希算法,因此人们可以有时间进行更改,并且我们知道在需要时我们手头有一个安全的算法。

我看到 SHA-3 优于 SHA-1 和 SHA-2 的一个好处是它对扩展攻击不敏感。这意味着基于它的协议(例如 MAC)本质上更健壮。