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

7.2.1. Input Length Restrictions (入力長の制限)

7.2.1. Input Length Restrictions (入力長の制限)

この文書は上記にリストされた KDF に基づいて LabeledExtract() および LabeledExpand() を定義します。これらの関数は KDF の Extract() および Expand() 関数を呼び出す前に, それぞれの入力 ikm および info にプレフィックスを追加します。これにより, 入力 psk, psk_id, info, exporter_context, ikm (すなわち HPKE アプリケーションによって提供される可変長パラメータ) に利用可能な最大入力長が減少します。次の表は, この文書で定義される KDF に対するこれらのフィールドの最大許容長を, バイト単位の包含境界としてリストしています:

InputHKDF-SHA256HKDF-SHA384HKDF-SHA512
psk2^61 - 882^125 - 1522^125 - 152
psk_id2^61 - 932^125 - 1572^125 - 157
info2^61 - 912^125 - 1552^125 - 155
exporter_context2^61 - 1202^125 - 2002^125 - 216
ikm (DeriveKeyPair)2^61 - 842^125 - 1482^125 - 148

表 4: アプリケーション入力制限

これは制限が基礎となるハッシュ関数の最大入力長よりもわずかに小さいだけであることを示しています; これらの制限は大きく, 実際のアプリケーションで達成される可能性は低いです。新しい KDF を定義する将来の仕様は, これらの可変長パラメータの境界を指定しなければなりません。

これらの値の推奨制限は 64 バイトです。これにより, メモリ割り当てを避けるためにこれらの入力用に静的にメモリを割り当てる実装との相互運用性が可能になります。

psk, psk_id, info, および ikm (LabeledExtract() への入力) の値は次の式で計算されました:

max_size_hash_input - Nb - size_version_label -
size_suite_id - size_input_label

exporter_context (LabeledExpand() への入力) の値は次の式で計算されました:

max_size_hash_input - Nb - Nh - size_version_label -
size_suite_id - size_input_label - 2 - 1

これらの式において, max_size_hash_input は基礎となるハッシュ関数の最大入力長 (バイト単位), Nb は基礎となるハッシュ関数のブロックサイズ (バイト単位), size_version_label は "HPKE-v1" のサイズ (バイト単位) で 7 に等しく, size_suite_id は suite_id のサイズ (バイト単位) で DHKEM に対して 5 (ikm に関連), HPKE の残りに対して 10 (psk, psk_id, info, および exporter_context に関連), size_input_label は LabeledExtract() または LabeledExpand() へのパラメータとして使用されるラベルのサイズ (バイト単位) で, この文書のすべてのラベルにわたって最大 13 です。