Skip to content

JEP 129: NSA Suite B Cryptographic Algorithms | NSA Suite B 密码算法

摘要

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

目标

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

NSA Suite B 所需的大多数算法已经通过 JDK 中的各种加密提供程序得到支持,如 SunEC(ECDH 密钥协议、ECDSA 签名)、SUN(SHA256、SHA384 消息摘要)、SunJCE(具有 ECB/CBC/OFB/CFB 模式的 AES 密码)、SunPKCS11(取决于本机 PKCS11 库;但我们可能需要增强提供程序代码以与本机实现一起工作)。此外,对于与 EC 相关的算法,我们需要确保支持所需的曲线和参数。

非目标

此增强仅涵盖所需的 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 位)。请参阅国家标准与技术研究院(NIST)的 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 密码学与互联网协议提供了指导:

  • 政府设备正在实施互联网协议安全性(IPsec)最低必要互操作性要求(IPMEIR),以促进与商业行业的互操作性。2010 年 5 月 31 日发布的 IPMEIR 1.0.0 核心版和 2010 年 5 月 13 日发布的椭圆曲线密码组 IPMEIR IS 1.0 版通过为商业 IPsec 网络产品生产商和传统政府网络加密器供应商提供最低互操作性要求,支持商业互操作性规范 Suite B 策略。

  • 使用互联网密钥交换(IKE)或 IKEv2 的 IPsec:“用于 IPsec 的 Suite B 密码学”,RFC 4869

  • TLS:“TLS 的 Suite B 密码套件”,RFC 5430

  • 带有 SHA-256/384 和 AES 加洛瓦计数器模式(GCM)的 TLS 椭圆曲线密码套件

  • S/MIME:“在安全/多用途互联网邮件扩展(S/MIME)中的 Suite B”,RFC 5008

  • SSH:“安全外壳传输层协议的 AES 加洛瓦计数器模式”,draft-igoe-secsh-aes-gcm-02.txt

  • 将开发协议配置文件,以帮助选择选项以促进互操作性。NIST 已经开发了一个 IPsec 配置文件,即 NIST 特别出版物 500-267,“美国政府的 IPv6 配置文件——1.0 版”。

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

在加密提供者级别,唯一需要支持但尚未实现的实现包括:

  • SUN/SunJCE/SunEC/SunPKCS11:为受支持的算法添加对象标识符(oids)。

  • SUN 提供者:支持 (L, N) 的 DSA 密钥大小,其中 L 是 p 的位长度,N 是 q 的位长度:(2048, 224)、(2048, 256)。本次努力不包括对 (3072, 256) 对的支持,但如有需要,可以稍后添加。

  • SunJCE 提供者:支持 AES 密码算法与 GCM 和 CCM 模式。(注意:这正在由另一个 JEP 跟踪,即支持 AEAD 密码套件)。

在 Java API 级别,我们需要添加一个 DSA API 来同时支持 L/N,并将其传递给底层提供者实现。目前,仅支持 L,例如 DSAKeyPairGenerator。

测试

需要添加:

  1. 回归测试:已知答案测试,用于验证新算法的实现,

  2. SQE/产品测试:针对多个加密提供者通常支持的算法的互操作性测试

风险和假设

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

影响

  • 文档:需要更新所有相关的安全白皮书、提供者文档和参考指南,纳入新支持的算法

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