跳到主要内容

JEP 130:SHA-224 消息摘要

概括

实现 SHA-224 消息摘要算法和相关算法。

目标

使用消息摘要实现的 SHA-2 系列的 SHA-224 变体增强 JDK 的现有加密算法。确保与常用的第三方加密提供商或 JDK 中捆绑的提供商之间的互操作性。

动机

由于 SHA-1 消息摘要存在已知缺陷,越来越多的应用程序和协议正在采用 SHA-2 消息摘要。 JDK 最初并不支持 SHA-224,因为它没有像其他 SHA-2 变体(即 SHA-256、SHA-384 和 SHA-512)那样广泛采用。近年来一些标准,例如PKCS11,已经修改为支持SHA-224,所以我们也应该支持它。

描述

SHA-224 的定义方式与 SHA-256 完全相同(FIPS 180-3 第 6.2 节),但有以下两个例外:

  1. 初始散列值 H 应按照第 2 节中的规定进行设置。 5.3.2;即,在 8 个 32 位字 H0--H7 中:H0 = c1059ed8、H1 = 367cd507、H2 = 3070dd17、H3 = f70e5939、H4 = ffc00b31、H5 = 68581511、H6 = 64f98fa7、H7 = befa4fa4。

  2. 224 位消息摘要是通过将最终哈希值 H(N) 截断到最左边的 224 位来获得的:除了提供 SHA-224 消息摘要实现之外,还应该提供使用 SHA-224 的其他加密算法实施以提供完整的解决方案。以下是加密算法及其相应提供程序的列表:

    • SUN 提供程序中的 SHA224 消息摘要
    • SunRsaSign 提供程序中的 SHA224withRSA 签名
    • SunEC 提供商中的 SHA224withECDSA 签名
    • SunJCE 提供商中的 HmacSHA224 mac
    • SunJCE 提供程序中的 OAEPwithSHA-224AndMGF1Padding 支持
    • SunPKCS11 提供程序中的 SHA224 消息摘要 (CKM_SHA224)、SHA224withRSA 签名 (CKM_SHA224_RSA_PKCS)、HmacSHA224 mac (CKM_SHA224_HMAC)

测试

已知答案测试: 测试向量可用:

互操作性测试:当多个 JDK 加密提供程序支持相同算法时可以执行,例如,SHA224 的 SUN 与 SunPKCS11、SHA224withRSA 的 SunRsaSign 与 SunPKCS11 等。或者,SQE 可以开发产品测试,检查针对 3rd 方加密的互操作性Bouncy Castle 等提供商。

风险和假设

SunPKCS11 提供程序不支持 PKCS11 标准定义的所有机制。例如,PKCS11 定义了密钥导出功能的机制,即,给定一个密钥,它可以导出另一个具有奇偶校验调整位的密钥。 SunPKCS11 提供程序不支持任何使用消息摘要的密钥派生功能,即 CKM_[MD5/SHA1/SHA256/SHA384/SHA512]_KEY_DERIVATION 机制,因此省略了对 CKM_SHA224_KEY_DERIVATION 的支持。对于 CKM_SHA224_RSA_PKCS_PSS 机制、CKG_MGF1_SHA224 函数、CKM_SHA224_HMAC_GENERAL 机制以及有关 RSA PSS 签名的 SunRsaSign 提供程序也是如此。

影响

  • 文档:一些安全文档必须使用新支持的算法进行更新,例如 JCA 标准算法名称文档以及各个提供商的参考指南。

  • 法律:需要更新出口管制文书支持的加密算法列表。