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

1.3. The CREATE_CHILD_SA Exchange (CREATE_CHILD_SA 交換)

1.3 The CREATE_CHILD_SA Exchange (CREATE_CHILD_SA 交換)

CREATE_CHILD_SA 交換は新しい Child SA の作成と, IKE SA および Child SA の rekey に用いられる. この交換は単一のリクエスト/レスポンスのペアから成り, IKEv1 では Phase 2 交換の一部と呼ばれた. 初期交換完了後, IKE SA のいずれの端からも開始してよい (MAY).

SA は新しい SA を作成してから古い SA を削除することで rekey される. 本節は rekey の最初の部分, すなわち新 SA の作成を記述する, 第 2.8 節は古い SA から新 SA へのトラフィック移行と古い SA の削除を含む rekey の機構を扱う. 全体の rekey プロセスを理解するには両節を合わせて読む必要がある.

CREATE_CHILD_SA 交換はいずれの端からも開始しうるため, 本節では initiator はこの交換を開始するエンドポイントを指す. 実装は IKE SA 内のすべての CREATE_CHILD_SA リクエストを拒否してもよい (MAY).

CREATE_CHILD_SA リクエストは, Child SA の forward secrecy をより強く保証するための追加 Diffie-Hellman 交換用に KE ペイロードをオプションで含めてよい (MAY). Child SA の鍵材料は IKE SA 確立時に確立した SK_d, CREATE_CHILD_SA 交換で交換した nonce, および (CREATE_CHILD_SA 交換に KE ペイロードが含まれる場合) Diffie-Hellman 値の関数である.

CREATE_CHILD_SA 交換に KEi ペイロードが含まれる場合, SA オファの少なくとも 1 つは KEi の Diffie-Hellman グループを含まなければならない (MUST). KEi の Diffie-Hellman グループは, イニシエータがレスポンダが受け入れると期待するグループの要素でなければならない (MUST) (追加の Diffie-Hellman グループを提案できる). レスポンダが別の Diffie-Hellman グループ (NONE 以外) を用いる提案を選んだ場合, レスポンダはリクエストを拒否し, INVALID_KE_PAYLOAD Notify ペイロードで好みの Diffie-Hellman グループを示さなければならない (MUST). この通知には 2 オクテットのデータが関連付けられる: big endian 順の受け入れ Diffie-Hellman グループ番号. そのような拒否の場合 CREATE_CHILD_SA 交換は失敗し, イニシエータは INVALID_KE_PAYLOAD Notify でレスポンダが示したグループで Diffie-Hellman 提案と KEi を伴って交換を再試行する可能性が高い.

レスポンダは NO_ADDITIONAL_SAS 通知を送り, この IKE SA 上でこれ以上 Child SA を受け入れたくないため CREATE_CHILD_SA リクエストが受け入れられないことを示す. この通知は IKE SA の rekey 拒否にも用いられる. 一部の最小実装は初期 IKE 交換の文脈でのみ単一 Child SA の設定を受け入れ, 以降の追加を拒否しうる.

1.3.1. Creating New Child SAs with the CREATE_CHILD_SA Exchange

CREATE_CHILD_SA リクエストを送ることで Child SA を作成できる. 新しい Child SA を作成するための CREATE_CHILD_SA リクエストは次のとおりである.

Initiator                         Responder
-------------------------------------------------------------------
HDR, SK {SA, Ni, [KEi,]
TSi, TSr} -->

イニシエータは SA ペイロードで SA オファ, Ni ペイロードで nonce, オプションで KEi ペイロードで Diffie-Hellman 値, TSi と TSr ペイロードで提案 Child SA の Traffic Selector を送る.

新しい Child SA を作成するための CREATE_CHILD_SA レスポンスは次のとおりである.

                               <--  HDR, SK {SA, Nr, [KEr,]

TSi, TSr}

レスポンダは (応答に同じ Message ID を用いて) SA ペイロードで受け入れたオファ, Nr ペイロードで nonce, リクエストに KEi が含まれ選択した暗号スイートにそのグループが含まれる場合は KEr ペイロードで Diffie-Hellman 値で応答する.

その SA で送るトラフィックの Traffic Selector はレスポンスの TS ペイロードで指定され, Child SA のイニシエータが提案したものの部分集合でありうる.

USE_TRANSPORT_MODE 通知は, Child SA を要求する SA ペイロードも含むリクエストメッセージに含めてよい (MAY). 作成する Child SA にトンネルモードではなくトランスポートモードを用いるよう要求する. リクエストが受け入れられた場合, レスポンスにも USE_TRANSPORT_MODE 型の通知を含めなければならない (MUST). レスポンダがリクエストを拒否した場合, Child SA はトンネルモードで確立される. イニシエータが受け入れられない場合, イニシエータはその SA を削除しなければならない (MUST). 注: このオプションでトランスポートモードを交渉する場合を除き, すべての Child SA はトンネルモードを用いる.

ESP_TFC_PADDING_NOT_SUPPORTED 通知は, 交渉中の Child SA 上で Traffic Flow Confidentiality (TFC) パディングを含むパケットを受け入れないことを示す. どちらのエンドポイントも TFC パディングを受け入れない場合, この通知はリクエストとレスポンスの両方に含まれる. 一方のメッセージにのみ含まれる場合, もう一方の方向には TFC パディングを送ってもよい.

NON_FIRST_FRAGMENTS_ALSO 通知はフラグメンテーション制御に用いられる. より詳しくは [IPSECARCH] を参照. いずれかが先頭以外のフラグメントを送る前に双方が同意する必要がある. SA を提案するリクエストとそれを受け入れるレスポンスの両方に NON_FIRST_FRAGMENTS_ALSO 通知が含まれる場合にのみ有効になる. レスポンダが先頭以外のフラグメントの送受信を望まない場合, レスポンスから NON_FIRST_FRAGMENTS_ALSO 通知を省略するだけでよく, Child SA 作成全体を拒否する必要はない.

第 2.22 節で扱う IPCOMP_SUPPORTED 通知も交換に含められる.

Child SA 作成の失敗試行は IKE SA を破棄すべきではない (SHOULD NOT): IKE SA 確立の労を失う理由はない. Child SA 作成失敗時に起こりうるエラーメッセージの一覧は第 2.21 節を参照.

1.3.2. Rekeying IKE SAs with the CREATE_CHILD_SA Exchange

IKE SA を rekey するための CREATE_CHILD_SA リクエストは次のとおりである.

Initiator                         Responder
-------------------------------------------------------------------
HDR, SK {SA, Ni, KEi} -->

イニシエータは SA ペイロードで SA オファ, Ni ペイロードで nonce, KEi ペイロードで Diffie-Hellman 値を送る. KEi ペイロードは含まれていなければならない (MUST). SA ペイロードの SPI フィールドに新しいイニシエータ SPI が供される. ピアが IKE SA の rekey リクエストを受信するか rekey リクエストを送ったら, rekey 中の IKE SA 上で新しい CREATE_CHILD_SA 交換を開始すべきではない (SHOULD NOT).

IKE SA を rekey するための CREATE_CHILD_SA レスポンスは次のとおりである.

                               <--  HDR, SK {SA, Nr, KEr}

レスポンダは (同じ Message ID で応答し) SA ペイロードで受け入れたオファ, Nr ペイロードで nonce, 選択した暗号スイートにそのグループが含まれる場合は KEr ペイロードで Diffie-Hellman 値で応答する. SA ペイロードの SPI フィールドに新しいレスポンダ SPI が供される.

新しい IKE SA のメッセージカウンタは以前の IKE SA の値に関わらず 0 に設定される. 新しい IKE SA 上の双方からの最初の IKE リクエストの Message ID は 0 である. 古い IKE SA は番号付けを保持するため, さらなるリクエスト (例: IKE SA 削除) は連番となる. 新しい IKE SA のウィンドウサイズも 1 にリセットされ, この rekey 交換のイニシエータが新しい IKE SA の新しい "original initiator" となる.

第 2.18 節も IKE SA の rekey を詳述する.

1.3.3. Rekeying Child SAs with the CREATE_CHILD_SA Exchange

Child SA を rekey するための CREATE_CHILD_SA リクエストは次のとおりである.

Initiator                         Responder
-------------------------------------------------------------------
HDR, SK {N(REKEY_SA), SA, Ni, [KEi,]
TSi, TSr} -->

イニシエータは SA ペイロードで SA オファ, Ni ペイロードで nonce, オプションで KEi ペイロードで Diffie-Hellman 値, TSi と TSr ペイロードで提案 Child SA の Traffic Selector を送る.

第 1.3.1 節で説明した通知も rekey 交換で送られうる. 通常, 元の交換で用いたものと同じである, 例: トランスポートモード SA を rekey する場合 USE_TRANSPORT_MODE 通知を用いる.

交換の目的が既存の ESP または AH SA を置き換える場合, REKEY_SA 通知は CREATE_CHILD_SA 交換に含まれなければならない (MUST). rekey される SA は Notify ペイロードの SPI フィールドで識別され, これは交換イニシエータが入向 ESP または AH パケットで期待する SPI である. この Notify メッセージタイプにデータは関連付けられない. REKEY_SA 通知の Protocol ID フィールドは rekey する SA のプロトコルに合わせて設定される, 例: ESP は 3, AH は 2.

Child SA を rekey するための CREATE_CHILD_SA レスポンスは次のとおりである.

                               <--  HDR, SK {SA, Nr, [KEr,]
TSi, TSr}

レスポンダは (同じ Message ID で) SA ペイロードで受け入れたオファ, Nr ペイロードで nonce, リクエストに KEi が含まれ選択した暗号スイートにそのグループが含まれる場合は KEr ペイロードで Diffie-Hellman 値で応答する.

その SA で送るトラフィックの Traffic Selector はレスポンスの TS ペイロードで指定され, Child SA のイニシエータが提案したものの部分集合でありうる.