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

A2.1. Managing and Using the Anti-Replay Window (リプレイ防止ウィンドウの管理と使用)

A2.1. Managing and Using the Anti-Replay Window (リプレイ防止ウィンドウの管理と使用)

リプレイ防止ウィンドウは, 'W' が文字列の長さを定義するビット列として考えることができます。W = T - B + 1 であり, その値は 2^32 - 1 を超えることはできません。最下位ビットは B に対応し, 最上位ビットは T に対応し, Bl から Tl までの各シーケンス番号は対応するビットで表されます。ビットの値は, そのシーケンス番号を持つパケットが受信され認証されたかどうかを示し, リプレイを検出して拒否できるようにします。

T より大きい 64 ビットシーケンス番号 (Seq) を持つパケットが受信され検証された場合,

  • B は (Seq - T) だけ増加します
  • ウィンドウの下端から (Seq - T) ビットが削除されます
  • ウィンドウの上端に (Seq - T) ビットが追加されます
  • そのシーケンス番号を持つパケットが受信され認証されたことを示すために最上位ビットが設定されます
  • T と最上位ビットの間の新しいビットは, それらのシーケンス番号を持つパケットがまだ受信されていないことを示すように設定されます。
  • T は新しいシーケンス番号に設定されます

リプレイされたパケットをチェックする際,

  • ケース A の場合: Seql >= Bl (ここで Bl = Tl - W + 1) かつ Seql <= Tl の場合, ウィンドウ内の対応するビットをチェックして, この Seql が既に見られたかどうかを確認します。はいの場合, パケットを拒否します。いいえの場合, 整合性チェックを実行します (Seqh の決定については, 以下の付録 A2.2. を参照してください)。

  • ケース B の場合: Seql >= Bl (ここで Bl = Tl - W + 1) または Seql <= Tl の場合, ウィンドウ内の対応するビットをチェックして, この Seql が既に見られたかどうかを確認します。はいの場合, パケットを拒否します。いいえの場合, 整合性チェックを実行します (Seqh の決定については, 以下の付録 A2.2. を参照してください)。