idnits 2.17.1 draft-eronen-ipsec-ikev2-clarifications-09.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** It looks like you're using RFC 3978 boilerplate. You should update this to the boilerplate described in the IETF Trust License Policy document (see https://trustee.ietf.org/license-info), which is required now. -- Found old boilerplate from RFC 3978, Section 5.1 on line 16. -- Found old boilerplate from RFC 3978, Section 5.5 on line 2600. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 2611. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 2618. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 2624. ** This document has an original RFC 3978 Section 5.4 Copyright Line, instead of the newer IETF Trust Copyright according to RFC 4748. ** This document has an original RFC 3978 Section 5.5 Disclaimer, instead of the newer disclaimer which includes the IETF Trust according to RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- == There are 24 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. == There are 1 instance of lines with private range IPv4 addresses in the document. If these are generic example addresses, they should be changed to use any of the ranges defined in RFC 6890 (or successor): 192.0.2.x, 198.51.100.x or 203.0.113.x. == There are 1 instance of lines with non-RFC3849-compliant IPv6 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (May 4, 2006) is 6566 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Missing Reference: 'KEi' is mentioned on line 2555, but not defined == Missing Reference: 'KEr' is mentioned on line 2557, but not defined -- Looks like a reference, but probably isn't: '1' on line 915 == Missing Reference: 'IDr' is mentioned on line 2508, but not defined ** Obsolete normative reference: RFC 4306 (ref. 'IKEv2') (Obsoleted by RFC 5996) ** Obsolete normative reference: RFC 4307 (ref. 'IKEv2ALG') (Obsoleted by RFC 8247) ** Obsolete normative reference: RFC 2437 (ref. 'PKCS1v20') (Obsoleted by RFC 3447) ** Obsolete normative reference: RFC 3447 (ref. 'PKCS1v21') (Obsoleted by RFC 8017) ** Obsolete normative reference: RFC 2401 (Obsoleted by RFC 4301) == Outdated reference: A later version (-06) exists of draft-hoffman-ike-ipsec-hash-use-01 -- Obsolete informational reference (is this intentional?): RFC 3775 (ref. 'MIPv6') (Obsoleted by RFC 6275) -- Obsolete informational reference (is this intentional?): RFC 4282 (ref. 'NAI') (Obsoleted by RFC 7542) -- Obsolete informational reference (is this intentional?): RFC 2822 (Obsoleted by RFC 5322) -- Obsolete informational reference (is this intentional?): RFC 3664 (Obsoleted by RFC 4434) -- Obsolete informational reference (is this intentional?): RFC 822 (Obsoleted by RFC 2822) == Outdated reference: A later version (-33) exists of draft-ietf-pkix-scvp-21 Summary: 8 errors (**), 0 flaws (~~), 10 warnings (==), 13 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group P. Eronen 3 Internet-Draft Nokia 4 Intended status: Informational P. Hoffman 5 Expires: November 5, 2006 VPN Consortium 6 May 4, 2006 8 IKEv2 Clarifications and Implementation Guidelines 9 draft-eronen-ipsec-ikev2-clarifications-09.txt 11 Status of this Memo 13 By submitting this Internet-Draft, each author represents that any 14 applicable patent or other IPR claims of which he or she is aware 15 have been or will be disclosed, and any of which he or she becomes 16 aware will be disclosed, in accordance with Section 6 of BCP 79. 18 Internet-Drafts are working documents of the Internet Engineering 19 Task Force (IETF), its areas, and its working groups. Note that 20 other groups may also distribute working documents as Internet- 21 Drafts. 23 Internet-Drafts are draft documents valid for a maximum of six months 24 and may be updated, replaced, or obsoleted by other documents at any 25 time. It is inappropriate to use Internet-Drafts as reference 26 material or to cite them other than as "work in progress." 28 The list of current Internet-Drafts can be accessed at 29 http://www.ietf.org/ietf/1id-abstracts.txt. 31 The list of Internet-Draft Shadow Directories can be accessed at 32 http://www.ietf.org/shadow.html. 34 This Internet-Draft will expire on November 5, 2006. 36 Copyright Notice 38 Copyright (C) The Internet Society (2006). 40 Abstract 42 This document clarifies many areas of the IKEv2 specification. It 43 does not to introduce any changes to the protocol, but rather 44 provides descriptions that are less prone to ambiguous 45 interpretations. The purpose of this document is to encourage the 46 development of interoperable implementations. 48 Table of Contents 50 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 51 2. Creating the IKE_SA . . . . . . . . . . . . . . . . . . . . . 4 52 2.1. SPI values in IKE_SA_INIT exchange . . . . . . . . . . . . 4 53 2.2. Message IDs for IKE_SA_INIT messages . . . . . . . . . . . 5 54 2.3. Retransmissions of IKE_SA_INIT requests . . . . . . . . . 5 55 2.4. Interaction of COOKIE and INVALID_KE_PAYLOAD . . . . . . . 6 56 2.5. Invalid cookies . . . . . . . . . . . . . . . . . . . . . 8 57 3. Authentication . . . . . . . . . . . . . . . . . . . . . . . . 8 58 3.1. Data included in AUTH payload calculation . . . . . . . . 8 59 3.2. Hash function for RSA signatures . . . . . . . . . . . . . 9 60 3.3. Encoding method for RSA signatures . . . . . . . . . . . . 10 61 3.4. Identification type for EAP . . . . . . . . . . . . . . . 10 62 3.5. Identity for policy lookups when using EAP . . . . . . . . 11 63 3.6. Certificate encoding types . . . . . . . . . . . . . . . . 11 64 3.7. Shared key authentication and fixed PRF key size . . . . . 12 65 3.8. EAP authentication and fixed PRF key size . . . . . . . . 13 66 3.9. Matching ID payloads to certificate contents . . . . . . . 13 67 3.10. Message IDs for IKE_AUTH messages . . . . . . . . . . . . 13 68 4. Creating CHILD_SAs . . . . . . . . . . . . . . . . . . . . . . 13 69 4.1. Creating SAs with the CREATE_CHILD_SA exchange . . . . . . 13 70 4.2. Creating an IKE_SA without a CHILD_SA . . . . . . . . . . 16 71 4.3. Diffie-Hellman for first CHILD_SA . . . . . . . . . . . . 16 72 4.4. Extended Sequence Numbers (ESN) transform . . . . . . . . 16 73 4.5. Negotiation of ESP_TFC_PADDING_NOT_SUPPORTED . . . . . . . 17 74 4.6. Negotiation of NON_FIRST_FRAGMENTS_ALSO . . . . . . . . . 17 75 4.7. Semantics of complex traffic selector payloads . . . . . . 18 76 4.8. ICMP type/code in traffic selector payloads . . . . . . . 18 77 4.9. Mobility header in traffic selector payloads . . . . . . . 19 78 4.10. Narrowing the traffic selectors . . . . . . . . . . . . . 20 79 4.11. SINGLE_PAIR_REQUIRED . . . . . . . . . . . . . . . . . . . 20 80 4.12. Traffic selectors violating own policy . . . . . . . . . . 21 81 4.13. Traffic selector authorization . . . . . . . . . . . . . . 21 82 5. Rekeying and deleting SAs . . . . . . . . . . . . . . . . . . 22 83 5.1. Rekeying SAs with the CREATE_CHILD_SA exchange . . . . . . 23 84 5.2. Rekeying the IKE_SA vs. reauthentication . . . . . . . . . 24 85 5.3. SPIs when rekeying the IKE_SA . . . . . . . . . . . . . . 25 86 5.4. SPI when rekeying a CHILD_SA . . . . . . . . . . . . . . . 25 87 5.5. Changing PRFs when rekeying the IKE_SA . . . . . . . . . . 25 88 5.6. Deleting vs. closing SAs . . . . . . . . . . . . . . . . . 25 89 5.7. Deleting a CHILD_SA pair . . . . . . . . . . . . . . . . . 26 90 5.8. Deleting an IKE_SA . . . . . . . . . . . . . . . . . . . . 26 91 5.9. Who is the original initiator of IKE_SA . . . . . . . . . 26 92 5.10. Comparing nonces . . . . . . . . . . . . . . . . . . . . . 27 93 5.11. Exchange collisions . . . . . . . . . . . . . . . . . . . 27 94 5.12. Diffie-Hellman and rekeying the IKE_SA . . . . . . . . . . 36 95 6. Configuration payloads . . . . . . . . . . . . . . . . . . . . 36 96 6.1. Assigning IP addresses . . . . . . . . . . . . . . . . . . 36 97 6.2. Requesting any INTERNAL_IP4/IP6_ADDRESS . . . . . . . . . 37 98 6.3. INTERNAL_IP4_SUBNET/INTERNAL_IP6_SUBNET . . . . . . . . . 38 99 6.4. INTERNAL_IP4_NETMASK . . . . . . . . . . . . . . . . . . . 40 100 6.5. Configuration payloads for IPv6 . . . . . . . . . . . . . 41 101 6.6. INTERNAL_IP6_NBNS . . . . . . . . . . . . . . . . . . . . 43 102 6.7. INTERNAL_ADDRESS_EXPIRY . . . . . . . . . . . . . . . . . 43 103 6.8. Address assignment failures . . . . . . . . . . . . . . . 43 104 7. Miscellaneous issues . . . . . . . . . . . . . . . . . . . . . 44 105 7.1. Matching ID_IPV4_ADDR and ID_IPV6_ADDR . . . . . . . . . . 44 106 7.2. Relationship of IKEv2 to RFC4301 . . . . . . . . . . . . . 44 107 7.3. Reducing the window size . . . . . . . . . . . . . . . . . 45 108 7.4. Minimum size of nonces . . . . . . . . . . . . . . . . . . 45 109 7.5. Initial zero octets on port 4500 . . . . . . . . . . . . . 45 110 7.6. Destination port for NAT traversal . . . . . . . . . . . . 46 111 7.7. SPI values for messages outside of an IKE_SA . . . . . . . 46 112 7.8. Protocol ID/SPI fields in Notify payloads . . . . . . . . 47 113 7.9. Which message should contain INITIAL_CONTACT . . . . . . . 47 114 7.10. Alignment of payloads . . . . . . . . . . . . . . . . . . 47 115 7.11. Key length transform attribute . . . . . . . . . . . . . . 48 116 7.12. IPsec IANA considerations . . . . . . . . . . . . . . . . 48 117 7.13. Combining ESP and AH . . . . . . . . . . . . . . . . . . . 49 118 8. Implementation mistakes . . . . . . . . . . . . . . . . . . . 49 119 9. Security considerations . . . . . . . . . . . . . . . . . . . 50 120 10. IANA considerations . . . . . . . . . . . . . . . . . . . . . 50 121 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 50 122 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 50 123 12.1. Normative References . . . . . . . . . . . . . . . . . . . 50 124 12.2. Informative References . . . . . . . . . . . . . . . . . . 51 125 Appendix A. Exchanges and payloads . . . . . . . . . . . . . . . 53 126 A.1. IKE_SA_INIT exchange . . . . . . . . . . . . . . . . . . . 53 127 A.2. IKE_AUTH exchange without EAP . . . . . . . . . . . . . . 54 128 A.3. IKE_AUTH exchange with EAP . . . . . . . . . . . . . . . . 55 129 A.4. CREATE_CHILD_SA exchange for creating/rekeying 130 CHILD_SAs . . . . . . . . . . . . . . . . . . . . . . . . 56 131 A.5. CREATE_CHILD_SA exchange for rekeying the IKE_SA . . . . . 56 132 A.6. INFORMATIONAL exchange . . . . . . . . . . . . . . . . . . 56 133 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 56 134 Intellectual Property and Copyright Statements . . . . . . . . . . 58 136 1. Introduction 138 This document clarifies many areas of the IKEv2 specification that 139 may be difficult to understand to developers not intimately familiar 140 with the specification and its history. The clarifications in this 141 document come from the discussion on the IPsec WG mailing list, from 142 experience in interoperability testing, and from implementation 143 issues that have been brought to the editors' attention. 145 IKEv2/IPsec can be used for several different purposes, including 146 IPsec-based remote access (sometimes called the "road warrior" case), 147 site-to-site virtual private networks (VPNs), and host-to-host 148 protection of application traffic. While this document attempts to 149 consider all of these uses, the remote access scenario has perhaps 150 received more attention here than the other uses. 152 This document does not place any requirements on anyone, and does not 153 use [RFC2119] keywords such as "MUST" and "SHOULD", except in 154 quotations from the original IKEv2 documents. The requirements are 155 given in the IKEv2 specification [IKEv2] and IKEv2 cryptographic 156 algorithms document [IKEv2ALG]. 158 In this document, references to a numbered section (such as "Section 159 2.15") mean that section in [IKEv2]. References to mailing list 160 messages or threads refer to the IPsec WG mailing list at 161 ipsec@ietf.org. Archives of the mailing list can be found at 162 . 164 2. Creating the IKE_SA 166 2.1. SPI values in IKE_SA_INIT exchange 168 Normal IKE messages include the initiator's and responder's SPIs, 169 both of which are non-zero, in the IKE header. However, there are 170 some corner cases where the IKEv2 specification is not fully 171 consistent about what values should be used. 173 First, Section 3.1 says that the Responder's SPI "...MUST NOT be zero 174 in any other message" (than the first message of the IKE_SA_INIT 175 exchange). However, the figure in Section 2.6 shows the second 176 IKE_SA_INIT message as "HDR(A,0), N(COOKIE)", contradicting the text 177 in 3.1. 179 Since the responder's SPI identifies security-related state held by 180 the responder, and in this case no state is created, sending a zero 181 value seems reasonable. 183 Second, in addition to cookies, there are several other cases when 184 the IKE_SA_INIT exchange does not result in the creation of an IKE_SA 185 (for instance, INVALID_KE_PAYLOAD or NO_PROPOSAL_CHOSEN). What 186 responder SPI value should be used in the IKE_SA_INIT response in 187 this case? 189 Since the IKE_SA_INIT request always has a zero responder SPI, the 190 value will not be actually used by the initiator. Thus, we think 191 sending a zero value is correct also in this case. 193 If the responder sends a non-zero responder SPI, the initiator should 194 not reject the response only for that reason. However, when retrying 195 the IKE_SA_INIT request, the initiator will use a zero responder SPI, 196 as described in Section 3.1: "Responder's SPI [...] This value MUST 197 be zero in the first message of an IKE Initial Exchange (including 198 repeats of that message including a cookie) [...]". We believe the 199 intent was to cover repeats of that message due to other reasons, 200 such as INVALID_KE_PAYLOAD, as well. 202 (References: "INVALID_KE_PAYLOAD and clarifications document" thread, 203 Sep-Oct 2005.) 205 2.2. Message IDs for IKE_SA_INIT messages 207 The Message ID for IKE_SA_INIT messages is always zero. This 208 includes retries of the message due to responses such as COOKIE and 209 INVALID_KE_PAYLOAD. 211 This is because Message IDs are part of the IKE_SA state, and when 212 the responder replies to IKE_SA_INIT request with N(COOKIE) or 213 N(INVALID_KE_PAYLOAD), the responder does not allocate any state. 215 (References: "Question about N(COOKIE) and N(INVALID_KE_PAYLOAD) 216 combination" thread, Oct 2004. Tero Kivinen's mail "Comments of 217 draft-eronen-ipsec-ikev2-clarifications-02.txt", 2005-04-05.) 219 2.3. Retransmissions of IKE_SA_INIT requests 221 When a responder receives an IKE_SA_INIT request, it has to determine 222 whether the packet is a retransmission belonging to an existing 223 "half-open" IKE_SA (in which case the responder retransmits the same 224 response), or a new request (in which case the responder creates a 225 new IKE_SA and sends a fresh response). 227 The specification does not describe in detail how this determination 228 is done. In particular, it is not sufficient to use the initiator's 229 SPI and/or IP address for this purpose: two different peers behind a 230 single NAT could choose the same initiator SPI (and the probability 231 of this happening is not necessarily small, since IKEv2 does not 232 require SPIs to be chosen randomly). Instead, the responder should 233 do the IKE_SA lookup using the whole packet or its hash (or at the 234 minimum, the Ni payload which is always chosen randomly). 236 For all other packets than IKE_SA_INIT requests, looking up right 237 IKE_SA is of course done based on the recipient's SPI (either the 238 initiator or responder SPI depending on the value of the Initiator 239 bit in the IKE header). 241 2.4. Interaction of COOKIE and INVALID_KE_PAYLOAD 243 There are two common reasons why the initiator may have to retry the 244 IKE_SA_INIT exchange: the responder requests a cookie or wants a 245 different Diffie-Hellman group than was included in the KEi payload. 246 Both of these cases are quite simple alone, but it is not totally 247 obvious what happens when they occur at the same time, that is, the 248 IKE_SA_INIT exchange is retried several times. 250 The main question seems to be the following: if the initiator 251 receives a cookie from the responder, should it include the cookie in 252 only the next retry of the IKE_SA_INIT request, or in all subsequent 253 retries as well? Section 3.10.1 says that: 255 "This notification MUST be included in an IKE_SA_INIT request 256 retry if a COOKIE notification was included in the initial 257 response." 259 This could be interpreted as saying that when a cookie is received in 260 the initial response, it is included in all retries. On the other 261 hand, Section 2.6 says that: 263 "Initiators who receive such responses MUST retry the 264 IKE_SA_INIT with a Notify payload of type COOKIE containing 265 the responder supplied cookie data as the first payload and 266 all other payloads unchanged." 268 Including the same cookie in later retries makes sense only if the 269 "all other payloads unchanged" restriction applies only to the first 270 retry, but not to subsequent retries. 272 It seems that both interpretations can peacefully co-exist. If the 273 initiator includes the cookie only in the next retry, one additional 274 roundtrip may be needed in some cases: 276 Initiator Responder 277 ----------- ----------- 278 HDR(A,0), SAi1, KEi, Ni --> 279 <-- HDR(A,0), N(COOKIE) 280 HDR(A,0), N(COOKIE), SAi1, KEi, Ni --> 281 <-- HDR(A,0), N(INVALID_KE_PAYLOAD) 282 HDR(A,0), SAi1, KEi', Ni --> 283 <-- HDR(A,0), N(COOKIE') 284 HDR(A,0), N(COOKIE'), SAi1, KEi',Ni --> 285 <-- HDR(A,B), SAr1, KEr, Nr 287 An additional roundtrip is needed also if the initiator includes the 288 cookie in all retries, but the responder does not support this 289 functionality. For instance, if the responder includes the SAi1 and 290 KEi payloads in cookie calculation, it will reject the request by 291 sending a new cookie (see also Section 2.5 of this document for more 292 text about invalid cookies): 294 Initiator Responder 295 ----------- ----------- 296 HDR(A,0), SAi1, KEi, Ni --> 297 <-- HDR(A,0), N(COOKIE) 298 HDR(A,0), N(COOKIE), SAi1, KEi, Ni --> 299 <-- HDR(A,0), N(INVALID_KE_PAYLOAD) 300 HDR(A,0), N(COOKIE), SAi1, KEi', Ni --> 301 <-- HDR(A,0), N(COOKIE') 302 HDR(A,0), N(COOKIE'), SAi1, KEi',Ni --> 303 <-- HDR(A,B), SAr1, KEr, Nr 305 If both peers support including the cookie in all retries, a slightly 306 shorter exchange can happen: 308 Initiator Responder 309 ----------- ----------- 310 HDR(A,0), SAi1, KEi, Ni --> 311 <-- HDR(A,0), N(COOKIE) 312 HDR(A,0), N(COOKIE), SAi1, KEi, Ni --> 313 <-- HDR(A,0), N(INVALID_KE_PAYLOAD) 314 HDR(A,0), N(COOKIE), SAi1, KEi', Ni --> 315 <-- HDR(A,B), SAr1, KEr, Nr 317 This document recommends that implementations should support this 318 shorter exchange, but it must not be assumed the other peer also 319 supports the shorter exchange. 321 In theory, even this exchange has one unnecessary roundtrip, as both 322 the cookie and Diffie-Hellman group could be checked at the same 323 time: 325 Initiator Responder 326 ----------- ----------- 327 HDR(A,0), SAi1, KEi, Ni --> 328 <-- HDR(A,0), N(COOKIE), 329 N(INVALID_KE_PAYLOAD) 330 HDR(A,0), N(COOKIE), SAi1, KEi',Ni --> 331 <-- HDR(A,B), SAr1, KEr, Nr 333 However, it is clear that this case is not allowed by the text in 334 Section 2.6, since "all other payloads" clearly includes the KEi 335 payload as well. 337 (References: "INVALID_KE_PAYLOAD and clarifications document" thread, 338 Sep-Oct 2005.) 340 2.5. Invalid cookies 342 There has been some confusion what should be done when an IKE_SA_INIT 343 request containing an invalid cookie is received ("invalid" in the 344 sense that its contents do not match the value expected by the 345 responder). 347 The correct action is to ignore the cookie, and process the message 348 as if no cookie had been included (usually this means sending a 349 response containing a new cookie). This is shown in Section 2.6 when 350 it says "The responder in that case MAY reject the message by sending 351 another response with a new cookie [...]". 353 Other possible actions, such as ignoring the whole request (or even 354 all requests from this IP address for some time), create strange 355 failure modes even in the absence of any malicious attackers, and do 356 not provide any additional protection against DoS attacks. 358 (References: "Invalid Cookie" thread, Sep-Oct 2005.) 360 3. Authentication 362 3.1. Data included in AUTH payload calculation 364 Section 2.15 describes how the AUTH payloads are calculated; this 365 calculation involves values prf(SK_pi,IDi') and prf(SK_pr,IDr'). The 366 text describes the method in words, but does not give clear 367 definitions of what is signed or MACed. 369 The initiator's signed octets can be described as: 371 InitiatorSignedOctets = RealMessage1 | NonceRData | MACedIDForI 372 GenIKEHDR = [ four octets 0 if using port 4500 ] | RealIKEHDR 373 RealIKEHDR = SPIi | SPIr | . . . | Length 374 RealMessage1 = RealIKEHDR | RestOfMessage1 375 NonceRPayload = PayloadHeader | NonceRData 376 InitiatorIDPayload = PayloadHeader | RestOfIDPayload 377 RestOfInitIDPayload = IDType | RESERVED | InitIDData 378 MACedIDForI = prf(SK_pi, RestOfInitIDPayload) 380 The responder's signed octets can be described as: 382 ResponderSignedOctets = RealMessage2 | NonceIData | MACedIDForR 383 GenIKEHDR = [ four octets 0 if using port 4500 ] | RealIKEHDR 384 RealIKEHDR = SPIi | SPIr | . . . | Length 385 RealMessage2 = RealIKEHDR | RestOfMessage2 386 NonceIPayload = PayloadHeader | NonceIData 387 ResponderIDPayload = PayloadHeader | RestOfIDPayload 388 RestOfRespIDPayload = IDType | RESERVED | InitIDData 389 MACedIDForR = prf(SK_pr, RestOfRespIDPayload) 391 3.2. Hash function for RSA signatures 393 Section 3.8 says that RSA digital signature is "Computed as specified 394 in section 2.15 using an RSA private key over a PKCS#1 padded hash." 396 Unlike IKEv1, IKEv2 does not negotiate a hash function for the 397 IKE_SA. The algorithm for signatures is selected by the signing 398 party who, in general, may not know beforehand what algorithms the 399 verifying party supports. Furthermore, [IKEv2ALG] does not say what 400 algorithms implementations are required or recommended to support. 401 This clearly has a potential for causing interoperability problems, 402 since authentication will fail if the signing party selects an 403 algorithm that is not supported by the verifying party, or not 404 acceptable according to the verifying party's policy. 406 This document recommends that all implementations support SHA-1, and 407 use SHA-1 as the default hash function when generating the 408 signatures, unless there are good reasons (such as explicit manual 409 configuration) to believe that the peer supports something else. 411 Note that hash function collision attacks are not important for the 412 AUTH payloads, since they are not intended for third-party 413 verification, and the data includes fresh nonces. See [HashUse] for 414 more discussion about hash function attacks and IPsec. 416 Another reasonable choice would be to use the hash function that was 417 used by the CA when signing the peer certificate. However, this does 418 not guarantee that the IKEv2 peer would be able to validate the AUTH 419 payload, because the same code might not be used to validate 420 certificate signatures and IKEv2 message signatures, and these two 421 routines may support a different set of hash algorithms. The peer 422 could be configured with a fingerprint of the certificate, or 423 certificate validation could be performed by an external entity using 424 [SCVP]. Furthermore, not all CERT payloads types include a 425 signature, and the certificate could be signed with some algorithm 426 other than RSA. 428 Note that unlike IKEv1, IKEv2 uses the PKCS#1 v1.5 [PKCS1v20] 429 signature encoding method (see next section for details), which 430 includes the algorithm identifier for the hash algorithm. Thus, when 431 the verifying party receives the AUTH payload it can at least 432 determine which hash function was used. 434 (References: Magnus Nystrom's mail "RE:", 2005-01-03. Pasi Eronen's 435 reply, 2005-01-04. Tero Kivinen's reply, 2005-01-04. "First draft 436 of IKEv2.1" thread, Dec 2005/Jan 2006.) 438 3.3. Encoding method for RSA signatures 440 Section 3.8 says that the RSA digital signature is "Computed as 441 specified in section 2.15 using an RSA private key over a PKCS#1 442 padded hash." 444 The PKCS#1 specification [PKCS1v21] defines two different encoding 445 methods (ways of "padding the hash") for signatures. However, the 446 Internet-Draft approved by the IESG had a reference to the older 447 PKCS#1 v2.0 [PKCS1v20]. That version has only one encoding method 448 for signatures (EMSA-PKCS1-v1_5), and thus there is no ambiguity. 450 Note that this encoding method is different from the encoding method 451 used in IKEv1. If future revisions of IKEv2 provide support for 452 other encoding methods (such as EMSA-PSS), they will be given new 453 Auth Method numbers. 455 (References: Pasi Eronen's mail "RE:", 2005-01-04.) 457 3.4. Identification type for EAP 459 Section 3.5 defines several different types for identification 460 payloads, including, e.g., ID_FQDN, ID_RFC822_ADDR, and ID_KEY_ID. 461 EAP [EAP] does not mandate the use of any particular type of 462 identifier, but often EAP is used with Network Access Identifiers 463 (NAIs) defined in [NAI]. Although NAIs look a bit like email 464 addresses (e.g., "joe@example.com"), the syntax is not exactly the 465 same as the syntax of email address in [RFC822]. This raises the 466 question of which identification type should be used. 468 This document recommends that ID_RFC822_ADDR identification type is 469 used for those NAIs that include the realm component. Therefore, 470 responder implementations should not attempt to verify that the 471 contents actually conform to the exact syntax given in [RFC822] or 472 [RFC2822], but instead should accept any reasonable looking NAI. 474 For NAIs that do not include the realm component, this document 475 recommends using the ID_KEY_ID identification type. 477 (References: "need your help on this IKEv2/i18n/EAP issue" and "IKEv2 478 identifier issue with EAP" threads, Aug 2004.) 480 3.5. Identity for policy lookups when using EAP 482 When the initiator authentication uses EAP, it is possible that the 483 contents of the IDi payload is used only for AAA routing purposes and 484 selecting which EAP method to use. This value may be different from 485 the identity authenticated by the EAP method (see [EAP], Sections 5.1 486 and 7.3). 488 It is important that policy lookups and access control decisions use 489 the actual authenticated identity. Often the EAP server is 490 implemented in a separate AAA server that communicates with the IKEv2 491 responder using, e.g., RADIUS [RADEAP]. In this case, the 492 authenticated identity has to be sent from the AAA server to the 493 IKEv2 responder. 495 (References: Pasi Eronen's mail "RE: Reauthentication in IKEv2", 496 2004-10-28. "Policy lookups" thread, Oct/Nov 2004. RFC 3748, 497 Section 7.3.) 499 3.6. Certificate encoding types 501 Section 3.6 defines a total of twelve different certificate encoding 502 types, and continues that "Specific syntax is for some of the 503 certificate type codes above is not defined in this document." 504 However, the text does not provide references to other documents that 505 would contain information about the exact contents and use of those 506 values. 508 Without this information, it is not possible to develop interoperable 509 implementations. Therefore, this document recommends that the 510 following certificate encoding values should not be used before new 511 specifications that specify their use are available. 513 PKCS #7 wrapped X.509 certificate 1 514 PGP Certificate 2 515 DNS Signed Key 3 516 Kerberos Token 6 517 SPKI Certificate 9 519 This document recommends that most implementations should use only 520 those values that are "MUST"/"SHOULD" requirements in [IKEv2]; i.e., 521 "X.509 Certificate - Signature" (4), "Raw RSA Key" (11), "Hash and 522 URL of X.509 certificate" (12), and "Hash and URL of X.509 bundle" 523 (13). 525 Furthermore, Section 3.7 says that the "Certificate Encoding" field 526 for the Certificate Request payload uses the same values as for 527 Certificate payload. However, the contents of the "Certification 528 Authority" field are defined only for X.509 certificates (presumably 529 covering at least types 4, 10, 12, and 13). This document recommends 530 that other values should not be used before new specifications that 531 specify their use are available. 533 The "Raw RSA Key" type needs one additional clarification. Section 534 3.6 says it contains "a PKCS #1 encoded RSA key". What this means is 535 a DER-encoded RSAPublicKey structure from PKCS#1 [PKCS1v21]. 537 3.7. Shared key authentication and fixed PRF key size 539 Section 2.15 says that "If the negotiated prf takes a fixed-size key, 540 the shared secret MUST be of that fixed size". This statement is 541 correct: the shared secret must be of the correct size. If it is 542 not, it cannot be used; there is no padding, truncation, or other 543 processing involved to force it to that correct size. 545 This requirement means that it is difficult to use these PRFs with 546 shared key authentication. The authors think this part of the 547 specification was very poorly thought out, and using PRFs with a 548 fixed key size is likely to result in interoperability problems. 549 Thus, we recommend that such PRFs should not be used with shared key 550 authentication. PRF_AES128_XCBC [RFC3664] originally used fixed key 551 sizes; that RFC has been updated to handle variable key sizes in 552 [RFC3664bis]. 554 Note that Section 2.13 also contains text that is related to PRFs 555 with fixed key size: "When the key for the prf function has fixed 556 length, the data provided as a key is truncated or padded with zeros 557 as necessary unless exceptional processing is explained following the 558 formula". However, this text applies only to the prf+ construction, 559 so it does not contradict the text in Section 2.15. 561 (References: Paul Hoffman's mail "Re: ikev2-07: last nits", 562 2003-05-02. Hugo Krawczyk's reply, 2003-05-12. Thread "Question 563 about PRFs with fixed size key", Jan 2005.) 565 3.8. EAP authentication and fixed PRF key size 567 As described in the previous section, PRFs with a fixed key size 568 require a shared secret of exactly that size. This restriction 569 applies also to EAP authentication. For instance, a PRF that 570 requires a 128-bit key cannot be used with EAP since [EAP] specifies 571 that the MSK is at least 512 bits long. 573 (References: Thread "Question about PRFs with fixed size key", Jan 574 2005.) 576 3.9. Matching ID payloads to certificate contents 578 In IKEv1, there was some confusion about whether or not the 579 identities in certificates used to authenticate IKE were required to 580 match the contents of the ID payloads. The PKI4IPsec Working Group 581 produced the document [PKI4IPsec] which covers this topic in much 582 more detail. However, Section 3.5 of [IKEv2] explicitly says that 583 the ID payload "does not necessarily have to match anything in the 584 CERT payload". 586 3.10. Message IDs for IKE_AUTH messages 588 According to Section 2.2, "The IKE_SA initial setup messages will 589 always be numbered 0 and 1." That is true when the IKE_AUTH exchange 590 does not use EAP. When EAP is used, each pair of messages has their 591 message numbers incremented. The first pair of AUTH messages will 592 have an ID of 1, the second will be 2, and so on. 594 (References: "Question about MsgID in AUTH exchange" thread, April 595 2005.) 597 4. Creating CHILD_SAs 599 4.1. Creating SAs with the CREATE_CHILD_SA exchange 601 Section 1.3's organization does not lead to clear understanding of 602 what is needed in which environment. The section can be reorganized 603 with subsections for each use of the CREATE_CHILD_SA exchange 604 (creating child SAs, rekeying IKE SAs, and rekeying child SAs.) 606 The new Section 1.3 with subsections and the above changes might look 607 like the following. 609 NEW-1.3 The CREATE_CHILD_SA Exchange 611 The CREATE_CHILD_SA Exchange is used to create new CHILD_SAs and 612 to rekey both IKE_SAs and CHILD_SAs. This exchange consists of 613 a single request/response pair, and some of its function was 614 referred to as a phase 2 exchange in IKEv1. It MAY be initiated 615 by either end of the IKE_SA after the initial exchanges are 616 completed. 618 All messages following the initial exchange are 619 cryptographically protected using the cryptographic algorithms 620 and keys negotiated in the first two messages of the IKE 621 exchange. These subsequent messages use the syntax of the 622 Encrypted Payload described in section 3.14. All subsequent 623 messages include an Encrypted Payload, even if they are referred 624 to in the text as "empty". 626 The CREATE_CHILD_SA is used for rekeying IKE_SAs and CHILD_SAs. 627 This section describes the first part of rekeying, the creation 628 of new SAs; Section 2.8 covers the mechanics of rekeying, 629 including moving traffic from old to new SAs and the deletion of 630 the old SAs. The two sections must be read together to 631 understand the entire process of rekeying. 633 Either endpoint may initiate a CREATE_CHILD_SA exchange, so in 634 this section the term initiator refers to the endpoint 635 initiating this exchange. An implementation MAY refuse all 636 CREATE_CHILD_SA requests within an IKE_SA. 638 The CREATE_CHILD_SA request MAY optionally contain a KE payload 639 for an additional Diffie-Hellman exchange to enable stronger 640 guarantees of forward secrecy for the CHILD_SA or IKE_SA. The 641 keying material for the SA is a function of SK_d established 642 during the establishment of the IKE_SA, the nonces exchanged 643 during the CREATE_CHILD_SA exchange, and the Diffie-Hellman 644 value (if KE payloads are included in the CREATE_CHILD_SA 645 exchange). The details are described in sections 2.17 and 2.18. 647 If a CREATE_CHILD_SA exchange includes a KEi payload, at least 648 one of the SA offers MUST include the Diffie-Hellman group of 649 the KEi. The Diffie-Hellman group of the KEi MUST be an element 650 of the group the initiator expects the responder to accept 651 (additional Diffie-Hellman groups can be proposed). If the 652 responder rejects the Diffie-Hellman group of the KEi payload, 653 the responder MUST reject the request and indicate its preferred 654 Diffie-Hellman group in the INVALID_KE_PAYLOAD Notification 655 payload. In the case of such a rejection, the CREATE_CHILD_SA 656 exchange fails, and the initiator SHOULD retry the exchange with 657 a Diffie-Hellman proposal and KEi in the group that the 658 responder gave in the INVALID_KE_PAYLOAD. 660 NEW-1.3.1 Creating New CHILD_SAs with the CREATE_CHILD_SA Exchange 662 A CHILD_SA may be created by sending a CREATE_CHILD_SA request. 663 The CREATE_CHILD_SA request for creating a new CHILD_SA is: 665 Initiator Responder 666 ----------- ----------- 667 HDR, SK {[N+], SA, Ni, [KEi], 668 TSi, TSr} --> 670 The initiator sends SA offer(s) in the SA payload, a nonce in 671 the Ni payload, optionally a Diffie-Hellman value in the KEi 672 payload, and the proposed traffic selectors for the proposed 673 CHILD_SA in the TSi and TSr payloads. The request can also 674 contain Notify payloads that specify additional details for the 675 CHILD_SA: these include IPCOMP_SUPPORTED, USE_TRANSPORT_MODE, 676 ESP_TFC_PADDING_NOT_SUPPORTED, and NON_FIRST_FRAGMENTS_ALSO. 678 The CREATE_CHILD_SA response for creating a new CHILD_SA is: 680 <-- HDR, SK {[N+], SA, Nr, 681 [KEr], TSi, TSr} 683 The responder replies with the accepted offer in an SA payload, 684 and a Diffie-Hellman value in the KEr payload if KEi was 685 included in the request and the selected cryptographic suite 686 includes that group. As with the request, optional Notification 687 payloads can specify additional details for the CHILD_SA. 689 The traffic selectors for traffic to be sent on that SA are 690 specified in the TS payloads in the response, which may be a 691 subset of what the initiator of the CHILD_SA proposed. 693 The text about rekeying SAs can be found in Section 5.1 of this 694 document. 696 4.2. Creating an IKE_SA without a CHILD_SA 698 CHILD_SAs can be created either by being piggybacked on the IKE_AUTH 699 exchange, or using a separate CREATE_CHILD_SA exchange. The 700 specification is not clear about what happens if creating the 701 CHILD_SA during the IKE_AUTH exchange fails for some reason. 703 Our recommendation in this sitation is that the IKE_SA is created as 704 usual. This is also in line with how the CREATE_CHILD_SA exchange 705 works: a failure to create a CHILD_SA does not close the IKE_SA. 707 The list of responses in the IKE_AUTH exchange that do not prevent an 708 IKE_SA from being set up include at least the following: 709 NO_PROPOSAL_CHOSEN, TS_UNACCEPTABLE, SINGLE_PAIR_REQUIRED, 710 INTERNAL_ADDRESS_FAILURE, and FAILED_CP_REQUIRED. 712 (References: "Questions about internal address" thread, April, 2005.) 714 4.3. Diffie-Hellman for first CHILD_SA 716 Section 1.2 shows that IKE_AUTH messages do not contain KEi/KEr or 717 Ni/Nr payloads. This implies that the SA payload in IKE_AUTH 718 exchange cannot contain Transform Type 4 (Diffie-Hellman Group) with 719 any other value than NONE. Implementations should probably leave the 720 transform out entirely in this case. 722 4.4. Extended Sequence Numbers (ESN) transform 724 The description of the ESN transform in Section 3.3 has be proved 725 difficult to understand. The ESN transform has the following 726 meaning: 728 o A proposal containing one ESN transform with value 0 means "do not 729 use extended sequence numbers". 731 o A proposal containing one ESN transform with value 1 means "use 732 extended sequence numbers". 734 o A proposal containing two ESN transforms with values 0 and 1 means 735 "I support both normal and extended sequence numbers, you choose". 736 (Obviously this case is only allowed in requests; the response 737 will contain only one ESN transform.) 739 In most cases, the exchange initiator will include either the first 740 or third alternative in its SA payload. The second alternative is 741 rarely useful for the initiator: it means that using normal sequence 742 numbers is not acceptable (so if the responder does not support ESNs, 743 the exchange will fail with NO_PROPOSAL_CHOSEN). 745 Note that including the ESN transform is mandatory when creating 746 ESP/AH SAs (it was optional in earlier drafts of the IKEv2 747 specification). 749 (References: "Technical change needed to IKEv2 before publication", 750 "STRAW POLL: Dealing with the ESN negotiation interop issue in IKEv2" 751 and "Results of straw poll regarding: IKEv2 interoperability issue" 752 threads, March-April 2005.) 754 4.5. Negotiation of ESP_TFC_PADDING_NOT_SUPPORTED 756 The description of ESP_TFC_PADDING_NOT_SUPPORTED notification in 757 Section 3.10.1 says that "This notification asserts that the sending 758 endpoint will NOT accept packets that contain Flow Confidentiality 759 (TFC) padding". 761 However, the text does not say in which messages this notification 762 should be included, or whether the scope of this notification is a 763 single CHILD_SA or all CHILD_SAs of the peer. 765 Our interpretation is that the scope is a single CHILD_SA, and thus 766 this notification is included in messages containing an SA payload 767 negotiating a CHILD_SA. If neither endpoint accepts TFC padding, 768 this notification will be included in both the request proposing an 769 SA and the response accepting it. If this notification is included 770 in only one of the messages, TFC padding can still be sent in one 771 direction. 773 4.6. Negotiation of NON_FIRST_FRAGMENTS_ALSO 775 NON_FIRST_FRAGMENTS_ALSO notification is described in Section 3.10.1 776 simply as "Used for fragmentation control. See [RFC4301] for 777 explanation." 779 [RFC4301] says "Implementations that will transmit non-initial 780 fragments on a tunnel mode SA that makes use of non-trivial port (or 781 ICMP type/code or MH type) selectors MUST notify a peer via the IKE 782 NOTIFY NON_FIRST_FRAGMENTS_ALSO payload. The peer MUST reject this 783 proposal if it will not accept non-initial fragments in this context. 784 If an implementation does not successfully negotiate transmission of 785 non-initial fragments for such an SA, it MUST NOT send such fragments 786 over the SA." 788 However, it is not clear exactly how the negotiation works. Our 789 interpretation is that the negotiation works the same way as for 790 IPCOMP_SUPPORTED and USE_TRANSPORT_MODE: sending non-first fragments 791 is enabled only if NON_FIRST_FRAGMENTS_ALSO notification is included 792 in both the request proposing an SA and the response accepting it. 794 In other words, if the peer "rejects this proposal", it only omits 795 NON_FIRST_FRAGMENTS_ALSO notification from the response, but does not 796 reject the whole CHILD_SA creation. 798 4.7. Semantics of complex traffic selector payloads 800 As described in Section 3.13, the TSi/TSr payloads can include one or 801 more individual traffic selectors. 803 There is no requirement that TSi and TSr contain the same number of 804 individual traffic selectors. Thus, they are interpreted as follows: 805 a packet matches a given TSi/TSr if it matches at least one of the 806 individual selectors in TSi, and at least one of the individual 807 selectors in TSr. 809 For instance, the following traffic selectors: 811 TSi = ((17, 100, 192.0.1.66-192.0.1.66), 812 (17, 200, 192.0.1.66-192.0.1.66)) 813 TSr = ((17, 300, 0.0.0.0-255.255.255.255), 814 (17, 400, 0.0.0.0-255.255.255.255)) 816 would match UDP packets from 192.0.1.66 to anywhere, with any of the 817 four combinations of source/destination ports (100,300), (100,400), 818 (200,300), and (200, 400). 820 This implies that some types of policies may require several CHILD_SA 821 pairs. For instance, a policy matching only source/destination ports 822 (100,300) and (200,400), but not the other two combinations, cannot 823 be negotiated as a single CHILD_SA pair using IKEv2. 825 (References: "IKEv2 Traffic Selectors?" thread, Feb 2005.) 827 4.8. ICMP type/code in traffic selector payloads 829 The traffic selector types 7 and 8 can also refer to ICMP type and 830 code fields. As described in Section 3.13.1, "For the ICMP protocol, 831 the two one-octet fields Type and Code are treated as a single 16-bit 832 integer (with Type in the most significant eight bits and Code in the 833 least significant eight bits) port number for the purposes of 834 filtering based on this field." 836 Since ICMP packets do not have separate source and destination port 837 fields, there is some room for confusion what exactly the four TS 838 payloads (two in the request, two in the response, each containing 839 both start and end port fields) should contain. 841 The answer to this question can be found from [RFC4301] Section 842 4.4.1.3. 844 To give a concrete example, if a host at 192.0.1.234 wants to create 845 a transport mode SA for sending "Destination Unreachable" packets 846 (ICMPv4 type 3) to 192.0.2.155, but is not willing to receive them 847 over this SA pair, the CREATE_CHILD_SA exchange would look like this: 849 Initiator Responder 850 ----------- ----------- 851 HDR, SK { N(USE_TRANSPORT_MODE), SA, Ni, 852 TSi(1, 0x0300-0x03FF, 192.0.1.234-192.0.1.234), 853 TSr(1, 65535-0, 192.0.2.155-192.0.2.155) } --> 855 <-- HDR, SK { N(USE_TRANSPORT_MODE), SA, Nr, 856 TSi(1, 0x0300-0x03FF, 192.0.1.234-192.0.1.234), 857 TSr(1, 65535-0, 192.0.2.155-192.0.2.155) } 859 Since IKEv2 always creates IPsec SAs in pairs, two SAs are also 860 created in this case, even though the second SA is never used for 861 data traffic. 863 An exchange creating an SA pair that can be used both for sending and 864 receiving "Destination Unreachable" places the same value in all the 865 port: 867 Initiator Responder 868 ----------- ----------- 869 HDR, SK { N(USE_TRANSPORT_MODE), SA, Ni, 870 TSi(1, 0x0300-0x03FF, 192.0.1.234-192.0.1.234), 871 TSr(1, 0x0300-0x03FF, 192.0.2.155-192.0.2.155) } --> 873 <-- HDR, SK { N(USE_TRANSPORT_MODE), SA, Nr, 874 TSi(1, 0x0300-0x03FF, 192.0.1.234-192.0.1.234), 875 TSr(1, 0x0300-0x03FF, 192.0.2.155-192.0.2.155) } 877 (References: "ICMP and MH TSs for IKEv2" thread, Sep 2005.) 879 4.9. Mobility header in traffic selector payloads 881 Traffic selectors can use IP Protocol ID 135 to match the IPv6 882 mobility header [MIPv6]. However, the IKEv2 specification does not 883 define how to represent the "MH Type" field in traffic selectors. 885 At some point, it was expected that this will be defined in a 886 separate document later. However, [RFC4301] says that "For IKE, the 887 IPv6 mobility header message type (MH type) is placed in the most 888 significant eight bits of the 16 bit local "port" selector". The 889 direction semantics of TSi/TSr port fields are the same as for ICMP, 890 and are described in the previous section. 892 (References: Tero Kivinen's mail "Issue #86: Add IPv6 mobility header 893 message type as selector", 2003-10-14. "ICMP and MH TSs for IKEv2" 894 thread, Sep 2005.) 896 4.10. Narrowing the traffic selectors 898 Section 2.9 describes how traffic selectors are negotiated when 899 creating a CHILD_SA. A more concise summary of the narrowing process 900 is presented below. 902 o If the responder's policy does not allow any part of the traffic 903 covered by TSi/TSr, it responds with TS_UNACCEPTABLE. 905 o If the responder's policy allows the entire set of traffic covered 906 by TSi/TSr, no narrowing is necessary, and the responder can 907 return the same TSi/TSr values. 909 o Otherwise, narrowing is needed. If the responder's policy allows 910 all traffic covered by TSi[1]/TSr[1] (the first traffic selectors 911 in TSi/TSr) but not entire TSi/TSr, the responder narrows to an 912 acceptable subset of TSi/TSr that includes TSi[1]/TSr[1]. 914 o If the responder's policy does not allow all traffic covered by 915 TSi[1]/TSr[1], but does allow some parts of TSi/TSr, it narrows to 916 an acceptable subset of TSi/TSr. 918 In the last two cases, there may be several subsets that are 919 acceptable (but their union is not); in this case, the responder 920 arbitrarily chooses one of them, and includes ADDITIONAL_TS_POSSIBLE 921 notification in the response. 923 4.11. SINGLE_PAIR_REQUIRED 925 The description of the SINGLE_PAIR_REQUIRED notify payload in 926 Sections 2.9 and 3.10.1 is not fully consistent. 928 We do not attempt to describe this payload in this document either, 929 since it is expected that most implementations will not have policies 930 that require separate SAs for each address pair. 932 Thus, if only some part (or parts) of the TSi/TSr proposed by the 933 initiator is (are) acceptable to the responder, most responders 934 should simply narrow TSi/TSr to an acceptable subset (as described in 935 the last two paragraphs of Section 2.9), rather than use 936 SINGLE_PAIR_REQUIRED. 938 4.12. Traffic selectors violating own policy 940 Section 2.9 describes traffic selector negotiation in great detail. 941 One aspect of this negotiation that may need some clarification is 942 that when creating a new SA, the initiator should not propose traffic 943 selectors that violate its own policy. If this rule is not followed, 944 valid traffic may be dropped. 946 This is best illustrated by an example. Suppose that host A has a 947 policy whose effect is that traffic to 192.0.1.66 is sent via host B 948 encrypted using AES, and traffic to all other hosts in 192.0.1.0/24 949 is also sent via B, but encrypted using 3DES. Suppose also that host 950 B accepts any combination of AES and 3DES. 952 If host A now proposes an SA that uses 3DES, and includes TSr 953 containing (192.0.1.0-192.0.1.0.255), this will be accepted by host 954 B. Now, host B can also use this SA to send traffic from 192.0.1.66, 955 but those packets will be dropped by A since it requires the use of 956 AES for those traffic. Even if host A creates a new SA only for 957 192.0.1.66 that uses AES, host B may freely continue to use the first 958 SA for the traffic. In this situation, when proposing the SA, host A 959 should have followed its own policy, and included a TSr containing 960 ((192.0.1.0-192.0.1.65),(192.0.1.67-192.0.1.255)) instead. 962 In general, if (1) the initiator makes a proposal "for traffic X 963 (TSi/TSr), do SA", and (2) for some subset X' of X, the initiator 964 does not actually accept traffic X' with SA, and (3) the initiator 965 would be willing to accept traffic X' with some SA' (!=SA), valid 966 traffic can be unnecessarily dropped since the responder can apply 967 either SA or SA' to traffic X'. 969 (References: "Question about "narrowing" ..." thread, Feb 2005. 970 "IKEv2 needs a "policy usage mode"..." thread, Feb 2005. "IKEv2 971 Traffic Selectors?" thread, Feb 2005. "IKEv2 traffic selector 972 negotiation examples", 2004-08-08.) 974 4.13. Traffic selector authorization 976 IKEv2 relies on information in the Peer Authorization Database (PAD) 977 when determining what kind of IPsec SAs a peer is allowed to create. 978 This process is described in [RFC4301] Section 4.4.3. When a peer 979 requests the creation of an IPsec SA with some traffic selectors, the 980 PAD must contain "Child SA Authorization Data" linking the identity 981 authenticated by IKEv2 and the addresses permitted for traffic 982 selectors. 984 For example, the PAD might be configured so that authenticated 985 identity "sgw23.example.com" is allowed to create IPsec SAs for 986 192.0.2.0/24, meaning this security gateway is a valid 987 "representative" for these addresses. Host-to-host IPsec requires 988 similar entries, linking, for example, "fooserver4.example.com" with 989 192.0.1.66/32, meaning this identity a valid "owner" or 990 "representative" of the address in question. 992 As noted in [RFC4301], "It is necessary to impose these constraints 993 on creation of child SAs to prevent an authenticated peer from 994 spoofing IDs associated with other, legitimate peers." In the 995 example given above, a correct configuration of the PAD prevents 996 sgw23 from creating IPsec SAs with address 192.0.1.66, and prevents 997 fooserver4 from creating IPsec SAs with addresses from 192.0.2.0/24. 999 It is important to note that simply sending IKEv2 packets using some 1000 particular address does not imply a permission to create IPsec SAs 1001 with that address in the traffic selectors. For example, even if 1002 sgw23 would be able to spoof its IP address as 192.0.1.66, it could 1003 not create IPsec SAs matching fooserver4's traffic. 1005 The IKEv2 specification does not specify how exactly IP address 1006 assignment using configuration payloads interacts with the PAD. Our 1007 interpretation is that when a security gateway assigns an address 1008 using configuration payloads, it also creates a temporary PAD entry 1009 linking the authenticated peer identity and the newly allocated inner 1010 address. 1012 It has been recognized that configuring the PAD correctly may be 1013 difficult in some environments. For instance, if IPsec is used 1014 between a pair of hosts whose addresses are allocated dynamically 1015 using DHCP, it is extremely difficult to ensure that the PAD 1016 specifies the correct "owner" for each IP address. This would 1017 require a mechanism to securely convey address assignments from the 1018 DHCP server, and link them to identities authenticated using IKEv2. 1020 Due to this limitation, some vendors have been known to configure 1021 their PADs to allow an authenticated peer to create IPsec SAs with 1022 traffic selectors containing the same address that was used for the 1023 IKEv2 packets. In environments where IP spoofing is possible (i.e., 1024 almost everywhere) this essentially allows any peer to create IPsec 1025 SAs with any traffic selectors. This is not an appropriate or secure 1026 configuration in most circumstances. See [Aura05] for an extensive 1027 discussion about this issue, and the limitations of host-to-host 1028 IPsec in general. 1030 5. Rekeying and deleting SAs 1031 5.1. Rekeying SAs with the CREATE_CHILD_SA exchange 1033 Continued from Section 4.1 of this document. 1035 NEW-1.3.2 Rekeying IKE_SAs with the CREATE_CHILD_SA Exchange 1037 The CREATE_CHILD_SA request for rekeying an IKE_SA is: 1039 Initiator Responder 1040 ----------- ----------- 1041 HDR, SK {SA, Ni, [KEi]} --> 1043 The initiator sends SA offer(s) in the SA payload, a nonce in 1044 the Ni payload, and optionally a Diffie-Hellman value in the KEi 1045 payload. 1047 The CREATE_CHILD_SA response for rekeying an IKE_SA is: 1049 <-- HDR, SK {SA, Nr, [KEr]} 1051 The responder replies (using the same Message ID to respond) 1052 with the accepted offer in an SA payload, a nonce in the Nr 1053 payload, and, optionally, a Diffie-Hellman value in the KEr 1054 payload. 1056 The new IKE_SA has its message counters set to 0, regardless of 1057 what they were in the earlier IKE_SA. The window size starts at 1058 1 for any new IKE_SA. The new initiator and responder SPIs are 1059 supplied in the SPI fields of the SA payloads. 1061 NEW-1.3.3 Rekeying CHILD_SAs with the CREATE_CHILD_SA Exchange 1063 The CREATE_CHILD_SA request for rekeying a CHILD_SA is: 1065 Initiator Responder 1066 ----------- ----------- 1067 HDR, SK {N(REKEY_SA), [N+], SA, 1068 Ni, [KEi], TSi, TSr} --> 1070 The leading Notify payload of type REKEY_SA identifies the 1071 CHILD_SA being rekeyed, and contains the SPI that the initiator 1072 expects in the headers of inbound packets. In addition, the 1073 initiator sends SA offer(s) in the SA payload, a nonce in the Ni 1074 payload, optionally a Diffie-Hellman value in the KEi payload, 1075 and the proposed traffic selectors in the TSi and TSr payloads. 1076 The request can also contain Notify payloads that specify 1077 additional details for the CHILD_SA. 1079 The CREATE_CHILD_SA response for rekeying a CHILD_SA is: 1081 <-- HDR, SK {[N+], SA, Nr, 1082 [KEr], TSi, TSr} 1084 The responder replies with the accepted offer in an SA payload, 1085 and a Diffie-Hellman value in the KEr payload if KEi was 1086 included in the request and the selected cryptographic suite 1087 includes that group. 1089 The traffic selectors for traffic to be sent on that SA are 1090 specified in the TS payloads in the response, which may be a 1091 subset of what the initiator of the CHILD_SA proposed. 1093 5.2. Rekeying the IKE_SA vs. reauthentication 1095 Rekeying the IKE_SA and reauthentication are different concepts in 1096 IKEv2. Rekeying the IKE_SA establishes new keys for the IKE_SA and 1097 resets the Message ID counters, but it does not authenticate the 1098 parties again (no AUTH or EAP payloads are involved). 1100 While rekeying the IKE_SA may be important in some environments, 1101 reauthentication (the verification that the parties still have access 1102 to the long-term credentials) is often more important. 1104 IKEv2 does not have any special support for reauthentication. 1105 Reauthentication is done by creating a new IKE_SA from scratch (using 1106 IKE_SA_INIT/IKE_AUTH exchanges, without any REKEY_SA notify 1107 payloads), creating new CHILD_SAs within the new IKE_SA (without 1108 REKEY_SA notify payloads), and finally deleting the old IKE_SA (which 1109 deletes the old CHILD_SAs as well). 1111 This means that reauthentication also establishes new keys for the 1112 IKE_SA and CHILD_SAs. Therefore, while rekeying can be performed 1113 more often than reauthentication, the situation where "authentication 1114 lifetime" is shorter than "key lifetime" does not make sense. 1116 While creation of a new IKE_SA can be initiated by either party 1117 (initiator or responder in the original IKE_SA), the use of EAP 1118 authentication and/or configuration payloads means in practice that 1119 reauthentication has to be initiated by the same party as the 1120 original IKE_SA. IKEv2 does not currently allow the responder to 1121 request reauthentication in this case; however, there is ongoing work 1122 to add this functionality [ReAuth]. 1124 (References: "Reauthentication in IKEv2" thread, Oct/Nov 2004.) 1126 5.3. SPIs when rekeying the IKE_SA 1128 Section 2.18 says that "New initiator and responder SPIs are supplied 1129 in the SPI fields". This refers to the SPI fields in the Proposal 1130 structures inside the Security Association (SA) payloads, not the SPI 1131 fields in the IKE header. 1133 (References: Tom Stiemerling's mail "Rekey IKE SA", 2005-01-24. 1134 Geoffrey Huang's reply, 2005-01-24.) 1136 5.4. SPI when rekeying a CHILD_SA 1138 Section 3.10.1 says that in REKEY_SA notifications, "The SPI field 1139 identifies the SA being rekeyed." 1141 Since CHILD_SAs always exist in pairs, there are two different SPIs. 1142 The SPI placed in the REKEY_SA notification is the SPI the exchange 1143 initiator would expect in inbound ESP or AH packets (just as in 1144 Delete payloads). 1146 5.5. Changing PRFs when rekeying the IKE_SA 1148 When rekeying the IKE_SA, Section 2.18 says that "SKEYSEED for the 1149 new IKE_SA is computed using SK_d from the existing IKE_SA as 1150 follows: 1152 SKEYSEED = prf(SK_d (old), [g^ir (new)] | Ni | Nr)" 1154 If the old and new IKE_SA selected a different PRF, it is not totally 1155 clear which PRF should be used. 1157 Since the rekeying exchange belongs to the old IKE_SA, it is the old 1158 IKE_SA's PRF that is used. This also follows the principle that the 1159 same key (the old SK_d) should not be used with multiple 1160 cryptographic algorithms. 1162 Note that this may work poorly if the new IKE_SA's PRF has a fixed 1163 key size, since the output of the PRF may not be of the correct size. 1164 This supports our opinion earlier in the document that the use of 1165 PRFs with a fixed key size is a bad idea. 1167 (References: "Changing PRFs when rekeying the IKE_SA" thread, June 1168 2005.) 1170 5.6. Deleting vs. closing SAs 1172 The IKEv2 specification talks about "closing" and "deleting" SAs, but 1173 it is not always clear what exactly is meant. However, other parts 1174 of the specification make it clear that when local state related to a 1175 CHILD_SA is removed, the SA must also be actively deleted with a 1176 Delete payload. 1178 In particular, Section 2.4 says that "If an IKE endpoint chooses to 1179 delete CHILD_SAs, it MUST send Delete payloads to the other end 1180 notifying it of the deletion". Section 1.4 also explains that "ESP 1181 and AH SAs always exist in pairs, with one SA in each direction. 1182 When an SA is closed, both members of the pair MUST be closed." 1184 5.7. Deleting a CHILD_SA pair 1186 Section 1.4 describes how to delete SA pairs using the Informational 1187 exchange: "To delete an SA, an INFORMATIONAL exchange with one or 1188 more delete payloads is sent listing the SPIs (as they would be 1189 expected in the headers of inbound packets) of the SAs to be deleted. 1190 The recipient MUST close the designated SAs." 1192 The "one or more delete payloads" phrase has caused some confusion. 1193 You never send delete payloads for the two sides of an SA in a single 1194 message. If you have many SAs to delete at the same time (such as 1195 the nested example given in that paragraph), you include delete 1196 payloads for in inbound half of each SA in your Informational 1197 exchange. 1199 5.8. Deleting an IKE_SA 1201 Since IKE_SAs do not exist in pairs, it is not totally clear what the 1202 response message should contain when the request deleted the IKE_SA. 1204 Since there is no information that needs to be sent to the other side 1205 (except that the request was received), an empty Informational 1206 response seems like the most logical choice. 1208 (References: "Question about delete IKE SA" thread, May 2005.) 1210 5.9. Who is the original initiator of IKE_SA 1212 In the IKEv2 document, "initiator" refers to the party who initiated 1213 the exchange being described, and "original initiator" refers to the 1214 party who initiated the whole IKE_SA. However, there is some 1215 potential for confusion because the IKE_SA can be rekeyed by either 1216 party. 1218 To clear up this confusion, we propose that "original initiator" 1219 always refers to the party who initiated the exchange which resulted 1220 in the current IKE_SA. In other words, if the "original responder" 1221 starts rekeying the IKE_SA, that party becomes the "original 1222 initiator" of the new IKE_SA. 1224 (References: Paul Hoffman's mail "Original initiator in IKEv2", 2005- 1225 04-21.) 1227 5.10. Comparing nonces 1229 Section 2.8 about rekeying says that "If redundant SAs are created 1230 though such a collision, the SA created with the lowest of the four 1231 nonces used in the two exchanges SHOULD be closed by the endpoint 1232 that created it." 1234 Here "lowest" uses an octet-by-octet (lexicographical) comparison 1235 (instead of, for instance, comparing the nonces as large integers). 1236 In other words, start by comparing the first octet; if they're equal, 1237 move to the next octet, and so on. If you reach the end of one 1238 nonce, that nonce is the lower one. 1240 (References: "IKEv2 rekeying question" thread, July 2005.) 1242 5.11. Exchange collisions 1244 Since IKEv2 exchanges can be initiated by both peers, it is possible 1245 that two exchanges affecting the same SA partly overlap. This can 1246 lead to a situation where the SA state information is temporarily not 1247 synchronized, and a peer can receive a request it cannot process in a 1248 normal fashion. Some of these corner cases are discussed in the 1249 specification, some are not. 1251 Obviously, using a window size greater than one leads to infinitely 1252 more complex situations, especially if requests are processed out of 1253 order. In this section, we concentrate on problems that can arise 1254 even with window size 1. 1256 (References: "IKEv2: invalid SPI in DELETE payload" thread, Dec 2005/ 1257 Jan 2006. "Problem with exchanges collisions" thread, Dec 2005.) 1259 5.11.1. Simultaneous CHILD_SA close 1261 Probably the simplest case happens if both peers decide to close the 1262 same CHILD_SA pair at the same time: 1264 Host A Host B 1265 -------- -------- 1266 send req1: D(SPIa) --> 1267 <-- send req2: D(SPIb) 1268 --> recv req1 1269 <-- send resp1: () 1270 recv resp1 1271 recv req2 1272 send resp2: () --> 1273 --> recv resp2 1275 This case is described in Section 1.4, and is handled by omitting the 1276 Delete payloads from the response messages. 1278 5.11.2. Simultaneous IKE_SA close 1280 Both peers can also decide to close the IKE_SA at the same time. The 1281 desired end result is obvious; however, in certain cases the final 1282 exchanges may not be fully completed. 1284 Host A Host B 1285 -------- -------- 1286 send req1: D() --> 1287 <-- send req2: D() 1288 --> recv req1 1290 At this point, host B should reply as usual (with empty Informational 1291 response), close the IKE_SA, and stop retransmitting req2. This is 1292 because once host A receives resp1, it may not be able to reply any 1293 longer. The situation is symmetric, so host A should behave the same 1294 way. 1296 Host A Host B 1297 -------- -------- 1298 <-- send resp1: () 1299 send resp2: () 1301 Even if neither resp1 nor resp2 ever arrives, the end result is still 1302 correct: the IKE_SA is gone. The same happens if host A never 1303 receives req2. 1305 5.11.3. Simultaneous CHILD_SA rekeying 1307 Another case that is described in the specification is simultaneous 1308 rekeying. Section 2.8 says 1309 "If the two ends have the same lifetime policies, it is possible 1310 that both will initiate a rekeying at the same time (which will 1311 result in redundant SAs). To reduce the probability of this 1312 happening, the timing of rekeying requests SHOULD be jittered 1313 (delayed by a random amount of time after the need for rekeying is 1314 noticed). 1316 This form of rekeying may temporarily result in multiple similar 1317 SAs between the same pairs of nodes. When there are two SAs 1318 eligible to receive packets, a node MUST accept incoming packets 1319 through either SA. If redundant SAs are created though such a 1320 collision, the SA created with the lowest of the four nonces used 1321 in the two exchanges SHOULD be closed by the endpoint that created 1322 it." 1324 However, a better explanation on what impact this has on 1325 implementations is needed. Assume that hosts A and B have an 1326 existing IPsec SA pair with SPIs (SPIa1,SPIb1), and both start 1327 rekeying it at the same time: 1329 Host A Host B 1330 -------- -------- 1331 send req1: N(REKEY_SA,SPIa1), 1332 SA(..,SPIa2,..),Ni1,.. --> 1333 <-- send req2: N(REKEY_SA,SPIb1), 1334 SA(..,SPIb2,..),Ni2,.. 1335 recv req2 <-- 1337 At this point, A knows there is a simultaneous rekeying going on. 1338 However, it cannot yet know which of the exchanges will have the 1339 lowest nonce, so it will just note the situation and respond as 1340 usual. 1342 send resp2: SA(..,SPIa3,..),Nr1,.. --> 1343 --> recv req1 1345 Now B also knows that simultaneous rekeying is going on. Similarly 1346 as host A, it has to respond as usual. 1348 <-- send resp1: SA(..,SPIb3,..),Nr2,.. 1349 recv resp1 <-- 1350 --> recv resp2 1352 At this point, there are three CHILD_SA pairs between A and B (the 1353 old one and two new ones). A and B can now compare the nonces. 1354 Suppose that the lowest nonce was Nr1 in message resp2; in this case, 1355 B (the sender of req2) deletes the redundant new SA, and A (the node 1356 that initiated the surviving rekeyed SA), deletes the old one. 1358 send req3: D(SPIa1) --> 1359 <-- send req4: D(SPIb2) 1360 --> recv req3 1361 <-- send resp4: D(SPIb1) 1362 recv req4 <-- 1363 send resp4: D(SPIa3) --> 1365 The rekeying is now finished. 1367 However, there is a second possible sequence of events that can 1368 happen if some packets are lost in the network, resulting in 1369 retransmissions. The rekeying begins as usual, but A's first packet 1370 (req1) is lost. 1372 Host A Host B 1373 -------- -------- 1374 send req1: N(REKEY_SA,SPIa1), 1375 SA(..,SPIa2,..),Ni1,.. --> (lost) 1376 <-- send req2: N(REKEY_SA,SPIb1), 1377 SA(..,SPIb2,..),Ni2,.. 1378 recv req2 <-- 1379 send resp2: SA(..,SPIa3,..),Nr1,.. --> 1380 --> recv resp2 1381 <-- send req3: D(SPIb1) 1382 recv req3 <-- 1383 send resp3: D(SPIa1) --> 1384 --> recv resp3 1386 From B's point of view, the rekeying is now completed, and since it 1387 has not yet received A's req1, it does not even know that these was 1388 simultaneous rekeying. However, A will continue retransmitting the 1389 message, and eventually it will reach B. 1391 resend req1 --> 1392 --> recv req1 1394 What should B do in this point? To B, it looks like A is trying to 1395 rekey an SA that no longer exists; thus failing the request with 1396 something non-fatal such as NO_PROPOSAL_CHOSEN seems like a 1397 reasonable approach. 1399 <-- send resp1: N(NO_PROPOSAL_CHOSEN) 1400 recv resp1 <-- 1402 When A receives this error, it already knows there was simultaneous 1403 rekeying, so it can ignore the error message. 1405 5.11.4. Simultaneous IKE_SA rekeying 1407 Probably the most complex case occurs when both peers try to rekey 1408 the IKE_SA at the same time. Basically, the text in Section 2.8 1409 applies to this case as well; however, it is important to ensure that 1410 the CHILD_SAs are inherited by the right IKE_SA. 1412 The case where both endpoints notice the simultaneous rekeying works 1413 the same way as with CHILD_SAs. After the CREATE_CHILD_SA exchanges, 1414 three IKE_SAs exist between A and B; the one containing the lowest 1415 nonce inherits the CHILD_SAs. 1417 However, there is a twist to the other case where one rekeying 1418 finishes first: 1420 Host A Host B 1421 -------- -------- 1422 send req1: 1423 SA(..,SPIa1,..),Ni1,.. --> 1424 <-- send req2: SA(..,SPIb1,..),Ni2,.. 1425 --> recv req1 1426 <-- send resp1: SA(..,SPIb2,..),Nr2,.. 1427 recv resp1 <-- 1428 send req3: D() --> 1429 --> recv req3 1431 At this point, host B sees a request to close the IKE_SA. There's 1432 not much more to do than to reply as usual. However, at this point 1433 host B should stop retransmitting req2, since once host A receives 1434 resp3, it will delete all the state associated with the old IKE_SA, 1435 and will not be able to reply to it. 1437 <-- send resp3: () 1439 5.11.5. Closing and rekeying a CHILD_SA 1441 A case similar to simultaneous rekeying can occur if one peer decides 1442 to close an SA and the other peer tries to rekey it: 1444 Host A Host B 1445 -------- -------- 1446 send req1: D(SPIa) --> 1447 <-- send req2: N(REKEY_SA,SPIb),SA,.. 1448 --> recv req1 1450 At this point, host B notices that host A is trying to close an SA 1451 that host B is currently rekeying. Replying as usual is probably the 1452 best choice: 1454 <-- send resp1: D(SPIb) 1456 Depending on in which order req2 and resp1 arrive, host A sees either 1457 a request to rekey an SA that it is currently closing, or a request 1458 to rekey an SA that does not exist. In both cases, 1459 NO_PROPOSAL_CHOSEN is probably fine. 1461 recv req2 1462 recv resp1 1463 send resp2: N(NO_PROPOSAL_CHOSEN) --> 1464 --> recv resp2 1466 5.11.6. Closing a new CHILD_SA 1468 Yet another case occurs when host A creates a CHILD_SA pair, but soon 1469 thereafter host B decides to delete it (possible because its policy 1470 changed): 1472 Host A Host B 1473 -------- -------- 1474 send req1: [N(REKEY_SA,SPIa1)], 1475 SA(..,SPIa2,..),.. --> 1476 --> recv req1 1477 (lost) <-- send resp1: SA(..,SPIb2,..),.. 1479 <-- send req2: D(SPIb2) 1480 recv req2 1482 At this point, host A has not yet received message resp1 (and is 1483 retransmitting message req1), so it does not recognize SPIb in 1484 message req2. What should host A do? 1486 One option would be to reply with an empty Informational response. 1487 However, this same reply would also be sent if host A has received 1488 resp1, but has already sent a new request to delete the SA that was 1489 just created. This would lead to a situation where the peers are no 1490 longer in sync about which SAs exist between them. However, host B 1491 would eventually notice that the other half of the CHILD_SA pair has 1492 not been deleted. Section 1.4 describes this case and notes that "a 1493 node SHOULD regard half-closed connections as anomalous and audit 1494 their existence should they persist", and continues that "if 1495 connection state becomes sufficiently messed up, a node MAY close the 1496 IKE_SA". 1498 Another solution that has been proposed is to reply with an 1499 INVALID_SPI notification which contains SPIb. This would explicitly 1500 tell host B that the SA was not deleted, so host B could try deleting 1501 it again later. However, this usage is not part of the IKEv2 1502 specification, and would not be in line with normal use of the 1503 INVALID_SPI notification where the data field contains the SPI the 1504 recipient of the notification would put in outbound packets. 1506 Yet another solution would be to ignore req2 at this time, and wait 1507 until we have received resp1. However, this alternative has not been 1508 fully analyzed at this time; in general, ignoring valid requests is 1509 always a bit dangerous, because both endpoints could do it, leading 1510 to a deadlock. 1512 This document recommends the first alternative. 1514 5.11.7. Rekeying a new CHILD_SA 1516 Yet another case occurs when a CHILD_SA is rekeyed soon after it has 1517 been created: 1519 Host A Host B 1520 -------- -------- 1521 send req1: [N(REKEY_SA,SPIa1)], 1522 SA(..,SPIa2,..),.. --> 1523 (lost) <-- send resp1: SA(..,SPIb2,..),.. 1525 <-- send req2: N(REKEY_SA,SPIb2), 1526 SA(..,SPIb3,..),.. 1527 recv req2 <-- 1529 To host A, this looks like a request to rekey an SA that does not 1530 exist. Like in the simultaneous rekeying case, replying with 1531 NO_PROPOSAL_CHOSEN is probably reasonable: 1533 send resp2: N(NO_PROPOSAL_CHOSEN) --> 1534 recv resp1 1536 5.11.8. Collisions with IKE_SA rekeying 1538 Another set of cases occur when one peer starts rekeying the IKE_SA 1539 at the same time the other peer starts creating, rekeying, or closing 1540 a CHILD_SA. Suppose that host B starts creating a CHILD_SA, and soon 1541 after, host A starts rekeying the IKE_SA: 1543 Host A Host B 1544 -------- -------- 1545 <-- send req1: SA,Ni1,TSi,TSr 1546 send req2: SA,Ni2,.. --> 1547 --> recv req2 1549 What should host B do at this point? Replying as usual would seem 1550 like a reasonable choice: 1552 <-- send resp2: SA,Ni2,.. 1553 recv resp2 <-- 1554 send req3: D() --> 1555 --> recv req3 1557 Now, a problem arises: If host B now replies normally with an empty 1558 Informational response, this will cause host A to delete state 1559 associated with the IKE_SA. This means host B should stop 1560 retransmitting req1. However, host B cannot know whether or not host 1561 A has received req1. If host A did receive it, it will move the 1562 CHILD_SA to the new IKE_SA as usual, and the state information will 1563 then be out of sync. 1565 It seems this situation is tricky to handle correctly. Our proposal 1566 is as follows: if a host receives a request to rekey the IKE_SA when 1567 it has CHILD_SAs in "half-open" state (currently being created or 1568 rekeyed), it should reply with NO_PROPOSAL_CHOSEN. If a host 1569 receives a request to create or rekey a CHILD_SA after it has started 1570 rekeying the IKE_SA, it should reply with NO_ADDITIONAL_SAS. 1572 The case where CHILD_SAs are being closed is even worse. Our 1573 recommendation is that if a host receives a request to rekey the 1574 IKE_SA when it has CHILD_SAs in "half-closed" state (currently being 1575 closed), it should reply with NO_PROPOSAL_CHOSEN. And if a host 1576 receives a request to close a CHILD_SA after it has started rekeying 1577 the IKE_SA, it should reply with an empty Informational response. 1578 This ensures that at least the other peer will eventually notice that 1579 the CHILD_SA is still in "half-closed" state, and will start a new 1580 IKE_SA from scratch. 1582 5.11.9. Closing and rekeying the IKE_SA 1584 The final case considered in this section occurs if one peer decides 1585 to close the IKE_SA while the other peer tries to rekey it. 1587 Host A Host B 1588 -------- -------- 1589 send req1: SA(..,SPIa1,..),Ni1 --> 1590 <-- send req2: D() 1591 --> recv req1 1592 recv req2 <-- 1594 At this point, host B should probably reply with NO_PROPOSAL_CHOSEN, 1595 and host A should reply as usual, close the IKE_SA, and stop 1596 retransmitting req1. 1598 <-- send resp1: N(NO_PROPOSAL_CHOSEN) 1599 send resp2: () 1601 If host A wants to continue communication with B, it can now start a 1602 new IKE_SA. 1604 5.11.10. Summary 1606 If a host receives a request to rekey: 1608 o a CHILD_SA pair that the host is currently trying to close: reply 1609 with NO_PROPOSAL_CHOSEN. 1611 o a CHILD_SA pair that the host is currently rekeying: reply as 1612 usual, but prepare to close redundant SAs later based on the 1613 nonces. 1615 o a CHILD_SA pair that does not exist: reply with 1616 NO_PROPOSAL_CHOSEN. 1618 o the IKE_SA, and the host is currently rekeying the IKE_SA: reply 1619 as usual, but prepare to close redundant SAs and move inherited 1620 CHILD_SAs later based on the nonces. 1622 o the IKE_SA, and the host is currently creating, rekeying, or 1623 closing a CHILD_SA: reply with NO_PROPOSAL_CHOSEN. 1625 o the IKE_SA, and the host is currently trying to close the IKE_SA: 1626 reply with NO_PROPOSAL_CHOSEN. 1628 If a host receives a request to close: 1630 o a CHILD_SA pair that the host is currently trying to close: reply 1631 without Delete payloads. 1633 o a CHILD_SA pair that the host is currently rekeying: reply as 1634 usual, with Delete payload. 1636 o a CHILD_SA pair that does not exist: reply without Delete 1637 payloads. 1639 o the IKE_SA, and the host is currently rekeying the IKE_SA: reply 1640 as usual, and forget about our own rekeying request. 1642 o the IKE_SA, and the host is currently trying to close the IKE_SA: 1643 reply as usual, and forget about our own close request. 1645 If a host receives a request to create or rekey a CHILD_SA when it is 1646 currently rekeying the IKE_SA: reply with NO_ADDITIONAL_SAS. 1648 If a host receives a request to delete a CHILD_SA when it is 1649 currently rekeying the IKE_SA: reply without Delete payloads. 1651 5.12. Diffie-Hellman and rekeying the IKE_SA 1653 There has been some confusion whether doing a new Diffie-Hellman 1654 exchange is mandatory when the IKE_SA is rekeyed. 1656 It seems that this case is allowed by the IKEv2 specification. 1657 Section 2.18 shows the Diffie-Hellman term (g^ir) in brackets. 1658 Section 3.3.3 does not contradict this when it says that including 1659 the D-H transform is mandatory: although including the transform is 1660 mandatory, it can contain the value "NONE". 1662 However, having the option to skip the Diffie-Hellman exchange when 1663 rekeying the IKE_SA does not add useful functionality to the 1664 protocol. The main purpose of rekeying the IKE_SA is to ensure that 1665 the compromise of old keying material does not provide information 1666 about the current keys, or vice versa. This requires performing the 1667 Diffie-Hellman exchange when rekeying. Furthermore, it is likely 1668 that this option would have been removed from the protocol as 1669 unnecessary complexity had it been discussed earlier. 1671 Given this, we recommend that implementations should have a hard- 1672 coded policy that requires performing a new Diffie-Hellman exchange 1673 when rekeying the IKE_SA. In other words, the initiator should not 1674 propose the value "NONE" for the D-H transform, and the responder 1675 should not accept such a proposal. This policy also implies that a 1676 succesful exchange rekeying the IKE_SA always includes the KEi/KEr 1677 payloads. 1679 (References: "Rekeying IKE_SAs with the CREATE_CHILD_SA exhange" 1680 thread, Oct 2005. "Comments of 1681 draft-eronen-ipsec-ikev2-clarifications-02.txt" thread, Apr 2005.) 1683 6. Configuration payloads 1685 6.1. Assigning IP addresses 1687 Section 2.9 talks about traffic selector negotiation and mentions 1688 that "In support of the scenario described in section 1.1.3, an 1689 initiator may request that the responder assign an IP address and 1690 tell the initiator what it is." 1692 This sentence is correct, but its placement is slightly confusing. 1694 IKEv2 does allow the initiator to request assignment of an IP address 1695 from the responder, but this is done using configuration payloads, 1696 not traffic selector payloads. An address in a TSi payload in a 1697 response does not mean that the responder has assigned that address 1698 to the initiator; it only means that if packets matching these 1699 traffic selectors are sent by the initiator, IPsec processing can be 1700 performed as agreed for this SA. The TSi payload itself does not 1701 give the initiator permission to configure the initiator's TCP/IP 1702 stack with the address and use it as its source address. 1704 In other words, IKEv2 does not have two different mechanisms for 1705 assigning addresses, but only one: configuration payloads. In the 1706 scenario described in Section 1.1.3, both configuration and traffic 1707 selector payloads are usually included in the same message, and often 1708 contain the same information in the response message (see Section 6.3 1709 of this document for some examples). However, their semantics are 1710 still different. 1712 6.2. Requesting any INTERNAL_IP4/IP6_ADDRESS 1714 When describing the INTERNAL_IP4/IP6_ADDRESS attributes, Section 1715 3.15.1 says that "In a request message, the address specified is a 1716 requested address (or zero if no specific address is requested)". 1717 The question here is that does "zero" mean an address "0.0.0.0" or a 1718 zero length string? 1720 Earlier, the same section also says that "If an attribute in the 1721 CFG_REQUEST Configuration Payload is not zero-length, it is taken as 1722 a suggestion for that attribute". Also, the table of configuration 1723 attributes shows that the length of INTERNAL_IP4_ADDRESS is either "0 1724 or 4 octets", and likewise, INTERNAL_IP6_ADDRESS is either "0 or 17 1725 octets". 1727 Thus, if the client does not request a specific address, it includes 1728 a zero-length INTERNAL_IP4/IP6_ADDRESS attribute, not an attribute 1729 containing an all-zeroes address. The example in 2.19 is thus 1730 incorrect, since it shows the attribute as 1731 "INTERNAL_ADDRESS(0.0.0.0)". 1733 However, since the value is only a suggestion, implementations are 1734 recommended to ignore suggestions they do not accept; or in other 1735 words, treat the same way a zero-length INTERNAL_IP4_ADDRESS, 1736 "0.0.0.0", and any other addresses the implementation does not 1737 recognize as a reasonable suggestion. 1739 6.3. INTERNAL_IP4_SUBNET/INTERNAL_IP6_SUBNET 1741 Section 3.15.1 describes the INTERNAL_IP4_SUBNET as "The protected 1742 sub-networks that this edge-device protects. This attribute is made 1743 up of two fields: the first is an IP address and the second is a 1744 netmask. Multiple sub-networks MAY be requested. The responder MAY 1745 respond with zero or more sub-network attributes." 1746 INTERNAL_IP6_SUBNET is defined in a similar manner. 1748 This raises two questions: first, since this information is usually 1749 included in the TSr payload, what functionality does this attribute 1750 add? And second, what does this attribute mean in CFG_REQUESTs? 1752 For the first question, there seem to be two sensible 1753 interpretations. Clearly TSr (in IKE_AUTH or CREATE_CHILD_SA 1754 response) indicates which subnets are accessible through the SA that 1755 was just created. 1757 The first interpretation of the INTERNAL_IP4/6_SUBNET attributes is 1758 that they indicate additional subnets that can be reached through 1759 this gateway, but need a separate SA. According to this 1760 interpretation, the INTERNAL_IP4/6_SUBNET attributes are useful 1761 mainly when they contain addresses not included in TSr. 1763 The second interpretation is that the INTERNAL_IP4/6_SUBNET 1764 attributes express the gateway's policy about what traffic should be 1765 sent through the gateway. The client can choose whether other 1766 traffic (covered by TSr, but not in INTERNAL_IP4/6_SUBNET) is sent 1767 through the gateway or directly to the destination. According to 1768 this interpretation, the attributes are useful mainly when TSr 1769 contains addresses not included in the INTERNAL_IP4/6_SUBNET 1770 attributes. 1772 It turns out that these two interpretations are not incompatible, but 1773 rather two sides of the same principle: traffic to the addresses 1774 listed in the INTERNAL_IP4/6_SUBNET attributes should be sent via 1775 this gateway. If there are no existing IPsec SAs whose traffic 1776 selectors cover the address in question, new SAs have to be created. 1778 A couple of examples are given below. For instance, if there are two 1779 subnets, 192.0.1.0/26 and 192.0.2.0/24, and the client's request 1780 contains the following: 1782 CP(CFG_REQUEST) = 1783 INTERNAL_IP4_ADDRESS() 1784 TSi = (0, 0-65535, 0.0.0.0-255.255.255.255) 1785 TSr = (0, 0-65535, 0.0.0.0-255.255.255.255) 1787 Then a valid response could be the following (in which TSr and 1788 INTERNAL_IP4_SUBNET contain the same information): 1790 CP(CFG_REPLY) = 1791 INTERNAL_IP4_ADDRESS(192.0.1.234) 1792 INTERNAL_IP4_SUBNET(192.0.1.0/255.255.255.192) 1793 INTERNAL_IP4_SUBNET(192.0.2.0/255.255.255.0) 1794 TSi = (0, 0-65535, 192.0.1.234-192.0.1.234) 1795 TSr = ((0, 0-65535, 192.0.1.0-192.0.1.63), 1796 (0, 0-65535, 192.0.2.0-192.0.2.255)) 1798 In these cases, the INTERNAL_IP4_SUBNET does not really carry any 1799 useful information. Another possible reply would have been this: 1801 CP(CFG_REPLY) = 1802 INTERNAL_IP4_ADDRESS(192.0.1.234) 1803 INTERNAL_IP4_SUBNET(192.0.1.0/255.255.255.192) 1804 INTERNAL_IP4_SUBNET(192.0.2.0/255.255.255.0) 1805 TSi = (0, 0-65535, 192.0.1.234-192.0.1.234) 1806 TSr = (0, 0-65535, 0.0.0.0-255.255.255.255) 1808 This would mean that the client can send all its traffic through the 1809 gateway, but the gateway does not mind if the client sends traffic 1810 not included by INTERNAL_IP4_SUBNET directly to the destination 1811 (without going through the gateway). 1813 A different situation arises if the gateway has a policy that 1814 requires the traffic for the two subnets to be carried in separate 1815 SAs. Then a response like this would indicate to the client that if 1816 it wants access to the second subnet, it needs to create a separate 1817 SA: 1819 CP(CFG_REPLY) = 1820 INTERNAL_IP4_ADDRESS(192.0.1.234) 1821 INTERNAL_IP4_SUBNET(192.0.1.0/255.255.255.192) 1822 INTERNAL_IP4_SUBNET(192.0.2.0/255.255.255.0) 1823 TSi = (0, 0-65535, 192.0.1.234-192.0.1.234) 1824 TSr = (0, 0-65535, 192.0.1.0-192.0.1.63) 1826 INTERNAL_IP4_SUBNET can also be useful if the client's TSr included 1827 only part of the address space. For instance, if the client requests 1828 the following: 1830 CP(CFG_REQUEST) = 1831 INTERNAL_IP4_ADDRESS() 1832 TSi = (0, 0-65535, 0.0.0.0-255.255.255.255) 1833 TSr = (0, 0-65535, 192.0.2.155-192.0.2.155) 1835 Then the gateway's reply could be this: 1837 CP(CFG_REPLY) = 1838 INTERNAL_IP4_ADDRESS(192.0.1.234) 1839 INTERNAL_IP4_SUBNET(192.0.1.0/255.255.255.192) 1840 INTERNAL_IP4_SUBNET(192.0.2.0/255.255.255.0) 1841 TSi = (0, 0-65535, 192.0.1.234-192.0.1.234) 1842 TSr = (0, 0-65535, 192.0.2.155-192.0.2.155) 1844 It is less clear what the attributes mean in CFG_REQUESTs, and 1845 whether other lengths than zero make sense in this situation (but for 1846 INTERNAL_IP6_SUBNET, zero length is not allowed at all!). Currently 1847 this document recommends that implementations should not include 1848 INTERNAL_IP4_SUBNET or INTERNAL_IP6_SUBNET attributes in 1849 CFG_REQUESTs. 1851 For the IPv4 case, this document recommends using only netmasks 1852 consisting of some amount of "1" bits followed by "0" bits; for 1853 instance, "255.0.255.0" would not be a valid netmask for 1854 INTERNAL_IP4_SUBNET. 1856 It is also worthwhile to note that the contents of the INTERNAL_IP4/ 1857 6_SUBNET attributes do not imply link boundaries. For instance, a 1858 gateway providing access to a large company intranet using addresses 1859 from the 10.0.0.0/8 block can send a single INTERNAL_IP4_SUBNET 1860 attribute (10.0.0.0/255.0.0.0) even if the intranet has hundreds of 1861 routers and separate links. 1863 (References: Tero Kivinen's mail "Intent of couple of attributes in 1864 Configuration Payload in IKEv2?", 2004-11-19. Srinivasa Rao 1865 Addepalli's mail "INTERNAL_IP4_SUBNET and INTERNAL_IP6_SUBNET in 1866 IKEv2", 2004-09-10. Yoav Nir's mail "Re: New I-D: IKEv2 1867 Clarifications and Implementation Guidelines", 2005-02-07. 1868 "Clarifications open issue: INTERNAL_IP4_SUBNET/NETMASK" thread, 1869 April 2005.) 1871 6.4. INTERNAL_IP4_NETMASK 1873 Section 3.15.1 defines the INTERNAL_IP4_NETMASK attribute, and says 1874 that "The internal network's netmask. Only one netmask is allowed in 1875 the request and reply messages (e.g., 255.255.255.0) and it MUST be 1876 used only with an INTERNAL_IP4_ADDRESS attribute". 1878 However, it is not clear what exactly this attribute means, as the 1879 concept of "netmask" is not very well defined for point-to-point 1880 links (unlike multi-access links, where it means "you can reach hosts 1881 inside this netmask directly using layer 2, instead of sending 1882 packets via a router"). Even if the operating system's TCP/IP stack 1883 requires a netmask to be configured, for point-to-point links it 1884 could be just set to 255.255.255.255. So, why is this information 1885 sent in IKEv2? 1887 One possible interpretation would be that the host is given a whole 1888 block of IP addresses instead of a single address. This is also what 1889 Framed-IP-Netmask does in [RADIUS], the IPCP "subnet mask" extension 1890 does in PPP [IPCPSubnet], and the prefix length in the IPv6 Framed- 1891 IPv6-Prefix attribute does in [RADIUS6]. However, nothing in the 1892 specification supports this interpretation, and discussions on the 1893 IPsec WG mailing list have confirmed it was not intended. Section 1894 3.15.1 also says that multiple addresses are assigned using multiple 1895 INTERNAL_IP4/6_ADDRESS attributes. 1897 Currently, this document's interpretation is the following: 1898 INTERNAL_IP4_NETMASK in a CFG_REPLY means roughly the same thing as 1899 INTERNAL_IP4_SUBNET containing the same information ("send traffic to 1900 these addresses through me"), but also implies a link boundary. For 1901 instance, the client could use its own address and the netmask to 1902 calculate the broadcast address of the link. (Whether the gateway 1903 will actually deliver broadcast packets to other VPN clients and/or 1904 other nodes connected to this link is another matter.) 1906 An empty INTERNAL_IP4_NETMASK attribute can be included in a 1907 CFG_REQUEST to request this information (although the gateway can 1908 send the information even when not requested). However, it seems 1909 that non-empty values for this attribute do not make sense in 1910 CFG_REQUESTs. 1912 Fortunately, Section 4 clearly says that a minimal implementation 1913 does not need to include or understand the INTERNAL_IP4_NETMASK 1914 attribute, and thus this document recommends that implementations 1915 should not use the INTERNAL_IP4_NETMASK attribute or assume that the 1916 other peer supports it. 1918 (References: Charlie Kaufman's mail "RE: Proposed Last Call based 1919 revisions to IKEv2", 2004-05-27. Email discussion with Tero Kivinen, 1920 Jan 2005. Yoav Nir's mail "Re: New I-D: IKEv2 Clarifications and 1921 Implementation Guidelines", 2005-02-07. "Clarifications open issue: 1922 INTERNAL_IP4_SUBNET/NETMASK" thread, April 2005.) 1924 6.5. Configuration payloads for IPv6 1926 IKEv2 also defines configuration payloads for IPv6. However, they 1927 are based on the corresponding IPv4 payloads, and do not fully follow 1928 the "normal IPv6 way of doing things". 1930 A client can be assigned an IPv6 address using the 1931 INTERNAL_IP6_ADDRESS configuration payload. A minimal exchange could 1932 look like this: 1934 CP(CFG_REQUEST) = 1935 INTERNAL_IP6_ADDRESS() 1936 INTERNAL_IP6_DNS() 1937 TSi = (0, 0-65535, :: - FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF) 1938 TSr = (0, 0-65535, :: - FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF) 1940 CP(CFG_REPLY) = 1941 INTERNAL_IP6_ADDRESS(2001:DB8:0:1:2:3:4:5/64) 1942 INTERNAL_IP6_DNS(2001:DB8:99:88:77:66:55:44) 1943 TSi = (0, 0-65535, 2001:DB8:0:1:2:3:4:5 - 2001:DB8:0:1:2:3:4:5) 1944 TSr = (0, 0-65535, :: - FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF) 1946 In particular, IPv6 stateless autoconfiguration or router 1947 advertisement messages are not used; neither is neighbor discovery. 1949 The client can also send a non-empty INTERNAL_IP6_ADDRESS attribute 1950 in the CFG_REQUEST to request a specific address or interface 1951 identifier. The gateway first checks if the specified address is 1952 acceptable, and if it is, returns that one. If the address was not 1953 acceptable, the gateway will attempt to use the interface identifier 1954 with some other prefix; if even that fails, the gateway will select 1955 another interface identifier. 1957 The INTERNAL_IP6_ADDRESS attribute also contains a prefix length 1958 field. When used in a CFG_REPLY, this corresponds to the 1959 INTERNAL_IP4_NETMASK attribute in the IPv4 case (and indeed, was 1960 called INTERNAL_IP6_NETMASK in earlier versions of the IKEv2 draft). 1961 See the previous section for more details. 1963 While this approach to configuring IPv6 addresses is reasonably 1964 simple, it has some limitations: IPsec tunnels configured using IKEv2 1965 are not fully-featured "interfaces" in the IPv6 addressing 1966 architecture [IPv6Addr] sense. In particular, they do not 1967 necessarily have link-local addresses, and this may complicate the 1968 use of protocols that assume them, such as [MLDv2]. (Whether they 1969 are called "interfaces" in some particular operating system is a 1970 different issue.) 1972 (References: "VPN remote host configuration IPv6 ?" thread, May 2004. 1973 "Clarifications open issue: INTERNAL_IP4_SUBNET/NETMASK" thread, 1974 April 2005.) 1976 6.6. INTERNAL_IP6_NBNS 1978 Section 3.15.1 defines the INTERNAL_IP6_NBNS attribute for sending 1979 the IPv6 address of NetBIOS name servers. 1981 However, NetBIOS is not defined for IPv6, and probably never will be. 1982 Thus, this attribute most likely does not make much sense. 1984 (Pointed out by Bernard Aboba in the IP Configuration Security (ICOS) 1985 BoF at IETF62.) 1987 6.7. INTERNAL_ADDRESS_EXPIRY 1989 Section 3.15.1 defines the INTERNAL_ADDRESS_EXPIRY attribute as 1990 "Specifies the number of seconds that the host can use the internal 1991 IP address. The host MUST renew the IP address before this expiry 1992 time. Only one of these attributes MAY be present in the reply." 1994 Expiry times and explicit renewals are primarily useful in 1995 environments like DHCP, where the server cannot reliably know when 1996 the client has gone away. However, in IKEv2 this is known, and the 1997 gateway can simply free the address when the IKE_SA is deleted. 1999 Also, Section 4 says that supporting renewals is not mandatory. 2000 Given that this functionality is usually not needed, we recommend 2001 that gateways should not send the INTERNAL_ADDRESS_EXPIRY attribute. 2002 (And since this attribute does not seem to make much sense for 2003 CFG_REQUESTs, clients should not send it either.) 2005 Note that according to Section 4, clients are required to understand 2006 INTERNAL_ADDRESS_EXPIRY if they receive it. A minimum implementation 2007 would use the value to limit the lifetime of the IKE_SA. 2009 (References: Tero Kivinen's mail "Comments of 2010 draft-eronen-ipsec-ikev2-clarifications-02.txt", 2005-04-05. 2011 "Questions about internal address" thread, April 2005.) 2013 6.8. Address assignment failures 2015 If the responder encounters an error while attempting to assign an IP 2016 address to the initiator, it responds with an 2017 INTERNAL_ADDRESS_FAILURE notification as described in Section 3.10.1. 2018 However, there are some more complex error cases. 2020 First, if the responder does not support configuration payloads at 2021 all, it can simply ignore all configuration payloads. This type of 2022 implementation never sends INTERNAL_ADDRESS_FAILURE notifications. 2023 If the initiator requires the assignment of an IP address, it will 2024 treat a response without CFG_REPLY as an error. 2026 A second case is where the responder does support configuration 2027 payloads, but only for particular type of addresses (IPv4 or IPv6). 2028 Section 4 says that "A minimal IPv4 responder implementation will 2029 ignore the contents of the CP payload except to determine that it 2030 includes an INTERNAL_IP4_ADDRESS attribute". If, for instance, the 2031 initiator includes both INTERNAL_IP4_ADDRESS and INTERNAL_IP6_ADDRESS 2032 in the CFG_REQUEST, an IPv4-only responder can thus simply ignore the 2033 IPv6 part and process the IPv4 request as usual. 2035 A third case is where the initiator requests multiple addresses of a 2036 type that the responder supports: what should happen if some (but not 2037 all) of the requests fail? It seems that an optimistic approach 2038 would be the best one here: if the responder is able to assign at 2039 least one address, it replies with those; it sends 2040 INTERNAL_ADDRESS_FAILURE only if no addresses can be assigned. 2042 (References: "ikev2 and internal_ivpn_address" thread, June 2005.) 2044 7. Miscellaneous issues 2046 7.1. Matching ID_IPV4_ADDR and ID_IPV6_ADDR 2048 When using the ID_IPV4_ADDR/ID_IPV6_ADDR identity types in IDi/IDr 2049 payloads, IKEv2 does not require this address to match the address in 2050 the IP header (of IKEv2 packets), or anything in the TSi/TSr 2051 payloads. The contents of IDi/IDr is used purely to fetch the policy 2052 and authentication data related to the other party. 2054 (References: "Identities types IP address,FQDN/user FQDN and DN and 2055 its usage in preshared key authentication" thread, Jan 2005.) 2057 7.2. Relationship of IKEv2 to RFC4301 2059 The IKEv2 specification refers to [RFC4301], but it never makes 2060 clearly defines the exact relationship is. 2062 However, there are some requirements in the specification that make 2063 it clear that IKEv2 requires [RFC4301]. In other words, an 2064 implementation that does IPsec processing strictly according to 2065 [RFC2401] cannot be compliant with the IKEv2 specification. 2067 One such example can be found in Section 2.24: "Specifically, tunnel 2068 encapsulators and decapsulators for all tunnel-mode SAs created by 2069 IKEv2 [...] MUST implement the tunnel encapsulation and 2070 decapsulation processing specified in [RFC4301] to prevent discarding 2071 of ECN congestion indications." 2073 Nevertheless, the changes required to existing [RFC2401] 2074 implementations are not very large, especially since supporting many 2075 of the new features (such as Extended Sequence Numbers) is optional. 2077 7.3. Reducing the window size 2079 In IKEv2, the window size is assumed to be a (possibly configurable) 2080 property of a particular implementation, and is not related to 2081 congestion control (unlike the window size in TCP, for instance). 2083 In particular, it is not defined what the responder should do when it 2084 receives a SET_WINDOW_SIZE notification containing a smaller value 2085 than is currently in effect. Thus, there is currently no way to 2086 reduce the window size of an existing IKE_SA. However, when rekeying 2087 an IKE_SA, the new IKE_SA starts with window size 1 until it is 2088 explicitly increased by sending a new SET_WINDOW_SIZE notification. 2090 (References: Tero Kivinen's mail "Comments of 2091 draft-eronen-ipsec-ikev2-clarifications-02.txt", 2005-04-05.) 2093 7.4. Minimum size of nonces 2095 Section 2.10 says that "Nonces used in IKEv2 MUST be randomly chosen, 2096 MUST be at least 128 bits in size, and MUST be at least half the key 2097 size of the negotiated prf." 2099 However, the initiator chooses the nonce before the outcome of the 2100 negotiation is known. In this case, the nonce has to be long enough 2101 for all the PRFs being proposed. 2103 7.5. Initial zero octets on port 4500 2105 It is not clear whether a peer sending an IKE_SA_INIT request on port 2106 4500 should include the initial four zero octets. Section 2.23 talks 2107 about how to upgrade to tunneling over port 4500 after message 2, but 2108 it does not say what to do if message 1 is sent on port 4500. 2110 IKE MUST listen on port 4500 as well as port 500. 2112 [...] 2114 The IKE initiator MUST check these payloads if present and if 2115 they do not match the addresses in the outer packet MUST tunnel 2116 all future IKE and ESP packets associated with this IKE_SA over 2117 UDP port 4500. 2119 To tunnel IKE packets over UDP port 4500, the IKE header has four 2120 octets of zero prepended and the result immediately follows the 2121 UDP header. [...] 2123 The very beginning of Section 2 says "... though IKE messages may 2124 also be received on UDP port 4500 with a slightly different format 2125 (see section 2.23)." 2127 That "slightly different format" is only described in discussing what 2128 to do after changing to port 4500. However, [RFC3948] shows clearly 2129 the format has the initial zeros even for initiators on port 4500. 2130 Furthermore, without the initial zeros, the processing engine cannot 2131 determine whether the packet is an IKE packet or an ESP packet. 2133 Thus, all packets sent on port 4500 need the four zero prefix; 2134 otherwise, the receiver won't know how to handle them. 2136 7.6. Destination port for NAT traversal 2138 Section 2.23 says that "an IPsec endpoint that discovers a NAT 2139 between it and its correspondent MUST send all subsequent traffic to 2140 and from port 4500". 2142 This sentence is misleading. The peer "outside" the NAT uses source 2143 port 4500 for the traffic it sends, but the destination port is, of 2144 course, taken from packets sent by the peer behind the NAT. This 2145 port number is usually dynamically allocated by the NAT. 2147 7.7. SPI values for messages outside of an IKE_SA 2149 The IKEv2 specification is not quite clear what SPI values should be 2150 used in the IKE header for the small number of notifications that are 2151 allowed to be sent outside of an IKE_SA. Note that such 2152 notifications are explicitly not Informational exchanges; Section 1.5 2153 makes it clear that these are one-way messages that must not be 2154 responded to. 2156 There are two cases when such a one-way notification can be sent: 2157 INVALID_IKE_SPI and INVALID_SPI. 2159 In case of INVALID_IKE_SPI, the message sent is a response message, 2160 and Section 2.21 says that "If a response is sent, the response MUST 2161 be sent to the IP address and port from whence it came with the same 2162 IKE SPIs and the Message ID copied." 2164 In case of INVALID_SPI, however, there are no IKE SPI values that 2165 would be meaningful to the recipient of such a notification. Also, 2166 the message sent is now an INFORMATIONAL request. A strict 2167 interpretation of the specification would require the sender to 2168 invent garbage values for the SPI fields. However, we think this was 2169 not the intention, and using zero values is acceptable. 2171 (References: "INVALID_IKE_SPI" thread, June 2005.) 2173 7.8. Protocol ID/SPI fields in Notify payloads 2175 Section 3.10 says that the Protocol ID field in Notify payloads "For 2176 notifications that do not relate to an existing SA, this field MUST 2177 be sent as zero and MUST be ignored on receipt". However, the 2178 specification does not clearly say which notifications are related to 2179 existing SAs and which are not. 2181 Since the main purpose of the Protocol ID field is to specify the 2182 type of the SPI, our interpretation is that the Protocol ID field 2183 should be non-zero only when the SPI field is non-empty. 2185 There are currently only two notifications where this is the case: 2186 INVALID_SELECTORS and REKEY_SA. 2188 7.9. Which message should contain INITIAL_CONTACT 2190 The description of the INITIAL_CONTACT notification in Section 3.10.1 2191 says that "This notification asserts that this IKE_SA is the only 2192 IKE_SA currently active between the authenticated identities". 2193 However, neither Section 2.4 nor 3.10.1 says in which message this 2194 payload should be placed. 2196 The general agreement is that INITIAL_CONTACT is best communicated in 2197 the first IKE_AUTH request, not as a separate exchange afterwards. 2199 (References: "Clarifying the use of INITIAL_CONTACT in IKEv2" thread, 2200 April 2005. "Initial Contact messages" thread, December 2004. 2201 "IKEv2 and Initial Contact" thread, September 2004 and April 2005.) 2203 7.10. Alignment of payloads 2205 Many IKEv2 payloads contain fields marked as "RESERVED", mostly 2206 because IKEv1 had them, and partly because they make the pictures 2207 easier to draw. In particular, payloads in IKEv2 are not, in 2208 general, aligned to 4-octet boundaries. (Note that payloads were not 2209 aligned to 4-byte boundaries in IKEv1 either.) 2211 (References: "IKEv2: potential 4-byte alignment problem" thread, June 2212 2004.) 2214 7.11. Key length transform attribute 2216 Section 3.3.5 says that "The only algorithms defined in this document 2217 that accept attributes are the AES based encryption, integrity, and 2218 pseudo-random functions, which require a single attribute specifying 2219 key width." 2221 This is incorrect. The AES-based integrity and pseudo-random 2222 functions defined in [IKEv2] always use a 128-bit key. In fact, 2223 there are currently no integrity or PRF algorithms that use the key 2224 length attribute (and we recommend that they should not be defined in 2225 the future either). 2227 For encryption algorithms, the situation is slightly more complex 2228 since there are three different types of algorithms: 2230 o The key length attribute is never used with algorithms that use a 2231 fixed length key, such as DES and IDEA. 2233 o The key length attribute is always included for the currently 2234 defined AES-based algorithms (CBC, CTR, CCM and GCM). Omitting 2235 the key length attribute is not allowed; if the proposal does not 2236 contain it, the proposal has to be rejected. 2238 o For other algorithms, the key length attribute can be included but 2239 is not mandatory. These algorithms include, e.g., RC5, CAST and 2240 BLOWFISH. If the key length attribute is not included, the 2241 default value specified in [RFC2451] is used. 2243 7.12. IPsec IANA considerations 2245 There are currently three different IANA registry files that contain 2246 important numbers for IPsec: ikev2-registry, isakmp-registry, and 2247 ipsec-registry. Implementors should note that IKEv2 may use numbers 2248 different from IKEv1 for a particular algorithm. 2250 For instance, an encryption algorithm can have up to three different 2251 numbers: the IKEv2 "Transform Type 1" identifier in ikev2-registry, 2252 the IKEv1 phase 1 "Encryption Algorithm" identifier in ipsec- 2253 registry, and the IKEv1 phase 2 "IPSEC ESP Transform Identifier" 2254 isakmp-registry. Although some algorithms have the same number in 2255 all three registries, the registries are not identical. 2257 Similarly, an integrity algorithm can have at least the IKEv2 2258 "Transform Type 3" identifier in ikev2-registry, the IKEv1 phase 2 2259 "IPSEC AH Transform Identifier" in isakmp-registry, and the IKEv1 2260 phase 2 ESP "Authentication Algorithm Security Association Attribute" 2261 identifier in isakmp-registry. And there is also the IKEv1 phase 1 2262 "Hash Algorithm" list in ipsec-registry. 2264 This issue needs special care also when writing a specification for 2265 how a new algorithm is used together with IPsec. 2267 7.13. Combining ESP and AH 2269 The IKEv2 specification contains some misleading text about how ESP 2270 and AH can be combined. 2272 IKEv2 is based on [RFC4301] which does not include "SA bundles" that 2273 were part of [RFC2401]. While a single packet can go through IPsec 2274 processing multiple times, each of these passes uses a separate SA, 2275 and the passes are coordinated by the forwarding tables. In IKEv2, 2276 each of these SAs has to be created using a separate CREATE_CHILD_SA 2277 exchange. Thus, the text in Section 2.7 about a single proposal 2278 containing both ESP and AH is incorrect. 2280 Morever, the combination of ESP and AH (between the same endpoints) 2281 become largely obsolete already in 1998 when RFC 2406 was published. 2282 Our recommendation is that IKEv2 implementations should not support 2283 this combination, and implementors should not assume the combination 2284 can be made to work in interoperable manner. 2286 (References: "Rekeying SA bundles" thread, Oct 2005.) 2288 8. Implementation mistakes 2290 Some implementers at the early IKEv2 bakeoffs didn't do everything 2291 correctly. This may seem like an obvious statement, but it is 2292 probably useful to list a few things that were clear in the document 2293 and not needing clarification, that some implementors didn't do. All 2294 of these things caused interoperability problems. 2296 o Some implementations continued to send traffic on a CHILD_SA after 2297 it was rekeyed, even after receiving an DELETE payload. 2299 o After rekeying an IKE_SA, some implementations did not reset their 2300 message counters to zero. One set the counter to 2, another did 2301 not reset the counter at all. 2303 o Some implementations could only handle a single pair of traffic 2304 selectors, or would only process the first pair in the proposal. 2306 o Some implementations responded to a delete request by sending an 2307 empty INFORMATIONAL response, and then initiated their own 2308 INFORMATIONAL exchange with the pair of SAs to delete. 2310 o Although this did not happen at the bakeoff, from the discussion 2311 there, it is clear that some people had not implemented message 2312 window sizes correctly. Some implementations might have sent 2313 messages that did not fit into the responder's message windows, 2314 and some implementations may not have torn down an SA if they did 2315 not ever receive a message that they know they should have. 2317 9. Security considerations 2319 This document does not introduce any new security considerations to 2320 IKEv2. If anything, clarifying complex areas of the specification 2321 can reduce the likelihood of implementation problems that may have 2322 security implications. 2324 10. IANA considerations 2326 This document does not change or create any IANA-registered values. 2328 11. Acknowledgments 2330 This document is mainly based on conversations on the IPsec WG 2331 mailing list. The authors would especially like to thank Bernard 2332 Aboba, Jari Arkko, Vijay Devarapalli, William Dixon, Francis Dupont, 2333 Mika Joutsenvirta, Charlie Kaufman, Stephen Kent, Tero Kivinen, Yoav 2334 Nir, Michael Richardson, and Joel Snyder for their contributions. 2336 In addition, the authors would like to thank all the participants of 2337 the first public IKEv2 bakeoff, held in Santa Clara in February 2005, 2338 for their questions and proposed clarifications. 2340 12. References 2342 12.1. Normative References 2344 [IKEv2] Kaufman, C., Ed., "Internet Key Exchange (IKEv2) 2345 Protocol", RFC 4306, December 2005. 2347 [IKEv2ALG] 2348 Schiller, J., "Cryptographic Algorithms for Use in the 2349 Internet Key Exchange Version 2 (IKEv2)", RFC 4307, 2350 December 2005. 2352 [PKCS1v20] 2353 Kaliski, B. and J. Staddon, "PKCS #1: RSA Cryptography 2354 Specifications Version 2.0", RFC 2437, October 1998. 2356 [PKCS1v21] 2357 Jonsson, J. and B. Kaliski, "Public-Key Cryptography 2358 Standards (PKCS) #1: RSA Cryptography Specifications 2359 Version 2.1", RFC 3447, February 2003. 2361 [RFC2401] Kent, S. and R. Atkinson, "Security Architecture for the 2362 Internet Protocol", RFC 2401, November 1998. 2364 [RFC4301] Kent, S. and K. Seo, "Security Architecture for the 2365 Internet Protocol", RFC 4301, December 2005. 2367 12.2. Informative References 2369 [Aura05] Aura, T., Roe, M., and A. Mohammed, "Experiences with 2370 Host-to-Host IPsec", 13th International Workshop on 2371 Security Protocols, Cambridge, UK, April 2005. 2373 [EAP] Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and H. 2374 Levkowetz, "Extensible Authentication Protocol (EAP)", 2375 RFC 3748, June 2004. 2377 [HashUse] Hoffman, P., "Use of Hash Algorithms in IKE and IPsec", 2378 draft-hoffman-ike-ipsec-hash-use-01 (work in progress), 2379 December 2005. 2381 [IPCPSubnet] 2382 Cisco Systems, Inc., "IPCP Subnet Mask Support 2383 Enhancements", http://www.cisco.com/univercd/cc/td/doc/ 2384 product/software/ios121/121newft/121limit/121dc/121dc3/ 2385 ipcp_msk.htm, January 2003. 2387 [IPv6Addr] 2388 Hinden, R. and S. Deering, "Internet Protocol Version 6 2389 (IPv6) Addressing Architecture", RFC 4291, April 2004. 2391 [MIPv6] Johnson, D., Perkins, C., and J. Arkko, "Mobility Support 2392 in IPv6", RFC 3775, June 2004. 2394 [MLDv2] Vida, R. and L. Costa, "Multicast Listener Discovery 2395 Version 2 (MLDv2) for IPv6", RFC 3810, June 2004. 2397 [NAI] Aboba, B., Beadles, M., Arkko, J., and P. Eronen, "The 2398 Network Access Identifier", RFC 4282, December 2005. 2400 [PKI4IPsec] 2401 Korver, B., "Internet PKI Profile of IKEv1/ISAKMP, IKEv2, 2402 and PKIX", draft-ietf-pki4ipsec-ikecert-profile (work in 2403 progress), February 2006. 2405 [RADEAP] Aboba, B. and P. Calhoun, "RADIUS (Remote Authentication 2406 Dial In User Service) Support For Extensible 2407 Authentication Protocol (EAP)", RFC 3579, September 2003. 2409 [RADIUS] Rigney, C., Willens, S., Rubens, A., and W. Simpson, 2410 "Remote Authentication Dial In User Service (RADIUS)", 2411 RFC 2865, June 2000. 2413 [RADIUS6] Aboba, B., Zorn, G., and D. Mitton, "RADIUS and IPv6", 2414 RFC 3162, August 2001. 2416 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2417 Requirement Levels", RFC 2119, March 1997. 2419 [RFC2451] Pereira, R. and R. Adams, "The ESP CBC-Mode Cipher 2420 Algorithms", RFC 2451, November 1998. 2422 [RFC2822] Resnick, P., "Internet Message Format", RFC 2822, 2423 April 2001. 2425 [RFC3664] Hoffman, P., "The AES-XCBC-PRF-128 Algorithm for the 2426 Internet Key Exchange Protocol (IKE)", RFC 3664, 2427 January 2004. 2429 [RFC3664bis] 2430 Hoffman, P., "The AES-XCBC-PRF-128 Algorithm for the 2431 Internet Key Exchange Protocol (IKE)", 2432 draft-hoffman-rfc3664bis (work in progress), October 2005. 2434 [RFC3948] Huttunen, A., Swander, B., Volpe, V., DiBurro, L., and M. 2435 Stenberg, "UDP Encapsulation of IPsec ESP Packets", 2436 RFC 3948, January 2005. 2438 [RFC822] Crocker, D., "Standard for the format of ARPA Internet 2439 text messages", RFC 822, August 1982. 2441 [ReAuth] Nir, Y., "Repeated Authentication in Internet Key Exchange 2442 (IKEv2) Protocol", RFC 4478, April 2006. 2444 [SCVP] Freeman, T., Housley, R., Malpani, A., Cooper, D., and T. 2445 Polk, "Simple Certificate Validation Protocol (SCVP)", 2446 draft-ietf-pkix-scvp-21 (work in progress), October 2005. 2448 Appendix A. Exchanges and payloads 2450 This appendix contains a short summary of the IKEv2 exchanges, and 2451 what payloads can appear in which message. This appendix is purely 2452 informative; if it disagrees with the body of this document or the 2453 IKEv2 specification, the other text is considered correct. 2455 Vendor-ID (V) payloads may be included in any place in any message. 2456 This sequence shows what are, in our opinion, the most logical places 2457 for them. 2459 The specification does not say which messages can contain 2460 N(SET_WINDOW_SIZE). It can possibly be included in any message, but 2461 it is not yet shown below. 2463 A.1. IKE_SA_INIT exchange 2465 request --> [N(COOKIE)], 2466 SA, KE, Ni, 2467 [N(NAT_DETECTION_SOURCE_IP)+, 2468 N(NAT_DETECTION_DESTINATION_IP)], 2469 [V+] 2471 normal response <-- SA, KE, Nr, 2472 (no cookie) [N(NAT_DETECTION_SOURCE_IP), 2473 N(NAT_DETECTION_DESTINATION_IP)], 2474 [[N(HTTP_CERT_LOOKUP_SUPPORTED)], CERTREQ+], 2475 [V+] 2477 A.2. IKE_AUTH exchange without EAP 2479 request --> IDi, [CERT+], 2480 [N(INITIAL_CONTACT)], 2481 [[N(HTTP_CERT_LOOKUP_SUPPORTED)], CERTREQ+], 2482 [IDr], 2483 AUTH, 2484 [CP(CFG_REQUEST)], 2485 [N(IPCOMP_SUPPORTED)+], 2486 [N(USE_TRANSPORT_MODE)], 2487 [N(ESP_TFC_PADDING_NOT_SUPPORTED)], 2488 [N(NON_FIRST_FRAGMENTS_ALSO)], 2489 SA, TSi, TSr, 2490 [V+] 2492 response <-- IDr, [CERT+], 2493 AUTH, 2494 [CP(CFG_REPLY)], 2495 [N(IPCOMP_SUPPORTED)], 2496 [N(USE_TRANSPORT_MODE)], 2497 [N(ESP_TFC_PADDING_NOT_SUPPORTED)], 2498 [N(NON_FIRST_FRAGMENTS_ALSO)], 2499 SA, TSi, TSr, 2500 [N(ADDITIONAL_TS_POSSIBLE)], 2501 [V+] 2503 A.3. IKE_AUTH exchange with EAP 2505 first request --> IDi, 2506 [N(INITIAL_CONTACT)], 2507 [[N(HTTP_CERT_LOOKUP_SUPPORTED)], CERTREQ+], 2508 [IDr], 2509 [CP(CFG_REQUEST)], 2510 [N(IPCOMP_SUPPORTED)+], 2511 [N(USE_TRANSPORT_MODE)], 2512 [N(ESP_TFC_PADDING_NOT_SUPPORTED)], 2513 [N(NON_FIRST_FRAGMENTS_ALSO)], 2514 SA, TSi, TSr, 2515 [V+] 2517 first response <-- IDr, [CERT+], AUTH, 2518 EAP, 2519 [V+] 2521 / --> EAP 2522 repeat 1..N times | 2523 \ <-- EAP 2525 last request --> AUTH 2527 last response <-- AUTH, 2528 [CP(CFG_REPLY)], 2529 [N(IPCOMP_SUPPORTED)], 2530 [N(USE_TRANSPORT_MODE)], 2531 [N(ESP_TFC_PADDING_NOT_SUPPORTED)], 2532 [N(NON_FIRST_FRAGMENTS_ALSO)], 2533 SA, TSi, TSr, 2534 [N(ADDITIONAL_TS_POSSIBLE)], 2535 [V+] 2537 A.4. CREATE_CHILD_SA exchange for creating/rekeying CHILD_SAs 2539 request --> [N(REKEY_SA)], 2540 [N(IPCOMP_SUPPORTED)+], 2541 [N(USE_TRANSPORT_MODE)], 2542 [N(ESP_TFC_PADDING_NOT_SUPPORTED)], 2543 [N(NON_FIRST_FRAGMENTS_ALSO)], 2544 SA, Ni, [KEi], TSi, TSr 2546 response <-- [N(IPCOMP_SUPPORTED)], 2547 [N(USE_TRANSPORT_MODE)], 2548 [N(ESP_TFC_PADDING_NOT_SUPPORTED)], 2549 [N(NON_FIRST_FRAGMENTS_ALSO)], 2550 SA, Nr, [KEr], TSi, TSr, 2551 [N(ADDITIONAL_TS_POSSIBLE)] 2553 A.5. CREATE_CHILD_SA exchange for rekeying the IKE_SA 2555 request --> SA, Ni, [KEi] 2557 response <-- SA, Nr, [KEr] 2559 A.6. INFORMATIONAL exchange 2561 request --> [N+], 2562 [D+], 2563 [CP(CFG_REQUEST)] 2565 response <-- [N+], 2566 [D+], 2567 [CP(CFG_REPLY)] 2569 Authors' Addresses 2571 Pasi Eronen 2572 Nokia Research Center 2573 P.O. Box 407 2574 FIN-00045 Nokia Group 2575 Finland 2577 Email: pasi.eronen@nokia.com 2578 Paul Hoffman 2579 VPN Consortium 2580 127 Segre Place 2581 Santa Cruz, CA 95060 2582 USA 2584 Email: paul.hoffman@vpnc.org 2586 Full Copyright Statement 2588 Copyright (C) The Internet Society (2006). 2590 This document is subject to the rights, licenses and restrictions 2591 contained in BCP 78, and except as set forth therein, the authors 2592 retain all their rights. 2594 This document and the information contained herein are provided on an 2595 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 2596 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET 2597 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, 2598 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE 2599 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 2600 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 2602 Intellectual Property 2604 The IETF takes no position regarding the validity or scope of any 2605 Intellectual Property Rights or other rights that might be claimed to 2606 pertain to the implementation or use of the technology described in 2607 this document or the extent to which any license under such rights 2608 might or might not be available; nor does it represent that it has 2609 made any independent effort to identify any such rights. Information 2610 on the procedures with respect to rights in RFC documents can be 2611 found in BCP 78 and BCP 79. 2613 Copies of IPR disclosures made to the IETF Secretariat and any 2614 assurances of licenses to be made available, or the result of an 2615 attempt made to obtain a general license or permission for the use of 2616 such proprietary rights by implementers or users of this 2617 specification can be obtained from the IETF on-line IPR repository at 2618 http://www.ietf.org/ipr. 2620 The IETF invites any interested party to bring to its attention any 2621 copyrights, patents or patent applications, or other proprietary 2622 rights that may cover technology that may be required to implement 2623 this standard. Please address the information to the IETF at 2624 ietf-ipr@ietf.org. 2626 Acknowledgment 2628 Funding for the RFC Editor function is provided by the IETF 2629 Administrative Support Activity (IASA).