メインコンテンツまでスキップ

4. Requirements on AEAD Algorithm Specifications (AEAD アルゴリズム仕様に対する要件)

4. Requirements on AEAD Algorithm Specifications (AEAD アルゴリズム仕様に対する要件)

各 AEAD アルゴリズムは, 固定の鍵長 K_LEN の鍵のみを受け入れなければならず, 入力として与えられる鍵に特定のデータ形式を要求してはならない。そのような構造 (たとえば特定のパリティ検査形式の部分鍵) を要するアルゴリズムは, 内部でそれを提供する必要がある。

各 AEAD アルゴリズムは, 長さがゼロから P_MAX オクテットまで (両端含む) の任意の平文を受け入れなければならない。ここで P_MAX の値はそのアルゴリズムに固有である。P_MAX の値はゼロより大きくなければならず, 少なくとも 65,536 (2^16) オクテットであるべきである。このサイズはネットワークデータパケットの典型的な上限である。他のアプリケーションではさらに大きな P_MAX を用いてもよいため, 汎用アルゴリズムがより高い値を支援することが望ましい。

各 AEAD アルゴリズムは, 長さがゼロから A_MAX オクテットまで (両端含む) の任意の関連データを受け入れなければならない。ここで A_MAX の値はそのアルゴリズムに固有である。A_MAX の値はゼロより大きくなければならず, 少なくとも 65,536 (2^16) オクテットであるべきである。他のアプリケーションではさらに大きな A_MAX を用いてもよいため, 汎用アルゴリズムがより高い値を支援することが望ましい。

各 AEAD アルゴリズムは, 長さが N_MIN から N_MAX オクテットまで (両端含む) の任意のノンスを受け入れなければならない。ここで N_MIN と N_MAX の値はそのアルゴリズムに固有である。N_MAX と N_MIN の値は等しくしてもよい。各アルゴリズムは, 12 オクテットの長さのノンスを受け入れるべきである。以下で説明する randomized または stateful アルゴリズムは, N_MAX の値をゼロにしてもよい。

AEAD アルゴリズムは, 暗号文出力を任意の方法で構造化してもよい。たとえば, 暗号文に認証タグを含めてもよい。各アルゴリズムは, 効率的な処理に適した構造を選ぶべきである。

Authenticated Encryption アルゴリズムは, たとえば暗号文出力に組み込まれる内部 Initialization Vector (初期化ベクトル) の生成のために, 乱数源を組み込んだり利用したりしてもよい。この種の AEAD アルゴリズムを randomized と呼ぶ。ただし, 暗号化のみがランダムであり, 復号は常に決定的である, ことに注意。randomized アルゴリズムは, N_MAX の値をゼロに等しくしてもよい。

Authenticated Encryption アルゴリズムは, たとえばアルゴリズムによる内部ノンスとして用いられる異なる値の構成を可能にするため, 暗号化操作の呼び出し間で維持される内部状態情報を組み込んでもよい。この種の AEAD アルゴリズムを stateful と呼ぶ。この方法は, アプリケーションが長さゼロのノンスを入力してもアルゴリズムが良好なセキュリティを提供するために用いられてもよい。stateful アルゴリズムは, N_MAX の値をゼロに等しくしてもよい。

AEAD アルゴリズムの仕様は, 上で定義した K_LEN, P_MAX, A_MAX, N_MIN, N_MAX の値を含めなければならない。さらに, 可能な最大の暗号文のオクテット数, ここでは C_MAX と表記する, を指定しなければならない。

各 AEAD アルゴリズムは, 平文の長さを暗号文の長さに関連付ける記述を提供しなければならない。この関係は, 認証強度パラメータ (たとえば認証タグ長) などの外部パラメータに依存してはならない。そのような依存は, AEAD レジストリの情報だけでは相互運用性を保証するのに不十分な状況を生じさせ, アルゴリズムの利用を複雑にする。

各 AEAD アルゴリズム仕様は, ノンス値の不用意な再利用から生じるセキュリティの劣化が何であるかを記述すべきである。

各 AEAD アルゴリズム仕様は, 詳細なセキュリティ解析への参照を提供すべきである。本書は特定のセキュリティモデルを規定しない。文献では複数の異なるモデルが用いられているからである。セキュリティ解析は, セキュリティモデルを定義するか参照すべきである。

上で定義されるとおり randomized または stateful であるアルゴリズムは, それらの用語を用いて自身を記述すべきである。