AWS KMS でハイブリッドポスト量子 TLS を使用する - AWS Key Management Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS KMS でハイブリッドポスト量子 TLS を使用する

AWS Key Management Service (AWS KMS) は、Transport Layer Security (TLS) ネットワーク暗号化プロトコル用のハイブリッドポスト量子キー交換オプションをサポートします。この TLS オプションは、AWS KMS API エンドポイントに接続するときに使用できます。この機能はポスト量子アルゴリズムが標準化される前に提供されているため、これらのキー交換プロトコルの AWS KMS コールへの影響のテストを開始できます。これらのオプションのハイブリッドポスト量子キー交換機能は、現在使用している TLS 暗号化と同等以上に安全であり、セキュリティ上のさらなる長期的な利点をもたらす可能性があります。ただし、現在使用されている従来のキー交換プロトコルと比較して、レイテンシーとスループットに影響します。

AWS Key Management Service (AWS KMS) に送信されたデータは、Transport Layer Security (TLS) 接続が提供する暗号化によって転送中に保護されます。AWS KMS が TLS セッションでサポートしている従来の暗号スイートにより、現在のテクノロジーではキー交換メカニズムに対するブルートフォース攻撃は実行不可能です。しかし、大規模な量子コンピューティングが将来実用的になると、TLS 鍵交換メカニズムで使用される従来の暗号スイートは、これらの攻撃の影響を受けやすくなります。TLS 接続を介して渡されるデータの長期的な機密性に依存するアプリケーションを開発している場合は、大規模な量子コンピュータが使用できるようになる前に、ポスト量子暗号化に移行する計画を検討する必要があります。AWS は、この未来に備えるために取り組んでいます。また、皆さんにも十分に備えてほしいと思っています。

潜在的な将来の攻撃から現在暗号化されたデータを保護するために、AWS は量子耐性またはポスト量子アルゴリズムを開発する暗号化コミュニティに参加しています。従来の要素とポスト量子要素を組み合わせたハイブリッドポスト量子キー交換暗号スイートを AWS KMS に実装したことで、TLS 接続が従来の暗号スイートと同等以上の強度になりました。

これらのハイブリッド暗号スイートは、ほとんどの AWS リージョン の本稼働用ワークロードで使用できます。ただし、ハイブリッド暗号スイートのパフォーマンス特性と帯域幅要件は従来のキー交換メカニズムのものとは異なるため、異なる条件下での AWS KMS API コールでテストすることをお勧めします。

フィードバック

これまでと同様、皆様のフィードバックや私たちのオープンソースリポジトリへの参加はいつでも歓迎です。特に、この新しい種類の TLS トラフィックが皆様のインフラストラクチャとどのように相互作用するかをぜひお聞かせください。

  • このトピックに関するフィードバックを提供するには、このページの右下隅にある [フィードバック] リンクを使用してください。

  • これらのハイブリッド暗号スイートは、 の s2n-tlsリポジトリのオープンソースで開発されています GitHub。暗号スイートのユーザビリティに関するフィードバックを提供したり、新しいテスト条件や結果を共有したりするには、s2n-tls リポジトリで課題を作成してください。

  • aws-kms-pq-tls-example GitHub リポジトリAWS KMSでハイブリッドポスト量子 TLS を で使用するためのコードサンプルを記述しています。ハイブリッド暗号スイートを使用するための HTTP クライアントまたは AWS KMS クライアントの設定に関して質問したり、アイデアを共有するには、aws-kms-pq-tls-example リポジトリで課題を作成します

サポートされる AWS リージョン

AWS KMS 用のポスト量子 TLS は、中国 (北京) と 中国 (寧夏) を除き、AWS KMS がサポートされているすべての AWS リージョンで使用できます。

注記

AWS KMS は、AWS GovCloud (US) の FIPS エンドポイントのハイブリッドポスト量子 TLS をサポートしていません。

AWS リージョン それぞれの AWS KMS エンドポイントのリストについては、「Amazon Web Services 全般のリファレンス」の「AWS Key Management Service エンドポイントとクォータ」を参照してください。FIPS エンドポイントの詳細については、「Amazon Web Services 全般のリファレンス」の「FIPS エンドポイント」を参照してください。

TLS におけるハイブリッドポスト量子キー交換について

AWS KMS は、ハイブリッドポスト量子キー交換暗号スイートをサポートします。Linux システムに AWS SDK for Java 2.x および AWS 共通ランタイムを使用して、これらの暗号スイートを使用する HTTP クライアントを設定できます。その後、HTTP クライアントを使用して AWS KMS エンドポイントに接続するたびに、ハイブリッド暗号スイートが使用されます。

この HTTP クライアントは、TLS プロトコルのオープンソース実装である s2n-tls を使用します。s2n-tls が使用するハイブリッド暗号スイートは、直接データ暗号化ではなく、キー交換専用に実装されています。キー交換中、クライアントとサーバーは、転送中にデータの暗号化と復号に使用するキーを計算します。

s2n-tls が使用しているアルゴリズムは、Elliptic Curve Diffie-Hellman (ECDH)、TLS で現在使用されている従来の鍵交換アルゴリズムを Kyber を組み合わせたハイブリッドで、アメリカ国立標準技術研究所 (NIST) が最初の標準ポスト量子キー合意アルゴリズとして指定した公開鍵暗号化およびキー確立アルゴリズムです。このメカニズムは、各アルゴリズムを独立して使用してキーを生成します。次に、2つのキーを暗号的に組み合わせます。s2n-tls では、プリファレンスリストで ECDH と Kyber を最初に配置するポスト量子 TLS を優先して、HTTP クライアントを設定できます。互換性を確保するために、従来のキー交換アルゴリズムがプリファレンスリストに含まれていますが、プリファレンスの順序では低くなっています。

進行中の研究で、Kyber アルゴリズムには予想されるポスト量子強度が欠けていることが明らかになった場合でも、ハイブリッドキーは現在使用されている単独の ECDH キーと少なくとも同じ強度です。このプロセスが完了するまで、ポスト量子アルゴリズムを単独で使用するのではなく、ハイブリッドアルゴリズムを使用することをお勧めします。

AWS KMS でハイブリッドポスト量子 TLS を使用する

AWS KMS へのコールには、ハイブリッドポスト量子 TLS を使用できます。HTTP クライアントのテスト環境を設定するときは、次の点に注意してください。

転送時の暗号化

s2n-tls のハイブリッド暗号スイートは、転送中の暗号化のみに使用されます。これらはクライアントから AWS KMS エンドポイントへ移動中のデータを保護します。AWS KMS はこれらの暗号スイートを使用して AWS KMS keys のデータを暗号化しません。

代わりに、AWS KMS が KMS キーでデータを暗号化する際は、256 ビットキーによる対称暗号化と、既に量子耐性を備えている Advanced Encryption Standard in Galois Counter Mode (AES-GCM) アルゴリズムを使用します。理論上の将来、256 ビット AES-GCM キーで作成された暗号文に対する大規模な量子コンピューティング攻撃は、キーの効果的なセキュリティを 128 ビットに低下させます。このセキュリティレベルは、AWS KMS 暗号文に対するブルートフォース攻撃を実行不可能にするのに十分です。

サポートされているシステム

s2n-tls のハイブリッド暗号スイートの使用は、現在 Linux システムでのみサポートされています。加えて、これらの暗号スイートは、AWS SDK for Java 2.x などの AWS 共通ランタイムをサポートする SDK でのみサポートされます。例については「ハイブリッドポスト量子 TLS の設定方法」を参照してください。

AWS KMS エンドポイント

ハイブリッド暗号スイートを使用する場合は、標準 AWS KMS エンドポイントを使用します。s2n-tls のハイブリッド暗号スイートは、AWS KMS の FIPS 140-2 検証済みエンドポイントと互換性がありません。

s2n-tls でポスト量子 TLS 接続を優先して HTTP クライアントを設定すると、ポスト量子暗号は暗号プリファレンスリストの先頭になります。ただし、互換性を保つため、プリファレンスリストには優先順で低い従来の非ハイブリッド暗号が含まれています。AWS KMS FIPS 140-2 検証済みエンドポイントを使用してポスト量子 TLS を優先するように HTTP クライアントを設定すると、s2n-tls は従来の非ハイブリッドキー交換暗号をネゴシエートします。

AWS リージョン それぞれの AWS KMS エンドポイントのリストについては、「Amazon Web Services 全般のリファレンス」の「AWS Key Management Service エンドポイントとクォータ」を参照してください。FIPS エンドポイントの詳細については、「Amazon Web Services 全般のリファレンス」の「FIPS エンドポイント」を参照してください。

期待されるパフォーマンス

初期のベンチマークテストでは、s2n-tls のハイブリッド暗号スイートは従来の TLS 暗号スイートよりも遅いことが示されています。この効果は、ネットワークプロファイル、CPU 速度、コア数、コールレートによって異なります。パフォーマンステストの結果については、「How to tune TLS for hybrid post-quantum cryptography with Kyber」(Kyber でハイブリッドポスト量子暗号用に TLS を調整する方法) を参照してください。

ハイブリッドポスト量子 TLS の設定方法

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

AWS KMS でのハイブリッドポスト量子 TLS の設定と使用の完全な実例については、aws-kms-pq-tls-example リポジトリを参照してください。

注記

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

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

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

    <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() メソッドパラメータを使用して、推奨されるハイブリッドポスト量子暗号スイートである ECDH with Kyber を優先する AWS 共通ランタイム HTTP クライアントを設定します。次に、設定済み 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 エンドポイントに送信されます。設定をテストするには、ListKeys などの AWS KMS API を呼び出します。

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

AWS KMS でハイブリッドポスト量子 TLS をテストする

AWS KMS を呼び出すアプリケーションで、ハイブリッド暗号スイートを使用して次のテストを実行することを検討してください。

  • 負荷テストとベンチマークを実行します。ハイブリッド暗号スイートの動作は、従来のキー交換アルゴリズムとは異なります。ハンドシェイク時間が長くなるように、接続のタイムアウトを調整する必要がある場合があります。AWS Lambda 関数内で実行している場合は、実行タイムアウト設定を拡張します。

  • 別の場所からの接続を試します。要求が通過するネットワークパスによっては、ディープパケットインスペクション (DPI) を持つ中間ホスト、プロキシ、またはファイアウォールが要求をブロックしていることが検出されることがあります。これは、TLS ハンドシェイクの ClientHello部分で新しい暗号スイートを使用した場合や、キー交換メッセージが大きい場合に発生する可能性があります。これらの問題を解決できない場合は、セキュリティチームまたは IT 管理者と協力して、関連する構成を更新し、新しい TLS 暗号スイートのブロックを解除してください。

AWS KMS でのポスト量子 TLS について

AWS KMS でのハイブリッドポスト量子 TLS の使用の詳細については、次のリソースを参照してください。