JEP 115: AEAD CipherSuites
摘要
支持 SP-800-380D、RFC 5116、RFC 5246、RFC 5288、RFC 5289 和 RFC 5430 中定义的 AEAD/GCM 密码组。
目标
- 实现 JCA/JCE 中的 AEAD/GCM 密码算法。
- 更新 JCA/JCE,以支持 AEAD 操作。
- 在 JSSE 中实现基于 AEAD/GCM 的密码套件。
动机
作为美国国家安全局 Suite B 计划(国家密码基础设施现代化)的一部分,JDK 需要支持 AES 等密码的 Galois 计数器模式(GCM)密码模式。GCM 也在一些新的 TLS 密码套件中使用。对于进入美国政府销售领域以及需要现代密码技术的其他客户,GCM 模式将是必需的。
为了满足 Suite B TLS 合规性,当客户端和服务器都支持必要的密码套件时,必须使用 GCM 密码套件。要实现 Suite-B 合规性,GCM 密码套件需要在默认的 JSSE 提供程序中得到支持。
描述
在 JDK 7 中,Java SE 已经为 AEAD/GCM 接口提供了定义。在 JDK 8 中,JCA/JCE 提供程序将实现这些 AEAD/GCM 接口。PKCS#11 标准的 GCM 支持在 PKCS#11 V2.30 规范中被定义,但该规范仍然是草案。因此,SunPKCS11 提供程序在 JDK 8 中将不会增强以支持 GCM。
此功能将在默认 JSSE 实现中支持以下密码套件:
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
(RFC 5430, RFC 5289)TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
(RFC 5430, RFC 5289)TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
(RFC 5289)TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
(RFC 5289)TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
(RFC 5289)TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
(RFC 5289)TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
(RFC 5289)TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
(RFC 5289)TLS_RSA_WITH_AES_128_GCM_SHA256
(RFC 5288)TLS_RSA_WITH_AES_256_GCM_SHA384
(RFC 5288)TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
(RFC 5288)TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
(RFC 5288)TLS_DH_RSA_WITH_AES_128_GCM_SHA256
(RFC 5288)TLS_DH_RSA_WITH_AES_256_GCM_SHA384
(RFC 5288)TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
(RFC 5288)TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
(RFC 5288)TLS_DH_DSS_WITH_AES_128_GCM_SHA256
(RFC 5288)TLS_DH_DSS_WITH_AES_256_GCM_SHA384
(RFC 5288)TLS_DH_anon_WITH_AES_128_GCM_SHA256
(RFC 5288)TLS_DH_anon_WITH_AES_256_GCM_SHA384
(RFC 5288)
请注意,为了支持 JVM 中的 AEAD 密码套件,GCM 密码实现必须至少从一个 JCA/JCE 提供程序中可用。因此,作为这个 JEP 的一部分,SunJCE 提供程序将得到相应增强,以提供 JSSE AEAD 密码套件所需的 GCM 支持。
测试
- 需要验证新接口是否符合预期行为。
- 需要验证实现是否以意外的方式破坏了向后兼容性。
- 需要验证实现是否以意外的方式引入了新的互操作性问题。
影响
- JCP: 对 JCP 没有影响
- 其他 JDK 组件:对其他 JDK 组件没有影响
- 兼容性:最小化影响
- 安全性:对安全性没有影响
- 可移植性:对可移植性产生有限影响
- 用户界面:无图形用户界面
- 文档:需要记录新功能的文档
- 国际化:最小化影响,可能会添加新的错误消息
- 本地化:最小化影响,可能会添加新的错误消息
- 法律问题:无法律问题
- 其他:无其他已知影响