AWS Encryption SDK の初期化ベクトルのリファレンス - AWS Encryption SDK

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

AWS Encryption SDK の初期化ベクトルのリファレンス

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

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

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

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

各 96 ビット (12 バイト) IV は、以下の順序で連結された 2 つのビッグエンディアンバイト配列で構築されています。

  • 64 ビット: 0 (将来の利用のために予約されています)

  • 32 ビット: フレームシーケンス番号。ヘッダー認証タグの場合、この値はすべてゼロです。

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

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