翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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
推奨: キー取得、署名、キーコミットメントを使用する AES-GCM
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 アルゴリズムリファレンス」を参照してください。