

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

# AWS Encryption SDK アルゴリズムリファレンス
<a name="algorithms-reference"></a>


|  | 
| --- |
|  このページの情報は、 AWS Encryption SDKと互換性のある独自の暗号化ライブラリを構築するためのリファレンスです。互換性のある独自の暗号化ライブラリを構築しない場合は、この情報は必要ありません。 サポートされているプログラミング言語のいずれか AWS Encryption SDK で を使用するには、「」を参照してください[プログラミング言語](programming-languages.md)。 適切な AWS Encryption SDK 実装の要素を定義する仕様については、GitHub の[AWS Encryption SDK 「仕様](https://github.com/awslabs/aws-encryption-sdk-specification/)」を参照してください。  | 

と互換性のある暗号文を読み書きできる独自のライブラリを構築する場合は AWS Encryption SDK、 がサポートされているアルゴリズムスイート AWS Encryption SDK を実装して raw データを暗号化する方法を理解する必要があります。

は、次のアルゴリズムスイート AWS Encryption SDK をサポートしています。すべての AES-GCM アルゴリズムスイートには 12 バイトの[初期化ベクトル](IV-reference.md)および 16 バイトの AES-GCM 認証タグがあります。デフォルトのアルゴリズムスイートは、 AWS Encryption SDK バージョンと選択したキーコミットメントポリシーによって異なります。詳細については、「[Commitment policy and algorithm suite](troubleshooting-migration.md#configuration-conflict_1)」を参照してください。


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

| アルゴリズム ID | メッセージ形式バージョン | 暗号化アルゴリズム | データキーの長さ (ビット) | キー導出アルゴリズム | 署名アルゴリズム | キーコミットメントアルゴリズム | アルゴリズムスイートのデータ長 (バイト) | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| 05 78 | 0x02 | AES-GCM | 256 | SHA-512 を使用する HKDF | P-384 および SHA-384 を使用する ECDSA | SHA-512 を使用する HKDF | 32 (キーコミットメント) | 
| 04 78 | 0x02 | AES-GCM | 256 | SHA-512 を使用する HKDF | なし | SHA-512 を使用する HKDF | 32 (キーコミットメント) | 
| 03 78 | 0x01 | AES-GCM | 256 | SHA-384 を使用する HKDF | P-384 および SHA-384 を使用する ECDSA | なし | 該当なし | 
| 03 46 | 0x01 | AES-GCM | 192 | SHA-384 を使用する HKDF | P-384 および SHA-384 を使用する ECDSA | なし | 該当なし | 
| 02 14 | 0x01 | AES-GCM | 128 | SHA-256 を使用する HKDF | P-256 および SHA-256 を使用する ECDSA | なし | 該当なし | 
| 01 78 | 0x01 | AES-GCM | 256 | SHA-256 を使用する HKDF | なし | なし | 該当なし | 
| 01 46 | 0x01 | AES-GCM | 192 | SHA-256 を使用する HKDF | なし | なし | 該当なし | 
| 01 14 | 0x01 | AES-GCM | 128 | SHA-256 を使用する HKDF | なし | なし | 該当なし | 
| 00 78 | 0x01 | AES-GCM | 256 | なし | なし | なし | 該当なし | 
| 00 46 | 0x01 | AES-GCM | 192 | なし | なし | なし | 該当なし | 
| 00 14 | 0x01 | AES-GCM | 128 | なし | なし | なし | 該当なし | 

**アルゴリズム ID**  
アルゴリズム実装を一意に識別する 2 バイトの 16 進値。この値は、暗号化テキストの[メッセージヘッダー](message-format.md#header-structure)に保存されます。

**メッセージ形式バージョン**  
メッセージ形式のバージョン。キーコミットメントがあるアルゴリズムスイートでは、メッセージ形式バージョン 2 (0x02) を使用します。キーコミットメントがないアルゴリズムスイートでは、メッセージ形式バージョン 1 (0x01) を使用します。

**アルゴリズムスイートのデータ長**  
アルゴリズムスイートに固有のデータの長さ (バイト単位)。このフィールドは、メッセージ形式バージョン 2 (0x02) でのみサポートされます。メッセージ形式バージョン 2 (0x02) では、このデータはメッセージヘッダーの `Algorithm suite data` フィールドに表示されます。[キーコミットメント](concepts.md#key-commitment)をサポートするアルゴリズムスイートでは、キーコミットメント文字列に 32 バイトを使用します。詳細については、このリストの**キーコミットメントアルゴリズム**を参照してください。

**データキーの長さ**  
[データキー](concepts.md#DEK)の長さ (ビット単位)。 AWS Encryption SDK では、256 ビット、192 ビット、128 ビットのキーをサポートしています。データキーは、[キーリング](concepts.md#keyring)またはマスターキーによって生成されます。  
一部の実装では、このデータキーは HMAC ベースの抽出および展開キー取得関数 (HKDF) への入力として使用されます。HKDF の出力は、暗号化アルゴリズムのデータ暗号化キーとして使用されます。詳細については、このリストの**キー取得アルゴリズム**を参照してください。

**暗号化アルゴリズム**  
使用する暗号化アルゴリズムの名前とモード。 AWS Encryption SDK のアルゴリズムスイートでは、Advanced Encryption Standard (AES) 暗号化アルゴリズムを Galois/Counter Mode (GCM) と併用します。

**キーコミットメントアルゴリズム**  
キーコミットメント文字列の計算に使用するアルゴリズム。出力は、メッセージヘッダーの `Algorithm suite data` フィールドに保存され、キーコミットメントのデータキーの検証に使用されます。  
アルゴリズムスイートへのキーコミットメントの追加に関する技術的な説明については、Cryptology ePrint Archiveの「[Key Committing AEADs](https://eprint.iacr.org/2020/1153)」を参照してください。

**キー導出アルゴリズム**  
データ暗号化キーを取得するために使用される、HMAC ベースの抽出および展開キー取得関数 (HKDF)。は [RFC 5869 で定義された HKDF ](https://tools.ietf.org/html/rfc5869) AWS Encryption SDK を使用します。  
**キーコミットメントのないアルゴリズムスイート** (アルゴリズム ID `01xx` – `03xx`)  
+ 使用されるハッシュ関数は、SHA-384 または SHA-256 のいずれかで、アルゴリズムスイートによって決まります。
+ 抽出ステップの場合
  + ソルトは使用されません。RFC の場合、ソルトはゼロの文字列に設定されます。文字列の長さはハッシュ関数出力の長さと同じです。つまり、SHA-384 に対して 48 バイト、SHA-256 に対して 32 バイトです。
  + 入力キーマテリアルは、キーリングまたはマスターキープロバイダーからのデータキーです。
+ 展開ステップの場合
  + 入力疑似ランダムキーは抽出ステップからの出力です。
  + 入力情報は、アルゴリズム ID とメッセージ ID の連結です (この順序)。
  + 出力キーマテリアルの長さは**データキーの長さ**です。この出力は、暗号化アルゴリズムのデータ暗号化キーとして使用されます。
**キーコミットメントがあるアルゴリズムスイート** (アルゴリズム ID `04xx` と `05xx`)  
+ 使用されるハッシュ関数は SHA-512 です。
+ 抽出ステップの場合
  + ソルトは 256 ビットの暗号化ランダム値です。[メッセージ形式バージョン 2](message-format.md) (0x02) の場合、この値は `MessageID` フィールドに保存されます。
  + 初期キーマテリアルは、キーリングまたはマスターキープロバイダーからのデータキーです。
+ 展開ステップの場合
  + 入力疑似ランダムキーは抽出ステップからの出力です。
  + キーラベルは、ビッグエンディアンバイト順序の `DERIVEKEY` 文字列を UTF-8 でエンコードしたバイトです。
  + 入力情報は、アルゴリズム ID とキー ラベルの連結です (この順序)。
  + 出力キーマテリアルの長さは**データキーの長さ**です。この出力は、暗号化アルゴリズムのデータ暗号化キーとして使用されます。

**メッセージ形式バージョン**  
アルゴリズムスイートで使用するメッセージ形式のバージョン。詳細については、「[メッセージ形式のリファレンス](message-format.md)」を参照してください。

**署名アルゴリズム**  
暗号化テキストのヘッダーと本文への[デジタル署名](concepts.md#digital-sigs)の生成に使用される署名アルゴリズム。は、楕円曲線デジタル署名アルゴリズム (ECDSA) を以下の詳細とともに AWS Encryption SDK 使用します。  
+ 使用される楕円曲線のは、P-384 または P-256 のいずれかで、アルゴリズム ID によって指定されます。これらの曲線は、[Digital Signature Standard (DSS) (FIPS PUB 186-4)](http://doi.org/10.6028/NIST.FIPS.186-4) で定義されています。
+ 使用されるハッシュ関数は、SHA-384 (P-384 曲線を使用) または SHA-256 (P-256 曲線を使用) です。