<?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.36 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-tls-mldsa-03" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="Use of ML-DSA in TLS 1.3">Use of ML-DSA in TLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-tls-mldsa-03"/>
    <author fullname="Tim Hollebeek">
      <organization>DigiCert</organization>
      <address>
        <email>tim.hollebeek@digicert.com</email>
      </address>
    </author>
    <author fullname="Sophie Schmieg">
      <organization>Google</organization>
      <address>
        <email>sschmieg@google.com</email>
      </address>
    </author>
    <author initials="B. E." surname="Westerbaan" fullname="Bas Westerbaan">
      <organization>Cloudflare</organization>
      <address>
        <email>bas@cloudflare.com</email>
      </address>
    </author>
    <date year="2026" month="May" day="06"/>
    <area>Security</area>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>ML-DSA</keyword>
    <keyword>FIPS204</keyword>
    <abstract>
      <?line 51?>

<t>This memo specifies how the post-quantum signature scheme ML-DSA (FIPS 204)
is used for authentication in TLS 1.3.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://tlswg.github.io/tls-mldsa/draft-ietf-tls-mldsa.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-tls-mldsa/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Transport Layer Security Working Group mailing list (<eref target="mailto:tls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/tlswg/tls-mldsa"/>.</t>
    </note>
  </front>
  <middle>
    <?line 57?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>ML-DSA is a post-quantum module-lattice-based digital signature algorithm
standardised by NIST in <xref target="FIPS204"/>.</t>
      <t>This memo specifies how ML-DSA can be negotiated for authentication in TLS 1.3
via the <tt>signature_algorithms</tt> and <tt>signature_algorithms_cert</tt> extensions.</t>
    </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="ml-dsa-signaturescheme-values">
      <name>ML-DSA SignatureScheme Values</name>
      <t>As defined in <xref target="RFC8446"/>, the SignatureScheme namespace is used for
the negotiation of signature scheme for authentication via the
<tt>signature_algorithms</tt> and <tt>signature_algorithms_cert</tt> extensions.
This document maps three new SignatureScheme values for the three
ML-DSA parameter sets listed in Section 4, Table 1 of <xref target="FIPS204"/>
to the SignatureAlgorithmIdentifiers from <xref target="RFC9881"/> as follows as follows.</t>
      <table anchor="schemes">
        <name>SignatureSchemes for ML-DSA</name>
        <thead>
          <tr>
            <th align="left">SignatureScheme</th>
            <th align="left">FIPS 204</th>
            <th align="left">Signature AlgorithmIdentifier</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">mldsa44(0x0904)</td>
            <td align="left">ML-DSA-44</td>
            <td align="left">id-ML-DSA-44 (2.16.840.1.101.3.4.3.17)</td>
          </tr>
          <tr>
            <td align="left">mldsa65(0x0905)</td>
            <td align="left">ML-DSA-65</td>
            <td align="left">id-ML-DSA-65 (2.16.840.1.101.3.4.3.18)</td>
          </tr>
          <tr>
            <td align="left">mldsa87(0x0906)</td>
            <td align="left">ML-DSA-87</td>
            <td align="left">id-ML-DSA-87 (2.16.840.1.101.3.4.3.19)</td>
          </tr>
        </tbody>
      </table>
      <t>Note that these are different from the HashML-DSA pre-hashed
variants defined in Section 5.4 of <xref target="FIPS204"/>,
which are not used here
because of the reasons laid out in <xref section="8.3" sectionFormat="of" target="RFC9881"/>.</t>
      <section anchor="certificate-chain">
        <name>Certificate Chain</name>
        <t>For the purpose of signalling support for signatures on certificates
as per <xref section="4.2.3" sectionFormat="of" target="RFC8446"/>, these values indicate support
for signing using the given AlgorithmIdentifier shown in <xref target="schemes"/>
as defined in <xref target="RFC9881"/>.</t>
      </section>
      <section anchor="handshake-signature">
        <name>Handshake Signature</name>
        <t>When one of those SignatureScheme values is used in a CertificateVerify message,
then the signature <bcp14>MUST</bcp14> be computed and verified as specified in
<xref section="4.4.3" sectionFormat="of" target="RFC8446"/>, using
Algorithm 2 (ML-DSA.Sign) and Algorithm 3 (ML-DSA.Verify)
of <xref target="FIPS204"/> respectively. The context (ctx) parameter
<bcp14>MUST</bcp14> be the empty string. Note that the context parameter of FIPS 204
is different from the context string of <xref section="4.4.3" sectionFormat="of" target="RFC8446"/>.</t>
        <t>The corresponding end-entity
certificate <bcp14>MUST</bcp14> use the corresponding AlgorithmIdentifier
from <xref target="schemes"/> in its SubjectPublicKeyInfo.</t>
        <t>The context parameter defined in <xref target="FIPS204"/> Algorithm 2 and 3
<bcp14>MUST</bcp14> be the empty string. Note that the context parameter of FIPS 204
is different from the context string of <xref section="4.4.3" sectionFormat="of" target="RFC8446"/>.</t>
      </section>
      <section anchor="tls-12">
        <name>TLS 1.2</name>
        <t>The schemes defined in this document <bcp14>MUST NOT</bcp14> be used in TLS 1.2 <xref target="RFC5246"/>
or earlier versions.
A peer that receives ServerKeyExchange or CertificateVerify message in a TLS
1.2 connection with schemes defined in this document <bcp14>MUST</bcp14> abort the connection
with an <tt>illegal_parameter</tt> alert.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="RFC8446"/> (eg. Appendices <xref target="RFC8446" section="C.2" sectionFormat="bare"/> and <xref target="RFC8446" section="E.1" sectionFormat="bare"/> of <xref target="RFC8446"/>
and <xref section="4.4.3" sectionFormat="of" target="RFC8446"/>) and <xref target="FIPS204"/> (Section 3.4 and 3.6) apply.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests new entries to the TLS SignatureScheme registry,
according to the procedures in <xref section="6" sectionFormat="of" target="RFC9847"/>.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Description</th>
            <th align="left">Recommended</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0x0904</td>
            <td align="left">mldsa44</td>
            <td align="left">N</td>
            <td align="left">This document.</td>
          </tr>
          <tr>
            <td align="left">0x0905</td>
            <td align="left">mldsa65</td>
            <td align="left">N</td>
            <td align="left">This document.</td>
          </tr>
          <tr>
            <td align="left">0x0906</td>
            <td align="left">mldsa87</td>
            <td align="left">N</td>
            <td align="left">This document.</td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC9881">
          <front>
            <title>Internet X.509 Public Key Infrastructure -- Algorithm Identifiers for the Module-Lattice-Based Digital Signature Algorithm (ML-DSA)</title>
            <author fullname="J. Massimo" initials="J." surname="Massimo"/>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="B. E. Westerbaan" initials="B. E." surname="Westerbaan"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>Digital signatures are used within X.509 certificates and Certificate Revocation Lists (CRLs), and to sign messages. This document specifies the conventions for using FIPS 204, the Module-Lattice-Based Digital Signature Algorithm (ML-DSA) in Internet X.509 certificates and CRLs. The conventions for the associated signatures, subject public keys, and private key are also described.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9881"/>
          <seriesInfo name="DOI" value="10.17487/RFC9881"/>
        </reference>
        <reference anchor="FIPS204">
          <front>
            <title>Module-lattice-based digital signature standard</title>
            <author>
              <organization/>
            </author>
            <date month="August" year="2024"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.204"/>
          <refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
        </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="RFC5246">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5246"/>
          <seriesInfo name="DOI" value="10.17487/RFC5246"/>
        </reference>
        <reference anchor="RFC9847">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="December" year="2025"/>
            <abstract>
              <t>This document updates the changes to the TLS and DTLS IANA registries made in RFC 8447. It adds a new value, "D" for discouraged, to the "Recommended" column of the selected TLS registries and adds a "Comment" column to all active registries that do not already have a "Comment" column. Finally, it updates the registration request instructions.</t>
              <t>This document updates RFC 8447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9847"/>
          <seriesInfo name="DOI" value="10.17487/RFC9847"/>
        </reference>
      </references>
    </references>
    <?line 157?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to
    Alicja Kario,
    John Mattsson,
    Rebecca Guthrie,
    Alexander Bokovoy,
    Niklas Block,
    Ryan Appel,
    Loganaden Velvindron,
    David Benjamin,
    Viktor Dukhovni,
    Rob Sayre,
    Daniel Van Geest,
    Martin Thomson,
    Wang Guilin,
    and Nick Sullivan
    for their review and feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
dSKbShmRpwP2bzgyRA/SFAAA

-->

</rfc>
