76
RFC 5996 Internet Key Exchange Protocol Version 2 (IKEv2) by 長長長

Rfc5996(internet key exchange protocol version 2 (ik ev2))

Embed Size (px)

DESCRIPTION

IPsec/RFC 5996 Internet Key Exchange Protocol Version 2 (IKEv2)

Citation preview

Page 1: Rfc5996(internet key exchange protocol version 2 (ik ev2))

RFC 5996Internet Key Exchange Protocol Version 2 (IKEv2)

by 長谷川

Page 2: Rfc5996(internet key exchange protocol version 2 (ik ev2))

もくじ• IPsec の概要• Introduction(Section 1)– 用語、 Exchange の概要

• Exchanges and Payloads(Appendix C)• IKE Protocol Details and Variations(Section 2)– 細かいところ

• RFC 4306( 旧 IKEv2 の RFC) との差分• Header and Payload Formats(Section 3)

• まとめやすさ重視で RFC と順番を変えている。

Page 3: Rfc5996(internet key exchange protocol version 2 (ik ev2))

IPsec の概要( 1/7 )• 関連する RFC が多い

カテゴリ RFC タイトル

アーキテクチャ RFC 4301 Security Architecture for the Internet Protocol

IKE プロトコル RFC 5996 ( 新 IKEv2) Internet Key Exchange Protocol Version 2 (IKEv2)

RFC 4306 ( 旧 IKEv2) Internet Key Exchange (IKEv2) Protocol

RFC 2409 (IKEv1) The Internet Key Exchange (IKE)

IKE 関連 RFC 3526 More Modular Exponential (MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)

RFC 4307 Cryptographic Algorithms for Use in the Internet Key Exchange Version 2 (IKEv2)

セキュリティプロトコル RFC 4302 IP Authentication Header(AH)

RFC 4303 IP Encapsulating Security Payload (ESP)

セキュリティプロトコル関連

RFC 4305 など

大量にある

Page 4: Rfc5996(internet key exchange protocol version 2 (ik ev2))

IPsec の概要( 2/7 )• IPsec と IKEv2 は独立したもの。※IKEv2 がなくても手動で鍵管理ができれば IPsec できる。

• IPsec– AH/ESP による IP パケットの暗号化、認証

• IKEv2– 暗号化鍵の管理• パケットの暗号化、完全性保証• パケットの認証、通信相手の認証• 秘密鍵の共有

Page 5: Rfc5996(internet key exchange protocol version 2 (ik ev2))

IPsec の概要( 3/7 )• IPsec の動作(トンネルモードの例)

送信 PC 受信 PC

ローカル IP リモート IP プロトコル

動作(PROTECT/BYPASS/DISCARD)

セキュリティプロトコル

モード

送信 PC 受信 PC ANY PROTECT(IPsec 適用 ) ESP トンネル192.168.1.1 10.0.0.10 ANY BYOASS(IPsec 非適用 ) - -

Selector

RT#1 の SPD(Security Policy Database)

①RT#1 は SPD の Selector を検索し、 IPsec 適用 / 非適用 / 破棄を判断する。

RT#1 RT#2IP パケッ

処理

Page 6: Rfc5996(internet key exchange protocol version 2 (ik ev2))

暗号化(SPI=1)

IPsec の概要( 4/7 )• IPsec の動作(トンネルモードの例)

送信 PC 受信 PC

SPI ローカル IP リモート IP プロトコル

セキュリティプロトコル

暗号化アルゴリズム

1 送信 PC 受信 PC ANY ESP 3DES 2938417

Selector

RT#1 の SAD(Security Association Database)

②RT#1 は Selector で SAD を検索し、 IPsec に適用するパラメータを判断する。③RT#1 は SAD のパラメータに従ってパケットを暗号化し、送信する。

RT#1 RT#2IP パケット

パラメータ

IP パケット

Page 7: Rfc5996(internet key exchange protocol version 2 (ik ev2))

IPsec の概要( 5/7 )• IPsec の動作(トンネルモードの例)

送信 PC 受信 PC

SPI ローカル IP リモート IP プロトコル

セキュリティプロトコル

暗号化アルゴリズム

1 受信 PC 送信 PC ANY ESP 3DES 2938417

Selector

RT#2 の SAD(Security Association Database)

④RT#2 は SPI で SAD を検索し、 IPsec に適用するパラメータを判断する。⑤RT#2 は SAD のパラメータに従ってパケットを復号する。

RT#1 RT#2

パラメータ

IP パケット

暗号化(SPI=1)

IP パケット

Page 8: Rfc5996(internet key exchange protocol version 2 (ik ev2))

IPsec の概要( 6/7 )• IPsec の動作(トンネルモードの例)

送信 PC 受信 PC

ローカル IP リモート IP プロトコル

動作(PROTECT/BYPASS/DISCARD)

セキュリティプロトコル

モード

送信 PC 受信 PC ANY PROTECT(IPsec 適用 ) ESP トンネル192.168.1.1 10.0.0.10 ANY BYOASS(IPsec 非適用 ) - -

Selector

RT#2 の SPD(Security Policy Database)

⑥RT#2 は SPD の Selector を検索し、転送 / 破棄を判断する。

RT#1 RT#2IP パケッ

処理

Page 9: Rfc5996(internet key exchange protocol version 2 (ik ev2))

IPsec の概要( 7/7 )• 以上の手順中での IKEv2 の役割– SPD 、 SAD 作成のための情報のやりとり– SAD の鍵管理

Page 10: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Introduction ( 1/11 )• 用語

• Exchange の種類と用途

用語 意味Child SA IKE SA で設定される ESP/AH のための SA 。Exchange Response/Request のペア。すべての IKE 通信は Exchange であ

る。

Exchange 用途IKE_SA_INIT IKE SA パラメータのネゴシエーション。 IKE の最初の

exchange 。IKE_AUTH 認証。 Child SA の確立。CREATE_CHILD_SA Child SA の追加。 Rekey 。INFORMATIONAL housekeeping 。 SA の削除。エラー通知。

Page 11: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Introduction ( 2/11 )• シーケンス上の略称表記 Payload

AUTH AuthenticationCERT/CERTREQ Certificate/Certificate RequestCP ConfigurationD DeleteEAP Extensible AuthenticationHDR IKE headerIDi/IDr Initiator’s Identification/Responder’s IdentificationKE Key ExchangeNi/Nr NonceN NotifySA Security AsscociationSK Encrypted and AuthenticationTSi/TSr Initiator’s Traffic Selector/Responder’s Traffic SelectorV Vendor ID

Page 12: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Introduction ( 3/11 )• Initial Exchanges ( 1/3 )

– IKE の開始時に実行される exchange

Initiator Responder

HDR SAi1 KEi Ni

【 HDR 】 SPI 、バージョンなど  【 SAi1 】サポートする暗号化アルゴリズム【 KEi 】 Initiator の Diffie-Hellman 値

HDR SAr1 KEr Nr [CERTREQ]option

①Initiator が IKE を開始する。

②Responder は SAi1 から暗号化アルゴリズムを決定し、 SAr1 に設定する。IKE_SA_INIT Response

③Initiator 、 Responder は KEi/KEr/Ni/Nr から IKE SA 、 Child SA の Key を算出する。以降のメッセージは暗号化 / 完全性保証される。

IKE_SA_INIT Request

Page 13: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Introduction ( 4/11 )• Initial Exchanges ( 2/3 )

– IKE の開始時に実行される exchange

Initiator Responder

HDR IDi [CERT]option

SK暗号化→

[CERTREQ]option

[IDr]option AUTH SAi2 TSi TSr

【 SAi2 】 Child SA 用の SA  【 IDr 】 Responder の ID を指定する場合に使用。

④ID と認証データ (AUTH) を送信する。

⑤Responder は ID の通知と認証をする。IKE_AUTH Response

⑥Child SA の作成完了。

IKE_AUTH Request

HDR IDr [CERT]option

SK暗号化→

[IDr]option AUTH SAr2 TSi TSr

【 SAi2 】 Child SA 用の SA  【 IDr 】 Responder の ID を指定する場合に使用。

Page 14: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Introduction ( 5/11 )• Initial Exchanges ( 3/3 )– 最小で 4 メッセージ (2 exchange) で完了する。– IKE_AUTH で Child SA 作成が失敗した場合でも IKE SA

を維持してよい。– IKE_AUTH で通知される Notify Message 。詳細は後述。

• NO_PROPOSAL_CHOSEN• TS_UNACCEPTABLE• SINGLE_PAIR_REQUIRED• INTERNAL_ADDRESS_FAILURE• FAILED_CP_REQUIRED

Page 15: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Introduction ( 6/11 )• CREATE_CHILD_SA Exchange– 2 つの役割

• 新しい Child SA の作成• IKE SA/Child SA の rekey(*1)

– IKEv1 の Phase 2 exchange に相当– IKE SA の確立後、どちらから開始してもよい– 実装は CREATE_CHILD_SA Request を拒否してよい

*1 :古い SA を削除し、代わりに新しい SA を生成すること

Page 16: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Introduction ( 7/11 )• Creating New Child SA(CREATE_CHILD_SA Exchange)

– 新しい Child SA を作成する。

Initiator Responder

SA は複数要求することが可能。

①Initiator が exchange を開始する。開始した方がInitiator 。

②Responder は応答する。 KEi が含まれていた場合 KEr を送信。CREATE_CHILD_SA Response

Child SA 作成に失敗した場合でも IKE SA は削除しないこと。

CREATE_CHILD_SA Request

HDR SA NiSK暗号化→ TSi TSr

[KEi]option

HDR SA NrSK暗号化→ TSi TSr

[KEr]option

③Child SA の作成完了。

Page 17: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Introduction ( 8/11 )• Rekeying IKE SA(CREATE_CHILD_SA Exchange)

– IKE SA を rekey する。

Initiator Responder

HDR SA NiSK暗号化→ KEi

Responder は IKE SA Rekey 用の CREATE_CHILD_SA request を受信した IKE SA で新規に CREATE_CHILD_SA exchange を開始しないこと。

①Initiator が rekey を開始する。開始した方がInitiator 。

②Responder は応答する。

CREATE_CHILD_SA Response

③IKE SA の rekey 完了。

CREATE_CHILD_SA Request

HDR SA NrSK暗号化→ KEr

新しい Initiator の IKE SA SPI はSA の SPI filed に設定する。

Page 18: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Introduction ( 9/11 )• Rekeying Child SA(CREATE_CHILD_SA Exchange)

– Child SA を rekey する。

Initiator Responder

HDR N(REKEY_SA)SK暗号化→ SA Ni

[KEi]option

TSi TSr

Rekey される SA は Notification payload の SPI filed で識別する。

①Initiator が rekey を開始する。開始した方がInitiator 。

②Responder は応答する。 KEi が含まれていた場合 KEr を送信。CREATE_CHILD_SA Response

③Child SA の rekey 完了。

CREATE_CHILD_SA Request

HDR SA NrSK暗号化→

[KEr]option

TSi TSr

【 SAi2 】 Child SA 用の SA  【 IDr 】 Responder の ID を指定する場合に使用。

Page 19: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Introduction ( 10/11 )• INFORMATIONAL Exchange

– 役割• エラー、状態の通知• housekeeping ( payload を含まない Request/Response で実現)

– 0 以上の Notification/Delete/Configuration payload を含む– 応答がない場合、再送する

HDR [N]option

SK暗号化→

[D]option

[CP]option

処理内容は payload によって決まる。

①Initiator が送信。開始した方が Initiator 。

②Responder が応答。INFORMATIONAL Response

INFORMATIONAL Request

Initiator Responder

HDR [N]option

SK暗号化→

[D]option

[CP]option

Page 20: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Introduction ( 11/11 )• Deleting SA(INFORMATIONAL Exchange)

– Child SA を削除する場合、双方の SA を同一の exchange で削除すること。

– INFORMATIONAL exchange ( Delete payload で削除 SPI を指定)で削除する。

  ( exchange= 双方向のメッセージのやりとりで削除される)

– IKE SA を削除する場合、その IKE SA でネゴシエーションされたChild SA も同時に削除すること。

– Half-close connection 、送受信不可能になった場合でも上記の方法で SA を削除すること。

Page 21: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Exchanges and Payloads ( 1/10 )• IKEv2 exchange の payload 確認用。• Vendor ID ( V ) payload はすべてのメッ

セージの任意の場所に含まれてよい。• 以降の exchange では最適な場所に記載さ

れている。• [X] は payload X が option であることを示す。

Page 22: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Exchanges and Payloads ( 2/10 )• IKE_SA_INIT Exchange ( Request/Response )

[N(COOKIE)],SA, KE, Ni, [N(NAT_DETECTION_SOURCE_IP)+, N(NAT_DETECTION_DESTINATION_IP)], [V+][N+]

Request

SA, KE, Nr,[N(NAT_DETECTION_SOURCE_IP),N(NAT_DETECTION_DESTINATION_IP)],[[N(HTTP_CERT_LOOKUP_SUPPORTED)], CERTREQ+],[V+][N+]

Response( cookie なし)

N(COOKIE),[V+][N+]

Response( cookie あり)

N(INVALID_KE_PAYLOAD),[V+][N+]

異なるDiffie-Hellman group の要求

Page 23: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Exchanges and Payloads ( 3/10 )• IKE_AUTH Exchange without EAP ( Request )

IDi, [CERT+],[N(INITIAL_CONTACT)],[[N(HTTP_CERT_LOOKUP_SUPPORTED)], CERTREQ+],[IDr],AUTH,[CP(CFG_REQUEST)],[N(IPCOMP_SUPPORTED)+],[N(USE_TRANSPORT_MODE)],[N(ESP_TFC_PADDING_NOT_SUPPORTED)],[N(NON_FIRST_FRAGMENTS_ALSO)],SA, TSi, TSr,[V+][N+]

Request

Page 24: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Exchanges and Payloads ( 4/10 )• IKE_AUTH Exchange without EAP ( Response )

IDr, [CERT+],AUTH,[CP(CFG_REPLY)],[N(IPCOMP_SUPPORTED)],[N(USE_TRANSPORT_MODE)],[N(ESP_TFC_PADDING_NOT_SUPPORTED)],[N(NON_FIRST_FRAGMENTS_ALSO)],SA, TSi, TSr,[N(ADDITIONAL_TS_POSSIBLE)],[V+][N+]

Response

Child SA 作成に失敗

IDr, [CERT+],AUTH,N(error),[V+][N+]

Page 25: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Exchanges and Payloads ( 5/10 )• IKE_AUTH Exchange with EAP ( Request/Response )

IDi,[N(INITIAL_CONTACT)],[[N(HTTP_CERT_LOOKUP_SUPPORTED)], CERTREQ+],[IDr],[CP(CFG_REQUEST)],[N(IPCOMP_SUPPORTED)+],[N(USE_TRANSPORT_MODE)],[N(ESP_TFC_PADDING_NOT_SUPPORTED)],[N(NON_FIRST_FRAGMENTS_ALSO)],SA, TSi, TSr,[V+][N+]

Request

IDr, [CERT+], AUTH,EAP,[V+][N+]

最初の Response

Page 26: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Exchanges and Payloads ( 6/10 )• IKE_AUTH Exchange with EAP ( Request/Response )

EAPRequest

AUTH

最後の Response

EAPResponse

…   1 ~ N 回繰り返し

最後のRequest

AUTH,[CP(CFG_REPLY)],[N(IPCOMP_SUPPORTED)],[N(USE_TRANSPORT_MODE)],[N(ESP_TFC_PADDING_NOT_SUPPORTED)],[N(NON_FIRST_FRAGMENTS_ALSO)],SA, TSi, TSr,[N(ADDITIONAL_TS_POSSIBLE)],[V+][N+]

Page 27: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Exchanges and Payloads ( 7/10 )• CREATE_CHILD_SA Exchange for Creating or Rekeying Child

SAs ( Request )[N(REKEY_SA)],[CP(CFG_REQUEST)],[N(IPCOMP_SUPPORTED)+],[N(USE_TRANSPORT_MODE)],[N(ESP_TFC_PADDING_NOT_SUPPORTED)],[N(NON_FIRST_FRAGMENTS_ALSO)],SA, Ni, [KEi], TSi, TSr[V+][N+]

Request

Page 28: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Exchanges and Payloads ( 8/10 )• CREATE_CHILD_SA Exchange for Creating or Rekeying Child

SAs ( Response )[CP(CFG_REPLY)],[N(IPCOMP_SUPPORTED)],[N(USE_TRANSPORT_MODE)],[N(ESP_TFC_PADDING_NOT_SUPPORTED)],[N(NON_FIRST_FRAGMENTS_ALSO)],SA, Nr, [KEr], TSi, TSr,[N(ADDITIONAL_TS_POSSIBLE)][V+][N+]

Response

N(error)エラー

N(INVALID_KE_PAYLOAD),[V+][N+]

異なるDiffie-Hellman group の要求

Page 29: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Exchanges and Payloads ( 9/10 )• CREATE_CHILD_SA Exchange for Rekeying the IKE

SA ( Request/Response )SA, Ni, KEi[V+][N+]

ResponseSA, Nr, KEr[V+][N+]

Request

Page 30: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Exchanges and Payloads ( 10/10 )• INFORMATIONAL Exchange ( Request/Response )

[N+],[D+],[CP(CFG_REQUEST)]

Response [N+],[D+],[CP(CFG_REPLY)]

Request

Page 31: Rfc5996(internet key exchange protocol version 2 (ik ev2))

IKE Protocol Details and Variations ( 1/10 )

Retransmission• IKE は UDP なので再送は IKE で保証する。• IKE メッセージ (request/response) は initiator が再送を担

う。• 再送 response はもとのメッセージと同一であること。

(IP/UDP レベルでは異なってよい )• IKE_SA_INIT request 受信時の振る舞い– 既存の IKE SA :無視– 新規の IKE SA :新規の IKE_SA_INIT response を返す。

 上記で既存 / 新規のパケット、パケットのハッシュ、 Niで判別する。( NAT 配下で SPI が重複する可能性があるため)。

Page 32: Rfc5996(internet key exchange protocol version 2 (ik ev2))

IKE Protocol Details and Variations ( 2/10 )Version Number• 本ドキュメントの IKEv2 は major=2 、 minor=0 。

– 互換性を維持できない場合は major をインクリメントする。– 互換性を維持できる場合は minor をインクリメントする。

• major=n,m をサポートする場合、 n ~ m をサポートすること。

• Peer間で共通で最大の major にネゴシエーションすること。

• Payload type の処理確認のために critical flag が使用される。– Request の critical flag が set (※ Response の critical

flag は set しないこと)• Payload type が認識できない場

合、 UNSUPPORTED_CRITICAL_PAYLOAD notify を通知する。• Payload type が未サポートの場合、無視する。

Page 33: Rfc5996(internet key exchange protocol version 2 (ik ev2))

IKE Protocol Details and Variations ( 3/10 )

Cookie• Responder は COOKIE Notification による COOKIE 認証が可能。

– COOKIE Notification は 1 ~ 64オクテット– Cookie = <VersionIDofSecret> | Hash(Ni | IPi | SPIi | <secret>)  <secret> : Responder が生成する乱数。  <VersionIDofSecret> : <secret> が変更される毎に変更される数。

• Initiator は Responder から通知された COOKIE Notification をそのまま返す。

HDR(A, 0), SAi1, KEi, Ni

HDR(A, 0) N(COOKIE), SAi1, KEi, Ni

HDR(A, 0) N(COOKIE)

HDR(A, B), SAr1, KEr, Nr, [CERTREQ]

HDR(A,B), SK { IDi, [CERT,] [CERTREQ.] [IDr,] AUTH, SAi2, TSi, TSr}

HDR(A,B), SK { IDr, [CERT,] AUTH, SAr2, TSi, TSr}

HDR(X, Y)X:Initiator の SPIY:Responder の SPI

Page 34: Rfc5996(internet key exchange protocol version 2 (ik ev2))

IKE Protocol Details and Variations ( 4/10 )

Nonce• 暗号化機能への入力に使用する乱数。• 下記のメッセージに含まれる。– IKE_SA_INIT Request/Response– CREATE_CHILD_SA Request/Response• 新たな Child SA 用の Key 算出、 Diffie-Hellman Key

から安全な乱数の生成のため。• 128bit 以上であること。• さらに、ネゴシエーションされた PRF の半分以上である

こと。– 初回の Nonce は PRF ネゴシエーション前なので、サ

ポートする PRF に対して十分な長さのものを設定する。

Page 35: Rfc5996(internet key exchange protocol version 2 (ik ev2))

IKE Protocol Details and Variations ( 5/10 )

Keying Material の生成( PRF )• IKE には 4 つの Cryptographic algorithm がある

– Encryption algorithm– Integrity Protection algorithm– Diffie-Hellman group– Pseudorandom Function(PRF)

• PRF はすべての Cryptographic algorithm の key 生成に使用する。

• prf+ ( PRF stream )は下記のように定義される。prf+ (K, S)= T1 | T2 | T3 | ...

T1 = prf (K, S | 0x01)T2 = prf (K, T1 | S | 0x02) 、、、最大 T255 まで。“prf+” を pseudorandom function と定義する。“|” を連結と定義する。

Page 36: Rfc5996(internet key exchange protocol version 2 (ik ev2))

IKE Protocol Details and Variations ( 6/10 )

IKE SA Keying Material の生成• 下記のように双方向の key が生成される。 SKEYSEED = prf(Ni | Nr, g^ir)  ※ g^ir は Diffie-Hellman 共有鍵{SK_d | SK_ai | SK_ar | SK_ei | SK_er | SK_pi | SK_pr} = prf + (SKEYSEED, Ni | Nr | SPIi | SPI r)

Key PayloadSK_d Child SA の key 生成に使用する key 。SK_ai/SK_ar Encrypted payload の完全性保護用の

key 。SK_ei/SK_er Encrypted payload の暗号化用の key 。SK_pi/SK_pr Authentication payload 生成用の key 。

Page 37: Rfc5996(internet key exchange protocol version 2 (ik ev2))

IKE Protocol Details and Variations ( 7/10 )EAP• IKE_AUTH Exchange で Responder が Initiator を認証する。• Initiator は最初の IKE_AUTH exchange から AUTH payload を除外すること

で EAP 要求を示す。• 10 以上の IKE_AUTH exchange が必要。• AAA 認証に使用される ID と ID payload の ID は異なってもよい。

HDR, SAi1, KEi, Ni

HDR, SK{ IDi, SAi2, TSi , TSr }

HDR, SK { EAP}

HDR, SAr1, KEr, Nr

HDR, SK{ IDr, AUTH, EAP }

HDR, SK { EAP(Success)}

HDR, SK { AUTH}

HDR, SK { AUTH, SAr2, TSi, TSr}

Page 38: Rfc5996(internet key exchange protocol version 2 (ik ev2))

IKE Protocol Details and Variations ( 8/10 )

Child SA Keying Material の生成• Child SA の Keying Material 生成式。必要な鍵長分 prf+ を繰り

返す。   KEYMAT = prf+(SK_d, Ni | Nr)

• CREATE_CHILD SA exchange で Diffie-Hellman exchange 有りの場合

   KEYMAT = prf+(SK_d, g^ir(new) | Ni | Nr) ※g^ir(new) は新しい Diffie-Hellman 共有秘密鍵

• ESP で暗号化鍵、完全性保証鍵が必要な場合はその順番でkey を算出すること。

Page 39: Rfc5996(internet key exchange protocol version 2 (ik ev2))

IKE Protocol Details and Variations ( 9/10 )

IKE SA の Rekey• CREATE_CHILD_SA exchange は IKE SA の Rekey に使用される。• 新しい SPI は SA Payload の SPI field に含まれる。• 新しい SKEYSEED は下記のように計算される。  SKEYSEED = prf+(SK_d(old), g^ir(new) | Ni | Nr) ※ g^ir(new) は新しい Diffie-Hellman 共有秘密鍵• 必ず新しい Diffie-Hellman 共有秘密鍵が使用される。• 新しい IKE SA は message counter が 0 に設定されること。

Page 40: Rfc5996(internet key exchange protocol version 2 (ik ev2))

IKE Protocol Details and Variations ( 10/10 )

Requesting an Internal Address• CP Payload でアドレスを割り当ててよい。

• CP(CFG_REQUEST) は一つ以上の INTERNAL_ADDRESS attributeを含むこと。

• CP(CFG_REPLY) は CP(CFG_REQUEST) に依らず、何を返してもよい。ただし、 CP(CFG_REQUEST) が無い場合は送信しないこと。

• Responder が CP(CFG_REQUEST) に応答を返せない場合、 FAILED_CP_REQUIRED を通知すること。

HDR, SK {IDi, [CERT], [CERTREQ], [IDr], AUHT, CP(CFG_REQUEST), SAi2, TSi, TSr}

HDR, SK {IDr, [CERT], AUHT, CP(CFG_REPLY), SAr2, TSi, TSr}

Page 41: Rfc5996(internet key exchange protocol version 2 (ik ev2))

RFC 4306( 旧 IKEv2 の RFC) との差分• 実装に大きな影響を与える変更なし。• バージョン番号は変更なし

– major 2 、 minor 0• 要求事項の明確化( SHOULD 、 MUST )• AH/ESP の説明の削除。• INTERNAL_ADDRESS_EXPIRY 、 INTERNAL_IP6_NBNS attribute の削除。本仕様に準拠する場合はこれらの attribute が指定されても無視すること。• “Payload を右から読む”の記述削除。実装上は読む方向に依存しないこ

と。• IKE SA の rekey に KEi payload が必須になった。• Child SA の rekey では Traffic Selector と algorithm が異ならないこと。• Exchange の競合処理の明確化。

Page 42: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 1/35 )• IKE メッセージは UDP Port 500/4500 を使用– UDP 500 Port• UDPヘッダの直後が IKE メッセージ

– UDP 4500 Port• UDPヘッダの後、 4オクテットの 0 の後に IKE

メッセージ ※ 4オクテットの 0 は IKE メッセージではない。 length 、 checksum の計算には含まれない。

Page 43: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 2/35 )• IKEv2 の Payload と Payload Type

Payload 略記 Payload Type

No Next Payload - 0Security Association SA 33Key Exchange KE 34Identification Initiator / Responder IDi / IDr 35 / 36Certificate CERT 37Certificate Request CERTREQ 38Authentication AUTH 39Nonce Ni / Nr 40Notify N 41Delete D 42Vendor ID V 43Traffic Selector Initiator/ Responder TSi / TSr 44 / 45Encrypted SK 46Configuration C 47Extensible Authentication Protocol ( EAP )

EAP 48

Page 44: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 3/35 )• IKE Header :フォーマット

1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| IKE SA Initiator's SPI || |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| IKE SA Responder's SPI || |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Next Payload | MjVer | MnVer | Exchange Type | Flags |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Message ID |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Page 45: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 4/35 )• IKE Header :フィールドField Length 説明IKE SA Initiator's SPI 8 octets Initiator が選択した IKE SA の識別子。 0 以外の値。IKE SA Responder's SPI

8 octets Responder が選択した IKE SA の識別子。 IKE Initial Exchange の最初のメッセージでは 0 であること。

Next Payload 1 octet Header の直後の Payload Type 。MjVer 4 bits IKE のメジャーバージョン。 RFC5996 は

2 。 ISAKAMP は 1 。 2 より大きい場合はN(INVALID_MAJOR_VERSION) で、メッセージを拒否すること。

MnVer 4 bits IKE のマイナーバージョン。 RFC5996 は 0 。受信側では無視すること。

Exchange Type 1 octet Exchange の Type 。次スライド参照。Flags 1 octet ビットフィールドで表されるオプション。次スライ

ド参照。Message ID 4 octets 0 から始まり、 Request毎に 1増える。 Response で

は Request と同じ値を設定する。双方向で別の Message ID をもつ。

Length 4 octets IKE Header + Payload のオクテット長。

Page 46: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 5/35 )• IKE Header : Exchange Type 、 FlagExchange Type Value

IKE_SA_INIT 34IKE_AUTH 35CREATE_CHILD_SA 36INFORMATIONAL 37

Flag 意味X 送信時に Cleared 、受信時は無視する。

R ( Response ) 同じ Message ID の Resnponse である。Requset で Cleared 、 Response で Set する。

V ( Version ) 送信者が MjVer より高い MjVer を使用できることを示す。IKEv2 では送信時に Cleared 、受信時は無視する。

I ( Initiator ) IKE SA の Initiator が Set し、 Responder は Cleared する。IKE SA を Rekey した場合は Rekey を開始した方が Initiator になる。受信側が I/R どちらの SPI を使用するか判別するのに使用する。

X X R V I X X X Set : 1Cleared : 0

Page 47: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 6/35 )• Generic Payload Header :フォーマット  IKE Payload は Generic Payload Header で始まる。

1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Next Payload |C| RESERVED | Payload Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Page 48: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 7/35 )• Generic Payload Header :フィールドField Length 説明Next Payload 1 octets 次の Payload Type 。この Payload が最後の場合は

0 。

C ( Critical ) 1 bit 前の Next Payload filed に対応していない場合 1 を設定する。 IKEv2 に準拠する場合は常に 0 を設定すること。

RESERVED 7 bits 0 を設定し、無視すること。Payload Length 2 octets Generic Payload Header + Payload のオクテット長。

Page 49: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 8/35 )• Security Association Payload :フォーマッ

ト  SA のネゴシエーションに使用される。  3階層で SA を表現する。  Proposal – Transform - AttributeSA Payload

| +--- Proposal #1 ( Proto ID = ESP(3), SPI size = 4, | | 7 transforms, SPI = 0x052357bb ) | | | +-- Transform ENCR ( Name = ENCR_AES_CBC ) | +-- Attribute ( Key Length = 128 )| | +--- Proposal #2 ( Proto ID = ESP(3), SPI size = 4, | 4 transforms, SPI = 0x35a1d6f2 ) | +-- Transform ENCR ( Name = AES-GCM with a 8 octet ICV ) | +-- Attribute ( Key Length = 128 ) | +-- Transform ESN ( Name = ESNs ) +-- Transform ESN ( Name = No ESNs )

Page 50: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 9/35 )• Security Association Payload :フォーマッ

ト  1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Next Payload |C| RESERVED | Payload Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |~ <Proposals> ~| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Proposal:可変長。 1以上の Proposalを含む。

Page 51: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 10/35 )• Security Association Payload :  Proposal Substructureフォーマット

1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 0 (last) or 2 | RESERVED | Proposal Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Proposal Num | Protocol ID | SPI Size |Num Transforms|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+~ SPI (variable) ~+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |~ <Transforms> ~| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Page 52: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 11/35 )• Security Association Payload :  Proposal Substructureフィールド

Field Length 説明

0 ( last ) or 2( more )

1 octet 最後の Proposal であるかを示す。

RESERVED 1 octet 0 を設定し、無視すること。Proposal Length 2 octets Transform 、 Attribute を含む Proposal のオクテット

長。Proposal Num 1 octet 最初の Proposal は 1 。以降インクリメントされる。Protocol ID 1 octet 1 : IKE SA 。 2 : AH 。 3 : ESP 。SPI Size 1 octet 8 : IKE 。 4 : ESP/AH 。 Initial IKE SA Exchange では

0 。Num Transforms 1 octet Proposal に含まれる Transform の数。SPI variable 送信側の SPI 。

SPI Size が 0 の場合、この field は含めないこと。<Transforms> variable 1 つ以上の Transform Substructure 。

Page 53: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 12/35 )• Security Association Payload :  Transform Substructureフォーマット

1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 0 (last) or 3 | RESERVED | Transform Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Transform Type | RESERVED | Transform ID |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |~ Transform Attributes ~| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Page 54: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 13/35 )• Security Association Payload :  Transform Substructureフィールド( 1/3 )Field Length 説明

0 (last) or 3 ( more )

1 octet 最後の Proposal であるかを示す。

RESERVED 1 octet 0 を設定し、無視すること。Transform Length 2 octets Attribute を含む Transform Substructure のオクテット

長。Transform Type 1 octet プロトコルの種別。オプション。Transform ID 1 octet Transform Type の識別子。Transform Attributes 1 octet 8 : IKE 。 4 : ESP/AH 。 Initial IKE SA Exchange では

0 。

説明 Trans. Type プロトコル

Encryption Algorithm ( ENCR ) 1 IKE 、 ESP

Pseudorandom Function ( PRF ) 2 IKE

Integrity Algorithm ( INTEG ) 3 IKE 、 AH 、 ESP ( option )

Diffie-Hellman group ( D-H ) 4 IKE 、 AH ( option )、 ESP( option )

Extended Sequence Numbers ( ESN ) 5 AH 、 ESP

Page 55: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 14/35 )• Security Association Payload :  Transform Substructureフィールド( 1/3 )  Transform Type 1 ( Encryption Algorithm )

Name Number Defined In---------------------------------------------------ENCR_DES_IV64 1 (UNSPECIFIED)ENCR_DES 2 (RFC2405), [DES]ENCR_3DES 3 (RFC2451)ENCR_RC5 4 (RFC2451)ENCR_IDEA 5 (RFC2451), [IDEA]ENCR_CAST 6 (RFC2451)ENCR_BLOWFISH 7 (RFC2451)ENCR_3IDEA 8 (UNSPECIFIED)ENCR_DES_IV32 9 (UNSPECIFIED)ENCR_NULL 11 (RFC2410)ENCR_AES_CBC 12 (RFC3602)ENCR_AES_CTR 13 (RFC3686)

Page 56: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 15/35 )• Security Association Payload :  Transform Substructureフィールド( 1/3 )  Transform Type 2 ( Pseudorandom function )

  Transform Type 3 ( Integrity Algorithm )

Name Number Defined In------------------------------------------------------PRF_HMAC_MD5 1 (RFC2104), [MD5]PRF_HMAC_SHA1 2 (RFC2104), [SHA]PRF_HMAC_TIGER 3 (UNSPECIFIED)

Name Number Defined In----------------------------------------NONE 0AUTH_HMAC_MD5_96 1 (RFC2403)AUTH_HMAC_SHA1_96 2 (RFC2404)AUTH_DES_MAC 3 (UNSPECIFIED)AUTH_KPDK_MD5 4 (UNSPECIFIED)AUTH_AES_XCBC_96 5 (RFC3566)

Page 57: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 16/35 )• Security Association Payload :  Transform Substructureフィールド( 1/3 )  Transform Type 4 ( Diffie-Hellman group )

  Transform Type 5 ( Extended Sequence Numbers )

Name Number Defined In----------------------------------------NONE 0768-bit MODP 1 Appendix B1024-bit MODP 2 Appendix B1536-bit MODP 5 [ADDGROUP]2048-bit MODP 14 [ADDGROUP]3072-bit MODP 15 [ADDGROUP]4096-bit MODP 16 [ADDGROUP]6144-bit MODP 17 [ADDGROUP]8192-bit MODP 18 [ADDGROUP]

Name Number--------------------------------------------No Extended Sequence Numbers 0Extended Sequence Numbers 1

Page 58: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 17/35 )• Security Association Payload :   Attributeフォーマット 設定可能な Attribute は Transform によって異なる。  1 つの Attribute のみが規定される。   Key Length Attribute :特定の Encryption Transform のキー長を規定する。 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|A| Attribute Type | AF=0 Attribute Length ||F| | AF=1 Attribute Value |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| AF=0 Attribute Value || AF=1 Not Transmitted |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Page 59: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 18/35 )• Security Association Payload :  Data Attributesフィールド

Field Length 説明Attribute Format ( AF )

1 bit Attribute が Type/Length/Value(TLV) か Type/Value(TV)かを示す。 0 : TLV 。 1 : TV 。

Attribute Type 15 bits Attribute の Type 。※Value 0 ~ 13 、 15 ~ 17 は IKEv1 で使用されるので使用しないこと。

Attribute Value variable AF=1 : 2 octets 。 AF=0 : Attribute Length のオクテット長。

Transform Type 1 octet プロトコルの種別。オプション。Transform ID 1 octet Transform Type の識別子。Transform Attributes 1 octet 8 : IKE 。 4 : ESP/AH 。 Initial IKE SA Exchange では

0 。

Attribute Type Value Attribute Format

Key Length (in bits) 14 TV

Page 60: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 19/35 )• Key Exchange Payload  Diffie-Hellman 鍵交換用のデータの交換に使用する。  Diffie-Hellman 鍵交換については次スライド参照。

1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Next Payload |C| RESERVED | Payload Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Diffie-Hellman Group Num | RESERVED |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |~ Key Exchange Data ~| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Diffie-Hellman Group Num:次スライドの pを決定するパラメータ。Key Exchange Data:次スライドの g。

Page 61: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 20/35 )• Diffie-Hellman 鍵交換    安全に秘密鍵を共有する方法。

Initiator Responder

a :秘密鍵p :素数g : p の原始根

p 、 g

b :秘密鍵

b :秘密鍵p 、 g

AA : g^a mod p

B B : g^b mod p

s : B^a mod ps :秘密鍵

s : A^b mod ps :秘密鍵

Page 62: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 21/35 )• Identification Payload :フォーマット

  ID の確認に使用する。  ID に IP アドレスを使用する場合、 TS と一致する必要はない。 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Next Payload |C| RESERVED | Payload Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| ID Type | RESERVED |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |~ Identification Data ~| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Page 63: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 22/35 )• Identification Payload :フィールドField Length 説明ID Type 1 octet ID の Type 。下記参照。RESERVED 3 octet 0 を設定し、無視すること。Identification Data variable ID Type の値。

ID Type Value 説明ID_IPV4_ADDR 1 IPv4 アドレス。 4オクテット。ID_FQDN 2 FQDN 。 NULL 、 CR などで終端しないこと。ID_RFC822_ADDR 3 RFC822 の email address 。 NULL 、 CR などで終端しないこと。

realm を含む NAI を ID に使用する場合にも使用される。ID_IPV6_ADDR 5 IPv6 アドレス。 16オクテット。ID_DER_ASN1_DN 9 X.500 の ANS.1 。ID_DER_ASN1_GN 10 X.509 の ANS.1 。ID_KEY_ID 11 ベンダー固有で規定するバイト列。 realm を含まない NAI

を ID に使用する場合にも使用される。

Page 64: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 23/35 )• Certificate Payload :フォーマット 証明書を送信する。  1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Next Payload |C| RESERVED | Payload Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Cert Encoding | |+-+-+-+-+-+-+-+-+ |~ Certificate Data ~| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Page 65: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 24/35 )• Certificate Payload :フィールドField Length 説明Certificate Encoding 1 octet Certificate Data filed に含まれる証明書の種別。Certificate Data variable Certificate Encoding field で指定されたデータ。

Certificate Encoding Value

PKCS #7 wrapped X.509 certificate 1PGP Certificate 2DNS Signed Key 3X.509 Certificate - Signature 4Kerberos Token 6Certificate Revocation List (CRL) 7Authority Revocation List (ARL) 8SPKI Certificate 9X.509 Certificate – Attribute 10Raw RSA Key 11Hash and URL of X.509 certificate 12Hash and URL of X.509 bundle 13

Page 66: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 25/35 )• Certificate Request Payload :フォーマット 証明書を要求する。

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Next Payload |C| RESERVED | Payload Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Cert Encoding | |+-+-+-+-+-+-+-+-+ |~ Certification Authority ~| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Page 67: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 26/35 )• Nonce Payload :フォーマット

  IKE SA の Key の計算に使用するランダムな値。 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Next Payload |C| RESERVED | Payload Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |~ Nonce Data ~| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Nonce Data:送信側によって生成されたランダムな値。 16~ 256オクテットであること。

Page 68: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 27/35 )• Delete Payload :フォーマット 送信者が SAD から削除する SPI を通知する。 同じプロトコル( IKE/ESP/AH )の SPI ならば 1 Delete Payload に複数含んでよい。  1 INFORMATIONAL Exchange に複数 Delete Payload が含まれてもよい。

1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Next Payload |C| RESERVED | Payload Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Protocol ID | SPI Size | Num of SPIs |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |~ Security Parameter Index(es) (SPI) ~| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Page 69: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 28/35 )• Delete Payload :フィールド

Field Length 説明Protocol ID 1 octet 1 : IKE SA 。 2 : AH 。 3 : ESP 。SPI Size 1 octet 0 : IKE 。 4 : AH/ESP 。Num of SPIs 2 octets Delete Payload に含まれる SPI の数。SPI variable 削除する SA の ID

Page 70: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 29/35 )• Vendor ID Payload :フォーマット

 ベンダー定義の定数が含まれる。 デバッグ、プロトコル拡張に使用される。 任意の Exchange に任意の数の Vendor ID Payload を含めてよい。 未知の Vendor ID Payload は無視すること。 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Next Payload |C| RESERVED | Payload Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |~ Vendor ID (VID) ~| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Page 71: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 30/35 )• Configuration Payload :フォーマット 設定情報の交換に使用する。 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Next Payload |C| RESERVED | Payload Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| CFG Type | RESERVED |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |~ Configuration Attributes ~| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Configuration Attribute 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|R| Attribute Type | Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |~ Value ~| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Page 72: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 31/35 )• Configuration Payload :フィールドField Length 説明CFG Type 1 octet Exchange のタイプ。

CFG_REQUEST : 1 、 CFG_REPLY : 2 、 CFG_SET :3 、 CFG_ACK : 4

Configuration Attributes

variable 設定情報を示す Type Length Value構造体。

Page 73: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 32/35 )• Configuration Attribute :フィールドField Length 説明Attribute Type 15 bits Configuration Attribute の type 。Length 2 octets Configuration Attribute のオクテット長。Value variable Configuration Attribute 。 Attribute Type Value Multi-Valued Length ------------------------------------------------------------ INTERNAL_IP4_ADDRESS 1 YES* 0 or 4 octets INTERNAL_IP4_NETMASK 2 NO 0 or 4 octets INTERNAL_IP4_DNS 3 YES 0 or 4 octets INTERNAL_IP4_NBNS 4 YES 0 or 4 octets INTERNAL_IP4_DHCP 6 YES 0 or 4 octets APPLICATION_VERSION 7 NO 0 or more INTERNAL_IP6_ADDRESS 8 YES* 0 or 17 octets INTERNAL_IP6_DNS 10 YES 0 or 16 octets INTERNAL_IP6_DHCP 12 YES 0 or 16 octets INTERNAL_IP4_SUBNET 13 YES 0 or 8 octets SUPPORTED_ATTRIBUTES 14 NO Multiple of 2 INTERNAL_IP6_SUBNET 15 YES 17 octets

Page 74: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 33/35 )• Configuration Payload : IPv6 設定の例

IPv6 アドレス、 IPv6DNS アドレスを要求。

CP(CFG_REQUEST) = INTERNAL_IP6_ADDRESS() INTERNAL_IP6_DNS() TSi = (0, 0-65535, :: - FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF) TSr = (0, 0-65535, :: - FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF)

IPv6 アドレス、 IPv6DNS アドレスを応答。TSi を範囲指定。

CP(CFG_REPLY) = INTERNAL_IP6_ADDRESS(2001:DB8:0:1:2:3:4:5/64) INTERNAL_IP6_DNS(2001:DB8:99:88:77:66:55:44) TSi = (0, 0-65535, 2001:DB8:0:1:2:3:4:5 - 2001:DB8:0:1:2:3:4:5) TSr = (0, 0-65535, :: - FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF)

Page 75: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 34/35 )• EAP Payload :フォーマット  EAP 認証で使用する Payload 。 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Next Payload |C| RESERVED | Payload Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |~ EAP Message ~| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

EAP Message フォーマット 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Code | Identifier | Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Type | Type_Data...+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Page 76: Rfc5996(internet key exchange protocol version 2 (ik ev2))

Header and Payload Formats ( 35/35 )• EAP Payload :フィールド

Field Length 説明Code 1 octet Request (1), Response (2), Success (3), Failure (4) を示す。Identifier 1 octet メッセージの ID 。再送の識別に使用される。Length 2 octets EAP Message の length 。Type 1 octet Request(1) / Response(2) で存在する。

Request(1) :要求するデータ。 Response(2) 要求されたデータ or NAK 。

Type_Data variable Request(1) / Response(2) で存在する。EAP Method によって異なる。