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

A2. Anti-Replay Window (リプレイ防止ウィンドウ)

A2. Anti-Replay Window (リプレイ防止ウィンドウ)

受信者は, サイズ W のリプレイ防止ウィンドウを維持します。このウィンドウは, これまでに認証された最高のシーケンス番号を持つパケットに対して, パケットがどの程度順序外れになり得るかを制限します。(32 ビットシーケンス番号ウィンドウに対して既に確立されている 32 パケットおよび 64 パケットの値を超えて, このウィンドウの最小サイズまたは推奨サイズに関する要件は確立されていません。ただし, ESN オプションを利用する実装でサポートされるインターフェース速度と一致するようにこれらの値をスケーリングすることが推奨されます。また, 以下で説明するアルゴリズムは, ウィンドウの幅が 2^31 パケット以下であることを前提としています。) 上位 32 ビット (Seqh) の任意の固定値に関連付けられたすべての 2^32 個のシーケンス番号は, 以後シーケンス番号サブスペース (sequence number subspace) と呼ばれます。次の表は, 関連する変数とその定義を示しています。

     Var.   Size
Name (bits) Meaning
---- ------ ---------------------------
W 32 Size of window (ウィンドウのサイズ)
T 64 Highest sequence number authenticated so far,
upper bound of window (これまでに認証された最高のシーケンス番号, ウィンドウの上限)
Tl 32 Lower 32 bits of T (T の下位 32 ビット)
Th 32 Upper 32 bits of T (T の上位 32 ビット)
B 64 Lower bound of window (ウィンドウの下限)
Bl 32 Lower 32 bits of B (B の下位 32 ビット)
Bh 32 Upper 32 bits of B (B の上位 32 ビット)
Seq 64 Sequence Number of received packet (受信パケットのシーケンス番号)
Seql 32 Lower 32 bits of Seq (Seq の下位 32 ビット)
Seqh 32 Upper 32 bits of Seq (Seq の上位 32 ビット)

リプレイ防止チェックを実行する場合, または着信パケットを認証するために使用する上位ビットを決定する場合, 2 つのケースがあります:

  • Case A (ケース A): Tl >= (W - 1)。この場合, ウィンドウは 1 つのシーケンス番号サブスペース内にあります。(図 1 を参照)
  • Case B (ケース B): Tl < (W - 1)。この場合, ウィンドウは 2 つのシーケンス番号サブスペースにまたがります。(図 2 を参照)

以下の図では, 下部の線 ("----") は 2 つの連続したシーケンス番号サブスペースを示し, ゼロは各サブスペースの開始を示しています。その上の 2 つの短い線は, 適用される上位ビットを示しています。"====" はウィンドウを表します。"****" は将来のシーケンス番号, つまり現在認証された最高のシーケンス番号 (ThTl) を超えるものを表します。

     Th+1                         *********

Th =======*****

--0--------+-----+-----0--------+-----------0--
Bl Tl Bl
(Bl+2^32) mod 2^32

図 1 -- ケース A


Th ====**************

Th-1 ===

--0-----------------+--0--+--------------+--0--
Bl Tl Bl
(Bl+2^32) mod 2^32

図 2 -- ケース B