JEP 115:AEAD 密码套件
总结
支持 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 这样的加密算法支持伽罗瓦计数器模式 (GCM)。GCM 还被用于一些新的 TLS 加密套件中。对于面向美国政府及其他需要现代加密技术的客户的销售来说,GCM 模式是必需的。
为了符合 Suite B 的 TLS 规范,只要客户端和服务器都支持必要的加密套件,就必须使用 GCM 加密套件。为了符合 Suite B 规范,默认的 JSSE 提供程序需要支持 GCM 加密。
描述
Java SE 在 JDK 7 中已经定义了 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)
请注意,为了在 JSSE 中支持 GCM AEAD 加密套件,GCM 加密实现必须至少从一个 JCA/JCE 提供商处获得。因此,作为此 JEP 的一部分,SunJCE 提供商将相应地进行增强,以为 JSSE AEAD 加密套件提供所需的 GCM 支持。
测试
- 需要验证新接口是否按预期运行。
- 需要验证该实现不会以意外的方式破坏向后兼容性。
- 需要验证该实现不会以意外的方式带来新的互操作性问题。
影响
- JCP:对 JCP 无影响
- 其他 JDK 组件:对其他 JDK 组件无影响
- 兼容性:影响最小
- 安全性:对安全性无影响
- 可移植性:对可移植性的影响有限
- 用户界面:无图形用户界面
- 文档:需要记录新功能
- 国际化:影响最小,可能会添加新的错误消息
- 本地化:影响最小,可能会添加新的错误消息
- 法律:无法律问题
- 其他:无其他已知影响