跳到主要内容

JEP 287:SHA-3 哈希算法

QWen Max 中英对照

概述

实现 NIST FIPS 202 中指定的 SHA-3 加密哈希函数(仅限 BYTE)。

非目标

此 JEP 不会实现 SHAKE128 和 SHAKE256 可扩展输出函数(XOF),因为它们未被批准为哈希函数。最新的 PKCS11 v2.40 草案不包含对 SHA-3 的支持。因此,“SunPKCS11”提供程序不会有任何更改。此外,此 JEP 不会实现基于 SHA-3 的其他加密功能算法(如签名、MAC 和密码),因为目前还没有相关标准。这些内容将在后续的增强功能和/或 JEP 中涵盖。

动机

SHA-2 已经发布了十多年,尽管没有任何针对 SHA-2 的重大攻击被证实,但 NIST 认为需要一个与 SHA-2 不同的加密哈希函数作为替代方案。经过九年的开发,SHA-3 是 NIST 首次通过公开竞赛和审查流程开发的加密哈希算法。FIPS 202 “SHA-3 标准:基于排列的哈希和可扩展输出函数”于 2015 年 8 月最终确定为标准。像 BouncyCastle 这样的加密供应商在 FIPS 202 仍处于草案阶段时便开始支持 SHA-3。Solaris 在即将发布的 Solaris 12.0 版本中也将支持 SHA-3。由于哈希函数在安全应用中被广泛使用,并且其他供应商已经开始添加对 SHA-3 的支持,因此在 JDK 中提供对 SHA-3 的支持非常重要。

描述

FIPS 202 定义了四个新的哈希函数:SHA3-224、SHA3-256、SHA3-384 和 SHA3-512。这些可以作为 java.security.MessageDigest API 的新算法来实现,标准名称分别为 "SHA3-224"、"SHA3-256"、"SHA3-384" 和 "SHA3-512"。由于不需要参数,因此无需新的 API。

以下是提供商列表以及相应的算法增强功能:

  • "SUN" 提供者:SHA3-224、SHA3-256、SHA3-384 和 SHA3-512
  • "OracleUcrypto" 提供者:Solaris 12.0 支持的 SHA-3 摘要算法

测试

该实现必须通过美国国家标准与技术研究院 (NIST) 提供的相关已知答案测试,其中输入大小为 8 位的倍数,并且现有的回归测试和单元测试也必须通过。