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 SDKHMAC ベースのアルゴリズムスイートを AES-GCM で使用しますextract-and-expandキー導出関数 (HKDF)、署名、256 ビットの暗号化キーを使用します。そのファイルにコミットメントポリシー要求するコミットメントキーとすると、AWS Encryption SDK鍵コミットメントもサポートするアルゴリズムスイートを選択します。それ以外の場合は、鍵の導出と署名を持つアルゴリズムスイートが選択されますが、鍵コミットメントは選択されません。

-AWS Encryption SDKHMAC ベースに 256 ビットのデータ暗号化キーを提供して AES-GCM 暗号化キーを導出するアルゴリズムスイートを推奨していますextract-and-expandキー導出関数 (HKDF)。-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 暗号化キーとして、キー取得関数ではなく、AES-GCM 暗号化キーとしてデータ暗号化キーを使用して、一意のキーを取得します。このスイートを使用して暗号化テキストを生成することはお勧めしませんが、AWS Encryption SDK互換性上の理由からサポートしています。

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