draft-ietf-ipsecme-qr-ikev2-08.txt | draft-ietf-ipsecme-qr-ikev2-09.txt | |||
---|---|---|---|---|
Internet Engineering Task Force S. Fluhrer | Internet Engineering Task Force S. Fluhrer | |||
Internet-Draft D. McGrew | Internet-Draft D. McGrew | |||
Intended status: Standards Track P. Kampanakis | Intended status: Standards Track P. Kampanakis | |||
Expires: September 29, 2019 Cisco Systems | Expires: May 30, 2020 Cisco Systems | |||
V. Smyslov | V. Smyslov | |||
ELVIS-PLUS | ELVIS-PLUS | |||
March 28, 2019 | November 27, 2019 | |||
Postquantum Preshared Keys for IKEv2 | Postquantum Preshared Keys for IKEv2 | |||
draft-ietf-ipsecme-qr-ikev2-08 | draft-ietf-ipsecme-qr-ikev2-09 | |||
Abstract | Abstract | |||
The possibility of Quantum Computers pose a serious challenge to | The possibility of Quantum Computers poses a serious challenge to | |||
cryptography algorithms deployed widely today. IKEv2 is one example | cryptographic algorithms deployed widely today. IKEv2 is one example | |||
of a cryptosystem that could be broken; someone storing VPN | of a cryptosystem that could be broken; someone storing VPN | |||
communications today could decrypt them at a later time when a | communications today could decrypt them at a later time when a | |||
Quantum Computer is available. It is anticipated that IKEv2 will be | Quantum Computer is available. It is anticipated that IKEv2 will be | |||
extended to support quantum secure key exchange algorithms; however | extended to support quantum-secure key exchange algorithms; however | |||
that is not likely to happen in the near term. To address this | that is not likely to happen in the near term. To address this | |||
problem before then, this document describes an extension of IKEv2 to | problem before then, this document describes an extension of IKEv2 to | |||
allow it to be resistant to a Quantum Computer, by using preshared | allow it to be resistant to a Quantum Computer, by using preshared | |||
keys. | keys. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
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 https://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 September 29, 2019. | This Internet-Draft will expire on May 30, 2020. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 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 | (https://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 | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Changes . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Changes . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.2. Requirements Language . . . . . . . . . . . . . . . . . . 5 | 1.2. Requirements Language . . . . . . . . . . . . . . . . . . 6 | |||
2. Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3. Exchanges . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 3. Exchanges . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
4. Upgrade procedure . . . . . . . . . . . . . . . . . . . . . . 10 | 4. Upgrade procedure . . . . . . . . . . . . . . . . . . . . . . 11 | |||
5. PPK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 5. PPK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
5.1. PPK_ID format . . . . . . . . . . . . . . . . . . . . . . 11 | 5.1. PPK_ID format . . . . . . . . . . . . . . . . . . . . . . 12 | |||
5.2. Operational Considerations . . . . . . . . . . . . . . . 12 | 5.2. Operational Considerations . . . . . . . . . . . . . . . 13 | |||
5.2.1. PPK Distribution . . . . . . . . . . . . . . . . . . 12 | 5.2.1. PPK Distribution . . . . . . . . . . . . . . . . . . 13 | |||
5.2.2. Group PPK . . . . . . . . . . . . . . . . . . . . . . 12 | 5.2.2. Group PPK . . . . . . . . . . . . . . . . . . . . . . 13 | |||
5.2.3. PPK-only Authentication . . . . . . . . . . . . . . . 13 | 5.2.3. PPK-only Authentication . . . . . . . . . . . . . . . 14 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 16 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 17 | |||
8.2. Informational References . . . . . . . . . . . . . . . . 16 | 8.2. Informational References . . . . . . . . . . . . . . . . 17 | |||
Appendix A. Discussion and Rationale . . . . . . . . . . . . . . 17 | Appendix A. Discussion and Rationale . . . . . . . . . . . . . . 18 | |||
Appendix B. Acknowledgements . . . . . . . . . . . . . . . . . . 18 | Appendix B. Acknowledgements . . . . . . . . . . . . . . . . . . 19 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
1. Introduction | 1. Introduction | |||
It is an open question whether or not it is feasible to build a | Recent achievements in developing Quantum Computers demonstrate that | |||
Quantum Computer (and if so, when one might be implemented), but if | it is probably feasible to build a cryptographically significant one. | |||
it is, many of the cryptographic algorithms and protocols currently | If such a computer is implemented, many of the cryptographic | |||
in use would be insecure. A Quantum Computer would be able to solve | algorithms and protocols currently in use would be insecure. A | |||
DH and ECDH problems in polynomial time [I-D.hoffman-c2pq], and this | Quantum Computer would be able to solve DH and ECDH problems in | |||
would imply that the security of existing IKEv2 [RFC7296] systems | polynomial time [I-D.hoffman-c2pq], and this would imply that the | |||
would be compromised. IKEv1 [RFC2409], when used with strong | security of existing IKEv2 [RFC7296] systems would be compromised. | |||
preshared keys, is not vulnerable to quantum attacks, because those | IKEv1 [RFC2409], when used with strong preshared keys, is not | |||
keys are one of the inputs to the key derivation function. If the | vulnerable to quantum attacks, because those keys are one of the | |||
preshared key has sufficient entropy and the PRF, encryption and | inputs to the key derivation function. If the preshared key has | |||
authentication transforms are postquantum secure, then the resulting | sufficient entropy and the PRF, encryption and authentication | |||
system is believed to be quantum resistant, that is, invulnerable to | transforms are quantum-secure, then the resulting system is believed | |||
an attacker with a Quantum Computer. | to be quantum resistant, that is, invulnerable to an attacker with a | |||
Quantum Computer. | ||||
This document describes a way to extend IKEv2 to have a similar | This document describes a way to extend IKEv2 to have a similar | |||
property; assuming that the two end systems share a long secret key, | property; assuming that the two end systems share a long secret key, | |||
then the resulting exchange is quantum resistant. By bringing | then the resulting exchange is quantum resistant. By bringing | |||
postquantum security to IKEv2, this note removes the need to use an | postquantum security to IKEv2, this note removes the need to use an | |||
obsolete version of the Internet Key Exchange in order to achieve | obsolete version of the Internet Key Exchange in order to achieve | |||
that security goal. | that security goal. | |||
The general idea is that we add an additional secret that is shared | The general idea is that we add an additional secret that is shared | |||
between the initiator and the responder; this secret is in addition | between the initiator and the responder; this secret is in addition | |||
skipping to change at page 3, line 34 ¶ | skipping to change at page 3, line 36 ¶ | |||
authentication if configured). This document does not replace the | authentication if configured). This document does not replace the | |||
authentication checks that the protocol does; instead, it is done as | authentication checks that the protocol does; instead, it is done as | |||
a parallel check. | a parallel check. | |||
1.1. Changes | 1.1. Changes | |||
RFC EDITOR PLEASE DELETE THIS SECTION. | RFC EDITOR PLEASE DELETE THIS SECTION. | |||
Changes in this draft in each version iterations. | Changes in this draft in each version iterations. | |||
draft-ietf-ipsecme-qr-ikev2-05 | draft-ietf-ipsecme-qr-ikev2-09 | |||
o Addresses issues raised in AD review. | ||||
draft-ietf-ipsecme-qr-ikev2-08 | ||||
o Editorial changes. | ||||
draft-ietf-ipsecme-qr-ikev2-07 | ||||
o Editorial changes. | ||||
draft-ietf-ipsecme-qr-ikev2-06 | ||||
o Editorial changes. | ||||
o Addressed comments received during WGLC. | o Addressed comments received during WGLC. | |||
draft-ietf-ipsecme-qr-ikev2-04 | draft-ietf-ipsecme-qr-ikev2-04 | |||
o Using Group PPK is clarified based on comment from Quynh Dang. | o Using Group PPK is clarified based on comment from Quynh Dang. | |||
draft-ietf-ipsecme-qr-ikev2-03 | draft-ietf-ipsecme-qr-ikev2-03 | |||
o Editorial changes and minor text nit fixes. | o Editorial changes and minor text nit fixes. | |||
skipping to change at page 5, line 5 ¶ | skipping to change at page 5, line 25 ¶ | |||
o Expanded Security Considerations section to describe some security | o Expanded Security Considerations section to describe some security | |||
concerns and how they should be addressed. | concerns and how they should be addressed. | |||
draft-fluhrer-qr-ikev2-03 | draft-fluhrer-qr-ikev2-03 | |||
o Modified how we stir the PPK into the IKEv2 secret state. | o Modified how we stir the PPK into the IKEv2 secret state. | |||
o Modified how the use of PPKs is negotiated. | o Modified how the use of PPKs is negotiated. | |||
draft-fluhrer-qr-ikev2-02 | ||||
o Simplified the protocol by stirring in the preshared key into the | o Simplified the protocol by stirring in the preshared key into the | |||
child SAs; this avoids the problem of having the responder decide | child SAs; this avoids the problem of having the responder decide | |||
which preshared key to use (as it knows the initiator identity at | which preshared key to use (as it knows the initiator identity at | |||
that point); it does mean that someone with a Quantum Computer can | that point); it does mean that someone with a Quantum Computer can | |||
recover the initial IKE negotiation. | recover the initial IKE negotiation. | |||
o Removed positive endorsements of various algorithms. Retained | o Removed positive endorsements of various algorithms. Retained | |||
warnings about algorithms known to be weak against a Quantum | warnings about algorithms known to be weak against a Quantum | |||
Computer. | Computer. | |||
skipping to change at page 5, line 42 ¶ | skipping to change at page 6, line 16 ¶ | |||
the server to make a trade-off between the efficiency for the | the server to make a trade-off between the efficiency for the | |||
search of the clients PPK, and the anonymity of the client. | search of the clients PPK, and the anonymity of the client. | |||
o We now use the negotiated PRF (rather than a fixed HMAC-SHA256) to | o We now use the negotiated PRF (rather than a fixed HMAC-SHA256) to | |||
transform the nonces during the KDF. | transform the nonces during the KDF. | |||
1.2. Requirements Language | 1.2. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in RFC | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
2119 [RFC2119]. | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | ||||
2. Assumptions | 2. Assumptions | |||
We assume that each IKE peer has a list of Postquantum Preshared Keys | We assume that each IKE peer has a list of Postquantum Preshared Keys | |||
(PPK) along with their identifiers (PPK_ID), and any potential IKE | (PPK) along with their identifiers (PPK_ID), and any potential IKE | |||
initiator has a selection of which PPK to use with any specific | initiator selects which PPK to use with any specific responder. In | |||
responder. In addition, implementations have a configurable flag | addition, implementations have a configurable flag that determines | |||
that determines whether this postquantum preshared key is mandatory. | whether this postquantum preshared key is mandatory. This PPK is | |||
This PPK is independent of the preshared key (if any) that the IKEv2 | independent of the preshared key (if any) that the IKEv2 protocol | |||
protocol uses to perform authentication. The PPK specific | uses to perform authentication (because the preshared key in IKEv2 is | |||
configuration that is assumed on each peer consists of the following | not used for any key derivation, and thus doesn't protect against | |||
tuple: | Quantum Computers). The PPK specific configuration that is assumed | |||
to be on each node consists of the following tuple: | ||||
Peer, PPK, PPK_ID, mandatory_or_not | Peer, PPK, PPK_ID, mandatory_or_not | |||
3. Exchanges | 3. Exchanges | |||
If the initiator is configured to use a postquantum preshared key | If the initiator is configured to use a postquantum preshared key | |||
with the responder (whether or not the use of the PPK is mandatory), | with the responder (whether or not the use of the PPK is mandatory), | |||
then he will include a notification USE_PPK in the IKE_SA_INIT | then it will include a notification USE_PPK in the IKE_SA_INIT | |||
request message as follows: | request message as follows: | |||
Initiator Responder | Initiator Responder | |||
------------------------------------------------------------------ | ------------------------------------------------------------------ | |||
HDR, SAi1, KEi, Ni, N(USE_PPK) ---> | HDR, SAi1, KEi, Ni, N(USE_PPK) ---> | |||
N(USE_PPK) is a status notification payload with the type 16435; it | N(USE_PPK) is a status notification payload with the type 16435; it | |||
has a protocol ID of 0, no SPI and no notification data associated | has a protocol ID of 0, no SPI and no notification data associated | |||
with it. | with it. | |||
If the initiator needs to resend this initial message with a cookie | If the initiator needs to resend this initial message with a cookie | |||
(because the responder response included a COOKIE notification), then | (because the responder response included a COOKIE notification), then | |||
the resend would include the USE_PPK notification if the original | the resend would include the USE_PPK notification if the original | |||
message did. | message did. | |||
If the responder does not support this specification or does not have | If the responder does not support this specification or does not have | |||
any PPK configured, then she ignores the received notification and | any PPK configured, then it ignores the received notification and | |||
continues with the IKEv2 protocol as normal. Otherwise the responder | continues with the IKEv2 protocol as normal. Otherwise the responder | |||
checks if she has a PPK configured, and if she does, then the | replies with the IKE_SA_INIT message including a USE_PPK notification | |||
responder replies with the IKE_SA_INIT message including a USE_PPK | in the response: | |||
notification in the response: | ||||
Initiator Responder | Initiator Responder | |||
------------------------------------------------------------------ | ------------------------------------------------------------------ | |||
<--- HDR, SAr1, KEr, Nr, [CERTREQ,] N(USE_PPK) | <--- HDR, SAr1, KEr, Nr, [CERTREQ,] N(USE_PPK) | |||
When the initiator receives this reply, he checks whether the | When the initiator receives this reply, it checks whether the | |||
responder included the USE_PPK notification. If the responder did | responder included the USE_PPK notification. If the responder did | |||
not and the flag mandatory_or_not indicates that using PPKs is | not and the flag mandatory_or_not indicates that using PPKs is | |||
mandatory for communication with this responder, then the initiator | mandatory for communication with this responder, then the initiator | |||
MUST abort the exchange. This situation may happen in case of | MUST abort the exchange. This situation may happen in case of | |||
misconfiguration, when the initiator believes he has a mandatory to | misconfiguration, when the initiator believes it has a mandatory to | |||
use PPK for the responder, while the responder either doesn't support | use PPK for the responder, while the responder either doesn't support | |||
PPKs at all or doesn't have any PPK configured for the initiator. | PPKs at all or doesn't have any PPK configured for the initiator. | |||
See Section 6 for discussion of the possible impacts of this | See Section 6 for discussion of the possible impacts of this | |||
situation. | situation. | |||
If the responder did not include the USE_PPK notification and using a | If the responder did not include the USE_PPK notification and using a | |||
PPK for this particular responder is optional, then the initiator | PPK for this particular responder is optional, then the initiator | |||
continues with the IKEv2 protocol as normal, without using PPKs. | continues with the IKEv2 protocol as normal, without using PPKs. | |||
If the responder did include the USE_PPK notification, then the | If the responder did include the USE_PPK notification, then the | |||
initiator selects a PPK, along with its identifier PPK_ID. Then, she | initiator selects a PPK, along with its identifier PPK_ID. Then, it | |||
computes this modification of the standard IKEv2 key derivation: | computes this modification of the standard IKEv2 key derivation: | |||
SKEYSEED = prf(Ni | Nr, g^ir) | SKEYSEED = prf(Ni | Nr, g^ir) | |||
{SK_d' | SK_ai | SK_ar | SK_ei | SK_er | SK_pi' | SK_pr' ) | {SK_d' | SK_ai | SK_ar | SK_ei | SK_er | SK_pi' | SK_pr' ) | |||
= prf+ (SKEYSEED, Ni | Nr | SPIi | SPIr } | = prf+ (SKEYSEED, Ni | Nr | SPIi | SPIr } | |||
SK_d = prf+ (PPK, SK_d') | SK_d = prf+ (PPK, SK_d') | |||
SK_pi = prf+ (PPK, SK_pi') | SK_pi = prf+ (PPK, SK_pi') | |||
SK_pr = prf+ (PPK, SK_pr') | SK_pr = prf+ (PPK, SK_pr') | |||
skipping to change at page 8, line 11 ¶ | skipping to change at page 8, line 31 ¶ | |||
HDR, SK {IDi, [CERT,] [CERTREQ,] | HDR, SK {IDi, [CERT,] [CERTREQ,] | |||
[IDr,] AUTH, SAi2, | [IDr,] AUTH, SAi2, | |||
TSi, TSr, N(PPK_IDENTITY, PPK_ID), [N(NO_PPK_AUTH)]} ---> | TSi, TSr, N(PPK_IDENTITY, PPK_ID), [N(NO_PPK_AUTH)]} ---> | |||
PPK_IDENTITY is a status notification with the type 16436; it has a | PPK_IDENTITY is a status notification with the type 16436; it has a | |||
protocol ID of 0, no SPI and a notification data that consists of the | protocol ID of 0, no SPI and a notification data that consists of the | |||
identifier PPK_ID. | identifier PPK_ID. | |||
A situation may happen when the responder has some PPKs, but doesn't | A situation may happen when the responder has some PPKs, but doesn't | |||
have a PPK with the PPK_ID received from the initiator. In this case | have a PPK with the PPK_ID received from the initiator. In this case | |||
the responder cannot continue with PPK (in particular, she cannot | the responder cannot continue with PPK (in particular, it cannot | |||
authenticate the initiator), but she could be able to continue with | authenticate the initiator), but the responder could be able to | |||
normal IKEv2 protocol if the initiator provided its authentication | continue with normal IKEv2 protocol if the initiator provided its | |||
data computed as in normal IKEv2, without using PPKs. For this | authentication data computed as in normal IKEv2, without using PPKs. | |||
purpose, if using PPKs for communication with this responder is | For this purpose, if using PPKs for communication with this responder | |||
optional for the initiator, then the initiator MAY include a | is optional for the initiator, then the initiator MAY include a | |||
notification NO_PPK_AUTH in the above message. | notification NO_PPK_AUTH in the above message. | |||
NO_PPK_AUTH is a status notification with the type 16437; it has a | NO_PPK_AUTH is a status notification with the type 16437; it has a | |||
protocol ID of 0 and no SPI. The Notification Data field contains | protocol ID of 0 and no SPI. The Notification Data field contains | |||
the initiator's authentication data computed using SK_pi', which has | the initiator's authentication data computed using SK_pi', which has | |||
been computed without using PPKs. This is the same data that would | been computed without using PPKs. This is the same data that would | |||
normally be placed in the Authentication Data field of an AUTH | normally be placed in the Authentication Data field of an AUTH | |||
payload. Since the Auth Method field is not present in the | payload. Since the Auth Method field is not present in the | |||
notification, the authentication method used for computing the | notification, the authentication method used for computing the | |||
authentication data MUST be the same as method indicated in the AUTH | authentication data MUST be the same as method indicated in the AUTH | |||
payload. Note that if the initiator decides to include the | payload. Note that if the initiator decides to include the | |||
NO_PPK_AUTH notification, the initiator needs to perform | NO_PPK_AUTH notification, the initiator needs to perform | |||
authentication data computation twice, which may consume computation | authentication data computation twice, which may consume computation | |||
power (e.g. if digital signatures are involved). | power (e.g. if digital signatures are involved). | |||
When the responder receives this encrypted exchange, she first | When the responder receives this encrypted exchange, it first | |||
computes the values: | computes the values: | |||
SKEYSEED = prf(Ni | Nr, g^ir) | SKEYSEED = prf(Ni | Nr, g^ir) | |||
{SK_d' | SK_ai | SK_ar | SK_ei | SK_er | SK_pi' | SK_pr' } | {SK_d' | SK_ai | SK_ar | SK_ei | SK_er | SK_pi' | SK_pr' } | |||
= prf+ (SKEYSEED, Ni | Nr | SPIi | SPIr ) | = prf+ (SKEYSEED, Ni | Nr | SPIi | SPIr ) | |||
She then uses the SK_ei/SK_ai values to decrypt/check the message and | The responder then uses the SK_ei/SK_ai values to decrypt/check the | |||
then scans through the payloads for the PPK_ID attached to the | message and then scans through the payloads for the PPK_ID attached | |||
PPK_IDENTITY notification. If no PPK_IDENTITY notification is found | to the PPK_IDENTITY notification. If no PPK_IDENTITY notification is | |||
and the peers successfully exchanged USE_PPK notifications in the | found and the peers successfully exchanged USE_PPK notifications in | |||
IKE_SA_INIT exchange, then the responder MUST send back | the IKE_SA_INIT exchange, then the responder MUST send back | |||
AUTHENTICATION_FAILED notification and then fail the negotiation. | AUTHENTICATION_FAILED notification and then fail the negotiation. | |||
If the PPK_IDENTITY notification contains PPK_ID that is not known to | If the PPK_IDENTITY notification contains a PPK_ID that is not known | |||
the responder or is not configured for use for the identity from IDi | to the responder or is not configured for use for the identity from | |||
payload, then the responder checks whether using PPKs for this | IDi payload, then the responder checks whether using PPKs for this | |||
initiator is mandatory and whether the initiator included NO_PPK_AUTH | initiator is mandatory and whether the initiator included NO_PPK_AUTH | |||
notification in the message. If using PPKs is mandatory or no | notification in the message. If using PPKs is mandatory or no | |||
NO_PPK_AUTH notification found, then then the responder MUST send | NO_PPK_AUTH notification is found, then then the responder MUST send | |||
back AUTHENTICATION_FAILED notification and then fail the | back AUTHENTICATION_FAILED notification and then fail the | |||
negotiation. Otherwise (when PPK is optional and the initiator | negotiation. Otherwise (when PPK is optional and the initiator | |||
included NO_PPK_AUTH notification) the responder MAY continue regular | included NO_PPK_AUTH notification) the responder MAY continue regular | |||
IKEv2 protocol, except that she uses the data from the NO_PPK_AUTH | IKEv2 protocol, except that it uses the data from the NO_PPK_AUTH | |||
notification as the authentication data (which usually resides in the | notification as the authentication data (which usually resides in the | |||
AUTH payload), for the purpose of the initiator authentication. | AUTH payload), for the purpose of the initiator authentication. | |||
Note, that Authentication Method is still indicated in the AUTH | Note, that Authentication Method is still indicated in the AUTH | |||
payload. | payload. | |||
This table summarizes the above logic for the responder: | This table summarizes the above logic for the responder: | |||
Received Received Configured PPK is | Received Received Configured PPK is | |||
USE_PPK NO_PPK_AUTH with PPK Mandatory Action | USE_PPK NO_PPK_AUTH with PPK Mandatory Action | |||
--------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
skipping to change at page 9, line 43 ¶ | skipping to change at page 10, line 16 ¶ | |||
the AUTH payload that the initiator included) as usual and sends back | the AUTH payload that the initiator included) as usual and sends back | |||
a response, which includes the PPK_IDENTITY notification with no data | a response, which includes the PPK_IDENTITY notification with no data | |||
to indicate that the PPK is used in the exchange: | to indicate that the PPK is used in the exchange: | |||
Initiator Responder | Initiator Responder | |||
------------------------------------------------------------------ | ------------------------------------------------------------------ | |||
<-- HDR, SK {IDr, [CERT,] | <-- HDR, SK {IDr, [CERT,] | |||
AUTH, SAr2, | AUTH, SAr2, | |||
TSi, TSr, N(PPK_IDENTITY)} | TSi, TSr, N(PPK_IDENTITY)} | |||
When the initiator receives the response, then he checks for the | When the initiator receives the response, then it checks for the | |||
presence of the PPK_IDENTITY notification. If he receives one, he | presence of the PPK_IDENTITY notification. If it receives one, it | |||
marks the SA as using the configured PPK to generate SK_d, SK_pi, | marks the SA as using the configured PPK to generate SK_d, SK_pi, | |||
SK_pr (as shown above); the content of the received PPK_IDENTITY (if | SK_pr (as shown above); the content of the received PPK_IDENTITY (if | |||
any) MUST be ignored. If the initiator does not receive the | any) MUST be ignored. If the initiator does not receive the | |||
PPK_IDENTITY, he MUST either fail the IKE SA negotiation sending the | PPK_IDENTITY, it MUST either fail the IKE SA negotiation sending the | |||
AUTHENTICATION_FAILED notification in the Informational exchange (if | AUTHENTICATION_FAILED notification in the Informational exchange (if | |||
the PPK was configured as mandatory), or continue without using the | the PPK was configured as mandatory), or continue without using the | |||
PPK (if the PPK was not configured as mandatory and the initiator | PPK (if the PPK was not configured as mandatory and the initiator | |||
included the NO_PPK_AUTH notification in the request). | included the NO_PPK_AUTH notification in the request). | |||
If EAP is used in the IKE_AUTH exchange, then the initiator doesn't | If EAP is used in the IKE_AUTH exchange, then the initiator doesn't | |||
include AUTH payload in the first request message, however the | include AUTH payload in the first request message, however the | |||
responder sends back AUTH payload in the first reply. The peers then | responder sends back AUTH payload in the first reply. The peers then | |||
exchange AUTH payloads after EAP is successfully completed. As a | exchange AUTH payloads after EAP is successfully completed. As a | |||
result, the responder sends AUTH payload twice - in the first | result, the responder sends AUTH payload twice - in the first | |||
skipping to change at page 10, line 23 ¶ | skipping to change at page 10, line 43 ¶ | |||
AUTH payload only in the last IKE_AUTH request. See more details | AUTH payload only in the last IKE_AUTH request. See more details | |||
about EAP authentication in IKEv2 in Section 2.16 of [RFC7296]. | about EAP authentication in IKEv2 in Section 2.16 of [RFC7296]. | |||
The general rule for using PPK in the IKE_AUTH exchange, which covers | The general rule for using PPK in the IKE_AUTH exchange, which covers | |||
EAP authentication case too, is that the initiator includes | EAP authentication case too, is that the initiator includes | |||
PPK_IDENTITY (and optionally NO_PPK_AUTH) notification in the request | PPK_IDENTITY (and optionally NO_PPK_AUTH) notification in the request | |||
message containing AUTH payload. Therefore, in case of EAP the | message containing AUTH payload. Therefore, in case of EAP the | |||
responder always computes the AUTH payload in the first IKE_AUTH | responder always computes the AUTH payload in the first IKE_AUTH | |||
reply message without using PPK (by means of SK_pr'), since PPK_ID is | reply message without using PPK (by means of SK_pr'), since PPK_ID is | |||
not yet known to the responder. Once the IKE_AUTH request message | not yet known to the responder. Once the IKE_AUTH request message | |||
containing PPK_IDENTITY notification is received, the responder | containing the PPK_IDENTITY notification is received, the responder | |||
follows rules described above for non-EAP authentication case. | follows the rules described above for the non-EAP authentication | |||
case. | ||||
Initiator Responder | Initiator Responder | |||
---------------------------------------------------------------- | ---------------------------------------------------------------- | |||
HDR, SK {IDi, [CERTREQ,] | HDR, SK {IDi, [CERTREQ,] | |||
[IDr,] SAi2, | [IDr,] SAi2, | |||
TSi, TSr} --> | TSi, TSr} --> | |||
<-- HDR, SK {IDr, [CERT,] AUTH, | <-- HDR, SK {IDr, [CERT,] AUTH, | |||
EAP} | EAP} | |||
HDR, SK {EAP} --> | HDR, SK {EAP} --> | |||
<-- HDR, SK {EAP (success)} | <-- HDR, SK {EAP (success)} | |||
HDR, SK {AUTH, | HDR, SK {AUTH, | |||
N(PPK_IDENTITY, PPK_ID) | N(PPK_IDENTITY, PPK_ID) | |||
[, N(NO_PPK_AUTH)]} --> | [, N(NO_PPK_AUTH)]} --> | |||
<-- HDR, SK {AUTH, SAr2, TSi, TSr | <-- HDR, SK {AUTH, SAr2, TSi, TSr | |||
[, N(PPK_IDENTITY)]} | [, N(PPK_IDENTITY)]} | |||
Note, that the IKE_SA_INIT exchange in case of PPK is as described | Note that the diagram above shows both the cases when the responder | |||
above (including exchange of the USE_PPK notifications), regardless | uses PPK and when it chooses not to use it (provided the initiator | |||
whether EAP is employed in the IKE_AUTH or not. | has included NO_PPK_AUTH notification), and thus the responder's | |||
PPK_IDENTITY notification is marked as optional. Also, note that the | ||||
IKE_SA_INIT exchange in case of PPK is as described above (including | ||||
exchange of the USE_PPK notifications), regardless whether EAP is | ||||
employed in the IKE_AUTH or not. | ||||
4. Upgrade procedure | 4. Upgrade procedure | |||
This algorithm was designed so that someone can introduce PPKs into | This algorithm was designed so that someone can introduce PPKs into | |||
an existing IKE network without causing network disruption. | an existing IKE network without causing network disruption. | |||
In the initial phase of the network upgrade, the network | In the initial phase of the network upgrade, the network | |||
administrator would visit each IKE node, and configure: | administrator would visit each IKE node, and configure: | |||
o The set of PPKs (and corresponding PPK_IDs) that this node would | o The set of PPKs (and corresponding PPK_IDs) that this node would | |||
need to know. | need to know. | |||
o For each peer that this node would initiate to, which PPK will be | o For each peer that this node would initiate to, which PPK will be | |||
used. | used. | |||
o That the use of PPK is currently not mandatory. | o That the use of PPK is currently not mandatory. | |||
With this configuration, the node will continue to operate with nodes | With this configuration, the node will continue to operate with nodes | |||
that have not yet been upgraded. This is due to the USE_PPK notify | that have not yet been upgraded. This is due to the USE_PPK | |||
and the NO_PPK_AUTH notify; if the initiator has not been upgraded, | notification and the NO_PPK_AUTH notification; if the initiator has | |||
he will not send the USE_PPK notify (and so the responder will know | not been upgraded, it will not send the USE_PPK notification (and so | |||
that we will not use a PPK). If the responder has not been upgraded, | the responder will know that the peers will not use a PPK). If the | |||
she will not send the USE_PPK notify (and so the initiator will know | responder has not been upgraded, it will not send the USE_PPK | |||
to not use a PPK). If both peers have been upgraded, but the | notification (and so the initiator will know to not use a PPK). If | |||
responder isn't yet configured with the PPK for the initiator, then | both peers have been upgraded, but the responder isn't yet configured | |||
the responder could do standard IKEv2 protocol if the initiator sent | with the PPK for the initiator, then the responder could do standard | |||
NO_PPK_AUTH notification. If both the responder and initiator have | IKEv2 protocol if the initiator sent NO_PPK_AUTH notification. If | |||
been upgraded and properly configured, they will both realize it, and | both the responder and initiator have been upgraded and properly | |||
in that case, the link will be quantum secure. | configured, they will both realize it, and the Child SAs will be | |||
quantum-secure. | ||||
As an optional second step, after all nodes have been upgraded, then | As an optional second step, after all nodes have been upgraded, then | |||
the administrator should then go back through the nodes, and mark the | the administrator should then go back through the nodes, and mark the | |||
use of PPK as mandatory. This will not affect the strength against a | use of PPK as mandatory. This will not affect the strength against a | |||
passive attacker; it would mean that an attacker with a Quantum | passive attacker; it would mean that an attacker with a Quantum | |||
Computer (which is sufficiently fast to be able to break the (EC)DH | Computer (which is sufficiently fast to be able to break the (EC)DH | |||
in real time) would not be able to perform a downgrade attack. | in real time) would not be able to perform a downgrade attack. | |||
5. PPK | 5. PPK | |||
skipping to change at page 12, line 9 ¶ | skipping to change at page 12, line 40 ¶ | |||
o PPK_ID_OPAQUE (1) - for this type the format of the PPK_ID (and | o PPK_ID_OPAQUE (1) - for this type the format of the PPK_ID (and | |||
the PPK itself) is not specified by this document; it is assumed | the PPK itself) is not specified by this document; it is assumed | |||
to be mutually intelligible by both by initiator and the | to be mutually intelligible by both by initiator and the | |||
responder. This PPK_ID type is intended for those implementations | responder. This PPK_ID type is intended for those implementations | |||
that choose not to disclose the type of PPK to active attackers. | that choose not to disclose the type of PPK to active attackers. | |||
o PPK_ID_FIXED (2) - in this case the format of the PPK_ID and the | o PPK_ID_FIXED (2) - in this case the format of the PPK_ID and the | |||
PPK are fixed octet strings; the remaining bytes of the PPK_ID are | PPK are fixed octet strings; the remaining bytes of the PPK_ID are | |||
a configured value. We assume that there is a fixed mapping | a configured value. We assume that there is a fixed mapping | |||
between PPK_ID and PPK, which is configured locally to both the | between PPK_ID and PPK, which is configured locally to both the | |||
initiator and the responder. The responder can use to do a look | initiator and the responder. The responder can use the PPK_ID to | |||
up the passed PPK_ID value to determine the corresponding PPK | look up the corresponding PPK value. Not all implementations are | |||
value. Not all implementations are able to configure arbitrary | able to configure arbitrary octet strings; to improve the | |||
octet strings; to improve the potential interoperability, it is | potential interoperability, it is recommended that, in the | |||
recommended that, in the PPK_ID_FIXED case, both the PPK and the | PPK_ID_FIXED case, both the PPK and the PPK_ID strings be limited | |||
PPK_ID strings be limited to the base64 character set, namely the | to the base64 character set, namely the 64 characters 0-9, A-Z, | |||
64 characters 0-9, A-Z, a-z, + and /. | a-z, + and /. | |||
The PPK_ID type value 0 is reserved; values 3-127 are reserved for | The PPK_ID type value 0 is reserved; values 3-127 are reserved for | |||
IANA; values 128-255 are for private use among mutually consenting | IANA; values 128-255 are for private use among mutually consenting | |||
parties. | parties. | |||
5.2. Operational Considerations | 5.2. Operational Considerations | |||
The need to maintain several independent sets of security credentials | The need to maintain several independent sets of security credentials | |||
can significantly complicate a security administrator's job, and can | can significantly complicate a security administrator's job, and can | |||
potentially slow down widespread adoption of this specification. It | potentially slow down widespread adoption of this specification. It | |||
is anticipated, that administrators will try to simplify their job by | is anticipated, that administrators will try to simplify their job by | |||
decreasing the number of credentials they need to maintain. This | decreasing the number of credentials they need to maintain. This | |||
section describes some of the considerations for PPK management. | section describes some of the considerations for PPK management. | |||
5.2.1. PPK Distribution | 5.2.1. PPK Distribution | |||
PPK_IDs of the type PPK_ID_FIXED (and the corresponding PPKs) are | PPK_IDs of the type PPK_ID_FIXED (and the corresponding PPKs) are | |||
assumed to be configured within the IKE device in an out-of-band | assumed to be configured within the IKE device in an out-of-band | |||
fashion. While the method of distribution is a local matter and out | fashion. While the method of distribution is a local matter and out | |||
of scope of this document or IKEv2, [RFC6030] describes a format for | of scope of this document or IKEv2, [RFC6030] describes a format for | |||
symmetric key exchange. That format could be reused with the Key Id | for the transport and provisioning of symmetric keys. That format | |||
field being the PPK_ID (without the PPK_ID Type octet for a | could be reused using the PIN profile (defined in Section 10.2 of | |||
PPK_ID_FIXED), the PPK being the secret, and algorithm | [RFC6030]) with the "Id" attribute of the <Key> element being the | |||
("Algorithm=urn:ietf:params:xml:ns:keyprov:pskc:pin") as the PIN. | PPK_ID (without the PPK_ID Type octet for a PPK_ID_FIXED) and the | |||
<Secret> element containing the PPK. | ||||
5.2.2. Group PPK | 5.2.2. Group PPK | |||
This document doesn't explicitly require that PPK is unique for each | This document doesn't explicitly require that PPK is unique for each | |||
pair of peers. If it is the case, then this solution provides full | pair of peers. If it is the case, then this solution provides full | |||
peer authentication, but it also means that each host must have as | peer authentication, but it also means that each host must have as | |||
many independent PPKs as the peers it is going to communicate with. | many independent PPKs as the peers it is going to communicate with. | |||
As the number of peers grows the PPKs will not scale. | As the number of peers grows the PPKs will not scale. | |||
It is possible to use a single PPK for a group of users. Since each | It is possible to use a single PPK for a group of users. Since each | |||
peer uses classical public key cryptography in addition to PPK for | peer uses classical public key cryptography in addition to PPK for | |||
key exchange and authentication, members of the group can neither | key exchange and authentication, members of the group can neither | |||
impersonate each other nor read other's traffic, unless they use | impersonate each other nor read other's traffic, unless they use | |||
Quantum Computers to break public key operations. However group | Quantum Computers to break public key operations. However group | |||
members can record other members' traffic and decrypt it later, when | members can record any traffic they have access to that comes from | |||
they get access to a Quantum Computer. | other group members and decrypt it later, when they get access to a | |||
Quantum Computer. | ||||
In addition, the fact that the PPK is known to a (potentially large) | In addition, the fact that the PPK is known to a (potentially large) | |||
group of users makes it more susceptible to theft. When an attacker | group of users makes it more susceptible to theft. When an attacker | |||
equipped with a Quantum Computer got access to a group PPK, all | equipped with a Quantum Computer gets access to a group PPK, all | |||
communications inside the group are revealed. | communications inside the group are revealed. | |||
For these reasons using group PPK is NOT RECOMMENDED. | For these reasons using group PPK is NOT RECOMMENDED. | |||
5.2.3. PPK-only Authentication | 5.2.3. PPK-only Authentication | |||
If Quantum Computers become a reality, classical public key | If Quantum Computers become a reality, classical public key | |||
cryptography will provide little security, so administrators may find | cryptography will provide little security, so administrators may find | |||
it attractive not to use it at all for authentication. This will | it attractive not to use it at all for authentication. This will | |||
reduce the number of credentials they need to maintain to PPKs only. | reduce the number of credentials they need to maintain to PPKs only. | |||
Combining group PPK and PPK-only authentication is NOT RECOMMENDED, | Combining group PPK and PPK-only authentication is NOT RECOMMENDED, | |||
since in this case any member of the group can impersonate any other | since in this case any member of the group can impersonate any other | |||
member even without help of Quantum Computers. | member even without help of Quantum Computers. | |||
PPK-only authentication can be achieved in IKEv2 if NULL | PPK-only authentication can be achieved in IKEv2 if the NULL | |||
Authentication method [RFC7619] is employed. Without PPK the NULL | Authentication method [RFC7619] is employed. Without PPK the NULL | |||
Authentication method provides no authentication of the peers, | Authentication method provides no authentication of the peers, | |||
however since a PPK is stirred into the SK_pi and the SK_pr, the | however since a PPK is stirred into the SK_pi and the SK_pr, the | |||
peers become authenticated if a PPK is in use. Using PPKs MUST be | peers become authenticated if a PPK is in use. Using PPKs MUST be | |||
mandatory for the peers if they advertise support for PPK in | mandatory for the peers if they advertise support for PPK in | |||
IKE_SA_INIT and use NULL Authentication. Addtionally, since the | IKE_SA_INIT and use NULL Authentication. Addtionally, since the | |||
peers are authenticated via PPK, the ID Type in the IDi/IDr payloads | peers are authenticated via PPK, the ID Type in the IDi/IDr payloads | |||
SHOULD NOT be ID_NULL, despite using the NULL Authentication method. | SHOULD NOT be ID_NULL, despite using the NULL Authentication method. | |||
6. Security Considerations | 6. Security Considerations | |||
Quantum computers are able to perform Grover's algorithm; that | Quantum computers are able to perform Grover's algorithm; that | |||
effectively halves the size of a symmetric key. Because of this, the | effectively halves the size of a symmetric key. Because of this, the | |||
user SHOULD ensure that the postquantum preshared key used has at | user SHOULD ensure that the postquantum preshared key used has at | |||
least 256 bits of entropy, in order to provide 128-bit security | least 256 bits of entropy, in order to provide 128 bits of security. | |||
level. | ||||
With this protocol, the computed SK_d is a function of the PPK. | With this protocol, the computed SK_d is a function of the PPK. | |||
Assuming that the PPK has sufficient entropy (for example, at least | Assuming that the PPK has sufficient entropy (for example, at least | |||
2^256 possible values), then even if an attacker was able to recover | 2^256 possible values), then even if an attacker was able to recover | |||
the rest of the inputs to the PRF function, it would be infeasible to | the rest of the inputs to the PRF function, it would be infeasible to | |||
use Grover's algorithm with a Quantum Computer to recover the SK_d | use Grover's algorithm with a Quantum Computer to recover the SK_d | |||
value. Similarly, all keys that are a function of SK_d, which | value. Similarly, all keys that are a function of SK_d, which | |||
include all Child SAs keys and all keys for subsequent IKE SAs | include all Child SAs keys and all keys for subsequent IKE SAs | |||
(created when the initial IKE SA is rekeyed), are also quantum | (created when the initial IKE SA is rekeyed), are also quantum | |||
resistant (assuming that the PPK was of high enough entropy, and that | resistant (assuming that the PPK was of high enough entropy, and that | |||
skipping to change at page 14, line 43 ¶ | skipping to change at page 15, line 30 ¶ | |||
o Any IKEv2 Encryption algorithm, PRF or Integrity algorithm with | o Any IKEv2 Encryption algorithm, PRF or Integrity algorithm with | |||
key size less than 256 bits. | key size less than 256 bits. | |||
o Any ESP Transform with key size less than 256 bits. | o Any ESP Transform with key size less than 256 bits. | |||
o PRF_AES128_XCBC and PRF_AES128_CBC; even though they are defined | o PRF_AES128_XCBC and PRF_AES128_CBC; even though they are defined | |||
to be able to use an arbitrary key size, they convert it into a | to be able to use an arbitrary key size, they convert it into a | |||
128-bit key internally. | 128-bit key internally. | |||
Section 3 requires the initiator to abort the initial exchange if | Section 3 requires the initiator to abort the initial exchange if | |||
using PPKs is mandatory for it, but the responder might not include | using PPKs is mandatory for it, but the responder does not include | |||
the USE_PPK notification in the response. In this situation when the | the USE_PPK notification in the response. In this situation, when | |||
initiator aborts negotiation he leaves half-open IKE SA on the | the initiator aborts negotiation it leaves a half-open IKE SA on the | |||
responder (because IKE_SA_INIT completes successfully from the | responder (because IKE_SA_INIT completes successfully from the | |||
responder's point of view). This half-open SA will eventually expire | responder's point of view). This half-open SA will eventually expire | |||
and be deleted, but if the initiator continues its attempts to create | and be deleted, but if the initiator continues its attempts to create | |||
IKE SA with a high enough rate, then the responder may consider it as | IKE SA with a high enough rate, then the responder may consider it as | |||
a Denial-of-Service attack and take protection measures (see | a Denial-of-Service attack and take protection measures (see | |||
[RFC8019] for more detail). It is RECOMMENDED that implementations | [RFC8019] for more detail). In this situation, it is RECOMMENDED | |||
in this situation cache the negative result of negotiation for some | that the initiator caches the negative result of the negotiation for | |||
time and don't make attempts to create it again for some time, | some time and doesn't make attempts to create it again for some time, | |||
because this is a result of misconfiguration and probably some re- | because this is a result of misconfiguration and probably some re- | |||
configuration of the peers is needed. | configuration of the peers is needed. | |||
If using PPKs is optional for both peers and they authenticate | If using PPKs is optional for both peers and they authenticate | |||
themselves using digital signatures, then an attacker in between, | themselves using digital signatures, then an attacker in between, | |||
equipped with a Quantum Computer capable of breaking public key | equipped with a Quantum Computer capable of breaking public key | |||
operations in real time, is able to mount downgrade attack by | operations in real time, is able to mount downgrade attack by | |||
removing USE_PPK notification from the IKE_SA_INIT and forging | removing USE_PPK notification from the IKE_SA_INIT and forging | |||
digital signatures in the subsequent exchange. If using PPKs is | digital signatures in the subsequent exchange. If using PPKs is | |||
mandatory for at least one of the peers or PSK is used for | mandatory for at least one of the peers or PSK is used for | |||
authentication, then the attack will be detected and the SA won't be | authentication, then the attack will be detected and the SA won't be | |||
created. | created. | |||
If using PPKs is mandatory for the initiator, then an attacker | If using PPKs is mandatory for the initiator, then an attacker able | |||
capable to eavesdrop and to inject packets into the network can | to eavesdrop and to inject packets into the network can prevent | |||
prevent creating IKE SA by mounting the following attack. The | creating an IKE SA by mounting the following attack. The attacker | |||
attacker intercepts the initial request containing the USE_PPK | intercepts the initial request containing the USE_PPK notification | |||
notification and injects the forget response containing no USE_PPK. | and injects a forged response containing no USE_PPK. If the attacker | |||
If the attacker manages to inject this packet before the responder | manages to inject this packet before the responder sends a genuine | |||
sends a genuine response, then the initiator would abort the | response, then the initiator would abort the exchange. To thwart | |||
exchange. To thwart this kind of attack it is RECOMMENDED, that if | this kind of attack it is RECOMMENDED, that if using PPKs is | |||
using PPKs is mandatory for the initiator and the received response | mandatory for the initiator and the received response doesn't contain | |||
doesn't contain the USE_PPK notification, then the initiator doesn't | the USE_PPK notification, then the initiator doesn't abort the | |||
abort the exchange immediately, but instead waits some time for more | exchange immediately, but instead waits some time for more responses | |||
responses (possibly retransmitting the request). If all the received | (possibly retransmitting the request). If all the received responses | |||
responses contain no USE_PPK, then the exchange is aborted. | contain no USE_PPK, then the exchange is aborted. | |||
If using PPK is optional for both peers, then in case of | ||||
misconfiguration (e.g. mismatched PPK_ID) the IKE SA will be created | ||||
without protection against Quantum Computers. It is advised that if | ||||
PPK was configured, but was not used for a particular IKE SA, then | ||||
implementations SHOULD audit this event. | ||||
7. IANA Considerations | 7. IANA Considerations | |||
This document defines three new Notify Message Types in the "Notify | This document defines three new Notify Message Types in the "Notify | |||
Message Types - Status Types" registry: | Message Types - Status Types" registry: | |||
16435 USE_PPK | 16435 USE_PPK | |||
16436 PPK_IDENTITY | 16436 PPK_IDENTITY | |||
16437 NO_PPK_AUTH | 16437 NO_PPK_AUTH | |||
This document also creates a new IANA registry for the PPK_ID types. | This document also creates a new IANA registry for the PPK_ID types. | |||
The initial values of this registry are: | The initial values of this registry are: | |||
PPK_ID Type Value | PPK_ID Type Value | |||
----------- ----- | ----------- ----- | |||
Reserved 0 | Reserved 0 | |||
PPK_ID_OPAQUE 1 | PPK_ID_OPAQUE 1 | |||
PPK_ID_FIXED 2 | PPK_ID_FIXED 2 | |||
Unassigned 3-127 | Unassigned 3-127 | |||
Reserved for private use 128-255 | Reserved for private use 128-255 | |||
Changes and additions to this registry are by Expert Review | Changes and additions to this registry are by Expert Review | |||
[RFC8126]. | [RFC8126]. | |||
8. References | 8. References | |||
8.1. Normative References | 8.1. Normative References | |||
[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, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, <https://www.rfc- | DOI 10.17487/RFC2119, March 1997, | |||
editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | |||
Kivinen, "Internet Key Exchange Protocol Version 2 | Kivinen, "Internet Key Exchange Protocol Version 2 | |||
(IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | |||
2014, <https://www.rfc-editor.org/info/rfc7296>. | 2014, <https://www.rfc-editor.org/info/rfc7296>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
8.2. Informational References | 8.2. Informational References | |||
[I-D.hoffman-c2pq] | [I-D.hoffman-c2pq] | |||
Hoffman, P., "The Transition from Classical to Post- | Hoffman, P., "The Transition from Classical to Post- | |||
Quantum Cryptography", draft-hoffman-c2pq-04 (work in | Quantum Cryptography", draft-hoffman-c2pq-05 (work in | |||
progress), August 2018. | progress), May 2019. | |||
[IKEV2-IANA-PRFS] | [IKEV2-IANA-PRFS] | |||
"Internet Key Exchange Version 2 (IKEv2) Parameters, | "Internet Key Exchange Version 2 (IKEv2) Parameters, | |||
Transform Type 2 - Pseudorandom Function Transform IDs", | Transform Type 2 - Pseudorandom Function Transform IDs", | |||
<https://www.iana.org/assignments/ikev2-parameters/ | <https://www.iana.org/assignments/ikev2-parameters/ | |||
ikev2-parameters.xhtml#ikev2-parameters-6>. | ikev2-parameters.xhtml#ikev2-parameters-6>. | |||
[RFC2409] Harkins, D. and D. Carrel, "The Internet Key Exchange | [RFC2409] Harkins, D. and D. Carrel, "The Internet Key Exchange | |||
(IKE)", RFC 2409, DOI 10.17487/RFC2409, November 1998, | (IKE)", RFC 2409, DOI 10.17487/RFC2409, November 1998, | |||
<https://www.rfc-editor.org/info/rfc2409>. | <https://www.rfc-editor.org/info/rfc2409>. | |||
[RFC6023] Nir, Y., Tschofenig, H., Deng, H., and R. Singh, "A | [RFC6023] Nir, Y., Tschofenig, H., Deng, H., and R. Singh, "A | |||
Childless Initiation of the Internet Key Exchange Version | Childless Initiation of the Internet Key Exchange Version | |||
2 (IKEv2) Security Association (SA)", RFC 6023, | 2 (IKEv2) Security Association (SA)", RFC 6023, | |||
DOI 10.17487/RFC6023, October 2010, <https://www.rfc- | DOI 10.17487/RFC6023, October 2010, | |||
editor.org/info/rfc6023>. | <https://www.rfc-editor.org/info/rfc6023>. | |||
[RFC6030] Hoyer, P., Pei, M., and S. Machani, "Portable Symmetric | [RFC6030] Hoyer, P., Pei, M., and S. Machani, "Portable Symmetric | |||
Key Container (PSKC)", RFC 6030, DOI 10.17487/RFC6030, | Key Container (PSKC)", RFC 6030, DOI 10.17487/RFC6030, | |||
October 2010, <https://www.rfc-editor.org/info/rfc6030>. | October 2010, <https://www.rfc-editor.org/info/rfc6030>. | |||
[RFC7619] Smyslov, V. and P. Wouters, "The NULL Authentication | [RFC7619] Smyslov, V. and P. Wouters, "The NULL Authentication | |||
Method in the Internet Key Exchange Protocol Version 2 | Method in the Internet Key Exchange Protocol Version 2 | |||
(IKEv2)", RFC 7619, DOI 10.17487/RFC7619, August 2015, | (IKEv2)", RFC 7619, DOI 10.17487/RFC7619, August 2015, | |||
<https://www.rfc-editor.org/info/rfc7619>. | <https://www.rfc-editor.org/info/rfc7619>. | |||
[RFC8019] Nir, Y. and V. Smyslov, "Protecting Internet Key Exchange | [RFC8019] Nir, Y. and V. Smyslov, "Protecting Internet Key Exchange | |||
Protocol Version 2 (IKEv2) Implementations from | Protocol Version 2 (IKEv2) Implementations from | |||
Distributed Denial-of-Service Attacks", RFC 8019, | Distributed Denial-of-Service Attacks", RFC 8019, | |||
DOI 10.17487/RFC8019, November 2016, <https://www.rfc- | DOI 10.17487/RFC8019, November 2016, | |||
editor.org/info/rfc8019>. | <https://www.rfc-editor.org/info/rfc8019>. | |||
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
<https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
Appendix A. Discussion and Rationale | Appendix A. Discussion and Rationale | |||
The idea behind this document is that while a Quantum Computer can | The idea behind this document is that while a Quantum Computer can | |||
easily reconstruct the shared secret of an (EC)DH exchange, they | easily reconstruct the shared secret of an (EC)DH exchange, they | |||
cannot as easily recover a secret from a symmetric exchange. This | cannot as easily recover a secret from a symmetric exchange. This | |||
makes the SK_d, and hence the IPsec KEYMAT and any child SA's | document makes the SK_d, and hence the IPsec KEYMAT and any child | |||
SKEYSEED, depend on both the symmetric PPK, and also the Diffie- | SA's SKEYSEED, depend on both the symmetric PPK, and also the Diffie- | |||
Hellman exchange. If we assume that the attacker knows everything | Hellman exchange. If we assume that the attacker knows everything | |||
except the PPK during the key exchange, and there are 2^n plausible | except the PPK during the key exchange, and there are 2^n plausible | |||
PPKs, then a Quantum Computer (using Grover's algorithm) would take | PPKs, then a Quantum Computer (using Grover's algorithm) would take | |||
O(2^(n/2)) time to recover the PPK. So, even if the (EC)DH can be | O(2^(n/2)) time to recover the PPK. So, even if the (EC)DH can be | |||
trivially solved, the attacker still can't recover any key material | trivially solved, the attacker still can't recover any key material | |||
(except for the SK_ei, SK_er, SK_ai, SK_ar values for the initial IKE | (except for the SK_ei, SK_er, SK_ai and SK_ar values for the initial | |||
exchange) unless they can find the PPK, which is too difficult if the | IKE exchange) unless they can find the PPK, which is too difficult if | |||
PPK has enough entropy (for example, 256 bits). Note that we do | the PPK has enough entropy (for example, 256 bits). Note that we do | |||
allow an attacker with a Quantum Computer to rederive the keying | allow an attacker with a Quantum Computer to rederive the keying | |||
material for the initial IKE SA; this was a compromise to allow the | material for the initial IKE SA; this was a compromise to allow the | |||
responder to select the correct PPK quickly. | responder to select the correct PPK quickly. | |||
Another goal of this protocol is to minimize the number of changes | Another goal of this protocol is to minimize the number of changes | |||
within the IKEv2 protocol, and in particular, within the cryptography | within the IKEv2 protocol, and in particular, within the cryptography | |||
of IKEv2. By limiting our changes to notifications, and adjusting | of IKEv2. By limiting our changes to notifications, and only | |||
the SK_d, SK_pi, SK_pr, it is hoped that this would be implementable, | adjusting the SK_d, SK_pi, SK_pr, it is hoped that this would be | |||
even on systems that perform most of the IKEv2 processing in | implementable, even on systems that perform most of the IKEv2 | |||
hardware. | processing in hardware. | |||
A third goal was to be friendly to incremental deployment in | A third goal was to be friendly to incremental deployment in | |||
operational networks, for which we might not want to have a global | operational networks, for which we might not want to have a global | |||
shared key, or quantum resistant IKEv2 is rolled out incrementally. | shared key, or quantum resistant IKEv2 is rolled out incrementally. | |||
This is why we specifically try to allow the PPK to be dependent on | This is why we specifically try to allow the PPK to be dependent on | |||
the peer, and why we allow the PPK to be configured as optional. | the peer, and why we allow the PPK to be configured as optional. | |||
A fourth goal was to avoid violating any of the security goals of | A fourth goal was to avoid violating any of the security properties | |||
IKEv2. | provided by IKEv2. | |||
Appendix B. Acknowledgements | Appendix B. Acknowledgements | |||
We would like to thank Tero Kivinen, Paul Wouters, Graham Bartlett, | We would like to thank Tero Kivinen, Paul Wouters, Graham Bartlett, | |||
Tommy Pauly, Quynh Dang and the rest of the IPSecME Working Group for | Tommy Pauly, Quynh Dang and the rest of the IPSecME Working Group for | |||
their feedback and suggestions for the scheme. | their feedback and suggestions for the scheme. | |||
Authors' Addresses | Authors' Addresses | |||
Scott Fluhrer | Scott Fluhrer | |||
End of changes. 52 change blocks. | ||||
156 lines changed or deleted | 190 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |