Skip to content

JEP 164: Leverage CPU Instructions for AES Cryptography | 利用 CPU 指令进行 AES 加密

摘要

当 x86 AES 指令可用时,通过使用这些指令并避免对 AES 密钥进行不必要的重新扩展,来提高开箱即用的 AES 加密性能。

动机

AES 加密在应用程序中很常见,且这些应用程序期望获得良好的性能。我们应该让支持硬件 AES 指令的处理器能够轻松地获得开箱即用的良好性能。

描述

此更改的目的是提高使用 AES 加密的应用程序的开箱即用性能。热点编译器更改(7184394)和安全库更改(7185471)实际上是完全独立的,除了它们都与 AES 性能相关这一事实之外。

如果 x86 处理器支持此类指令(如果需要,可以通过一个标志来关闭此功能),则热点编译器的 AES 指令生成会自动发生。这些指令可以在 64 位或 32 位 x86 系统上生成。其他 CPU 类型不受影响。

库更改有助于使用相同密钥但重新初始化 Cipher 对象的应用程序,在加密和解密之间切换。避免密钥的重新扩展(7185471)仅更改 com.sun.crypto.provider.AESCrypt 类中的私有变量。其他类不受影响。

测试

可以通过标准基准测试和应用服务器测试套件来测试此更改,既可以在支持 x86 AES 指令的系统上进行测试,也可以在不支持 x86 AES 指令的系统上进行测试,以确保没有产生意外的副作用。

影响

  • 安全性:无影响,更改仅提高性能
  • 性能 / 可扩展性:需要验证新实现的性能