我们应该使用 SHA3 吗?(2017)

信息安全 密码分析 sha-3
2021-09-03 18:25:32

这个问题是重复的,但是我觉得有必要给出这个问题。原件发布于 2012 年:大约 5 年前,NIST 甚至还没有发布最终规范。

这个问题或多或少与原始问题相同。是否对 SHA3 进行了足够的研究以被认为在高价值情况下是安全的,并且与它的前身 SHA2 相比,使用它是否有优势。基本上,我们应该使用它吗?

3个回答

我不相信我们应该这样做SHA-3肯定有一些不错的 功能,但由于我在下面列出的原因,我可能会建议暂时使用 SHA-2 或 BLAKE2。甚至NIST 自己也说:

目前无需将应用程序从 SHA-2 转换为 SHA-3。


也就是说,你可能还在想“为什么不”

  1. SHA-3还不符合 FIPS-140如果没有FIPS 140-3,非军事政府机构和政府承包商将无法获得它。如果您担心 FIPS 合规性,那么您现在只能使用 SHA-2 套件。 SHA-3包含在FIPS 140-2 附录 A中,尽管该文档仍然在封面上注明“草稿”,但它似乎已通过这两
  2. 性能SHA-3在硬件 (ASIC) 实现中的速度非常快但是,它在寄存器有限的 CPU 上运行的软件要慢得多,这意味着它通常不太有用*。它的主要竞争对手(至少在比赛结束后)是 BLAKE2,它在一般 CPU 上速度更快,并且由于其他原因有时比 Keccak/SHA-3 更受欢迎虽然我认为 NIST 低估了决赛选手之间的软件内性能差异,但他们在上一轮决策中对性能的评论可能有助于提供背景信息。来自NISTIR 7896,第 3.2 节:

    一个。所有五位决赛选手的表现都足够好,可以在大多数应用中使用。
    湾。五个决赛入围者中没有一个对每个应用程序都是最好的,并且没有一个对 SHA-2 算法提供真正引人注目的改进。
    C。基于 ARX 的算法 BLAKE 和 Skein 在软件中表现非常出色。
    d。Keccak 在硬件实现中的吞吐量/面积性能方面具有明显优势。
    e. 在大多数软件实现中,Grøstl 和 JH 比其他三种算法慢得多。

  3. 可能不必要的谨慎还值得注意的是,由于与SHA-2 的相似性,BLAKE 受到了负面评价。出于谨慎,这帮助 Keccak/SHA-3 赢得了比赛。来自NISTIR 7896,第 3.4 节:

    湾。由于 SHA-2 是一个基于 ARX 的设计,它有一些与 BLAKE 和 Skein 相同的重要设计元素,尽管它们都与 SHA-2 没有密切关系。然而,未来适用于 SHA-2 的密码分析工具似乎更有可能适用于 BLAKE 或 Skein,而不是其他三个决赛选手。

* 回想一下,我们在这里讨论的是加密散列函数,不一定是密码散列函数或 KDF。


一些可能值得花时间阅读的内容:

  1. NIST 可能没有想到你,作者:Adam Langley
  2. Keccak 海绵函数族
  3. 尼斯蒂尔 7896
  4. BLAKE2:比MD5“更硬、更好、更快、更强”
  5. 为什么用 BLAKE2 替换 SHA-1?
  6. 也许跳过 SHA-3

您应该使用最强的密码,SHA3 似乎是合适的。尽管如此,你已经超前了,因为几乎没有人使用它。甚至 OpenSSL 也不支持 SHA3。问题是,通常认为 SHA2 仍然是安全的,对于复杂的系统,最好选择 SHA2 而不是 SHA3 以避免不兼容问题。

看这张图表:http: //valerieaurora.org/hash.html

你认为你应该使用什么?

作为一般规则,您应该使用当时可用的最强散列方法(在本例中为 SHA-3),除非您有令人信服的理由不这样做,例如:

  • 兼容性

  • 表现

  • 监管要求(例如,必须使用 FIPS 验证的加密实施)

因此,如果您不能使用 SHA-3,那么最好使用 SHA-2。