RFC 5996(IKEv2)のまとめ資料。
・もくじ
IPsecの概要(オリジナル)
Introduction(Section 1)
Header and Payload Formats(Section 3)
Exchanges and Payloads(Appendix C)
IKE Protocol Details and Variations(Section 2)
RFC 4306(旧IKEv2のRFC)との差分
4. /132
IPsecの概要(1/10)
• 関連する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
21. /132
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の作成完了。
21
【KEi】 forward secrecyのためにDiffie-
Hellman値を変更する場合に設定する。
【KEr】requestにKEiがあった場合に設定する。
Introduction(7/12)
22. /132
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に設定する。
22
新しいResponderのIKE SA SPIは
SAのSPI filedに設定する。
新しいIKE SA:message counter、Message IDは0。Window Sizeは1。 Original Initiator はRekeyを開始した側。
古いIKE SA:IKE SAを削除するまでパラメーターは維持する。
Introduction(8/12)
23. /132
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で識別する。Protocol IDはESP 2, AH 3。
通常は元のSAと同じSA、TSが設定される。
①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を指定する場合に使用。
23
【KEi】 forward secrecyのためにDiffie-
Hellman値を変更する場合に設定する。
Introduction(9/12)
28. /132
Header and Payload Formats
• IKEメッセージはUDP Port 500/4500を使用する。
– UDP 500 Port
• UDPヘッダの直後がIKEメッセージ
– UDP 4500 Port
• UDPヘッダの後、4オクテットの0の後にIKEメッセージ
※4オクテットの0はIKEメッセージではない。length、checksumの計算には含まない。
※UDPカプセル化の際にESPパケットと区別するために設定する。
• UNSPECIFIEDのパラメーターは相互運用のため
には使用しないこと。
28Header and Payload Formats(1/55)
29. /132
IKEv2のPayloadとPayload Type
• Payload Type 1~32はIKEv1で割り当てられているため、使用しないこと。
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
29Header and Payload Formats(2/55)
30. /132
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
30Header and Payload Formats(3/55)
31. /132
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の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のオクテット長。
31Header and Payload Formats(4/55)
32. /132
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
32Header and Payload Formats(5/55)
40. /132
Security Association Payload:フィールド
Transform Substructureフィールド(1/4)
Field Length 説明
0 (last) or 3(more) 1 octet 最後のProposalであるかを示す。
RESERVED 1 octet 0を設定し、無視すること。
Transform Length 2 octets Header、Attributeを含むTransformのオクテット長。
Transform Type 1 octet プロトコルの種別。オプション。
Transform ID 1 octet Transform Typeの識別子。
Transform Attributes 1 octet 8:IKE。4:ESP/AH。Initial IKE SA Exchangeでは0。
説明 Transform Type プロトコル
Optional(Responder任せ) 0 IKE、AH、ESP、
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
40Header and Payload Formats(13/55)
41. /132
Security Association Payload:フィールド
Transform Substructureフィールド(2/4)
Transform Type 1(Encryption Algorithm)の場合
41
Name Trans Form ID Number 定義
ENCR_DES_IV64 1 UNSPECIFIED
ENCR_DES 2 RFC2305、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(14/55)
42. /132
Security Association Payload:フィールド
Transform Substructureフィールド(3/4)
Transform Type 2(Pseudorandom function)の場合
Transform Type 3(Integrity Algorithm)の場合
42
Name Trans Form ID Number 定義
PRF_HMAC_MD5 1 RFC2104、MD5
PRF_HMAC_SHA1 2 RFC2104、SHA
PRF_HMAC_TIGER 3 UNSPECIFIED
Name Trans Form ID Number 定義
NONE 0
AUTH_HMAC_MD5_96 1 RFC2403
AUTH_HMAC_SHA1_96 2 RFC2403
AUTH_DES_MAC 3 UNSPECIFIED
AUTH_KPDK_MD5 4 UNSPECIFIED
AUTH_AES_XCBC_96 5 RFC3566
Header and Payload Formats(15/55)
43. /132
Security Association Payload:フィールド
Transform Substructureフィールド(4/4)
Transform Type 4(Diffie-Hellman group)
Transform Type 5(Extended Sequence Numbers)
43
Name Trans Form ID Number 定義
NONE 0
768-bit MODP 1 RFC5996
1024-bit MODP 2 RFC5996
1536-bit MODP 5 RFC2451
2048-bit MODP 14 RFC2451、IDEA
3072-bit MODP 15 RFC2451
4096-bit MODP 16 RFC2451
6144-bit MODP 17 RFC3526
8192-bit MODP 18 RFC3526
Name Trans Form ID Number
No Extended Sequence Numbers 0
Extended Sequence Numbers 1
Header and Payload Formats(16/55)
44. /132
Security Association Payload:フィールド
プロトコル毎に必須/オプションのTransform Typeが異なる。
※Encrypted payloadにIntegrity algorithmを使用するのが必須のため。
必須のアルゴリズムは規定しない。
(アルゴリズムが危殆化、陳腐化する場合があるため)
44
Protocol Mandatory Type Optional Type
IKE ENCR、PRF、INTEG※、D-H
ESP ENCR、ESN INTEG、D-H
AH INTEG、ESN D-H
Header and Payload Formats(17/55)
46. /132
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
46Header and Payload Formats(19/55)
88. /132
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
88Exchanges and Payloads(5/10)
89. /132
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+]
89Exchanges and Payloads(6/10)
90. /132
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
90Exchanges and Payloads(7/10)
91. /132
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の要求
91Exchanges and Payloads(8/10)
92. /132
CREATE_CHILD_SA Exchange for Rekeying
the IKE SA(Request/Response)
SA, Ni, KEi
[V+][N+]
Response
SA, Nr, KEr
[V+][N+]
Request
92Exchanges and Payloads(9/10)