我的使用案例涉及使用AES和Java中的GCM加密大量的PB级别的大量敏感数据,我需要高吞吐量才能在合理的时间内完成该任务。
就像previously asked and answered那样,AES / GCM仍然在最新的JDK 8中严重削弱(在我的硬件上〜 17MB / s )。我很高兴知道JEP 246添加significant hardware acceleration for GCM使其成为Java 9的路线图,但是下一个主要Java版本的一般可用性已被推迟到我写作的一年多时间此
到目前为止,我发现最快的实施是Bouncy Castle Provider,没有硬件加速和吞吐量 170MB / s 。我知道我的硬件通过运行本机库的基准测试来支持加速 GnuTLS ( gnutls-cli --benchmark-ciphers )和 OpenSSL (< em> openssl speed -evp aes-128-gcm ),两者都为 2GB / s 计时,用于AES / GCM。不幸的是,我找不到当前的Java包装器。我遇到的最接近的是基于OpenSSL的Apache JuiCE,但它在8年前就被废弃了。
有没有人遇到过支持AES / GCM硬件加速的JCE提供商,我可以在短期内使用,无论是商业还是开源?
答案 0 :(得分:1)
Netty-tcnative提供了一个使用JNI与本机OpenSSL接口的备用SSL引擎。您应该能够以类似的方式直接访问加密函数。也就是说,JEP 246: Leverage CPU Instructions for GHASH and RSA现在是Java 9的一部分,因此您应该能够获得类似的性能而无需使用本机代码。