draft-ietf-ipsecme-failure-detection-00.txt | draft-ietf-ipsecme-failure-detection-01.txt | |||
---|---|---|---|---|
IPsecME Working Group Y. Nir, Ed. | IPsecME Working Group Y. Nir, Ed. | |||
Internet-Draft Check Point | Internet-Draft Check Point | |||
Intended status: Standards Track D. Wierbowski | Intended status: Standards Track D. Wierbowski | |||
Expires: March 7, 2011 IBM | Expires: April 13, 2011 IBM | |||
September 3, 2010 | F. Detienne | |||
P. Sethi | ||||
Cisco | ||||
October 10, 2010 | ||||
A Quick Crash Detection Method for IKE | A Quick Crash Detection Method for IKE | |||
draft-ietf-ipsecme-failure-detection-00 | draft-ietf-ipsecme-failure-detection-01 | |||
Abstract | Abstract | |||
This document describes an extension to the IKEv2 protocol that | This document describes an extension to the IKEv2 protocol that | |||
allows for faster detection of SA desynchronization using a saved | allows for faster detection of SA desynchronization using a saved | |||
token. | token. | |||
When an IPsec tunnel between two IKEv2 peers is disconnected due to a | When an IPsec tunnel between two IKEv2 peers is disconnected due to a | |||
restart of one peer, it can take as much as several minutes for the | restart of one peer, it can take as much as several minutes for the | |||
other peer to discover that the reboot has occurred, thus delaying | other peer to discover that the reboot has occurred, thus delaying | |||
skipping to change at page 1, line 39 | skipping to change at page 1, line 42 | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on March 7, 2011. | This Internet-Draft will expire on April 13, 2011. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2010 IETF Trust and the persons identified as the | Copyright (c) 2010 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 3, line 16 | skipping to change at page 3, line 16 | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
1.1. Conventions Used in This Document . . . . . . . . . . . . 4 | 1.1. Conventions Used in This Document . . . . . . . . . . . . 4 | |||
2. RFC 4306 Crash Recovery . . . . . . . . . . . . . . . . . . . 5 | 2. RFC 4306 Crash Recovery . . . . . . . . . . . . . . . . . . . 5 | |||
3. Protocol Outline . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Protocol Outline . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
4. Formats and Exchanges . . . . . . . . . . . . . . . . . . . . 6 | 4. Formats and Exchanges . . . . . . . . . . . . . . . . . . . . 6 | |||
4.1. Notification Format . . . . . . . . . . . . . . . . . . . 6 | 4.1. Notification Format . . . . . . . . . . . . . . . . . . . 6 | |||
4.2. Passing a Token in the AUTH Exchange . . . . . . . . . . . 7 | 4.2. Passing a Token in the AUTH Exchange . . . . . . . . . . . 7 | |||
4.3. Replacing Tokens After Rekey or Resumption . . . . . . . . 8 | 4.3. Replacing Tokens After Rekey or Resumption . . . . . . . . 8 | |||
4.4. Replacing the Token for an Existing SA . . . . . . . . . . 9 | 4.4. Replacing the Token for an Existing SA . . . . . . . . . . 9 | |||
4.5. Presenting the Token in an INFORMATIONAL Exchange . . . . 9 | 4.5. Presenting the Token in an Unprotected Message . . . . . . 9 | |||
5. Token Generation and Verification . . . . . . . . . . . . . . 10 | 5. Token Generation and Verification . . . . . . . . . . . . . . 10 | |||
5.1. A Stateless Method of Token Generation . . . . . . . . . . 10 | 5.1. A Stateless Method of Token Generation . . . . . . . . . . 10 | |||
5.2. A Stateless Method with IP addresses . . . . . . . . . . . 11 | 5.2. A Stateless Method with IP addresses . . . . . . . . . . . 11 | |||
5.3. Token Lifetime . . . . . . . . . . . . . . . . . . . . . . 11 | 5.3. Token Lifetime . . . . . . . . . . . . . . . . . . . . . . 11 | |||
6. Backup Gateways . . . . . . . . . . . . . . . . . . . . . . . 11 | 6. Backup Gateways . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
7. Alternative Solutions . . . . . . . . . . . . . . . . . . . . 12 | 7. Alternative Solutions . . . . . . . . . . . . . . . . . . . . 12 | |||
7.1. Initiating a new IKE SA . . . . . . . . . . . . . . . . . 12 | 7.1. Initiating a new IKE SA . . . . . . . . . . . . . . . . . 12 | |||
7.2. SIR . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 7.2. SIR . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
7.3. Birth Certificates . . . . . . . . . . . . . . . . . . . . 12 | 7.3. Birth Certificates . . . . . . . . . . . . . . . . . . . . 12 | |||
7.4. Reducing Liveness Check Length . . . . . . . . . . . . . . 13 | 7.4. Reducing Liveness Check Length . . . . . . . . . . . . . . 13 | |||
8. Interaction with Session Resumption . . . . . . . . . . . . . 13 | 8. Interaction with Session Resumption . . . . . . . . . . . . . 13 | |||
9. Operational Considerations . . . . . . . . . . . . . . . . . . 15 | 9. Operational Considerations . . . . . . . . . . . . . . . . . . 15 | |||
9.1. Who should implement this specification . . . . . . . . . 15 | 9.1. Who should implement this specification . . . . . . . . . 15 | |||
9.2. Response to unknown child SPI . . . . . . . . . . . . . . 16 | 9.2. Response to unknown child SPI . . . . . . . . . . . . . . 16 | |||
9.3. Using Tokens that Depend on IP Addresses . . . . . . . . . 16 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | ||||
10.1. QCD Token Generation and Handling . . . . . . . . . . . . 17 | 10.1. QCD Token Generation and Handling . . . . . . . . . . . . 17 | |||
10.2. QCD Token Transmission . . . . . . . . . . . . . . . . . . 18 | 10.2. QCD Token Transmission . . . . . . . . . . . . . . . . . . 17 | |||
10.3. QCD Token Enumeration . . . . . . . . . . . . . . . . . . 18 | 10.3. QCD Token Enumeration . . . . . . . . . . . . . . . . . . 18 | |||
10.4. Selecting an Appropriate Token Generation Method . . . . . 18 | ||||
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | |||
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 19 | 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
13. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 13. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
13.1. Changes from draft-nir-ike-qcd-07 . . . . . . . . . . . . 19 | 13.1. Changes from draft-ietf-ipsecme-failure-detection-00 . . . 19 | |||
13.2. Changes from draft-nir-ike-qcd-03 and -04 . . . . . . . . 19 | 13.2. Changes from draft-nir-ike-qcd-07 . . . . . . . . . . . . 20 | |||
13.3. Changes from draft-nir-ike-qcd-02 . . . . . . . . . . . . 19 | 13.3. Changes from draft-nir-ike-qcd-03 and -04 . . . . . . . . 20 | |||
13.4. Changes from draft-nir-ike-qcd-01 . . . . . . . . . . . . 20 | 13.4. Changes from draft-nir-ike-qcd-02 . . . . . . . . . . . . 20 | |||
13.5. Changes from draft-nir-ike-qcd-00 . . . . . . . . . . . . 20 | 13.5. Changes from draft-nir-ike-qcd-01 . . . . . . . . . . . . 20 | |||
13.6. Changes from draft-nir-qcr-00 . . . . . . . . . . . . . . 20 | 13.6. Changes from draft-nir-ike-qcd-00 . . . . . . . . . . . . 20 | |||
14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 13.7. Changes from draft-nir-qcr-00 . . . . . . . . . . . . . . 20 | |||
14.1. Normative References . . . . . . . . . . . . . . . . . . . 20 | 14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
14.2. Informative References . . . . . . . . . . . . . . . . . . 20 | 14.1. Normative References . . . . . . . . . . . . . . . . . . . 21 | |||
14.2. Informative References . . . . . . . . . . . . . . . . . . 21 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 21 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
1. Introduction | 1. Introduction | |||
IKEv2, as described in [IKEv2bis] and its predecessor RFC 4306, has a | IKEv2, as described in [RFC5996] and its predecessor RFC 4306, has a | |||
method for recovering from a reboot of one peer. As long as traffic | method for recovering from a reboot of one peer. As long as traffic | |||
flows in both directions, the rebooted peer should re-establish the | flows in both directions, the rebooted peer should re-establish the | |||
tunnels immediately. However, in many cases the rebooted peer is a | tunnels immediately. However, in many cases the rebooted peer is a | |||
VPN gateway that protects only servers, or else the non-rebooted peer | VPN gateway that protects only servers, or else the non-rebooted peer | |||
has a dynamic IP address. In such cases, the rebooted peer will not | has a dynamic IP address. In such cases, the rebooted peer will not | |||
be able to re-establish the tunnels. Section 2 describes how | be able to re-establish the tunnels. Section 2 describes how | |||
recovery works under RFC 4306, and explains why it may take several | recovery works under RFC 4306, and explains why it may take several | |||
minutes. | minutes. | |||
The method proposed here, is to send an octet string, called a "QCD | The method proposed here, is to send an octet string, called a "QCD | |||
skipping to change at page 5, line 11 | skipping to change at page 5, line 11 | |||
database. A small non-volatile storage module is required for a | database. A small non-volatile storage module is required for a | |||
token maker, but a larger one can be used to enhance performance, as | token maker, but a larger one can be used to enhance performance, as | |||
described in Section 9.2. | described in Section 9.2. | |||
2. RFC 4306 Crash Recovery | 2. RFC 4306 Crash Recovery | |||
When one peer loses state or reboots, the other peer does not get any | When one peer loses state or reboots, the other peer does not get any | |||
notification, so unidirectional IPsec traffic can still flow. The | notification, so unidirectional IPsec traffic can still flow. The | |||
rebooted peer will not be able to decrypt it, however, and the only | rebooted peer will not be able to decrypt it, however, and the only | |||
remedy is to send an unprotected INVALID_SPI notification as | remedy is to send an unprotected INVALID_SPI notification as | |||
described in section 3.10.1 of [IKEv2bis]. That section also | described in section 3.10.1 of [RFC5996]. That section also | |||
describes the processing of such a notification: | describes the processing of such a notification: | |||
"If this Informational Message is sent outside the | "If this Informational Message is sent outside the | |||
context of an IKE_SA, it should be used by the recipient | context of an IKE_SA, it should be used by the recipient | |||
only as a "hint" that something might be wrong (because it | only as a "hint" that something might be wrong (because it | |||
could easily be forged)." | could easily be forged)." | |||
Since the INVALID_SPI can only be used as a hint, the non-rebooted | Since the INVALID_SPI can only be used as a hint, the non-rebooted | |||
peer has to determine whether the IPsec SA, and indeed the parent IKE | peer has to determine whether the IPsec SA, and indeed the parent IKE | |||
SA are still valid. The method of doing this is described in section | SA are still valid. The method of doing this is described in section | |||
2.4 of [IKEv2bis]. This method, called "liveness check" involves | 2.4 of [RFC5996]. This method, called "liveness check" involves | |||
sending a protected empty INFORMATIONAL message, and awaiting a | sending a protected empty INFORMATIONAL message, and awaiting a | |||
response. This procedure is sometimes referred to as "Dead Peer | response. This procedure is sometimes referred to as "Dead Peer | |||
Detection" or DPD. | Detection" or DPD. | |||
Section 2.4 does not mandate how many times the liveness check | Section 2.4 does not mandate how many times the liveness check | |||
message should be retransmitted, or for how long, but does recommend | message should be retransmitted, or for how long, but does recommend | |||
the following: | the following: | |||
"It is | "It is | |||
suggested that messages be retransmitted at least a dozen times over | suggested that messages be retransmitted at least a dozen times over | |||
a period of at least several minutes before giving up on an SA..." | a period of at least several minutes before giving up on an SA..." | |||
Those "at least several minutes" are a time during which both peers | Those "at least several minutes" are a time during which both peers | |||
are active, but IPsec cannot be used. | are active, but IPsec cannot be used. | |||
3. Protocol Outline | 3. Protocol Outline | |||
Supporting implementations will send a notification, called a "QCD | Supporting implementations will send a notification, called a "QCD | |||
token", as described in Section 4.1 in the last IKE_AUTH exchange | token", as described in Section 4.1 in the first IKE_AUTH exchange | |||
messages. These are the final IKE_AUTH request and final IKE_AUTH | messages. These are the final IKE_AUTH request and final IKE_AUTH | |||
response that contain the AUTH payloads. The generation of these | response that contain the AUTH payloads. The generation of these | |||
tokens is a local matter for implementations, but considerations are | tokens is a local matter for implementations, but considerations are | |||
described in Section 5. Implementations that send such a token will | described in Section 5. Implementations that send such a token will | |||
be called "token makers". | be called "token makers". | |||
A supporting implementation receiving such a token MUST store it (or | A supporting implementation receiving such a token MUST store it (or | |||
a digest thereof) along with the IKE SA. Implementations that | a digest thereof) along with the IKE SA. Implementations that | |||
support this part of the protocol will be called "token takers". | support this part of the protocol will be called "token takers". | |||
Section 9.1 has considerations for which implementations need to be | Section 9.1 has considerations for which implementations need to be | |||
skipping to change at page 6, line 17 | skipping to change at page 6, line 17 | |||
When a token maker receives a protected IKE request message with | When a token maker receives a protected IKE request message with | |||
unknown IKE SPIs, it SHOULD generate a new token that is identical to | unknown IKE SPIs, it SHOULD generate a new token that is identical to | |||
the previous token, and send it to the requesting peer in an | the previous token, and send it to the requesting peer in an | |||
unprotected IKE message as described in Section 4.5. | unprotected IKE message as described in Section 4.5. | |||
When a token taker receives the QCD token in an unprotected | When a token taker receives the QCD token in an unprotected | |||
notification, it MUST verify that the TOKEN_SECRET_DATA matches the | notification, it MUST verify that the TOKEN_SECRET_DATA matches the | |||
token stored with the matching IKE SA. If the verification fails, or | token stored with the matching IKE SA. If the verification fails, or | |||
if the IKE SPIs in the message do not match any existing IKE SA, it | if the IKE SPIs in the message do not match any existing IKE SA, it | |||
SHOULD log the event. If it succeeds, it MUST silently delete the | SHOULD log the event. If it succeeds, it MUST silently delete the | |||
IKE SA associated with the IKE_SPI fields, and all dependant child | IKE SA associated with the IKE_SPI fields, and all dependent child | |||
SAs. This event MAY also be logged. The token taker MUST accept | SAs. This event MAY also be logged. The token taker MUST accept | |||
such tokens from any IP address and port combination, so as to allow | such tokens from any IP address and port combination, so as to allow | |||
different kinds of high-availability configurations of the token | different kinds of high-availability configurations of the token | |||
maker. | maker. | |||
A supporting token taker MAY immediately create new SAs using an | A supporting token taker MAY immediately create new SAs using an | |||
Initial exchange, or it may wait for subsequent traffic to trigger | Initial exchange, or it may wait for subsequent traffic to trigger | |||
the creation of new SAs. | the creation of new SAs. | |||
See Section 8 for a short discussion about this extensions's | See Section 8 for a short discussion about this extensions's | |||
skipping to change at page 7, line 6 | skipping to change at page 7, line 6 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
! ! | ! ! | |||
~ TOKEN_SECRET_DATA ~ | ~ TOKEN_SECRET_DATA ~ | |||
! ! | ! ! | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
o Protocol ID (1 octet) MUST be 1, as this message is related to an | o Protocol ID (1 octet) MUST be 1, as this message is related to an | |||
IKE SA. | IKE SA. | |||
o SPI Size (1 octet) MUST be zero, in conformance with section 3.10 | o SPI Size (1 octet) MUST be zero, in conformance with section 3.10 | |||
of [IKEv2bis]. | of [RFC5996]. | |||
o QCD Token Notify Message Type (2 octets) - MUST be xxxxx, the | o QCD Token Notify Message Type (2 octets) - MUST be xxxxx, the | |||
value assigned for QCD token notifications. TBA by IANA. | value assigned for QCD token notifications. TBA by IANA. | |||
o TOKEN_SECRET_DATA (16-128 octets) contains a generated token as | o TOKEN_SECRET_DATA (16-128 octets) contains a generated token as | |||
described in Section 5. | described in Section 5. | |||
4.2. Passing a Token in the AUTH Exchange | 4.2. Passing a Token in the AUTH Exchange | |||
For brevity, only the EAP version of an AUTH exchange will be | For brevity, only the EAP version of an AUTH exchange will be | |||
presented here. The non-EAP version is very similar. The figures | presented here. The non-EAP version is very similar. The figures | |||
below are based on appendix C.3 of [IKEv2bis]. | below are based on appendix C.3 of [RFC5996]. | |||
first request --> IDi, | first request --> IDi, | |||
[N(INITIAL_CONTACT)], | [N(INITIAL_CONTACT)], | |||
[[N(HTTP_CERT_LOOKUP_SUPPORTED)], CERTREQ+], | [[N(HTTP_CERT_LOOKUP_SUPPORTED)], CERTREQ+], | |||
[IDr], | [IDr], | |||
[N(QCD_TOKEN)] | ||||
[CP(CFG_REQUEST)], | [CP(CFG_REQUEST)], | |||
[N(IPCOMP_SUPPORTED)+], | [N(IPCOMP_SUPPORTED)+], | |||
[N(USE_TRANSPORT_MODE)], | [N(USE_TRANSPORT_MODE)], | |||
[N(ESP_TFC_PADDING_NOT_SUPPORTED)], | [N(ESP_TFC_PADDING_NOT_SUPPORTED)], | |||
[N(NON_FIRST_FRAGMENTS_ALSO)], | [N(NON_FIRST_FRAGMENTS_ALSO)], | |||
SA, TSi, TSr, | SA, TSi, TSr, | |||
[V+] | [V+] | |||
first response <-- IDr, [CERT+], AUTH, | first response <-- IDr, [CERT+], AUTH, | |||
EAP, | EAP, | |||
[V+] | [V+] | |||
/ --> EAP | / --> EAP | |||
repeat 1..N times | | repeat 1..N times | | |||
\ <-- EAP | \ <-- EAP | |||
last request --> AUTH | last request --> AUTH | |||
[N(QCD_TOKEN)] | ||||
last response <-- AUTH, | last response <-- AUTH, | |||
[N(QCD_TOKEN)] | [N(QCD_TOKEN)] | |||
[CP(CFG_REPLY)], | [CP(CFG_REPLY)], | |||
[N(IPCOMP_SUPPORTED)], | [N(IPCOMP_SUPPORTED)], | |||
[N(USE_TRANSPORT_MODE)], | [N(USE_TRANSPORT_MODE)], | |||
[N(ESP_TFC_PADDING_NOT_SUPPORTED)], | [N(ESP_TFC_PADDING_NOT_SUPPORTED)], | |||
[N(NON_FIRST_FRAGMENTS_ALSO)], | [N(NON_FIRST_FRAGMENTS_ALSO)], | |||
SA, TSi, TSr, | SA, TSi, TSr, | |||
[N(ADDITIONAL_TS_POSSIBLE)], | [N(ADDITIONAL_TS_POSSIBLE)], | |||
skipping to change at page 8, line 13 | skipping to change at page 8, line 13 | |||
Note that the QCD_TOKEN notification is marked as optional because it | Note that the QCD_TOKEN notification is marked as optional because it | |||
is not required by this specification that every implementation be | is not required by this specification that every implementation be | |||
both token maker and token taker. If only one peer sends the QCD | both token maker and token taker. If only one peer sends the QCD | |||
token, then a reboot of the other peer will not be recoverable by | token, then a reboot of the other peer will not be recoverable by | |||
this method. This may be acceptable if traffic typically originates | this method. This may be acceptable if traffic typically originates | |||
from the other peer. | from the other peer. | |||
In any case, the lack of a QCD_TOKEN notification MUST NOT be taken | In any case, the lack of a QCD_TOKEN notification MUST NOT be taken | |||
as an indication that the peer does not support this standard. | as an indication that the peer does not support this standard. | |||
Conversely, if a peer does not understand this notification, it will | Conversely, if a peer does not understand this notification, it will | |||
simply ignore it. Therefore a peer MAY send this notification | simply ignore it. Therefore a peer may send this notification | |||
freely, even if it does not know whether the other side supports it. | freely, even if it does not know whether the other side supports it. | |||
The QCD_TOKEN notification is related to the IKE SA and MUST follow | The QCD_TOKEN notification is related to the IKE SA and MUST follow | |||
the AUTH payload and precede the Configuration payload and all | the AUTH payload and precede the Configuration payload and all | |||
payloads related to the child SA. | payloads related to the child SA. | |||
4.3. Replacing Tokens After Rekey or Resumption | 4.3. Replacing Tokens After Rekey or Resumption | |||
After rekeying an IKE SA, the IKE SPIs are replaced, so the new SA | After rekeying an IKE SA, the IKE SPIs are replaced, so the new SA | |||
also needs to have a token. If only the responder in the rekey | also needs to have a token. If only the responder in the rekey | |||
skipping to change at page 9, line 39 | skipping to change at page 9, line 39 | |||
HDR, SK { N(COOKIE2), [N(QCD_TOKEN)] } | HDR, SK { N(COOKIE2), [N(QCD_TOKEN)] } | |||
(IP_I2:4500 -> IP_R1:4500) | (IP_I2:4500 -> IP_R1:4500) | |||
HDR, SK { N(COOKIE2), [N(QCD_TOKEN)] } --> | HDR, SK { N(COOKIE2), [N(QCD_TOKEN)] } --> | |||
A token taker MUST accept such gratuitous QCD_TOKEN notifications as | A token taker MUST accept such gratuitous QCD_TOKEN notifications as | |||
long as they are carried in protected exchanges. A token maker | long as they are carried in protected exchanges. A token maker | |||
SHOULD NOT generate them unless it is no longer able to generate the | SHOULD NOT generate them unless it is no longer able to generate the | |||
old QCD_TOKEN. | old QCD_TOKEN. | |||
4.5. Presenting the Token in an INFORMATIONAL Exchange | 4.5. Presenting the Token in an Unprotected Message | |||
This QCD_TOKEN notification is unprotected, and is sent as a response | This QCD_TOKEN notification is unprotected, and is sent as a response | |||
to a protected IKE request, which uses an IKE SA that is unknown. | to a protected IKE request, which uses an IKE SA that is unknown. | |||
request --> N(INVALID_IKE_SPI), N(QCD_TOKEN)+ | request --> N(INVALID_IKE_SPI), N(QCD_TOKEN)+ | |||
If child SPIs are persistently mapped to IKE SPIs as described in | If child SPIs are persistently mapped to IKE SPIs as described in | |||
Section 9.2, a token taker may get the following unprotected message | Section 9.2, a token taker may get the following unprotected message | |||
in response to an ESP or AH packet. | in response to an ESP or AH packet. | |||
request --> N(INVALID_SPI), N(QCD_TOKEN)+ | request --> N(INVALID_SPI), N(QCD_TOKEN)+ | |||
The QCD_TOKEN and INVALID_IKE_SPI notifications are sent together to | The QCD_TOKEN and INVALID_IKE_SPI notifications are sent together to | |||
support both implementations that conform to this specification and | support both implementations that conform to this specification and | |||
implementations that don't. Similar to the description in section | implementations that don't. Similar to the description in section | |||
2.21 of [IKEv2bis], The IKE SPI and message ID fields in the packet | 2.21 of [RFC5996], the IKE SPI and message ID fields in the packet | |||
headers are taken from the protected IKE request. | headers are taken from the protected IKE request. | |||
To support a periodic rollover of the secret used for token | To support a periodic rollover of the secret used for token | |||
generation, the token taker MUST support at least four QCD_TOKEN | generation, the token taker MUST support at least four QCD_TOKEN | |||
notifications in a single packet. The token is considered verified | notifications in a single packet. The token is considered verified | |||
if any of the QCD_TOKEN notifications matches. The token maker MAY | if any of the QCD_TOKEN notifications matches. The token maker MAY | |||
generate up to four QCD_TOKEN notifications, based on several | generate up to four QCD_TOKEN notifications, based on several | |||
generations of keys. | generations of keys. | |||
If the QCD_TOKEN verifies OK, an empty response MUST be sent. If the | If the QCD_TOKEN verifies OK, the receiver MUST silently discard the | |||
QCD_TOKEN cannot be validated, a response MUST NOT be sent. | IKE SA and all associated child SAs. If the QCD_TOKEN cannot be | |||
validated, a response MUST NOT be sent, and the event may be logged. | ||||
Section 5 defines token verification. | Section 5 defines token verification. | |||
5. Token Generation and Verification | 5. Token Generation and Verification | |||
No token generation method is mandated by this document. Two method | No token generation method is mandated by this document. Two methods | |||
are documented in the following sub-sections, but they only serve as | are documented in the following sub-sections, but they only serve as | |||
examples. | examples. | |||
The following lists the requirements from a token generation | The following lists the requirements for a token generation | |||
mechanism: | mechanism: | |||
o Tokens MUST be at least 16 octets long, and no more than 128 | o Tokens MUST be at least 16 octets long, and no more than 128 | |||
octets long, to facilitate storage and transmission. Tokens | octets long, to facilitate storage and transmission. Tokens | |||
SHOULD be indistinguishable from random data. | SHOULD be indistinguishable from random data. | |||
o It should not be possible for an external attacker to guess the | o It should not be possible for an external attacker to guess the | |||
QCD token generated by an implementation. Cryptographic | QCD token generated by an implementation. Cryptographic | |||
mechanisms such as PRNG and hash functions are RECOMMENDED. | mechanisms such as PRNG and hash functions are RECOMMENDED. | |||
o The token maker, MUST be able to re-generate or retrieve the token | o The token maker MUST be able to re-generate or retrieve the token | |||
based on the IKE SPIs even after it reboots. | based on the IKE SPIs even after it reboots. | |||
o The method of token generation MUST be such, that a collision of | o The method of token generation MUST be such that a collision of | |||
QCD tokens between different pairs of IKE SPI will be highly | QCD tokens between different pairs of IKE SPI will be highly | |||
unlikely. | unlikely. | |||
5.1. A Stateless Method of Token Generation | 5.1. A Stateless Method of Token Generation | |||
This describes a stateless method of generating a token: | This describes a stateless method of generating a token: | |||
o At installation or immediately after the first boot of the token | o At installation or immediately after the first boot of the token | |||
maker, 32 random octets are generated using a secure random number | maker, 32 random octets are generated using a secure random number | |||
generator or a PRNG. | generator or a PRNG. | |||
o Those 32 bytes, called the "QCD_SECRET", are stored in non- | o Those 32 bytes, called the "QCD_SECRET", are stored in non- | |||
skipping to change at page 11, line 22 | skipping to change at page 11, line 22 | |||
TOKEN_SECRET_DATA = HASH(QCD_SECRET | SPI-I | SPI-R) | TOKEN_SECRET_DATA = HASH(QCD_SECRET | SPI-I | SPI-R) | |||
5.2. A Stateless Method with IP addresses | 5.2. A Stateless Method with IP addresses | |||
This method is similar to the one in the previous section, except | This method is similar to the one in the previous section, except | |||
that the IP address of the token taker is also added to the block | that the IP address of the token taker is also added to the block | |||
being hashed. This has the disadvantage that the token needs to be | being hashed. This has the disadvantage that the token needs to be | |||
replaced (as described in Section 4.4) whenever the token taker | replaced (as described in Section 4.4) whenever the token taker | |||
changes its address. | changes its address. | |||
The reason to use this method is described in Section 9.3. When | The reason to use this method is described in Section 10.4. When | |||
using this method, the TOKEN_SECRET_DATA field is calculated as | using this method, the TOKEN_SECRET_DATA field is calculated as | |||
follows: | follows: | |||
TOKEN_SECRET_DATA = HASH(QCD_SECRET | SPI-I | SPI-R | IPaddr-T) | TOKEN_SECRET_DATA = HASH(QCD_SECRET | SPI-I | SPI-R | IPaddr-T) | |||
The IPaddr-T field specifies the IP address of the token taker. | The IPaddr-T field specifies the IP address of the token taker. | |||
Secret rollover considerations are similar to those in the previous | Secret rollover considerations are similar to those in the previous | |||
section. | section. | |||
5.3. Token Lifetime | 5.3. Token Lifetime | |||
skipping to change at page 11, line 44 | skipping to change at page 11, line 44 | |||
The token is associated with a single IKE SA, and SHOULD be deleted | The token is associated with a single IKE SA, and SHOULD be deleted | |||
by the token taker when the SA is deleted or expires. More formally, | by the token taker when the SA is deleted or expires. More formally, | |||
the token is associated with the pair (SPI-I, SPI-R). | the token is associated with the pair (SPI-I, SPI-R). | |||
6. Backup Gateways | 6. Backup Gateways | |||
Making crash detection and recovery quick is a worthy goal, but since | Making crash detection and recovery quick is a worthy goal, but since | |||
rebooting a gateway takes a non-zero amount of time, many | rebooting a gateway takes a non-zero amount of time, many | |||
implementations choose to have a stand-by gateway ready to take over | implementations choose to have a stand-by gateway ready to take over | |||
as soon as the primary gateway fails for any reason. [cluster] | as soon as the primary gateway fails for any reason. [cluster] | |||
describes consideration for such clusters of gateways with | describes considerations for such clusters of gateways with | |||
synchronized state, but the rest of this section is relevant even | synchronized state, but the rest of this section is relevant even | |||
when there is no synchnorized state. | when there is no synchronized state. | |||
If such a configuration is available, it is RECOMMENDED that the | If such a configuration is available, it is RECOMMENDED that the | |||
stand-by gateway be able to generate the same token as the active | stand-by gateway be able to generate the same token as the active | |||
gateway. if the method described in Section 5.1 is used, this means | gateway. if the method described in Section 5.1 is used, this means | |||
that the QCD_SECRET field is identical in both gateways. This has | that the QCD_SECRET field is identical in both gateways. This has | |||
the effect of having the crash recovery available immediately. | the effect of having the crash recovery available immediately. | |||
Note that this refers to "high availability" configurations, where | Note that this refers to "high availability" configurations, where | |||
only one gateway is active at any given moment. This is different | only one gateway is active at any given moment. This is different | |||
from "load sharing" configurations where more than one gateway is | from "load sharing" configurations where more than one gateway is | |||
skipping to change at page 14, line 10 | skipping to change at page 14, line 10 | |||
up a new IKE SA consume less computing resources. This is | up a new IKE SA consume less computing resources. This is | |||
particularly useful in the case of a remote access gateway that has | particularly useful in the case of a remote access gateway that has | |||
many tunnels. A failure of such a gateway would require all these | many tunnels. A failure of such a gateway would require all these | |||
many remote access clients to establish an IKE SA either with the | many remote access clients to establish an IKE SA either with the | |||
rebooted gateway or with a backup gateway. This tunnel re- | rebooted gateway or with a backup gateway. This tunnel re- | |||
establishment should occur within a short period of time, creating a | establishment should occur within a short period of time, creating a | |||
burden on the remote access gateway. Session Resumption addresses | burden on the remote access gateway. Session Resumption addresses | |||
this problem by having the clients store an encrypted derivative of | this problem by having the clients store an encrypted derivative of | |||
the IKE SA for quick re-establishment. | the IKE SA for quick re-establishment. | |||
What Session Resumption does not help, is the problem of detecting | What Session Resumption does not help is the problem of detecting | |||
that the peer gateway has failed. A failed gateway may go undetected | that the peer gateway has failed. A failed gateway may go undetected | |||
for as long as the lifetime of a child SA, because IPsec does not | for as long as the lifetime of a child SA, because IPsec does not | |||
have packet acknowledgement, and applications cannot signal the IPsec | have packet acknowledgement, and applications cannot signal the IPsec | |||
layer that the tunnel "does not work". Before establishing a new IKE | layer that the tunnel "does not work". Before establishing a new IKE | |||
SA using Session Resumption, a client should ascertain that the | SA using Session Resumption, a client should ascertain that the | |||
gateway has indeed failed. This could be done using either a | gateway has indeed failed. This could be done using either a | |||
liveness check (as in RFC 4306) or using the QCD tokens described in | liveness check (as in RFC 4306) or using the QCD tokens described in | |||
this document. | this document. | |||
A remote access client conforming to both specifications will store | A remote access client conforming to both specifications will store | |||
skipping to change at page 15, line 50 | skipping to change at page 15, line 50 | |||
of this protocol extension is reduced. For this reason critical | of this protocol extension is reduced. For this reason critical | |||
systems should implement backup gateways as described in Section 6. | systems should implement backup gateways as described in Section 6. | |||
Implementing the "token maker" side of QCD makes sense for IKE | Implementing the "token maker" side of QCD makes sense for IKE | |||
implementation where protected connections originate from the peer, | implementation where protected connections originate from the peer, | |||
such as inter-domain VPNs and remote access gateways. Implementing | such as inter-domain VPNs and remote access gateways. Implementing | |||
the "token taker" side of QCD makes sense for IKE implementations | the "token taker" side of QCD makes sense for IKE implementations | |||
where protected connections originate, such as inter-domain VPNs and | where protected connections originate, such as inter-domain VPNs and | |||
remote access clients. | remote access clients. | |||
To clarify the requirements: | To clarify the this discussion: | |||
o A remote-access client MUST be a token taker and MAY be a token | o For remote-access clients it makes sense to implement the token | |||
maker. | taker role. | |||
o A remote-access gateway MAY be a token taker and MUST be a token | o For remote-access gateways it makes sense to implement the token | |||
maker. | maker role. | |||
o An inter-domain VPN gateway MUST be both token maker and token | o For inter-domain VPN gateway it makes sense to implement both | |||
taker. | roles, because it can't be known in advance where the traffic | |||
originates. | ||||
o It is perfectly valid to implement both roles in any case, for | ||||
example when using a single library or a single gateway to perform | ||||
several roles. | ||||
In order to limit the effects of DoS attacks, a token taker SHOULD | In order to limit the effects of DoS attacks, a token taker SHOULD | |||
limit the rate of QCD_TOKENs verified from a particular source. | limit the rate of QCD_TOKENs verified from a particular source. | |||
If excessive amounts of IKE requests protected with unknown IKE SPIs | If excessive amounts of IKE requests protected with unknown IKE SPIs | |||
arrive at a token maker, the IKE module SHOULD revert to the behavior | arrive at a token maker, the IKE module SHOULD revert to the behavior | |||
described in section 2.21 of [IKEv2bis] and either send an | described in section 2.21 of [RFC5996] and either send an | |||
INVALID_IKE_SPI notification, or ignore it entirely. | INVALID_IKE_SPI notification, or ignore it entirely. | |||
9.2. Response to unknown child SPI | 9.2. Response to unknown child SPI | |||
After a reboot, it is more likely that an implementation receives | After a reboot, it is more likely that an implementation receives | |||
IPsec packets than IKE packets. In that case, the rebooted | IPsec packets than IKE packets. In that case, the rebooted | |||
implementation will send an INVALID_SPI notification, triggering a | implementation will send an INVALID_SPI notification, triggering a | |||
liveness check. The token will only be sent in a response to the | liveness check. The token will only be sent in a response to the | |||
liveness check, thus requiring an extra round-trip. | liveness check, thus requiring an extra round-trip. | |||
skipping to change at page 16, line 44 | skipping to change at page 16, line 48 | |||
QCD token that arrives with an INVALID_SPI notification the same as | QCD token that arrives with an INVALID_SPI notification the same as | |||
if it arrived with the IKE SPIs of the parent IKE SA. | if it arrived with the IKE SPIs of the parent IKE SA. | |||
However, a persistent storage module might not be updated in a timely | However, a persistent storage module might not be updated in a timely | |||
manner, and could be populated with tokens relating to IKE SPIs that | manner, and could be populated with tokens relating to IKE SPIs that | |||
have already been rekeyed. A token taker MUST NOT take an invalid | have already been rekeyed. A token taker MUST NOT take an invalid | |||
QCD Token sent along with an INVALID_SPI notification as evidence | QCD Token sent along with an INVALID_SPI notification as evidence | |||
that the peer is either malfunctioning or attacking, but it SHOULD | that the peer is either malfunctioning or attacking, but it SHOULD | |||
limit the rate at which such notifications are processed. | limit the rate at which such notifications are processed. | |||
9.3. Using Tokens that Depend on IP Addresses | ||||
This section describes the rationale for token generation methods | ||||
such as the one described in Section 5.2. Note that this section | ||||
merely provides a possible rationale, and does not specify or | ||||
recommend any kind of configuration. | ||||
Some configurations of security gateway use a load-sharing cluster of | ||||
hosts, all sharing the same IP addresses, where the SAs (IKE and | ||||
child) are not synchronized between the cluster members. In such a | ||||
configuration, a single member does not know about all the IKE SAs | ||||
that are active for the configuration. A load balancer (usually a | ||||
networking switch) sends IKE and IPsec packets to the several members | ||||
based on source IP address. | ||||
In such a configuration, an attacker can send a forged protected IKE | ||||
packet with the IKE SPIs of an existing IKE SA, but from a different | ||||
IP address. This packet will likely be processed by a different | ||||
cluster member from the one that owns the IKE SA. Since no IKE SA | ||||
state is stored on this member, it will send a QCD token to the | ||||
attacker. If the QCD token does not depend on IP address, this token | ||||
can immediately be used to tell the token taker to tear down the IKE | ||||
SA using an unprotected QCD_TOKEN notification. | ||||
To thwart this possible attack, such configurations should use a | ||||
method that considers the taker's IP address, such as the method | ||||
described in Section 5.2. | ||||
10. Security Considerations | 10. Security Considerations | |||
10.1. QCD Token Generation and Handling | 10.1. QCD Token Generation and Handling | |||
Tokens MUST be hard to guess. This is critical, because if an | Tokens MUST be hard to guess. This is critical, because if an | |||
attacker can guess the token associated with an IKE SA, she can tear | attacker can guess the token associated with an IKE SA, she can tear | |||
down the IKE SA and associated tunnels at will. When the token is | down the IKE SA and associated tunnels at will. When the token is | |||
delivered in the IKE_AUTH exchange, it is encrypted. When it is sent | delivered in the IKE_AUTH exchange, it is encrypted. When it is sent | |||
again in an unprotected notification, it is not, but that is the last | again in an unprotected notification, it is not, but that is the last | |||
time this token is ever used. | time this token is ever used. | |||
An aggregation of some tokens generated by one maker together with | An aggregation of some tokens generated by one maker together with | |||
skipping to change at page 18, line 24 | skipping to change at page 17, line 50 | |||
an existing IKE SA. This implies that a conforming QCD token maker | an existing IKE SA. This implies that a conforming QCD token maker | |||
MUST be able to tell whether a particular pair of IKE SPIs represent | MUST be able to tell whether a particular pair of IKE SPIs represent | |||
a valid IKE SA. | a valid IKE SA. | |||
This requirement is obvious and easy in the case of a single gateway. | This requirement is obvious and easy in the case of a single gateway. | |||
However, some implementations use a load balancer to divide the load | However, some implementations use a load balancer to divide the load | |||
between several physical gateways. It MUST NOT be possible even in | between several physical gateways. It MUST NOT be possible even in | |||
such a configuration to trick one gateway into sending a QCD token | such a configuration to trick one gateway into sending a QCD token | |||
for an IKE SA which is valid on another gateway. | for an IKE SA which is valid on another gateway. | |||
This document does not specify how a load sharing sharing | This document does not specify how a load sharing configuration of | |||
configuration of IPsec gateways would work, but in order to support | IPsec gateways would work, but in order to support this | |||
this specification, all members MUST be able to tell whether a | specification, all members MUST be able to tell whether a particular | |||
particular IKE SA is active anywhere in the cluster. One way to do | IKE SA is active anywhere in the cluster. One way to do it is to | |||
it is to synchronize a list of active IKE SPIs among all the cluster | synchronize a list of active IKE SPIs among all the cluster members. | |||
members. | ||||
10.3. QCD Token Enumeration | 10.3. QCD Token Enumeration | |||
An attacker may try to attack QCD if the generation algorithm | An attacker may try to attack QCD if the generation algorithm | |||
described in Section 5.1 is used. The attacker will send several | described in Section 5.1 is used. The attacker will send several | |||
fake IKE requests to the gateway under attack, receiving and | fake IKE requests to the gateway under attack, receiving and | |||
recording the QCD Tokens in the responses. This will allow the | recording the QCD Tokens in the responses. This will allow the | |||
attacker to create a dictionary of IKE SPIs to QCD Tokens, which can | attacker to create a dictionary of IKE SPIs to QCD Tokens, which can | |||
later be used to tear down any IKE SA. | later be used to tear down any IKE SA. | |||
Three factors mitigate this threat: | Three factors mitigate this threat: | |||
o The space of all possible IKE SPI pairs is huge: 2^128, so making | o The space of all possible IKE SPI pairs is huge: 2^128, so making | |||
such a dictionary is impractical. Even if we assume that one | such a dictionary is impractical. Even if we assume that one | |||
implementation always generates predictable IKE SPIs, the space is | implementation always generates predictable IKE SPIs, the space is | |||
still at least 2^64 entries, so making the dictionary is extremely | still at least 2^64 entries, so making the dictionary is extremely | |||
hard. | hard. To ensure this, token makers MUST use a good pseudo-random | |||
number generator to generate the IKE SPIs. | ||||
o Throttling the amount of QCD_TOKEN notifications sent out, as | o Throttling the amount of QCD_TOKEN notifications sent out, as | |||
discussed in Section 9.1, especially when not soon after a crash | discussed in Section 9.1, especially when not soon after a crash | |||
will limit the attacker's ability to construct a dictionary. | will limit the attacker's ability to construct a dictionary. | |||
o The methods in Section 5.1 and Section 5.2 allow for a periodic | o The methods in Section 5.1 and Section 5.2 allow for a periodic | |||
change of the QCD_SECRET. Any such change invalidates the entire | change of the QCD_SECRET. Any such change invalidates the entire | |||
dictionary. | dictionary. | |||
10.4. Selecting an Appropriate Token Generation Method | ||||
This section describes the rationale for token generation methods | ||||
such as the one described in Section 5.2. Note that this section | ||||
merely provides a possible rationale, and does not specify or | ||||
recommend any kind of configuration. | ||||
Some configurations of security gateway use a load-sharing cluster of | ||||
hosts, all sharing the same IP addresses, where the SAs (IKE and | ||||
child) are not synchronized between the cluster members. In such a | ||||
configuration, a single member does not know about all the IKE SAs | ||||
that are active for the configuration. A load balancer (usually a | ||||
networking switch) sends IKE and IPsec packets to the several members | ||||
based on source IP address. | ||||
In such a configuration, an attacker can send a forged protected IKE | ||||
packet with the IKE SPIs of an existing IKE SA, but from a different | ||||
IP address. This packet will likely be processed by a different | ||||
cluster member from the one that owns the IKE SA. Since no IKE SA | ||||
state is stored on this member, it will send a QCD token to the | ||||
attacker. If the QCD token does not depend on IP address, this token | ||||
can immediately be used to tell the token taker to tear down the IKE | ||||
SA using an unprotected QCD_TOKEN notification. | ||||
To thwart this possible attack, such configurations should use a | ||||
method that considers the taker's IP address, such as the method | ||||
described in Section 5.2. | ||||
On the other hand, when using this method a change of address | ||||
invalidates the tokens, so this method has both advantages and | ||||
disadvantages. | ||||
11. IANA Considerations | 11. IANA Considerations | |||
IANA is requested to assign a notify message type from the status | IANA is requested to assign a notify message type from the status | |||
types range (16406-40959) of the "IKEv2 Notify Message Types" | types range (16406-40959) of the "IKEv2 Notify Message Types" | |||
registry with name "QUICK_CRASH_DETECTION". | registry with name "QUICK_CRASH_DETECTION". | |||
12. Acknowledgements | 12. Acknowledgements | |||
We would like to thank Hannes Tschofenig and Yaron Sheffer for their | We would like to thank Hannes Tschofenig and Yaron Sheffer for their | |||
comments about Session Resumption. | comments about Session Resumption. | |||
Frederic D'etienne and Pratima Sethi contributed the ideas in | Frederic D'etienne and Pratima Sethi contributed the ideas in | |||
Section 9.3 and Section 5.2. | Section 10.4 and Section 5.2. | |||
Others who have contrinuted valuable comments are, in alphabetical | Others who have contrinuted valuable comments are, in alphabetical | |||
order, Lakshminath Dondeti, Scott C Moonen and Dave Wierbowski. | order, Lakshminath Dondeti and Scott C Moonen. | |||
13. Change Log | 13. Change Log | |||
This section lists all changes in this document | This section lists all changes in this document | |||
NOTE TO RFC EDITOR : Please remove this section in the final RFC | NOTE TO RFC EDITOR : Please remove this section in the final RFC | |||
13.1. Changes from draft-nir-ike-qcd-07 | 13.1. Changes from draft-ietf-ipsecme-failure-detection-00 | |||
o Nits pointed out by Scott and Yaron. | ||||
o Pratima and Frederic are back on board. | ||||
o Changed IKEv2bis draft reference to RFC 5996. | ||||
o Resolved issues #189, #190, #191, and #192: | ||||
* Renamed section 4.5 and removed the requirement to send an | ||||
acknowledgement for the unprotected message. | ||||
* Moved the QCD token from the last to the first IKE_AUTH | ||||
request. | ||||
* Added a MUST to Section 10.3 to require that IKE SPIs be | ||||
randomly generated. | ||||
* Changed the language in Section 9.1, to not use RFC 2119 | ||||
terminology. | ||||
* Moved the section describing why one would want the method | ||||
dependant on IP addresses (in Section 5.2 from operational | ||||
considerations to security considerations. | ||||
13.2. Changes from draft-nir-ike-qcd-07 | ||||
o First WG version. | o First WG version. | |||
o Addressed Scott C Moonen's concern about collisions of QCD tokens. | o Addressed Scott C Moonen's concern about collisions of QCD tokens. | |||
o Updated references to point to IKEv2bis instead of RFC 4306 and | o Updated references to point to IKEv2bis instead of RFC 4306 and | |||
4718. Also converted draft reference for resumption to RFC 5723. | 4718. Also converted draft reference for resumption to RFC 5723. | |||
o Added Dave Wiebrowski as author, and removed Pratima and Frederic. | o Added Dave Wiebrowski as author, and removed Pratima and Frederic. | |||
13.2. Changes from draft-nir-ike-qcd-03 and -04 | 13.3. Changes from draft-nir-ike-qcd-03 and -04 | |||
Mostly editorial changes and cleaning up. | Mostly editorial changes and cleaning up. | |||
13.3. Changes from draft-nir-ike-qcd-02 | 13.4. Changes from draft-nir-ike-qcd-02 | |||
o Described QCD token enumeration, following a question by | o Described QCD token enumeration, following a question by | |||
Lakshminath Dondeti. | Lakshminath Dondeti. | |||
o Added the ability to replace the QCD token for an existing IKE SA. | o Added the ability to replace the QCD token for an existing IKE SA. | |||
o Added tokens dependant on peer IP address and their interaction | o Added tokens dependent on peer IP address and their interaction | |||
with MOBIKE. | with MOBIKE. | |||
13.4. Changes from draft-nir-ike-qcd-01 | 13.5. Changes from draft-nir-ike-qcd-01 | |||
o Removed stateless method. | o Removed stateless method. | |||
o Added discussion of rekeying and resumption. | o Added discussion of rekeying and resumption. | |||
o Added discussion of non-synchronized load-balanced clusters of | o Added discussion of non-synchronized load-balanced clusters of | |||
gateways in the security considerations. | gateways in the security considerations. | |||
o Other wording fixes. | o Other wording fixes. | |||
13.5. Changes from draft-nir-ike-qcd-00 | 13.6. Changes from draft-nir-ike-qcd-00 | |||
o Merged proposal with draft-detienne-ikev2-recovery | o Merged proposal with draft-detienne-ikev2-recovery | |||
o Changed the protocol so that the rebooted peer generates the | o Changed the protocol so that the rebooted peer generates the | |||
token. This has the effect, that the need for persistent storage | token. This has the effect, that the need for persistent storage | |||
is eliminated. | is eliminated. | |||
o Added discussion of birth certificates. | o Added discussion of birth certificates. | |||
13.6. Changes from draft-nir-qcr-00 | 13.7. Changes from draft-nir-qcr-00 | |||
o Changed name to reflect that this relates to IKE. Also changed | o Changed name to reflect that this relates to IKE. Also changed | |||
from quick crash recovery to quick crash detection to avoid | from quick crash recovery to quick crash detection to avoid | |||
confusion with IFARE. | confusion with IFARE. | |||
o Added more operational considerations. | o Added more operational considerations. | |||
o Added interaction with IFARE. | o Added interaction with IFARE. | |||
o Added discussion of backup gateways. | o Added discussion of backup gateways. | |||
14. References | 14. References | |||
14.1. Normative References | 14.1. Normative References | |||
[IKEv2bis] | ||||
Kaufman, C., Hoffman, P., Nir, Y., and P. Eronen, | ||||
"Internet Key Exchange Protocol: IKEv2", | ||||
draft-ietf-ipsecme-ikev2bis-11 (work in progress), | ||||
May 2010. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC4555] Eronen, P., "IKEv2 Mobility and Multihoming Protocol | [RFC4555] Eronen, P., "IKEv2 Mobility and Multihoming Protocol | |||
(MOBIKE)", RFC 4555, June 2006. | (MOBIKE)", RFC 4555, June 2006. | |||
[RFC5996] Kaufman, C., Hoffman, P., Nir, Y., and P. Eronen, | ||||
"Internet Key Exchange Protocol: IKEv2", RFC 5996, | ||||
September 2010. | ||||
14.2. Informative References | 14.2. Informative References | |||
[RFC5723] Sheffer, Y. and H. Tschofenig, "IKEv2 Session Resumption", | [RFC5723] Sheffer, Y. and H. Tschofenig, "IKEv2 Session Resumption", | |||
RFC 5723, January 2010. | RFC 5723, January 2010. | |||
[cluster] Nir, Y., Ed., "IPsec Cluster Problem Statement", | [cluster] Nir, Y., Ed., "IPsec Cluster Problem Statement", | |||
draft-ietf-ipsecme-ipsec-ha (work in progress), July 2010. | draft-ietf-ipsecme-ipsec-ha (work in progress), July 2010. | |||
[recovery] | [recovery] | |||
Detienne, F., Sethi, P., and Y. Nir, "Safe IKE Recovery", | Detienne, F., Sethi, P., and Y. Nir, "Safe IKE Recovery", | |||
skipping to change at page 21, line 20 | skipping to change at page 22, line 4 | |||
Authors' Addresses | Authors' Addresses | |||
Yoav Nir (editor) | Yoav Nir (editor) | |||
Check Point Software Technologies Ltd. | Check Point Software Technologies Ltd. | |||
5 Hasolelim st. | 5 Hasolelim st. | |||
Tel Aviv 67897 | Tel Aviv 67897 | |||
Israel | Israel | |||
Email: ynir@checkpoint.com | Email: ynir@checkpoint.com | |||
David Wierbowski | David Wierbowski | |||
International Business Machines | International Business Machines | |||
1701 North Street | 1701 North Street | |||
Endicott, New York 13760 | Endicott, New York 13760 | |||
United States | United States | |||
Email: wierbows@us.ibm.com | Email: wierbows@us.ibm.com | |||
Frederic Detienne | ||||
Cisco Systems, Inc. | ||||
De Kleetlaan, 7 | ||||
Diegem B-1831 | ||||
Belgium | ||||
Phone: +32 2 704 5681 | ||||
Email: fd@cisco.com | ||||
Pratima Sethi | ||||
Cisco Systems, Inc. | ||||
O'Shaugnessy Road, 11 | ||||
Bangalore, Karnataka 560027 | ||||
India | ||||
Phone: +91 80 4154 1654 | ||||
Email: psethi@cisco.com | ||||
End of changes. 50 change blocks. | ||||
99 lines changed or deleted | 126 lines changed or added | |||
This html diff was produced by rfcdiff 1.40. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |