跳到主要内容

JEP 130:SHA-224 消息摘要

QWen Max 中英对照

概述

实现 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 应按照第 5.3.2 节的规定进行设置;即在八个 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 消息认证码
    • SunJCE 提供者中的 OAEPwithSHA-224AndMGF1Padding 支持
    • SunPKCS11 提供者中的 SHA224 消息摘要 (CKM_SHA224),SHA224withRSA 签名 (CKM_SHA224_RSA_PKCS),HmacSHA224 消息认证码 (CKM_SHA224_HMAC)

测试

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

(注:此内容无需翻译,因为它是网址链接和算法名称。)

互操作性测试:当多个 JDK 加密服务提供程序支持相同的算法时可以执行此测试,例如,对于 SHA-224 算法的 SUN 与 SunPKCS11,或对于 SHA-224withRSA 算法的 SunRsaSign 与 SunPKCS11 等。或者,SQE 可以开发产品测试,检查与第三方加密服务提供程序(如 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 标准算法名称文档以及各种提供者的参考指南。
  • 法务:需要更新出口控制文件中支持的加密算法列表。