配置混合后量子 TLS - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

配置混合后量子 TLS

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

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

注意

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

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

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

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

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

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

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

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

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

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

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

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