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 算法。
主要观点
- KEM 的重要性:KEM 是防御量子攻击的重要工具。传统方法通过公钥加密随机生成的对称密钥,但需要填充且难以证明其安全性。KEM 则利用公钥的特性派生相关对称密钥,消除了填充的需求。
- 应用场景:KEM API 将支持在高级协议(如传输层安全协议 TLS)和加密方案(如混合公钥加密 HPKE, RFC 9180)中使用 KEM。
- 实现方式:安全提供商可以使用 Java 代码或本地代码实现 KEM 算法。KEM API 不包含密钥对生成功能,因为现有的
KeyPairGeneratorAPI 已足够。
关键信息
KEM API 组成:KEM API 包含三个核心功能:
- 密钥对生成:由现有的
KeyPairGeneratorAPI 处理。 - 密钥封装:在新类
KEM中定义。 - 密钥解封装:同样在
KEM类中定义。
- 密钥对生成:由现有的
重要细节
代码示例:
getInstance方法:创建实现指定算法的 KEM 对象。newEncapsulator方法:发送方使用接收方的公钥创建Encapsulator对象,并调用其encapsulate方法生成Encapsulated对象,其中包含SecretKey和密钥封装消息。newDecapsulator方法:接收方使用其私钥创建Decapsulator对象,并调用其decapsulate方法从接收到的密钥封装消息中提取共享密钥。
总结
KEM API 的引入是 OpenJDK 在现代密码学领域的重要进步,提供了更安全、高效的保护对称密钥的方式。它将在防御量子攻击和增强高级协议与加密方案的安全性方面发挥关键作用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。