<?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.20 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tls-westerbaan-mldsa-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.24.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-tls-westerbaan-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="2024" month="November" day="15"/>
    <keyword>ML-DSA</keyword>
    <keyword>FIPS204</keyword>
    <abstract>
      <?line 49?>

<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-tls-westerbaan-mldsa.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-tls-westerbaan-mldsa/"/>.
      </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 55?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>ML-DSA <xref target="FIPS204"/> is a
post-quantum signature schemes standardised by NIST. It is a
module-lattice based scheme.</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 the pure versions and should not be confused
with prehashed variants such as HashML-DSA-44 also defined in <xref target="FIPS204"/>.</t>
      <t>Similarly, the context parameter defined in <xref target="FIPS204"/> Algorithm 2/Algorithm 3
<bcp14>MUST</bcp14> be the empty string.</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 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</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="3" month="November" year="2024"/>
            <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.

   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-10"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-dilithium-certificates">
          <front>
            <title>Internet X.509 Public Key Infrastructure: Algorithm Identifiers for 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="4" month="November" year="2024"/>
            <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-05"/>
        </reference>
      </references>
    </references>
    <?line 138?>

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

-->

</rfc>
