JEP 129: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 的 AES 密码) /CFB 模式)、SunPKCS11(取决于本机 PKCS11 库;但我们可能需要增强提供程序代码以使用本机实现 )。另外,对于EC相关算法,我们需要确保支持所需的曲线和参数。
非目标
此增强功能将仅涵盖所需的 NSA Suite B 算法。遵循美国国家安全局在协议层面的指导将是一项单独的工作。
动机
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 可为高达秘密级别的机密信息提供充分的保护。同样,ECDH 和 ECDSA 使用 FIPS PUB 186-3 和 SHA-256 中指定的 256 位素模椭圆曲线,为高达 SECRET 级别的机密信息提供足够的保护。在 ECDH 和 ECDSA 中使用椭圆曲线加密的过程中,DH、DSA 和 RSA 可以与 2048 位模数一起使用,以保护高达 SECRET 级别的机密信息。
需要使用具有 256 位密钥的 AES、使用 FIPS PUB 186-3 和 SHA-384 中指定的 384 位素模椭圆曲线的椭圆曲线公钥加密技术来保护绝密级别的机密信息。由于一些被批准保护最高机密级别的机密信息的产品将仅包含具有这些参数的算法,因此只能通过将这些参数作为选项来保证不同产品之间的算法互操作性。
NSA 密码学的另一套件 Suite A 包含一些不会发布的机密算法。 Suite A 将用于保护某些类别的特别敏感信息。
NSA Suite B 加密技术还提供了在互联网协议中使用 Suite B 加密技术的指南:
-
政府设备正在实施互联网协议安全 (IPsec) 最低基本互操作性要求 (IPMEIR),以促进与商业行业的互操作性。 IPMEIR 1.0.0 版核心(2010 年 5 月 31 日发布)和椭圆曲线加密组 IPMEIR IS 1.0 版(2010 年 5 月 13 日发布)通过为商业 IPsec 网络产品生产商和传统政府网络加密器供应商提供最低互操作性要求,支持商业互操作性规范套件 B 策略。
-
使用 Internet 密钥交换 (IKE) 或 IKEv2 的 IPsec:“IPsec 的 Suite B 加密”,RFC 4869
-
TLS:“TLS 的 B 密码套件”,RFC 5430
-
具有 SHA-256/384 和 AES Galois 计数器模式 (GCM) 的 TLS 椭圆曲线密码套件
-
S/MIME:“安全/多用途互联网邮件扩展 (S/MIME) 中的 Suite B”,RFC 5008
-
SSH:“安全外壳传输层协议的 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 CipherSuites)进行跟踪)。
在 Java API 级别,我们需要添加 DSA API 以支持 L/N 并传递给底层提供程序实现。目前仅支持L,例如DSAKeyPairGenerator。
测试
需要补充:
-
回归测试:已知答案测试来验证新算法的实施,
-
SQE/产品测试:多个加密提供商普遍支持的算法的互操作性测试
风险和假设
知识产权:Suite B 密码学的一个关键方面是它使用椭圆曲线技术而不是经典的公钥技术。为了促进业界采用 Suite B,NSA 已授权 Certicom, Inc. 持有的 26 项专利,涵盖各种椭圆曲线技术。根据该许可证,美国国家安全局有权向构建可用于保护国家安全信息的某些类型产品或组件的供应商授予从属许可证。更多信息请点击这里。
影响
-
文档:需要更新所有相关的安全白皮书、提供商文档、参考指南以及新支持的算法
-
法律:需要更新出口管制文书支持的加密算法列表。