| < draft-fluhrer-qr-ikev2-03.txt | draft-fluhrer-qr-ikev2-04.txt > | |||
|---|---|---|---|---|
| Internet Engineering Task Force S. Fluhrer | Internet Engineering Task Force S. Fluhrer | |||
| Internet-Draft D. McGrew | Internet-Draft D. McGrew | |||
| Intended status: Informational P. Kampanakis | Intended status: Informational P. Kampanakis | |||
| Expires: May 1, 2017 Cisco Systems | Expires: October 21, 2017 Cisco Systems | |||
| October 28, 2016 | April 19, 2017 | |||
| Postquantum Preshared Keys for IKEv2 | Postquantum Preshared Keys for IKEv2 | |||
| draft-fluhrer-qr-ikev2-03 | draft-fluhrer-qr-ikev2-04 | |||
| Abstract | Abstract | |||
| This document describes an extension of IKEv2 to allow it to be | The possibility of quantum computers pose a serious challenge to | |||
| resistant to a Quantum Computer, by using preshared keys | cryptography algorithms widely today. IKEv2 is one example of a | |||
| cryptosystem that could be broken; someone storing VPN communications | ||||
| today could decrypt them at a later time when a quantum computer is | ||||
| available. It is anticipated that IKEv2 will be extended to support | ||||
| quantum secure key exchange algorithms; however that is not likely to | ||||
| happen in the near term. To address this problem before then, this | ||||
| document describes an extension of IKEv2 to allow it to be resistant | ||||
| to a Quantum Computer, by using preshared 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 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 May 1, 2017. | This Internet-Draft will expire on October 21, 2017. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2017 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 | |||
| 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 . . . . . . . . . . . . . . . . . . 3 | 1.2. Requirements Language . . . . . . . . . . . . . . . . . . 4 | |||
| 2. Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Exchanges . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Exchanges . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4. Creating Child SA Keying Material . . . . . . . . . . . . . . 5 | 4. PPK ID format . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 6 | 5. PPK Distribution . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 6. Upgrade procedure . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 6.1. Normative References . . . . . . . . . . . . . . . . . . 7 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
| 6.2. Informational References . . . . . . . . . . . . . . . . 7 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| Appendix A. Discussion and Rationale . . . . . . . . . . . . . . 7 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 9 | |||
| Appendix B. Acknowledgement . . . . . . . . . . . . . . . . . . 9 | 8.2. Informational References . . . . . . . . . . . . . . . . 10 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | Appendix A. Discussion and Rationale . . . . . . . . . . . . . . 10 | |||
| Appendix B. Acknowledgement . . . . . . . . . . . . . . . . . . 11 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 | ||||
| 1. Introduction | 1. Introduction | |||
| It is an open question whether or not it is feasible to build a | It is an open question whether or not it is feasible to build a | |||
| quantum computer, but if it is, many of the cryptographic algorithms | quantum computer (and if so, when might one be implemented), but if | |||
| and protocols currently in use would be insecure. A quantum computer | it is, many of the cryptographic algorithms and protocols currently | |||
| would be able to solve DH and ECDH problems, and this would imply | in use would be insecure. A quantum computer would be able to solve | |||
| that the security of existing IKEv2 systems would be compromised. | DH and ECDH problems, and this would imply that the security of | |||
| IKEv1 when used with preshared keys does not share this | existing IKEv2 systems would be compromised. IKEv1 when used with | |||
| vulnerability, because those keys are one of the inputs to the key | strong preshared keys is not vulnerable to quantum attacks, because | |||
| derivation function. If the preshared key have sufficient entropy | those keys are one of the inputs to the key derivation function. If | |||
| and the PRF and encryption and authentication transforms are | the preshared key has sufficient entropy and the PRF, encryption and | |||
| postquantum secure, then the resulting system is believed to be | authentication transforms are postquantum secure, then the resulting | |||
| quantum resistant, that is, believed to be invulnerable to an | system is believed to be quantum resistant, that is, believed to be | |||
| attacker with a Quantum Computer. | 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 | |||
| to the authentication method that is already provided within IKEv2. | to the authentication method that is already provided within IKEv2. | |||
| We stir in this secret when generating the key material (KEYMAT) keys | We stir in this secret into the SK_d value, which is used to generate | |||
| for the child SAs (along with the parameters that IKEv2 normally | the key material (KEYMAT) keys and the SKEYSEED for the child SAs; | |||
| uses); this secret provides quantum resistance to the IPsec SAs. | this secret provides quantum resistance to the IPsec SAs (and any | |||
| child IKE SAs). We also stir in the secret into the SK_pi, SK_pr | ||||
| values; this allows both sides to detect a secret mismatch cleanly. | ||||
| It was considered important to minimize the changes to IKEv2. The | It was considered important to minimize the changes to IKEv2. The | |||
| existing mechanisms to do authentication and key exchange remain in | existing mechanisms to do authentication and key exchange remain in | |||
| place (that is, we continue to do (EC)DH, and potentially a PKI | place (that is, we continue to do (EC)DH, and potentially a PKI | |||
| authentication if configured). This does not replace the | authentication if configured). This 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 | |||
| Changes in this draft from the previous versions | Changes in this draft from the previous versions | |||
| draft-03 | ||||
| - Modified how we stir the PPK into the IKEv2 secret state | ||||
| - Modified how the use of PPKs is negotiated | ||||
| draft-02 | draft-02 | |||
| - Simplified the protocol by stirring in the preshared key into the | - 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 negotation. | recover the initial IKE negotation. | |||
| - Removed positive endorsements of various algorithms. Retained | - Removed positive endorsements of various algorithms. Retained | |||
| warnings about algorithms known to be weak against a Quantum Computer | warnings about algorithms known to be weak against a Quantum Computer | |||
| skipping to change at page 3, line 35 ¶ | skipping to change at page 4, line 4 ¶ | |||
| - Added explicit guidance as to what IKE and IPsec algorithms are | - Added explicit guidance as to what IKE and IPsec algorithms are | |||
| Quantum Resistant | Quantum Resistant | |||
| draft-00 | draft-00 | |||
| - We switched from using vendor ID's to transmit the additional data | - We switched from using vendor ID's to transmit the additional data | |||
| to notifications | to notifications | |||
| - We added a mandatory cookie exchange to allow the server to | - We added a mandatory cookie exchange to allow the server to | |||
| communicate to the client before the initial exchange | communicate to the client before the initial exchange | |||
| - We added algorithm agility by having the server tell the client | - We added algorithm agility by having the server tell the client | |||
| what algorithm to use in the cookie exchange | what algorithm to use in the cookie exchange | |||
| - We have the server specify the PPK Indicator Input, which allows | - We have the server specify the PPK Indicator Input, which allows | |||
| the server to make a trade-off between the efficiency for the search | the server to make a trade-off between the efficiency for the search | |||
| of the clients PPK, and the anonymity of the client. | of the clients PPK, and the anonymity of the client. | |||
| - We now use the negotiated PRF (rather than a fixed HMAC-SHA256) to | - 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", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
| 2. Assumptions | 2. Assumptions | |||
| We assume that each IKE peer (both the initiator and the responder) | We assume that each IKE peer has a list of Postquantum Preshared Keys | |||
| has an optional Postquantum Preshared Key (PPK) (potentially on a | (PPK) along with their identifiers (PPK_id), and any potential IKE | |||
| per-peer basis, selected by peer identity), and also has a | initiator has a selection of which PPK to use with with any specific | |||
| configurable flag that determines whether this postquantum preshared | responder. In addition, the implementation has a configurable flag | |||
| key is mandatory. This preshared key is independent of the preshared | that determines whether this postquantum preshared key is mandatory. | |||
| key (if any that the IKEv2 protocol uses to perform authentication. | This PPK is independent of the preshared key (if any) that the IKEv2 | |||
| protocol uses to perform authentication. | ||||
| 3. Exchanges | 3. Exchanges | |||
| If the initiator has a configured postquantum preshared key (whether | If the initiator is configured to use a postquantum preshared key | |||
| or not it is optional), then it will include a notify payload in its | with the responder (whether or not the use of the PPK is optional), | |||
| initial encrypted exchange as follows: | then it will include a notify payload in the initial exchange as | |||
| follows: | ||||
| Initiator Responder | Initiator Responder | |||
| ------------------------------------------------------------------ | ------------------------------------------------------------------ | |||
| HDR, SK {IDi, [CERT,] [CERTREQ,] | HDR, SAi1, KEi, Ni, N(PPK_SUPPORT) ---> | |||
| [IDr,] AUTH, SAi2, | ||||
| TS, TSr, N(PPK_NOTIFY)} ---> | ||||
| N(PPK_NOTIFY) is a status notification payload with the type [TBA]; | N(PPK_SUPPORT) is a status notification payload with the type [TBA]; | |||
| it has a protocol ID of 0, and no SPI and no notification data | it has a protocol ID of 0, and no SPI and no notification data | |||
| associated with it. | associated with it. | |||
| When the responder receives the initial encrypted exchange, it checks | If the initiator needs to resend this initial message with a cookie | |||
| to see if it received a notify within that exchange, is configured to | (because the responder response included a cookie notification), then | |||
| support PPK with the initiator's identity, and whether that use is | the resend would include the PPK_SUPPORT notification if the original | |||
| mandatory. If the notify was received, and the responder does have a | message did. | |||
| PPK for that identity, then it responds with the standard IKE | ||||
| response with the PPK_NOTIFY notify message included, namely: | When the responder receives this initial exchange with the notify, | |||
| then it MUST check if has a PPK configured. If it does, it MUST | ||||
| reply with the IKE initial exchange including a notification in | ||||
| response. | ||||
| Initiator Responder | Initiator Responder | |||
| ------------------------------------------------------------------ | ------------------------------------------------------------------ | |||
| <--- HDR, SK {IDr, [CERT,] AUTH, | <--- HDR, SAr1, KEr, Nr, [CERTREQ], N(PPK_SUPPORT) | |||
| SAr2, TSi, TSr, N(PPK_NOTIFY)} | ||||
| If the responder is not configured to support PPK with that identity, | If the responder does not have a PPK configured, then it continues | |||
| it continues with the standard IKE protocol, not including the | with the IKE protocol as normal, not including the notify. | |||
| notification. | ||||
| If the responder is configured to support PPK with that identity, and | When the initiator receives this reply, it checks whether the | |||
| it does not receive the notification, then if the PPK usage is | responder included the PPK_SUPPORT notify. If the responder did not, | |||
| configured as mandatory, it MUST abort the exchange. If the PPK | then the initiator MUST either proceed with the standard IKE | |||
| usage is configured as optional, it continues with the standard IKE | negotiation (without using a PPK), or abort the exchange (for | |||
| protocol, not including the notification. | example, because the initiator has the PPK marked as mandatory). If | |||
| the responder did include the PPK_SUPPORT notify, then it selects a | ||||
| PPK, along with its identifier PPK_id. Then, it computes this | ||||
| modification of the standard IKE key derivation: | ||||
| SKEYSEED = prf(Ni | Nr, g^ir) | ||||
| {SK_d' | SK_ai | SK_ar | SK_ei | SK_er | SK_pi' | SK_pr' ) | ||||
| = prf+ (SKEYSEED, Ni | Nr | SPIi | SPIr } | ||||
| SK_d = prf(PPK, SK_d') | ||||
| SK_pi = prf(PPK, SK_pi') | ||||
| SK_pr = prf(PPK, SK_pr') | ||||
| That is, we use the standard IKE key derivation process except that | ||||
| the three subkeys SK_d, SK_pi, SK_pr are run through the prf again, | ||||
| this time using the PPK as the key. | ||||
| The initiator then sends the initial encrypted message, including the | ||||
| PPK_id value as follows: | ||||
| Initiator Responder | ||||
| ------------------------------------------------------------------ | ||||
| HDR, SK {IDi, [CERT,] [CERTREQ,] | ||||
| [IDr,] AUTH, SAi2, | ||||
| TSi, TSr, N(PPK_IDENTITY)(PPK_id)} ---> | ||||
| N(PPK_IDENITY) is a status notification payload with the type [TBA]; | ||||
| it has a protocol ID of 0, and no SPI and has a notification data | ||||
| that consists of the identifier PPK_id. | ||||
| When the responder receives this encrypted exchange, it first | ||||
| computes the values: | ||||
| SKEYSEED = prf(Ni | Nr, g^ir) | ||||
| {SK_d' | SK_ai | SK_ar | SK_ei | SK_er | SK_pi' | SK_pr' } | ||||
| = prf+ (SKEYSEED, Ni | Nr | SPIi | SPIr ) | ||||
| It then uses the SK_ei value to decrypt the message; and then finds | ||||
| the PPK_id value attached to the notify. It then scans through the | ||||
| payload for the PPK_id attached to the N(PPK_IDENTITY); if it has no | ||||
| such PPK, it fails the negotiation. If it does have a PPK with that | ||||
| identity, it further computes: | ||||
| SK_d = prf(PPK, SK_d') | ||||
| SK_pi = prf(PPK, SK_pi') | ||||
| SK_pr = prf(PPK, SK_pr') | ||||
| And computes the enchange (validating the AUTH payload that the | ||||
| initiator included) as standard. | ||||
| This table summarizes the above logic by the responder | This table summarizes the above logic by the responder | |||
| Received Nonce Have PPK PPK Mandatory Action | Received PPK_SUPPORT Have PPK PPK Mandatory Action | |||
| ------------------------------------------------------------------ | ------------------------------------------------------------------ | |||
| No No * Standard IKE protocol | No No * Standard IKE protocol | |||
| No Yes No Standard IKE protocol | No Yes No Standard IKE protocol | |||
| No Yes Yes Abort negotiation | No Yes Yes Abort negotiation | |||
| Yes No * Standard IKE protocol | Yes No * Standard IKE protocol | |||
| Yes Yes * Include PPK_NOTIFY Nonce | Yes Yes * Include PPK_SUPPORT | |||
| When the initiator receives the response, then (if it is configured | When the initiator receives the response, then (if it is configured | |||
| to use a PPK with the responder), then it checks for the presense of | to use a PPK with the responder), then it checks for the presense of | |||
| the notification. If it receives one, it marks the SA as using the | the notification. If it receives one, it marks the SA as using the | |||
| configured PPK; if it does not receive one, it MUST either abort the | configured PPK to generate SK_d, SK_pi, SK_pr (as shown above); if it | |||
| exchange (if the PPK was configured as mandatory), or it MUST | does not receive one, it MUST either abort the exchange (if the PPK | |||
| continue without using the PPK (if the PPK was configured as | was configured as mandatory), or it MUST continue without using the | |||
| optional). | PPK (if the PPK was configured as optional). | |||
| The protocol continues as standard until it comes time to compute the | If the initial exchange had PPK_SUPPORT sent by both the initiator | |||
| child SA keying material. | and the responder, and the initiator does not include a PPK_NOTIFY | |||
| notification, then the responder SHOULD fail the exchange. | ||||
| 4. Creating Child SA Keying Material | With this protocol, the computed SK_d is a function of the PPK, and | |||
| assuming that the PPK has sufficient entropy (for example, at least | ||||
| 2**256 possible values), then even if an attacker were able to | ||||
| recover 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 value. Similarly, every child SA key is a function | ||||
| of SK_d, hence all the keys for all the child SAs are also quantum | ||||
| resistant (assuming that the PPK was high entropy and secret, and | ||||
| that all the subkeys are sufficiently long). However, this quantum | ||||
| resistance does not extend to the initial SK_ei, SK_er keys; an | ||||
| implementation MAY rekey the initial IKE SA immediately after | ||||
| negotiating it; this would reduce the amount of data available to an | ||||
| attacker with a Quantum Computer. | ||||
| When it comes time to generate the keying material for a child SA, | 4. PPK ID format | |||
| the implementation (both the initiator and the responder) checks to | ||||
| see if they agreed to use a PPK. If they did, then they look up | ||||
| (based on the peer's identity) the configured PPK, and then both | ||||
| sides use one of these alternative formula (based on whether an | ||||
| optional Diffie-Hellman was included): | ||||
| Ni' = prf(PPK, Ni) | This standard requires that both the initiator and the responder have | |||
| Nr' = prf(PPK, Nr) | a secret PPK value, with the responder selecting the PPK based on the | |||
| KEYMAT = prf+(SK_d, Ni' | Nr') | PPK_ID that the initiator sends. In this initial standard, both the | |||
| initator and the responder are configured with fixed PPK and PPK_ID | ||||
| values, and do the look up based on that. It is anticipated that | ||||
| later standards will extend this technique to allow dynamically | ||||
| changing PPK values. To facilitate such an extension, we specify | ||||
| that the PPK_ID that the initiator sends will have its first octet be | ||||
| the PPK ID Type value, which is encoded as follows: | ||||
| or | PPK ID Type Value | |||
| Ni' = prf(PPK, Ni) | PPK_ID_OPAQUE 0 | |||
| Nr' = prf(PPK, Nr) | PPK_ID_FIXED 1 | |||
| KEYMAT = prf+(SK_d, g^ir (new) | Ni' | Nr') | RESERVED TO IANA 2-127 | |||
| Reserved for private use 128-255 | ||||
| where PPK is the configured postquantum preshared key, Ni, Nr are the | For PPK_ID_OPAQUE, the format of the PPK ID (and the PPK itself) is | |||
| nonces from the IKE_SA_INIT exchange if this require is the first | not specified by this document; it is assumed to be mutually | |||
| Child SA created or the fresh Ni and Nr from the CREATE_CHILD_SA | intelligible by both by initiator and the responder. This PPK ID | |||
| exchange if this is a subsequent creation, and prf is the | type is intended for those implementations that choose not to | |||
| pseudorandom function that was negotiated for this SA. | disclose the type of PPK to active attackers. | |||
| This is the standard IKE KEYMAT generation, except that the nonces | For PPK_ID_FIXED, the format of the PPK ID and the PPK are fixed | |||
| are transformed (via the negotiated PRF function) using the preshared | octet strings; the remaining bytes of the PPK_ID are a configured | |||
| PPK value | value. We assume that there is a fixed mapping between PPK_ID and | |||
| We use this negotiated PRF, rather than negotiating a separate one, | PPK, which is configured locally to both the initiator and the | |||
| because this PRF is agreed by both sides to have sufficient security | responder. The responder can use to do a look up the passed PPK_id | |||
| properties (otherwise, they would have negotiated something else), | value to determine the corresponding PPK value. Not all | |||
| and so that we don't need to specify a separate negotiation | implementations are able to configure arbitrary octet strings; to | |||
| procedure. | improve the potential interoperability, it is recommended that, in | |||
| the PPK_ID_FIXED case, both the PPK and the PPK_ID strings be limited | ||||
| to the base64 character set, namely the 64 characters 0-9, A-Z, a-z, | ||||
| + and /. | ||||
| When you rekey an IKE SA (generating a fresh SKEYSEED), the initiator | The PPK ID type values 2-127 are reserved for IANA; values 128-255 | |||
| and the responder will transform the nonces using the same PPK as | are for private use among mutually consenting parties. | |||
| they used during the original IKE SA negotiation. That is, they will | ||||
| use the alternate derivation: | ||||
| Ni' = prf(PPK, Ni) | 5. PPK Distribution | |||
| Nr' = prf(PPK, Nr) | ||||
| SKEYSEED = prf( SK_d (old), g^ir (new) | Ni' | Nr' ) | ||||
| (SK_d | SK_ai | SK_ar | SK_ei | SK_er | SK_pi | SK_pr) = | ||||
| prf+(SKEYSEED, Ni' | Nr' | SPIi | SPIr) | ||||
| An implementation MAY rekey the initial IKE SA immediately after | PPK_id's of the type PPK_ID_FIXED (and the corresponding PPKs) are | |||
| negotiating it; this would reduce the amount of data available to an | assumed to be configured within the IKE device in an out-of-band | |||
| attacker with a Quantum Computer | fashion. While the method of distribution is a local matter, one | |||
| suggestion would be to reuse the format within [RFC6030], with the | ||||
| Key Id field being the PPK_ID (without the 0x01 prefix for a | ||||
| PPK_ID_FIXED), and with the PPK being the secret, and the algorithm | ||||
| as PIN ("Algorithm=urn:ietf:params:xml:ns:keyprov:pskc:pin"). | ||||
| 5. Security Considerations | 6. Upgrade procedure | |||
| This algorithm was designed so that someone can introduce PPKs into | ||||
| an existing IKE network without causing network disruption. | ||||
| In the initial phase of the network upgrade, the network | ||||
| administrator would visit each IKE node, and configure: | ||||
| - The set of PPKs (and corresponding PPK_id's) that this node would | ||||
| need to know | ||||
| - For each peer that this node would initiate to, which PPK that we | ||||
| would use | ||||
| - That the use of PPK is currently optional | ||||
| With this configuration, the node will continue to operate with nodes | ||||
| that have not yet been upgraded. This is due to the PPK_SUPPORT | ||||
| notify; if the initiator has not been upgraded, it will not send the | ||||
| PPK_SUPPORT notify (and so the responder will know that we will not | ||||
| use a PPK); if the responder has not been upgraded, it will not send | ||||
| the PPK_SUPPORT notify (and so the initiator will know not to use a | ||||
| PPK). And, if both peers have been upgraded, they will both realize | ||||
| it, and in that case, the link will be quantum secure | ||||
| As an optional second step, after all nodes have been upgraded, then | ||||
| the administrator may then go back through the nodes, and mark the | ||||
| use of PPK as mandatory. This will not affect the strength against a | ||||
| passive attacker; it would mean that an attacker with a Quantum | ||||
| 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). | ||||
| 7. 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 a 128 bit security | least 256 bits of entropy, in order to provide a 128 bit security | |||
| level. | level. | |||
| Although this protocol preserves all the security properties of IKE | Although this protocol preserves all the security properties of IKE | |||
| against adversaries with conventional computers, this protocol allows | against adversaries with conventional computers, this protocol allows | |||
| an adversary with a Quantum Computer to decrypt all traffic encrypted | an adversary with a Quantum Computer to decrypt all traffic encrypted | |||
| with the initial IKE SA. In particular, it allows the adversary to | with the initial IKE SA. In particular, it allows the adversary to | |||
| recover the identities of both sides. If there is IKE traffic other | recover the identities of both sides. If there is IKE traffic other | |||
| than the identities that need to be protected against such an | than the identities that need to be protected against such an | |||
| adversary, one suggestion would be to form an initial IKE SA (which | adversary, one suggestion would be to form an initial IKE SA (which | |||
| is used to exchange identities), perhaps by using the protocol | is used to exchange identities), perhaps by using the protocol | |||
| documented in RFC6023. Then, you would immediately create a child | documented in RFC6023. Then, you would immediately create a child | |||
| IKE SA (which is used to exchange everything else). Because the | IKE SA (which is used to exchange everything else). Because the | |||
| child IKE SA keys are a function of the PPK (among other things), | child IKE SA keys are a function of SK_d, which is a function of the | |||
| traffic protected by that SA is secure against Quantum capable | PPK (among other things), traffic protected by that SA is secure | |||
| adversaries. | against Quantum capable adversaries. | |||
| In addition, the policy SHOULD be set to negotiate only quantum- | In addition, the policy SHOULD be set to negotiate only quantum- | |||
| resistant symmetric algorithms; while this RFC doesn't claim to give | resistant symmetric algorithms; while this RFC doesn't claim to give | |||
| advise as to what algorithms are secure (as that may change based on | advise as to what algorithms are secure (as that may change based on | |||
| future cryptographical results), here is a list of defined IKEv2 and | future cryptographical results), here is a list of defined IKEv2 and | |||
| IPsec algorithms that should NOT be used, as they are known not to be | IPsec algorithms that should NOT be used, as they are known not to be | |||
| Quantum Resistant | Quantum Resistant | |||
| Any IKE Encryption algorithm, PRF or Integrity algorithm with key | Any IKE Encryption algorithm, PRF or Integrity algorithm with key | |||
| size <256 bits | size <256 bits | |||
| Any ESP Transform with key size <256 bits | Any ESP Transform with key size <256 bits | |||
| PRF_AES128_XCBC and PRF_AES128_CBC; even though they are defined to | 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 128 bit | be able to use an arbitrary key size, they convert it into a 128 bit | |||
| key internally | key internally | |||
| 6. References | 8. References | |||
| 6.1. Normative References | 8.1. Normative References | |||
| [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- | [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- | |||
| Hashing for Message Authentication", RFC 2104, | Hashing for Message Authentication", RFC 2104, | |||
| DOI 10.17487/RFC2104, February 1997, | DOI 10.17487/RFC2104, February 1997, | |||
| <http://www.rfc-editor.org/info/rfc2104>. | <http://www.rfc-editor.org/info/rfc2104>. | |||
| [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, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://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, <http://www.rfc-editor.org/info/rfc7296>. | 2014, <http://www.rfc-editor.org/info/rfc7296>. | |||
| 6.2. Informational References | 8.2. Informational References | |||
| [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, | DOI 10.17487/RFC6023, October 2010, | |||
| <http://www.rfc-editor.org/info/rfc6023>. | <http://www.rfc-editor.org/info/rfc6023>. | |||
| [RFC6030] Hoyer, P., Pei, M., and S. Machani, "Portable Symmetric | ||||
| Key Container (PSKC)", RFC 6030, DOI 10.17487/RFC6030, | ||||
| October 2010, <http://www.rfc-editor.org/info/rfc6030>. | ||||
| [SPDP] McGrew, D., "A Secure Peer Discovery Protocol (SPDP)", | [SPDP] McGrew, D., "A Secure Peer Discovery Protocol (SPDP)", | |||
| 2001, <http://www.mindspring.com/~dmcgrew/spdp.txt>. | 2001, <http://www.mindspring.com/~dmcgrew/spdp.txt>. | |||
| Appendix A. Discussion and Rationale | Appendix A. Discussion and Rationale | |||
| The idea behind this is that while a Quantum Computer can easily | The idea behind this is that while a Quantum Computer can easily | |||
| reconstruct the shared secret of an (EC)DH exchange, they cannot as | reconstruct the shared secret of an (EC)DH exchange, they cannot as | |||
| easily recover a secret from a symmetric exchange this makes the | easily recover a secret from a symmetric exchange this makes the | |||
| IPsec KEYMAT and any child SA's SKEYSEED depend on both the symmetric | SK_d, and hence the IPsec KEYMAT and any child SA's SKEYSEED, depend | |||
| PPK, and also the Diffie-Hellman exchange. If we assume that the | on both the symmetric PPK, and also the Diffie-Hellman exchange. If | |||
| attacker knows everything except the PPK during the key exchange, and | we assume that the attacker knows everything except the PPK during | |||
| there are 2**n plausible PPK's, then a Quantum Computer (using | the key exchange, and there are 2**n plausible PPK's, then a Quantum | |||
| Grover's algorithm) would take O(2**(n/2)) time to recover the PPK. | Computer (using Grover's algorithm) would take O(2**(n/2)) time to | |||
| So, even if the (EC)DH can be trivially solved, the attacker still | recover the PPK. So, even if the (EC)DH can be trivially solved, the | |||
| can't recover any key material (except for the SK values for the | attacker still can't recover any key material (except for the SK_ei, | |||
| initial IKE exchange) unless they can find the PPK, and that's too | SK_er, SK_ai, SK_ar values for the initial IKE exchange) unless they | |||
| difficult if the PPK has enough entropy (say, 256 bits). Note that | can find the PPK, and that's too difficult if the PPK has enough | |||
| we do allow an attacker with a Quantum Computer to rederive the | entropy (for example, 256 bits). Note that we do allow an attacker | |||
| keying material for the initial IKE SA; this was a compromise to | with a Quantum Computer to rederive the keying material for the | |||
| allow the responder to select the correct PPK quickly. | initial IKE SA; this was a compromise to allow the 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 translating | of IKEv2. By limiting our changes to notifications, and translating | |||
| the nonces, it is hoped that this would be implementable, even on | the nonces, it is hoped that this would be implementable, even on | |||
| systems that perform much of the IKEv2 processing is in hardware. | systems that perform much of the IKEv2 processing is 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, and also if we're rolling this out incrementally. This | shared key, and also if we're rolling this out incrementally. This | |||
| is why we specifically try to allow the PPK to be dependent on the | 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. | 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 goals of | |||
| IKEv2. | IKEv2. | |||
| The third and fourth goals are in partial conflict. In order to | ||||
| achieve postquantum security, we need to stir in the PPK when the | ||||
| keys are computed, however the keys are computed before we know who | ||||
| we're talking to (and so which PPK we should use). And, we can't | ||||
| just tell the other side which PPK to use, as we might use different | ||||
| PPK's for different peers, and so that would violate the anonymity | ||||
| goal. If we just (for example) included a hash of the PPK, someone | ||||
| listening in could easily tell when we're using the same PPK for | ||||
| different exchanges, and thus deduce that the systems are related. | ||||
| The compromise we selected was to stir in the PPK in all the derived | ||||
| keys except the initial IKE SA keys, While this allows an attacker | ||||
| with a Quantum Computer to recover the identities, a poll on the | ||||
| IPsecME mailing list indicated that the majority of the people on the | ||||
| list did not think anonymity was an important property within IKE. | ||||
| We stir in the shared secret within the Child SA keying material; | ||||
| this allows an implementation that wants to protect the other IKE- | ||||
| based traffic to create an initial IKE SA to exchange identities, and | ||||
| then immediately create a Child SA, and use that Child SA to exchange | ||||
| the rest of the negotiation. | ||||
| In addition, when we stir in the PPK, we always use it to modify a | ||||
| nonce (using the negotiated PRF). We modify the nonce (rather than, | ||||
| say, including the PPK in with the prf or prf+ computation directly) | ||||
| so that this would be easier to implement on an hardware-based IKE | ||||
| implementation; the prf computations might be built-in, but the | ||||
| nonces would be external inputs, and so modifying those would | ||||
| minimize the changes. | ||||
| Appendix B. Acknowledgement | Appendix B. Acknowledgement | |||
| The idea of stirring in the PPK into the IPsec key generation process | We would like to thank Tero Kivine, Valery Smyslov, Paul Wouters and | |||
| was originally suggested on the list by Tero Kivinen. | the rest of the ipsecme working group for their feedback and | |||
| suggestions for the scheme | ||||
| Authors' Addresses | Authors' Addresses | |||
| Scott Fluhrer | Scott Fluhrer | |||
| Cisco Systems | Cisco Systems | |||
| Email: sfluhrer@cisco.com | Email: sfluhrer@cisco.com | |||
| David McGrew | David McGrew | |||
| Cisco Systems | Cisco Systems | |||
| End of changes. 42 change blocks. | ||||
| 160 lines changed or deleted | 250 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||