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 を含むアルゴリズムスイートを HMAC ベースの抽出および展開キー取得関数 (HKDF)、署名、256 ビット暗号化キーと共に使用します。コミットメントポリシーキーコミットメントを要求する場合、AWS Encryption SDK はキーコミットメントもサポートするアルゴリズムスイートを選択します。それ以外の場合は、キー取得と署名を使用するがキーコミットメントを使用しないアルゴリズムスイートが選択されます。

AWS Encryption SDK は、256 ビットデータ暗号化キーを HMAC ベースの抽出および展開キー取得関数 (HKDF) に提供し、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 のアルゴリズムのリファレンス」を参照してください。