是否有可以处理SSL连接且支持AES-NI指令的Java安全提供程序?
我曾尝试将SunPKCS11与Mozilla NSS一起使用,但它不适用于使用AES加密的SSL连接。根据{{3}},此提供程序不支持SSLContext。*“算法”: - (
答案 0 :(得分:2)
2012年12月在openjdk上有一些活动支持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。