SlideShare a Scribd company logo
1 of 76
RFC 5996
Internet Key Exchange Protocol Version 2 (IKEv2)
by 長谷川
もくじ
• 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と順番を変えている。
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など 大量にある
IPsecの概要(2/7)
• IPsecとIKEv2は独立したもの。
※IKEv2がなくても手動で鍵管理ができればIPsecできる。
• IPsec
– AH/ESPによるIPパケットの暗号化、認証
• IKEv2
– 暗号化鍵の管理
• パケットの暗号化、完全性保証
• パケットの認証、通信相手の認証
• 秘密鍵の共有
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#2
IPパケット
処理
暗号化
(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#2
IPパケット
パラメータ
IPパケット
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パケット
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#2
IPパケット
処理
IPsecの概要(7/7)
• 以上の手順中でのIKEv2の役割
– SPD、SAD作成のための情報のやりとり
– SADの鍵管理
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の削除。エラー通知。
Introduction(2/11)
• シーケンス上の略称
表記 Payload
AUTH Authentication
CERT/CERTREQ Certificate/Certificate Request
CP Configuration
D Delete
EAP Extensible Authentication
HDR IKE header
IDi/IDr Initiator’s Identification/Responder’s Identification
KE Key Exchange
Ni/Nr Nonce
N Notify
SA Security Asscociation
SK Encrypted and Authentication
TSi/TSr Initiator’s Traffic Selector/Responder’s Traffic Selector
V Vendor ID
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
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を指定する場合に使用。
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
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を生成すること
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 Ni
SK
暗号化→
TSi TSr
[KEi]
option
HDR SA Nr
SK
暗号化→
TSi TSr
[KEr]
option
③Child SAの作成完了。
Introduction(8/11)
• Rekeying IKE SA(CREATE_CHILD_SA Exchange)
– IKE SAをrekeyする。
Initiator Responder
HDR SA Ni
SK
暗号化→
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 Nr
SK
暗号化→
KEr
新しいInitiatorのIKE SA SPIはSA
のSPI filedに設定する。
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 Nr
SK
暗号化→
[KEr]
option
TSi TSr
【SAi2】Child SA用のSA 【IDr】ResponderのIDを指定する場合に使用。
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
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を削除すること。
Exchanges and Payloads(1/10)
• IKEv2 exchangeのpayload確認用。
• Vendor ID(V) payloadはすべてのメッセージ
の任意の場所に含まれてよい。
• 以降のexchangeでは最適な場所に記載され
ている。
• [X]はpayload Xがoptionであることを示す。
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の要求
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
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+]
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
Exchanges and Payloads(6/10)
• IKE_AUTH Exchange with EAP(Request/Response)
EAP
Request
AUTH
最後のResponse
EAP
Response
… 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+]
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
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の要求
Exchanges and Payloads(9/10)
• CREATE_CHILD_SA Exchange for Rekeying the IKE SA(Request/Response)
SA, Ni, KEi
[V+][N+]
Response
SA, Nr, KEr
[V+][N+]
Request
Exchanges and Payloads(10/10)
• INFORMATIONAL Exchange(Request/Response)
[N+],
[D+],
[CP(CFG_REQUEST)]
Response [N+],
[D+],
[CP(CFG_REPLY)]
Request
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が重複する可能性があるため)。
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が未サポートの場合、無視する。
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のSPI
Y:ResponderのSPI
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に対して十分な長さのものを設定する。
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と定義する。
“|”を連結と定義する。
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 Payload
SK_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。
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}
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を
算出すること。
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に設定されること。
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}
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の競合処理の明確化。
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の計算には含まれない。
Header and Payload Formats(2/35)
• IKEv2のPayloadとPayload Type
Payload 略記 Payload Type
No Next Payload - 0
Security Association SA 33
Key Exchange KE 34
Identification Initiator / Responder IDi / IDr 35 / 36
Certificate CERT 37
Certificate Request CERTREQ 38
Authentication AUTH 39
Nonce Ni / Nr 40
Notify N 41
Delete D 42
Vendor ID V 43
Traffic Selector Initiator/ Responder TSi / TSr 44 / 45
Encrypted SK 46
Configuration C 47
Extensible Authentication Protocol(EAP) EAP 48
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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のオクテット長。
Header and Payload Formats(5/35)
• IKE Header:Exchange Type、Flag
Exchange Type Value
IKE_SA_INIT 34
IKE_AUTH 35
CREATE_CHILD_SA 36
INFORMATIONAL 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:1
Cleared:0
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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のオクテット長。
Header and Payload Formats(8/35)
• Security Association Payload:フォーマット
SAのネゴシエーションに使用される。
3階層でSAを表現する。
Proposal – Transform - Attribute
SA 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 )
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を含む。
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> ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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。
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 ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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
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)
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 0
AUTH_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)
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 0
768-bit MODP 1 Appendix B
1024-bit MODP 2 Appendix B
1536-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 0
Extended Sequence Numbers 1
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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
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。
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 p
s:秘密鍵
s:A^b mod p
s:秘密鍵
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 ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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に
使用する場合にも使用される。
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 ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 1
PGP Certificate 2
DNS Signed Key 3
X.509 Certificate - Signature 4
Kerberos Token 6
Certificate Revocation List (CRL) 7
Authority Revocation List (ARL) 8
SPKI Certificate 9
X.509 Certificate – Attribute 10
Raw RSA Key 11
Hash and URL of X.509 certificate 12
Hash and URL of X.509 bundle 13
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 ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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オクテッ
トであること。
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) ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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
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) ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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構造体。
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
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)
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...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
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によって異なる。

More Related Content

Viewers also liked

IP Security in Network Security NS6
IP Security in Network Security NS6IP Security in Network Security NS6
IP Security in Network Security NS6
koolkampus
 

Viewers also liked (7)

Lecture 5 ip security
Lecture 5 ip securityLecture 5 ip security
Lecture 5 ip security
 
Firewall, Trusted Systems,IP Security ,ESP Encryption and Authentication
Firewall, Trusted Systems,IP Security ,ESP Encryption and AuthenticationFirewall, Trusted Systems,IP Security ,ESP Encryption and Authentication
Firewall, Trusted Systems,IP Security ,ESP Encryption and Authentication
 
Protocole IKE/IPsec
Protocole IKE/IPsecProtocole IKE/IPsec
Protocole IKE/IPsec
 
Ipsec
IpsecIpsec
Ipsec
 
IPSec Overview
IPSec OverviewIPSec Overview
IPSec Overview
 
Internet Key Exchange (ikev2) Protocol
Internet Key Exchange (ikev2) ProtocolInternet Key Exchange (ikev2) Protocol
Internet Key Exchange (ikev2) Protocol
 
IP Security in Network Security NS6
IP Security in Network Security NS6IP Security in Network Security NS6
IP Security in Network Security NS6
 

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

Similar to Rfc5996(internet key exchange protocol version 2 (ik ev2)) (11)

20150715 xflow kikuta_final
20150715 xflow kikuta_final20150715 xflow kikuta_final
20150715 xflow kikuta_final
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlow
 
SRX5000シリーズ for Cloud Builders ~Trailer version~ マクニカ&ジュニパー共同資料
SRX5000シリーズ for Cloud Builders ~Trailer version~ マクニカ&ジュニパー共同資料SRX5000シリーズ for Cloud Builders ~Trailer version~ マクニカ&ジュニパー共同資料
SRX5000シリーズ for Cloud Builders ~Trailer version~ マクニカ&ジュニパー共同資料
 
LagopusとAzureとIPsecとDPDK
LagopusとAzureとIPsecとDPDKLagopusとAzureとIPsecとDPDK
LagopusとAzureとIPsecとDPDK
 
A Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezA Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on Tez
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
 
4章 Linuxカーネル - 割り込み・例外 2
4章 Linuxカーネル - 割り込み・例外 24章 Linuxカーネル - 割り込み・例外 2
4章 Linuxカーネル - 割り込み・例外 2
 
Cisco Connect Japan 2014: MPLS アドバンス
Cisco Connect Japan 2014: MPLS アドバンスCisco Connect Japan 2014: MPLS アドバンス
Cisco Connect Japan 2014: MPLS アドバンス
 
Network as a Service - Data plane evolution and abstraction by NSM
Network as a Service - Data plane evolution and abstraction by NSMNetwork as a Service - Data plane evolution and abstraction by NSM
Network as a Service - Data plane evolution and abstraction by NSM
 
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
 
Flexible 1.36 inch 16*128 SPI SSD1316 Monochrome OLED Screen Module Panel
Flexible 1.36 inch 16*128 SPI SSD1316 Monochrome OLED Screen Module PanelFlexible 1.36 inch 16*128 SPI SSD1316 Monochrome OLED Screen Module Panel
Flexible 1.36 inch 16*128 SPI SSD1316 Monochrome OLED Screen Module Panel
 

More from Tetsuya Hasegawa

More from Tetsuya Hasegawa (20)

CVE-2021-3156 Baron samedit (sudoの脆弱性)
CVE-2021-3156 Baron samedit (sudoの脆弱性)CVE-2021-3156 Baron samedit (sudoの脆弱性)
CVE-2021-3156 Baron samedit (sudoの脆弱性)
 
RFC8528(YANG Schema Mount)の勉強資料
RFC8528(YANG Schema Mount)の勉強資料RFC8528(YANG Schema Mount)の勉強資料
RFC8528(YANG Schema Mount)の勉強資料
 
RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料
RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料
RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料
 
面白いセキュリティツール その2
面白いセキュリティツール その2面白いセキュリティツール その2
面白いセキュリティツール その2
 
RFC7589(NETCONF Protocol over TLS)の勉強資料
RFC7589(NETCONF Protocol over TLS)の勉強資料RFC7589(NETCONF Protocol over TLS)の勉強資料
RFC7589(NETCONF Protocol over TLS)の勉強資料
 
RFC8632(A YANG Data Model for Alarm Management)の勉強資料
RFC8632(A YANG Data Model for Alarm Management)の勉強資料RFC8632(A YANG Data Model for Alarm Management)の勉強資料
RFC8632(A YANG Data Model for Alarm Management)の勉強資料
 
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
 
RFC8341(Network Configuration Access Control Model)の勉強資料。
RFC8341(Network Configuration Access Control Model)の勉強資料。RFC8341(Network Configuration Access Control Model)の勉強資料。
RFC8341(Network Configuration Access Control Model)の勉強資料。
 
RFC8525(YANG Library)の勉強資料。
RFC8525(YANG Library)の勉強資料。RFC8525(YANG Library)の勉強資料。
RFC8525(YANG Library)の勉強資料。
 
3GPP F1インターフェース(TS38.470-f50)の概要
3GPP F1インターフェース(TS38.470-f50)の概要3GPP F1インターフェース(TS38.470-f50)の概要
3GPP F1インターフェース(TS38.470-f50)の概要
 
RFC8340(YANG Tree Diagrams)の勉強資料
RFC8340(YANG Tree Diagrams)の勉強資料RFC8340(YANG Tree Diagrams)の勉強資料
RFC8340(YANG Tree Diagrams)の勉強資料
 
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
 
RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料
RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料
RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料
 
RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6243(With-defaults Capability for NETCONF)の勉強資料RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6243(With-defaults Capability for NETCONF)の勉強資料
 
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
 
RFC5277(NETCONF Event Notifications)の勉強資料
RFC5277(NETCONF Event Notifications)の勉強資料RFC5277(NETCONF Event Notifications)の勉強資料
RFC5277(NETCONF Event Notifications)の勉強資料
 
5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向
5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向
5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向
 
MCPC第5回イノベーションチャレンジセミナーメモ
MCPC第5回イノベーションチャレンジセミナーメモMCPC第5回イノベーションチャレンジセミナーメモ
MCPC第5回イノベーションチャレンジセミナーメモ
 
面白いセキュリティツール
面白いセキュリティツール面白いセキュリティツール
面白いセキュリティツール
 
3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめ3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめ
 

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

  • 1. RFC 5996 Internet Key Exchange Protocol Version 2 (IKEv2) by 長谷川
  • 2. もくじ • 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と順番を変えている。
  • 3. 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など 大量にある
  • 4. IPsecの概要(2/7) • IPsecとIKEv2は独立したもの。 ※IKEv2がなくても手動で鍵管理ができればIPsecできる。 • IPsec – AH/ESPによるIPパケットの暗号化、認証 • IKEv2 – 暗号化鍵の管理 • パケットの暗号化、完全性保証 • パケットの認証、通信相手の認証 • 秘密鍵の共有
  • 5. 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#2 IPパケット 処理
  • 6. 暗号化 (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#2 IPパケット パラメータ IPパケット
  • 7. 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パケット
  • 8. 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#2 IPパケット 処理
  • 10. 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の削除。エラー通知。
  • 11. Introduction(2/11) • シーケンス上の略称 表記 Payload AUTH Authentication CERT/CERTREQ Certificate/Certificate Request CP Configuration D Delete EAP Extensible Authentication HDR IKE header IDi/IDr Initiator’s Identification/Responder’s Identification KE Key Exchange Ni/Nr Nonce N Notify SA Security Asscociation SK Encrypted and Authentication TSi/TSr Initiator’s Traffic Selector/Responder’s Traffic Selector V Vendor ID
  • 12. 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
  • 13. 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を指定する場合に使用。
  • 14. 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
  • 15. 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を生成すること
  • 16. 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 Ni SK 暗号化→ TSi TSr [KEi] option HDR SA Nr SK 暗号化→ TSi TSr [KEr] option ③Child SAの作成完了。
  • 17. Introduction(8/11) • Rekeying IKE SA(CREATE_CHILD_SA Exchange) – IKE SAをrekeyする。 Initiator Responder HDR SA Ni SK 暗号化→ 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 Nr SK 暗号化→ KEr 新しいInitiatorのIKE SA SPIはSA のSPI filedに設定する。
  • 18. 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 Nr SK 暗号化→ [KEr] option TSi TSr 【SAi2】Child SA用のSA 【IDr】ResponderのIDを指定する場合に使用。
  • 19. 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
  • 20. 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を削除すること。
  • 21. Exchanges and Payloads(1/10) • IKEv2 exchangeのpayload確認用。 • Vendor ID(V) payloadはすべてのメッセージ の任意の場所に含まれてよい。 • 以降のexchangeでは最適な場所に記載され ている。 • [X]はpayload Xがoptionであることを示す。
  • 22. 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の要求
  • 23. 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
  • 24. 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+]
  • 25. 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
  • 26. Exchanges and Payloads(6/10) • IKE_AUTH Exchange with EAP(Request/Response) EAP Request AUTH 最後のResponse EAP Response … 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+]
  • 27. 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
  • 28. 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の要求
  • 29. Exchanges and Payloads(9/10) • CREATE_CHILD_SA Exchange for Rekeying the IKE SA(Request/Response) SA, Ni, KEi [V+][N+] Response SA, Nr, KEr [V+][N+] Request
  • 30. Exchanges and Payloads(10/10) • INFORMATIONAL Exchange(Request/Response) [N+], [D+], [CP(CFG_REQUEST)] Response [N+], [D+], [CP(CFG_REPLY)] Request
  • 31. 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が重複する可能性があるため)。
  • 32. 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が未サポートの場合、無視する。
  • 33. 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のSPI Y:ResponderのSPI
  • 34. 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に対して十分な長さのものを設定する。
  • 35. 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と定義する。 “|”を連結と定義する。
  • 36. 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 Payload SK_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。
  • 37. 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}
  • 38. 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を 算出すること。
  • 39. 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に設定されること。
  • 40. 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}
  • 41. 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の競合処理の明確化。
  • 42. 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の計算には含まれない。
  • 43. Header and Payload Formats(2/35) • IKEv2のPayloadとPayload Type Payload 略記 Payload Type No Next Payload - 0 Security Association SA 33 Key Exchange KE 34 Identification Initiator / Responder IDi / IDr 35 / 36 Certificate CERT 37 Certificate Request CERTREQ 38 Authentication AUTH 39 Nonce Ni / Nr 40 Notify N 41 Delete D 42 Vendor ID V 43 Traffic Selector Initiator/ Responder TSi / TSr 44 / 45 Encrypted SK 46 Configuration C 47 Extensible Authentication Protocol(EAP) EAP 48
  • 44. 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 45. 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のオクテット長。
  • 46. Header and Payload Formats(5/35) • IKE Header:Exchange Type、Flag Exchange Type Value IKE_SA_INIT 34 IKE_AUTH 35 CREATE_CHILD_SA 36 INFORMATIONAL 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:1 Cleared:0
  • 47. 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 48. 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のオクテット長。
  • 49. Header and Payload Formats(8/35) • Security Association Payload:フォーマット SAのネゴシエーションに使用される。 3階層でSAを表現する。 Proposal – Transform - Attribute SA 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 )
  • 50. 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を含む。
  • 51. 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> ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 52. 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。
  • 53. 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 ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 54. 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
  • 55. 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)
  • 56. 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 0 AUTH_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)
  • 57. 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 0 768-bit MODP 1 Appendix B 1024-bit MODP 2 Appendix B 1536-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 0 Extended Sequence Numbers 1
  • 58. 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 59. 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
  • 60. 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。
  • 61. 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 p s:秘密鍵 s:A^b mod p s:秘密鍵
  • 62. 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 ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 63. 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に 使用する場合にも使用される。
  • 64. 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 ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 65. 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 1 PGP Certificate 2 DNS Signed Key 3 X.509 Certificate - Signature 4 Kerberos Token 6 Certificate Revocation List (CRL) 7 Authority Revocation List (ARL) 8 SPKI Certificate 9 X.509 Certificate – Attribute 10 Raw RSA Key 11 Hash and URL of X.509 certificate 12 Hash and URL of X.509 bundle 13
  • 66. 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 ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 67. 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オクテッ トであること。
  • 68. 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) ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 69. 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
  • 70. 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) ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 71. 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 ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 72. 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構造体。
  • 73. 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
  • 74. 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)
  • 75. 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... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
  • 76. 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によって異なる。