

# クライアントのハイブリッドポスト量子 TLS の設定
PQ-TLS クライアントを設定する

Amazon S3 で PQ-TLS を使用するには、ポスト量子キー交換アルゴリズムをサポートするようにクライアントを設定する必要があります。また、クライアントがハイブリッドアプローチをサポートしていることを確認します。ハイブリッドアプローチは、従来の楕円曲線暗号と ML-KEM (Module-Lattice-Based キーカプセル化メカニズム) などのポスト量子アルゴリズムを組み合わせたものです。

特定の設定は、クライアントライブラリとプログラミング言語によって異なります。詳細については、「[ハイブリッドポスト量子 TLS の有効化](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/pqtls-details.html)」を参照してください。

## クライアント設定の例: AWS SDK for Java 2


この手順では、AWS 共通ランタイム HTTP クライアントの Maven 依存関係を追加します。次に、ポスト量子 TLS を優先する HTTP クライアントを設定します。次に、HTTP クライアントを使用する Amazon S3 クライアントを作成します。

**注記**  
プレビューとして公開された AWS 共通ランタイム HTTP クライアントは、2023 年 2 月に一般公開されました。このリリースでは、`tlsCipherPreference` クラスと `tlsCipherPreference()` メソッドパラメータが、`postQuantumTlsEnabled()` メソッドパラメータに置き換えられました。プレビュー中にこの例を使用していた場合は、コードを更新する必要があります。

1. Maven 依存関係に AWS 共通ランタイムクライアントを追加します。利用可能な最新バージョンを使用することをお勧めします。

   例えば、このステートメントは Maven の依存関係に、AWS 共通ランタイムクライアントのバージョン `2.30.22` を追加します。

   ```
   <dependency>
       <groupId>software.amazon.awssdk</groupId>
       <artifactId>aws-crt-client</artifactId>
       <version>2.30.22</version>
   </dependency>
   ```

1. ハイブリッドポスト量子暗号スイートを有効にするには、AWS SDK for Java 2.x をプロジェクトに追加して初期化します。続いて、次の例に示すように、HTTP クライアントでハイブリッドポスト量子暗号スイートを有効にします。

   このコードでは、`postQuantumTlsEnabled()` メソッドパラメータを使用して、推奨されるハイブリッドポスト量子暗号スイートである ECDH with ML-KEM を優先する [AWS 共通ランタイム HTTP クライアント](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-configuration-crt.html)を設定します。次に、設定済み HTTP クライアントを使用して、Amazon S3 非同期クライアントのインスタンスである [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html) を構築します。このコードが完了すると、`S3AsyncClient` インスタンス上のすべての [Amazon S3 API](https://docs.aws.amazon.com/AmazonS3/latest/API/) リクエストは、ハイブリッドポスト量子 TLS を使用します。
**重要**  
v2.35.11 以降、クライアントでハイブリッドポスト量子 TLS を有効にするように `.postQuantumTlsEnabled(true)` を設定する必要がなくなりました。v2.35.11 より新しいすべてのバージョンは、デフォルトでポスト量子 TLS を有効にします。

   ```
   // Configure HTTP client
   SdkAsyncHttpClient awsCrtHttpClient = AwsCrtAsyncHttpClient.builder()
             .postQuantumTlsEnabled(true)
             .build();
   
   // Create the Amazon S3 async client
   S3AsyncClient s3Async = S3AsyncClient.builder()
            .httpClient(awsCrtHttpClient)
            .build();
   ```

1. ハイブリッドポスト量子 TLS を使用して Amazon S3 の呼び出しをテストします。

   構成された Amazon S3 クライアントで Amazon S3 API オペレーションを呼び出すと、コールはハイブリッドポスト量子 TLS を使用して Amazon S3 エンドポイントに送信されます。設定をテストするには、`[ListBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)` などの Amazon S3 API を呼び出します。

   ```
   ListBucketsResponse reponse = s3Async.listBuckets();
   ```

### ハイブリッドポスト量子 TLS 設定をテストする
テスト方法

Amazon S3 を呼び出すアプリケーションで、ハイブリッド暗号スイートを使用して次のテストを実行することを検討してください。
+ 負荷テストとベンチマークを実行します。ハイブリッド暗号スイートの動作は、従来のキー交換アルゴリズムとは異なります。ハンドシェイク時間が長くなるように、接続のタイムアウトを調整する必要がある場合があります。AWS Lambda 関数内で実行している場合は、実行タイムアウト設定を拡張します。
+ 別の場所からの接続を試します。要求が通過するネットワークパスによっては、ディープパケットインスペクション (DPI) を持つ中間ホスト、プロキシ、またはファイアウォールが要求をブロックしていることが検出されることがあります。これは、TLS ハンドシェイクの [ClientHello](https://tools.ietf.org/html/rfc5246#section-7.4.1.2) 部分で新しい暗号スイートを使用した場合や、大きなキー交換メッセージから発生することがあります。これらの問題を解決できない場合は、セキュリティチームまたは IT 管理者と協力して、関連する構成を更新し、新しい TLS 暗号スイートのブロックを解除してください。