<?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.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-tls-mldsa-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <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-00"/>
    <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 fullname="Bas Westerbaan">
      <organization>Cloudflare</organization>
      <address>
        <email>bas@cloudflare.com</email>
      </address>
    </author>
    <date year="2025" month="May" day="16"/>
    <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://bwesterb.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/bwesterb/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 algorothm
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 "signature_algorithms" and "signature_algorithms_cert" 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-signatureschemes-types">
      <name>ML-DSA SignatureSchemes Types</name>
      <t>As defined in <xref target="RFC8446"/>, the SignatureScheme namespace is used for
the negotiation of signature scheme for authentication via the
"signature_algorithms" and "signature_algorithms_cert" extensions.
This document adds three new SignatureSchemes
types for the three ML-DSA parameter sets as follows.</t>
      <artwork><![CDATA[
enum {
  mldsa44(0x0904),
  mldsa65(0x0905),
  mldsa87(0x0906)
} SignatureScheme;
]]></artwork>
      <t>These correspond to ML-DSA-44, ML-DSA-65, and ML-DSA-87 defined
in <xref target="FIPS204"/> respectively. Note that these are different
from the HashML-DSA pre-hashed variantsadefined in Section 5.4 of <xref target="FIPS204"/>.</t>
      <t>The signature <bcp14>MUST</bcp14> be computed and verified as specified in
<xref section="4.4.3" sectionFormat="of" target="RFC8446"/>.</t>
      <t>The context parameter defined in <xref target="FIPS204"/> Algorithm 2 and 3
<bcp14>MUST</bcp14> be the empty string.</t>
      <t>The corresponding end-entity certificate when negotiated <bcp14>MUST</bcp14>
use id-ML-DSA-44, id-ML-DSA-65, id-ML-DSA-87 respectively as
defined in <xref target="I-D.ietf-lamps-dilithium-certificates"/>.</t>
      <t>The schemes defined in this document <bcp14>MUST NOT</bcp14> be used in TLS 1.2 <xref target="RFC5246"/>.
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 illegal_parameter alert.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</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 (please)</td>
            <td align="left">mldsa44</td>
            <td align="left">N</td>
            <td align="left">This document.</td>
          </tr>
          <tr>
            <td align="left">0x0905 (please)</td>
            <td align="left">mldsa65</td>
            <td align="left">N</td>
            <td align="left">This document.</td>
          </tr>
          <tr>
            <td align="left">0x0906 (please)</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="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="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="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="11" month="April" 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
   "Comments" column to all active registries that do not already have a
   "Comments" column.

   This document updates the following RFCs: 3749, 5077, 4680, 5246,
   5705, 5878, 6520, 7301, and 8447.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc8447bis-12"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-dilithium-certificates">
          <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="7" month="May" year="2025"/>
            <abstract>
              <t>   Digital signatures are used within X.509 certificates, Certificate
   Revocation Lists (CRLs), and to sign messages.  This document
   describes 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-09"/>
        </reference>
      </references>
    </references>
    <?line 138?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Alicja Kario, John Mattsson, and Rebecca Guthrie
    for their review and feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
