跳到主要内容

JEP 129:NSA Suite B 加密算法

QWen Max 中英对照

概述

提供 NSA Suite B 所需的加密算法的实现。

目标

在 JDK 中提供 Suite B 密码算法的默认实现,以便 Java 应用程序能够满足美国政府、金融机构等要求的适当安全标准。确保我们各种加密提供程序中的实现具有互操作性;例如,如果 SunPKCS11 和 SunJCE 提供程序都支持相同的算法,则应进行基本测试以确保互操作性。

NSA Suite B 所需的大多数算法已经由 JDK 中的各种加密提供程序支持,例如 SunEC(ECDH 密钥协商、ECDSA 签名)、SUN(SHA-256、SHA-384 消息摘要)、SunJCE(使用 ECB/CBC/OFB/CFB 模式的 AES 加密算法)、SunPKCS11(取决于本地的 PKCS11 库;但可能需要增强提供程序代码以与本地实现兼容)。此外,对于椭圆曲线相关的算法,我们需要确保支持所需的曲线和参数。

非目标

此增强功能将仅涵盖所需的 NSA Suite B 算法。遵循 NSA 在协议层面的指导将会是一项单独的工作。

动机

NSA Suite B 密码学已获得 NIST 批准,供美国政府使用,并在 NIST 标准和建议中进行了规定。

描述

2005 年,美国国家安全局 (NSA) 宣布了 Suite B 加密,该加密套件基于《使用高级加密标准 (AES) 保护国家安全系统和国家安全信息的国家政策》(CNSSP-15)。除了 AES 之外,Suite B 还包括用于密钥交换、数字签名和哈希运算的加密算法,具体如下:

  • 加密:高级加密标准(AES)——FIPS PUB 197(密钥长度为 128 位和 256 位)。参见美国国家标准与技术研究院的 FIPS 出版物列表中的 FIPS PUB 197。
  • 密钥交换:短暂统一模型和一次性 Diffie Hellman(称为 ECDH)——NIST 特别出版物 800-56A(使用具有 256 位和 384 位素数模数的曲线)。
  • 数字签名:椭圆曲线数字签名算法(ECDSA)——FIPS PUB 186-3(使用具有 256 位和 384 位素数模数的曲线)。
  • 哈希:安全哈希算法(SHA)——FIPS PUB 180-3(使用 SHA-256 和 SHA-384)。

使用 128 位密钥的 AES 可为最高机密级别的保密信息提供足够的保护。同样,使用 FIPS PUB 186-3 中指定的 256 位素数模椭圆曲线的 ECDH 和 ECDSA 以及 SHA-256 可为最高机密级别的保密信息提供足够的保护。在 ECDH 和 ECDSA 中过渡到使用椭圆曲线加密期间,可以使用具有 2048 位模数的 DH、DSA 和 RSA 来保护最高机密级别的保密信息。

使用 256 位密钥的 AES、使用 FIPS PUB 186-3 中指定的 384 位素数模椭圆曲线的椭圆曲线公钥密码学以及 SHA-384 是保护绝密级信息所必需的。由于一些批准用于保护绝密级信息的产品仅包含具有这些参数的算法,因此只能通过将这些参数作为选项来保证各种产品之间的算法互操作性。

NSA 的另一套加密算法 Suite A 包含一些机密算法,这些算法不会被公开。Suite A 将用于保护某些特别敏感信息的类别。

NSA Suite B 密码学还提供了关于如何将 Suite B 密码学与互联网协议一起使用的指导:

  • Internet Protocol Security(IPsec)最低必要互操作性要求(IPMEIR) 正在政府设备中实施,以促进与商业行业的互操作性。IPMEIR 版本 1.0.0 核心(2010 年 5 月 31 日发布)和椭圆曲线加密组 IPMEIR IS 版本 1.0(2010 年 5 月 13 日发布)通过为商业 IPsec 网络产品生产商和传统的政府网络加密供应商提供最低互操作性要求,支持《商业互操作性规范套件 B 策略》。
  • 使用 Internet Key Exchange(IKE)或 IKEv2 的 IPsec: “适用于 IPsec 的套件 B 密码学”,RFC 4869
  • TLS: “适用于 TLS 的套件 B 密码套件”,RFC 5430
  • 带有 SHA-256/384 和 AES Galois 计数器模式(GCM)的 TLS 椭圆曲线密码套件
  • S/MIME: “在安全/多用途 Internet 邮件扩展(S/MIME)中的套件 B”,RFC 5008
  • SSH: “用于安全 Shell 传输层协议的 AES Galois 计数器模式”,draft-igoe-secsh-aes-gcm-02.txt
  • 将开发协议配置文件,以帮助选择选项来促进互操作性。NIST 已开发了一个 IPsec 配置文件,NIST 特别出版物 500-267,“美国政府 IPv6 配置文件 -- 版本 1.0”。

本 JEP 不建议实施此协议指南。

在加密服务提供商层面,唯一需要支持的缺失实现是:

  • SUN/SunJCE/SunEC/SunPKCS11:为支持的算法添加对象标识符 (OID)。
  • SUN 提供者:支持密钥大小为 (L, N) 的 DSA,其中 L 是 p 的比特长度,N 是 q 的比特长度:(2048, 224)、(2048, 256)。此工作不包括对 (3072, 256) 对的支持,但如果有需要,可以稍后添加。
  • SunJCE 提供者:支持带有 GCM 和 CCM 模式的 AES 加密。(注意:这由单独的 JEP 跟踪,支持 AEAD 密码套件)。

在 Java API 层面,我们需要添加一个 DSA API,以同时支持 L/N,并传递到底层的提供者实现。目前仅支持 L,例如,DSAKeyPairGenerator。

测试

需要添加:

  1. 回归测试:已知答案测试,用于验证新算法实现的正确性,
  2. SQE/产品测试:针对多个加密供应商普遍支持的算法进行的互操作性测试

风险与假设

知识产权:Suite B 密码学的一个关键方面是它使用椭圆曲线技术而不是传统的公钥技术。为了促进行业对 Suite B 的采用,NSA 已经许可了 Certicom 公司持有的 26 项专利权,这些专利涵盖了各种椭圆曲线技术。根据该许可,NSA 有权向生产某些类型的产品或组件的供应商授予分许可,这些产品或组件可用于保护国家安全信息。更多信息可在此处获得。

影响

  • 文档:需要更新所有相关的安全白皮书、供应商文档、参考指南,以包含新支持的算法。
  • 法务:需要更新出口控制文件中支持的加密算法列表。