跳到主要内容

JEP 287:SHA-3 哈希算法

概括

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

非目标

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

动机

SHA-2 已于 10 多年前发布,尽管尚未证明对 SHA-2 存在重大攻击,但 NIST 认为需要一种不同的加密哈希函数作为 SHA-2 的替代方案。经过九年的酝酿,SHA-3 是 NIST 使用公开竞争和审查流程开发的第一个加密哈希算法。 FIPS 202“SHA-3 标准:基于排列的哈希和可扩展输出函数”于 2015 年 8 月最终确定为标准。当 FIPS 202 还是草案时,BouncyCastle 等加密供应商就开始支持 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.MessageDigestAPI 的新算法以标准名称“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 位的倍数)以及现有的回归和单元测试。