draft-ietf-ipsecme-ikev2-multiple-ke-03.txt | draft-ietf-ipsecme-ikev2-multiple-ke-04.txt | |||
---|---|---|---|---|
Internet Engineering Task Force (IETF) C. Tjhai | Internet Engineering Task Force (IETF) C. Tjhai | |||
Internet-Draft M. Tomlinson | Internet-Draft M. Tomlinson | |||
Updates: 7296 (if approved) Post-Quantum | Updates: 7296 (if approved) Post-Quantum | |||
Intended status: Standards Track G. Bartlett | Intended status: Standards Track G. Bartlett | |||
Expires: January 7, 2022 Quantum Secret | Expires: 3 April 2022 Quantum Secret | |||
S. Fluhrer | S. Fluhrer | |||
Cisco Systems | Cisco Systems | |||
D. Van Geest | D. Van Geest | |||
ISARA Corporation | ISARA Corporation | |||
O. Garcia-Morchon | O. Garcia-Morchon | |||
Philips | Philips | |||
V. Smyslov | V. Smyslov | |||
ELVIS-PLUS | ELVIS-PLUS | |||
July 6, 2021 | 30 September 2021 | |||
Multiple Key Exchanges in IKEv2 | Multiple Key Exchanges in IKEv2 | |||
draft-ietf-ipsecme-ikev2-multiple-ke-03 | draft-ietf-ipsecme-ikev2-multiple-ke-04 | |||
Abstract | Abstract | |||
This document describes how to extend the Internet Key Exchange | This document describes how to extend the Internet Key Exchange | |||
Protocol Version 2 (IKEv2) to allow multiple key exchanges to take | Protocol Version 2 (IKEv2) to allow multiple key exchanges to take | |||
place while computing a shared secret during a Security Association | place while computing a shared secret during a Security Association | |||
(SA) setup. The primary application of this feature in IKEv2 is the | (SA) setup. The primary application of this feature in IKEv2 is the | |||
ability to perform one or more post-quantum key exchanges in | ability to perform one or more post-quantum key exchanges in | |||
conjunction with the classical (Elliptic Curve) Diffie-Hellman key | conjunction with the classical (Elliptic Curve) Diffie-Hellman key | |||
exchange, so that the resulting shared key is resistant against | exchange, so that the resulting shared key is resistant against | |||
skipping to change at page 2, line 12 ¶ | skipping to change at page 2, line 15 ¶ | |||
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 January 7, 2022. | This Internet-Draft will expire on 3 April 2022. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 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/ | |||
(https://trustee.ietf.org/license-info) in effect on the date of | license-info) in effect on the date of publication of this document. | |||
publication of this document. Please review these documents | Please review these documents carefully, as they describe your rights | |||
carefully, as they describe your rights and restrictions with respect | and restrictions with respect to this document. Code Components | |||
to this document. Code Components extracted from this document must | extracted from this document must include Simplified BSD License text | |||
include Simplified BSD License text as described in Section 4.e of | as described in Section 4.e of the Trust Legal Provisions and are | |||
the Trust Legal Provisions and are provided without warranty as | provided without warranty as described in the Simplified BSD License. | |||
described in the Simplified BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Problem Description . . . . . . . . . . . . . . . . . . . 3 | 1.1. Problem Description . . . . . . . . . . . . . . . . . . . 3 | |||
1.2. Proposed Extension . . . . . . . . . . . . . . . . . . . 3 | 1.2. Proposed Extension . . . . . . . . . . . . . . . . . . . 3 | |||
1.3. Changes . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.3. Changes . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
1.4. Document Organization . . . . . . . . . . . . . . . . . . 6 | 1.4. Document Organization . . . . . . . . . . . . . . . . . . 7 | |||
2. Design Criteria . . . . . . . . . . . . . . . . . . . . . . . 6 | 2. Design Criteria . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3. Multiple Key Exchanges . . . . . . . . . . . . . . . . . . . 8 | 3. Multiple Key Exchanges . . . . . . . . . . . . . . . . . . . 9 | |||
3.1. Overall Design . . . . . . . . . . . . . . . . . . . . . 8 | 3.1. Design Overview . . . . . . . . . . . . . . . . . . . . . 9 | |||
3.2. Overall Protocol . . . . . . . . . . . . . . . . . . . . 10 | 3.2. Protocol Details . . . . . . . . . . . . . . . . . . . . 11 | |||
3.2.1. IKE_SA_INIT Round: Negotiation . . . . . . . . . . . 10 | 3.2.1. IKE_SA_INIT Round: Negotiation . . . . . . . . . . . 11 | |||
3.2.2. IKE_INTERMEDIATE Round: Additional Key Exchanges . . 12 | 3.2.2. IKE_INTERMEDIATE Round: Additional Key Exchanges . . 15 | |||
3.2.3. IKE_AUTH Exchange . . . . . . . . . . . . . . . . . . 13 | 3.2.3. IKE_AUTH Exchange . . . . . . . . . . . . . . . . . . 15 | |||
3.2.4. CREATE_CHILD_SA Exchange . . . . . . . . . . . . . . 13 | 3.2.4. CREATE_CHILD_SA Exchange . . . . . . . . . . . . . . 16 | |||
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | 3.2.5. Interaction with Childless IKE SA . . . . . . . . . . 19 | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | |||
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 18 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 18 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 18 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 22 | |||
Appendix A. Alternative Design . . . . . . . . . . . . . . . . . 19 | 7.2. Informative References . . . . . . . . . . . . . . . . . 22 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 | ||||
Appendix A. Sample Multiple Key Exchanges . . . . . . . . . . . 24 | ||||
A.1. No Additional Key Exchange Used . . . . . . . . . . . . . 24 | ||||
A.2. Additional Key Exchange in the CREATE_CHILD_SA Exchange | ||||
only . . . . . . . . . . . . . . . . . . . . . . . . . . 25 | ||||
A.3. Not Matching Proposal for Additional Key Exchanges . . . 26 | ||||
Appendix B. Alternative Design . . . . . . . . . . . . . . . . . 27 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 31 | ||||
1. Introduction | 1. Introduction | |||
1.1. Problem Description | 1.1. Problem Description | |||
Internet Key Exchange Protocol (IKEv2) as specified in [RFC7296] uses | Internet Key Exchange Protocol (IKEv2) as specified in [RFC7296] uses | |||
the Diffie-Hellman (DH) or Elliptic Curve Diffie-Hellman (ECDH) | the Diffie-Hellman (DH) or Elliptic Curve Diffie-Hellman (ECDH) | |||
algorithm to establish a shared secret between an initiator and a | algorithm to establish a shared secret between an initiator and a | |||
responder. The security of the DH and ECDH algorithms relies on the | responder. The security of the DH and ECDH algorithms relies on the | |||
difficulty to solve a discrete logarithm problem in multiplicative | difficulty to solve a discrete logarithm problem in multiplicative | |||
skipping to change at page 4, line 46 ¶ | skipping to change at page 5, line 19 ¶ | |||
requirement. However, if such a requirement is needed, | requirement. However, if such a requirement is needed, | |||
[I-D.tjhai-ikev2-beyond-64k-limit] discusses approaches that should | [I-D.tjhai-ikev2-beyond-64k-limit] discusses approaches that should | |||
be taken to exchange huge payloads. | be taken to exchange huge payloads. | |||
1.3. Changes | 1.3. 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-ikev2-multiple-ke-04 | ||||
* Introduction and initial sections are reorganized. | ||||
* More clarifications for error handling added. | ||||
* ASCII arts displaying SA payload are added. | ||||
* Clarification for handling multiple round trips key exchange | ||||
methods added. | ||||
* DoS concerns added into Security Considerations section. | ||||
* Explicitly allow scenario when additional key exchanges are | ||||
performed only after peers are authenticated. | ||||
draft-ietf-ipsecme-ikev2-multiple-ke-03 | draft-ietf-ipsecme-ikev2-multiple-ke-03 | |||
o More clarifications added. | * More clarifications added. | |||
o Figure illustrating initial exchange added. | * Figure illustrating initial exchange added. | |||
o Minor editorial changes. | * Minor editorial changes. | |||
draft-ietf-ipsecme-ikev2-multiple-ke-02 | draft-ietf-ipsecme-ikev2-multiple-ke-02 | |||
o Added a reference on the handling of KE payloads larger than 64KB. | * Added a reference on the handling of KE payloads larger than 64KB. | |||
draft-ietf-ipsecme-ikev2-multiple-ke-01 | draft-ietf-ipsecme-ikev2-multiple-ke-01 | |||
o References are updated. | * References are updated. | |||
draft-ietf-ipsecme-ikev2-multiple-ke-00 | draft-ietf-ipsecme-ikev2-multiple-ke-00 | |||
* Draft name changed as result of WG adoption and generalization of | ||||
o Draft name changed as result of WG adoption and generalization of | ||||
the approach. | the approach. | |||
o New exchange IKE_FOLLOWUP_KE is defined for additional key | * New exchange IKE_FOLLOWUP_KE is defined for additional key | |||
exchanges performed after CREATE_CHILD_SA. | exchanges performed after CREATE_CHILD_SA. | |||
o Nonces are removed from all additional key exchanges. | * Nonces are removed from all additional key exchanges. | |||
o Clarification that IKE_INTERMEDIATE must be negotiated is added. | * Clarification that IKE_INTERMEDIATE must be negotiated is added. | |||
draft-tjhai-ipsecme-hybrid-qske-ikev2-04 | draft-tjhai-ipsecme-hybrid-qske-ikev2-04 | |||
o Clarification about key derivation in case of multiple key | * Clarification about key derivation in case of multiple key | |||
exchanges in CREATE_CHILD_SA is added. | exchanges in CREATE_CHILD_SA is added. | |||
o Resolving rekey collisions in case of multiple key exchanges is | * Resolving rekey collisions in case of multiple key exchanges is | |||
clarified. | clarified. | |||
draft-tjhai-ipsecme-hybrid-qske-ikev2-03 | draft-tjhai-ipsecme-hybrid-qske-ikev2-03 | |||
o Using multiple key exchanges CREATE_CHILD_SA is defined. | * Using multiple key exchanges CREATE_CHILD_SA is defined. | |||
draft-tjhai-ipsecme-hybrid-qske-ikev2-02 | draft-tjhai-ipsecme-hybrid-qske-ikev2-02 | |||
o Use new transform types to negotiate additional key exchanges, | * Use new transform types to negotiate additional key exchanges, | |||
rather than using the KE payloads of IKE SA. | rather than using the KE payloads of IKE SA. | |||
draft-tjhai-ipsecme-hybrid-qske-ikev2-01 | draft-tjhai-ipsecme-hybrid-qske-ikev2-01 | |||
o Use IKE_INTERMEDIATE to perform multiple key exchanges in | * Use IKE_INTERMEDIATE to perform multiple key exchanges in | |||
succession. | succession. | |||
o Handle fragmentation by keeping the first key exchange (a standard | * Handle fragmentation by keeping the first key exchange (a standard | |||
IKE_SA_INIT with a few extra notifies) small, and encrypting the | IKE_SA_INIT with a few extra notifies) small, and encrypting the | |||
rest of the key exchanges. | rest of the key exchanges. | |||
o Simplify the negotiation of the 'extra' key exchanges. | * Simplify the negotiation of the 'extra' key exchanges. | |||
draft-tjhai-ipsecme-hybrid-qske-ikev2-00 | draft-tjhai-ipsecme-hybrid-qske-ikev2-00 | |||
o We added a feature to allow more than one post-quantum key | * We added a feature to allow more than one post-quantum key | |||
exchange algorithms to be negotiated and used to exchange a post- | exchange algorithms to be negotiated and used to exchange a post- | |||
quantum shared secret. | quantum shared secret. | |||
o Instead of relying on TCP encapsulation to deal with IP level | * Instead of relying on TCP encapsulation to deal with IP level | |||
fragmentation, we introduced a new key exchange payload that can | fragmentation, we introduced a new key exchange payload that can | |||
be sent as multiple fragments within IKE_SA_INIT message. | be sent as multiple fragments within IKE_SA_INIT message. | |||
1.4. Document Organization | 1.4. Document Organization | |||
The remainder of this document is organized as follows. Section 2 | The remainder of this document is organized as follows. Section 2 | |||
summarizes design criteria. Section 3 describes how multiple key | summarizes design criteria. Section 3 describes how multiple key | |||
exchanges are performed between two IKE peers and how keying | exchanges are performed between two IKE peers and how keying | |||
materials are derived for both SAs and Child SAs. A summary of | materials are derived for both SAs and Child SAs. A summary of | |||
alternative approaches that have been considered, but later | alternative approaches that have been considered, but later | |||
discarded, are described in Appendix A. Section 4 discusses IANA | discarded, are described in Appendix B. Section 4 discusses IANA | |||
considerations for the namespaces introduced in this document, and | considerations for the namespaces introduced in this document, and | |||
lastly Section 5 discusses security considerations. | lastly Section 5 discusses security considerations. | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
2. Design Criteria | 2. Design Criteria | |||
skipping to change at page 8, line 28 ¶ | skipping to change at page 9, line 22 ¶ | |||
12) Ability to use this method with multiple classical (EC)DH key | 12) Ability to use this method with multiple classical (EC)DH key | |||
exchanges. In some situations peers have no single mutually | exchanges. In some situations peers have no single mutually | |||
trusted key exchange algorithm (e.g., due to local policy | trusted key exchange algorithm (e.g., due to local policy | |||
restrictions). The ability to combine two (or more) key | restrictions). The ability to combine two (or more) key | |||
exchange methods in such a way that the resulting shared key | exchange methods in such a way that the resulting shared key | |||
depends on all of them allows peers to communicate in this | depends on all of them allows peers to communicate in this | |||
situation. | situation. | |||
3. Multiple Key Exchanges | 3. Multiple Key Exchanges | |||
3.1. Overall Design | 3.1. Design Overview | |||
This design assigns new Transform Type 4 identifiers to the various | Most post-quantum key agreement algorithms are relatively new, and | |||
post-quantum key exchanges (which will be defined later). We | thus are not fully trusted. There are also many proposed algorithms, | |||
specifically do not make a distinction between classical (DH and | with different trade-offs and relying on different hard problems. | |||
ECDH) and post-quantum key exchanges, nor post-quantum algorithms | The concern is that some of these hard problems may turn out to be | |||
which are true key exchanges versus post-quantum algorithms that act | easier to solve than anticipated and thus the key agreement algorithm | |||
as key transport mechanisms; all are treated equivalently by the | may not be as secure as expected. A hybrid solution, when multiple | |||
protocol. To be more specific, this document renames Transform Type | key exchanges are performed and the calculated shared key depends on | |||
4 from "Diffie-Hellman Group (D-H)" to "Key Exchange Method (KE)" and | all of them, allows us to deal with this uncertainty by combining a | |||
renames a field in the Key Exchange Payload from "Diffie-Hellman | classical key exchange with a post-quantum one, as well as leaving | |||
Group Num" to "Key Exchange Method". The corresponding IANA registry | open the possibility of multiple post-quantum key exchanges. | |||
is also renamed from "Diffie-Hellman Group Transform IDs" to "Key | ||||
Exchange Method Transform IDs". | ||||
In order to support IKE fragmentation for additional key exchanges | In order to be able to use IKE fragmentation [RFC7383] for those key | |||
that may have long public keys, the proposed framework utilizes the | exchanges that may have long public keys, the proposed framework | |||
IKE_INTERMEDIATE exchange defined in | utilizes the IKE_INTERMEDIATE exchange defined in | |||
[I-D.ietf-ipsecme-ikev2-intermediate]. | [I-D.ietf-ipsecme-ikev2-intermediate]. The initial IKE_INIT messages | |||
do not have any inherent fragmentation support within IKE; however | ||||
that can include a relatively short KE payload. The additional key | ||||
exchanges are performed using IKE_INTERMEDIATE messages; because | ||||
these messages are encrypted, the standard IKE fragmentation | ||||
mechanism is available. | ||||
In order to minimize communication overhead, only the key shares that | In order to minimize communication overhead, only the key shares that | |||
are agreed to be used are actually exchanged. In order to achieve | are agreed to be used are actually exchanged. To negotiate | |||
this several new Transform Types are defined, each sharing allowed | additional key exchanges seven new Transform Types are defined. | |||
Transform IDs with Transform Type 4. The IKE_SA_INIT message | These transforms share allowed Transform IDs with Transform Type 4. | |||
includes one or more newly defined SA transforms that lists the extra | ||||
key exchange policy required by the initiator; the responder selects | ||||
a single transform of each type, and returns them in the response | ||||
IKE_SA_INIT message. Then, provided that additional key exchanges | ||||
are negotiated, the initiator and the responder perform one or more | ||||
IKE_INTERMEDIATE exchanges; every such exchange includes a KE payload | ||||
for the next method from the negotiated list. | ||||
Here is an overview of the initial exchanges: | We assume that new Transform Type 4 identifiers will be assigned | |||
later to the various post-quantum key exchanges. We specifically do | ||||
not make a distinction between classical (DH and ECDH) and post- | ||||
quantum key exchanges, nor post-quantum algorithms which are true key | ||||
exchanges versus post-quantum algorithms that act as key transport | ||||
mechanisms; all are treated equivalently by the protocol. To be more | ||||
specific, this document renames Transform Type 4 from "Diffie-Hellman | ||||
Group (D-H)" to "Key Exchange Method (KE)" and renames a field in the | ||||
Key Exchange Payload from "Diffie-Hellman Group Num" to "Key Exchange | ||||
Method". The corresponding IANA registry is also renamed from | ||||
"Diffie-Hellman Group Transform IDs" to "Key Exchange Method | ||||
Transform IDs". | ||||
The fact, that newly defined transforms share the same registry for | ||||
possible Transform IDs with Transform Type 4, allows additional key | ||||
exchanges to be of any type - either post-quantum or classical (EC)DH | ||||
one. This approach allows any combination of defined key exchange | ||||
methods to take place. This also allows performing a single post- | ||||
quantum key exchange in the IKE_SA_INIT without additional key | ||||
exchanges, provided that IP fragmentation is not an issue and that | ||||
hybrid key exchange is not needed. | ||||
The SA payload in the IKE_SA_INIT message includes one or more newly | ||||
defined transforms which represent the extra key exchange policy | ||||
required by the initiator. The responder follows the usual IKEv2 | ||||
negotiation rules: it selects a single transform of each type, and | ||||
returns all of them in the IKE_SA_INIT response message. | ||||
Then, provided that additional key exchanges are negotiated, the | ||||
initiator and the responder perform one or more IKE_INTERMEDIATE | ||||
exchanges. Then the IKE_AUTH exchange authenticates peers and | ||||
completes IKE SA establishment. | ||||
Initiator Responder | Initiator Responder | |||
--------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
<-- IKE_SA_INIT (additional key exchanges negotiation) --> | <-- IKE_SA_INIT (additional key exchanges negotiation) --> | |||
<-- {IKE_INTERMEDIATE (additional key exchange)} --> | <-- {IKE_INTERMEDIATE (additional key exchange)} --> | |||
... | ... | |||
<-- {IKE_INTERMEDIATE (additional key exchange)} --> | <-- {IKE_INTERMEDIATE (additional key exchange)} --> | |||
<-- {IKE_AUTH} --> | <-- {IKE_AUTH} --> | |||
Note, that this document assumes, that each key exchange method | ||||
requires one round trip and consumes exactly one IKE_INTERMEDIATE | ||||
exchange. This assumption is valid for all classic key exchange | ||||
methods defined so far and for all post-quantum methods currently | ||||
known. For hypothetical future key exchange methods requiring | ||||
multiple round trips to complete, a separate document should define | ||||
how such methods are splitted into several IKE_INTERMEDIATE | ||||
exchanges. | ||||
The additional key exchanges may use algorithms that are currently | 3.2. Protocol Details | |||
considered to be resistant to quantum computer attacks. These | ||||
algorithms are collectively referred to as post-quantum algorithms in | ||||
this document. However, it is also possible to use classical (EC)DH | ||||
primitives for non post-quantum requirements. | ||||
Most post-quantum key agreement algorithms are relatively new, and | ||||
thus are not fully trusted. There are also many proposed algorithms, | ||||
with different trade-offs and relying on different hard problems. | ||||
The concern is that some of these hard problems may turn out to be | ||||
easier to solve than anticipated and thus the key agreement algorithm | ||||
may not be as secure as expected. A hybrid solution allows us to | ||||
deal with this uncertainty by combining a classical key exchange with | ||||
a post-quantum one, as well as leaving open the possibility of | ||||
multiple post-quantum key exchanges. | ||||
The method that we use to perform additional key exchanges also | ||||
addresses the fragmentation issue. The initial IKE_INIT messages do | ||||
not have any inherent fragmentation support within IKE; however that | ||||
can include a relatively short KE payload. The rest of the KE | ||||
payloads are transferred within IKE_INTERMEDIATE messages; because | ||||
these messages are encrypted, the standard IKE fragmentation solution | ||||
[RFC7383] is available. | ||||
The fact, that all Additional Key Exchange Transform Types share the | ||||
same registry with Transform Type 4, allows additional key exchanges | ||||
to be of any type - either post-quantum ones or classical (EC)DH | ||||
ones. This approach allows any combination of defined key exchange | ||||
methods to take place. This also allows performing a single post- | ||||
quantum key exchange in the IKE_SA_INIT without additional key | ||||
exchanges, provided that IP fragmentation is not an issue and that | ||||
hybrid key exchange is not needed. | ||||
3.2. Overall Protocol | ||||
In the simplest case, the initiator is happy with a single key | In the simplest case, the initiator is happy with a single key | |||
exchange (and has no interest in supporting multiple), and it is not | exchange (and has no interest in supporting multiple), and it is not | |||
concerned with possible fragmentation of the IKE_SA_INIT messages | concerned with possible fragmentation of the IKE_SA_INIT messages | |||
(either because the key exchange it selects is small enough not to | (either because the key exchange it selects is small enough not to | |||
fragment, or the initiator is confident that fragmentation will be | fragment, or the initiator is confident that fragmentation will be | |||
handled either by IP fragmentation, or transport via TCP). | handled either by IP fragmentation, or transport via TCP). | |||
In this case, the initiator performs the IKE_SA_INIT as usual, | In this case, the initiator performs the IKE_SA_INIT as usual, | |||
inserting a preferred key exchange (which is possibly a post-quantum | inserting a preferred key exchange (which is possibly a post-quantum | |||
algorithm) as the listed Transform Type 4, and including the | algorithm) as the listed Transform Type 4, and including the | |||
initiator KE payload. If the responder accepts the policy, it | initiator KE payload. If the responder accepts the policy, it | |||
responds with an IKE_SA_INIT response, and IKE continues as usual. | responds with an IKE_SA_INIT response, and IKE continues as usual. | |||
If the initiator desires to negotiate multiple key exchanges, then | If the initiator desires to negotiate multiple key exchanges, then | |||
the initiator uses the protocol listed below. | the initiator uses the protocol listed below. | |||
3.2.1. IKE_SA_INIT Round: Negotiation | 3.2.1. IKE_SA_INIT Round: Negotiation | |||
Multiple key exchanges are negotiated using the standard IKEv2 | Multiple key exchanges are negotiated using the standard IKEv2 | |||
mechanism, via SA payload. For this purpose several new transform | mechanism, via SA payload. For this purpose seven new transform | |||
types, namely Additional Key Exchange 1, Additional Key Exchange 2, | types, namely Additional Key Exchange 1 (<TBA by IANA>), Additional | |||
Additional Key Exchange 3, etc., are defined. They are collectively | Key Exchange 2 (<TBA by IANA>), Additional Key Exchange 3 (<TBA by | |||
called Additional Key Exchanges and have slightly different semantics | IANA>), Additional Key Exchange 4 (<TBA by IANA>), Additional Key | |||
than existing IKEv2 transform types. They are interpreted as | Exchange 5 (<TBA by IANA>), Additional Key Exchange 6 (<TBA by IANA>) | |||
additional key exchanges that peers agreed to perform in a series of | and Additional Key Exchange 7 (<TBA by IANA>) are defined. They are | |||
IKE_INTERMEDIATE exchanges. The allowed transform IDs for these | collectively called Additional Key Exchange transforms in this | |||
transform types are the same as IDs for the Transform Type 4, so they | document and have slightly different semantics than existing IKEv2 | |||
all share a single IANA registry for transform IDs. | transform types. They are interpreted as an indication of additional | |||
key exchanges methods that peers agreed to perform in a series of | ||||
IKE_INTERMEDIATE exchanges following the IKE_SA_INIT exchange. The | ||||
allowed transform IDs for these transform types are the same as IDs | ||||
for the Transform Type 4, so they all share a single IANA registry | ||||
for transform IDs. | ||||
Key exchange methods negotiated via Transform Type 4 MUST always take | Key exchange method negotiated via Transform Type 4 always takes | |||
place in the IKE_SA_INIT exchange. Additional key exchanges | place in the IKE_SA_INIT exchange, as defined in [RFC7296]. | |||
negotiated via newly defined transforms MUST take place in a series | Additional key exchanges negotiated via newly defined transforms MUST | |||
of IKE_INTERMEDIATE exchanges, in an order of the values of their | take place in a series of IKE_INTERMEDIATE exchanges following the | |||
IKE_SA_INIT exchange, performed in an order of the values of their | ||||
transform types, so that key exchange negotiated using Transform Type | transform types, so that key exchange negotiated using Transform Type | |||
n always precedes that of Transform Type n + 1. Each | n always precedes that of Transform Type n + 1. Each additional key | |||
IKE_INTERMEDIATE exchange MUST bear exactly one key exchange method. | exchange method MUST be fully completed before the next one is | |||
started. | ||||
Note that with this semantics, Additional Key Exchanges transforms | Note that with this semantics, Additional Key Exchanges transforms | |||
are not associated with any particular type of key exchange and do | are not associated with any particular type of key exchange and do | |||
not have any specific per transform type transform IDs IANA registry. | not have any specific per transform type transform IDs IANA registry. | |||
Instead they all share a single registry for transform IDs - "Key | Instead they all share a single registry for transform IDs - "Key | |||
Exchange Method Transform IDs", as well as Transform Type 4. All new | Exchange Method Transform IDs", as well as Transform Type 4. All new | |||
key exchange algorithms (both classical or post-quantum) should be | key exchange algorithms (both classical or post-quantum) should be | |||
added to this registry. This approach gives peers flexibility in | added to this registry. This approach gives peers flexibility in | |||
defining the ways they want to combine different key exchange | defining the ways they want to combine different key exchange | |||
methods. | methods. | |||
When forming a proposal the initiator adds transforms for the | When forming a proposal the initiator adds transforms for the | |||
IKE_SA_INIT exchange using Transform Type 4. In most cases they will | IKE_SA_INIT exchange using Transform Type 4. In most cases they will | |||
contain classical key exchange methods (DH or ECDH), however it is | contain classical key exchange methods (DH or ECDH), however it is | |||
skipping to change at page 11, line 21 ¶ | skipping to change at page 12, line 30 ¶ | |||
When forming a proposal the initiator adds transforms for the | When forming a proposal the initiator adds transforms for the | |||
IKE_SA_INIT exchange using Transform Type 4. In most cases they will | IKE_SA_INIT exchange using Transform Type 4. In most cases they will | |||
contain classical key exchange methods (DH or ECDH), however it is | contain classical key exchange methods (DH or ECDH), however it is | |||
not a requirement. Additional key exchange methods are proposed | not a requirement. Additional key exchange methods are proposed | |||
using Additional Key Exchanges transform types. All these transform | using Additional Key Exchanges transform types. All these transform | |||
types are optional, the initiator is free to select any of them for | types are optional, the initiator is free to select any of them for | |||
proposing additional key exchange methods. Consequently, if none of | proposing additional key exchange methods. Consequently, if none of | |||
Additional Key Exchange transforms are included in the proposal, then | Additional Key Exchange transforms are included in the proposal, then | |||
this proposal indicates performing standard IKEv2, as defined in | this proposal indicates performing standard IKEv2, as defined in | |||
[RFC7296]. If the initiator includes any transform of type n (where | [RFC7296]. If the initiator includes any Additional Key Exchanges | |||
n is among Additional Key Exchanges) in the proposal, the responder | transform in the proposal, the responder MUST select one of the | |||
MUST select one of the algorithms proposed using this type. A | algorithms proposed using this type. A transform ID NONE MAY be | |||
transform ID NONE may be added to those transform types which contain | added to those transform types which contain key exchange methods | |||
key exchange methods that the initiator believes are optional. | that the initiator believes are optional according to its local | |||
policy. | ||||
The responder performs negotiation using standard IKEv2 procedure | ||||
described in Section 3.3 of [RFC7296]. However, for the Additional | ||||
Key Exchange types the responder's choice MUST NOT contain equal | ||||
algorithms, except for transform ID of NONE. An algorithm is | ||||
represented as a transform, in some cases the transform could include | ||||
a set of associated attributes that define details of the algorithm. | ||||
In this case two ransforms can be the same, but the attributes must | ||||
be different. Additionally, the order of the attributes does not | ||||
affect the equality of the algorithm, so two transforms | ||||
(ID=alg1,ATTR1=attr1,ATTR2=attr2) and | ||||
(ID=alg1,ATTR2=attr2,ATTR1=attr1) define the same algorithm. | ||||
If the responder selected NONE for some Additional Key Exchange types | ||||
(provided they were proposed by the initiator), then the | ||||
corresponding IKE_INTERMEDIATE exchanges should not take place. The | ||||
IKE_INTERMEDIATE exchanges MUST only be performed for Additional Key | ||||
Exchange types containing non-NONE responders choices. It means that | ||||
if the initiator includes NONE in all Additional Key Exchange | ||||
transforms and the responder selects this value for all of them, then | ||||
no IKE_INTERMEDIATE exchanges will take place between the peers. | ||||
perform additional key exchanges will take place (note that they | ||||
still may take place for other purposes). | ||||
Below is an example of the SA payload in the initiator's IKE_SA_INIT | ||||
request message. Here we use an abbreviation AKE1, AKE 2 etc. to | ||||
denote Additional Key Exchange 1, Additional Key Exchange 2 etc. | ||||
transforms, that this document defines, and an abbreviation KE for | ||||
the Key Exchange transform, that this document renames from the | ||||
Diffie-Hellman Group transform. We also use not yet defined | ||||
Transform IDs PQ_KEM_1, PQ_KEM_2 and PQ_KEM_3 to denote some of | ||||
popular post-quantum key exchange methods. | ||||
SA Payload | ||||
| | ||||
+--- Proposal #1 ( Proto ID = IKE(1), SPI size = 8, | ||||
| 9 transforms, SPI = 0x35a1d6f22564f89d ) | ||||
| | ||||
+-- Transform ENCR ( ID = ENCR_AES_GCM_16 ) | ||||
| +-- Attribute ( Key Length = 256 ) | ||||
| | ||||
+-- Transform KE ( ID = 4096-bit MODP Group ) | ||||
| | ||||
+-- Transform PRF ( ID = PRF_HMAC_SHA2_256 ) | ||||
| | ||||
+-- Transform AKE2 ( ID = PQ_KEM_1 ) | ||||
| | ||||
+-- Transform AKE2 ( ID = PQ_KEM_2 ) | ||||
| | ||||
+-- Transform AKE3 ( ID = PQ_KEM_1 ) | ||||
| | ||||
+-- Transform AKE3 ( ID = PQ_KEM_2 ) | ||||
| | ||||
+-- Transform AKE5 ( ID = PQ_KEM_3 ) | ||||
| | ||||
+-- Transform AKE5 ( ID = NONE ) | ||||
In this example the initiator proposes to perform initial key | ||||
exchange using 4096-bit MODP group following by two mandatory | ||||
additional key exchanges using PQ_KEM_1 and PQ_KEM_2 methods in any | ||||
order, following by additional key exchange using PQ_KEM_3 method | ||||
that may be omitted. | ||||
The responder might return the following SA payload, indicating that | ||||
it agrees to perform two additional key exchanges PQ_KEM_2 followed | ||||
by PQ_KEM_1 and doesn't want to perform PQ_KEM_3 additionally. | ||||
SA Payload | ||||
| | ||||
+--- Proposal #1 ( Proto ID = IKE(1), SPI size = 8, | ||||
| 6 transforms, SPI = 0x8df52b331a196e7b ) | ||||
| | ||||
+-- Transform ENCR ( ID = ENCR_AES_GCM_16 ) | ||||
| +-- Attribute ( Key Length = 256 ) | ||||
| | ||||
+-- Transform KE ( ID = 4096-bit MODP Group ) | ||||
| | ||||
+-- Transform PRF ( ID = PRF_HMAC_SHA2_256 ) | ||||
| | ||||
+-- Transform AKE2 ( ID = PQ_KEM_2 ) | ||||
| | ||||
+-- Transform AKE3 ( ID = PQ_KEM_1 ) | ||||
| | ||||
+-- Transform AKE5 ( ID = NONE ) | ||||
If the initiator includes any Additional Key Exchanges transform | If the initiator includes any Additional Key Exchanges transform | |||
types into SA payload, it MUST also negotiate using IKE_INTERMEDIATE | types into SA payload in the IKE_SA_INIT exchange request message, it | |||
exchange as described in [I-D.ietf-ipsecme-ikev2-intermediate], by | MUST also negotiate using IKE_INTERMEDIATE exchange as described in | |||
including INTERMEDIATE_EXCHANGE_SUPPORTED notification in the | [I-D.ietf-ipsecme-ikev2-intermediate], by including | |||
IKE_SA_INIT request message. If the responder agrees to use | INTERMEDIATE_EXCHANGE_SUPPORTED notification in the same message. If | |||
additional key exchanges, it MUST also return this notification, thus | the responder agrees to use additional key exchanges while | |||
confirming that IKE_INTERMEDIATE exchange is supported and will be | establishing initial IKE SA, it MUST also return this notification in | |||
used for transferring additional key exchange data. The presence of | the IKE_SA_INIT response message, thus confirming that | |||
Additional Key Exchanges transform types in SA payload without | IKE_INTERMEDIATE exchange is supported and will be used for | |||
negotiation of using IKE_INTERMEDIATE exchange MUST be treated as | transferring additional key exchange data. If the IKE_INTERMEDIATE | |||
protocol error by both initiator and responder. | exchange is not negotiated, then the peers MUST treat any Additional | |||
Key Exchange transforms in the IKE_SA_INIT exchange messages as | ||||
unknown transform types and skip the proposals they appear in. If no | ||||
other proposals are present in the SA payload, the peers will proceed | ||||
as when no proposal is chosen (i.e. the responder will send | ||||
NO_PROPOSAL_CHOSEN notification). | ||||
Initiator Responder | Initiator Responder | |||
--------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
HDR, SAi1(.. AKE*...), KEi1, Ni, | HDR, SAi1(.. AKE*...), KEi1, Ni, | |||
N(INTERMEDIATE_EXCHANGE_SUPPORTED) ---> | N(INTERMEDIATE_EXCHANGE_SUPPORTED) ---> | |||
HDR, SAr1(.. AKE*...), KEr1, Nr, | HDR, SAr1(.. AKE*...), KEr1, Nr, | |||
[CERTREQ], | [CERTREQ], | |||
<--- N(INTERMEDIATE_EXCHANGE_SUPPORTED) | <--- N(INTERMEDIATE_EXCHANGE_SUPPORTED) | |||
The responder performs negotiation using standard IKEv2 procedure | ||||
described in Section 3.3 of [RFC7296]. However, for the Additional | ||||
Key Exchange types the responder's choice MUST NOT contain equal | ||||
transform IDs (apart from NONE), and the ID selected for Transform | ||||
Type 4 MUST NOT appear in any of Additional Key Exchange transforms. | ||||
In other words, all selected key exchange methods must be different. | ||||
If the responder selected NONE for some Additional Key Exchange types | ||||
(provided they were proposed by the initiator), then the | ||||
corresponding IKE_INTERMEDIATE exchanges should not take place. The | ||||
IKE_INTERMEDIATE exchanges MUST only be performed for Additional Key | ||||
Exchange types containing non-NONE responders choices. | ||||
3.2.2. IKE_INTERMEDIATE Round: Additional Key Exchanges | 3.2.2. IKE_INTERMEDIATE Round: Additional Key Exchanges | |||
For each extra key exchange agreed to in the IKE_SA_INIT exchange, | For each additional key exchange agreed to in the IKE_SA_INIT | |||
the initiator and the responder perform one IKE_INTERMEDIATE | exchange, the initiator and the responder perform IKE_INTERMEDIATE | |||
exchange, as described in [I-D.ietf-ipsecme-ikev2-intermediate]. | exchange, as described in [I-D.ietf-ipsecme-ikev2-intermediate]. | |||
These exchanges are as follows: | ||||
Initiator Responder | Initiator Responder | |||
--------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
HDR, SK {KEi(n)} --> | HDR, SK {KEi(n)} --> | |||
<-- HDR, SK {KEr(n)} | <-- HDR, SK {KEr(n)} | |||
The initiator sends key exchange data in the KEi(n) payload. This | The initiator sends key exchange data in the KEi(n) payload. This | |||
packet is protected with the current SK_ei/SK_ai keys. | packet is protected with the current SK_ei/SK_ai keys. | |||
On receiving this, the responder sends back key exchange payload | On receiving this, the responder sends back key exchange payload | |||
KEr(n); again, this packet is protected with the current SK_er/SK_ar | KEr(n); again, this packet is protected with the current SK_er/SK_ar | |||
keys. | keys. | |||
The former "Diffie-Hellman Group Num" (now called "Key Exchange | The former "Diffie-Hellman Group Num" (now called "Key Exchange | |||
Method") field in the KEi(n) and KEr(n) payloads MUST match the n-th | Method") field in the KEi(n) and KEr(n) payloads MUST match the n-th | |||
negotiated additional key exchange. Note that the negotiated | negotiated additional key exchange. | |||
transform types (the encryption type, integrity type, prf type) are | ||||
not modified. | ||||
Once this exchange is done, both sides compute an updated keying | Once this exchange is done, both sides compute an updated keying | |||
material: | material: | |||
SKEYSEED(n) = prf(SK_d(n-1), KE(n) | Ni | Nr) | SKEYSEED(n) = prf(SK_d(n-1), SK(n) | Ni | Nr) | |||
where KE(n) is the resulting shared secret of this key exchange, Ni | where SK(n) is the resulting shared secret of this key exchange, Ni | |||
and Nr are nonces from the IKE_SA_INIT exchange and SK_d(n-1) is the | and Nr are nonces from the IKE_SA_INIT exchange and SK_d(n-1) is the | |||
last generated SK_d, (derived from the previous IKE_INTERMEDIATE | last generated SK_d, (derived from the previous IKE_INTERMEDIATE | |||
exchange, or the IKE_SA_INIT if there have not already been any | exchange, or the IKE_SA_INIT if there have not already been any | |||
IKE_INTERMEDIATE exchanges). Then, SK_d, SK_ai, SK_ar, SK_ei, SK_er, | IKE_INTERMEDIATE exchanges). Then, SK_d, SK_ai, SK_ar, SK_ei, SK_er, | |||
SK_pi, SK_pr are updated as: | SK_pi, SK_pr are updated as: | |||
{SK_d(n) | SK_ai(n) | SK_ar(n) | SK_ei(n) | SK_er(n) | SK_pi(n) | | {SK_d(n) | SK_ai(n) | SK_ar(n) | SK_ei(n) | SK_er(n) | SK_pi(n) | | |||
SK_pr(n)} = prf+ (SKEYSEED(n), Ni | Nr | SPIi | SPIr) | SK_pr(n)} = prf+ (SKEYSEED(n), Ni | Nr | SPIi | SPIr) | |||
Both the initiator and the responder use these updated key values in | Both the initiator and the responder use these updated key values in | |||
skipping to change at page 13, line 23 ¶ | skipping to change at page 16, line 12 ¶ | |||
octets are modified as described in | octets are modified as described in | |||
[I-D.ietf-ipsecme-ikev2-intermediate]. | [I-D.ietf-ipsecme-ikev2-intermediate]. | |||
3.2.4. CREATE_CHILD_SA Exchange | 3.2.4. CREATE_CHILD_SA Exchange | |||
The CREATE_CHILD_SA exchange is used in IKEv2 for the purposes of | The CREATE_CHILD_SA exchange is used in IKEv2 for the purposes of | |||
creating additional Child SAs, rekeying them and rekeying IKE SA | creating additional Child SAs, rekeying them and rekeying IKE SA | |||
itself. When creating or rekeying Child SAs, the peers may | itself. When creating or rekeying Child SAs, the peers may | |||
optionally perform a Diffie-Hellman key exchange to add a fresh | optionally perform a Diffie-Hellman key exchange to add a fresh | |||
entropy into the session keys. In case of IKE SA rekey, the key | entropy into the session keys. In case of IKE SA rekey, the key | |||
exchange is mandatory. | exchange is mandatory. Peers supporting this specification may want | |||
to use multiple key exchanges in these situations. | ||||
If the IKE SA was created using multiple key exchange methods, the | Using multiple key exchanges with CREATE_CHILD_SA exchange is | |||
peers may want to continue using multiple key exchanges in the | negotiated similarly as in initial exchange, see Section 3.2.1. If | |||
CREATE_CHILD_SA exchange too. If the initiator includes any | the initiator includes any Additional Key Exchanges transform in the | |||
Additional Key Exchanges transform in the SA payload (along with | SA payload (along with Transform Type 4) and the responder agrees to | |||
Transform Type 4) and the responder agrees to perform additional key | perform additional key exchanges, then the additional key exchanges | |||
exchanges, then the additional key exchanges are performed in a | are performed in a series of new IKE_FOLLOWUP_KE exchanges that | |||
series of new IKE_FOLLOWUP_KE exchanges that follows the | follows the CREATE_CHILD_SA exchange. The IKE_FOLLOWUP_KE exchange | |||
CREATE_CHILD_SA exchange. The IKE_FOLLOWUP_KE exchange is introduced | is introduced as a dedicated exchange for transferring data of | |||
as a dedicated exchange for transferring data of additional key | additional key exchanges following the key exchange performed in the | |||
exchanges following the key exchange performed in the | ||||
CREATE_CHILD_SA. Its Exchange Type is <TBA by IANA>. | CREATE_CHILD_SA. Its Exchange Type is <TBA by IANA>. | |||
Additional key exchanges are performed in an order of the values of | Key exchange negotiated via Transform Type 4 always takes place in | |||
their transform types, so that key exchange negotiated using | the CREATE_CHILD_SA exchange, as per IKEv2 specification. Additional | |||
Transform Type n always precedes key exchange negotiated using | key exchanges are performed in an order of the values of their | |||
Transform Type n + 1. Each IKE_FOLLOWUP_KE exchange MUST bear | transform types, so that key exchange negotiated using Transform Type | |||
exactly one key exchange method. Key exchange negotiated via | n always precedes key exchange negotiated using Transform Type n + 1. | |||
Transform Type 4 always takes place in the CREATE_CHILD_SA exchange, | Each additional key exchange method MUST be fully completed before | |||
as per IKEv2 specification. | the next one is started. Note, that this document assumes, that each | |||
key exchange method consumes exactly one IKE_FOLLOWUP_KE exchange. | ||||
For the methods requiring multiple round trips, a separate document | ||||
should define how such methods are splitted into several | ||||
IKE_FOLLOWUP_KE exchanges. | ||||
Since after IKE SA is created the window size may be greater than one | Since after IKE SA is created the window size may be greater than one | |||
and multiple concurrent exchanges may be in progress, it is essential | and multiple concurrent exchanges may be in progress, it is essential | |||
to link the IKE_FOLLOWUP_KE exchanges together and with the | to link the IKE_FOLLOWUP_KE exchanges together and with the | |||
corresponding CREATE_CHILD_SA exchange. A new status type | corresponding CREATE_CHILD_SA exchange. A new status type | |||
notification ADDITIONAL_KEY_EXCHANGE is used for this purpose. Its | notification ADDITIONAL_KEY_EXCHANGE is used for this purpose. Its | |||
Notify Message Type is <TBA by IANA>, Protocol ID and SPI Size are | Notify Message Type is <TBA by IANA>, Protocol ID and SPI Size are | |||
both set to 0. The data associated with this notification is a blob | both set to 0. The data associated with this notification is a blob | |||
meaningful only to the responder, so that the responder can correctly | meaningful only to the responder, so that the responder can correctly | |||
link successive exchanges. For the initiator the content of this | link successive exchanges. For the initiator the content of this | |||
notification is an opaque blob. | notification is an opaque blob. | |||
The responder MUST include this notification in a CREATE_CHILD_SA or | The responder MUST include this notification in a CREATE_CHILD_SA or | |||
IKE_FOLLOWUP_KE response message in case the next IKE_FOLLOWUP_KE | IKE_FOLLOWUP_KE response message in case the next IKE_FOLLOWUP_KE | |||
exchange is expected, filling it with some data that would allow | exchange is expected, filling it with some data that would allow | |||
linking current exchange to the next one. The initiator MUST send | linking current exchange to the next one. The initiator MUST send | |||
back the content of the received notification intact in the request | back this notification intact in the request message of the next | |||
message of the next exchange. | IKE_FOLLOWUP_KE exchange. | |||
Below is an example of three additional key exchanges. | Below is an example of CREATE_CHILD_SA exchange followed by three | |||
additional key exchanges. | ||||
Initiator Responder | Initiator Responder | |||
--------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
HDR(CREATE_CHILD_SA), SK {SA, Ni, KEi} --> | HDR(CREATE_CHILD_SA), SK {SA, Ni, KEi} --> | |||
<-- HDR(CREATE_CHILD_SA), SK {SA, Nr, KEr, | <-- HDR(CREATE_CHILD_SA), SK {SA, Nr, KEr, | |||
N(ADDITIONAL_KEY_EXCHANGE)(link1)} | N(ADDITIONAL_KEY_EXCHANGE)(link1)} | |||
HDR(IKE_FOLLOWUP_KE), SK {KEi(1), | HDR(IKE_FOLLOWUP_KE), SK {KEi(1), | |||
N(ADDITIONAL_KEY_EXCHANGE)(link1)} --> | N(ADDITIONAL_KEY_EXCHANGE)(link1)} --> | |||
<-- HDR(IKE_FOLLOWUP_KE), SK {KEr(1), | <-- HDR(IKE_FOLLOWUP_KE), SK {KEr(1), | |||
skipping to change at page 14, line 41 ¶ | skipping to change at page 17, line 40 ¶ | |||
HDR(IKE_FOLLOWUP_KE), SK {KEi(3), | HDR(IKE_FOLLOWUP_KE), SK {KEi(3), | |||
N(ADDITIONAL_KEY_EXCHANGE)(link3)} --> | N(ADDITIONAL_KEY_EXCHANGE)(link3)} --> | |||
<-- HDR(IKE_FOLLOWUP_KE), SK {KEr(3)} | <-- HDR(IKE_FOLLOWUP_KE), SK {KEr(3)} | |||
The former "Diffie-Hellman Group Num" (now called "Key Exchange | The former "Diffie-Hellman Group Num" (now called "Key Exchange | |||
Method") field in the KEi(n) and KEr(n) payloads MUST match the n-th | Method") field in the KEi(n) and KEr(n) payloads MUST match the n-th | |||
negotiated additional key exchange. | negotiated additional key exchange. | |||
It is possible that due to some unexpected events (e.g. reboot) the | It is possible that due to some unexpected events (e.g. reboot) the | |||
initiator could forget that it is in the process of performing | initiator may lose its state and forget that it is in the process of | |||
additional key exchanges and never starts next IKE_FOLLOWUP_KE | performing additional key exchanges and thus never start the | |||
exchanges. The responder MUST handle this situation gracefully and | remaining IKE_FOLLOWUP_KE exchanges. The responder MUST handle this | |||
delete the associated state if it does not receive the next expected | situation gracefully and delete the associated state if it does not | |||
IKE_FOLLOWUP_KE request after some reasonable period of time. | receive the next expected IKE_FOLLOWUP_KE request after some | |||
reasonable period of time. | ||||
If responder receives IKE_FOLLOWUP_KE request containing | If responder receives IKE_FOLLOWUP_KE request containing | |||
ADDITIONAL_KEY_EXCHANGE notification and the content of this notify | ADDITIONAL_KEY_EXCHANGE notification and the content of this notify | |||
does not correspond to any active key exchange state the responder | does not correspond to any active key exchange state the responder | |||
has, it MUST send back a new error type notification STATE_NOT_FOUND. | has, it MUST send back a new error type notification STATE_NOT_FOUND. | |||
This is a non-fatal error notification, its Notify Message Type is | This is a non-fatal error notification, its Notify Message Type is | |||
<TBA by IANA>, Protocol ID and SPI Size are both set to 0 and the | <TBA by IANA>, Protocol ID and SPI Size are both set to 0 and the | |||
data is empty. If the initiator receives this notification in | data is empty. If the initiator receives this notification in | |||
response to IKE_FOLLOWUP_KE exchange performing additional key | response to IKE_FOLLOWUP_KE exchange performing additional key | |||
exchange, it MUST cancel this exchange and MUST treat the whole | exchange, it MUST cancel this exchange and MUST treat the whole | |||
skipping to change at page 15, line 33 ¶ | skipping to change at page 18, line 32 ¶ | |||
situation. In a nutshell IKEv2 follows the rule that if in case of | situation. In a nutshell IKEv2 follows the rule that if in case of | |||
simultaneous rekeying two identical new IKE SAs (or two pairs of | simultaneous rekeying two identical new IKE SAs (or two pairs of | |||
Child SAs) are created, then one of them should be deleted. Which | Child SAs) are created, then one of them should be deleted. Which | |||
one is to be deleted is determined by comparing the values of four | one is to be deleted is determined by comparing the values of four | |||
nonces, that were used in the colliding CREATE_CHILD_SA exchanges - | nonces, that were used in the colliding CREATE_CHILD_SA exchanges - | |||
the IKE SA (or pair of Child SAs) that was created by the exchange in | the IKE SA (or pair of Child SAs) that was created by the exchange in | |||
which the smallest nonce was used should be deleted by the initiator | which the smallest nonce was used should be deleted by the initiator | |||
of this exchange. | of this exchange. | |||
With multiple key exchanges the SAs are not yet created when the | With multiple key exchanges the SAs are not yet created when the | |||
CRETE_CHILD_SA is completed, they would be created only after the | CREATE_CHILD_SA is completed, they would be created only after the | |||
series of IKE_FOLLOWUP_KE exchanges is finished. For this reason if | series of IKE_FOLLOWUP_KE exchanges is finished. For this reason if | |||
additional key exchanges were negotiated in the CREATE_CHILD_SA | additional key exchanges were negotiated in the CREATE_CHILD_SA | |||
initiated by the losing side, there is nothing to delete and this | initiated by the losing side, there is nothing to delete and this | |||
side just stops the rekeying process - this side MUST not initiate | side just stops the rekeying process - this side MUST NOT initiate | |||
IKE_FOLLOWUP_KE exchange with next key exchange. | IKE_FOLLOWUP_KE exchange with next key exchange. | |||
In most cases, rekey collisions are resolved in the CREATE_CHILD_SA | In most cases, rekey collisions are resolved in the CREATE_CHILD_SA | |||
exchange. However, a situation may occur when due to packet loss, | exchange. However, a situation may occur when due to packet loss, | |||
one of the peers receives the CREATE_CHILD_SA message requesting | one of the peers receives the CREATE_CHILD_SA message requesting | |||
rekey of SA that is already being rekeyed by this peer (i.e. the | rekey of SA that is already being rekeyed by this peer (i.e. the | |||
CREATE_CHILD_SA exchange initiated by this peer has been already | CREATE_CHILD_SA exchange initiated by this peer has been already | |||
completed and the series of IKE_FOLLOWUP_KE exchanges is in | completed and the series of IKE_FOLLOWUP_KE exchanges is in | |||
progress). In this case, TEMPORARY_FAILURE notification MUST be sent | progress). In this case, TEMPORARY_FAILURE notification MUST be sent | |||
in response to such a request. | in response to such a request. | |||
If multiple key exchanges were negotiated in the CREATE_CHILD_SA | If multiple key exchanges were negotiated in the CREATE_CHILD_SA | |||
exchange, then the resulting keys are computed as follows. In case | exchange, then the resulting keys are computed as follows. In case | |||
of IKE SA rekey: | of IKE SA rekey: | |||
SKEYSEED = prf(SK_d, KE | Ni | Nr | KE(1) | ... KE(n)) | SKEYSEED = prf(SK_d, SK(0) | Ni | Nr | SK(1) | ... SK(n)) | |||
In case of Child SA creation or rekey: | In case of Child SA creation or rekey: | |||
KEYMAT = prf+ (SK_d, KE | Ni | Nr | KE(1) | ... KE(n)) | KEYMAT = prf+ (SK_d, SK(0) | Ni | Nr | SK(1) | ... SK(n)) | |||
In both cases SK_d is from existing IKE SA; KE, Ni, Nr are the shared | In both cases SK_d is from existing IKE SA; SK(0), Ni, Nr are the | |||
key and nonces from the CREATE_CHILD_SA respectively; KE(1)...KE(n) | shared key and nonces from the CREATE_CHILD_SA respectively; | |||
are the shared keys from additional key exchanges. | SK(1)...SK(n) are the shared keys from additional key exchanges. | |||
3.2.5. Interaction with Childless IKE SA | ||||
It is also possible to establish a fully quantum-resistant IKE SAs | ||||
from additional key exchanges without using IKE_INTERMEDIATE | ||||
exchanges. In this case, the IKE SA created from IKE_SA_INIT | ||||
exchange can be immediately rekeyed with CREATE_CHILD_SA using | ||||
additional key exchanges and IKE_FOLLOWUP_KE message to carry the key | ||||
exchange payload. If only classical key exchange method is used in | ||||
the IKE_SA_INIT message, the very first Child SA created in IKE_AUTH | ||||
will not be quantum resistant. Consequently, if the peers' local | ||||
policy requires that all Child SAs should be fully-protected, then | ||||
the peers can avoid creating the very first Child SA by adopting | ||||
[RFC6023]. In this case, the peers exchange | ||||
CHILDLESS_IKEV2_SUPPORTED notification in the IKE_SA_INIT exchange | ||||
and a fully-protected Child SA can be created with CREATE_CHILD_SA | ||||
using additional key exchanges. | ||||
Note that if the initial IKE SA is used to transfer sensitive | ||||
information, then this information will not be protected using the | ||||
additional (e.g. quantum safe) key exchanges, so this scenario may be | ||||
inappropriate. One such example is in G-IKEv2 protocol | ||||
[I-D.ietf-ipsecme-g-ikev2] where cryptographic materials are | ||||
exchanged in IKE_SA_INIT messages between group member and the group | ||||
controller. | ||||
4. IANA Considerations | 4. IANA Considerations | |||
This document adds new exchange type into the "IKEv2 Exchange Types" | This document adds new exchange type into the "IKEv2 Exchange Types" | |||
registry: | registry: | |||
<TBA> IKE_FOLLOWUP_KE | <TBA> IKE_FOLLOWUP_KE | |||
This document renames Transform Type 4 defined in "Transform Type | This document renames Transform Type 4 defined in "Transform Type | |||
Values" registry from "Diffie-Hellman Group (D-H)" to "Key Exchange | Values" registry from "Diffie-Hellman Group (D-H)" to "Key Exchange | |||
skipping to change at page 17, line 12 ¶ | skipping to change at page 20, line 39 ¶ | |||
<TBA> STATE_NOT_FOUND | <TBA> STATE_NOT_FOUND | |||
5. Security Considerations | 5. Security Considerations | |||
The key length of the Encryption Algorithm (Transform Type 1), the | The key length of the Encryption Algorithm (Transform Type 1), the | |||
Pseudorandom Function (Transform Type 2) and the Integrity Algorithm | Pseudorandom Function (Transform Type 2) and the Integrity Algorithm | |||
(Transform Type 3), all have to be of sufficient length to prevent | (Transform Type 3), all have to be of sufficient length to prevent | |||
attacks using Grover's algorithm [GROVER]. In order to use the | attacks using Grover's algorithm [GROVER]. In order to use the | |||
extension proposed in this document, the key lengths of these | extension proposed in this document, the key lengths of these | |||
transforms SHALL be at least 256 bits long in order to provide | transforms MUST be at least 256 bits long in order to provide | |||
sufficient resistance to quantum attacks. Accordingly the post- | sufficient resistance to quantum attacks. Accordingly the post- | |||
quantum security level achieved is at least 128 bits. | quantum security level achieved is at least 128 bits. | |||
SKEYSEED is calculated from shared KE(x) using an algorithm defined | SKEYSEED is calculated from shared SK(x) using an algorithm defined | |||
in Transform Type 2. While a quantum attacker may learn the value of | in Transform Type 2. While a quantum attacker may learn the value of | |||
KE(x), if this value is obtained by means of a classical key | SK(x), if this value is obtained by means of a classical key | |||
exchange, other KE(x) values generated by means of a quantum- | exchange, other SK(x) values generated by means of a quantum- | |||
resistant algorithm ensure that the final SKEYSEED is not | resistant algorithm ensure that the final SKEYSEED is not | |||
compromised. This assumes that the algorithm defined in the | compromised. This assumes that the algorithm defined in the | |||
Transform Type 2 is post-quantum. | Transform Type 2 is post-quantum. | |||
The main focus of this document is to prevent a passive attacker | The main focus of this document is to prevent a passive attacker | |||
performing a "harvest and decrypt" attack. In other words, an | performing a "harvest and decrypt" attack. In other words, an | |||
attacker that records messages exchanges today and proceeds to | attacker that records messages exchanged today and proceeds to | |||
decrypt them once he owns a quantum computer. This attack is | decrypt them once he owns a quantum computer. This attack is | |||
prevented due to the hybrid nature of the key exchange. Other | prevented due to the hybrid nature of the key exchange. Other | |||
attacks involving an active attacker using a quantum-computer are not | attacks involving an active attacker using a quantum-computer are not | |||
completely solved by this document. This is for two reasons. | completely solved by this document. This is for two reasons. | |||
The first reason is because the authentication step remains | The first reason is because the authentication step remains | |||
classical. In particular, the authenticity of the SAs established | classical. In particular, the authenticity of the SAs established | |||
under IKEv2 is protected using a pre-shared key, RSA, DSA, or ECDSA | under IKEv2 is protected using a pre-shared key, RSA, DSA, or ECDSA | |||
algorithms. Whilst the pre-shared key option, provided the key is | algorithms. Whilst the pre-shared key option, provided the key is | |||
long enough, is post-quantum, the other algorithms are not. | long enough, is post-quantum, the other algorithms are not. | |||
skipping to change at page 18, line 8 ¶ | skipping to change at page 21, line 38 ¶ | |||
provide resistance to attacks mounted in the future. The current | provide resistance to attacks mounted in the future. The current | |||
threat is that encrypted sessions are subject to eavesdropping and | threat is that encrypted sessions are subject to eavesdropping and | |||
archived with decryption by quantum computers taking place at some | archived with decryption by quantum computers taking place at some | |||
point in the future. Until quantum computers become available there | point in the future. Until quantum computers become available there | |||
is no point in attacking the authenticity of a connection because | is no point in attacking the authenticity of a connection because | |||
there are no possibilities for exploitation. These only occur at the | there are no possibilities for exploitation. These only occur at the | |||
time of the connection, for example by mounting a man-in-the-middle | time of the connection, for example by mounting a man-in-the-middle | |||
(MitM) attack. Consequently there is not such a pressing need for | (MitM) attack. Consequently there is not such a pressing need for | |||
quantum-safe authenticity. | quantum-safe authenticity. | |||
Performing multiple key exchanges while establishing IKEv2 SA | ||||
increases the responder's susceptibility to DoS attacks, because of | ||||
an increased amount of resources needed to spend before the initiator | ||||
is authenticated. This is especially true for post-quantum key | ||||
exchange methods, where many of them are more memory and/or CPU | ||||
intensive than the classical counterparts. | ||||
Responders may consider recommendations from [RFC8019] to deal with | ||||
increased DoS attack susceptibility. It is also possible that the | ||||
responder only agrees to create initial IKE SA without performing | ||||
additional key exchanges, provided the initiator includes such an | ||||
option in its proposals. Then peers immediately rekey initial IKE SA | ||||
with the CREATE_CHILD_SA exchange and additional key exchanges | ||||
performed via the IKE_FOLLOWUP_KE exchanges. In this case at the | ||||
point when resource-intensive operations are required, peers have | ||||
already authenticated each other. However, in the context of hybrid | ||||
post-quantum key exchange this scenario would leave initial IKE SA | ||||
(and initial Child SA if it is created) unprotected against quantum | ||||
computers. Nevertheless the rekeyed IKE SA (and Child SAs that will | ||||
be created over it) will have full protection. This is similar to | ||||
the scenario described in [RFC8784]. Depending on peers' policy, | ||||
this scenario may or may not be appropriate. | ||||
6. Acknowledgements | 6. Acknowledgements | |||
The authors would like to thanks Frederic Detienne and Olivier | The authors would like to thank Frederic Detienne and Olivier Pelerin | |||
Pelerin for their comments and suggestions, including the idea to | for their comments and suggestions, including the idea to negotiate | |||
negotiate the post-quantum algorithms using the existing KE payload. | the post-quantum algorithms using the existing KE payload. The | |||
The authors are also grateful to Tobias Heider and Tobias Guggemos | authors are also grateful to Tobias Heider and Tobias Guggemos for | |||
for valuable comments. | valuable comments. Thanks to Paul Wouters for reviewing the | |||
document. | ||||
7. References | 7. References | |||
7.1. Normative References | 7.1. Normative References | |||
[I-D.ietf-ipsecme-ikev2-intermediate] | [I-D.ietf-ipsecme-ikev2-intermediate] | |||
Smyslov, V., "Intermediate Exchange in the IKEv2 | Smyslov, V., "Intermediate Exchange in the IKEv2 | |||
Protocol", draft-ietf-ipsecme-ikev2-intermediate-06 (work | Protocol", Work in Progress, Internet-Draft, draft-ietf- | |||
in progress), March 2021. | ipsecme-ikev2-intermediate-07, 3 August 2021, | |||
<https://www.ietf.org/archive/id/draft-ietf-ipsecme-ikev2- | ||||
intermediate-07.txt>. | ||||
[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, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | |||
Kivinen, "Internet Key Exchange Protocol Version 2 | Kivinen, "Internet Key Exchange Protocol Version 2 | |||
(IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | |||
2014, <https://www.rfc-editor.org/info/rfc7296>. | 2014, <https://www.rfc-editor.org/info/rfc7296>. | |||
skipping to change at page 18, line 45 ¶ | skipping to change at page 23, line 5 ¶ | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
7.2. Informative References | 7.2. Informative References | |||
[GROVER] Grover, L., "A Fast Quantum Mechanical Algorithm for | [GROVER] Grover, L., "A Fast Quantum Mechanical Algorithm for | |||
Database Search", Proc. of the Twenty-Eighth Annual ACM | Database Search", Proc. of the Twenty-Eighth Annual ACM | |||
Symposium on the Theory of Computing (STOC 1996), 1996. | Symposium on the Theory of Computing (STOC 1996), 1996. | |||
[I-D.ietf-ipsecme-g-ikev2] | ||||
Smyslov, V. and B. Weis, "Group Key Management using | ||||
IKEv2", Work in Progress, Internet-Draft, draft-ietf- | ||||
ipsecme-g-ikev2-03, 11 July 2021, <https://www.ietf.org/ | ||||
internet-drafts/draft-ietf-ipsecme-g-ikev2-03.txt>. | ||||
[I-D.tjhai-ikev2-beyond-64k-limit] | [I-D.tjhai-ikev2-beyond-64k-limit] | |||
Tjhai, C., Heider, T., and V. Smyslov, "Beyond 64KB Limit | Tjhai, C., Heider, T., and V. Smyslov, "Beyond 64KB Limit | |||
of IKEv2 Payload", draft-tjhai-ikev2-beyond-64k-limit-00 | of IKEv2 Payloads", Work in Progress, Internet-Draft, | |||
(work in progress), October 2020. | draft-tjhai-ikev2-beyond-64k-limit-01, 9 July 2021, | |||
<https://www.ietf.org/archive/id/draft-tjhai-ikev2-beyond- | ||||
64k-limit-01.txt>. | ||||
[RFC4302] Kent, S., "IP Authentication Header", RFC 4302, | [RFC4302] Kent, S., "IP Authentication Header", RFC 4302, | |||
DOI 10.17487/RFC4302, December 2005, | DOI 10.17487/RFC4302, December 2005, | |||
<https://www.rfc-editor.org/info/rfc4302>. | <https://www.rfc-editor.org/info/rfc4302>. | |||
[RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", | [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", | |||
RFC 4303, DOI 10.17487/RFC4303, December 2005, | RFC 4303, DOI 10.17487/RFC4303, December 2005, | |||
<https://www.rfc-editor.org/info/rfc4303>. | <https://www.rfc-editor.org/info/rfc4303>. | |||
[RFC6023] Nir, Y., Tschofenig, H., Deng, H., and R. Singh, "A | ||||
Childless Initiation of the Internet Key Exchange Version | ||||
2 (IKEv2) Security Association (SA)", RFC 6023, | ||||
DOI 10.17487/RFC6023, October 2010, | ||||
<https://www.rfc-editor.org/info/rfc6023>. | ||||
[RFC7383] Smyslov, V., "Internet Key Exchange Protocol Version 2 | [RFC7383] Smyslov, V., "Internet Key Exchange Protocol Version 2 | |||
(IKEv2) Message Fragmentation", RFC 7383, | (IKEv2) Message Fragmentation", RFC 7383, | |||
DOI 10.17487/RFC7383, November 2014, | DOI 10.17487/RFC7383, November 2014, | |||
<https://www.rfc-editor.org/info/rfc7383>. | <https://www.rfc-editor.org/info/rfc7383>. | |||
[RFC8019] Nir, Y. and V. Smyslov, "Protecting Internet Key Exchange | ||||
Protocol Version 2 (IKEv2) Implementations from | ||||
Distributed Denial-of-Service Attacks", RFC 8019, | ||||
DOI 10.17487/RFC8019, November 2016, | ||||
<https://www.rfc-editor.org/info/rfc8019>. | ||||
[RFC8229] Pauly, T., Touati, S., and R. Mantha, "TCP Encapsulation | [RFC8229] Pauly, T., Touati, S., and R. Mantha, "TCP Encapsulation | |||
of IKE and IPsec Packets", RFC 8229, DOI 10.17487/RFC8229, | of IKE and IPsec Packets", RFC 8229, DOI 10.17487/RFC8229, | |||
August 2017, <https://www.rfc-editor.org/info/rfc8229>. | August 2017, <https://www.rfc-editor.org/info/rfc8229>. | |||
[RFC8391] Huelsing, A., Butin, D., Gazdag, S., Rijneveld, J., and A. | [RFC8391] Huelsing, A., Butin, D., Gazdag, S., Rijneveld, J., and A. | |||
Mohaisen, "XMSS: eXtended Merkle Signature Scheme", | Mohaisen, "XMSS: eXtended Merkle Signature Scheme", | |||
RFC 8391, DOI 10.17487/RFC8391, May 2018, | RFC 8391, DOI 10.17487/RFC8391, May 2018, | |||
<https://www.rfc-editor.org/info/rfc8391>. | <https://www.rfc-editor.org/info/rfc8391>. | |||
[RFC8784] Fluhrer, S., Kampanakis, P., McGrew, D., and V. Smyslov, | [RFC8784] Fluhrer, S., Kampanakis, P., McGrew, D., and V. Smyslov, | |||
"Mixing Preshared Keys in the Internet Key Exchange | "Mixing Preshared Keys in the Internet Key Exchange | |||
Protocol Version 2 (IKEv2) for Post-quantum Security", | Protocol Version 2 (IKEv2) for Post-quantum Security", | |||
RFC 8784, DOI 10.17487/RFC8784, June 2020, | RFC 8784, DOI 10.17487/RFC8784, June 2020, | |||
<https://www.rfc-editor.org/info/rfc8784>. | <https://www.rfc-editor.org/info/rfc8784>. | |||
Appendix A. Alternative Design | Appendix A. Sample Multiple Key Exchanges | |||
This appendix shows some examples of multiple key exchanges. These | ||||
examples are purely for information purposes and they describe some | ||||
message flow scenarios that may occur in establishing an IKE or CHILD | ||||
SA. Note that some payloads that are not relevant to multiple key | ||||
exchanges may be omitted for brevity. | ||||
A.1. No Additional Key Exchange Used | ||||
The initiator proposes two sets of optional additional key exchanges, | ||||
but the responder does not support any of them. The responder | ||||
chooses NONE for each set and consequently, IKE_INTERMEDIATE exchange | ||||
does not takes place and the exchange proceeds to IKE_AUTH phase. | ||||
The resulting keying materials are the same as those derived with | ||||
[RFC7296]. | ||||
Initiator Responder | ||||
------------------------------------------------------------------------ | ||||
HDR(IKE_SA_INIT), SAi1(.. AKE*...), ---> | ||||
KEi1, Ni, N(IKEV2_FRAG_SUPPORTED), | ||||
N(INTERMEDIATE_EXCHANGE_SUPPORTED) | ||||
Proposal #1 | ||||
Transform ECR (ID = ENCR_AES_GCM_16, | ||||
256-bit key) | ||||
Transform PRF (ID = PRF_HMAC_SHA2_512) | ||||
Transform KE (ID = Curve25519) | ||||
Transform AKE1 (ID = PQ_KEM_1) | ||||
Transform AKE1 (ID = PQ_KEM_2) | ||||
Transform AKE1 (ID = NONE) | ||||
Transform AKE2 (ID = PQ_KEM_3) | ||||
Transform AKE2 (ID = PQ_KEM_4) | ||||
Transform AKE2 (ID = NONE) | ||||
<--- HDR(IKE_SA_INIT), SAr1(.. AKE*...), | ||||
KEr1, Nr, N(IKEV2_FRAG_SUPPORTED), | ||||
N(INTERMEDIATE_EXCHANGE_SUPPORTED) | ||||
Proposal #1 | ||||
Transform ECR (ID = ENCR_AES_GCM_16, | ||||
256-bit key) | ||||
Transform PRF (ID = PRF_HMAC_SHA2_512) | ||||
Transform KE (ID = Curve25519) | ||||
Transform AKE1 (ID = NONE) | ||||
Transform AKE2 (ID = NONE) | ||||
HDR(IKE_AUTH), SK{ IDi, AUTH, SAi2, TSi, TSr } ---> | ||||
<--- HDR(IKE_AUTH), SK{ IDr, AUTH, SAr2, | ||||
TSi, TSr } | ||||
A.2. Additional Key Exchange in the CREATE_CHILD_SA Exchange only | ||||
The exchanges below show that the initiator does not propose the use | ||||
of additional key exchanges to establish an IKE SA, but they are | ||||
required in order to establish a Child SA. In order to establish a | ||||
fully quantum-resistant IPsec SA, both peers include | ||||
CHILDLESS_IKEV2_SUPPORTED notification in their exchange so that the | ||||
first Child SA is not created in IKE_AUTH, but instead the IKE SA is | ||||
immediately rekeyed using CREATED_CHILD_SA. Any Child SA will have | ||||
to be created via subsequent CREATED_CHILD_SA exchange. | ||||
Initiator Responder | ||||
------------------------------------------------------------------------ | ||||
HDR(IKE_SA_INIT), SAi1, ---> | ||||
KEi1, Ni, N(IKEV2_FRAG_SUPPORTED), | ||||
N(CHILDLESS_IKEV2_SUPPORTED) | ||||
<--- HDR(IKE_SA_INIT), SAr1, | ||||
KEr1, Nr, N(IKEV2_FRAG_SUPPORTED), | ||||
N(CHILDLESS_IKEV2_SUPPORTED) | ||||
HDR(IKE_AUTH), SK{ IDi, AUTH } ---> | ||||
<--- HDR(IKE_AUTH), SK{ IDr, AUTH } | ||||
HDR(CREATE_CHILD_SA), SK{ SAi(.. AKE*...), Ni, KEi } ---> | ||||
Proposal #1 | ||||
Transform ECR (ID = ENCR_AES_GCM_16, | ||||
256-bit key) | ||||
Transform PRF (ID = PRF_HMAC_SHA2_512) | ||||
Transform KE (ID = Curve25519) | ||||
Transform AKE1 (ID = PQ_KEM_1) | ||||
Transform AKE1 (ID = PQ_KEM_2) | ||||
Transform AKE2 (ID = PQ_KEM_5) | ||||
Transform AKE2 (ID = PQ_KEM_6) | ||||
Transform AKE2 (ID = NONE) | ||||
<--- HDR(CREATE_CHILD_SA), SK{ SAr(.. AKE*...), | ||||
Nr, KEr, | ||||
N(ADDITIONAL_KEY_EXCHANGE)(link1) } | ||||
Proposal #1 | ||||
Transform ECR (ID = ENCR_AES_GCM_16, | ||||
256-bit key) | ||||
Transform PRF (ID = PRF_HMAC_SHA2_512) | ||||
Transform KE (ID = Curve25519) | ||||
Transform AKE1 (ID = PQ_KEM_2) | ||||
Transform AKE2 (ID = PQ_KEM_5) | ||||
HDR(IKE_FOLLOWUP_KE), SK{ KEi(1), ---> | ||||
N(ADDITIONAL_KEY_EXCHANGE)(link1) } | ||||
<--- HDR(IKE_FOLLOWUP_KE), SK{ KEr(1), | ||||
N(ADDITIONAL_KEY_EXCHANGE)(link2) } | ||||
HDR(IKE_FOLLOWUP_KE), SK{ KEi(2), ---> | ||||
N(ADDITIONAL_KEY_EXCHANGE)(link2) } | ||||
<--- HDR(IKE_FOLLOWUP_KE), SK{ KEr(2) } | ||||
A.3. Not Matching Proposal for Additional Key Exchanges | ||||
The initiator proposes the combination of PQ_KEM_1, PQ_KEM_2, | ||||
PQ_KEM_3, and PQ_KEM_4 as the additional key exchanges. The | ||||
initiator indicates, using the key exchange method NONE, that either | ||||
PQ_KEM_1 or PQ_KEM_2 must be used to establish a security | ||||
association. The responder, although supports the optional PQ_KEM_3 | ||||
and PQ_KEM_4 method, does not support either PQ_KEM_1 or PQ_KEM_2 | ||||
mandatory method and therefore responds with NO_PROPOSAL_CHOSEN | ||||
notification. | ||||
Initiator Responder | ||||
------------------------------------------------------------------------ | ||||
HDR(IKE_SA_INIT), SAi1(.. AKE*...), ---> | ||||
KEi1, Ni, N(IKEV2_FRAG_SUPPORTED), | ||||
N(INTERMEDIATE_EXCHANGE_SUPPORTED) | ||||
Proposal #1 | ||||
Transform ECR (ID = ENCR_AES_GCM_16, | ||||
256-bit key) | ||||
Transform PRF (ID = PRF_HMAC_SHA2_512) | ||||
Transform KE (ID = Curve25519) | ||||
Transform AKE1 (ID = PQ_KEM_1) | ||||
Transform AKE1 (ID = PQ_KEM_2) | ||||
Transform AKE2 (ID = PQ_KEM_3) | ||||
Transform AKE2 (ID = PQ_KEM_4) | ||||
Transform AKE2 (ID = NONE) | ||||
<--- HDR(IKE_SA_INIT), N(NO_PROPOSAL_CHOSEN) | ||||
Appendix B. Alternative Design | ||||
This section gives an overview on a number of alternative approaches | This section gives an overview on a number of alternative approaches | |||
that we have considered, but later discarded. These approaches are: | that we have considered, but later discarded. These approaches are: | |||
o Sending the classical and post-quantum key exchanges as a single | * Sending the classical and post-quantum key exchanges as a single | |||
transform | transform | |||
We considered combining the various key exchanges into a single | We considered combining the various key exchanges into a single | |||
large KE payload; this effort is documented in a previous version | large KE payload; this effort is documented in a previous version | |||
of this draft (draft-tjhai-ipsecme-hybrid-qske-ikev2-01). This | of this draft (draft-tjhai-ipsecme-hybrid-qske-ikev2-01). This | |||
does allow us to cleanly apply hybrid key exchanges during the | does allow us to cleanly apply hybrid key exchanges during the | |||
child SA; however it does add considerable complexity, and | child SA; however it does add considerable complexity, and | |||
requires an independent fragmentation solution. | requires an independent fragmentation solution. | |||
o Sending post-quantum proposals and policies in KE payload only | * Sending post-quantum proposals and policies in KE payload only | |||
With the objective of not introducing unnecessary notify payloads, | With the objective of not introducing unnecessary notify payloads, | |||
we considered communicating the hybrid post-quantum proposal in | we considered communicating the hybrid post-quantum proposal in | |||
the KE payload during the first pass of the protocol exchange. | the KE payload during the first pass of the protocol exchange. | |||
Unfortunately, this design is susceptible to the following | Unfortunately, this design is susceptible to the following | |||
downgrade attack. Consider the scenario where there is an MitM | downgrade attack. Consider the scenario where there is an MitM | |||
attacker sitting between an initiator and a responder. The | attacker sitting between an initiator and a responder. The | |||
initiator proposes, through SAi payload, to use a hybrid post- | initiator proposes, through SAi payload, to use a hybrid post- | |||
quantum group and as a backup a Diffie-Hellman group, and through | quantum group and as a backup a Diffie-Hellman group, and through | |||
KEi payload, the initiator proposes a list of hybrid post-quantum | KEi payload, the initiator proposes a list of hybrid post-quantum | |||
proposals and policies. The MitM attacker intercepts this traffic | proposals and policies. The MitM attacker intercepts this traffic | |||
and replies with N(INVALID_KE_PAYLOAD) suggesting to downgrade to | and replies with N(INVALID_KE_PAYLOAD) suggesting to downgrade to | |||
the backup Diffie-Hellman group instead. The initiator then | the backup Diffie-Hellman group instead. The initiator then | |||
resends the same SAi payload and the KEi payload containing the | resends the same SAi payload and the KEi payload containing the | |||
skipping to change at page 20, line 31 ¶ | skipping to change at page 28, line 22 ¶ | |||
group but not offering the corresponding public value in the KEi | group but not offering the corresponding public value in the KEi | |||
payload; and (b) the responder has not specifically acknowledged | payload; and (b) the responder has not specifically acknowledged | |||
that it does not supported the requested hybrid group. However, | that it does not supported the requested hybrid group. However, | |||
the checking of this policy introduces unnecessary protocol | the checking of this policy introduces unnecessary protocol | |||
complexity. Therefore, in order to fully prevent any downgrade | complexity. Therefore, in order to fully prevent any downgrade | |||
attacks, using KE payload alone is not sufficient and that the | attacks, using KE payload alone is not sufficient and that the | |||
initiator MUST always indicate its preferred post-quantum | initiator MUST always indicate its preferred post-quantum | |||
proposals and policies in a notify payload in the subsequent | proposals and policies in a notify payload in the subsequent | |||
IKE_SA_INIT messages following a N(INVALID_KE_PAYLOAD) response. | IKE_SA_INIT messages following a N(INVALID_KE_PAYLOAD) response. | |||
o New payload types to negotiate hybrid proposal and to carry post- | * New payload types to negotiate hybrid proposal and to carry post- | |||
quantum public values | quantum public values | |||
Semantically, it makes sense to use a new payload type, which | Semantically, it makes sense to use a new payload type, which | |||
mimics the SA payload, to carry a hybrid proposal. Likewise, | mimics the SA payload, to carry a hybrid proposal. Likewise, | |||
another new payload type that mimics the KE payload, could be used | another new payload type that mimics the KE payload, could be used | |||
to transport hybrid public value. Although, in theory a new | to transport hybrid public value. Although, in theory a new | |||
payload type could be made backwards compatible by not setting its | payload type could be made backwards compatible by not setting its | |||
critical flag as per Section 2.5 of RFC7296, we believe that it | critical flag as per Section 2.5 of RFC7296, we believe that it | |||
may not be that simple in practice. Since the original release of | may not be that simple in practice. Since the original release of | |||
IKEv2 in RFC4306, no new payload type has ever been proposed and | IKEv2 in RFC4306, no new payload type has ever been proposed and | |||
therefore, this creates a potential risk of having a backward | therefore, this creates a potential risk of having a backward | |||
compatibility issue from non-conforming RFC IKEv2 implementations. | compatibility issue from non-conforming RFC IKEv2 implementations. | |||
Since we could not see any other compelling advantages apart from | Since we could not see any other compelling advantages apart from | |||
a semantic one, we use the existing transform type and notify | a semantic one, we use the existing transform type and notify | |||
payloads instead. In fact, as described above, we use the KE | payloads instead. In fact, as described above, we use the KE | |||
payload in the first IKE_SA_INIT request round and the notify | payload in the first IKE_SA_INIT request round and the notify | |||
payload to carry the post-quantum proposals and policies. We use | payload to carry the post-quantum proposals and policies. We use | |||
one or more of the existing KE payloads to carry the hybrid public | one or more of the existing KE payloads to carry the hybrid public | |||
values. | values. | |||
o Hybrid public value payload | * Hybrid public value payload | |||
One way to transport the negotiated hybrid public payload, which | One way to transport the negotiated hybrid public payload, which | |||
contains one classical Diffie-Hellman public value and one or more | contains one classical Diffie-Hellman public value and one or more | |||
post-quantum public values, is to bundle these into a single KE | post-quantum public values, is to bundle these into a single KE | |||
payload. Alternatively, these could also be transported in a | payload. Alternatively, these could also be transported in a | |||
single new hybrid public value payload, but following the same | single new hybrid public value payload, but following the same | |||
reasoning as above, this may not be a good idea from a backward | reasoning as above, this may not be a good idea from a backward | |||
compatibility perspective. Using a single KE payload would | compatibility perspective. Using a single KE payload would | |||
require an encoding or formatting to be defined so that both peers | require an encoding or formatting to be defined so that both peers | |||
are able to compose and extract the individual public values. | are able to compose and extract the individual public values. | |||
However, we believe that it is cleaner to send the hybrid public | However, we believe that it is cleaner to send the hybrid public | |||
values in multiple KE payloads--one for each group or algorithm. | values in multiple KE payloads--one for each group or algorithm. | |||
Furthermore, at this point in the protocol exchange, both peers | Furthermore, at this point in the protocol exchange, both peers | |||
should have indicated support of handling multiple KE payloads. | should have indicated support of handling multiple KE payloads. | |||
o Fragmentation | * Fragmentation | |||
Handling of large IKE_SA_INIT messages has been one of the most | Handling of large IKE_SA_INIT messages has been one of the most | |||
challenging tasks. A number of approaches have been considered | challenging tasks. A number of approaches have been considered | |||
and the two prominent ones that we have discarded are outlined as | and the two prominent ones that we have discarded are outlined as | |||
follows. | follows. | |||
The first approach was to treat the entire IKE_SA_INIT message as | The first approach was to treat the entire IKE_SA_INIT message as | |||
a stream of bytes, which we then split it into a number of | a stream of bytes, which we then split it into a number of | |||
fragments, each of which is wrapped onto a payload that would fit | fragments, each of which is wrapped onto a payload that would fit | |||
into the size of the network MTU. The payload that wraps each | into the size of the network MTU. The payload that wraps each | |||
skipping to change at page 22, line 42 ¶ | skipping to change at page 30, line 42 ¶ | |||
We discarded this approach because we believe that the working | We discarded this approach because we believe that the working | |||
group may not be happy using the RESERVED field to change the | group may not be happy using the RESERVED field to change the | |||
format of a packet and that implementers may not like the | format of a packet and that implementers may not like the | |||
complexity added from checking the fragmentation flag in each | complexity added from checking the fragmentation flag in each | |||
received payload. More importantly, fragmenting the messages in | received payload. More importantly, fragmenting the messages in | |||
this way may leave the system to be more prone to denial of | this way may leave the system to be more prone to denial of | |||
service (DoS) attacks. By using IKE_INTERMEDIATE to transport the | service (DoS) attacks. By using IKE_INTERMEDIATE to transport the | |||
large post-quantum key exchange payloads, there is no longer any | large post-quantum key exchange payloads, there is no longer any | |||
issue with fragmentation. | issue with fragmentation. | |||
o Group sub-identifier | * Group sub-identifier | |||
As discussed before, each group identifier is used to distinguish | As discussed before, each group identifier is used to distinguish | |||
a post-quantum algorithm. Further classification could be made on | a post-quantum algorithm. Further classification could be made on | |||
a particular post-quantum algorithm by assigning additional value | a particular post-quantum algorithm by assigning additional value | |||
alongside the group identifier. This sub- identifier value may be | alongside the group identifier. This sub- identifier value may be | |||
used to assign different security parameter sets to a given post- | used to assign different security parameter sets to a given post- | |||
quantum algorithm. However, this level of details does not fit | quantum algorithm. However, this level of details does not fit | |||
the principles of the document where it should deal with generic | the principles of the document where it should deal with generic | |||
hybrid key exchange protocol, not a specific ciphersuite. | hybrid key exchange protocol, not a specific ciphersuite. | |||
Furthermore, there are enough Diffie- Hellman group identifiers | Furthermore, there are enough Diffie- Hellman group identifiers | |||
should this be required in the future. | should this be required in the future. | |||
Authors' Addresses | Authors' Addresses | |||
C. Tjhai | C. Tjhai | |||
Post-Quantum | Post-Quantum | |||
Email: cjt@post-quantum.com | Email: cjt@post-quantum.com | |||
End of changes. 76 change blocks. | ||||
222 lines changed or deleted | 527 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/ |