支持AES-NI的Java SSL提供程序

时间:2013-01-10 14:02:15

标签: java security aes-ni

是否有可以处理SSL连接且支持AES-NI指令的Java安全提供程序?

我曾尝试将SunPKCS11与Mozilla NSS一起使用,但它不适用于使用AES加密的SSL连接。根据{{​​3}},此提供程序不支持SSLContext。*“算法”: - (

2 个答案:

答案 0 :(得分:2)

2012年12月在上有一些活动支持x86上的 AES-NI 。见JEPS-164

This在2012年12月合并到jdk8讨论here包括更改汇编代码以支持AES-NI。从讨论开始,看起来可能会将更改移植到jdk7u12。

2012年11月的Java V7 IBM JCE包括对 AES-NI 的支持。

如果使用其中一个新的JRE,您的java SSL / TLS实现应该利用 AES-NI 而不使用PKCS11提供程序。

您可以检查BIOS以查看是否可以启用/禁用 AES-NI 。如果可以,那么您可以运行AES加密/解密的微基准测试,看看有什么区别。

答案 1 :(得分:1)

我相信我找到了问题的答案。

首先,我正在为两个不同的库混合“提供者”:JCE(加密算法的实现)和JSSE(支持安全套接字)。

根据JavaTM Secure Socket Extension (JSSE) Reference Guide, section JCE and Hardware Acceleration/Smartcard Support,默认的JSSE提供程序(SunJSSE)将JCE用于所有加密操作。

JCE可以配置为使用硬件加速的AES,例如通过使用SunPKCS11 + mozilla-nss库,例如在this answer中记录。

还有待完成的工作(在我的情况下),是确保SSL配置了适当的密码,并验证ssl连接是否实际使用了SunPKCS11。