JEP 164:利用 CPU 指令进行 AES 加密
概述
通过在可用时使用 x86 AES 指令,并避免不必要的 AES 密钥重新扩展,提升开箱即用的 AES 加密性能。
动机
AES 加密在应用程序中很常见,此类应用程序期望良好的性能。对于硬件支持 AES 指令的处理器,我们应该使其开箱即用就能轻松获得良好的性能。
描述
此项更改的意图是改进使用 AES 加密的应用程序的开箱即用性能。hotspot 编译器更改 (7184394) 和安全库更改 (7185471) 实际上是完全独立的,除了它们都与 AES 性能有关这一事实之外。
如果 x86 处理器支持此类指令,则热点编译器 AES 指令生成会自动进行(如果需要,可以使用一个标志来关闭此功能)。这些指令可以在 64 位或 32 位 x86 系统上生成。其他 CPU 类型不受影响。
库更改有助于使用相同密钥但重新初始化 Cipher
对象的应用程序,使其在加密和解密之间进行切换。避免重新扩展密钥(7185471)仅更改 com.sun.crypto.provider.AESCrypt
类中的私有变量,不会影响其他类。
测试
可以通过标准基准测试和应用服务器测试套件来测试此更改,无论是在支持 x86 AES 指令的系统上,还是在不支持 x86 AES 指令的系统上,以确保没有意外的副作用。
影响
- 安全性:没有影响,这些更改仅提升了性能
- 性能/可扩展性:需要验证新实现的性能表现