summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8784.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc8784.txt')
-rw-r--r--doc/rfc/rfc8784.txt848
1 files changed, 848 insertions, 0 deletions
diff --git a/doc/rfc/rfc8784.txt b/doc/rfc/rfc8784.txt
new file mode 100644
index 0000000..6f7f910
--- /dev/null
+++ b/doc/rfc/rfc8784.txt
@@ -0,0 +1,848 @@
+
+
+
+
+Internet Engineering Task Force (IETF) S. Fluhrer
+Request for Comments: 8784 P. Kampanakis
+Category: Standards Track D. McGrew
+ISSN: 2070-1721 Cisco Systems
+ V. Smyslov
+ ELVIS-PLUS
+ June 2020
+
+
+ Mixing Preshared Keys in the Internet Key Exchange Protocol Version 2
+ (IKEv2) for Post-quantum Security
+
+Abstract
+
+ The possibility of quantum computers poses a serious challenge to
+ cryptographic algorithms deployed widely today. The Internet Key
+ Exchange Protocol Version 2 (IKEv2) is one example of a cryptosystem
+ that could be broken; someone storing VPN communications today could
+ decrypt them at a later time when a quantum computer is available.
+ It is anticipated that IKEv2 will be extended to support quantum-
+ secure key exchange algorithms; however, that is not likely to happen
+ in the near term. To address this problem before then, this document
+ describes an extension of IKEv2 to allow it to be resistant to a
+ quantum computer by using preshared keys.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc8784.
+
+Copyright Notice
+
+ Copyright (c) 2020 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+Table of Contents
+
+ 1. Introduction
+ 1.1. Requirements Language
+ 2. Assumptions
+ 3. Exchanges
+ 4. Upgrade Procedure
+ 5. PPK
+ 5.1. PPK_ID Format
+ 5.2. Operational Considerations
+ 5.2.1. PPK Distribution
+ 5.2.2. Group PPK
+ 5.2.3. PPK-Only Authentication
+ 6. Security Considerations
+ 7. IANA Considerations
+ 8. References
+ 8.1. Normative References
+ 8.2. Informative References
+ Appendix A. Discussion and Rationale
+ Acknowledgements
+ Authors' Addresses
+
+1. Introduction
+
+ Recent achievements in developing quantum computers demonstrate that
+ it is probably feasible to build one that is cryptographically
+ significant. If such a computer is implemented, many of the
+ cryptographic algorithms and protocols currently in use would be
+ insecure. A quantum computer would be able to solve Diffie-Hellman
+ (DH) and Elliptic Curve Diffie-Hellman (ECDH) problems in polynomial
+ time [C2PQ], and this would imply that the security of existing IKEv2
+ [RFC7296] systems would be compromised. IKEv1 [RFC2409], when used
+ with strong preshared keys, is not vulnerable to quantum attacks
+ because those keys are one of the inputs to the key derivation
+ function. If the preshared key has sufficient entropy and the
+ Pseudorandom Function (PRF), encryption, and authentication
+ transforms are quantum secure, then the resulting system is believed
+ to be quantum secure -- that is, secure against classical attackers
+ of today or future attackers with a quantum computer.
+
+ This document describes a way to extend IKEv2 to have a similar
+ property; assuming that the two end systems share a long secret key,
+ then the resulting exchange is quantum secure. By bringing post-
+ quantum security to IKEv2, this document removes the need to use an
+ obsolete version of IKE in order to achieve that security goal.
+
+ The general idea is that we add an additional secret that is shared
+ between the initiator and the responder; this secret is in addition
+ to the authentication method that is already provided within IKEv2.
+ We stir this secret into the SK_d value, which is used to generate
+ the key material (KEYMAT) for the Child Security Associations (SAs)
+ and the SKEYSEED for the IKE SAs created as a result of the initial
+ IKE SA rekey. This secret provides quantum resistance to the IPsec
+ SAs and any subsequent IKE SAs. We also stir the secret into the
+ SK_pi and SK_pr values; this allows both sides to detect a secret
+ mismatch cleanly.
+
+ It was considered important to minimize the changes to IKEv2. The
+ existing mechanisms to perform authentication and key exchange remain
+ in place (that is, we continue to perform (EC)DH and potentially PKI
+ authentication if configured). This document does not replace the
+ authentication checks that the protocol does; instead, they are
+ strengthened by using an additional secret key.
+
+1.1. Requirements Language
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+2. Assumptions
+
+ We assume that each IKE peer has a list of Post-quantum Preshared
+ Keys (PPKs) along with their identifiers (PPK_ID), and any potential
+ IKE initiator selects which PPK to use with any specific responder.
+ In addition, implementations have a configurable flag that determines
+ whether this PPK is mandatory. This PPK is independent of the
+ preshared key (if any) that the IKEv2 protocol uses to perform
+ authentication (because the preshared key in IKEv2 is not used for
+ any key derivation and thus doesn't protect against quantum
+ computers). The PPK-specific configuration that is assumed to be on
+ each node consists of the following tuple:
+
+ Peer, PPK, PPK_ID, mandatory_or_not
+
+ We assume the reader is familiar with the payload notation defined in
+ Section 1.2 of [RFC7296].
+
+3. Exchanges
+
+ If the initiator is configured to use a PPK with the responder
+ (whether or not the use of the PPK is mandatory), then it MUST
+ include a notification USE_PPK in the IKE_SA_INIT request message as
+ follows:
+
+ Initiator Responder
+ ------------------------------------------------------------------
+ HDR, SAi1, KEi, Ni, N(USE_PPK) --->
+
+ N(USE_PPK) is a status notification payload with the type 16435; it
+ has a protocol ID of 0, no Security Parameter Index (SPI), and no
+ notification data associated with it.
+
+ If the initiator needs to resend this initial message with a COOKIE
+ notification, then the resend would include the USE_PPK notification
+ if the original message did (see Section 2.6 of [RFC7296]).
+
+ If the responder does not support this specification or does not have
+ any PPK configured, then it ignores the received notification (as
+ defined in [RFC7296] for unknown status notifications) and continues
+ with the IKEv2 protocol as normal. Otherwise, the responder replies
+ with the IKE_SA_INIT message, including a USE_PPK notification in the
+ response:
+
+ Initiator Responder
+ ------------------------------------------------------------------
+ <--- HDR, SAr1, KEr, Nr, [CERTREQ,] N(USE_PPK)
+
+ When the initiator receives this reply, it checks whether the
+ responder included the USE_PPK notification. If the responder did
+ not include the USE_PPK notification and the flag mandatory_or_not
+ indicates that using PPKs is mandatory for communication with this
+ responder, then the initiator MUST abort the exchange. This
+ situation may happen in case of misconfiguration, i.e., when the
+ initiator believes it has a mandatory-to-use PPK for the responder
+ and the responder either doesn't support PPKs at all or doesn't have
+ any PPK configured for the initiator. See Section 6 for discussion
+ of the possible impacts of this situation.
+
+ If the responder did not include the USE_PPK notification and using a
+ PPK for this particular responder is optional, then the initiator
+ continues with the IKEv2 protocol as normal, without using PPKs.
+
+ If the responder did include the USE_PPK notification, then the
+ initiator selects a PPK, along with its identifier PPK_ID. Then, it
+ computes this modification of the standard IKEv2 key derivation from
+ Section 2.14 of [RFC7296]:
+
+ SKEYSEED = prf(Ni | Nr, g^ir)
+ {SK_d' | SK_ai | SK_ar | SK_ei | SK_er | SK_pi' | SK_pr'}
+ = prf+ (SKEYSEED, Ni | Nr | SPIi | SPIr)
+
+ SK_d = prf+ (PPK, SK_d')
+ SK_pi = prf+ (PPK, SK_pi')
+ SK_pr = prf+ (PPK, SK_pr')
+
+ That is, we use the standard IKEv2 key derivation process, except
+ that the three resulting subkeys SK_d, SK_pi, and SK_pr (marked with
+ primes in the formula above) are then run through the prf+ again,
+ this time using the PPK as the key. The result is the unprimed
+ versions of these keys, which are then used as inputs to subsequent
+ steps of the IKEv2 exchange.
+
+ Using a prf+ construction ensures that it is always possible to get
+ the resulting keys of the same size as the initial ones, even if the
+ underlying PRF has an output size different from its key size. Note
+ that at the time of this writing, all PRFs defined for use in IKEv2
+ (see the "Transform Type 2 - Pseudorandom Function Transform IDs"
+ subregistry [IANA-IKEV2]) have an output size equal to the
+ (preferred) key size. For such PRFs, only the first iteration of
+ prf+ is needed:
+
+ SK_d = prf (PPK, SK_d' | 0x01)
+ SK_pi = prf (PPK, SK_pi' | 0x01)
+ SK_pr = prf (PPK, SK_pr' | 0x01)
+
+ Note that the PPK is used in SK_d, SK_pi, and SK_pr calculations only
+ 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 similar operations.
+
+ The initiator then sends the IKE_AUTH request message, including the
+ PPK_ID value as follows:
+
+ Initiator Responder
+ ------------------------------------------------------------------
+ HDR, SK {IDi, [CERT,] [CERTREQ,]
+ [IDr,] AUTH, SAi2,
+ TSi, TSr, N(PPK_IDENTITY, PPK_ID), [N(NO_PPK_AUTH)]} --->
+
+ PPK_IDENTITY is a status notification with the type 16436; it has a
+ protocol ID of 0, no SPI, and notification data that consists of the
+ identifier PPK_ID.
+
+ A situation may happen when the responder has some PPKs but doesn't
+ have a PPK with the PPK_ID received from the initiator. In this
+ case, the responder cannot continue with the PPK (in particular, it
+ cannot authenticate the initiator), but the responder could be able
+ to continue with the normal IKEv2 protocol if the initiator provided
+ its authentication data computed as in the normal IKEv2 without using
+ PPKs. For this purpose, if using PPKs for communication with this
+ responder is optional for the initiator (based on the
+ mandatory_or_not flag), then the initiator MUST include a NO_PPK_AUTH
+ notification in the above message. This notification informs the
+ responder that PPKs are optional and allows for authenticating the
+ initiator without using PPKs.
+
+ NO_PPK_AUTH is a status notification with the type 16437; it has a
+ protocol ID of 0 and no SPI. The Notification Data field contains
+ the initiator's authentication data computed using SK_pi', which has
+ been computed without using PPKs. This is the same data that would
+ normally be placed in the Authentication Data field of an AUTH
+ payload. Since the Auth Method field is not present in the
+ notification, the authentication method used for computing the
+ authentication data MUST be the same as the method indicated in the
+ AUTH payload. Note that if the initiator decides to include the
+ NO_PPK_AUTH notification, the initiator needs to perform
+ authentication data computation twice, which may consume computation
+ power (e.g., if digital signatures are involved).
+
+ When the responder receives this encrypted exchange, it first
+ computes the values:
+
+ SKEYSEED = prf(Ni | Nr, g^ir)
+ {SK_d' | SK_ai | SK_ar | SK_ei | SK_er | SK_pi' | SK_pr'}
+ = prf+ (SKEYSEED, Ni | Nr | SPIi | SPIr)
+
+ The responder 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 PPK_IDENTITY notification. If no PPK_IDENTITY notification is
+ found and the peers successfully exchanged USE_PPK notifications in
+ the IKE_SA_INIT exchange, then the responder MUST send back an
+ AUTHENTICATION_FAILED notification and then fail the negotiation.
+
+ If the PPK_IDENTITY notification contains a PPK_ID that is not known
+ to the responder or is not configured for use for the identity from
+ the IDi payload, then the responder checks whether using PPKs for
+ this initiator is mandatory and whether the initiator included a
+ NO_PPK_AUTH notification in the message. If using PPKs is mandatory
+ or no NO_PPK_AUTH notification is found, then the responder MUST send
+ back an AUTHENTICATION_FAILED notification and then fail the
+ negotiation. Otherwise (when a PPK is optional and the initiator
+ included a NO_PPK_AUTH notification), the responder MAY continue the
+ regular IKEv2 protocol, except that it uses the data from the
+ NO_PPK_AUTH notification as the authentication data (which usually
+ resides in the AUTH payload) for the purpose of the initiator
+ authentication. Note that the authentication method is still
+ indicated in the AUTH payload.
+
+ Table 1 summarizes the above logic for the responder:
+
+ +==========+=============+============+===========+================+
+ | Received | Received | Configured | PPK is | Action |
+ | USE_PPK | NO_PPK_AUTH | with PPK | Mandatory | |
+ +==========+=============+============+===========+================+
+ | No | * | No | * | Standard IKEv2 |
+ | | | | | protocol |
+ +----------+-------------+------------+-----------+----------------+
+ | No | * | Yes | No | Standard IKEv2 |
+ | | | | | protocol |
+ +----------+-------------+------------+-----------+----------------+
+ | No | * | Yes | Yes | Abort |
+ | | | | | negotiation |
+ +----------+-------------+------------+-----------+----------------+
+ | Yes | No | No | * | Abort |
+ | | | | | negotiation |
+ +----------+-------------+------------+-----------+----------------+
+ | Yes | Yes | No | Yes | Abort |
+ | | | | | negotiation |
+ +----------+-------------+------------+-----------+----------------+
+ | Yes | Yes | No | No | Standard IKEv2 |
+ | | | | | protocol |
+ +----------+-------------+------------+-----------+----------------+
+ | Yes | * | Yes | * | Use PPK |
+ +----------+-------------+------------+-----------+----------------+
+
+ Table 1
+
+ If a PPK is in use, then the responder extracts the corresponding PPK
+ and computes the following values:
+
+ SK_d = prf+ (PPK, SK_d')
+ SK_pi = prf+ (PPK, SK_pi')
+ SK_pr = prf+ (PPK, SK_pr')
+
+ The responder then continues with the IKE_AUTH exchange (validating
+ the AUTH payload that the initiator included) as usual and sends back
+ a response, which includes the PPK_IDENTITY notification with no data
+ to indicate that the PPK is used in the exchange:
+
+ Initiator Responder
+ ------------------------------------------------------------------
+ <-- HDR, SK {IDr, [CERT,]
+ AUTH, SAr2,
+ TSi, TSr, N(PPK_IDENTITY)}
+
+ When the initiator receives the response, it checks for the presence
+ of the PPK_IDENTITY notification. If it receives one, it marks the
+ SA as using the configured PPK to generate SK_d, SK_pi, and SK_pr (as
+ shown above); the content of the received PPK_IDENTITY (if any) MUST
+ be ignored. If the initiator does not receive the PPK_IDENTITY, it
+ MUST either fail the IKE SA negotiation sending the
+ AUTHENTICATION_FAILED notification in the INFORMATIONAL exchange (if
+ the PPK was configured as mandatory) or continue without using the
+ PPK (if the PPK was not configured as mandatory and the initiator
+ included the NO_PPK_AUTH notification in the request).
+
+ If the Extensible Authentication Protocol (EAP) is used in the
+ IKE_AUTH exchange, then the initiator doesn't include the AUTH
+ payload in the first request message; however, the responder sends
+ back the AUTH payload in the first reply. The peers then exchange
+ AUTH payloads after EAP is successfully completed. As a result, the
+ responder sends the AUTH payload twice -- in the first and last
+ IKE_AUTH reply message -- while the initiator sends the AUTH payload
+ only in the last IKE_AUTH request. See more details about EAP
+ authentication in IKEv2 in Section 2.16 of [RFC7296].
+
+ The general rule for using a PPK in the IKE_AUTH exchange, which
+ covers the EAP authentication case too, is that the initiator
+ includes a PPK_IDENTITY (and optionally a NO_PPK_AUTH) notification
+ in the request message containing the AUTH payload. Therefore, in
+ case of EAP, the responder always computes the AUTH payload in the
+ first IKE_AUTH reply message without using a PPK (by means of
+ SK_pr'), since PPK_ID is not yet known to the responder. Once the
+ IKE_AUTH request message containing the PPK_IDENTITY notification is
+ received, the responder follows the rules described above for the
+ non-EAP authentication case.
+
+ Initiator Responder
+ ----------------------------------------------------------------
+ HDR, SK {IDi, [CERTREQ,]
+ [IDr,] SAi2,
+ TSi, TSr} -->
+ <-- HDR, SK {IDr, [CERT,] AUTH,
+ EAP}
+ HDR, SK {EAP} -->
+ <-- HDR, SK {EAP (success)}
+ HDR, SK {AUTH,
+ N(PPK_IDENTITY, PPK_ID)
+ [, N(NO_PPK_AUTH)]} -->
+ <-- HDR, SK {AUTH, SAr2, TSi, TSr
+ [, N(PPK_IDENTITY)]}
+
+ Note that the diagram above shows both the cases when the responder
+ uses a PPK and when it chooses not to use it (provided the initiator
+ has included the NO_PPK_AUTH notification); thus, the responder's
+ PPK_IDENTITY notification is marked as optional. Also, note that the
+ IKE_SA_INIT exchange using a PPK is as described above (including
+ exchange of the USE_PPK notifications), regardless of whether or not
+ EAP is employed in the IKE_AUTH.
+
+4. Upgrade Procedure
+
+ This algorithm was designed so that someone can introduce PPKs into
+ an existing IKE network without causing network disruption.
+
+ In the initial phase of the network upgrade, the network
+ administrator would visit each IKE node and configure:
+
+ * The set of PPKs (and corresponding PPK_IDs) that this node would
+ need to know.
+
+ * The PPK that will be used for each peer that this node would
+ initiate to.
+
+ * The value "false" for the mandatory_or_not flag for each peer that
+ this node would initiate to (thus indicating that the use of PPKs
+ is not mandatory).
+
+ With this configuration, the node will continue to operate with nodes
+ that have not yet been upgraded. This is due to the USE_PPK
+ notification and the NO_PPK_AUTH notification; if the initiator has
+ not been upgraded, it will not send the USE_PPK notification (and so
+ the responder will know that the peers will not use a PPK). If the
+ responder has not been upgraded, it will not send the USE_PPK
+ notification (and so the initiator will know to not use a PPK). If
+ both peers have been upgraded but the responder isn't yet configured
+ with the PPK for the initiator, then the responder could continue
+ with the standard IKEv2 protocol if the initiator sent a NO_PPK_AUTH
+ notification. If both the responder and initiator have been upgraded
+ and properly configured, they will both realize it, and the Child SAs
+ will be quantum secure.
+
+ As an optional second step, after all nodes have been upgraded, the
+ administrator should then go back through the nodes and mark the use
+ of a PPK as mandatory. This will not affect the strength against a
+ passive attacker, but it would mean that an active attacker with a
+ quantum computer (which is sufficiently fast to be able to break the
+ (EC)DH in real time) would not be able to perform a downgrade attack.
+
+5. PPK
+
+5.1. PPK_ID Format
+
+ This standard requires that both the initiator and the responder have
+ a secret PPK value, with the responder selecting the PPK based on the
+ PPK_ID that the initiator sends. In this standard, both the
+ initiator and the responder are configured with fixed PPK and PPK_ID
+ values and perform the lookup based on the PPK_ID value. It is
+ anticipated that later specifications will extend this technique to
+ allow dynamically changing PPK values. To facilitate such an
+ extension, we specify that the PPK_ID the initiator sends will have
+ its first octet be the PPK_ID type value. This document defines two
+ values for the PPK_ID type:
+
+ * PPK_ID_OPAQUE (1) - For this type, the format of the PPK_ID (and
+ the PPK itself) is not specified by this document; it is assumed
+ to be mutually intelligible by both the initiator and the
+ responder. This PPK_ID type is intended for those implementations
+ that choose not to disclose the type of PPK to active attackers.
+
+ * PPK_ID_FIXED (2) - In this case, the format of the PPK_ID and the
+ PPK are fixed octet strings; the remaining bytes of the PPK_ID are
+ a configured value. We assume that there is a fixed mapping
+ between PPK_ID and PPK, which is configured locally to both the
+ initiator and the responder. The responder can use the PPK_ID to
+ look up the corresponding PPK value. Not all implementations are
+ able to configure arbitrary octet strings; to improve the
+ potential interoperability, it is recommended that, in the
+ PPK_ID_FIXED case, both the PPK and the PPK_ID strings be limited
+ to the base64 character set [RFC4648].
+
+5.2. Operational Considerations
+
+ The need to maintain several independent sets of security credentials
+ can significantly complicate a security administrator's job and can
+ potentially slow down widespread adoption of this specification. It
+ is anticipated that administrators will try to simplify their job by
+ decreasing the number of credentials they need to maintain. This
+ section describes some of the considerations for PPK management.
+
+5.2.1. PPK Distribution
+
+ 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
+ fashion. While the method of distribution is a local matter and is
+ out of scope of this document or IKEv2, [RFC6030] describes a format
+ for the transport and provisioning of symmetric keys. That format
+ could be reused using the PIN profile (defined in Section 10.2 of
+ [RFC6030]) with the "Id" attribute of the <Key> element being the
+ PPK_ID (without the PPK_ID type octet for a PPK_ID_FIXED) and the
+ <Secret> element containing the PPK.
+
+5.2.2. Group PPK
+
+ This document doesn't explicitly require that the PPK be unique for
+ each pair of peers. If this is the case, then this solution provides
+ full peer authentication, but it also means that each host must have
+ as many independent PPKs as peers it is going to communicate with.
+ As the number of peers grows, the PPKs will not scale.
+
+ It is possible to use a single PPK for a group of users. Since each
+ peer uses classical public key cryptography in addition to a PPK for
+ key exchange and authentication, members of the group can neither
+ impersonate each other nor read each other's traffic unless they use
+ quantum computers to break public key operations. However, group
+ members can record any traffic they have access to that comes from
+ other group members and decrypt it later, when they get access to a
+ quantum computer.
+
+ In addition, the fact that the PPK is known to a (potentially large)
+ group of users makes it more susceptible to theft. When an attacker
+ equipped with a quantum computer gets access to a group PPK, all
+ communications inside the group are revealed.
+
+ For these reasons, using a group PPK is NOT RECOMMENDED.
+
+5.2.3. PPK-Only Authentication
+
+ If quantum computers become a reality, classical public key
+ cryptography will provide little security, so administrators may find
+ it attractive not to use it at all for authentication. This will
+ reduce the number of credentials they need to maintain because they
+ only need to maintain PPK credentials. Combining group PPK and PPK-
+ only authentication is NOT RECOMMENDED since, in this case, any
+ member of the group can impersonate any other member, even without
+ the help of quantum computers.
+
+ PPK-only authentication can be achieved in IKEv2 if the NULL
+ Authentication method [RFC7619] is employed. Without PPK, the NULL
+ Authentication method provides no authentication of the peers;
+ 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
+ mandatory for the peers if they advertise support for PPKs in
+ IKE_SA_INIT and use NULL Authentication. Additionally, since the
+ peers are authenticated via PPKs, the ID Type in the IDi/IDr payloads
+ SHOULD NOT be ID_NULL, despite using the NULL Authentication method.
+
+6. Security Considerations
+
+ A critical consideration is how to ensure the randomness of this
+ post-quantum preshared key. Quantum computers are able to perform
+ Grover's algorithm [GROVER]; that effectively halves the size of a
+ symmetric key. In addition, an adversary impersonating the server,
+ even with a conventional computer, can perform a dictionary search
+ over plausible post-quantum preshared key values. The strongest
+ practice is to ensure that any post-quantum preshared key contains at
+ least 256 bits of entropy; this will provide 128 bits of post-quantum
+ security, while providing security against conventional dictionary
+ attacks. That provides the security equivalent to Category 5 as
+ defined in the NIST Post-Quantum Cryptography Call for Proposals
+ [NISTPQCFP]. Deriving a post-quantum preshared key from a password,
+ name, or other low-entropy source is not secure because of these
+ known attacks.
+
+ With this protocol, the computed SK_d is a function of the PPK.
+ Assuming that the PPK has sufficient entropy (for example, at least
+ 2^(256) possible values), even if an attacker was able to recover the
+ rest of the inputs to the PRF function, it would be infeasible to use
+ Grover's algorithm with a quantum computer to recover the SK_d value.
+ Similarly, all keys that are a function of SK_d, which include all
+ Child SA keys and all keys for subsequent IKE SAs (created when the
+ initial IKE SA is rekeyed), are also quantum secure (assuming that
+ the PPK was of high enough entropy and that all the subkeys are
+ sufficiently long).
+
+ An attacker with a quantum computer that can decrypt the initial IKE
+ SA has access to all the information exchanged over it, such as
+ identities of the peers, configuration parameters, and all negotiated
+ IPsec SA information (including traffic selectors), with the
+ exception of the cryptographic keys used by the IPsec SAs, which are
+ protected by the PPK.
+
+ Deployments that treat this information as sensitive or that send
+ other sensitive data (like cryptographic keys) over IKE SAs MUST
+ rekey the IKE SA before the sensitive information is sent to ensure
+ this information is protected by the PPK. It is possible to create a
+ childless IKE SA as specified in [RFC6023]. This prevents Child SA
+ configuration information from being transmitted in the original IKE
+ SA that is not protected by a PPK. Some information related to IKE
+ SA that is sent in the IKE_AUTH exchange, such as peer identities,
+ feature notifications, vendor IDs, etc., cannot be hidden from the
+ attack described above, even if the additional IKE SA rekey is
+ performed.
+
+ In addition, the policy SHOULD be set to negotiate only quantum-
+ secure symmetric algorithms; while this RFC doesn't claim to give
+ advice as to what algorithms are secure (as that may change based on
+ future cryptographical results), below is a list of defined IKEv2 and
+ IPsec algorithms that should not be used, as they are known to
+ provide less than 128 bits of post-quantum security:
+
+ * Any IKEv2 encryption algorithm, PRF, or integrity algorithm with a
+ key size less than 256 bits.
+
+ * Any ESP transform with a key size less than 256 bits.
+
+ * PRF_AES128_XCBC and PRF_AES128_CBC: even though they can use as
+ input a key of arbitrary size, such input keys are converted into
+ a 128-bit key for internal use.
+
+ Section 3 requires the initiator to abort the initial exchange if
+ using PPKs is mandatory for it but the responder does not include the
+ USE_PPK notification in the response. In this situation, when the
+ initiator aborts the negotiation, it leaves a half-open IKE SA on the
+ responder (because IKE_SA_INIT completes successfully from the
+ responder's point of view). This half-open SA will eventually expire
+ 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 a
+ denial-of-service (DoS) attack and take protective measures (see
+ [RFC8019] for more details). In this situation, it is RECOMMENDED
+ that the initiator cache the negative result of the negotiation and
+ not attempt to create it again for some time. This period of time
+ may vary, but it is believed that waiting for at least few minutes
+ will not cause the responder to treat it as a DoS attack. Note that
+ this situation would most likely be a result of misconfiguration, and
+ some reconfiguration of the peers would probably be needed.
+
+ If using PPKs is optional for both peers and they authenticate
+ themselves using digital signatures, then an attacker in between,
+ equipped with a quantum computer capable of breaking public key
+ operations in real time, is able to mount a downgrade attack by
+ removing the USE_PPK notification from the IKE_SA_INIT and forging
+ digital signatures in the subsequent exchange. If using PPKs is
+ mandatory for at least one of the peers or if a preshared key mode is
+ used for authentication, then the attack will be detected and the SA
+ won't be created.
+
+ If using PPKs is mandatory for the initiator, then an attacker able
+ to eavesdrop and inject packets into the network can prevent creation
+ of an IKE SA by mounting the following attack. The attacker
+ intercepts the initial request containing the USE_PPK notification
+ and injects a forged response containing no USE_PPK. If the attacker
+ manages to inject this packet before the responder sends a genuine
+ response, then the initiator would abort the exchange. To thwart
+ this kind of attack, it is RECOMMENDED that, if using PPKs is
+ mandatory for the initiator and the received response doesn't contain
+ the USE_PPK notification, the initiator not abort the exchange
+ immediately. Instead, it waits for more response messages,
+ retransmitting the request as if no responses were received at all,
+ until either the received message contains the USE_PPK notification
+ or the exchange times out (see Section 2.4 of [RFC7296] for more
+ details about retransmission timers in IKEv2). If none of the
+ received responses contains USE_PPK, then the exchange is aborted.
+
+ If using a PPK is optional for both peers, then in case of
+ misconfiguration (e.g., mismatched PPK_ID), the IKE SA will be
+ created without protection against quantum computers. It is advised
+ that if a PPK was configured but was not used for a particular IKE
+ SA, then implementations SHOULD audit this event.
+
+7. IANA Considerations
+
+ This document defines three new Notify Message Types in the "IKEv2
+ Notify Message Types - Status Types" subregistry under the "Internet
+ Key Exchange Version 2 (IKEv2) Parameters" registry [IANA-IKEV2]:
+
+ +=======+================================+===========+
+ | Value | NOTIFY MESSAGES - STATUS TYPES | Reference |
+ +=======+================================+===========+
+ | 16435 | USE_PPK | RFC 8784 |
+ +-------+--------------------------------+-----------+
+ | 16436 | PPK_IDENTITY | RFC 8784 |
+ +-------+--------------------------------+-----------+
+ | 16437 | NO_PPK_AUTH | RFC 8784 |
+ +-------+--------------------------------+-----------+
+
+ Table 2
+
+ Per this document, IANA has created a new subregistry titled "IKEv2
+ Post-quantum Preshared Key ID Types" under the "Internet Key Exchange
+ Version 2 (IKEv2) Parameters" registry [IANA-IKEV2]. This new
+ subregistry is for the PPK_ID types used in the PPK_IDENTITY
+ notification defined in this specification. The initial contents of
+ the new subregistry are as follows:
+
+ +=========+==========================+===========+
+ | Value | PPK_ID Type | Reference |
+ +=========+==========================+===========+
+ | 0 | Reserved | RFC 8784 |
+ +---------+--------------------------+-----------+
+ | 1 | PPK_ID_OPAQUE | RFC 8784 |
+ +---------+--------------------------+-----------+
+ | 2 | PPK_ID_FIXED | RFC 8784 |
+ +---------+--------------------------+-----------+
+ | 3-127 | Unassigned | RFC 8784 |
+ +---------+--------------------------+-----------+
+ | 128-255 | Reserved for Private Use | RFC 8784 |
+ +---------+--------------------------+-----------+
+
+ Table 3
+
+ The PPK_ID type value 0 is reserved; values 3-127 are to be assigned
+ by IANA; and values 128-255 are for private use among mutually
+ consenting parties. To register new PPK_IDs in the Unassigned range,
+ a type name, a value between 3 and 127, and a reference specification
+ need to be defined. Changes and additions to the Unassigned range of
+ this registry are made using the Expert Review policy [RFC8126].
+ Changes and additions to the Reserved for Private Use range of this
+ registry are made using the Private Use policy [RFC8126].
+
+8. References
+
+8.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T.
+ Kivinen, "Internet Key Exchange Protocol Version 2
+ (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October
+ 2014, <https://www.rfc-editor.org/info/rfc7296>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+8.2. Informative References
+
+ [C2PQ] Hoffman, P., "The Transition from Classical to Post-
+ Quantum Cryptography", Work in Progress, Internet-Draft,
+ draft-hoffman-c2pq-07, 26 May 2020,
+ <https://tools.ietf.org/html/draft-hoffman-c2pq-07>.
+
+ [GROVER] Grover, L., "A Fast Quantum Mechanical Algorithm for
+ Database Search", STOC '96: Proceedings of the Twenty-
+ Eighth Annual ACM Symposium on the Theory of Computing,
+ pp. 212-219", DOI 10.1145/237814.237866, July 1996,
+ <https://doi.org/10.1145/237814.237866>.
+
+ [IANA-IKEV2]
+ IANA, "Internet Key Exchange Version 2 (IKEv2)
+ Parameters",
+ <https://www.iana.org/assignments/ikev2-parameters/>.
+
+ [NISTPQCFP]
+ NIST, "Submission Requirements and Evaluation Criteria for
+ the Post-Quantum Cryptography Standardization Process",
+ December 2016, <https://csrc.nist.gov/CSRC/media/Projects/
+ Post-Quantum-Cryptography/documents/call-for-proposals-
+ final-dec-2016.pdf>.
+
+ [RFC2409] Harkins, D. and D. Carrel, "The Internet Key Exchange
+ (IKE)", RFC 2409, DOI 10.17487/RFC2409, November 1998,
+ <https://www.rfc-editor.org/info/rfc2409>.
+
+ [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data
+ Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006,
+ <https://www.rfc-editor.org/info/rfc4648>.
+
+ [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>.
+
+ [RFC6030] Hoyer, P., Pei, M., and S. Machani, "Portable Symmetric
+ Key Container (PSKC)", RFC 6030, DOI 10.17487/RFC6030,
+ October 2010, <https://www.rfc-editor.org/info/rfc6030>.
+
+ [RFC7619] Smyslov, V. and P. Wouters, "The NULL Authentication
+ Method in the Internet Key Exchange Protocol Version 2
+ (IKEv2)", RFC 7619, DOI 10.17487/RFC7619, August 2015,
+ <https://www.rfc-editor.org/info/rfc7619>.
+
+ [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>.
+
+ [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
+ Writing an IANA Considerations Section in RFCs", BCP 26,
+ RFC 8126, DOI 10.17487/RFC8126, June 2017,
+ <https://www.rfc-editor.org/info/rfc8126>.
+
+Appendix A. Discussion and Rationale
+
+ The primary goal of this document is to augment the IKEv2 protocol to
+ provide protection against quantum computers without requiring novel
+ cryptographic algorithms. The idea behind this document is that
+ while a quantum computer can easily reconstruct the shared secret of
+ an (EC)DH exchange, it cannot as easily recover a secret from a
+ symmetric exchange. This document makes the SK_d (and thus also the
+ IPsec KEYMAT and any subsequent IKE SA's SKEYSEED) depend on both the
+ symmetric PPK and the Diffie-Hellman exchange. If we assume that the
+ attacker knows everything except the PPK during the key exchange and
+ there are 2^(n) plausible PPKs, then a quantum computer (using
+ Grover's algorithm) would take O(2^(n/2)) time to recover the PPK.
+ So, even if the (EC)DH can be trivially solved, the attacker still
+ can't recover any key material (except for the SK_ei, SK_er, SK_ai,
+ and SK_ar values for the initial IKE 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 allow an attacker with a quantum
+ computer to rederive the keying material for the initial IKE SA; this
+ was a compromise to allow the responder to select the correct PPK
+ quickly.
+
+ Another goal of this protocol is to minimize the number of changes
+ within the IKEv2 protocol, in particular, within the cryptography of
+ IKEv2. By limiting our changes to notifications and only adjusting
+ the SK_d, SK_pi, and SK_pr, it is hoped that this would be
+ implementable, even on systems that perform most of the IKEv2
+ processing in hardware.
+
+ A third goal is to be friendly to incremental deployment in
+ operational networks for which we might not want to have a global
+ shared key or for which quantum-secure IKEv2 is rolled out
+ incrementally. 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.
+
+ A fourth goal is to avoid violating any of the security properties
+ provided by IKEv2.
+
+Acknowledgements
+
+ We would like to thank Tero Kivinen, Paul Wouters, Graham Bartlett,
+ Tommy Pauly, Quynh Dang, and the rest of the IPSECME Working Group
+ for their feedback and suggestions for the scheme.
+
+Authors' Addresses
+
+ Scott Fluhrer
+ Cisco Systems
+
+ Email: sfluhrer@cisco.com
+
+
+ Panos Kampanakis
+ Cisco Systems
+
+ Email: pkampana@cisco.com
+
+
+ David McGrew
+ Cisco Systems
+
+ Email: mcgrew@cisco.com
+
+
+ Valery Smyslov
+ ELVIS-PLUS
+
+ Phone: +7 495 276 0211
+ Email: svan@elvis.ru