

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

# でサポートされているアルゴリズムスイート AWS Encryption SDK
<a name="supported-algorithms"></a>

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

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

デフォルトでは、 は HMAC ベースのextract-and-expandキー取得関数 ([HKDF](https://en.wikipedia.org/wiki/HKDF))、署名、および 256 ビット暗号化キーを持つ AES-GCM のアルゴリズムスイート AWS Encryption SDK を使用します。[コミットメントポリシー](concepts.md#commitment-policy)に[キーコミットメント](concepts.md#key-commitment)が必要な場合、 はキーコミットメントもサポートするアルゴリズムスイート AWS Encryption SDK を選択します。それ以外の場合は、キー取得と署名を含むアルゴリズムスイートを選択しますが、キーコミットメントは選択しません。

## 推奨: キー取得、署名、キーコミットメントを使用する AES-GCM
<a name="recommended-algorithms"></a>

では、256 ビットのデータ暗号化キーを HMAC ベースのextract-and-expandキー取得関数 (HKDF) に提供して AES-GCM 暗号化キーを取得するアルゴリズムスイート AWS Encryption SDK を推奨しています。は、楕円曲線デジタル署名アルゴリズム (ECDSA) 署名 AWS Encryption SDK を追加します。[キーコミットメント](concepts.md#key-commitment)をサポートするため、このアルゴリズムスイートは、暗号化されたメッセージのメタデータに保存されている*キーコミットメント文字列* (シークレット以外のデータキー識別子) も取得します。このキーコミットメント文字列は、データ暗号化キーの取得と同様の手順を使用して HKDF によっても取得されます。


**AWS Encryption SDK アルゴリズムスイート**  

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

HKDF により、データ暗号化キーの誤った再利用を避けて、データキー乱用のリスクを軽減できます。

署名のために、このアルゴリズムスイートは、暗号化ハッシュ関数アルゴリズム (SHA-384) を含む ECDSA を使用します。基盤となるマスターキーのポリシーによって指定されていない場合でも、ECDSA が、デフォルトで使用されます。[メッセージ署名](concepts.md#digital-sigs)では、メッセージの送信者がメッセージを暗号化する権限があることが検証され、非否認が可能になります。これは、マスターキーの承認ポリシーによって、1 組のユーザーにデータを暗号化させ、別の組のユーザーにデータを復号させる場合に特に便利です。

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

## サポートされているその他のアルゴリズムスイート
<a name="other-algorithms"></a>

は、下位互換性のために次の代替アルゴリズムスイート AWS Encryption SDK をサポートしています。一般的に、これらのアルゴリズムスイートはお勧めしていません。ただし、署名がパフォーマンスを大幅に低下させる可能性があることが分かっているため、このようなケースのためにキー取得を使用するキーコミットスイートが提供されています。より重大なパフォーマンスのトレードオフを行う必要があるアプリケーションのために、署名、キーコミットメント、キー取得がないスイートが引き続き提供されます。

**キーコミットメントを使用しない AES-GCM**  
キーコミットメントを使用しないアルゴリズムスイートでは、復号化前にデータキーが検証されません。その結果、これらのアルゴリズムスイートでは、単一の暗号化テキストがさまざまなプレーンテキストメッセージに復号化されることがあります。ただし、キーコミットメントを使用するアルゴリズムスイートでは、[暗号化されたメッセージがわずかに大きくなって (\$130 バイト)](message-format.md) 処理に時間がかかるため、すべてのアプリケーションに最適な選択肢ではない場合があります。  
は、キー取得、キーコミットメント、署名、およびキー取得とキーコミットメントを持つアルゴリズムスイート AWS Encryption SDK をサポートしますが、署名はサポートしていません。キーコミットメントを使用しないアルゴリズムスイートを使用することはお勧めしません。必要な場合は、キー取得とキーコミットメントを使用するが、署名を使用しないアルゴリズムスイートをお勧めします。ただし、アプリケーションパフォーマンスプロファイルがアルゴリズムスイートの使用をサポートしている場合は、キーコミットメント、キー取得、および署名を使用するアルゴリズムスイートを使用することがベストプラクティスです。

**署名を使用しない AES-GCM**  
署名を使用しないアルゴリズムスイートには、信頼性と非否認を提供する ECDSA 署名がありません。これらのスイートは、データを暗号化するユーザーと復号するユーザーが同じほど信頼できる場合に使用します。  
署名を使用しないアルゴリズムスイートを使用するときは、キー取得とキーコミットメントを使用するアルゴリズムスイートの選択をお勧めします。

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

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