OpenJDK中的现代密码学:密钥封装机制API的介绍

JEP 452: Key Encapsulation Mechanism (KEM) API 总结

JEP 452 已从 Targeted 状态提升为 Completed,并将包含在 JDK 21 中。该 JEP 引入了 Key Encapsulation Mechanism (KEM) API,这是一种利用公钥加密技术保护对称密钥的现代加密方法。KEM API 旨在使应用程序能够使用各种 KEM 算法,如 RSA Key Encapsulation Mechanism (RSA-KEM)、Elliptic Curve Integrated Encryption Scheme (ECIES),以及参与美国国家标准与技术研究院(NIST)后量子密码学标准化过程的候选 KEM 算法。

主要观点

  1. KEM 的重要性:KEM 是防御量子攻击的重要工具。传统方法通过公钥加密随机生成的对称密钥,但需要填充且难以证明其安全性。KEM 则利用公钥的特性派生相关对称密钥,消除了填充的需求。
  2. 应用场景:KEM API 将支持在高级协议(如传输层安全协议 TLS)和加密方案(如混合公钥加密 HPKE, RFC 9180)中使用 KEM。
  3. 实现方式:安全提供商可以使用 Java 代码或本地代码实现 KEM 算法。KEM API 不包含密钥对生成功能,因为现有的 KeyPairGenerator API 已足够。

关键信息

  • KEM API 组成:KEM API 包含三个核心功能:

    1. 密钥对生成:由现有的 KeyPairGenerator API 处理。
    2. 密钥封装:在新类 KEM 中定义。
    3. 密钥解封装:同样在 KEM 类中定义。

重要细节

  • 代码示例

    • getInstance 方法:创建实现指定算法的 KEM 对象。
    • newEncapsulator 方法:发送方使用接收方的公钥创建 Encapsulator 对象,并调用其 encapsulate 方法生成 Encapsulated 对象,其中包含 SecretKey 和密钥封装消息。
    • newDecapsulator 方法:接收方使用其私钥创建 Decapsulator 对象,并调用其 decapsulate 方法从接收到的密钥封装消息中提取共享密钥。

总结

KEM API 的引入是 OpenJDK 在现代密码学领域的重要进步,提供了更安全、高效的保护对称密钥的方式。它将在防御量子攻击和增强高级协议与加密方案的安全性方面发挥关键作用。

阅读 54
0 条评论