要約

  • RFC 5297 の SIV は nonce が重複しても偽造耐性を維持する。ただし、同じ鍵・nonce・関連データの下で同じ平文が再び暗号化されたことは観測可能になる。
  • 誤用耐性は障害時の封じ込めであり、nonce 一意性、AD の構造、検証前平文の隔離、アプリケーション受理を省略する根拠ではない。

「壊れなかった」の内訳

一般的な nonce 型 AEAD では、同一の鍵と nonce を異なるメッセージに使うと、機密性や完全性が深刻に失われる場合がある。SIV は順序を変える。まず S2V が CMAC を使い、複数の関連データと平文から 128 ビットの合成 IV を作る。その後に AES-CTR が平文を変換する。出力は合成 IV と暗号文である。

nonce が一意なら、RFC 5297 が述べる通常の機密性と真正性が得られる。重複した場合も、攻撃者が FAIL 以外になる新しい入力を作ることは困難なままだ。一方、平文と関連データまで同じなら、出力の一致がその再現を知らせる。

この漏えいは小さいが、ゼロではない。二値の承認、定型的な制御命令、変化の少ない権限、短い状態、繰り返し包まれる鍵では、「同じものが出た」だけで行動やタイミングを推定できる。真正性が残ったという記録と、機密性への影響評価は分けなければならない。

確定的処理と nonce 型処理

nonce 型では、nonce は S2V ベクトルのうち平文直前の最後の関連データ要素になる。他の要素はアプリケーションが定める。乱数なら 128 ビット以上、かつ 128 ビット以上のエントロピーを持つプールが推奨される。カウンタや時刻も使えるが、対応する一意性の管理が必要だ。

確定的モードには nonce がない。典型例は、攻撃者に予測できない暗号鍵を認証付きで包む処理である。受信者、用途、アルゴリズム、世代などを関連データに含めることはできる。

同じ実装が両方を提供しても、選択権限まで同じとは限らない。nonce を省くことが正しい鍵ラップと、nonce 状態を持ちたくないために予測可能な業務データを確定的に処理することは別である。監査はモード名だけでなく、適用プロファイルと許可理由を残す必要がある。

AD の順序は意味の順序

S2V は可変長文字列のベクトルを直接処理する。テナント、オブジェクト種別、バージョン、宛先という各要素の境界と順序が認証対象になる。フィールドを入れ替えたり、欠落させたり、別の境界で連結したりすれば、保護している主張が変わる。

RFC 5116 のインターフェースは AD を一つしか受け取らない。そこを通す場合、ベクトルは曖昧さのない一つの文字列へ符号化される必要がある。長さ、型、スキーマ世代がなければ、ab と c が a と bc に化ける。タグ成功は同じバイト列を処理した証拠であって、送受信側が同じ意味で分割した証拠ではない。

要素数にも境界がある。S2V は全体で 127 要素以下、平文が一つを占めるので AD は 126 要素以下である。上限に合わせてアダプターが黙って結合や削除を行えば、互換性ではなく意味が変わる。

復号途中の平文を外へ出さない

受信側は合成 IV を使って CTR を実行し、候補平文を得る。その候補と同じ AD から S2V を再計算し、受信 IV と一致したときだけ平文を返す。一致しなければ FAIL である。

候補がメモリに存在することと、利用してよいことは同じではない。比較前にログ、パーサー、キャッシュ、ポリシー評価へ渡すと、後で失敗しても副作用は残る。暗号コアの正しさだけでは、ラッパーの解放規則を証明できない。

必要なイベントは、復号開始、候補隔離、認証比較、認証成功、平文解放、構文受理、権限判断、最終効果である。これらを一つの成功フラグにまとめると、どの境界で何が確定したのかが消える。

登録番号と実行証跡

IANA は AES-SIV-CMAC の三つの鍵長に 15、16、17 を割り当てている。番号は語彙を共有するが、実行されたコード、鍵分割、選択モード、nonce 一意性、AD スキーマ、検証前隔離を観測しない。

また、RFC 5297 は同一鍵での異なる SIV 呼び出しを慎重に制限し、CMAC の例に倣って 2^48 を挙げる。呼び出し予算と nonce の重複は別の計器だ。どちらか一方が正常でも他方の正常を証明しない。

非秘密の証跡には、アルゴリズムとビルド、鍵世代、モード、AD 要素名とダイジェスト、nonce の生成源と一意性判定、オブジェクト識別、合成 IV のダイジェスト、比較結果、解放判断、重複分類、同一性漏えい評価、下流受理、鍵ごとの予算を結ぶ。

Sources