<?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.4.4) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-yusef-tls-pqt-dual-certs-00" category="std" consensus="true" submissionType="IETF" xml:lang="en" updates="RFC9261, RFC8446" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="PQ/T Dual Certs in TLS">Post-Quantum Traditional (PQ/T) Hybrid Authentication with Dual Certificates in TLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-yusef-tls-pqt-dual-certs-00"/>
    <author initials="R." surname="Shekh-Yusef" fullname="Rifaat Shekh-Yusef">
      <organization>Ciena</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>rifaat.s.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization abbrev="H-BRS">University of Applied Sciences Bonn-Rhein-Sieg</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization>Entrust</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="Y." surname="Sheffer" fullname="Yaron Sheffer">
      <organization>Intuit</organization>
      <address>
        <postal>
          <country>Israel</country>
        </postal>
        <email>yaronf.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="T." surname="Reddy" fullname="Tirumaleswar Reddy">
      <organization>Nokia</organization>
      <address>
        <postal>
          <country>India</country>
        </postal>
        <email>kondtir@gmail.com</email>
      </address>
    </author>
    <author initials="Y." surname="Rosomakho" fullname="Yaroslav Rosomakho">
      <organization>Zscaler</organization>
      <address>
        <email>yrosomakho@zscaler.com</email>
      </address>
    </author>
    <date year="2025" month="June" day="18"/>
    <area>sec</area>
    <workgroup>TLS Working Group</workgroup>
    <keyword>PKI</keyword>
    <keyword>Post-Quantum Traditional (PQ/T) Hybrid Authentication</keyword>
    <keyword>PQC</keyword>
    <keyword>TLS</keyword>
    <abstract>
      <?line 66?>

<t>This document extends the TLS 1.3 authentication mechanism to allow the negotiation and use of two signature algorithms to enable dual-algorithm hybrid authentication, ensuring that an attacker would need to break both algorithms to compromise the session. The two signature algorithms come from two independent certificates that together produce a single <tt>Certificate</tt> and <tt>CertificateVerify</tt> message.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Transport Layer Security  mailing list (tls@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/hannestschofenig/tls-dual-certs"/>.</t>
    </note>
  </front>
  <middle>
    <?line 70?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>There are several potential mechanisms to address concerns related to the anticipated emergence of cryptographically relevant quantum computers (CRQCs). While the encryption-related aspects are covered in other documents, this document focuses on the authentication component of the <xref target="TLS"/> handshake.</t>
      <t>One approach is the use of dual certificates: issuing two distinct certificates for the same end entity — one using a traditional algorithm (e.g., <xref target="ECDSA"/>), and the other using a post-quantum (PQ) algorithm (e.g., <xref target="ML-DSA"/>).</t>
      <t>This document defines how TLS 1.3 can utilize such certificates to enable dual-algorithm authentication, ensuring that an attacker would need to break both algorithms to compromise the session.</t>
      <t>It also addresses the challenges of integrating hybrid authentication in TLS 1.3 while balancing backward compatibility, forward security, and deployment practicality.</t>
      <t>This document defines a new extension <tt>dual_signature_algorithms</tt> to negotiate support for two categories of signature algorithms, typically one set of classic schemes and one set of PQ schemes. It also makes changes to the <tt>Certificate</tt> and <tt>CertificateVerify</tt> messages to take advantage of both certificates when authenticating the end entity.</t>
      <t>This method exemplifies a PQ/T hybrid protocol with non-composite authentication as defined in
 <xref section="4" sectionFormat="of" target="PQT-TERMS"/>, where two single-algorithm schemes are used in parallel: when the certificate type is X.509, each certificate chain uses the same format as in standard PKI, and both chains together provide hybrid assurance without modifying the X.509 certificate structure. While this approach does not produce a single cryptographic hybrid signature, it ensures that both certificates are presented, validated, and cryptographically bound to the TLS handshake transcript. This specification is also compatible with other certificate types defined in the TLS Certificate Types registry defined in <xref section="14" sectionFormat="of" target="IANA-TLS"/> provided that both components of the dual are of the same type. This document assumes X.509 certificates for all explanatory text.</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="scope">
      <name>Scope</name>
      <t>The approach described herein is also compatible with FIPS-compliant deployments, as it supports the continued use of FIPS-approved traditional signature algorithms during the TLS handshake.</t>
      <t>The proposed mechanism is fully backward compatible: traditional certificates and authentication methods remain functional with existing TLS 1.3 implementations. As cryptographically relevant quantum computers (CRQCs) emerge, deployments can transition by gradually disabling traditional authentication and enabling post-quantum–only authentication. This strategy offers a smooth migration path, ensuring long-term cryptographic agility, regulatory compliance, and operational continuity without disrupting existing infrastructure.</t>
    </section>
    <section anchor="design-overview">
      <name>Design Overview</name>
      <t>This document introduces a mechanism to enable dual-certificate authentication in TLS 1.3. The primary objective is to allow each TLS peer to present two certificate chains requiring an attacker to break both authentication algorithms to impersonate a peer. Typically one of the certificate chains is using a traditional cryptographic algorithms while the second leverages post-quantum (PQ) cryptography.</t>
      <t>The design builds on existing TLS 1.3 structures and introduces minimal protocol changes. It is applicable to both client and server authentication and is compatible with the Exported Authenticators mechanism <xref target="EXPORTED-AUTH"/>.</t>
      <t>A full set of informal design requirements for this specification can be found in <xref target="sec-design-requirements"/>.</t>
      <section anchor="signature-algorithms-negotiation">
        <name>Signature Algorithms Negotiation</name>
        <t>A new extension, <tt>dual_signature_algorithms</tt>, is defined to negotiate support for two distinct categories of signature algorithms. The extension carries two disjoint lists: one for classical signature algorithms and one for post-quantum signature algorithms.</t>
        <ul spacing="normal">
          <li>
            <t>In the <tt>ClientHello</tt>, this extension indicates the client's supported classical and PQ signature algorithms for dual certificate server authentication.</t>
          </li>
          <li>
            <t>In the <tt>CertificateRequest</tt>, this extension indicates the server's supported classical and PQ signature algorithms for dual certificate client authentication.</t>
          </li>
        </ul>
        <t>This allows both endpoints to signal independently two distinct algorithms for dual authentication.</t>
        <t>The <tt>dual_signature_algorithms</tt> can also be used in <tt>extensions</tt> of <tt>CertificateRequest</tt> and <tt>ClientCertificateRequest</tt> structures of Authenticator Request message of Exported Authenticators as defined in <xref section="4" sectionFormat="of" target="EXPORTED-AUTH"/>.</t>
        <t>The <tt>dual_signature_algorithms</tt> extension does not replace <tt>signature_algorithms</tt>. Since <tt>signature_algorithms</tt> is required any time that certificate-based authentication is requested according to <xref section="4.2.3" sectionFormat="of" target="TLS"/>, TLS peers <bcp14>MUST</bcp14> include the <tt>signature_algorithms</tt> extension regardless of whether <tt>dual_signature_algorithms</tt> is used. The <tt>signature_algorithms</tt> extension indicates algorithms acceptable for single-certificate authentication and <bcp14>MUST</bcp14> contain either a non-empty list of such algorithms or be empty if only dual-certificate authentication is acceptable.</t>
      </section>
      <section anchor="certificate-chain-encoding">
        <name>Certificate Chain Encoding</name>
        <t>TLS 1.3 defines the <tt>Certificate</tt> message to carry a list of certificate entries representing a single chain. This document reuses the same structure to convey two certificate chains by concatenating them and inserting a delimiter in the form of a zero-length certificate entry.</t>
        <t>A zero-length certificate is defined as a <tt>CertificateEntry</tt> with an empty <tt>cert_data</tt> field and omitted <tt>extensions</tt> field. TLS 1.3 prohibits the use of empty certificate entries, making this delimiter unambiguous. Implementations <bcp14>MUST</bcp14> treat all entries before the zero-length delimiter as the first certificate chain (typically classic), and all entries after it as the second certificate chain (typically post-quantum).</t>
        <t>This encoding applies equally to the <tt>CompressedCertificate</tt> message defined in <xref target="COMPRESS-CERT"/> and to the <tt>Certificate</tt> message of Exported Authenticators as defined in <xref section="5.2.1" sectionFormat="of" target="EXPORTED-AUTH"/>.</t>
        <t>Since TLS 1.3 supports only a single certificate type in each direction, both certificate chains <bcp14>MUST</bcp14> either contain X.509 certificates or certificates of type specified in:</t>
        <ul spacing="normal">
          <li>
            <t><tt>server_certificate_type</tt> extension in a <tt>EncryptedExtensions</tt> message for Server certificates</t>
          </li>
          <li>
            <t><tt>client_certificate_type</tt> extension in a <tt>EncryptedExtensions</tt> message for Client certificates</t>
          </li>
        </ul>
        <t>Note that according to <xref section="5.2.1" sectionFormat="of" target="EXPORTED-AUTH"/> Exported Authenticators support only X.509 certificates.</t>
      </section>
      <section anchor="certificateverify-signatures">
        <name>CertificateVerify Signatures</name>
        <t>The <tt>CertificateVerify</tt> message is extended to include two digital signatures:</t>
        <ol spacing="normal" type="1"><li>
            <t>One computed using a signature algorithm selected from the first list of the <tt>dual_signature_algorithms</tt> extension.</t>
          </li>
          <li>
            <t>One computed using a signature algorithm selected from the second list of the <tt>dual_signature_algorithms</tt> extension.</t>
          </li>
        </ol>
        <t>Each signature is computed over the transcript hash as specified in TLS 1.3, but with distinct context strings to domain-separate the two operations.</t>
        <t>This encoding applies equally to the <tt>CertificateVerify</tt> message of Exported Authenticators as defined in <xref section="5.2.2" sectionFormat="of" target="EXPORTED-AUTH"/>.</t>
        <t>The order of the signatures in the message <bcp14>MUST</bcp14> correspond to the order of the certificate chains in the Certificate message: the first signature <bcp14>MUST</bcp14> correspond to a classical algorithm from <tt>first_signature_algorithms</tt> list of <tt>dual_signature_algorithms</tt> extension, while the second signature <bcp14>MUST</bcp14> correspond to a PQ algorithm from <tt>second_signature_algorithms</tt> list of <tt>dual_signature_algorithms</tt> extension.</t>
      </section>
      <section anchor="common-chains">
        <name>Common Chains</name>
        <t>In order to lessen operational burden on Certification Authority (CA) operators, the two certificates of the dual <bcp14>MAY</bcp14> be issued from the same CA. For example, during the PQC migration, a CA operator might wish to stand up a root CA using a Level 5 PQC algorithm or a hash-based signature, and then continue to issue RSA and ECDSA certificates off that root.</t>
        <t>Negotiation of such a setup requires use of the <tt>signature_algorithms_cert</tt> TLS 1.3 extension, which is unmodified from its definition in <xref section="4.2.3" sectionFormat="of" target="TLS"/> and when present it applies equally to both chains of the dual.</t>
        <t>In order to optimize bandwidth and avoid sending duplicate copies of the same chain, when constructing a <tt>Certificate</tt> message as described in <xref target="certificate"/>, the second certificate chain <bcp14>MAY</bcp14> consist of only an end-entity certificate.</t>
      </section>
    </section>
    <section anchor="protocol-changes">
      <name>Protocol Changes</name>
      <t>This section defines the normative changes to TLS 1.3 required to support dual-certificate authentication. These changes extend existing handshake messages and introduce the new extension.</t>
      <section anchor="dualsignaturealgorithms-extension">
        <name><tt>dual_signature_algorithms</tt> Extension</name>
        <section anchor="sec-structure">
          <name>Structure</name>
          <t>A new extension, <tt>dual_signature_algorithms</tt>, is defined to allow peers to advertise support for two distinct lists of signature algorithms, for example, classical and post-quantum.</t>
          <t><tt>SignatureSchemeList</tt> is defined in <xref section="4.2.3" sectionFormat="of" target="TLS"/>, which is reproduced here:</t>
          <figure>
            <name>TLS 1.3 SignatureSchemeList</name>
            <artwork><![CDATA[
struct {
     SignatureScheme supported_signature_algorithms<2..2^16-2>;
} SignatureSchemeList;
]]></artwork>
          </figure>
          <t>This document defines the <tt>DualSignatureSchemeList</tt> extension to extend TLS 1.3's <tt>SignatureSchemesList</tt> in the obvious way to contain two lists.</t>
          <figure>
            <name>Contents of dual_signature_algorithms extension</name>
            <artwork type="ascii-art"><![CDATA[
struct {
    SignatureScheme first_signature_algorithms<2..2^16-2>;
    SignatureScheme second_signature_algorithms<2..2^16-2>;
} DualSignatureSchemeList;
]]></artwork>
          </figure>
          <t>SignatureScheme is a 2-octet value identifying a supported signature algorithm as defined in TLS SignatureScheme IANA registry.</t>
          <t>The <tt>dual_signature_algorithms</tt> extension <bcp14>MAY</bcp14> contain common elements with <tt>signature_algorithms</tt> if the peer wishes to advertize that it will accept a certain algorithm either standalone or as part of a dual signature. Listing an algorithm in <tt>signature_algorithms</tt> does not imply that it would be acceptable as part of a dual signature unless that algorithm also appears in one of the lists in <tt>dual_signature_algorithms</tt>. See <xref target="sec-policy-examples"/> for examples of cryptographic policies, and how to set <tt>signature_algorithms</tt> and <tt>dual_signature_algorithms</tt> to implement those policies.</t>
          <t>When parsing <tt>DualSignatureSchemeList</tt>, implementations <bcp14>MUST NOT</bcp14> make assumptions about which sub-list a given algorithm will appear in. For example, an implementation <bcp14>MUST NOT</bcp14> assume that PQ algorithms will appear in the first list and PQ in the second. As a test, if a TLS handshake containing a <tt>DualSignatureSchemeList</tt> succeeds, then an equivalent TLS handshake containing an equivalent <tt>DualSignatureSchemeList</tt> but with the first and second lists swapped <bcp14>MUST</bcp14> also succeed. However, it is not required that these two test cases result in the same selected signature algorithm and certificate. See <xref target="appdx-config"/> for a suggested configuration mechanism for selecting a preferred pair of algorithms.</t>
        </section>
        <section anchor="use-in-handshake-and-exported-authenticator-messages">
          <name>Use in Handshake and Exported Authenticator Messages</name>
          <t>The client <bcp14>MAY</bcp14> include this extension in <tt>ClientHello</tt> message to indicate the different combinations of dual algorithms it supports for verifying the server's signature. The server <bcp14>MAY</bcp14> include this extension in <tt>CertificateRequest</tt> message to indicate the different categories of algorithms it supports for verifying the client's signature. This extension <bcp14>MAY</bcp14> be included in an Authenticator Request by the requestor to signal support for dual certificates in the response.</t>
          <t>If the extension is present in <tt>ClientHello</tt>, <tt>CertificateRequest</tt> of <xref target="TLS"/> or Authenticator Request defined in <xref section="4" sectionFormat="of" target="EXPORTED-AUTH"/>, the peer <bcp14>MAY</bcp14> respond with a dual-certificate authentication structure. If the extension is absent, the peer <bcp14>MUST NOT</bcp14> send a two certificate chains or two signatures.</t>
          <t>The presence or absence of the <tt>dual_signature_algorithms</tt> indicates whether dual authentication is supported, but does not mandate it. The peer <bcp14>MAY</bcp14> select an authenticator advertised in a different extension, such as selecting a single algorithm from <tt>signature_algorithms</tt> and proceeding with single-algorithm <tt>Certificate</tt> and <tt>CertificateVerify</tt> messages as usual.</t>
        </section>
      </section>
      <section anchor="certificate">
        <name>Certificate Message Encoding</name>
        <t>TLS 1.3 defines the <tt>Certificate</tt> message as follows:</t>
        <figure>
          <name>TLS 1.3 Certificate message</name>
          <artwork type="ascii-art"><![CDATA[
struct {
    opaque certificate_request_context<0..2^8-1>;
    CertificateEntry certificate_list<0..2^24-1>;
} Certificate;
]]></artwork>
        </figure>
        <t>This document re-uses the <tt>Certificate</tt> structure as-is and extends the semantics of <tt>certificate_list</tt> to support two logically distinct certificate chains, encoded sequentially and separated by a delimiter.</t>
        <t>In order to support bandwidth optimization in the case that the two certificates are issued by the same CA, the second certificate chain <bcp14>MAY</bcp14> consist of only an end-entity certificate. In this case, validators <bcp14>SHOULD</bcp14> attempt to validate the second certificate using the chain provided with the first certificate.</t>
        <section anchor="delimiter">
          <name>Delimiter</name>
          <t>The delimiter is a zero-length certificate entry encoded as 3 bytes of 0x00. TLS 1.3 prohibits empty certificate entries, so this delimiter is unambiguous. The delimiter <bcp14>MUST NOT</bcp14> be sent to peers that did not indicate support for dual certificates by including the <tt>dual_signature_algorithms</tt> extension.</t>
          <t>This specification expands CertificateEntry structure from <xref section="4.4.2" sectionFormat="of" target="TLS"/> in the following way:</t>
          <t>Certificate parsing logic <bcp14>MUST</bcp14> reject messages that contain more than one zero-length delimiter, or that place the delimiter as the first or last entry in the certificate list. Certificate parsing logic is:</t>
          <figure>
            <name>Updated CertificateEntry structure definition</name>
            <artwork type="ascii-art"><![CDATA[
struct {
    select (is_delimiter) {
        case Delimiter: uint24 delimiter = 0;
        case Non_Delimiter:
          opaque cert_specific_data<1..2^24-1>;
          Extension extensions<0..2^16-1>;
    };
} CertificateEntry;
]]></artwork>
          </figure>
          <t>All entries before the delimiter are treated as the first certificate chain and <bcp14>MUST</bcp14> use algorithms from <tt>first_signature_algorithms</tt> list of <tt>dual_signature_algorithms</tt> extension, all entries after the delimiter are treated as the second certificate chain and <bcp14>MUST</bcp14> use algorithms from <tt>second_signature_algorithms</tt> list of <tt>dual_signature_algorithms</tt> extension. As specified in <xref section="4.4.2" sectionFormat="of" target="TLS"/>, end-entity certificate <bcp14>MUST</bcp14> be the first in both chains.</t>
          <t>A peer receiving this structure <bcp14>MUST</bcp14> validate each chain independently according to its corresponding signature algorithm. Implementers <bcp14>MAY</bcp14> wish to consider performing this verification in a timing-invariant way so as not to leak which certificate failed, for example if it failed for policy reasons rather than cryptographic reasons, however since this information is not hidden in a single-certificate TLS handshake, implementers <bcp14>MAY</bcp14> decide that this is not important.</t>
          <t>The first certificate chain <bcp14>MUST</bcp14> contain an end-entity certificate whose public key is compatible with one of the algorithms listed in the <tt>first_signature_algorithms</tt> section of <tt>dual_signature_algorithms</tt> extension. The second certificate chain <bcp14>MUST</bcp14> contain an end-entity certificate whose public key is compatible with one of the algorithms listed in the <tt>second_signature_algorithms</tt> section of <tt>dual_signature_algorithms</tt> extension. End-entity certificates of both chains <bcp14>MUST</bcp14> use different public keys.</t>
          <t>If a <tt>signature_algorithms_cert</tt> extension is absent, then all certificates of given chain <bcp14>MUST</bcp14> also use an algorithm from the corresponding list, but not necessarily the same one as the end-entity certificate. It is always allowed to provide mixed-algorithm certificate chains within the same list as long as relevant list contains more than one entry.</t>
          <t>This encoding applies equally to the <tt>CompressedCertificate</tt> message and to <tt>Certificate</tt> message of Exported Authenticators.</t>
        </section>
      </section>
      <section anchor="certificate-verify">
        <name>CertificateVerify Message</name>
        <t>TLS 1.3 defines the <tt>CertificateVerify</tt> message as follows:</t>
        <figure>
          <name>TLS 1.3 CertificateVerify message</name>
          <artwork><![CDATA[
struct {
     SignatureScheme algorithm;
     opaque signature<0..2^16-1>;
} CertificateVerify;
]]></artwork>
        </figure>
        <t>This document defines <tt>DualCertificateVerify</tt> which extends <tt>CertificateVerify</tt> to carry two independent signatures.</t>
        <figure>
          <name>DualCertificateVerify message</name>
          <artwork type="ascii-art"><![CDATA[
struct {
    SignatureScheme first_algorithm;
    opaque first_signature<0..2^16-1>;
    SignatureScheme second_algorithm;
    opaque second_signature<0..2^16-1>;
} DualCertificateVerify;
]]></artwork>
        </figure>
        <t>It is an error for any fields to be empty. In particular, the <tt>DualCertificateVerify</tt> structure <bcp14>MUST NOT</bcp14> be used to carry only a single signature. Both signatures included in a single <tt>DualCertificateVerify</tt> structure <bcp14>MUST</bcp14> use different signature algorithms. Violation of this rules <bcp14>MUST</bcp14> result in session termination with an <tt>illegal_parameter</tt> alert.</t>
        <t>The <tt>DualCertificateVerify</tt> message <bcp14>MAY</bcp14> be used in place of <tt>CertificateVerify</tt> anywhere that it is allowed.</t>
        <t>Each signature covers the transcript hash as in TLS 1.3, but with a distinct context string for domain separation, which are defined in <xref target="sec-context-strings"/>.</t>
        <section anchor="sec-context-strings">
          <name>Context Strings</name>
          <t>The context string is used as input to the data over which the signature is computed, consistent with the <tt>CertificateVerify</tt> construction defined in <xref section="4.4.3" sectionFormat="of" target="TLS"/>. The first signature uses the same context string as in the TLS 1.3 specification:</t>
          <ul spacing="normal">
            <li>
              <t>for a server context string is "TLS 1.3, server CertificateVerify"</t>
            </li>
            <li>
              <t>for a client context string is "TLS 1.3, client CertificateVerify"</t>
            </li>
          </ul>
          <t>The second signature uses a distinct context string to bind it to the secondary certificate:</t>
          <ul spacing="normal">
            <li>
              <t>for a server, secondary context string is "TLS 1.3, server secondary CertificateVerify"</t>
            </li>
            <li>
              <t>for a client, secondary context string is "TLS 1.3, client secondary CertificateVerify"</t>
            </li>
          </ul>
          <t>Implementations <bcp14>MUST</bcp14> verify both signatures and <bcp14>MUST</bcp14> associate each with its corresponding certificate chain.</t>
          <t>This dual-signature structure applies equally to <tt>CertificateVerify</tt> messages carried in Exported Authenticators with second signature using "Secondary Exported Authenticator" as the context string.</t>
        </section>
      </section>
      <section anchor="dual-certificate-policy-enforcement">
        <name>Dual Certificate Policy Enforcement</name>
        <t>Policy enforcement regarding the use of dual certificates is implementation-defined and driven by the authenticating peer. When dual certificate authentication is required by local policy, such as during high-assurance sessions or post-quantum transition periods, the authenticating endpoint <bcp14>MUST</bcp14> abort a handshake where only one signature or one certificate chain is present with an <tt>dual_certificate_required</tt> alert. Implementations <bcp14>MUST</bcp14> ensure that both certificates and both signatures are processed together and <bcp14>MUST NOT</bcp14> accept fallback to single-certificate authentication when dual-authentication is expected.</t>
        <t>A single composite certificate chain and signature such as defined by <xref target="TLS-COMPOSITE-MLDSA"/> <bcp14>MAY</bcp14> be an acceptable alternative during post-quantum transition period as long as corresponding signature scheme is listed in <tt>signature_algorithms</tt> extension.</t>
        <t>Additional policy examples are given in <xref target="sec-policy-examples"/>.</t>
      </section>
    </section>
    <section anchor="performance-considerations">
      <name>Performance Considerations</name>
      <t>The use of dual certificates increases the size of the certificate and certificate verify messages, which can result in larger TLS handshake messages. These larger payloads may cause packet fragmentation, retransmissions, and handshake delays, especially in constrained or lossy network environments.</t>
      <t>To mitigate these impacts, deployments can apply certificate chain optimization techniques, such as those described in <xref section="6.1" sectionFormat="of" target="PQ-RECOMMEND"/>, to minimize transmission overhead and improve handshake robustness.</t>
      <t>One implication of the design of this dual-algorithm negotiation mechanism is that the peer <bcp14>MUST</bcp14> honor any combination of algorithms from the <tt>first_signature_algorithms</tt> and <tt>second_signature_algorithms</tt> lists that the other peer chooses, even if it chooses the two largest or the two slowest algorithms. In constrained environments, it is important for TLS implementations to be configured with this in mind.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="weak-non-separability">
        <name>Weak Non-Separability</name>
        <t>This dual certificate scheme achieves Weak Non-Separability as defined in <xref target="HYBRID-SIGS"/>, which is defined as:</t>
        <ul empty="true">
          <li>
            <t>the guarantee that an adversary cannot simply “remove” one of the component signatures without evidence left behind.</t>
          </li>
        </ul>
        <t>As defined in <xref section="4.4" sectionFormat="of" target="TLS"/>, <tt>CertificateVerify</tt> (and therefore by extension <tt>DualCertificateVerify</tt>) contains signatures over the value <tt>Transcript-Hash(Handshake Context, Certificate)</tt>. In the dual certificate context, <tt>Certificate</tt> will contain both certificate chains, which is sufficient to cause the client to abort and therefore achieves Weak Non-Separability.</t>
      </section>
      <section anchor="signature-validation-requirements">
        <name>Signature Validation Requirements</name>
        <t>Implementations <bcp14>MUST</bcp14> strictly associate each signature with a <tt>DualCertificateVerify</tt> with the corresponding certificate chain, based on their order relative to the zero-length delimiter in the <tt>Certificate</tt> message. Failure to properly align signatures with their intended certificate chains could result in incorrect validation or misattribution of authentication.</t>
        <t>Both signatures in the <tt>DualCertificateVerify</tt> message <bcp14>MUST</bcp14> be validated successfully and correspond to their respective certificate chains. Implementations <bcp14>MUST</bcp14> treat failure to validate either signature as a failure of the authentication process. Silent fallback to single-certificate verification undermines the dual-authentication model and introduces downgrade risks. Implementations <bcp14>MAY</bcp14> short-circuit if the first signature or certificate chain fails, or <bcp14>MAY</bcp14> process both regardless to achieve timing invariance if the implementer deems in valuable to hide which signature or certificate validation failed, for example if one of the certificates was rejected for policy reasons rather than cryptographic reasons.</t>
      </section>
      <section anchor="side-channel-resistance">
        <name>Side-Channel Resistance</name>
        <t>Some implementations <bcp14>MAY</bcp14> wish to treat a dual signature as an atomic signing oracle and thus hide side-channels that would allow an attacker to distinguish the first algorithm from the second algorithm, for example if the first signature fails, still perform the second signature before returning an alert. However, in most cases this does not have practical value, for example if all algorithms offered as dual are also offered as single.</t>
      </section>
      <section anchor="cryptographic-independence-of-the-two-chains">
        <name>Cryptographic Independence Of The Two Chains</name>
        <t>This specification does not provide a mechanism to negotiate separate <tt>signature_algorithms_cert</tt> lists. Therefore while the two selected end-entity certificates will contain keys of different algorithms, it is possible for them to have certificate chains that use the same algorithm. In some cases this could be perfectly acceptable, for example if both chains are rooted in a hash-based signature or a composite, or if it is intentional for both end-entity certificates chain to the same root.</t>
        <t>However, in general to achieve the intended security guarantees of dual-algorithm protection, implementers and deployment operators <bcp14>SHOULD</bcp14> ensure that the two certificate chains rely on cryptographically independent primitives.</t>
      </section>
      <section anchor="certificate-usage-and-trust">
        <name>Certificate Usage and Trust</name>
        <t>Certificate chains <bcp14>MUST</bcp14> be validated independently with the same logic as if they were each presented in isolation, including trust anchors, certificate usage constraints, expiration, and revocation status. Implementations <bcp14>MUST NOT</bcp14> apply different policies and validation logic based on whether a certificate appeared as the first or second. In other words, if a dual certificate TLS handshake succeeds, then the same handshake <bcp14>MUST</bcp14> be able to succeed with the same two certificates, but the order of the first and second swapped in <tt>dual_certificate_algorithms</tt>, <tt>Certificates</tt>, and <tt>DualCertificateVerify</tt>.</t>
      </section>
      <section anchor="preventing-downgrade-attacks">
        <name>Preventing Downgrade Attacks</name>
        <t>TLS clients that are capable of accepting both traditional-only certificates and dual certificate configurations may remain vulnerable to downgrade attacks. In such a scenario, an attacker with access to a CRQC could forge a valid traditional certificate to impersonate the server and it does not indicate support for dual certificates. To mitigate this risk, clients should progressively phase out acceptance of traditional-only certificate chains once dual certificate deployment is widespread and interoperability with legacy servers is no longer necessary. During the transition period, accepting traditional-only certificate chains may remain necessary to maintain backward compatibility with servers that have not yet deployed dual certificates.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This specification registers the <tt>dual_signature_algorithms</tt> TLS extension and <tt>dual_certificate_required</tt> TLS alert.</t>
      <section anchor="tls-extension">
        <name>TLS extension</name>
        <t>IANA is requested to assign a new value from the TLS ExtensionType Values registry:</t>
        <ul spacing="normal">
          <li>
            <t>Extension Name: dual_signature_algorithms</t>
          </li>
          <li>
            <t>TLS 1.3: CH, CR</t>
          </li>
          <li>
            <t>DTLS-Only: N</t>
          </li>
          <li>
            <t>Recommended: Y</t>
          </li>
          <li>
            <t>Reference: [[This document]]</t>
          </li>
        </ul>
      </section>
      <section anchor="tls-alert">
        <name>TLS alert</name>
        <t>IANA is requested to add the following entry to the "TLS Alerts" registry:</t>
        <ul spacing="normal">
          <li>
            <t>Value: TBD</t>
          </li>
          <li>
            <t>Description: dual_certificate_required</t>
          </li>
          <li>
            <t>DTLS-OK: Y</t>
          </li>
          <li>
            <t>Reference: [[This document]]</t>
          </li>
          <li>
            <t>Comment: None</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>We would like to thank Suzanne Wibada (Université de Sherbrooke) for her reviews and comments during the work on the initial version of this document, and her willingness to implement the recommendation of this document.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="TLS">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <date day="17" month="February" year="2025"/>
            <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.

   This document updates RFCs 5705, 6066, 7627, and 8422 and obsoletes
   RFCs 5077, 5246, 6961, 8422, and 8446.  This document also specifies
   new requirements for TLS 1.2 implementations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc8446bis-12"/>
        </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>
        <reference anchor="EXPORTED-AUTH">
          <front>
            <title>Exported Authenticators in TLS</title>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document describes a mechanism that builds on Transport Layer Security (TLS) or Datagram Transport Layer Security (DTLS) and enables peers to provide proof of ownership of an identity, such as an X.509 certificate. This proof can be exported by one peer, transmitted out of band to the other peer, and verified by the receiving peer.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9261"/>
          <seriesInfo name="DOI" value="10.17487/RFC9261"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="ECDSA">
          <front>
            <title>Digital Signature Standard (DSS)</title>
            <author>
              <organization/>
            </author>
            <date month="February" year="2023"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.186-5"/>
          <refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
        </reference>
        <reference anchor="ML-DSA">
          <front>
            <title>Use of ML-DSA in TLS 1.3</title>
            <author fullname="Tim Hollebeek" initials="T." surname="Hollebeek">
              <organization>DigiCert</organization>
            </author>
            <author fullname="Sophie Schmieg" initials="S." surname="Schmieg">
              <organization>Google</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="16" month="May" year="2025"/>
            <abstract>
              <t>   This memo specifies how the post-quantum signature scheme ML-DSA
   (FIPS 204) is used for authentication in TLS 1.3.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-mldsa-00"/>
        </reference>
        <reference anchor="PQT-TERMS">
          <front>
            <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
            <author fullname="Flo D" initials="F." surname="D">
              <organization>UK National Cyber Security Centre</organization>
            </author>
            <author fullname="Michael P" initials="M." surname="P">
              <organization>UK National Cyber Security Centre</organization>
            </author>
            <author fullname="Britta Hale" initials="B." surname="Hale">
              <organization>Naval Postgraduate School</organization>
            </author>
            <date day="10" month="January" year="2025"/>
            <abstract>
              <t>   One aspect of the transition to post-quantum algorithms in
   cryptographic protocols is the development of hybrid schemes that
   incorporate both post-quantum and traditional asymmetric algorithms.
   This document defines terminology for such schemes.  It is intended
   to be used as a reference and, hopefully, to ensure consistency and
   clarity across different protocols, standards, and organisations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-pqt-hybrid-terminology-06"/>
        </reference>
        <reference anchor="IANA-TLS">
          <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="August" year="2018"/>
            <abstract>
              <t>This document describes a number of changes to TLS and DTLS IANA registries that range from adding notes to the registry all the way to changing the registration policy. These changes were mostly motivated by WG review of the TLS- and DTLS-related registries undertaken as part of the TLS 1.3 development process.</t>
              <t>This document updates the following RFCs: 3749, 5077, 4680, 5246, 5705, 5878, 6520, and 7301.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8447"/>
          <seriesInfo name="DOI" value="10.17487/RFC8447"/>
        </reference>
        <reference anchor="COMPRESS-CERT">
          <front>
            <title>TLS Certificate Compression</title>
            <author fullname="A. Ghedini" initials="A." surname="Ghedini"/>
            <author fullname="V. Vasiliev" initials="V." surname="Vasiliev"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>In TLS handshakes, certificate chains often take up the majority of the bytes transmitted.</t>
              <t>This document describes how certificate chains can be compressed to reduce the amount of data transmitted and avoid some round trips.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8879"/>
          <seriesInfo name="DOI" value="10.17487/RFC8879"/>
        </reference>
        <reference anchor="TLS-COMPOSITE-MLDSA">
          <front>
            <title>Use of Composite ML-DSA in TLS 1.3</title>
            <author fullname="Tirumaleswar Reddy.K" initials="T." surname="Reddy.K">
              <organization>Nokia</organization>
            </author>
            <author fullname="Tim Hollebeek" initials="T." surname="Hollebeek">
              <organization>DigiCert</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <date day="2" month="November" year="2024"/>
            <abstract>
              <t>   This document specifies how the post-quantum signature scheme ML-DSA
   [FIPS204], in combination with traditional algorithms RSA-
   PKCS#1v1.5,RSA-PSS, ECDSA, Ed25519, and Ed448 can be used for
   authentication in TLS 1.3.  The composite ML-DSA approach is
   beneficial in deployments where operators seek additional protection
   against potential breaks or catastrophic bugs in ML-DSA.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tls-reddy-composite-mldsa-00"/>
        </reference>
        <reference anchor="PQ-RECOMMEND">
          <front>
            <title>Post-Quantum Cryptography Recommendations for TLS-based Applications</title>
            <author fullname="Tirumaleswar Reddy.K" initials="T." surname="Reddy.K">
              <organization>Nokia</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <date day="25" month="February" year="2025"/>
            <abstract>
              <t>   Post-quantum cryptography presents new challenges for applications,
   end users, and system administrators.  This document highlights the
   unique characteristics of applications and offers best practices for
   implementing quantum-ready usage profiles in applications that use
   TLS and key supporting protocols such as DNS.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-reddy-uta-pqc-app-07"/>
        </reference>
        <reference anchor="HYBRID-SIGS">
          <front>
            <title>Hybrid signature spectrums</title>
            <author fullname="Nina Bindel" initials="N." surname="Bindel">
              <organization>SandboxAQ</organization>
            </author>
            <author fullname="Britta Hale" initials="B." surname="Hale">
              <organization>Naval Postgraduate School</organization>
            </author>
            <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
              <organization>SandboxAQ</organization>
            </author>
            <author fullname="Flo D" initials="F." surname="D">
              <organization>UK National Cyber Security Centre</organization>
            </author>
            <date day="9" month="January" year="2025"/>
            <abstract>
              <t>   This document describes classification of design goals and security
   considerations for hybrid digital signature schemes, including proof
   composability, non-separability of the component signatures given a
   hybrid signature, backwards/forwards compatibility, hybrid
   generality, and simultaneous verification.

   Discussion of this work is encouraged to happen on the IETF PQUIP
   mailing list pqc@ietf.org or on the GitHub repository which contains
   the draft: https://github.com/dconnolly/draft-ietf-pquip-hybrid-
   signature-spectrums

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-hybrid-signature-spectrums-06"/>
        </reference>
        <reference anchor="Signature-Spectrums">
          <front>
            <title>Hybrid signature spectrums</title>
            <author fullname="Nina Bindel" initials="N." surname="Bindel">
              <organization>SandboxAQ</organization>
            </author>
            <author fullname="Britta Hale" initials="B." surname="Hale">
              <organization>Naval Postgraduate School</organization>
            </author>
            <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
              <organization>SandboxAQ</organization>
            </author>
            <author fullname="Flo D" initials="F." surname="D">
              <organization>UK National Cyber Security Centre</organization>
            </author>
            <date day="9" month="January" year="2025"/>
            <abstract>
              <t>   This document describes classification of design goals and security
   considerations for hybrid digital signature schemes, including proof
   composability, non-separability of the component signatures given a
   hybrid signature, backwards/forwards compatibility, hybrid
   generality, and simultaneous verification.

   Discussion of this work is encouraged to happen on the IETF PQUIP
   mailing list pqc@ietf.org or on the GitHub repository which contains
   the draft: https://github.com/dconnolly/draft-ietf-pquip-hybrid-
   signature-spectrums

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-hybrid-signature-spectrums-06"/>
        </reference>
      </references>
    </references>
    <?line 387?>

<section anchor="open-design-issues">
      <name>Open Design Issues</name>
      <t>This section documents open design questions that are not resolved in this version, and for which the authors wish Working Group input.</t>
      <t>This section is for Working Group review, and to be removed before publication.</t>
      <section anchor="allow-mixed-certificate-chains">
        <name>Allow mixed certificate chains?</name>
        <t>Issue: TLS 1.3 has <tt>signature_algorithms</tt> to negotiate the signature used in the TLS handshake (which is also the public key of the EE cert), and optionally <tt>signature_algorithms_cert</tt> if the peer wishes to negotiate the CA's algorithms separately. Historically, cert chains are either exclusively RSA or exclusively ECDSA with mixed RSA-ECDSA chains being extremely rale and therefore <tt>signature_algorithms_certs</tt> is extremely rarely used in the wild.</t>
        <t>One design consideration here is whether we want to allow both the PQ and traditional chains to come off the same CA in order to lower operational burden for CAs needing to maintain separate PQ and Traditional PKIs. Consider for example an ML-DSA-87 CA that issues both ML-DSA-44 and RSA EEs. Or consider an SLH-DSA CA that issus ML-DSA-44 and RSA EEs.</t>
        <t>The question is whether to continue to support negotiation of CA algs separately from EE algs in a dual context.</t>
        <t>Design options:</t>
        <ol spacing="normal" type="1"><li>
            <t>When a <tt>signature_algorithms_certs</tt> extension is present, then it applies to both chains of the dual, and <tt>dual_signature_algorithms</tt> only applies to EE certs. If not present, then <tt>dual_signature_algorithms</tt> applies to both EE and chain. This is the option chosen for presentation in this version of the draft, and is believed to be most consistent with the intent of 8446, though it is has bad alignment with TLS implementations in the wild and increases implementation complexity.</t>
          </li>
          <li>
            <t>Mandate that <tt>dual_signature_algorithms</tt> always applies to both EE and chain, and take the position that <tt>signature_algorithms_cert</tt> only applies to the single-certificate case. This makes it impossible to have dual certs with mixed-algorithm chains.</t>
          </li>
          <li>
            <t>Add a <tt>dual_signature_algorithms_certs</tt> so that the algs of the two chains can be negotioted separately.</t>
          </li>
        </ol>
      </section>
      <section anchor="can-the-client-fail-if-it-doesnt-like-the-servers-choice">
        <name>Can the client fail if it doesn't like the server's choice?</name>
        <t>This design choice is about how expressive the negotiation mechanism is.</t>
        <t>This version presents a scheme which presents three lists: [Single], [DualFirst], [DualSecond]. It is implicit that the full set of combinations of [DualFirst] X [DualSecond] is supported. This design does not allow for the omission of combinations that make little sense, such as RSA-2048 with a PQC Level 5 scheme.</t>
        <t>Design options:</t>
        <ol spacing="normal" type="1"><li>
            <t>Make the negotiation mechanism more expressive (ie more complex) to cover this case.</t>
          </li>
          <li>
            <t>The client <bcp14>MUST</bcp14> honor any choice of pair from [DualFirst], [DualSecond]; ie if it supports the algorithms, then it supports them; it is not allowed to reject specific combinations. This option is presented in this version.</t>
          </li>
          <li>
            <t>The client <bcp14>MAY</bcp14> abort the connection if it does not accept the server's choice of combination.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="sec-design-requirements">
      <name>Informal Requirements for Dual TLS Certificate Support</name>
      <t>This section documents the design requirements that drove the development of this specification.</t>
      <t>This section is primarily intended to easy WG review and could be removed or simplified prior to RFC publication.</t>
      <section anchor="dual-algorithm-security">
        <name>Dual-Algorithm Security</name>
        <section anchor="weak-non-separability-1">
          <name>Weak Non-Separability</name>
          <t>The dual certificate authentication achieves, at least, Weak Non-Separability <xref target="Signature-Spectrums"/> at the time of verification of the <tt>CertificateVerify</tt> message.</t>
        </section>
      </section>
      <section anchor="dual-certificate-semantics">
        <name>Dual Certificate Semantics</name>
        <section anchor="independent-chain-usability">
          <name>Independent Chain Usability</name>
          <t>Each certificate chain (e.g., classic and PQ) must be independently usable for authentication, allowing endpoints to fall back to classic or PQ-only validation if necessary.</t>
        </section>
        <section anchor="unambiguous-chain-separation">
          <name>Unambiguous Chain Separation</name>
          <t>The mechanism must clearly distinguish and delimit multiple certificate chains to prevent ambiguity or misinterpretation.</t>
        </section>
      </section>
      <section anchor="use-case-and-deployment-flexibility">
        <name>Use Case and Deployment Flexibility</name>
        <section anchor="backward-compatibility">
          <name>Backward Compatibility</name>
          <t>When only one certificate chain is used, the mechanism must remain compatible with existing TLS 1.3 endpoints unaware of dual-certificate support or willing to use only a single certificate.</t>
        </section>
        <section anchor="forward-compatibility">
          <name>Forward Compatibility</name>
          <t>The mechanism must be capable of negotiating algorithms requiring dual certificates as well as algorithms that are acceptable standalone.</t>
          <t>As an example, the mechanism must be capable of expressing the following algorithm preference:</t>
          <ul empty="true">
            <li>
              <t>I would accept SLH-DSA-128s, Composite_MLDSA65_RSA2048 Composite_MLDSA65_ECDSA-P256, or ML-DSA-87 by themselves, or a dual-cert hybrid with one of [ML-DSA-44, ML-DSA-65] with one of [RSA, ECDSA-P256, ECDSA-P384].</t>
            </li>
          </ul>
        </section>
        <section anchor="negotiation-expressiveness">
          <name>Negotiation Expressiveness</name>
          <t>Signature algorithm negotiation, whether single or dual, must arrive at a unique selection of algorithms if and only if there is at least one configuration that is mutually-acceptable to client and server. Specifically, the negotiation mechanism must be expressive enough that clients can list all valid configurations that they would accept. Conversely, the negotiation mechanism must be specific enough that the client is not forced, through clumsiness of the negotiation mechanism to list configurations that in fact it does not support and thus rely on failures and retries to arrive at an acceptable algorithm selection.</t>
        </section>
        <section anchor="mitigation-of-side-channels">
          <name>Mitigation of Side Channels</name>
          <t>The mechanism should avoid constructions that enable side-channel attacks by observing how distinct algorithms are applied to the same message.</t>
          <t><em>MikeO: I have never seen this particular side-channel attack described in the literature, so I think a reference is needed. Also, side-channels is a very wide field, so it seems odd to pick out only a very specific type of side-channels to mention. I suggest removing this section.</em></t>
        </section>
        <section anchor="non-ambiguity-of-message-formats">
          <name>Non-ambiguity of Message Formats</name>
          <t>The order and pairing between certificates and their corresponding signatures must be explicit, so verifiers can unambiguously match them.</t>
        </section>
      </section>
      <section anchor="interaction-with-existing-tls-semantics">
        <name>Interaction With Existing TLS Semantics</name>
        <section anchor="protocol-flow-consistency">
          <name>Protocol Flow Consistency</name>
          <t>Dual certificate authentication must follow the same logical flow as standard TLS certificate authentication, including integration with <tt>Certificate</tt>, <tt>CertificateVerify</tt>, and <tt>Finished</tt> messages.</t>
        </section>
        <section anchor="mtls-support">
          <name>mTLS support</name>
          <t>The mechanism must support both server and client authentication scenarios. In case of mutual authentication dual certificates may be used unidirectionally as well as bidirectionally.</t>
        </section>
        <section anchor="exported-authenticators-compatibility">
          <name>Exported Authenticators Compatibility</name>
          <t>The mechanism must be usable with Exported Authenticators (RFC 9261) for mutual authentication in post-handshake settings.</t>
        </section>
        <section anchor="minimal-protocol-changes">
          <name>Minimal Protocol Changes</name>
          <t>Any additions or modifications to the TLS protocol must be minimal to ease deployment, reduce implementation complexity and minimize new security risks.</t>
          <t>This requirement favours a design which minimizes interaction with other TLS extensions -- ie where all other extensions related to certificates will transfer their semantics from a single-certificate to a dual-certificate setting in a trivial and obvious way and no special processing rules need to be described. Ditto for existing IANA registries relating to the TLS protocol.</t>
        </section>
      </section>
      <section anchor="non-goals">
        <name>Non-Goals</name>
        <t>The following are listed as non-goals; i.e. they are out-of-scope and will not be considered in the design of dual certificate authentication.</t>
        <section anchor="multiple-identities">
          <name>Multiple Identities</name>
          <t>This mechanism is specific to cryptographic algorithm migration. It is not a generic mechanism for using multiple identities in a single TLS handshake. In particular, this mechanism does not allow for negotiating two certificates with the same algorithm but containing different identifiers, or for negotiating two independent sets of <tt>certificate_authorities</tt>.</t>
        </section>
      </section>
    </section>
    <section anchor="appdx-config">
      <name>Suggested Configuration Mechanism</name>
      <t>This section gives a non-normative suggestion for a mechanism for configuration of algorithm selection preference in a dual-algorithm setting.</t>
      <t><xref target="sec-structure"/> requires that any supported algorithm <bcp14>MAY</bcp14> appear in either the first or second list within a <tt>DualSignatureSchemeList</tt>, however it leaves open the policy for selecting a pair.</t>
      <t>The suggested implementation enforces server-preference by allowing an operator to rank the provisioned certificates from most-preferred to least-preferred. Beginning with the most-preferred, if this algorithm appears in either list, then this is selected and selection continues down the list of provisioned certificates until one is found that appears on the other list. Implementations <bcp14>MUST NOT</bcp14> select two algorithms from the same list. Regardless of which algorithm was select first according to this preference selection routine, the certificates and signatures <bcp14>MUST</bcp14> be returned in the first and second slot according to which list they appeared in. This preference selection routine has the benefit that the algorithm selection is not affected by swapping the first and second lists, which allows for greater configuration flexibility and therefore greater overall interoperability.</t>
    </section>
    <section anchor="compatibility-with-composite-certificates">
      <name>Compatibility with composite certificates</name>
      <t>Clients and servers may choose to support composite certificate schemes, such as those defined in <xref target="TLS-COMPOSITE-MLDSA"/>. In these schemes, a single certificate contains a composite public key, and the associated signature proves knowledge of private keys of all components. However, from the perspective of the TLS protocol, this is a single certificate producing a single signature and so use of <tt>dual_signature_algorithms</tt> is not required.</t>
      <t>If a composite signature algorithm appears in the <tt>signature_algorithms</tt> extension, it can fulfill the client's requirements for both classical and PQ authentication in a single certificate and signature. It is up to the client policy to decide whether a composite certificate is acceptable in place of a dual-certificate configuration. This allows further deployment flexibility and compatibility with hybrid authentication strategies.</t>
      <t>The advantages of dual certificates over composites is operational flexibility for both Certification Authority operators and TLS server and client operators because two CAs and end-entity certificates, one classical and one PQ, allows for backwards compatible and dynamic negotiation of pure classical, pure PQ, or dual.</t>
      <t>The advantages of composites over dual certificates is that the certificate chains themselves are protected by dual-algorithms, which can be of great importance in use cases where trust stores are not easily updatable.</t>
      <t>It is worth noting that composites present as simply another signature algorithm, and as such nothing prevents them from being used as a component within a <tt>dual_signature_algorithm</tt>.</t>
    </section>
    <section anchor="sec-policy-examples">
      <name>Policy Examples</name>
      <t>This section provides examples of cryptographic policies and examples of how to set <tt>signature_algorithms</tt> and <tt>dual_signature_algorithms</tt> in order to implement that policy. This section is non-normative, and other ways of implementing the same policy are possible; in particular the first and second lists within a <tt>dual_signature_algorithms</tt> extension <bcp14>MAY</bcp14> be swapped in any of the examples below without changing the semantics.</t>
      <t>The scenarios in this section describe server authentication behavior based on client policy. Each case reflects a different client capability and authentication policy, based on how the client populates the <tt>signature_algorithms</tt>, <tt>signature_algorithms_cert</tt>, and <tt>dual_signature_algorithms</tt> extensions.</t>
      <t>For client authentication, the same principles apply with roles reversed: the server drives authentication requirements by sending a <tt>CertificateRequest</tt> message that includes appropriate extensions.</t>
      <section anchor="example-1-single-certificate">
        <name>Example 1: Single-certificate</name>
        <t>Client requires only one classical, pq or a composite signature. Client either does not support or is not configured to accept dual certificates.</t>
        <t>Client behavior:</t>
        <ul spacing="normal">
          <li>
            <t>Includes supported algorithms in <tt>signature_algorithms</tt> and optionally <tt>signature_algorithms_cert</tt>.</t>
          </li>
          <li>
            <t>Does not include <tt>dual_signature_algorithms</tt>.</t>
          </li>
        </ul>
        <t>To satisfy this client, the server <bcp14>MUST</bcp14> send a single certificate chain with compatible algorithms and include a single signature in <tt>CertificateVerify</tt>.</t>
      </section>
      <section anchor="example-2-dual-compatible-classic-primary-pq-optional">
        <name>Example 2: Dual-Compatible, Classic Primary, PQ Optional</name>
        <t>Client supports both classical and PQ authentication. It allows the server to send either a classical chain alone or both chains.</t>
        <t>Client behavior:</t>
        <ul spacing="normal">
          <li>
            <t>Includes supported classical algorithms in <tt>signature_algorithms</tt> and optionally <tt>signature_algorithms_cert</tt>.</t>
          </li>
          <li>
            <t>Includes supported classical algorithms again in <tt>first_signature_algorithms</tt> list of <tt>dual_signature_algorithms</tt> and supported PQ algorithms in <tt>second_signature_algorithms</tt> list of <tt>dual_signature_algorithms</tt>.</t>
          </li>
        </ul>
        <t>To satisfy this client, the server <bcp14>MUST</bcp14> either:</t>
        <ul spacing="normal">
          <li>
            <t>Provide a single certificate chain with compatible classical algorithms and include a single signature in <tt>CertificateVerify</tt>, or</t>
          </li>
          <li>
            <t>Provide a classical certificate chain followed by a PQ certificate chain as described in <xref target="certificate"/> and two signatures in <tt>DualCertificateVerify</tt> as described in <xref target="certificate-verify"/></t>
          </li>
        </ul>
      </section>
      <section anchor="example-3-strict-dual">
        <name>Example 3: Strict Dual</name>
        <t>Client requires both classical and PQ authentication to be performed simultaneously. It does not support composite certificates.</t>
        <t>Client behavior:</t>
        <ul spacing="normal">
          <li>
            <t>Includes an empty list in <tt>signature_algorithms</tt> (since this extension is required by [RFC8446] whenever certificate authentication is desired).</t>
          </li>
          <li>
            <t>Includes supported classical algorithms in <tt>first_signature_algorithms</tt> list of <tt>dual_signature_algorithms</tt> and supported PQ algorithms in <tt>second_signature_algorithms</tt> list of <tt>dual_signature_algorithms</tt>.</t>
          </li>
        </ul>
        <t>To satisfy this client, the server <bcp14>MUST</bcp14> provide a classical certificate chain followed by a PQ certificate chain as described in <xref target="certificate"/> and two signatures in <tt>CertificateVerify</tt> as described in <xref target="certificate-verify"/></t>
      </section>
      <section anchor="example-4-dual-compatible-pq-primary-classic-optional">
        <name>Example 4: Dual-Compatible, PQ Primary, Classic Optional</name>
        <t>Client supports both classical and PQ authentication. It allows the server to send either a PQ chain alone or both chains.</t>
        <t>Client behavior:</t>
        <ul spacing="normal">
          <li>
            <t>Includes supported PQ algorithms in <tt>signature_algorithms</tt> and optionally <tt>signature_algorithms_cert</tt>.</t>
          </li>
          <li>
            <t>Includes supported classical algorithms in <tt>first_signature_algorithms</tt> list of <tt>dual_signature_algorithms</tt> and supported PQ algorithms again in <tt>second_signature_algorithms</tt> list of <tt>dual_signature_algorithms</tt>.</t>
          </li>
        </ul>
        <t>To satisfy this client, the server <bcp14>MUST</bcp14> either:</t>
        <ul spacing="normal">
          <li>
            <t>Provide a single certificate chain with compatible PQ algorithms and include a single signature in <tt>CertificateVerify</tt>, or</t>
          </li>
          <li>
            <t>Provide a classical certificate chain followed by a PQ certificate chain as described in <xref target="certificate"/> and two signatures in <tt>CertificateVerify</tt> as described in <xref target="certificate-verify"/></t>
          </li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9192XYb17XgO76imn6wlAYQSZYVhbaj0BRlcUUDRdJxfB1f
sVB1AJyrQhVcp0AK1lJW/qH7sXutfu3f6P6TfMnd05lqAClbN71u+8VioeoM
++x5OpPJZHS5n3w2yqusTFdqP8nrdN5Mthuj5pOmMJP1T80k36TFJFN1YyZ3
7owa3RTw4t5JZZrJq01aNptVcl6nuW50VaZFcuvk1W/PbydPt7Na58nBplmq
stFZij8nV7pZJo9hwOQQBtRzfK5Mosvk/NlZcnf62d4onc1qdYkzwDj+XfvS
3gg+2U9Mk4/0ut5Pmnpjmnt37vz+zr1RVpVGlWZj9pNP4bn6dGQ2s5U2BqZu
tmtY9vHR+ZNRkZaL/USVoxwm3x+Vm9VM1fujtd4fJUk9z1Rumi1ucqsMPGmq
LPinLnPYj31gqrqp1dy4v7er6M+m1pl7OatWK/jW/arLQpd+GvW2mRQaoAqD
zKoCXptUv/mv8AuczipdrzWuGt9Na5UCfIzK9kZX8AxB911Vv4EXkm/qarMe
vVHbq6rOYT+T5ORPx/S/X3Je9OGrQ/wfTDL6ZAHHt5nB3Mu0LJVpTLas5qrU
i98isnhE2RuZJi3z12lR2Q2mMHBV04oS3Dps73SanC3Vm+Xke8S3UUL/zTdF
wbh4qudp2vS8UtWLtNQ/0wr3k0OtylR+yapN2dRbeJiWaW6fqlWqi/2kpvGm
ZqpVM//jAh9O4UjCFT2dJuduT50FPaVNd9+I1/NtqS9VbXSzTap5crBeF1rl
yVkGy8zg66+rspycLpUuJ2da2SEs0j+dfH161t7MN6pepeU23g2fwNQfAezo
7bRUTbif59Pk5aY0gAvNsrOd5/qN6vwc7+WoJPK6CXRXMNq0sqP9UfGXbQB/
T0c+n6u6s5zv0xoYRPxrvJpjwF3dWcyxqVNVxIvZ4ljzHQd9Pk1OVZ5vO6s4
1/VmlRbKXKV19Eq8lBfVG91BuuMy1y2ovKnKvNF1/yL2ABqnlalW6ZtltdcL
EFOkl/6d3qX8i8lgvXULALX95o8/8+80+WaNLA9J78nh7+89uDvGfzy8f//B
aDSZTAALgWGlWTManS+1Qb6zQYaVAGdSZW4SYA2WTydpzNhXKgOM1GYFPDJJ
i6K6ordLtagaza8AQ0iAipEqmqsqMXpRps2mVvD6oqqBs6wMfgzUPCtUQszE
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
U92/AxyaRbH2pwAA

-->

</rfc>
