2.4. Padding (for Encryption) (パディング (暗号化用))
Padding フィールドの使用を必要とする, または動機づける 2 つの主な要因があります。
-
平文がバイト数の倍数 (例えばブロック暗号のブロックサイズ) である必要がある暗号化アルゴリズムが使用される場合, Padding フィールドは平文 (Payload Data, Padding, Pad Length, および Next Header フィールドで構成される) をアルゴリズムが必要とするサイズに埋めるために使用されます。
-
また, 暗号化アルゴリズムの要件とは無関係に, 結果の暗号文が 4 バイト境界で終了することを保証するためにパディングが必要になる場合があります。具体的には, 上記の ESP パケット形式図に示されているように, Pad Length および Next Header フィールドは 4 バイトワード内で右揃えにする必要があります。これにより, ICV フィールド (存在する場合) が 4 バイト境界に整列することが保証されます。
上記で引用されたアルゴリズムまたはアライメント上の理由で必要とされるものを超えるパディングは, TFC をサポートするためにペイロードの実際の長さを隠すために使用できます。しかし, 記述された Padding フィールドは TFC には効果的すぎるほど制限されているため, その目的で使用すべきではありません。代わりに, TFC が必要な場合は, 以下で説明する別のメカニズム (セクション 2.7 参照) を使用する必要があります。
送信者は 0 から 255 バイトのパディングを追加できます。ESP パケットに Padding フィールドを含めることはオプションですが, 上記の要件に従う必要があります。ただし, すべての実装はパディングの生成と消費をサポートしなければなりません。
-
暗号化されるビットがアルゴリズムのブロックサイズの倍数であることを保証する目的 (上記の最初の箇条書き) で, パディング計算は IV を除外した Payload Data に適用されますが, ESP トレーラーフィールドは含まれます。結合アルゴリズムモードが完全性を実現するために SPI と Sequence Number の送信を必要とする場合, 例えば Payload Data 内の SPI と Sequence Number の複製, これらのデータ項目の複製されたバージョンと関連する ICV 相当データは, パッド長の計算に含まれます。(ESN オプションが選択されている場合, 結合モードアルゴリズムが完全性のためにそれらの送信を必要とする場合, ESN の上位 32 ビットも計算に入ります。)
-
ICV が 4 バイト境界に整列することを保証する目的 (上記の 2 番目の箇条書き) で, パディング計算は IV, Pad Length, および Next Header フィールドを含む Payload Data に適用されます。結合モードアルゴリズムが使用される場合, 複製されたデータと ICV 相当データは, パディング計算でカバーされる Payload Data に含まれます。
Padding バイトが必要であるが暗号化アルゴリズムがパディング内容を指定していない場合, 次のデフォルト処理を使用しなければなりません。Padding バイトは一連の (符号なし 1 バイト) 整数値で初期化されます。平文に追加される最初のパディングバイトは 1 と番号付けされ, 後続のパディングバイトは単調増加シーケンス 1, 2, 3, ... を構成します。このパディングスキームが使用される場合, 受信者は Padding フィールドを検査すべきです。(このスキームは, その相対的な単純さ, ハードウェアでの実装の容易さ, および受信者が復号化時にパディング値をチェックする場合, 他の完全性対策がない状態で特定の形式の "切り取りと貼り付け" 攻撃に対する限定的な保護を提供するために選択されました。)
暗号化または結合モードアルゴリズムがパディングに使用されるバイトの値に制約を課す場合, それらはアルゴリズムが ESP でどのように使用されるかを定義する RFC で指定しなければなりません。アルゴリズムがパディングに使用されるバイトの値のチェックを必要とする場合, これもその RFC で指定しなければなりません。