AWS Encryption SDK でサポートされているアルゴリズムスイート - AWS Encryption SDK

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

AWS Encryption SDK でサポートされているアルゴリズムスイート

アルゴリズムスイートは、暗号化アルゴリズムと関連する値の集合です。暗号化システムは、アルゴリズムの実装を使用して、暗号化テキストメッセージを生成します。

AWS Encryption SDK のアルゴリズムスイートでは、AES-GCM (Advanced Encryption Standard (AES) アルゴリズムの Galois/Counter Mode (GCM)) を使用して raw データを暗号化します。-AWS Encryption SDKでは、256 ビット、192 ビット、128 ビットの暗号化キーをサポートしています。初期化ベクトル (IV) の長さは常に 12 バイトです。認証タグの長さは常に 16 バイトです。

デフォルトでは、AWS Encryption SDKは、AES-GCM を使用する AES-GCM を使用するアルゴリズムスイートを HMAC ベースの抽出および展開キー取得関数 (HKDF)、署名、256 ビット暗号化キーです。そのファイルにコミットメント方針には が必要ですコミットメント数とすると、AWS Encryption SDKは、キーのコミットメントもサポートするアルゴリズムスイートを選択します。それ以外の場合は、キーの派生と署名を持つアルゴリズムスイートが選択されますが、キーのコミットメントは選択されません。

-AWS Encryption SDKは、HMAC ベースの抽出および展開キー取得関数 (HKDF) に 256 ビットデータ暗号化キーを提供し、AES-GCM 暗号化キーを取得します。-AWS Encryption SDK楕円曲線 DSA (ECDSA) 署名を追加します。サポートへコミットメント数の場合、このアルゴリズムスイートはキーコミットメント文字列— 非秘密のデータキー識別子。暗号化されたメッセージのメタデータに保存されます。このキーコミットメント文字列は、データ暗号化キーの導出と同様の手順を使用して、HKDFを通じて導出されます。

AWS Encryption SDKアルゴリズムスイート
暗号化アルゴリズム データ暗号化キーの長さ (ビット) キー導出アルゴリズム 署名アルゴリズム コミットメント数
AES-GCM 256 SHA-384 を使用する HKDF P-384 および SHA-384 を使用する ECDSA SHA-512 を使用する HKDF

HKDF は、データ暗号化キーの誤った再利用を避けて、データキーを過剰に使用するリスクを軽減します。

署名のために、このアルゴリズムスイートは、暗号化ハッシュ関数アルゴリズム (SHA-384) を使用する ECDSA を使用します。基盤となるマスターキーのポリシーによって指定されていない場合でも、ECDSA が、デフォルトで使用されます。メッセージの署名は、メッセージの送信者がメッセージを暗号化する権限を持っていることを確認し、否認防止を提供します。これは、マスターキーの承認ポリシーによって、1 組のユーザーにデータを暗号化させ、別の組のユーザーにデータを復号させる場合に特に便利です。

キーコミットメントを持つアルゴリズムスイートは、各暗号文が1つのプレーンテキストに復号化されるようにします。これは、暗号化アルゴリズムへの入力として使用されるデータキーの ID を検証することによって行われます。暗号化時に、これらのアルゴリズムスイートはキーのコミットメント文字列を取得します。復号化する前に、データキーがキーのコミットメント文字列と一致することを検証します。応答しない場合は、復号呼び出しは失敗します。

サポートされているその他のアルゴリズムスイート

AWS Encryption SDK では、下位互換性のために次の代替アルゴリズムスイートをサポートします。一般的に、これらのアルゴリズムスイートはお勧めしていません。しかし、署名がパフォーマンスを大幅に妨げる可能性があることを認識しているため、そのような場合にキー派生を含むキーコミットスイートを提供しています。パフォーマンスのトレードオフをより大きくしなければならないアプリケーションについては、署名、キーの確約、およびキーの導出がないスイートを引き続き提供しています。

コミットメントなしの AES-GCM

キーコミットメントのないアルゴリズムスイートは、復号化前にデータキーを検証しません。その結果、これらのアルゴリズムスイートは、単一の暗号文を異なる平文メッセージに復号化する可能性があります。しかし、キーコミットメントを持つアルゴリズムスイートはわずかに大きい (+30 バイト) 暗号化されたメッセージ処理に時間がかかりますが、すべてのアプリケーションにとって最良の選択ではないかもしれません。

-AWS Encryption SDKは、キーの導出、キーのコミットメント、署名、およびキーの導出とキーのコミットメントを持つアルゴリズムスイートをサポートしますが、署名はサポートしません。コミットメントなしのアルゴリズムスイートを使用することはお勧めしません。必要であれば、鍵の導出と鍵のコミットメントを持つアルゴリズムスイートを推奨しますが、署名はありません。ただし、アプリケーションのパフォーマンスプロファイルでアルゴリズムスイートの使用がサポートされている場合は、キーのコミットメント、キーの導出、および署名を含むアルゴリズムスイートを使用することがベストプラクティスです。

署名なしの AES-GCM

署名なしのアルゴリズムスイートには、信頼性と非否認を提供する ECDSA 署名がありません。これらのスイートは、データを暗号化するユーザーと復号するユーザーが同じほど信頼できる場合にのみ使用します。

署名なしでアルゴリズムスイートを使用する場合は、キーの導出とキーのコミットメントを持つアルゴリズムスイートを選択することをお勧めします。

キー導出を使用しない AES-GCM

キー導出を使用しないアルゴリズムスイートでは、キー導出関数ではなく、AES-GCM 暗号化キーとしてデータ暗号化キーを使用して、一意のキーを取得します。このスイートを使用して暗号化テキストを生成することはお勧めしませんが、AWS Encryption SDKは、互換性の理由からサポートしています。

これらのスイートのライブラリ内での表示方法と使用方法の詳細については、「AWS Encryption SDK のアルゴリズムのリファレンス」を参照してください。