| < draft-ietf-ipsecme-qr-ikev2-02.txt | draft-ietf-ipsecme-qr-ikev2-03.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: August 31, 2018 Cisco Systems | Expires: December 20, 2018 Cisco Systems | |||
| V. Smyslov | V. Smyslov | |||
| ELVIS-PLUS | ELVIS-PLUS | |||
| February 27, 2018 | June 18, 2018 | |||
| Postquantum Preshared Keys for IKEv2 | Postquantum Preshared Keys for IKEv2 | |||
| draft-ietf-ipsecme-qr-ikev2-02 | draft-ietf-ipsecme-qr-ikev2-03 | |||
| Abstract | Abstract | |||
| The possibility of Quantum Computers pose a serious challenge to | The possibility of Quantum Computers pose a serious challenge to | |||
| cryptography algorithms deployed widely today. IKEv2 is one example | cryptography 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 | |||
| skipping to change at page 1, line 42 ¶ | skipping to change at page 1, line 42 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://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 August 31, 2018. | This Internet-Draft will expire on December 20, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 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 | |||
| (https://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 | |||
| skipping to change at page 2, line 21 ¶ | skipping to change at page 2, line 21 ¶ | |||
| 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 . . . . . . . . . . . . . . . . . . 5 | |||
| 2. Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3. Exchanges . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Exchanges . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4. Upgrade procedure . . . . . . . . . . . . . . . . . . . . . . 10 | 4. Upgrade procedure . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 5. PPK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 5. PPK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 5.1. PPK_ID format . . . . . . . . . . . . . . . . . . . . . . 11 | 5.1. PPK_ID format . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 5.2. Operational Considerations . . . . . . . . . . . . . . . 12 | 5.2. Operational Considerations . . . . . . . . . . . . . . . 12 | |||
| 5.2.1. PPK Distribution . . . . . . . . . . . . . . . . . . 12 | 5.2.1. PPK Distribution . . . . . . . . . . . . . . . . . . 12 | |||
| 5.2.2. Group PPK . . . . . . . . . . . . . . . . . . . . . . 12 | 5.2.2. Group PPK . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 5.2.3. PPK-only Authentication . . . . . . . . . . . . . . . 13 | 5.2.3. PPK-only Authentication . . . . . . . . . . . . . . . 13 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| skipping to change at page 3, line 16 ¶ | skipping to change at page 3, line 16 ¶ | |||
| 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 this secret into the SK_d value, which is used to generate | We stir this secret into the SK_d value, which is used to generate | |||
| the key material (KEYMAT) keys and the SKEYSEED for the child SAs; | the key material (KEYMAT) and the SKEYSEED for the child SAs; this | |||
| this secret provides quantum resistance to the IPsec SAs (and any | secret provides quantum resistance to the IPsec SAs (and any child | |||
| child IKE SAs). We also stir the secret into the SK_pi, SK_pr | IKE SAs). We also stir the secret into the SK_pi, SK_pr values; this | |||
| values; this allows both sides to detect a secret mismatch cleanly. | 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 PKI | |||
| 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-03 | ||||
| o Editorial changes and minor text nit fixes. | ||||
| o Integrated Tommy P. text suggestions. | ||||
| draft-ietf-ipsecme-qr-ikev2-02 | draft-ietf-ipsecme-qr-ikev2-02 | |||
| o Added note that the PPK is stirred in the initial IKE SA setup | o Added note that the PPK is stirred in the initial IKE SA setup | |||
| only. | only. | |||
| o Added note about the initiator ignoring any content in the | o Added note about the initiator ignoring any content in the | |||
| PPK_IDENTITY notification from the responder. | PPK_IDENTITY notification from the responder. | |||
| o fixed Tero's suggestions from 2/6/1028 | o fixed Tero's suggestions from 2/6/1028 | |||
| o Added IANA assigned message types where necessary. | o Added IANA assigned message types where necessary. | |||
| o fixed minor text nits | o fixed minor text nits | |||
| draft-ietf-ipsecme-qr-ikev2-01 | ||||
| o Nits and minor fixes. | o Nits and minor fixes. | |||
| o prf is replaced with prf+ for the SK_d and SK_pi/r calculations. | o prf is replaced with prf+ for the SK_d and SK_pi/r calculations. | |||
| o Clarified using PPK in case of EAP authentication. | o Clarified using PPK in case of EAP authentication. | |||
| o PPK_SUPPORT notification is changed to USE_PPK to better reflect | o PPK_SUPPORT notification is changed to USE_PPK to better reflect | |||
| its purpose. | its purpose. | |||
| draft-ietf-ipsecme-qr-ikev2-00 | draft-ietf-ipsecme-qr-ikev2-00 | |||
| skipping to change at page 6, line 40 ¶ | skipping to change at page 6, line 47 ¶ | |||
| 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 he 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 | If the responder did not include the USE_PPK notification and using a | |||
| PPKs for this responder is optional, then the initiator continues | PPK for this particular responder is optional, then the initiator | |||
| 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, she | |||
| 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') | |||
| That is, we use the standard IKEv2 key derivation process except that | That is, we use the standard IKEv2 key derivation process except that | |||
| the three subkeys SK_d, SK_pi, SK_pr are run through the prf+ again, | the three subkeys SK_d, SK_pi, SK_pr are run through the prf+ again, | |||
| this time using the PPK as the key. Using prf+ construction ensures | this time using the PPK as the key. Using prf+ construction ensures | |||
| that it is always possible to get the resulting keys of the same size | that it is always possible to get the resulting keys of the same size | |||
| as the initial ones, even if the underlying prf has output size | as the initial ones, even if the underlying PRF has output size | |||
| different from its key size. Note, that at the time this document | different from its key size. Note, that at the time this document | |||
| was written, all prfs defined for use in IKEv2 [IKEV2-IANA-PRFS] had | was written, all PRFs defined for use in IKEv2 [IKEV2-IANA-PRFS] had | |||
| output size equal to the (preferred) key size. For such prfs only | output size equal to the (preferred) key size. For such PRFs only | |||
| the first iteration of prf+ is needed: | the first iteration of prf+ is needed: | |||
| SK_d = prf (PPK, SK_d' | 0x01) | SK_d = prf (PPK, SK_d' | 0x01) | |||
| SK_pi = prf (PPK, SK_pi' | 0x01) | SK_pi = prf (PPK, SK_pi' | 0x01) | |||
| SK_pr = prf (PPK, SK_pr' | 0x01) | SK_pr = prf (PPK, SK_pr' | 0x01) | |||
| Note that the PPK is used in SK_d, SK_pi and SK_pr calculation only | Note that the PPK is used in SK_d, SK_pi and SK_pr calculation only | |||
| during the initial IKE SA setup. It MUST NOT be used when these | during the initial IKE SA setup. It MUST NOT be used when these | |||
| subkeys are calculated as result of IKE SA rekey, resumption or other | subkeys are calculated as result of IKE SA rekey, resumption or other | |||
| similar operation. | similar operation. | |||
| skipping to change at page 8, line 8 ¶ | skipping to change at page 8, line 11 ¶ | |||
| 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, she cannot | |||
| authenticate the initiator), but she could be able to continue with | authenticate the initiator), but she could be able to continue with | |||
| normal IKEv2 protocol if the initiator provided its authentication | normal IKEv2 protocol if the initiator provided its authentication | |||
| data computed as in normal IKEv2, without using PPKs. For this | data computed as in normal IKEv2, without using PPKs. For this | |||
| purpose, if using PPKs for communication with this responder is | purpose, if using PPKs for communication with this responder is | |||
| optional for the initiator, then the initiator MAY include a | 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. A notification data consists of the | protocol ID of 0 and no SPI. The Notification Data field contains | |||
| initiator's authentication data computed using SK_pi' (i.e. the data | the initiator's authentication data computed using SK_pi', which has | |||
| that computed without using PPKs and would normally be placed in the | been computed without using PPKs. This is the same data that would | |||
| AUTH payload). Authentication Method for computing the | normally be placed in the Authentication Data field of an AUTH | |||
| authentication data MUST be the same as indicated in the AUTH payload | payload. Since the Auth Method field is not present in the | |||
| and is not included in the notification. Note that if the initiator | notification, the authentication method used for computing the | |||
| decides to include NO_PPK_AUTH notification, then it means that the | authentication data MUST be the same as method indicated in the AUTH | |||
| initiator needs to perform authentication data computation twice that | payload. Note that if the initiator decides to include the | |||
| may consume substantial computation power (e.g. if digital signatures | NO_PPK_AUTH notification, the initiator needs to perform | |||
| are involved). | authentication data computation twice, which may consume computation | |||
| power (e.g. if digital signatures are involved). | ||||
| When the responder receives this encrypted exchange, she first | When the responder receives this encrypted exchange, she 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 | She then uses the SK_ei/SK_ai values to decrypt/check the message and | |||
| then scans through the payloads for the PPK_ID attached to the | then scans through the payloads for the PPK_ID attached to the | |||
| skipping to change at page 8, line 48 ¶ | skipping to change at page 9, line 5 ¶ | |||
| NO_PPK_AUTH notification found, then then the responder MUST send | NO_PPK_AUTH notification 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 she 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 by the responder: | This table summarizes the above logic for the responder: | |||
| Received Received Have PPK | Received Received Have PPK | |||
| USE_PPK NO_PPK_AUTH PPK Mandatory Action | USE_PPK NO_PPK_AUTH PPK Mandatory Action | |||
| ------------------------------------------------------------------ | ----------------------------------------------------------------- | |||
| No * No * Standard IKEv2 protocol | No * No * Standard IKEv2 protocol | |||
| No * Yes No Standard IKEv2 protocol | No * Yes No Standard IKEv2 protocol | |||
| No * Yes Yes Abort negotiation | No * Yes Yes Abort negotiation | |||
| Yes No No * Abort negotiation | Yes No No * Abort negotiation | |||
| Yes Yes No Yes Abort negotiation | Yes Yes No Yes Abort negotiation | |||
| Yes Yes No No Standard IKEv2 protocol | Yes Yes No No Standard IKEv2 protocol | |||
| Yes * Yes * Use PPK | Yes * Yes * Use PPK | |||
| If PPK is in use, then the responder extracts corresponding PPK and | If PPK is in use, then the responder extracts the corresponding PPK | |||
| computes the following values: | and computes the following values: | |||
| 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') | |||
| The responder then continues with the IKE_AUTH exchange (validating | The responder then continues with the IKE_AUTH exchange (validating | |||
| 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: | |||
| skipping to change at page 10, line 15 ¶ | skipping to change at page 10, line 17 ¶ | |||
| 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 PPK_IDENTITY notification is received, the responder | |||
| follows rules described above for non-EAP authentication case. | follows rules described above for 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 IKE_SA_INIT exchange in case of PPK is as described | |||
| above (including exchange of the USE_PPK notifications), regardless | above (including exchange of the USE_PPK notifications), regardless | |||
| whether EAP is employed in the IKE_AUTH or not. | 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. | |||
| skipping to change at page 11, line 19 ¶ | skipping to change at page 11, line 23 ¶ | |||
| the responder could do standard IKEv2 protocol if the initiator sent | the responder could do standard IKEv2 protocol if the initiator sent | |||
| NO_PPK_AUTH notification. If both the responder and initiator have | NO_PPK_AUTH notification. If both the responder and initiator have | |||
| been upgraded and properly configured, they will both realize it, and | been upgraded and properly configured, they will both realize it, and | |||
| in that case, the link will be quantum secure. | in that case, the link 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 may then go back through the nodes, and mark the | 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 | 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 | |||
| 5.1. PPK_ID format | 5.1. PPK_ID format | |||
| This standard requires that both the initiator and the responder have | This standard requires that both the initiator and the responder have | |||
| a secret PPK value, with the responder selecting the PPK based on the | a secret PPK value, with the responder selecting the PPK based on the | |||
| PPK_ID that the initiator sends. In this standard, both the | PPK_ID that the initiator sends. In this standard, both the | |||
| initiator and the responder are configured with fixed PPK and PPK_ID | initiator and the responder are configured with fixed PPK and PPK_ID | |||
| values, and do the look up based on PPK_ID value. It is anticipated | values, and do the look up based on PPK_ID value. It is anticipated | |||
| skipping to change at page 12, line 12 ¶ | skipping to change at page 12, line 15 ¶ | |||
| PPK_ID strings be limited to the base64 character set, namely the | PPK_ID strings be limited to the base64 character set, namely the | |||
| 64 characters 0-9, A-Z, a-z, + and /. | 64 characters 0-9, A-Z, 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 security administrators job, and can | can significantly complicate a security administrator's job, and can | |||
| potentially slow down widespread adoption of this solution. It is | potentially slow down widespread adoption of this specification. It | |||
| 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 | symmetric key exchange. That format could be reused with the Key Id | |||
| field being the PPK_ID (without the PPK_ID Type octet for a | field being the PPK_ID (without the PPK_ID Type octet for a | |||
| PPK_ID_FIXED), the PPK being the secret, and the algorithm | PPK_ID_FIXED), the PPK being the secret, and algorithm | |||
| ("Algorithm=urn:ietf:params:xml:ns:keyprov:pskc:pin") as PIN. | ("Algorithm=urn:ietf:params:xml:ns:keyprov:pskc:pin") as the PIN. | |||
| 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 that | peer authentication, but it also means that each host must have as | |||
| many independent PPKs, how many peers it is going to communicate | many independent PPKs as the peers it is going to communicate with. | |||
| with. As the number of hosts grows this will scale badly. | As the number of peers grows the PPKs will not scale. | |||
| Even though it is NOT RECOMMENDED, it is possible to use a single PPK | Even though it is NOT RECOMMENDED, it is possible to use a single PPK | |||
| for a group of users. Since each peer uses classical public key | for a group of users. Since each peer uses classical public key | |||
| cryptography in addition to PPK for key exchange and authentication, | cryptography in addition to PPK for key exchange and authentication, | |||
| members of the group can neither impersonate each other nor read | members of the group can neither impersonate each other nor read | |||
| other's traffic, unless they use Quantum Computers to break public | other's traffic, unless they use Quantum Computers to break public | |||
| key operations. | key operations. | |||
| Although it's probably safe to use group PPK in short term, the fact, | Although it's probably safe to use group PPK, the fact that the PPK | |||
| that the PPK is known to a (potentially large) group of users makes | is known to a (potentially large) group of users makes it more | |||
| it more susceptible to theft. If an attacker equipped with a Quantum | susceptible to theft. If an attacker equipped with a Quantum | |||
| Computer got access to a group PPK, then all the communications | Computer got access to a group PPK, then all communications inside | |||
| inside the group are revealed. | the group are revealed. | |||
| 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 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 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 a 128-bit security | least 256 bits of entropy, in order to provide 128-bit security | |||
| level. | level. | |||
| With this protocol, the computed SK_d is a function of the PPK, and | 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, every child SA key is a function of SK_d, hence | 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 | 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 | (assuming that the PPK was of high enough entropy, and that all the | |||
| subkeys are sufficiently long). | subkeys are sufficiently long). | |||
| Although this protocol preserves all the security properties of IKEv2 | Although this protocol preserves all the security properties of IKEv2 | |||
| against adversaries with conventional computers, it allows an | against adversaries with conventional computers, it allows an | |||
| adversary with a Quantum Computer to decrypt all traffic encrypted | 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, implementations MAY rekey the initial IKE SA immediately | adversary, implementations MAY rekey the initial IKE SA immediately | |||
| after negotiating it to generate a new SKEYSEED from the postquantum | after negotiating it to generate a new SKEYSEED from the postquantum | |||
| SK_d. This would reduce the amount of data available to an attacker | SK_d. This would reduce the amount of data available to an attacker | |||
| with a Quantum Computer. | with a Quantum Computer. | |||
| If sensitive information (like keys) is to be transferred over IKE | ||||
| SA, then implementations MUST rekey the initial IKE SA before sending | ||||
| this information to get protection against Quantum Computers. | ||||
| Alternatively, an initial IKE SA (which is used to exchange | Alternatively, an initial IKE SA (which is used to exchange | |||
| identities) can take place, perhaps by using the protocol documented | identities) can take place, perhaps by using the protocol documented | |||
| in [RFC6023]. After the childless IKE SA is created, implementations | in [RFC6023]. After the childless IKE SA is created, implementations | |||
| would immediately create a new IKE SA (which is used to exchange | would immediately create a new IKE SA (which is used to exchange | |||
| everything else) by using a rekey mechanism for IKE SAs. Because the | everything else) by using a rekey mechanism for IKE SAs. Because the | |||
| rekeyed IKE SA keys are a function of SK_d, which is a function of | rekeyed IKE SA keys are a function of SK_d, which is a function of | |||
| the PPK (among other things), traffic protected by that IKE SA is | the PPK (among other things), traffic protected by that IKE SA is | |||
| secure against Quantum capable adversaries. | secure against Quantum capable adversaries. | |||
| If some sensitive information (like keys) is to be transferred over | ||||
| IKE SA, then implementations MUST rekey the initial IKE SA before | ||||
| sending this information to get protection against Quantum Computers. | ||||
| 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 | advice as to what algorithms are secure (as that may change based on | |||
| future cryptographical results), below is a list of defined IKEv2 and | future cryptographical results), below 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 | |||
| 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 didn't include the | using PPKs is mandatory for it, but the responder might not include | |||
| USE_PPK notification in the response. In this situation when the | the USE_PPK notification in the response. In this situation when the | |||
| initiator aborts negotiation he leaves half-open IKE SA on the | initiator aborts negotiation he leaves half-open IKE SA on the | |||
| responder (because IKE_SA_INIT completes successfully from | 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 some measures (see [RFC8019] for | a Denial-of-Service attack and take protection measures (see | |||
| more detail). It is RECOMMENDED that implementations in this | [RFC8019] for more detail). It is RECOMMENDED that implementations | |||
| situation cache the negative result of negotiation for some time and | in this situation cache the negative result of negotiation for some | |||
| don't make attempts to create it again for some time, because this is | time and don't make attempts to create it again for some time, | |||
| a result of misconfiguration and probably some re-configuration of | because this is a result of misconfiguration and probably some re- | |||
| 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 | |||
| capable to eavesdrop and to inject packets into the network can | capable to eavesdrop and to inject packets into the network can | |||
| prevent creating IKE SA by mounting the following attack. The | prevent creating IKE SA by mounting the following attack. The | |||
| attacker intercepts the the initial request containing the USE_PPK | attacker intercepts the initial request containing the USE_PPK | |||
| notification and injects the forget response containing no USE_PPK. | notification and injects the forget response containing no USE_PPK. | |||
| If the attacker manages to inject this packet before the responder | If the attacker manages to inject this packet before the responder | |||
| sends a genuine response, then the initiator would abort the | sends a genuine response, then the initiator would abort the | |||
| exchange. To thwart this kind of attack it is RECOMMENDED, that if | exchange. To thwart this kind of attack it is RECOMMENDED, that if | |||
| using PPKs is mandatory for the initiator and the received response | using PPKs is mandatory for the initiator and the received response | |||
| doesn't contain the USE_PPK notification, then the initiator doesn't | doesn't contain the USE_PPK notification, then the initiator doesn't | |||
| abort exchange immediately, but instead waits some time for more | abort the exchange immediately, but instead waits some time for more | |||
| responses (possibly retransmitting the request). If all the received | responses (possibly retransmitting the request). If all the received | |||
| responses contain no USE_PPK, then the exchange is aborted. | responses contain no USE_PPK, then the exchange is aborted. | |||
| 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 | |||
| skipping to change at page 16, line 20 ¶ | skipping to change at page 16, line 20 ¶ | |||
| [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>. | |||
| 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-02 (work in | Quantum Cryptography", draft-hoffman-c2pq-03 (work in | |||
| progress), August 2017. | progress), February 2018. | |||
| [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>. | |||
| skipping to change at page 17, line 34 ¶ | skipping to change at page 17, line 34 ¶ | |||
| exchange) unless they can find the PPK, which is too difficult if the | exchange) unless they can find the PPK, which is too difficult if the | |||
| PPK has enough entropy (for example, 256 bits). Note that we do | 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 adjusting | |||
| the SK_d, SK_pi, SK_pr, it is hoped that this would be implementable, | the SK_d, SK_pi, SK_pr, it is hoped that this would be implementable, | |||
| even on systems that perform much of the IKEv2 processing is in | even on systems that perform most of the IKEv2 processing in | |||
| hardware. | 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 goals of | |||
| IKEv2. | 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, | |||
| and the rest of the IPSecME Working Group for their feedback and | Tommy Pauly and the rest of the IPSecME Working Group for their | |||
| suggestions for the scheme. | 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. 39 change blocks. | ||||
| 99 lines changed or deleted | 103 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/ | ||||