跳到主要内容

JEP 164:利用 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 指令的系统上,以确保不会产生意外的副作用。

影响

  • 安全性:没有影响,更改只是提高性能
  • 性能/可扩展性:需要验证新实施的性能