AWS Encryption SDK アルゴリズムリファレンス - AWS Encryption SDK

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

AWS Encryption SDK アルゴリズムリファレンス

このページの情報は、 AWS Encryption SDKと互換性のある独自の暗号化ライブラリを構築するためのリファレンスです。互換性のある独自の暗号化ライブラリを構築しない場合は、この情報は必要ありません。

サポートされているプログラミング言語のいずれか AWS Encryption SDK で を使用するには、「」を参照してくださいプログラミング言語

適切な AWS Encryption SDK 実装の要素を定義する仕様については、GitHub のAWS Encryption SDK 「仕様」を参照してください。

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

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

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 進値。この値は、暗号化テキストのメッセージヘッダーに保存されます。

メッセージ形式バージョン

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

アルゴリズムスイートのデータ長

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

データキーの長さ

データキーの長さ (ビット単位)。 AWS Encryption SDK では、256 ビット、192 ビット、128 ビットのキーをサポートしています。データキーは、キーリングまたはマスターキーによって生成されます。

一部の実装では、このデータキーは HMAC ベースの抽出および展開キー取得関数 (HKDF) への入力として使用されます。HKDF の出力は、暗号化アルゴリズムのデータ暗号化キーとして使用されます。詳細については、このリストのキー取得アルゴリズムを参照してください。

暗号化アルゴリズム

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

キーコミットメントアルゴリズム

キーコミットメント文字列の計算に使用するアルゴリズム。出力は、メッセージヘッダーの Algorithm suite data フィールドに保存され、キーコミットメントのデータキーの検証に使用されます。

アルゴリズムスイートへのキーコミットメントの追加に関する技術的な説明については、Cryptology ePrint Archiveの「Key Committing AEADs」を参照してください。

キー導出アルゴリズム

データ暗号化キーを取得するために使用される、HMAC ベースの抽出および展開キー取得関数 (HKDF)。は RFC 5869 で定義されている HKDF AWS Encryption SDK を使用します。

キーコミットメントのないアルゴリズムスイート (アルゴリズム ID 01xx03xx)

  • 使用されるハッシュ関数は、SHA-384 または SHA-256 のいずれかで、アルゴリズムスイートによって決まります。

  • 抽出ステップの場合

    • ソルトは使用されません。RFC の場合、ソルトはゼロの文字列に設定されます。文字列の長さはハッシュ関数出力の長さと同じです。つまり、SHA-384 に対して 48 バイト、SHA-256 に対して 32 バイトです。

    • 入力キーマテリアルは、キーリングまたはマスターキープロバイダーからのデータキーです。

  • 展開ステップの場合

    • 入力疑似ランダムキーは抽出ステップからの出力です。

    • 入力情報は、アルゴリズム ID とメッセージ ID の連結です (この順序)。

    • 出力キーマテリアルの長さはデータキーの長さです。この出力は、暗号化アルゴリズムのデータ暗号化キーとして使用されます。

キーコミットメントがあるアルゴリズムスイート (アルゴリズム ID 04xx05xx)

  • 使用されるハッシュ関数は SHA-512 です。

  • 抽出ステップの場合

    • ソルトは 256 ビットの暗号化ランダム値です。メッセージ形式バージョン 2 (0x02) の場合、この値は MessageID フィールドに保存されます。

    • 初期キーマテリアルは、キーリングまたはマスターキープロバイダーからのデータキーです。

  • 展開ステップの場合

    • 入力疑似ランダムキーは抽出ステップからの出力です。

    • キーラベルは、ビッグエンディアンバイト順序の DERIVEKEY 文字列を UTF-8 でエンコードしたバイトです。

    • 入力情報は、アルゴリズム ID とキー ラベルの連結です (この順序)。

    • 出力キーマテリアルの長さはデータキーの長さです。この出力は、暗号化アルゴリズムのデータ暗号化キーとして使用されます。

メッセージ形式バージョン

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

署名アルゴリズム

暗号化テキストのヘッダーと本文へのデジタル署名の生成に使用される署名アルゴリズム。は、楕円曲線デジタル署名アルゴリズム (ECDSA) を以下の詳細とともに AWS Encryption SDK 使用します。

  • 使用される楕円曲線のは、P-384 または P-256 のいずれかで、アルゴリズム ID によって指定されます。これらの曲線は、Digital Signature Standard (DSS) (FIPS PUB 186-4) で定義されています。

  • 使用されるハッシュ関数は、SHA-384 (P-384 曲線を使用) または SHA-256 (P-256 曲線を使用) です。