<?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.34 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-tls-mldsa-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.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-02"/>
    <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="March" day="22"/>
    <area>Security</area>
    <workgroup>Transport Layer Security§</workgroup>
    <keyword>ML-DSA</keyword>
    <keyword>FIPS204</keyword>
    <abstract>
      <?line 50?>

<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 56?>

<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 adds three new SignatureScheme values for the three
ML-DSA parameter sets from <xref target="FIPS204"/> 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">Certificate 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-64 (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"/>.</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="MLDSACERTS"/>.</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"/>, and the corresponding end-entity
certificate <bcp14>MUST</bcp14> use the corresponding AlgorithmIdentifier from <xref target="schemes"/>.</t>
        <t>If the signature or public key is of the wrong length, the client <bcp14>MUST</bcp14>
treat this a verification failure, and thus terminate the handshake
with <tt>decrypt_error</tt> alert.</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 C.2, E.1
and Section 4.4.3) 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="TLSIANA"/>.</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="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="TLSIANA">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>Venafi</organization>
            </author>
            <author fullname="Sean Turner" initials="S." surname="Turner">
              <organization>sn3rd</organization>
            </author>
            <date day="21" month="July" year="2025"/>
            <abstract>
              <t>   This document updates the changes to 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.

   This document updates RFC 8447.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc8447bis-15"/>
        </reference>
        <reference anchor="MLDSACERTS">
          <front>
            <title>Internet X.509 Public Key Infrastructure - Algorithm Identifiers for the Module-Lattice-Based Digital Signature Algorithm (ML-DSA)</title>
            <author fullname="Jake Massimo" initials="J." surname="Massimo">
              <organization>AWS</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>AWS</organization>
            </author>
            <author fullname="Sean Turner" initials="S." surname="Turner">
              <organization>sn3rd</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="30" month="September" year="2025"/>
            <abstract>
              <t>   Digital signatures are used within X.509 certificates, 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 certificate revocation lists.  The conventions for
   the associated signatures, subject public keys, and private key are
   also described.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-dilithium-certificates-13"/>
        </reference>
      </references>
    </references>
    <?line 150?>

<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, and Nick Sullivan
    for their review and feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
pQzJNZ/9B+1OC25FEwAA

-->

</rfc>
