配置混合后量子 TLS - AWS Key Management Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置混合后量子 TLS

在此过程中,为 AWS 公共运行时 HTTP 客户端添加一个 Maven 依赖项。然后配置一个优先使用后量子 TLS 的 HTTP 客户端。然后,创建使用 HTTP 客户端的 AWS KMS 客户端。

要查看演示混合后量子 TLS 与 AWS KMS 结合使用的配置过程以及具体使用方法的完整工作示例,请参阅 aws-kms-pq-tls-example 存储库。

注意

AWS 公共运行时 HTTP 客户端现已开放预览版,并于 2023 年 2 月全面开放。在正式发行版中,tlsCipherPreference 类和 tlsCipherPreference() 方法参数已替换为 postQuantumTlsEnabled() 方法参数替。如果您在预览期间使用此示例,则需要更新您的代码。

  1. 将 AWS 公共运行时客户端添加到您的 Maven 依赖项中。我们建议您使用最新可用版本。

    例如,以下语句将 AWS 公共运行时客户端的版本 2.20.0 添加到您的 Maven 依赖项中。

    <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-crt-client</artifactId> <version>2.20.0</version> </dependency>
  2. 要启用混合后量子密码套件,请将 AWS SDK for Java 2.x 添加到您的项目中并进行初始化。然后按照以下示例所示,在您的 HTTP 客户端上启用混合后量子密码套件。

    此代码使用 postQuantumTlsEnabled() 方法参数配置 AWS 公告运行时 HTTP 客户端,以优先使用推荐的混合后量子密码套件(即 ECDH 与 Kyber)。然后使用配置的 HTTP 客户端来构建一个 AWS KMS 异步客户端实例(即 KmsAsyncClient)。此代码完成后,KmsAsyncClient 实例上的所有 AWS KMS API 请求都将使用混合后量子 TLS。

    // Configure HTTP client SdkAsyncHttpClient awsCrtHttpClient = AwsCrtAsyncHttpClient.builder() .postQuantumTlsEnabled(true) .build(); // Create the AWS KMS async client KmsAsyncClient kmsAsync = KmsAsyncClient.builder() .httpClient(awsCrtHttpClient) .build();
  3. 使用后量子 TLS 测试您的 AWS KMS 调用。

    在配置的 AWS KMS 客户端上调用 AWS KMS API 操作时,会使用混合后量子 TLS 将您的调用传输到 AWS KMS 终端节点。要测试您的配置,您需要调用一个 AWS KMS API,例如 ListKeys

    ListKeysReponse keys = kmsAsync.listKeys().get();

测试您的混合后量子 TLS 配置

请考虑在调用 AWS KMS 的应用程序上,使用混合密码套件运行下面的测试。

  • 运行负载测试和基准测试。混合密码套件的执行方式与传统密钥交换算法有所不同。您可能需要调整连接超时,以便增加握手时间。如果您在 AWS Lambda 函数内部运行,请增大执行超时设置。

  • 请尝试从不同位置进行连接。根据您的请求采用的网络路径,您可能会发现中间主机、代理或带有深度数据包检查 (DPI) 功能的防火墙阻止了请求。这可能是因为在 TLS 握手的 ClientHello 部分中使用了新的密码套件,或者密钥交换消息比较大。如果您在解决这些问题时遇到麻烦,请与安全团队或 IT 管理员一起,更新相关配置并取消阻止新的 TLS 密码套件。