IPSECME | D. Migault (Ed) |
Internet-Draft | Orange |
Intended status: Standards Track | D. Palomares |
Expires: September 04, 2014 | Orange/LIP6 |
March 03, 2014 |
MOBIKEv2: MOBIKE extension for Transport mode
draft-mglt-ipsecme-mobikev2-00.txt
MOBIKE [RFC4555] is the IKEv2 Mobility and Multihoming Protocol and as been defined only for IPsec Security Association using the tunnel mode. This document describes MOBIKEv2 that extends MOBIKE [RFC4555] for IPsec Security Associations using also transport mode.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 04, 2014.
Copyright (c) 2014 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
This document uses the following terminology:
This document provides a description of MOBIKEv2. We assume the reader is familiar with IPsec [RFC4301], IKEv2 [RFC5996] and with MOBIKE [RFC4555].
MOBIKE [RFC4555] proposes a mobility solution for the tunnel mode of IPsec. A MOBIKE's typical use case is a mobile node accessing some private network through a security gateway. The mobile node requests the security gateway a private IP address. Then, communications with other peers of the private network is performed by tunneling the IP packet with private IP addresses between the mobile node and the security gateway. Communications are established between private IP addresses, so when one of the outer IP address is updated, the communication between inner private IP addresses is not broken. MOBIKE defines how to update the outer IP address, which provides mobility or multihoming.
MOBIKEv2 has the same scope and limitations as MOBIKE defined in section 1.2 of [RFC4555] except that MOBIKEv2 extends MOBIKE to transport mode IPsec SAs.
Motivation to provide mobility and multihoming functionality for IPsec transport mode is that some communications do not want to have the additional IPsec tunnel header and still want to be resilient to a change of IP address. Note that if TCP applications are used, this requires most likely restarting the application or restart a new TCP connection. However UDP applications are more likely to change their IP address. Targeted applications are for example DNS for last mile security, real time applications or GRE/IP sessions.
This document does not consider how the upper layers protocols (ULP) handle the change of IP address. This document considers how to keep up-to-date the IPsec SAD and SPD when an IP address is updated, and this for the transport and tunnel mode.
This document is based on [RFC4555]. MOBIKEv2 updates the following MOBIKE protocol exchanges:
MOBIKEv2 adds to MOBIKE the following payloads:
Following sub-sections, introduce the considerations of MOBIKEv2. We provide detailed description in how to negotiate a newer version of MOBIKE and how to perform mobility in MOBIKEv2:
MOBIKEv2 provides additional features than MOBIKE. To distinguish MOBIKEv2 from MOBIKE a version parameter is introduced. MOBIKE is designated in this document with version 1 (MOBIKEv1) and MOBIKEv2 with version 2. With different versions, announcing support of MOBIKE is not sufficient, so the peer MUST also agree on the version number. Agreement on the version number is performed using MOBIKE_SUPPORT Notify Payload with Version Parameter in the notification data field. Figure 1 illustrates how the Initiator and the Responder agree on the version.
Initiator Responder ----------- ----------- 1) (IP_I1:500 -> IP_R1:500) HDR, SAi1, KEi, Ni --> N(NAT_DETECTION_SOURCE_IP), N(NAT_DETECTION_DESTINATION_IP) --> <-- (IP_R1:500 -> IP_I1:500) HDR, SAr1, KEr, Nr, N(NAT_DETECTION_SOURCE_IP), N(NAT_DETECTION_DESTINATION_IP) 2) (IP_I1:4500 -> IP_R1:4500) HDR, SK { IDi, CERT, AUTH, CP(CFG_REQUEST), SAi2, TSi, TSr, N(MOBIKE_SUPPORTED, V1 V2)} --> <-- (IP_R1:4500 -> IP_I1:4500) HDR, SK { IDr, CERT, AUTH, CP(CFG_REPLY), SAr2, TSi, TSr, N(MOBIKE_SUPPORTED, V2) } Fig 1. MOBIKE Version Negotiation
MOBIKE updates the IP addresses using an UPDATE_SA_ADDRESSES Notify Payload in its IKEv2 channel. At the reception of the UPDATE_SA_ADDRESSES Notify Payload, the Responder identifies the concerned IKE_SA and associated CHILD_SA(s). The IP addresses of the Initiator is replaced in both the IKE_SA and the CHILD_SA(s) with the IP address of the IP header used to carry UPDATE_SA_ADDRESSES Notify Payload. The IKE_SA is actually stored in the IKEv2 application, whereas CHILD_SAs are in the SAD.
When MOBIKE is activated, the CHILD_SAs are using the tunnel mode of IPsec. Thus, updating the IP address requires the tunnel to be updated within the SA as well as the Selectors (SPI, IP addresses) of the SA in the SAD. MOBIKEv2 supports CHILD_SA with transport mode. In this case, updating the IP address requires updating the SPD Traffic Selectors within the SA as well as the Selectors of the SAD. In addition, the Traffic Selectors of the SPD cache also need to be updated. This is the major change of MOBIKEv2 versus MOBIKE and more details on MOBIKEv2 impacts on IPsec database is discussed in Section 6
This message is described in MOBIKE [RFC4555]. MOBIKEv2 uses versions parameters to specify which version is supported by the Initiator. MOBIKE is identified with version 1 and the MOBIKEv2 with version 2. A node that implements a MOBIKEv2 of version equal or greater than 2, MUST specify the version numbers in its MOBIKE_SUPPORTED Notify Payload. All version including version 1 MUST be specified. If no version is specified, then the node is assumed to support only MOBIKE as described in [RFC4555]. The version is indicated by the Version Parameter.
When the Responder receives an MOBIKE_SUPPORTED Notify Payload and if the Responder does not support any version of MOBIKE, it ignores the MOBIKE_SUPPORTED Notify Payload. If the Responder supports only MOBIKE, it responds with MOBIKE_SUPPORTED Notify Payload and an empty notification data field as described in [RFC4555] section 4.2.1. If the Responder supports MOBIKEv2 (or greater version) and at least one of the proposed versions, it responds with a MOBIKE_SUPPORTED Notify Payload an indicates the chosen version by including a Version Parameter. If the Responder supports MOBIKEv2 or greater version but it does not support any proposed MOBIKE version, the Responder MUST respond with a MOBIKE_UNSUPPORTED_VERSION Notify Payload. It MAY also indicate the MOBIKE versions it supports with the Version Parameter.
If the Initiator does not receive the MOBIKE_SUPPORTED Notify Payload from the Responder, this MAY indicates the Responder does not support any version of MOBIKE. When the Initiator receives a MOBIKE_SUPPORTED Notify Payload from the Responder, the absence of data in the Notify Payload indicates that MOBIKE version 1 only is supported by the Responder. If a version parameter is in the notification data field, then Initiators and Responder have agreed on this version.
Note that an Initiator supporting MOBIKE with a version greater than 2 SHOULD be able to downgrade to MOBIKE. Consider the exchange between the Initiator that supports MOBIKEv2 and a Responder that only supports MOBIKE. The Initiators sends a MOBIKE_SUPPORTED Notify Payload with a version parameter indicating that it supports only version two. This data field is not considered by the Responder, which sends back an empty MOBIKE_SUPPORTED Notify Payload to agree that MOBIKEv1 is supported. This MAY not be an issue with MOBIKEv2 as MOBIKE is a subset of MOBIKEv2. If this is an issue, the Initiator SHOULD restart a new IKE_INIT.
The MOBIKE_UNSUPPORTED_VERSION Notify Payload indicates that proposed versions in the MOBIKE_SUPPORTED Notify Payload are not supported. Agreement of the version MUST be restarted.
The Responder specifies the version it supports to ease the renegotiation with the Version Parameter.
Receipt of a MOBIKE_UNSUPPORTED_VERSION Notify Payload by the Initiator indicates, the Responder knows at least a MOBIKE with version greater than 2. It MAY read the version parameter from the notification data field and restart the negotiation if it also support the mentioned version.
The UPDATE_SA_ADDRESSES Notify Payload already exists in MOBIKE [RFC4555], and the procedure is described in section 3.5 of [RFC4555].
With MOBIKEv2 the updating procedure remains the same as in MOBIKE. Data to be updated are the same for the IKE_SA as well as for CHILD_SA in tunnel mode. The only difference remains when a CHILD_SA is set with transport mode.
In that case, as the SPD cache is impacted more directly by the update, we insist the new IP address MUST be check against the SPD and the PAD. In case the new address is not authorized, the Initiator MUST NOT send an UPDATE_SA_ADDRESS or an ADDITIONAL_*_ADDRESS Notify Payload. In case the new IP address is not authorized by the Responder, an UNACCEPTABLE_ADDRESS Notify Payload described in section 4.1.1 of [RFC4555] MUST be sent.
If the IP address is authorized, the Initiator and Responder MUST update their SPD Traffic Selectors in the SA instead of the tunnel IP addresses. Then, SA Selectors in the SAD are updated in a similar way as with MOBIKE. At last, the Traffic Selectors of the SPD cache MUST also be updated with the appropriated IP address. Similarly to MOBIKE, the appropriated IP address is the newly acquired IP address considered by the Initiator (either when a mobility occurs or when an additional IP address is used). This IP address is provided by the Initiator to the Responder via the IP header of the UPDATE_SA_ADDRESSES Notify Payload.
This section discusses the impact of MOBIKEv2 on the IPsec databases. Since implementation vary widely, we do not discuss how these updates MUST be performed.
The SPD MUST NOT be modified. Only the SPD cache needs to be modified. MOBIKE did not necessarily require update on the SDP cache, mostly because the Traffic Selectors are left unchanged with the tunnel mode. In fact, SPD Cache also have the outer IP addresses in its processing information (cf. section 4.1.2 of [RFC4301]). This information MAY be also defined in conjunction of the PAD, and eventually MAY be derived from the IP header of the IKE_INIT. However, this information is mostly used to negotiate the corresponding SA, and for this reason, does not necessarily require to be updated. On the other hand as discussed in Appendix A.1 of [RFC4555], if this information is used to link the SPD cache entry to the SA, then this information MUST be updated properly.
With MOBIKEv2 for CHILD_SA using the transport mode, the SPD Traffic Selectors MUST be updated, and as such, the SPD MUST be updated. For this reason the IP address MUST match the SPD and PAD before performing the update.
MOBIKE requires to update the Selector of the SA as well as the content of the SA (the Tunnel outer IP addresses). With MOBIKEv2 for CHILD_SA using the transport mode, there is no tunnel outer IP addresses to update. Instead the SDP Selectors in the SA as well as the Selector of the SA MUST be updated.
The PAD MUST NOT be updated.
The Notify Payload is defined in [RFC5996], section 3.10. This Notify Payload is represented as below:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Next Payload !C! RESERVED ! Payload Length ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! Protocol ID ! SPI Size ! Notify Message Type ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! ! ~ Security Parameter Index (SPI) ~ ! ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! ! ~ Notification Data ~ ! ! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Notify Payload
In our case, we would fill the different fields as defined below:
In this section we provide assignment numbers for the different Type of Notify Payloads. Such numbers are added to the list provided by the IANA at http://www.iana.org/assignments/ikev2-parameters.
The MOBIKE_SUPPORTED Notify Payload is defined in [RFC4555]. The type code is 16396.
The UPDATE_SA_ADDRESSES is described in [RFC4555]. The type code is 16400.
Name Value Reference ---- ----- --------- MOBIKE_SUPPORTED 16396 [RFC4555] UPDATE_SA_ADDRESSES 16400 [RFC4555] Notify Message -- status type
This Notify Payload is used by the Responder to indicate, it does not understand the MOBIKE version number proposed by the Initiator. When sending this Notify Payload, the Responder MAY add the supported version of MOBIKE it supports.
The Type value associated to this message is the first value of Notify Message error type value assigned for private use, that is to say : 8192.
Name Value Reference ---- ----- --------- MOBIKE_UNSUPPORTED_VERSION 8192 Notify Message -- error type -- Private values
1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TYPE | NBR | VERS | VERS | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ~ ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | VERS | VERS | PADDING | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Version Parameter
Where:
Name Value Reference ---- ----- --------- Reserved 0 MOBIKE 1 MOBIKEv2 2 Reserved to IANA 3-254 NONE 255 Version
Registry: Value NOTIFY PARAMETER - MOBIKEv2 Reference ------------ ---------------------------- --------- 0 Reserved 1 Version 2-255 Reserved to IANA Parameter code types
Security Considerations have already been expressed in [RFC4555]. There are no additional Security Considerations due to the use of the transport mode.
The new Notify Message error Type to be added are:
Name Value Reference ---- ----- --------- MOBIKE_UNSUPPORTED_VERSION 8192 Notify Message -- error type -- Private values
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. |
[RFC4301] | Kent, S. and K. Seo, "Security Architecture for the Internet Protocol", RFC 4301, December 2005. |
[RFC4555] | Eronen, P., "IKEv2 Mobility and Multihoming Protocol (MOBIKE)", RFC 4555, June 2006. |
[RFC5996] | Kaufman, C., Hoffman, P., Nir, Y. and P. Eronen, "Internet Key Exchange Protocol Version 2 (IKEv2)", RFC 5996, September 2010. |