亚马逊AWS官方博客

Amazon 推出 Amazon Corretto Crypto Provider (ACCP)

作者:Greg Rubin 和 Yishai Galatzer

2018 年 10 月,我们推出了 Amazon Corretto,这是 Open Java Development Kit (OpenJDK) 的开源、免费、多平台、生产就绪型发行版本。发布时,我们侧重于创建高质量、长期受支持的发行版本,并进行了一些性能改进。今天,我们很高兴地发布一项重大性能改进功能:Amazon Corretto Crypto Provider (ACCP)

Java 加密技术历来运行缓慢且大量占用 CPU。这直接影响我们以及我们的客户,因为 Amazon 运营着一些世界上最庞大的 Java 服务。在生产环境中使用多年后,我们发现 Java 中的加密操作大量占用 CPU、造成了吞吐量瓶颈并提高了运营成本。为了解决这些问题,我们开发、实施并调试了 ACCP,并且从 2017 年起一直在我们最重要的生产环境中优化其性能。我们已更新了数十种加密算法,这使我们能够加速许多不同的加密工作负载。

现在,您可以在自己的环境中享受这一性能优化:借助 ACCP,我们即将推出另一个受支持的发行版本,可以在 JDK 8 和 JDK 11 的生产环境中使用。您可能会发现性能改进会因算法和工作负载而异,但在基准测试和实际生产使用中,服务吞吐量通常会提高 25% 以上。通常情况下,较慢的算法和较大的数据集从 ACCP 获益最多;例如,有 ACCP 的 AES-GCM 算法比没有 ACCP 的 AES-GCM 算法快 28 倍以上。

ACCP 到底是什么?

ACCP 实施标准 Java 加密架构 (JCA) 接口,并将默认的 Java 加密实施替换为 OpenSSL 项目中的 libcrypto 提供的加密实施。借助 ACCP,您可以充分利用汇编级和 CPU 级性能优化,使多个服务和产品显著降低成本、减少延迟并提高吞吐量,如以下示例所示。

ACCP 性能改进示例

AWS Snowball 使用 ACCP 运行加密函数的速度大约提升了 20 倍,数据传输速度翻了一番。Amazon S3 和 AWS IoT 使用 ACCP 实现新的加密功能,这些功能以前因过于占用过多资源而无法提供。

在主机级别终止 TLS 的一项 AWS 服务大幅降低了 CPU 使用率;在下图中,您可以看到部署 ACCP 前后的差异。

在主机级别终止 TLS 的 AWS 服务:图中显示,部署 ACCP 后 CPU 使用率大幅降低。

 

实施 ACCP 后,报告显示另一项服务的 CPU 使用率峰值从大约 66% 降至了大约 55%:

图中显示,实施 ACCP 后,AWS 服务的 CPU 使用率峰值从大约 66% 降至了大约 55%。

 

报告显示另一项服务的队组成本降低了 40%。而另一项服务的容量则增加了 32%。

如何开始使用 ACCP?

我们已将 ACCP 作为独立的 Maven 程序包发布,它可以与任何支持 JCA 的 JDK 搭配使用。

以下是 Maven 配置示例:

<dependency>

<groupId>software.amazon.cryptools</groupId>

<artifactId>AmazonCorrettoCryptoProvider</artifactId>

<version>LATEST</version>

<classifier>linux-x86_64</classifier>

</dependency>

在您的初始化代码中添加以下行:

com.amazon.corretto.crypto.provider.AmazonCorrettoCryptoProvider.install()

或者在您的程序命令行中添加以下 Java 属性:

-Djava.security.properties=/path/to/amazon-corretto-crypto-provider.security

有关其他集成(包括那些不需要更改代码的集成),请参阅 Amazon Corretto Crypto Provider readme

接下来呢?

我们计划将 ACCP 与 Corretto 集成,这样您就不必安装程序包,只需在代码或配置中启用 ACCP 即可。完成该步骤后,我们将监控客户反馈,以确定我们是否要在默认情况下将其打开。

请试用 ACCP,参与开发过程,并告诉我们您对 Amazon Corretto Crypto Provider 存储库的看法。

戴着礼帽的 Greg Rubin。

Greg Rubin

Greg Rubin 是一名安全工程师,自 2005 年起一直在 Amazon 工作。他专注于使用户能够轻松恰当地使用加密技术,免除他们在这方面的忧虑。业余时间,他尝试自学乐器,他收藏的乐器越来越多了。

Yishai Galatzer。

Yishai Galatzer

Yishai Galatzer 是 AWS 开发人员工具部门构件和语言团队的经理。他的团队负责构建并分发 Amazon Corretto,这是 OpenJDK 的免费、多平台、生产就绪型发行版本。Yishai 的团队构建了为 Amazon 服务提供支持的 JDK,并于 2018 年以 Amazon Corretto 品牌的名义发布,供公众使用。此前,Yishai 就职于 Microsoft,负责其开源项目,主持开展了以下 .NET 项目:NuGet、MVC 和 MVC Core,以及 WebAPI 和 Razor。您可以在 Twitter 上找到他:@yigalatz,或在华盛顿州西雅图的街道上偶遇他。