2.4. Security Parameters Index (SPI) (セキュリティパラメータインデックス)
SPIは, 受信者が着信パケットがバインドされているSAを識別するために使用する任意の32ビット値です。ユニキャストSAの場合, SPIはそれ自体でSAを指定するために使用できるか, またはIPsecプロトコルタイプ (この場合はAH) と組み合わせて使用される場合があります。ユニキャストSAの場合, SPI値は受信者によって生成されるため, 値がそれ自体でSAを識別するのに十分であるか, またはIPsecプロトコル値と組み合わせて使用する必要があるかは, ローカルな問題です。SPIフィールドは必須であり, 上記で説明したインバウンドトラフィックをユニキャストSAにマッピングするこのメカニズムは, すべてのAH実装によってサポートされなければなりません (MUST)。
IPsec実装がマルチキャストをサポートする場合, インバウンドIPsecデータグラムをSAにマッピングするための以下のアルゴリズムを使用して, マルチキャストSAをサポートしなければなりません (MUST)。ユニキャストトラフィックのみをサポートする実装は, この逆多重化アルゴリズムを実装する必要はありません。
多くのセキュアマルチキャストアーキテクチャ (例: [RFC3740]) では, 中央のグループコントローラー/キーサーバーがグループセキュリティアソシエーションのSPIを一方的に割り当てます。このSPI割り当ては, グループを構成する個々のエンドシステムに存在する鍵管理 (例: IKE) サブシステムとネゴシエートまたは調整されません。その結果, グループセキュリティアソシエーションとユニキャストセキュリティアソシエーションが同じSPIを同時に使用する可能性があります。マルチキャスト対応のIPsec実装は, SPIの衝突の状況でも, インバウンドトラフィックを正しく逆多重化しなければなりません (MUST)。
セキュリティアソシエーションデータベース (SAD) [Ken-Arch] の各エントリは, SA検索がSPIに加えて, 宛先アドレス, または宛先アドレスと送信元アドレスを使用するかどうかを示さなければなりません。マルチキャストSAの場合, プロトコルフィールドはSA検索に使用されません。各インバウンドIPsec保護パケットについて, 実装は「最長」のSA識別子に一致するエントリを見つけるようにSADの検索を実施しなければなりません。この文脈では, 2つ以上のSADエントリがSPI値に基づいて一致する場合, 宛先アドレス, または宛先アドレスと送信元アドレスの比較 (SADエントリで示されているとおり) に基づいても一致するエントリが「最長」一致です。これは, 次のようなSAD検索の論理的順序を意味します:
-
{SPI, 宛先アドレス, 送信元アドレス} の一致についてSADを検索します。SADエントリが一致する場合, その一致するSADエントリでインバウンドAHパケットを処理します。それ以外の場合は, ステップ2に進みます。
-
{SPI, 宛先アドレス} の一致についてSADを検索します。SADエントリが一致する場合, その一致するSADエントリでインバウンドAHパケットを処理します。それ以外の場合は, ステップ3に進みます。
-
受信者がAHとESPの単一のSPIスペースを維持することを選択した場合は {SPI} のみ, それ以外の場合は {SPI, プロトコル} の一致についてSADを検索します。SADエントリが一致する場合, その一致するSADエントリでインバウンドAHパケットを処理します。それ以外の場合は, パケットを破棄し, 監査可能なイベントをログに記録します。
実際には, 実装はこの検索を高速化するために任意の方法を選択してもかまいませんが (MAY), その外部から見える動作は, 上記の順序でSADを検索したのと機能的に同等でなければなりません (MUST)。例えば, ソフトウェアベースの実装では, SPIによってハッシュテーブルにインデックスを付けることができます。各ハッシュテーブルバケットのリンクリスト内のSADエントリは, 最長のSA識別子を持つSADエントリがそのリンクリストの最初になるようにソートされます。最短のSA識別子を持つSADエントリは, リンクリストの最後のエントリになるようにソートされます。ハードウェアベースの実装では, 一般的に利用可能な三値連想メモリ (TCAM) 機能を使用して, 最長一致検索を本質的に実現できる場合があります。
インバウンドIPsecトラフィックをSAにマッピングするために送信元アドレスと宛先アドレスの一致が必要かどうかの指示は, 手動SA構成の副作用として, またはSA管理プロトコル (例: IKEまたはGroup Domain of Interpretation (GDOI) [RFC3547]) を使用したネゴシエーションを介して設定されなければなりません (MUST)。通常, Source-Specific Multicast (SSM) [HC03] グループは, SPI, 宛先マルチキャストアドレス, および送信元アドレスで構成される3タプルSA識別子を使用します。Any-Source Multicastグループ SAは, 識別子として SPIと宛先マルチキャストアドレスのみを必要とします。
1から255の範囲のSPI値のセットは, Internet Assigned Numbers Authority (IANA) によって将来の使用のために予約されています。割り当てられたSPI値の使用がRFCで指定されていない限り, 予約されたSPI値は通常IANAによって割り当てられません。ゼロ (0) のSPI値は, ローカルの実装固有の使用のために予約されており, ワイヤー上で送信されてはなりません (MUST NOT)。(例えば, 鍵管理実装は, IPsec実装が鍵管理エンティティに新しいSAの確立を要求したが, SAがまだ確立されていない期間中に, ゼロのSPI値を「セキュリティアソシエーションが存在しない」ことを意味するために使用する場合があります。)