【问题标题】:AES GCM with hardware accelerated support before Java 9Java 9 之前支持硬件加速的 AES GCM
【发布时间】:2016-05-12 13:50:54
【问题描述】:

我的用例涉及在 Java 中使用 AES 和 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 (openssl speed -evp aes-128-gcm),对于 AES/GCM,两者的时钟速度均超过 2GB/s。不幸的是,我找不到围绕其中任何一个的当前 Java 包装器。我遇到的最接近的是Apache JuiCE,它基于 OpenSSL,但在 8 年前就被废弃了。

有没有人遇到过支持 AES/GCM 硬件加速的 JCE 提供程序,我可以在短期内使用,无论是商业的还是开源的?

【问题讨论】:

  • OpenSSL API 相当简单;甚至比JCE还要好。您可以轻松地为其制作 JNI 包装器。

标签: java performance encryption cryptography aes-gcm


【解决方案1】:

Netty-tcnative 提供了一个替代的 SSL 引擎,它使用 JNI 与本机 OpenSSL 交互。您应该能够以类似的方式直接访问加密功能。也就是说,JEP 246: Leverage CPU Instructions for GHASH and RSA 现在是 Java 9 的一部分,因此您应该能够在不使用本机代码的情况下获得类似的性能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-31
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 2015-10-04
    • 2011-06-05
    相关资源
    最近更新 更多