

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

# AWS Encryption SDK リファレンス
<a name="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 は、[サポートされているアルゴリズム](supported-algorithms.md)を使用して、暗号化されたデータおよび対応する暗号化されたデータキーを含む単一のデータ構造または*メッセージを*返します。以下のトピックでは、アルゴリズムおよびデータ構造について説明します。この情報を使用して、この SDK と互換性のある暗号化テキストを読み書きできるライブラリを構築します。

**Topics**
+ [メッセージ形式のリファレンス](message-format.md)
+ [メッセージ形式の例](message-format-examples.md)
+ [本文 AAD のリファレンス](body-aad-reference.md)
+ [アルゴリズムのリファレンス](algorithms-reference.md)
+ [初期化ベクトルのリファレンス](IV-reference.md)
+ [AWS KMS 階層キーリングの技術的な詳細](hierarchical-keyring-details.md)

# AWS Encryption SDK メッセージ形式のリファレンス
<a name="message-format"></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/)」を参照してください。  | 

の暗号化オペレーションは、[暗号化されたデータ (暗号文) とすべての暗号化されたデータキーを含む単一のデータ構造または暗号化されたメッセージ](concepts.md#message) AWS Encryption SDK を返します。このデータ構造を理解したり、それを読み書きするライブラリを構築するには、メッセージ形式を理解しておく必要があります。

メッセージ形式は少なくとも 2 つの部分 (*ヘッダー*と*本文*) で構成されます。場合によって、メッセージ形式は 3 番目の部分、*フッター* で構成されます。メッセージ形式は、ビッグエンディアン形式とも呼ばれる、ネットワークバイト順で順序付けられたバイトシーケンスを定義します。メッセージ形式は、ヘッダーで始まり、その後に本文、続いてフッターの順に続きます (ある場合)。

 AWS Encryption SDK によってサポートされる[アルゴリズムスイート](algorithms-reference.md)では、2 つのメッセージ形式バージョンのいずれかを使用します。[キーコミットメント](concepts.md#key-commitment)がないアルゴリズムスイートでは、メッセージ形式バージョン 1 を使用します。キーコミットメントがあるアルゴリズムスイートでは、メッセージ形式バージョン 2 を使用します。

**Topics**
+ [ヘッダーの構造](#header-structure)
+ [本文の構造](#body-structure)
+ [フッターの構造](#footer-structure)

## ヘッダーの構造
<a name="header-structure"></a>

メッセージヘッダーには、暗号化されたデータキーと、メッセージ本文の構成に関する情報が含まれています。以下の表では、メッセージ形式バージョン 1 および 2 のヘッダーを形成するフィールドについて説明します。バイトは示されている順に追加されます。

「**なし**」は、フィールドがそのバージョンのメッセージ形式に存在しないことを示します。**太字テキスト**は、各バージョンで異なる値を示します。

**注記**  
この表のすべてのデータを表示するには、水平または垂直にスクロールする必要があります。


**ヘッダーの構造**  

| フィールド | メッセージ形式バージョン 1長さ (バイト) | メッセージ形式バージョン 2長さ (バイト) | 
| --- | --- | --- | 
| [Version](#header-version) | 1 | 1 | 
| [Type](#header-type) | 1 | [なし] | 
| [Algorithm ID](#header-algorithm-id) | 2 | 2 | 
| [Message ID](#header-message-id) | 16 | 32 | 
| [AAD Length](#header-aad-length) | 2[暗号化コンテキスト](concepts.md#encryption-context)が空の場合、2 バイトの AAD の長さフィールドの値は 0 です。 | 2[暗号化コンテキスト](concepts.md#encryption-context)が空の場合、2 バイトの AAD の長さフィールドの値は 0 です。 | 
| [AAD](#header-aad) | 変数。　 このフィールドの長さは、前の 2 バイト (AAD の長さフィールド) に表示されます。 [暗号化コンテキスト](concepts.md#encryption-context)が空の場合、ヘッダーに AAD フィールドはありません。 |  変数。　 このフィールドの長さは、前の 2 バイト (AAD の長さフィールド) に表示されます。 [暗号化コンテキスト](concepts.md#encryption-context)が空の場合、ヘッダーに AAD フィールドはありません。  | 
| [Encrypted Data Key Count](#header-data-key-count) | 2 | 2 | 
| [Encrypted Data Key(s)](#header-data-keys) | 変数。　 暗号化されたデータキーの数とそれぞれの長さによって決まります。 | 変数。　 暗号化されたデータキーの数とそれぞれの長さによって決まります。 | 
| [Content Type](#header-content-type) | 1 | 1 | 
| [Reserved](#header-reserved) | 4 | [なし] | 
| [IV Length](#header-iv-length) | 1 | [なし] | 
| [Frame Length](#header-frame-length) | 4 | 4 | 
| [Algorithm Suite Data](#algorithm-suite-data) | [なし] | 変数。　 メッセージを生成した[アルゴリズム](algorithms-reference.md)によって決まります。 | 
| [Header Authentication](#header-authentication) | 変数。　 メッセージを生成した[アルゴリズム](algorithms-reference.md)によって決まります。 | 変数。　 メッセージを生成した[アルゴリズム](algorithms-reference.md)によって決まります。 | 

**バージョン**  
このメッセージ形式のバージョン。バージョンは 1 または 2 で、16 進数表記のバイト `01` または `02` としてエンコードされます。

**タイプ**  
このメッセージ形式のタイプ。タイプは構造の種類を示します。*カスタマー認証暗号化データ*として示されるタイプのみがサポートされています。そのタイプの値は 128 で、16 進数表記のバイト `80` でエンコードされます。  
このフィールドは、メッセージ形式バージョン 2 では存在しません。

**アルゴリズム ID**  
使用されるアルゴリズムの識別子。これは 16 ビットの符号なし整数として解釈される 2 バイトの値です。アルゴリズムの詳細については、「[AWS Encryption SDK アルゴリズムリファレンス](algorithms-reference.md)」を参照してください。

**メッセージ ID**  
メッセージを識別するランダムに生成された値。メッセージ ID｡  
+ 暗号化されたメッセージを一意に識別します。
+ メッセージヘッダーを、メッセージ本文に弱くバインドします。
+ 複数の暗号化されたメッセージでデータキーを安全に再利用するためのメカニズムを提供します。
+  AWS Encryption SDKでのデータキーの誤った再利用や失効を防ぎます。
この値は、メッセージ形式バージョン 1 で 128 ビット、バージョン 2 では 256 ビットです。

**AAD の長さ**  
追加認証データ (AAD) の長さ。これは、AAD を含むバイト数を指定する 16 ビットの符号なし整数として解釈される 2 バイトの値です。  
[暗号化コンテキスト](concepts.md#encryption-context)が空の場合、AAD の長さフィールドの値は 0 です。

**AAD**  
追加認証データ。AAD は、[暗号化コンテキスト](concepts.md#encryption-context)のエンコードです。キーと値の各ペアが UTF-8 エンコード文字の文字列のキーと値のペアの配列です。暗号化コンテキストはバイトシーケンスに変換され、AAD 値に使用されます。暗号化コンテキストが空の場合、ヘッダーに AAD フィールドはありません。  
[署名付きのアルゴリズム](algorithms-reference.md)を使用する場合、暗号化コンテキストにはキーと値のペア `{'aws-crypto-public-key', Qtxt}` が含まれている必要があります。Qtxt は、[SEC 1 バージョン 2.0](http://www.secg.org/sec1-v2.pdf) に基づいて圧縮され、その後 base64 でエンコードされた楕円曲線点 Q を表します。暗号化コンテキストには、追加の値を含めることができますが、構築された AAD の最大長は 2^16 - 1 バイトです。  
以下の表では、AAD を形成するフィールドについて説明します。キーと値のペアは、UTF-8 文字コードに基づいて昇順でキーごとにソートされます。バイトは示されている順に追加されます。    
**AAD の構造**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/encryption-sdk/latest/developer-guide/message-format.html)  
**キーと値のペアの数**  
AAD 内のキーと値のペアの数。これは、AAD でキーと値のペアの数を指定する 16 ビットの符号なし整数として解釈される 2 バイトの値です。AAD 内のキーと値のペアの最大数は 2^16 - 1 です。  
暗号化コンテキストが存在しない場合、または暗号化コンテキストが空の場合、このフィールドは AAD 構造内に存在しません。  
**キーの長さ**  
キーと値のペアのキーの長さ。これは、キーを含むバイト数を指定する 16 ビットの符号なし整数として解釈される 2 バイトの値です。  
**キー**  
キーと値のペアのキー。UTF-8 でエンコードされたバイトのシーケンスです。  
**値の長さ**  
キーと値のペアの値の長さ。これは、値を含むバイト数を指定する 16 ビットの符号なし整数として解釈される 2 バイトの値です。  
**値**  
キーと値のペアの値。UTF-8 でエンコードされたバイトのシーケンスです。

**暗号化されたデータキーの数**  
暗号化されたデータキーの数。これは、暗号化されたデータキーの数を指定する 16 ビットの符号なし整数として解釈される 2 バイトの値です。各メッセージの暗号化されたデータキーの最大数は 65,535 (2^16 - 1) です。

**暗号化されたデータキー (複数可)**  
暗号化されたデータキーのシーケンス。シーケンスの長さは暗号化されたデータキーの数とそれぞれの長さによって決まります。シーケンスには、少なくとも 1 つの暗号化されたデータキーが含まれています。  
以下の表では、暗号化された各データキーを形成するフィールドについて説明します。バイトは示されている順に追加されます。    
**暗号化されたデータキーの構造**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/encryption-sdk/latest/developer-guide/message-format.html)  
**キープロバイダー ID の長さ**  
キープロバイダー ID の長さ。これは、キープロバイダー ID を含むバイト数を指定する 16 ビットの符号なし整数として解釈される 2 バイトの値です。  
**キープロバイダー ID**  
キープロバイダー ID。これは、暗号化されたデータキーのプロバイダーを示すために使用され、拡張することを目的としています。  
**キープロバイダー情報の長さ**  
キープロバイダー情報の長さ。これは、キープロバイダー情報を含むバイト数を指定する 16 ビットの符号なし整数として解釈される 2 バイトの値です。  
**キープロバイダー情報**  
キープロバイダー情報 これはキープロバイダーによって決定されます。  
 AWS KMS がマスターキープロバイダーであるか、 AWS KMS キーリングを使用している場合、この値には の Amazon リソースネーム (ARN) が含まれます AWS KMS key。  
**暗号化されたデータキーの長さ**  
暗号化されたデータキーの長さ。これは、暗号化されたデータキーを含むバイト数を指定する 16 ビットの符号なし整数として解釈される 2 バイトの値です。  
**暗号化されたデータキー**  
暗号化されたデータキー これは、キープロバイダーによって暗号化されたデータ暗号化キーです。

**コンテンツタイプ**  
暗号化されたデータのタイプ (フレーム化されていないデータまたはフレーム化されたデータ)。  
可能な限り、フレーム化されたデータを使用してください。は、レガシー使用のためにのみフレーム化されていないデータ AWS Encryption SDK をサポートします。の一部の言語実装では、フレーム化されていない暗号文を生成 AWS Encryption SDK できます。サポートされているすべての言語実装では、フレーム化された暗号化テキストとフレーム化されていない暗号化文書を復号化できます。
フレーム化されたデータは同じ長さのパートに分割されます。各パートは別々に暗号化されます。フレーム化されたコンテンツはタイプ 2 で、16 進数表記のバイト `02` としてエンコードされます。  
フレーム化されていないデータは分割されず、1 つの暗号化された BLOB になります。フレーム化されていないコンテンツはタイプ 1 で、16 進数表記のバイト `01` としてエンコードされます。

**予約済み**  
予約された 4 バイトのシーケンスです。この値は、0 である必要があります。これは 16 進数でバイト `00 00 00 00` としてエンコードされます (つまり、0 と等しい 4 バイトシーケンスの 32 ビット整数値)。  
このフィールドは、メッセージ形式バージョン 2 では存在しません。

**IV の長さ**  
初期化ベクトル (IV) の長さ。これは、IV を含むバイト数を指定する 8 ビットの符号なし整数として解釈される 1 バイトの値です。この値はメッセージを生成した[アルゴリズム](algorithms-reference.md)の IV バイト値によって決まります。  
このフィールドはメッセージ形式バージョン 2 には存在しません。バージョン 2 では、メッセージヘッダーで確定的 IV 値を使用するアルゴリズムスイートのみがサポートされます。

**フレームの長さ**  
フレーム化されたデータの各フレームの長さ。これは、各フレームのバイト数を指定する 32 ビットの符号なし整数として解釈される 4 バイトの値です。データがフレーム化されていないとき、つまり `Content Type` フィールドが 1 であるとき、この値は 0 である必要があります。  
可能な限り、フレーム化されたデータを使用してください。は、レガシー使用のためにのみフレーム化されていないデータ AWS Encryption SDK をサポートします。の一部の言語実装では、フレーム化されていない暗号文を生成 AWS Encryption SDK できます。サポートされているすべての言語実装では、フレーム化された暗号化テキストとフレーム化されていない暗号化文書を復号化できます。

**アルゴリズムスイートデータ**  
メッセージを生成した[アルゴリズム](algorithms-reference.md)が必要とする補足データ。長さと内容はアルゴリズムによって決定されます。その長さは 0 になる場合があります。  
このフィールドは、メッセージ形式バージョン 1 では存在しません。

**ヘッダー認証**  
ヘッダー認証は、メッセージを生成した[アルゴリズム](algorithms-reference.md)よって決まります。ヘッダー認証はヘッダー全体で計算されます。IV と認証タグで構成されています。バイトは示されている順に追加されます。    
**ヘッダー認証構造**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/encryption-sdk/latest/developer-guide/message-format.html)  
**IV**  
ヘッダー認証タグの計算に使用される初期化ベクトル (IV)。  
このフィールドは、メッセージ形式バージョン 2 のヘッダーでは存在しません。メッセージ形式バージョン 2 では、メッセージヘッダーで確定的 IV 値を使用するアルゴリズムスイートのみがサポートされます。  
**認証タグ**  
ヘッダーの認証値。ヘッダーのコンテンツ全体を認証するために使用されます。

## 本文の構造
<a name="body-structure"></a>

メッセージ本文には、*暗号化テキスト*という暗号化されたデータが含まれています。本文の構造は、コンテンツタイプ (フレーム化されていないコンテンツまたはフレーム化されたコンテンツ) によって異なります。以下のセクションでは、各コンテンツタイプのメッセージ本文の形式について説明します。メッセージ本文の構造は、メッセージ形式バージョン 1 および 2 で同じです。

**Topics**
+ [フレーム化されていないデータ](#body-no-framing)
+ [フレーム化されたデータ](#body-framing)

### フレーム化されていないデータ
<a name="body-no-framing"></a>

フレーム化されていないデータは、一意の IV と[本文 AAD](body-aad-reference.md) を含む 1 つの blob に暗号化されます。

**注記**  
可能な限り、フレーム化されたデータを使用してください。は、レガシー使用のためにのみフレーム化されていないデータ AWS Encryption SDK をサポートします。の一部の言語実装では、フレーム化されていない暗号文を生成 AWS Encryption SDK できます。サポートされているすべての言語実装では、フレーム化された暗号化テキストとフレーム化されていない暗号化文書を復号化できます。

以下の表に、フレーム化されていないデータを構成するフィールドを示します。バイトは示されている順に追加されます。


**フレーム化されていない本文構造**  

| フィールド | 長さ、バイト単位 | 
| --- | --- | 
| [IV](#body-unframed-iv) | 変数。　 ヘッダーの [IV Length](#header-iv-length) バイトで指定された値と同じです。 | 
| [Encrypted Content Length](#body-unframed-content-length) | 8 | 
| [Encrypted Content](#body-unframed-content) | 変数。　 前の 8 バイト (暗号化されたコンテンツの長さ) で指定された値と同じです。 | 
| [Authentication Tag](#body-unframed-tag) | 変数。　 使用された[アルゴリズムの実装](algorithms-reference.md)によって決定されます。 | 

**IV**  
[暗号化アルゴリズム ](algorithms-reference.md)で使用する初期化ベクトル (IV)。

**暗号化されたコンテンツの長さ**  
暗号化されたコンテンツ、または*暗号化テキスト*の長さ。これは、暗号化されたコンテンツを含むバイト数を指定する 64 ビットの符号なし整数として解釈される 8 バイトの値です。  
技術的には、最大許容値は 2^63-1、または 8 エクスビバイト (8 EiB) です。ただし、[実装されたアルゴリズム](algorithms-reference.md)によって設定されている制限が原因で、実際の最大値は 2^36-32、または 64 ギビバイト (64 GiB) です。  
この SDK の Java 実装では、言語の制限により、この値はさらに 2^31-1 または 2 ギビバイト (2 GiB) に制限されます。

**暗号化されたコンテンツ**  
[暗号化アルゴリズム](algorithms-reference.md)によって返される暗号化されたコンテンツ (暗号化テキスト)。

**認証タグ**  
本文の認証値。メッセージ本文を認証するために使用されます。

### フレーム化されたデータ
<a name="body-framing"></a>

フレーム化されたデータでは、プレーンテキストのデータは*フレーム*と呼ばれる同じ長さのパートに分割されます。は、一意の IV と[本文 AAD](body-aad-reference.md) を使用して各フレームを個別に AWS Encryption SDK 暗号化します。

**注記**  
可能な限り、フレーム化されたデータを使用してください。は、レガシー使用のためにのみフレーム化されていないデータ AWS Encryption SDK をサポートします。の一部の言語実装では、フレーム化されていない暗号文を生成 AWS Encryption SDK できます。サポートされているすべての言語実装では、フレーム化された暗号化テキストとフレーム化されていない暗号化文書を復号化できます。

 

[フレームの長さ](#header-frame-length) (フレーム内の[暗号化されたコンテンツ](#body-framed-regular-content)の長さ) はメッセージごとに異なります。フレームの最大バイト数は 2^32 - 1 です。メッセージの最大フレーム数は 2^32 - 1 です。

フレームには、*通常*と*最終*の 2 種類があります。すべてのメッセージは、最終フレームで構成するか、最終フレームを含める必要があります。

1 つのメッセージのすべての通常フレームの長さは同じになります。最終フレームの長さは異なることができます。

フレーム化されたデータのフレームの構成は、暗号化されたコンテンツの長さによって異なります。
+ **フレームの長さと同じである場合** — 暗号化されたコンテンツの長さが通常フレームの長さと同じ場合、メッセージはデータを含む通常フレームとそれに続く長さがゼロ (0) の最終フレームで構成されます。または、メッセージはデータを含む最終フレームのみで構成されます。この場合、最終フレームの長さは通常フレームと同じになります。
+ **フレームの長さの倍数である場合** — 暗号化されたコンテンツの長さが通常フレームの長さの倍数である場合、メッセージはデータを含む通常フレームとそれに続く長さがゼロ (0) の最終フレームで終わります。または、メッセージはデータを含む最終フレームで終わります。この場合、最終フレームの長さは通常フレームと同じになります。
+ **フレームの長さの倍数ではない場合** — 暗号化されたコンテンツの長さが通常フレームの長さの倍数ではない場合、最終フレームには残りのデータが含まれます。最終フレームの長さは通常フレームよりも短くなります。
+ **フレームの長さよりも短い場合** — 暗号化されたコンテンツの長さが通常フレームの長さよりも短い場合、メッセージはすべてのデータを含む最終フレームで構成されます。最終フレームの長さは通常フレームよりも短くなります。

以下の表では、フレームを形成するフィールドについて説明します。バイトは示されている順に追加されます。


**フレーム化された本文構造、標準フレーム**  

| フィールド | 長さ、バイト単位 | 
| --- | --- | 
| [Sequence Number](#body-framed-regular-sequence-number) | 4 | 
| [IV](#body-framed-regular-iv) | 変数。　 ヘッダーの [IV Length](#header-iv-length) バイトで指定された値と同じです。 | 
| [Encrypted Content](#body-framed-regular-content) | 変数。　 ヘッダーの [Frame Length](#header-frame-length) で指定された値と同じです。 | 
| [Authentication Tag](#body-framed-regular-tag) | 変数。　 ヘッダーの [Algorithm ID](#header-algorithm-id) で指定された、使用されているアルゴリズムによって決定されます。 | 

**シーケンス番号**  
フレームシーケンス番号。これはフレームの増分カウンタです。これは 32 ビットの符号なし整数として解釈される 4 バイトの値です。  
フレームデータはシーケンス番号 1 で始まる必要があります。後続のフレームは、順番に並んでいなければならず、1 つ前のフレームの増分を含む必要があります。それ以外の場合、復号プロセスは停止して、エラーが表示されます。

**IV**  
フレームの初期化ベクトル (IV)。SDK は、決定的メソッドを使用して、メッセージ内のフレームごとに異なる IV を構築します。その長さは使用される[アルゴリズムスイート](algorithms-reference.md)で指定されます。

**暗号化されたコンテンツ**  
[暗号化アルゴリズム](algorithms-reference.md)によって返されるフレームの暗号化されたコンテンツ (暗号化テキスト)。

**認証タグ**  
フレームの認証値。フレーム全体を認証するために使用されます。


**フレーム化された本文構造、最終フレーム**  

| フィールド | 長さ、バイト単位 | 
| --- | --- | 
| [Sequence Number End](#body-framed-final-sequence-number-end) | 4 | 
| [Sequence Number](#body-framed-final-sequence-number) | 4 | 
| [IV](#body-framed-final-iv) | 変数。　 ヘッダーの [IV Length](#header-iv-length) バイトで指定された値と同じです。 | 
| [Encrypted Content Length](#body-framed-final-content-length) | 4 | 
| [Encrypted Content](#body-framed-final-content) | 変数。　 前の 4 バイト (暗号化されたコンテンツの長さ) で指定された値と同じです。 | 
| [Authentication Tag](#body-framed-final-tag) | 変数。　 ヘッダーの [Algorithm ID](#header-algorithm-id) で指定された、使用されているアルゴリズムによって決定されます。 | 

**シーケンス番号の終了**  
最終フレームのインジケータです。その値は 16 進数表記の 4 バイト `FF FF FF FF` としてエンコードされます。

**シーケンス番号**  
フレームシーケンス番号。これはフレームの増分カウンタです。これは 32 ビットの符号なし整数として解釈される 4 バイトの値です。  
フレームデータはシーケンス番号 1 で始まる必要があります。後続のフレームは、順番に並んでいなければならず、1 つ前のフレームの増分を含む必要があります。それ以外の場合、復号プロセスは停止して、エラーが表示されます。

**IV**  
フレームの初期化ベクトル (IV)。SDK は、決定的メソッドを使用して、メッセージ内のフレームごとに異なる IV を構築します。IV の長さは[アルゴリズムスイート](algorithms-reference.md)によって指定されます。

**暗号化されたコンテンツの長さ**  
暗号化されたコンテンツの長さ。これは、フレームの暗号化されたコンテンツを含むバイト数を指定する 32 ビットの符号なし整数として解釈される 4 バイトの値です。

**暗号化されたコンテンツ**  
[暗号化アルゴリズム](algorithms-reference.md)によって返されるフレームの暗号化されたコンテンツ (暗号化テキスト)。

**認証タグ**  
フレームの認証値。フレーム全体を認証するために使用されます。

## フッターの構造
<a name="footer-structure"></a>

[署名付きのアルゴリズム](algorithms-reference.md)を使用する場合、メッセージ形式にはフッターが含まれます。メッセージフッターには、メッセージヘッダーおよび本文で計算された[デジタル署名](concepts.md#digital-sigs)が含まれています。以下の表では、フッターを形成するフィールドについて説明します。バイトは示されている順に追加されます。メッセージフッターの構造は、メッセージ形式バージョン 1 および 2 で同じです。


**フッターの構造**  

| フィールド | 長さ、バイト単位 | 
| --- | --- | 
| [Signature Length](#footer-signature-length) | 2 | 
| [Signature](#footer-signature) | 変数。　 前の 2 バイト (署名の長さ) で指定された値と同じです。 | 

**署名の長さ**  
署名の長さ。これは、署名を含むバイト数を指定する 16 ビットの符号なし整数として解釈される 2 バイトの値です。

**署名**  
署名

# AWS Encryption SDK メッセージ形式の例
<a name="message-format-examples"></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 メッセージ形式の例を示します。それぞれの例では、16 進数表記のローバイトを示し、それにこれらのバイト内容の説明文が続きます。

**Topics**
+ [フレーム化されたデータ (メッセージ形式バージョン 1)](#example-framed)
+ [フレーム化されたデータ (メッセージ形式バージョン 2)](#example-framed-2)
+ [フレーム化されていないデータ (メッセージ形式バージョン 1)](#example-nonframed)

## フレーム化されたデータ (メッセージ形式バージョン 1)
<a name="example-framed"></a>

以下の例は、[メッセージ形式バージョン 1](message-format.md) のフレーム化されたデータのメッセージ形式を示しています。

```
+--------+
| Header |
+--------+
01                                         Version (1.0)
80                                         Type (128, customer authenticated encrypted data)
0378                                       Algorithm ID (see アルゴリズムのリファレンス)
6E7C0FBD 4DF4A999 717C22A2 DDFE1A27        Message ID (random 128-bit value)
008E                                       AAD Length (142)
0004                                       AAD Key-Value Pair Count (4)
0005                                       AAD Key-Value Pair 1, Key Length (5)
30746869 73                                AAD Key-Value Pair 1, Key ("0This")
0002                                       AAD Key-Value Pair 1, Value Length (2)
6973                                       AAD Key-Value Pair 1, Value ("is")
0003                                       AAD Key-Value Pair 2, Key Length (3)
31616E                                     AAD Key-Value Pair 2, Key ("1an")
000A                                       AAD Key-Value Pair 2, Value Length (10)
656E6372 79774690 6F6E                     AAD Key-Value Pair 2, Value ("encryption")
0008                                       AAD Key-Value Pair 3, Key Length (8)
32636F6E 74657874                          AAD Key-Value Pair 3, Key ("2context")
0007                                       AAD Key-Value Pair 3, Value Length (7)
6578616D 706C65                            AAD Key-Value Pair 3, Value ("example")
0015                                       AAD Key-Value Pair 4, Key Length (21)
6177732D 63727970 746F2D70 75626C69        AAD Key-Value Pair 4, Key ("aws-crypto-public-key")
632D6B65 79
0044                                       AAD Key-Value Pair 4, Value Length (68)
416A4173 7569326F 7430364C 4B77715A        AAD Key-Value Pair 4, Value ("AjAsui2ot06LKwqZXDJnU/Aqc2vD+0OkpOZ1cc8Tg2qd7rs5aLTg7lvfUEW/86+/5w==")
58444A6E 552F4171 63327644 2B304F6B
704F5A31 63633854 67327164 37727335
614C5467 376C7666 5545572F 38362B2F
35773D3D
0002                                       EncryptedDataKeyCount (2)
0007                                       Encrypted Data Key 1, Key Provider ID Length (7)
6177732D 6B6D73                            Encrypted Data Key 1, Key Provider ID ("aws-kms")
004B                                       Encrypted Data Key 1, Key Provider Information Length (75)
61726E3A 6177733A 6B6D733A 75732D77        Encrypted Data Key 1, Key Provider Information ("arn:aws:kms:us-west-2:111122223333:key/715c0818-5825-4245-a755-138a6d9a11e6")
6573742D 323A3131 31313232 32323333
33333A6B 65792F37 31356330 3831382D
35383235 2D343234 352D6137 35352D31
33386136 64396131 316536
00A7                                       Encrypted Data Key 1, Encrypted Data Key Length (167)
01010200 7857A1C1 F7370545 4ECA7C83        Encrypted Data Key 1, Encrypted Data Key
956C4702 23DCE8D7 16C59679 973E3CED
02A4EF29 7F000000 7E307C06 092A8648
86F70D01 0706A06F 306D0201 00306806
092A8648 86F70D01 0701301E 06096086
48016503 04012E30 11040C3F F02C897B
7A12EB19 8BF2D802 0110803B 24003D1F
A5474FBC 392360B5 CB9997E0 6A17DE4C
A6BD7332 6BF86DAB 60D8CCB8 8295DBE9
4707E356 ADA3735A 7C52D778 B3135A47
9F224BF9 E67E87
0007                                       Encrypted Data Key 2, Key Provider ID Length (7)
6177732D 6B6D73                            Encrypted Data Key 2, Key Provider ID ("aws-kms")
004E                                       Encrypted Data Key 2, Key Provider Information Length (78)
61726E3A 6177733A 6B6D733A 63612D63        Encrypted Data Key 2, Key Provider Information ("arn:aws:kms:ca-central-1:111122223333:key/9b13ca4b-afcc-46a8-aa47-be3435b423ff")
656E7472 616C2D31 3A313131 31323232
32333333 333A6B65 792F3962 31336361
34622D61 6663632D 34366138 2D616134
372D6265 33343335 62343233 6666
00A7                                       Encrypted Data Key 2, Encrypted Data Key Length (167)
01010200 78FAFFFB D6DE06AF AC72F79B        Encrypted Data Key 2, Encrypted Data Key
0E57BD87 3F60F4E6 FD196144 5A002C94
AF787150 69000000 7E307C06 092A8648
86F70D01 0706A06F 306D0201 00306806
092A8648 86F70D01 0701301E 06096086
48016503 04012E30 11040C36 CD985E12
D218B674 5BBC6102 0110803B 0320E3CD
E470AA27 DEAB660B 3E0CE8E0 8B1A89E4
57DCC69B AAB1294F 21202C01 9A50D323
72EBAAFD E24E3ED8 7168E0FA DB40508F
556FBD58 9E621C
02                                         Content Type (2, framed data)
00000000                                   Reserved
0C                                         IV Length (12)
00000100                                   Frame Length (256)
4ECBD5C0 9899CA65 923D2347                 IV
0B896144 0CA27950 CA571201 4DA58029        Authentication Tag
+------+
| Body |
+------+
00000001                                   Frame 1, Sequence Number (1)
6BD3FE9C ADBCB213 5B89E8F1                 Frame 1, IV
1F6471E0 A51AF310 10FA9EF6 F0C76EDF        Frame 1, Encrypted Content
F5AFA33C 7D2E8C6C 9C5D5175 A212AF8E
FBD9A0C3 C6E3FB59 C125DBF2 89AC7939
BDEE43A8 0F00F49E ACBBD8B2 1C785089
A90DB923 699A1495 C3B31B50 0A48A830
201E3AD9 1EA6DA14 7F6496DB 6BC104A4
DEB7F372 375ECB28 9BF84B6D 2863889F
CB80A167 9C361C4B 5EC07438 7A4822B4
A7D9D2CC 5150D414 AF75F509 FCE118BD
6D1E798B AEBA4CDB AD009E5F 1A571B77
0041BC78 3E5F2F41 8AF157FD 461E959A
BB732F27 D83DC36D CC9EBC05 00D87803
57F2BB80 066971C2 DEEA062F 4F36255D
E866C042 E1382369 12E9926B BA40E2FC
A820055F FB47E428 41876F14 3B6261D9
5262DB34 59F5D37E 76E46522 E8213640
04EE3CC5 379732B5 F56751FA 8E5F26AD        Frame 1, Authentication Tag
00000002                                   Frame 2, Sequence Number (2)
F1140984 FF25F943 959BE514                 Frame 2, IV
216C7C6A 2234F395 F0D2D9B9 304670BF        Frame 2, Encrypted Content
A1042608 8A8BCB3F B58CF384 D72EC004
A41455B4 9A78BAC9 36E54E68 2709B7BD
A884C1E1 705FF696 E540D297 446A8285
23DFEE28 E74B225A 732F2C0C 27C6BDA2
7597C901 65EF3502 546575D4 6D5EBF22
1FF787AB 2E38FD77 125D129C 43D44B96
778D7CEE 3C36625F FF3A985C 76F7D320
ED70B1F3 79729B47 E7D9B5FC 02FCE9F5
C8760D55 7779520A 81D54F9B EC45219D
95941F7E 5CBAEAC8 CEC13B62 1464757D
AC65B6EF 08262D74 44670624 A3657F7F
2A57F1FD E7060503 AC37E197 2F297A84
DF1172C2 FA63CF54 E6E2B9B6 A86F582B
3B16F868 1BBC5E4D 0B6919B3 08D5ABCF
FECDC4A4 8577F08B 99D766A1 E5545670
A61F0A3B A3E45A84 4D151493 63ECA38F        Frame 2, Authentication Tag
FFFFFFFF                                   Final Frame, Sequence Number End
00000003                                   Final Frame, Sequence Number (3)
35F74F11 25410F01 DD9E04BF                 Final Frame, IV
0000008E                                   Final Frame, Encrypted Content Length (142)
F7A53D37 2F467237 6FBD0B57 D1DFE830        Final Frame, Encrypted Content
B965AD1F A910AA5F 5EFFFFF4 BC7D431C
BA9FA7C4 B25AF82E 64A04E3A A0915526
88859500 7096FABB 3ACAD32A 75CFED0C
4A4E52A3 8E41484D 270B7A0F ED61810C
3A043180 DF25E5C5 3676E449 0986557F
C051AD55 A437F6BC 139E9E55 6199FD60
6ADC017D BA41CDA4 C9F17A83 3823F9EC
B66B6A5A 80FDB433 8A48D6A4 21CB
811234FD 8D589683 51F6F39A 040B3E3B        Final Frame, Authentication Tag
+--------+
| Footer |
+--------+
0066                                       Signature Length (102)
30640230 085C1D3C 63424E15 B2244448        Signature
639AED00 F7624854 F8CF2203 D7198A28
758B309F 5EFD9D5D 2E07AD0B 467B8317
5208B133 02301DF7 2DFC877A 66838028
3C6A7D5E 4F8B894E 83D98E7C E350F424
7E06808D 0FE79002 E24422B9 98A0D130
A13762FF 844D
```

## フレーム化されたデータ (メッセージ形式バージョン 2)
<a name="example-framed-2"></a>

以下の例は、[メッセージ形式バージョン 2](message-format.md) のフレーム化されたデータのメッセージ形式を示しています。

```
+--------+
| Header |
+--------+
02                                         Version (2.0)
0578                                       Algorithm ID (see Algorithms reference)
122747eb 21dfe39b 38631c61 7fad7340
cc621a30 32a11cc3 216d0204 fd148459        Message ID (random 256-bit value)
008e                                       AAD Length (142)
0004                                       AAD Key-Value Pair Count (4)
0005                                       AAD Key-Value Pair 1, Key Length (5)
30546869 73                                AAD Key-Value Pair 1, Key ("0This")
0002                                       AAD Key-Value Pair 1, Value Length (2)
6973                                       AAD Key-Value Pair 1, Value ("is")
0003                                       AAD Key-Value Pair 2, Key Length (3)
31616e                                     AAD Key-Value Pair 2, Key ("1an")
000a                                       AAD Key-Value Pair 2, Value Length (10)
656e6372 79707469 6f6e                     AAD Key-Value Pair 2, Value ("encryption")
0008                                       AAD Key-Value Pair 3, Key Length (8)
32636f6e 74657874                          AAD Key-Value Pair 3, Key ("2context")
0007                                       AAD Key-Value Pair 3, Value Length (7)
6578616d 706c65                            AAD Key-Value Pair 3, Value ("example")
0015                                       AAD Key-Value Pair 4, Key Length (21)
6177732d 63727970 746f2d70 75626c69        AAD Key-Value Pair 4, Key ("aws-crypto-public-key")
632d6b65 79
0044                                       AAD Key-Value Pair 4, Value Length (68)
41746733 72703845 41345161 36706669        AAD Key-Value Pair 4, Value ("QXRnM3JwOEVBNFFhNnBmaTk3MUlTNTk3NHpOMnlZWE5vSmtwRHFPc0dIYkVaVDRqME5OMlFkRStmbTFVY01WdThnPT0=")
39373149 53353937 347a4e32 7959584e
6f4a6b70 44714f73 47486245 5a54346a
304e4e32 5164452b 666d3155 634d5675
38673d3d
0001                                       Encrypted Data Key Count (1)
0007                                       Encrypted Data Key 1, Key Provider ID Length (7)
6177732d 6b6d73                            Encrypted Data Key 1, Key Provider ID ("aws-kms")
004b                                       Encrypted Data Key 1, Key Provider Information Length (75)
61726e3a 6177733a 6b6d733a 75732d77        Encrypted Data Key 1, Key Provider Information ("arn:aws:kms:us-west-2:658956600833:key/b3537ef1-d8dc-4780-9f5a-55776cbb2f7f")
6573742d 323a3635 38393536 36303038
33333a6b 65792f62 33353337 6566312d
64386463 2d343738 302d3966 35612d35
35373736 63626232 663766
00a7                                       Encrypted Data Key 1, Encrypted Data Key Length (167)
01010100 7840f38c 275e3109 7416c107        Encrypted Data Key 1, Encrypted Data Key
29515057 1964ada3 ef1c21e9 4c8ba0bd
bc9d0fb4 14000000 7e307c06 092a8648
86f70d01 0706a06f 306d0201 00306806
092a8648 86f70d01 0701301e 06096086
48016503 04012e30 11040c39 32d75294
06063803 f8460802 0110803b 2a46bc23
413196d2 903bf1d7 3ed98fc8 a94ac6ed
e00ee216 74ec1349 12777577 7fa052a5
ba62e9e4 f2ac8df6 bcb1758f 2ce0fb21
cc9ee5c9 7203bb
02                                         Content Type (2, framed data)
00001000                                   Frame Length (4096)
05cd035b 29d5499d 4587570b 87502afe        Algorithm Suite Data (key commitment)
634f7b2c c3df2aa9 88a10105 4a2c7687 
76cb339f 2536741f 59a1c202 4f2594ab        Authentication Tag
+------+
| Body |
+------+
ffffffff                                   Final Frame, Sequence Number End
00000001                                   Final Frame, Sequence Number (1)
00000000 00000000 00000001                 Final Frame, IV
00000009                                   Final Frame, Encrypted Content Length (9)
fa6e39c6 02927399 3e                       Final Frame, Encrypted Content
f683a564 405d68db eeb0656c d57c9eb0        Final Frame, Authentication Tag
+--------+
| Footer |
+--------+
0067                                       Signature Length (103)
30650230 2a1647ad 98867925 c1712e8f        Signature 
ade70b3f 2a2bc3b8 50eb91ef 56cfdd18 
967d91d8 42d92baf 357bba48 f636c7a0
869cade2 023100aa ae12d08f 8a0afe85
e5054803 110c9ed8 11b2e08a c4a052a9
074217ea 3b01b660 534ac921 bf091d12
3657e2b0 9368bd
```

## フレーム化されていないデータ (メッセージ形式バージョン 1)
<a name="example-nonframed"></a>

以下の例は、フレーム化されていないデータのメッセージ形式を示しています。

**注記**  
可能な限り、フレーム化されたデータを使用してください。は、レガシー使用のためにのみフレーム化されていないデータ AWS Encryption SDK をサポートします。の一部の言語実装では、フレーム化されていない暗号文を生成 AWS Encryption SDK できます。サポートされているすべての言語実装では、フレーム化された暗号化テキストとフレーム化されていない暗号化文書を復号化できます。

```
+--------+
| Header |
+--------+
01                                         Version (1.0)
80                                         Type (128, customer authenticated encrypted data)
0378                                       Algorithm ID (see アルゴリズムのリファレンス)
B8929B01 753D4A45 C0217F39 404F70FF        Message ID (random 128-bit value)
008E                                       AAD Length (142)
0004                                       AAD Key-Value Pair Count (4)
0005                                       AAD Key-Value Pair 1, Key Length (5)
30746869 73                                AAD Key-Value Pair 1, Key ("0This")
0002                                       AAD Key-Value Pair 1, Value Length (2)
6973                                       AAD Key-Value Pair 1, Value ("is")
0003                                       AAD Key-Value Pair 2, Key Length (3)
31616E                                     AAD Key-Value Pair 2, Key ("1an")
000A                                       AAD Key-Value Pair 2, Value Length (10)
656E6372 79774690 6F6E                     AAD Key-Value Pair 2, Value ("encryption")
0008                                       AAD Key-Value Pair 3, Key Length (8)
32636F6E 74657874                          AAD Key-Value Pair 3, Key ("2context")
0007                                       AAD Key-Value Pair 3, Value Length (7)
6578616D 706C65                            AAD Key-Value Pair 3, Value ("example")
0015                                       AAD Key-Value Pair 4, Key Length (21)
6177732D 63727970 746F2D70 75626C69        AAD Key-Value Pair 4, Key ("aws-crypto-public-key")
632D6B65 79
0044                                       AAD Key-Value Pair 4, Value Length (68)
41734738 67473949 6E4C5075 3136594B        AAD Key-Value Pair 4, Value ("AsG8gG9InLPu16YKlqXTOD+nykG8YqHAhqecj8aXfD2e5B4gtVE73dZkyClA+rAMOQ==")
6C715854 4F442B6E 796B4738 59714841
68716563 6A386158 66443265 35423467
74564537 33645A6B 79436C41 2B72414D
4F513D3D
0002                                       Encrypted Data Key Count (2)
0007                                       Encrypted Data Key 1, Key Provider ID Length (7)
6177732D 6B6D73                            Encrypted Data Key 1, Key Provider ID ("aws-kms")
004B                                       Encrypted Data Key 1, Key Provider Information Length (75)
61726E3A 6177733A 6B6D733A 75732D77        Encrypted Data Key 1, Key Provider Information ("arn:aws:kms:us-west-2:111122223333:key/715c0818-5825-4245-a755-138a6d9a11e6")
6573742D 323A3131 31313232 32323333
33333A6B 65792F37 31356330 3831382D
35383235 2D343234 352D6137 35352D31
33386136 64396131 316536
00A7                                       Encrypted Data Key 1, Encrypted Data Key Length (167)
01010200 7857A1C1 F7370545 4ECA7C83        Encrypted Data Key 1, Encrypted Data Key
956C4702 23DCE8D7 16C59679 973E3CED
02A4EF29 7F000000 7E307C06 092A8648
86F70D01 0706A06F 306D0201 00306806
092A8648 86F70D01 0701301E 06096086
48016503 04012E30 11040C28 4116449A
0F2A0383 659EF802 0110803B B23A8133
3A33605C 48840656 C38BCB1F 9CCE7369
E9A33EBE 33F46461 0591FECA 947262F3
418E1151 21311A75 E575ECC5 61A286E0
3E2DEBD5 CB005D
0007                                       Encrypted Data Key 2, Key Provider ID Length (7)
6177732D 6B6D73                            Encrypted Data Key 2, Key Provider ID ("aws-kms")
004E                                       Encrypted Data Key 2, Key Provider Information Length (78)
61726E3A 6177733A 6B6D733A 63612D63        Encrypted Data Key 2, Key Provider Information ("arn:aws:kms:ca-central-1:111122223333:key/9b13ca4b-afcc-46a8-aa47-be3435b423ff")
656E7472 616C2D31 3A313131 31323232
32333333 333A6B65 792F3962 31336361
34622D61 6663632D 34366138 2D616134
372D6265 33343335 62343233 6666
00A7                                       Encrypted Data Key 2, Encrypted Data Key Length (167)
01010200 78FAFFFB D6DE06AF AC72F79B        Encrypted Data Key 2, Encrypted Data Key
0E57BD87 3F60F4E6 FD196144 5A002C94
AF787150 69000000 7E307C06 092A8648
86F70D01 0706A06F 306D0201 00306806
092A8648 86F70D01 0701301E 06096086
48016503 04012E30 11040CB2 A820D0CC
76616EF2 A6B30D02 0110803B 8073D0F1
FDD01BD9 B0979082 099FDBFC F7B13548
3CC686D7 F3CF7C7A CCC52639 122A1495
71F18A46 80E2C43F A34C0E58 11D05114
2A363C2A E11397
01                                         Content Type (1, nonframed data)
00000000                                   Reserved
0C                                         IV Length (12)
00000000                                   Frame Length (0, nonframed data)
734C1BBE 032F7025 84CDA9D0                 IV
2C82BB23 4CBF4AAB 8F5C6002 622E886C        Authentication Tag
+------+
| Body |
+------+
D39DD3E5 915E0201 77A4AB11                 IV
00000000 0000028E                          Encrypted Content Length (654)
E8B6F955 B5F22FE4 FD890224 4E1D5155        Encrypted Content
5871BA4C 93F78436 1085E4F8 D61ECE28
59455BD8 D76479DF C28D2E0B BDB3D5D3
E4159DFE C8A944B6 685643FC EA24122B
6766ECD5 E3F54653 DF205D30 0081D2D8
55FCDA5B 9F5318BC F4265B06 2FE7C741
C7D75BCC 10F05EA5 0E2F2F40 47A60344
ECE10AA7 559AF633 9DE2C21B 12AC8087
95FE9C58 C65329D1 377C4CD7 EA103EC1
31E4F48A 9B1CC047 EE5A0719 704211E5
B48A2068 8060DF60 B492A737 21B0DB21
C9B21A10 371E6179 78FAFB0B BAAEC3F4
9D86E334 701E1442 EA5DA288 64485077
54C0C231 AD43571A B9071925 609A4E59
B8178484 7EB73A4F AAE46B26 F5B374B8
12B0000C 8429F504 936B2492 AAF47E94
A5BA804F 7F190927 5D2DF651 B59D4C2F
A15D0551 DAEBA4AF 2060D0D5 CB1DA4E6
5E2034DB 4D19E7CD EEA6CF7E 549C86AC
46B2C979 AB84EE12 202FD6DF E7E3C09F
C2394012 AF20A97E 369BCBDA 62459D3E
C6FFB914 FEFD4DE5 88F5AFE1 98488557
1BABBAE4 BE55325E 4FB7E602 C1C04BEE
F3CB6B86 71666C06 6BF74E1B 0F881F31
B731839B CF711F6A 84CA95F5 958D3B44
E3862DF6 338E02B5 C345CFF8 A31D54F3
6920AA76 0BF8E903 552C5A04 917CCD11
D4E5DF5C 491EE86B 20C33FE1 5D21F0AD
6932E67C C64B3A26 B8988B25 CFA33E2B
63490741 3AB79D60 D8AEFBE9 2F48E25A
978A019C FE49EE0A 0E96BF0D D6074DDB
66DFF333 0E10226F 0A1B219C BE54E4C2
2C15100C 6A2AA3F1 88251874 FDC94F6B
9247EF61 3E7B7E0D 29F3AD89 FA14A29C
76E08E9B 9ADCDF8C C886D4FD A69F6CB4
E24FDE26 3044C856 BF08F051 1ADAD329
C4A46A1E B5AB72FE 096041F1 F3F3571B
2EAFD9CB B9EB8B83 AE05885A 8F2D2793
1E3305D9 0C9E2294 E8AD7E3B 8E4DEC96
6276C5F1 A3B7E51E 422D365D E4C0259C
50715406 822D1682 80B0F2E5 5C94
65B2E942 24BEEA6E A513F918 CCEC1DE3      Authentication Tag
+--------+
| Footer |
+--------+
0067                                     Signature Length (103)
30650230 7229DDF5 B86A5B64 54E4D627      Signature
CBE194F1 1CC0F8CF D27B7F8B F50658C0
BE84B355 3CED1721 A0BE2A1B 8E3F449E
1BEB8281 023100B2 0CB323EF 58A4ACE3
1559963B 889F72C3 B15D1700 5FB26E61
331F3614 BC407CEE B86A66FA CBF74D9E
34CB7E4B 363A38
```

# の本文追加認証データ (AAD) リファレンス AWS Encryption SDK
<a name="body-aad-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/)」を参照してください。  | 

暗号化オペレーションごとに、[AES-GCM アルゴリズム](algorithms-reference.md)に追加の認証データ (AAD) を指定する必要があります。これは、フレーム化された[本文データ](message-format.md#body-structure)とフレーム化されていない本文データの両方で必要です。AAD および Galois/Counter Mode での使用方法については、「[ブロック暗号の動作モード: Galois/Counter Mode (GCM) および GMAC の推奨事項](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf)」を参照してください。

以下の表では、本文 AAD を形成するフィールドについて説明します。バイトは示されている順に追加されます。


**本文 AAD 構造**  

| フィールド | 長さ、バイト単位 | 
| --- | --- | 
| [Message ID](#body-aad-message-id) | 16 | 
| [Body AAD Content](#body-aad-content) | 変数。　 以下のリストの本文 AAD コンテンツを参照してください。 | 
| [Sequence Number](#body-aad-sequence-number) | 4 | 
| [Content Length](#body-aad-content-length) | 8 | 

**メッセージ ID**  
メッセージヘッダーの同じ [Message ID](message-format.md#header-message-id) 値のセット。

**本文 AAD コンテンツ**  
使用する本文データのタイプによって決定される、UTF-8 でエンコードされた値。  
[フレーム化されていないデータ](message-format.md#body-no-framing)の場合、`AWSKMSEncryptionClient Single Block` の値を使用します。  
[フレーム化されたデータ](message-format.md#body-framing)の通常のフレーム。`AWSKMSEncryptionClient Frame` の値を使用します。  
[フレーム化されたデータ](message-format.md#body-framing)の最終フレーム。`AWSKMSEncryptionClient Final Frame` の値を使用します。

**シーケンス番号**  
32 ビットの符号なし整数として解釈される 4 バイトの値。  
[フレーム化されたデータ](message-format.md#body-framing)の場合、これはフレームのシーケンス番号です。  
[フレーム化されていないデータ](message-format.md#body-no-framing)の場合、1 の値 (4 バイトの 16 進数表記で `00 00 00 01` としてエンコード) を使用します。

**コンテンツの長さ**  
暗号化のためにアルゴリズムに提供されるプレーンテキストデータの長さ (バイト単位)。これは 64 ビットの符号なし整数として解釈される 8 バイトの値です。

# 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 曲線を使用) です。

# AWS Encryption SDK 初期化ベクトルリファレンス
<a name="IV-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/)」を参照してください。  | 

は、サポートされているすべての[アルゴリズムスイート](algorithms-reference.md)に必要な[初期化ベクトル](https://en.wikipedia.org/wiki/Initialization_vector) (IVs) AWS Encryption SDK を提供します。SDK は、フレームのシーケンス番号を使用して IV を構築し、同じメッセージ内の 2 つのフレームが同じ IV を持つことがないようにします。

各 96 ビット (12 バイト) IV は、以下の順序で連結された 2 つのビッグエンディアンバイト配列で構築されています。
+ 64 ビット: 0 (将来の利用のために予約されています)
+ 32 ビット: フレームシーケンス番号。ヘッダー認証タグの場合、この値はすべてゼロです。

[データキーキャッシュ](data-key-caching.md)が導入されるまで、 AWS Encryption SDK では、常に新しいデータキーを使用して各メッセージを暗号化し、すべての IV をランダムに生成していました。データキーが再利用されることはないので、ランダムに生成された IV は暗号論的に安全です。SDK で意図的にデータキーを再利用するデータキーキャッシュを導入した際、SDK が IV を生成する方法を変更しました。

メッセージ内で繰り返し使用できない決定的な IV を使用すると、単一のデータキーの下で安全に実行される呼び出しの数が大幅に増加します。さらに、キャッシュされたデータキーは常に[キー取得関数](https://en.wikipedia.org/wiki/Key_derivation_function)と合わせてアルゴリズムスイートを使用します。擬似ランダムキー取得関数で決定論的な IV を使用してデータキーから暗号化キーを取得すると、 は暗号化境界を超えることなく 2^32 メッセージを暗号化 AWS Encryption SDK できます。

# AWS KMS 階層キーリングの技術的な詳細
<a name="hierarchical-keyring-details"></a>

[AWS KMS 階層キーリング](use-hierarchical-keyring.md)は、未キューデータキーを使用して各メッセージを暗号化し、アクティブなブランチキーから派生した一意のラッピングキーを使用して各データキーを暗号化します。HMAC SHA-256 の擬似ランダム関数を使用したカウンターモードで[鍵導出](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-108r1.pdf)を使用して、次の入力で 32 バイトのラッピングキーを導出します。
+ 16 バイトのランダムソルト
+ アクティブなブランチキー
+ キープロバイダー識別子「aws-kms-hierarchy」の [UTF-8 でエンコードされた](https://en.wikipedia.org/wiki/UTF-8)値

階層キーリングは、導出されたラッピングキーと、16 バイトの認証タグと次の入力を含む AES-GCM-256 を使用して、プレーンテキストデータキーのコピーを暗号化します。
+ 導出されたラッピングキーは AES-GCM 暗号キーとして使用されます
+ データキーは AES-GCM メッセージとして使用されます
+ 12 バイトのランダム初期化ベクトル (IV) が AES-GCM IV として使用されます
+ 次のシリアル化された値を含む追加認証データ (AAD)。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/encryption-sdk/latest/developer-guide/hierarchical-keyring-details.html)