<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-sfluhrer-ipsecme-ikev2-mldsa-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.0 -->
  <front>
    <title abbrev="IKEv2 ML-DSA">IKEv2 Support of ML-DSA</title>
    <seriesInfo name="Internet-Draft" value="draft-sfluhrer-ipsecme-ikev2-mldsa-01"/>
    <author fullname="Scott Fluhrer">
      <organization>Cisco Systems</organization>
      <address>
        <email>sfluhrer@cisco.com</email>
      </address>
    </author>
    <date year="2025" month="July" day="28"/>
    <area>sec</area>
    <workgroup>IPsecME</workgroup>
    <keyword>ML-DSA</keyword>
    <abstract>
      <?line 47?>

<t>One IPsec area that would be impacted by Cryptographically Relevant
Quantum Computer (CRQC) is IKEv2 authentication based on traditional
asymmetric cryptograph algorithms: e.g RSA, ECDSA; which are widely
deployed authentication options of IKEv2.
NIST has recently standardized ML-DSA, which is a signature algorithm believed to be secure against Quantum Computers.
This document describes how to use ML-DSA with IKEv2 as an authentication scheme.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://sfluhrer.github.io/ikev2-mldsa-support/draft-sfluhrer-ikev2-mldsa-support.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-sfluhrer-ipsecme-ikev2-mldsa/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        IP Security Maintenance and Extensions Security Area mailing list (<eref target="mailto:cfrg@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ipsecme/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cfrg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/sfluhrer/ikev2-mldsa-support"/>.</t>
    </note>
  </front>
  <middle>
    <?line 56?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>A Cryptographically Relevant Quantum Computer (CRQC) could break
   traditional asymmetric cryptograph algorithms: e.g RSA, ECDSA; which
   are widely deployed authentication options of IKEv2.
   NIST has recently published the postquantum digital signature algorithm ML-DSA <xref target="FIPS204"/>.</t>
      <t>This document describes how to use this algorithm for authentication within IKEv2 <xref target="RFC7296"/>, as a replacement for the traditional signature algorithms (RSA, ECDSA).</t>
      <t>Each IPsec peer announce the support for ML-DSA authentication via
   SUPPORTED_AUTH_METHODS notification as defined in <xref target="RFC9593"/>,
   generates and verifies AUTH payload using ML-DSA.</t>
      <section anchor="background-on-ml-dsa">
        <name>Background on ML-DSA</name>
        <t>ML-DSA (as specified in FIPS 204) is a signature algorithm that is believed to be secure against attackers who have a Quantum Computer available to them.
   There are three strengths defined for it (with the parameter sets being known as ML-DSA-44, ML-DSA-65 and ML-DSA-87).
   In addition, for each defined parameter set, there are two versions, the 'pure' version (where ML-DSA directly signs the message) and a 'prehashed' version (where ML-DSA signs a hash that was computed outside of ML-DSA).
   For this protocol, we will always use the pure version.</t>
        <t>In addition, ML-DSA also has a 'context' input, which is a short string that is common to the sender and the recceiver.
   It is intended to allow for domain separation between separate uses of the same public key.</t>
        <t>FIPS 204 also allows ML-DSA to be run in either determanistic or 'hedged' mode (where randomness is applied to the signature operation).
   We place no requirement on which is used; the implementation should select based on the quality of their random number source.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="protocol-changes">
      <name>Protocol Changes</name>
      <section anchor="initial-negotiation">
        <name>Initial Negotiation</name>
        <t>Both sides will need to inform the other that they implement ML-DSA signatures.
To do so, they will use the <xref target="RFC9593"/> mechanism to specify support for ML-DSA signatures, using the Multi-octet Announcement, with the following Algorithm Idenfifiers (in hex):</t>
        <ul spacing="normal">
          <li>
            <t>ML-DSA-44 -&gt; <tt>06 09 60 86 48 01 65 03 04 03 11</tt></t>
          </li>
          <li>
            <t>ML-DSA-65 -&gt; <tt>06 09 60 86 48 01 65 03 04 03 12</tt></t>
          </li>
          <li>
            <t>ML-DSA-87 -&gt; <tt>06 09 60 86 48 01 65 03 04 03 13</tt></t>
          </li>
        </ul>
        <t>If an implementation supports multiple ML-DSA parameter sets, it will list every parameter set it does support.</t>
        <t>If the peer has not specified support for a parameter set in a SUPPORTED_AUTH_METHODS notify, that ML-DSA parameter set <bcp14>MUST NOT</bcp14> be used.</t>
        <t>In addition, the SIGNATURE_HASH_ALGORITHMS Notify payload must also be sent (see <xref target="RFC7427"/>), listing the supported hash functions.</t>
      </section>
      <section anchor="auth-payload-generation">
        <name>Auth Payload Generation</name>
        <t>If this implementation has an ML-DSA private key and the corresponding ML-DSA public certificate, and the peer has indicated support for the parameter set, the implementation will generate the AUTH payload as specified in section 3 of <xref target="RFC7427"/>, using the ML-DSA algorithm as the signature algorithm, and using the fixed context string "IKEv2 AUTH" (<tt>49 4b 45 76 32 20 41 55 54 48</tt>).</t>
        <t>That is, the implementation would take either the InitiatorSignedOctets string or the ResponderSignedOctets string (depending on whether they are the initiator or the responder, see section 2.15 of RFC 7296 for how those strings are constructed), compute the hash of that string (using one of the hashes listed in the peer's SIGNATURE_HASH_ALGORITHMS notify).
Then, the implementation hands that hash to ML-DSA to be signed (in pure mode, using the fixed context string "IKEv2 AUTH".
The resulting signature is the Signature Value.
Note that ML-DSA will hash the message to be signed again; this is expected.</t>
        <t>TODO: We've defined the method two different ways - if we keep both, we need to make sure that they are equivalent.</t>
      </section>
      <section anchor="auth-payload-validation">
        <name>Auth Payload Validation</name>
        <t>If this implementation receives a certificate with an ML-DSA public key, it will process the AUTH payload as implied by RFC7427.
That is, it will recover the hash function from the AlgorithmIdentifier ASN.1 object.
Then, it will take the ResponderSignedOctets or InitiatorSignedOctets string (depending on the whether they are the initiator or the responder), and then hash the string.
Then, it will before an ML-DSA verification, using the hash as the message, the public key from the certificate, the string "IKEv2 AUTH" as the context string, and the signature value from the AUTH payload.
If this signature verification fails, the implementation <bcp14>MUST</bcp14> reject the IKEv2 message.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The only security consideration that this adds is that the user must trust the strength of the ML-DSA signature operation.</t>
    </section>
    <section anchor="discussion">
      <name>Discussion</name>
      <t>We made several arbitrary design decisions in this draft.
This section contains the reasoning behind those design decision, and why we did not select the alternative possibilities.
Of course, these decisions are open to change - this is just a first cut.</t>
      <section anchor="ml-dsa-and-prehashing">
        <name>ML-DSA and Prehashing</name>
        <t>The signature architecture within IKE was designed around RSA (and later extended to ECDSA).
In this architecture, the actual message (the SignedOctets) are first hashed (using a hash that the verifier has indicated support for), and then passed for the remaining part of the signature generation processing.
That is, it is designed for signature algorithms that first apply one of a number of hash functions to the message and then perform processing on that hash.
ML-DSA doesn't fit cleanly into this architecture; internally it adds a prepend to the message to be signed, and then does a fixed SHAKE256 (generating 64 bytes).</t>
        <t>We see three ways to address this mismatch</t>
        <t>The first is to note that ML-DSA has prehashed parameter sets; that is, ones designed to sign a message that has been hashed by an external source.
At first place, this would appear to be an ideal solution, however it turns out that there are a number of practical issues.
The first is that the prehashed version of ML-DSA would appear to be rarely used, and so it is not unlikely that support for it within crypto libraries may be lacking.
The second is that the public keys for the prehashed versions of ML-DSA parameter sets use different OIDs; this means that the certificates for IKEv2 would necessarily be different than certificates for other protocols (and some CAs might not support issuing certificates for prehashed ML-DSA, again because of the lack of use).
The third is that some users have expressed a desire not to use the prehashed parameter sets of ML-DSA.</t>
        <t>The second is to note that, while IKEv2 normally acts this way, it doesn't always.
EdDSA has a similar constraint on not working cleanly with the standard 'hash and then sign' paradigm, and so the existing <xref target="RFC8420"/> provides an alternative method, which ML-DSA would cleanly fit into.
We could certainly adopt this same strategy; our concern would be that it might be more difficult for IKEv2 implementors which do not already have support for EdDSA.</t>
        <t>The third way (which this current draft adopts) is what we can refer to as 'fake prehashing'; IKEv2 would generate the hash as current, but instead of running ML-DSA in prehash mode, we have ML-DSA sign it in pure mode as if it was the message.
This is a violation of the spirit, if not the letter of FIPS 204.
However, it is secure (assuming the hash function is strong), and fits in cleanly with both the existing IKEv2 architecture, and what crypto libraries provide.
Because this doesn't have any practical downsides, we opted for this option.</t>
      </section>
      <section anchor="ml-dsa-context">
        <name>ML-DSA Context</name>
        <t>An additional feature that ML-DSA provides it allows the signer and the verifier to provide a 'context string'.
The signature would verify only if the context strings that are provided by both the signer and the verifier match.
The reason behind this is to ensure that if a public key is used for multiple purposes, a signature for one purpose cannot be used by an adversary in another.
In our case, if the same certificate where used to sign both IKEv2 and TLS exchanges, an adversary could not possibly take the signature from an TLS exchange and try to use it within an IKEv2 exchange.</t>
        <t>This really is not a necessary security safe guard; the messages that are actually signed in both cases are distinct enough that an adversary could not actually take advantage of this, even without the protection.</t>
        <t>However, given that ML-DSA does provide such a service, and it appears that crypto libraries do support a nonempty context, we cannot see a reason not to use it.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
      <t>The additional OIDs that this uses have been defined by NIST and do not need to be registered by IANA</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="FIPS204" target="https://doi.org/10.6028/NIST.FIPS.204">
          <front>
            <title>Module-Lattice-Based Digital Signature Standard</title>
            <author>
              <organization/>
            </author>
            <date year="2024" month="August"/>
          </front>
          <seriesInfo name="NIST" value="FIPS 204"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7296">
          <front>
            <title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="C. Kaufman" initials="C." surname="Kaufman"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="October" year="2014"/>
            <abstract>
              <t>This document describes version 2 of the Internet Key Exchange (IKE) protocol. IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs). This document obsoletes RFC 5996, and includes all of the errata for it. It advances IKEv2 to be an Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="79"/>
          <seriesInfo name="RFC" value="7296"/>
          <seriesInfo name="DOI" value="10.17487/RFC7296"/>
        </reference>
        <reference anchor="RFC7427">
          <front>
            <title>Signature Authentication in the Internet Key Exchange Version 2 (IKEv2)</title>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <author fullname="J. Snyder" initials="J." surname="Snyder"/>
            <date month="January" year="2015"/>
            <abstract>
              <t>The Internet Key Exchange Version 2 (IKEv2) protocol has limited support for the Elliptic Curve Digital Signature Algorithm (ECDSA). The current version only includes support for three Elliptic Curve groups, and there is a fixed hash algorithm tied to each group. This document generalizes IKEv2 signature support to allow any signature method supported by PKIX and also adds signature hash algorithm negotiation. This is a generic mechanism and is not limited to ECDSA; it can also be used with other signature algorithms.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7427"/>
          <seriesInfo name="DOI" value="10.17487/RFC7427"/>
        </reference>
        <reference anchor="RFC8420">
          <front>
            <title>Using the Edwards-Curve Digital Signature Algorithm (EdDSA) in the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document describes the use of the Edwards-curve Digital Signature Algorithm (EdDSA) in the Internet Key Exchange Protocol Version 2 (IKEv2).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8420"/>
          <seriesInfo name="DOI" value="10.17487/RFC8420"/>
        </reference>
        <reference anchor="RFC9593">
          <front>
            <title>Announcing Supported Authentication Methods in the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="V. Smyslov" initials="V." surname="Smyslov"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>This specification defines a mechanism that allows implementations of the Internet Key Exchange Protocol Version 2 (IKEv2) to indicate the list of supported authentication methods to their peers while establishing IKEv2 Security Associations (SAs). This mechanism improves interoperability when IKEv2 partners are configured with multiple credentials of different types for authenticating each other.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9593"/>
          <seriesInfo name="DOI" value="10.17487/RFC9593"/>
        </reference>
      </references>
    </references>
    <?line 193?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>No acknowledgements yet</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
