<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-tls-trust-anchor-ids-07" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title>TLS Trust Anchor Identifiers</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-tls-trust-anchor-ids-07"/>
    <author initials="B." surname="Beck" fullname="Bob Beck">
      <organization>OpenSSL</organization>
      <address>
        <email>beck@openssl.org</email>
      </address>
    </author>
    <author initials="D." surname="Benjamin" fullname="David Benjamin">
      <organization>Google LLC</organization>
      <address>
        <email>davidben@google.com</email>
      </address>
    </author>
    <author initials="D." surname="O'Brien" fullname="Devon O'Brien">
      <organization/>
      <address>
        <email>devon.obrien@gmail.com</email>
      </address>
    </author>
    <author initials="K." surname="Nekritz" fullname="Kyle Nekritz">
      <organization>Meta</organization>
      <address>
        <email>knekritz@meta.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Security</area>
    <workgroup>Transport Layer Security</workgroup>
    <abstract>
      <?line 99?>

<t>This document defines the TLS Trust Anchors extension, a mechanism for a TLS client or server to select a certificate to present based on the peer's trusted certification authorities. It describes certification authorities more succinctly than the TLS Certificate Authorities extension.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://tlswg.github.io/tls-trust-anchor-ids/draft-ietf-tls-trust-anchor-ids.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-tls-trust-anchor-ids/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Transport Layer Security Working Group mailing list (<eref target="mailto:tls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/tlswg/tls-trust-anchor-ids"/>.</t>
    </note>
  </front>
  <middle>
    <?line 103?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>TLS <xref target="RFC9846"/> authentication uses X.509 certificates <xref target="RFC5280"/> to associate the <em>authenticating party's</em> TLS key with its application identifiers, such as DNS names. These associations are signed by some certification authority (CA). The peer, or <em>relying party</em>, curates a set of CAs that are trusted to only sign correct associations, which allows it to rely on the TLS to authenticate application identifiers. For a TLS server certificate, the authenticating party is the server and the relying party is the client. For a TLS client certificate, the roles are reversed.</t>
      <t>An authenticating party may need to interoperate with relying parties that trust different sets of CAs. <xref section="4.3.4" sectionFormat="of" target="RFC9846"/> defines the <tt>certificate_authorities</tt> extension to accommodate this. It allows the authenticating party to provision multiple certificates and select the one that will allow the relying party to accept its TLS key. This is analogous to parameter negotiation elsewhere in TLS.</t>
      <t>Without a negotiation mechanism, the authenticating party must obtain a single certificate that simultaneously satisfies all relying parties. This is challenging when relying parties are diverse. PKI transitions, including those necessary for user security, naturally lead to relying party diversity, so the result is that service availability conflicts with security and overall PKI evolution:</t>
      <ul spacing="normal">
        <li>
          <t>For an authenticating party to use a CA in its single certificate, all supported relying parties must trust the CA. PKI transitions then become difficult when authenticating parties support older, unupdated relying parties. This impacts both new keys from existing CA operators and new CA operators.</t>
        </li>
        <li>
          <t>When a relying party must remove no longer trustworthy CAs, rotate CA keys, add new CAs, or otherwise update to meet new security requirements, it will differ from older versions and potentially other relying parties. This adds to relying party diversity and the challenges that authenticating parties and CAs face. The relying party must then choose between compromising on user security or burdening the rest of the ecosystem, potentially impacting availability in the process.</t>
        </li>
      </ul>
      <t>However, <tt>certificate_authorities</tt>'s size is impractical for some applications. Existing PKIs may have many CAs, and existing CAs may have long X.509 names. As of August 2023, the Mozilla CA Certificate Program <xref target="MOZILLA-ROOTS"/> contained 144 CAs, with an average name length of around 100 bytes. Such TLS deployments often do not use trust anchor negotiation at all.</t>
      <t>To address this, this document introduces Trust Anchor Identifiers (Trust Anchor IDs). There are several parts to this mechanism:</t>
      <ol spacing="normal" type="1"><li>
          <t><xref target="trust-anchor-ids"/> defines <em>trust anchor IDs</em>, which are short, unique identifiers for X.509 trust anchors, or groups of trust anchors.</t>
        </li>
        <li>
          <t><xref target="tls-extension"/> defines a TLS extension that communicates the relying party's requested trust anchors using trust anchor IDs. IDs that represent individual trust anchors can mitigate long X.509 names. IDs that represent groups of trust anchors can mitigate large trust anchor lists.</t>
        </li>
        <li>
          <t><xref target="recovery"/> defines a recovery mechanism that, when the relying party is a TLS client, can mitigate signaling failures. The server provides its available trust anchors alongside its certificate, so that the client can retry on mismatch. This can further mitigate large trust anchor lists by allowing the client to initially omit some trust anchors or use an otherwise too broad trust anchor group. However, this mitigation can come at the cost of additional round trips in some cases.</t>
        </li>
      </ol>
      <t>Together, they reduce the size costs of trust anchor negotiation, supporting flexible and robust PKIs for more applications.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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>
      <t>This document additionally uses the TLS presentation language, defined in <xref section="3" sectionFormat="of" target="RFC9846"/>, and ASN.1, defined in <xref target="X680"/>.</t>
      <section anchor="terminology-and-roles">
        <name>Terminology and Roles</name>
        <t>This document discusses three roles:</t>
        <dl>
          <dt>Authenticating party:</dt>
          <dd>
            <t>The party authenticating itself in the protocol. In TLS, this is the side sending the Certificate and CertificateVerify message.</t>
          </dd>
          <dt>Relying party:</dt>
          <dd>
            <t>The party whom the authenticating party presents its identity to. In TLS, this is the side that validates a Certificate and CertificateVerify message.</t>
          </dd>
          <dt>Certification authority (CA):</dt>
          <dd>
            <t>The service issuing certificates to the authenticating party.</t>
          </dd>
        </dl>
        <t>Additionally, there are several terms used throughout this document to describe this proposal:</t>
        <dl>
          <dt>Trust anchor:</dt>
          <dd>
            <t>A pre-distributed X.509 name and public key that relying parties use to determine whether a certification path is trusted. See <xref section="6.1.1" sectionFormat="of" target="RFC5280"/>. Trust anchors are sometimes configured as self-signed certificates.</t>
          </dd>
          <dt>Certification path:</dt>
          <dd>
            <t>An ordered list of X.509 certificates starting with the target certificate. Each certificate is issued by the next certificate, except the last, which is issued by a trust anchor.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>TLS certificate selection (see <xref section="4.5.1.2" sectionFormat="of" target="RFC9846"/>) combines information from both the authenticating and relying party:</t>
      <ol spacing="normal" type="1"><li>
          <t>The authenticating party is configured with one or more candidate certification paths.</t>
        </li>
        <li>
          <t>The relying party is configured with one or more supported trust anchors.</t>
        </li>
        <li>
          <t>In the TLS handshake, the relying party sends a ClientHello or CertificateRequest message that describes its preferences.</t>
        </li>
        <li>
          <t>Based on this information, the authenticating party selects the best candidate certification path to present.</t>
        </li>
      </ol>
      <t>To successfully complete the handshake, the authenticating party must select some path that both:</t>
      <ul spacing="normal">
        <li>
          <t>is issued by one of the relying party's trust anchors and</t>
        </li>
        <li>
          <t>satisfies any other constraints in the TLS protocol, such as whether there is a common signature algorithm</t>
        </li>
      </ul>
      <t>This document defines a mechanism to evaluate the first condition. In particular, it defines:</t>
      <ul spacing="normal">
        <li>
          <t>How the relying party describes its supported trust anchors (<xref target="relying-party-configuration"/>)</t>
        </li>
        <li>
          <t>How the authenticating party interprets this description to inform certificate selection (<xref target="authenticating-party-configuration"/>)</t>
        </li>
        <li>
          <t>For server certificates, a recovery mechanism for signaling failure (<xref target="recovery"/>)</t>
        </li>
      </ul>
    </section>
    <section anchor="trust-anchor-ids">
      <name>Trust Anchor Identifiers</name>
      <t>A trust anchor ID is a short, unique identifier that represents a trust anchor or a group of trust anchors. When a trust anchor ID represents a group of trust anchors, it is known as a <em>trust anchor group</em>.</t>
      <t>A trust anchor ID is an object identifier (OID) <xref target="X680"/> under the OID arc of some IANA-registered Private Enterprise Number (PEN) <xref target="RFC9371"/>. For compactness, they are represented as relative object identifiers (see Section 33 of <xref target="X680"/>), relative to the OID prefix <tt>1.3.6.1.4.1</tt>. For example, an organization with PEN 32473 might define a trust anchor ID with the OID <tt>1.3.6.1.4.1.32473.1</tt>. As a relative object identifier, it would be the OID <tt>32473.1</tt>.</t>
      <t>Depending on the protocol, trust anchor IDs may be represented in one of three ways:</t>
      <ul spacing="normal">
        <li>
          <t>For use in ASN.1-based protocols, a trust anchor ID's ASN.1 representation is the relative object identifier described above. This may be encoded in DER <xref target="X690"/>, or some other ASN.1 encoding. The example ID's DER encoding is the six-octet sequence <tt>{0x0d, 0x04, 0x81, 0xfd, 0x59, 0x01}</tt>.</t>
        </li>
        <li>
          <t>For use in binary protocols such as TLS, a trust anchor ID's binary representation consists of the contents octets of the relative object identifier's DER encoding, as described in Section 8.20 of <xref target="X690"/>. Note this omits the tag and length portion of the encoding. The example ID's binary representation is the four-octet sequence <tt>{0x81, 0xfd, 0x59, 0x01}</tt>.</t>
        </li>
        <li>
          <t>For use in ASCII-compatible text protocols, a trust anchor ID's ASCII representation is the relative object identifier in dotted decimal notation. The example ID's ASCII representation is <tt>32473.1</tt>.</t>
        </li>
      </ul>
      <t>The length of a trust anchor ID's binary representation MUST NOT exceed 32 bytes. This ensures that the ID's binary and dotted-decimal representations, as either a relative or full OID, all fit comfortably under 255 bytes. OID components in a trust anchor ID MAY be arbitrarily large, but see <xref target="implementation-considerations"/> for additional guidance.</t>
      <t>A trust anchor ID representing a single trust anchor SHOULD be allocated by the CA operator and be common among relying parties that trust the CA. They MAY be allocated by another party, e.g. when bootstrapping an existing ecosystem, if all parties agree on the ID. In particular, the protocol requires authenticating and relying parties to agree, and the authenticating party's configuration typically comes from the CA.</t>
      <t>A trust anchor ID representing a trust anchor group MAY be allocated by any party. However, to be useful, the group requires agreement between relying parties and authenticating parties. <xref target="trust-anchor-groups"/> discusses defining trust anchor groups in more detail.</t>
      <t>When embedded in a TLS structure, a trust anchor ID uses the TrustAnchorID structure defined below. The contents of the TrustAnchorID, after the one-byte length prefix, are the binary representation of the trust anchor ID.</t>
      <sourcecode type="tls-presentation"><![CDATA[
opaque TrustAnchorID<1..32>;
]]></sourcecode>
      <section anchor="pkix-distinguished-name">
        <name>PKIX Distinguished Name</name>
        <t>Trust anchor IDs can be encoded as a PKIX distinguished name (<xref section="4.1.2.4" sectionFormat="of" target="RFC5280"/>). CAs deployed for ecosystems that name entities with trust anchor IDs can use this representation as the subject or issuer of an X.509 certificate.</t>
        <t>This distinguished name has a single relative distinguished name, which has a single attribute, defined below.</t>
        <sourcecode type="asn.1"><![CDATA[
id-rdna-trustAnchorID OBJECT IDENTIFIER ::= {
    iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) rdna(25) 3 }

-- The attribute value MUST be a valid trust anchor ID.
at-trustAnchorID ATTRIBUTE ::= {
    TYPE RELATIVE-OID
    IDENTIFIED BY id-rdna-trustAnchorID
}
]]></sourcecode>
        <t>The attribute has type <tt>id-rdna-trustAnchorID</tt>. The attribute's value is a RELATIVE-OID containing the trust anchor ID's ASN.1 representation. Note that, while a general RELATIVE-OID can be arbitrarily long, <xref target="trust-anchor-ids"/> limits trust anchor IDs to relative OIDs whose contents octets are at most 32 bytes.</t>
        <t>For example, the distinguished name for trust anchor ID <tt>32473.1</tt> would be represented in syntax of <xref target="RFC4514"/> as:</t>
        <artwork><![CDATA[
1.3.6.1.5.5.7.25.3=#0d0481fd5901
]]></artwork>
      </section>
    </section>
    <section anchor="tls-extension">
      <name>TLS Extension</name>
      <section anchor="extension-syntax">
        <name>Extension Syntax</name>
        <t>The <tt>trust_anchors</tt> extension is defined using the structures below:</t>
        <sourcecode type="tls-presentation"><![CDATA[
enum { trust_anchors(TBD), (2^16-1) } ExtensionType;

/* Syntax when sent in ClientHello or CertificateRequest: */
TrustAnchorID RequestedTrustAnchorList<0..2^16-1>;

/* Syntax when sent in Certificate: */
struct {} Empty;

/* Syntax when sent in EncryptedExtensions: */
TrustAnchorID AvailableTrustAnchorList<1..2^16-1>;
]]></sourcecode>
        <t>A TrustAnchorID structure contains the binary representation of some trust anchor ID, as described in <xref target="trust-anchor-ids"/>.</t>
        <t>When the <tt>trust_anchors</tt> extension is sent in ClientHello or CertificateRequest, the <tt>extension_data</tt> is a RequestedTrustAnchorList. It indicates that the sender supports the specified trust anchors or trust anchor groups. The list is unordered, and MAY be empty. <xref target="relying-party-configuration"/> describes how the relying party determines this value. <xref target="authenticating-party-configuration"/> describes how the authenticating party evaluates this value.</t>
        <t>When the <tt>trust_anchors</tt> extension is sent in Certificate, the <tt>extension_data</tt> MUST be empty. The extension MUST only be sent in the first CertificateEntry. It indicates that the sender sent the certificate because the certificate matched a trust anchor ID sent by the peer. <xref target="strict-certification-paths"/> describes this in detail.</t>
        <t>When the <tt>trust_anchors</tt> extension is sent in EncryptedExtensions, the <tt>extension_data</tt> is an AvailableTrustAnchorList. It indicates individual trust anchors for which the server has a candidate path, in order of most to least preferred by the server. This list MUST NOT be empty. If the server has no available trust anchors to present, it MUST omit the extension. <xref target="recovery"/> describes this in detail.</t>
      </section>
      <section anchor="relying-party-configuration">
        <name>Relying Party Configuration</name>
        <t>Relying parties are configured with:</t>
        <ol spacing="normal" type="1"><li>
            <t>An <em>associated trust anchor ID</em> for each supported trust anchor that participates in this protocol</t>
          </li>
          <li>
            <t>A list of <em>requested trust anchor IDs</em> which, together, describe supported trust anchors</t>
          </li>
        </ol>
        <t>A trust anchor's associated ID MUST be the trust anchor ID which represents it. The ID MAY be extracted from the trust anchor, if its PKIX distinguished name is of the form described in <xref target="pkix-distinguished-name"/>. It MAY also be configured separately from the trust anchor for compatibility with existing PKIs.</t>
        <t>Relying parties MAY support trust anchors without associated trust anchor IDs, but such trust anchors will not participate in this protocol. Those trust anchors MAY participate in other trust anchor negotiation protocols, such as the <tt>certificate_authorities</tt> extension.</t>
        <t>In a TLS connection, the relying party sends its requested trust anchor IDs in the ClientHello message (if a client) or CertificateRequest message (if a server). This communicates a set of supported trust anchors to the authenticating party.</t>
        <t>The requested trust anchor IDs MAY be determined by collecting the associated IDs of each supported trust anchor. Alternatively, a relying party MAY configure a requested list of IDs for individual trust anchors and IDs for trust anchor groups. Using groups can further reduce the size of messages sent by the relying party, but requires that authenticating parties be configured to recognize them. See also <xref target="authenticating-party-configuration"/>.</t>
        <t>If the relying party is a client, it is not necessary for the requested trust anchor IDs to be fully accurate. A client MAY omit trust anchors that it trusts or signal trust anchors which it does not trust. This can be useful in several scenarios:</t>
        <ul spacing="normal">
          <li>
            <t>The client MAY try to reduce size with a common trust anchor group, but the group contains some untrusted trust anchors. Sending the group would signal the full contents of the group.</t>
          </li>
          <li>
            <t>The client MAY send a (possibly empty) subset of its trust anchors due to fingerprinting risks (see <xref target="privacy-considerations"/>) or size concerns.</t>
          </li>
          <li>
            <t>The client MAY send trust anchors it does not trust. This can reduce fingerprinting if, e.g., default instances of the client send this value, but an individual user has configured their software to distrust the CA.</t>
          </li>
        </ul>
        <t>If the client list is inaccurate, it is possible the server will select an untrusted certificate. The connection will then fail. Clients that send potentially inaccurate lists SHOULD implement the recovery mechanism described in <xref target="recovery"/>. The associated IDs of individual trust anchors are used in recovery. Recovery requires a round-trip, so clients SHOULD send as accurate a list as feasible.</t>
      </section>
      <section anchor="authenticating-party-configuration">
        <name>Authenticating Party Configuration</name>
        <t>The authenticating party compares the requested trust anchor IDs with its candidate certification paths. To do this, each candidate certification path that participates in this protocol MUST be configured with:</t>
        <ul spacing="normal">
          <li>
            <t>The trust anchor ID for the CA that issued this candidate path.</t>
          </li>
          <li>
            <t>The trust anchor groups known to contain the issuing CA. The CA can be contained in a family of related trust anchor groups, such as in <xref target="versioned-groups"/>. To accommodate this, the IDs of the containing groups are described with a list of <em>trust anchor ID patterns</em>, defined below in <xref target="trust-anchor-id-patterns"/>. Note these patterns specify the IDs of the groups, not their contents.</t>
          </li>
        </ul>
        <t><xref target="certificate-properties"/> defines a format to represent these properties. <xref target="acme-extension"/> defines how to obtain them from ACME <xref target="RFC8555"/>.</t>
        <t>The authenticating party intersects this information with the requested trust anchor IDs to determine if the relying party trusts the issuing CA. A candidate path is said to <em>match</em> the requested trust anchor IDs if either:</t>
        <ul spacing="normal">
          <li>
            <t>One of the requested trust anchor IDs is equal to the path's trust anchor ID.</t>
          </li>
          <li>
            <t>One of the requested trust anchor IDs is contained in one of the path's trust anchor group patterns.</t>
          </li>
        </ul>
        <t>Authenticating parties MAY have candidate certification paths that do not participate in this protocol and lack these properties. These paths MAY participate in other trust anchor negotiation protocols, such as the <tt>certificate_authorities</tt> extension, or they MAY be used as a fallback when no matching issuer is found.</t>
        <section anchor="trust-anchor-id-patterns">
          <name>Trust Anchor ID Patterns</name>
          <t>A <em>trust anchor ID pattern</em> specifies a collection of related IDs. In this document, the IDs matched by a pattern are always the IDs of trust anchor groups. It is a sequence of pairs <tt>min</tt> and <tt>max</tt>. <tt>min</tt> is a non-negative integer and <tt>max</tt> is either a non-negative integer or infinity. Integers in a trust anchor ID pattern MAY be arbitrarily large, but see <xref target="implementation-considerations"/> for additional guidance.</t>
          <t>A pattern is said to <em>contain</em> some trust anchor ID if both of the following are true:</t>
          <ol spacing="normal" type="1"><li>
              <t>The number of components of the trust anchor ID, as a relative OID, is equal to the number of pairs in the pattern.</t>
            </li>
            <li>
              <t>Each component of the trust anchor ID, as a relative OID, is between <tt>min</tt> and <tt>max</tt>, inclusive, of the corresponding pair in the pattern.</t>
            </li>
          </ol>
          <t>A trust anchor ID pattern is represented as a byte string by concatenating the <tt>min</tt> and <tt>max</tt> values of each pair, in order. Each <tt>min</tt> or <tt>max</tt> value is encoded as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Infinity is encoded as a single byte, 0x80.</t>
            </li>
            <li>
              <t>A non-negative integer is encoded as described in paragraph 8.19.2 of <xref target="X690"/>. That is, each value is encoded in variable-length, big-endian, base-128 encoding. Each base-128 digit is in the seven least significant bits of each byte. The most significant bit of each byte is unset for the final byte and set for all other bytes. Values are encoded in the fewest number of non-zero bytes needed.</t>
            </li>
          </ul>
          <t>A trust anchor ID pattern can also be represented in text as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Represent each <tt>min</tt> and <tt>max</tt> pair as:
              </t>
              <ul spacing="normal">
                <li>
                  <t>if <tt>min</tt> equals <tt>max</tt>, <tt>min</tt> as a single decimal integer</t>
                </li>
                <li>
                  <t>if <tt>max</tt> is not infinity, the concatenation of "{", <tt>min</tt> as a decimal integer, "-", <tt>max</tt> as a decimal integer, and "}"</t>
                </li>
                <li>
                  <t>if <tt>max</tt> is infinity, the concatenation of "{", <tt>min</tt> as a decimal integer, and "-}"</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Concatenate the representations of each pair, separating each by ".".</t>
            </li>
          </ol>
          <t>The byte string representation of an OID component is order-preserving by length and then lexicographic comparison, so the following procedures can be used to check if an ID is contained in the pattern:</t>
          <t>To remove an encoded base-128 integer from a byte string, <tt>in</tt>:</t>
          <ol spacing="normal" type="1"><li>
              <t>If <tt>in</tt> is empty, fail the procedure. There are no more values in <tt>in</tt>.</t>
            </li>
            <li>
              <t>If the first byte of <tt>in</tt> is 0x80, fail the procedure. The value was not minimally encoded.</t>
            </li>
            <li>
              <t>Find the earliest byte of <tt>in</tt> whose most-significant bit is unset.</t>
            </li>
            <li>
              <t>If not found, fail the procedure. The value was truncated.</t>
            </li>
            <li>
              <t>Remove and return the prefix of <tt>in</tt> which ends at the found byte.</t>
            </li>
          </ol>
          <t>To compare two encoded base-128 integers, <tt>a</tt> and <tt>b</tt>:</t>
          <ol spacing="normal" type="1"><li>
              <t>Compare <tt>a</tt>'s length to <tt>b</tt>'s length. If they are not equal, return the result of the comparison.</t>
            </li>
            <li>
              <t>Return the result of lexicographically comparing <tt>a</tt> and <tt>b</tt>. Bytes in <tt>a</tt> and <tt>b</tt> are interpreted as integers from 0 to 255.</t>
            </li>
          </ol>
          <t>To check if a trust anchor ID pattern, <tt>pattern</tt>, contains a trust anchor ID <tt>id</tt>, both in their byte representations:</t>
          <ol spacing="normal" type="1"><li>
              <t>While <tt>id</tt> is not empty:
              </t>
              <ol spacing="normal" type="1"><li>
                  <t>Remove an encoded base-128 integer from <tt>id</tt>. Let <tt>v</tt> be the value removed.</t>
                </li>
                <li>
                  <t>Remove an encoded base-128 integer from <tt>pattern</tt>. Let <tt>min</tt> be the value removed.</t>
                </li>
                <li>
                  <t>Compare <tt>v</tt> and <tt>min</tt> as described above. If <tt>v</tt> is less than <tt>min</tt>, fail the procedure.</t>
                </li>
                <li>
                  <t>If <tt>pattern</tt> is not empty and the next byte of <tt>pattern</tt> is 0x80, remove this byte and continue to the next loop iteration.</t>
                </li>
                <li>
                  <t>Otherwise, remove an encoded base-128 integer from <tt>pattern</tt>. Let <tt>max</tt> be the value removed.</t>
                </li>
                <li>
                  <t>Compare <tt>max</tt> and <tt>v</tt> as described above. If <tt>max</tt> is less than <tt>v</tt>, fail the procedure.</t>
                </li>
              </ol>
            </li>
            <li>
              <t>If <tt>pattern</tt> is not empty, fail the procedure. Otherwise, the procedure succeeds.</t>
            </li>
          </ol>
          <t>For example, <tt>32473.{123-456}.{789-}</tt> is a pattern that matches three-component IDs, where the first component must be 32473, the second must be between 123 and 456, and the final component must be at least 789. The byte string representation is:</t>
          <artwork><![CDATA[
  // component[0].min = 32473
  0x81, 0xfd, 0x59,
  // component[0].max = 32473
  0x81, 0xfd, 0x59,
  // component[1].min = 123
  0x7b,
  // component[1].max = 456
  0x83, 0x48,
  // component[2].min = 789
  0x86, 0x15,
  // component[2].max = infinity
  0x80,
]]></artwork>
          <t>It contains the following IDs:</t>
          <ul spacing="normal">
            <li>
              <t><tt>32473.123.789</tt></t>
            </li>
            <li>
              <t><tt>32473.300.900</tt></t>
            </li>
            <li>
              <t><tt>32473.456.99999</tt></t>
            </li>
          </ul>
          <t>It does not contain any of the following IDs:</t>
          <ul spacing="normal">
            <li>
              <t><tt>32473.123</tt> (too few components)</t>
            </li>
            <li>
              <t><tt>32473.123.789.0</tt> (too many components)</t>
            </li>
            <li>
              <t><tt>32474.123.789</tt> (first component out of range)</t>
            </li>
            <li>
              <t><tt>32473.500.789</tt> (second component out of range)</t>
            </li>
            <li>
              <t><tt>32473.123.700</tt> (third component out of range)</t>
            </li>
          </ul>
          <t><xref target="trust-anchor-id-pattern-test-vectors"/> provides more extensive test vectors.</t>
        </section>
      </section>
      <section anchor="certificate-selection">
        <name>Certificate Selection</name>
        <t>This document extends TLS certificate selection (<xref section="4.5.1.2" sectionFormat="of" target="RFC9846"/>) as follows:</t>
        <ul spacing="normal">
          <li>
            <t>If the ClientHello or CertificateRequest contains a <tt>trust_anchors</tt> extension, the authenticating party SHOULD send a certification path that matches the requested trust anchor IDs, as described in <xref target="authenticating-party-configuration"/>. See <xref target="strict-certification-paths"/> for additional requirements in this case.</t>
          </li>
          <li>
            <t>If the ClientHello or CertificateRequest contains both <tt>trust_anchors</tt> and <tt>certificate_authorities</tt>, certification paths that satisfy either extension's criteria MAY be used. This additionally applies to future extensions which play a similar role.</t>
          </li>
          <li>
            <t>If no certification paths satisfy either extension, the authenticating party MAY return a <tt>handshake_failure</tt> alert, or send some fallback certificate, without considering <tt>trust_anchors</tt> or <tt>certificate_authorities</tt>.</t>
          </li>
        </ul>
        <t>Sending a fallback allows the authenticating party to retain support for relying parties that do not implement any form of trust anchor negotiation. In this case, the authenticating party must find a sufficiently ubiquitous trust anchor, if one exists. However, only those relying parties need to be considered in this ubiquity determination. Updated relying parties may continue to evolve without restricting fallback certificate selection. <xref target="trust-anchor-negotiation-property"/> describes a RECOMMENDED mechanism for determining fallbacks.</t>
        <t>When the authenticating party is a server, <xref target="recovery"/> describes an additional requirement for servers that implement this protocol.</t>
      </section>
      <section anchor="strict-certification-paths">
        <name>Strict Certification Paths</name>
        <t>If, and only if, the authenticating party sends a certification path that matches the relying party's <tt>trust_anchors</tt> extension, the authenticating party MUST send an empty <tt>trust_anchors</tt> extension in the first CertificateEntry of the Certificate message.</t>
        <t>In this case, the <tt>certificate_list</tt> flexibility described in <xref section="4.5.1" sectionFormat="of" target="RFC9846"/> no longer applies. The <tt>certificate_list</tt> MUST contain a complete certification path, correctly ordered and with no extraneous certificates. That is, each certificate MUST certify the one immediately preceding it, and the path's trust anchor MUST certify the final certificate.</t>
        <t>If a relying party receives this extension in the Certificate message, it MAY choose to disable path building <xref target="RFC4158"/> and validate the peer's certificate list as a pre-built certification path. Doing so avoids the unpredictable behavior of path-building, and helps ensure CAs and authenticating parties do not inadvertently provision incorrect paths.</t>
      </section>
      <section anchor="recovery">
        <name>Recovery</name>
        <t>If the relying party is a client, it MAY, as described in <xref target="relying-party-configuration"/>, request extra trust anchors or omit trusted ones. To accommodate this, this section defines a protocol for recovering from signaling failure in server certificate selection.</t>
        <t>When receiving a ClientHello with <tt>trust_anchors</tt>, the server collects all candidate certification paths which:</t>
        <ul spacing="normal">
          <li>
            <t>Have a trust anchor ID, and</t>
          </li>
          <li>
            <t>Satisfy the conditions in <xref section="4.5.1.2" sectionFormat="of" target="RFC9846"/>, with the exception of <tt>certificate_authorities</tt>, and any future extensions that play a similar role</t>
          </li>
        </ul>
        <t>If this collection is non-empty, the server MUST send a <tt>trust_anchors</tt> extension in EncryptedExtensions, containing the corresponding trust anchor IDs in preference order.</t>
        <t>If a client requests extra trust anchors or omits trusted ones, it SHOULD implement the following recovery mechanism:</t>
        <t>If the client receives either a connection error or an untrusted certificate, the client looks in the server's EncryptedExtensions for a trust anchor ID that it trusts. If there are multiple, it selects an option based on the server's preference order and its local preferences. It then makes a new connection to the same endpoint, requesting only the selected trust anchor ID in the ClientHello <tt>trust_anchors</tt> extension. If the EncryptedExtensions had no <tt>trust_anchors</tt> extension, or no match was found, the client returns the error to the application.</t>
        <t>If the server's certification path chains to a trust anchor the client trusts, but the client rejected the path for some other reason (e.g., expiry, revocation, a name mismatch, or a relying party constraint on that trust anchor), the client SHOULD NOT select that trust anchor's associated trust anchor ID when retrying.</t>
        <t>Clients SHOULD retry at most once per connection attempt.</t>
        <t>This mechanism allows the connection to recover from a certificate selection failure, at additional latency cost.</t>
        <t>This mechanism also allows servers to safely send fallback certificates that may not be as ubiquitously acceptable. Without some form of trust anchor negotiation, servers are limited to selecting certification paths that are ubiquitously trusted in all supported clients. This often means sending extra cross-certificates to target the lowest common denominator at a bandwidth cost. If the ClientHello contains <tt>trust_anchors</tt>, the server MAY opportunistically send a less ubiquitous, more bandwidth-efficient path based on local heuristics, with the expectation that the client will retry when the heuristics fail.</t>
      </section>
    </section>
    <section anchor="trust-anchor-groups">
      <name>Trust Anchor Groups</name>
      <t>A trust anchor ID is typically much smaller than the corresponding X.509 name. Depending on the number of trust anchors, this can be sufficient to efficiently represent relying party state.</t>
      <t>PKIs where further size savings are needed can use trust anchor groups (<xref target="trust-anchor-ids"/>). Trust anchor groups require additional coordination within a PKI, but they can further reduce relying party message sizes by allowing one ID to signal multiple trust anchors. To be usable, a trust anchor group must:</t>
      <ul spacing="normal">
        <li>
          <t>be known to and sent by relying parties (see <xref target="relying-party-configuration"/>); and</t>
        </li>
        <li>
          <t>configured with candidate paths in authenticating parties (see <xref target="authenticating-party-configuration"/>), ideally provided by the CA during issuance (see <xref target="certificate-properties"/>).</t>
        </li>
      </ul>
      <t>This document does not prescribe how to define trust anchor groups, but gives some general guidance:</t>
      <t>A trust anchor group specifies a collection of trust anchors, which a relying party can send to represent the contents. For example:</t>
      <ul spacing="normal">
        <li>
          <t>A set of root CAs (or intermediate CAs, as in <xref target="intermediate-elision"/>) operated by a CA operator.</t>
        </li>
        <li>
          <t>A set of trust anchors common to a large set of relying parties.</t>
        </li>
        <li>
          <t>A set of related application-specific trust anchors, such as a range of Merkle Tree Certificate landmarks <xref target="I-D.ietf-plants-merkle-tree-certs"/>.</t>
        </li>
      </ul>
      <t>Different group definitions trade off size savings, applicability, and coordination overhead. A group that reflects a single CA operator will cover fewer trust anchors, so a relying party might combine several operators' IDs to describe its trust anchors. However, it is generally usable by relying parties that trust this CA operator. Such a group also requires minimal coordination for the CA operator to provide group inclusion information (<xref target="authenticating-party-configuration"/>) with the certificate.</t>
      <t>Conversely, a group that reflects a single relying party vendor can potentially be the only ID sent. However, it may be less generally usable when relying parties differ. Groups reflecting multiple relying party vendors are more broadly usable, but may need to be combined with other IDs in a given relying party. For example, a relying party might send a group containing established CAs common to its ecosystem, and individual IDs for its remaining, not yet as common CAs.</t>
      <t>A client relying party MAY send a group containing CAs it does not trust, however it SHOULD then be prepared to recover (see <xref target="recovery"/>) in case of signaling failure.</t>
      <t>The matching process described in <xref target="authenticating-party-configuration"/> can be implemented generically for any trust anchor group. This allows deployments to tailor their group allocation based on their needs, without requiring software updates in authenticating parties. Where feasible, deployments SHOULD use groups that are more broadly applicable and require lower coordination overhead.</t>
      <section anchor="versioned-groups">
        <name>Versioned Groups</name>
        <t>Over time, a group may become out-of-date, making it describe current relying parties less effectively. For example, a CA operator may deploy or turn down a CA instance, or a relying party may trust a new CA or distrust an existing CA. Existing trust anchor groups SHOULD NOT be redefined, but the following versioning scheme MAY be used to define updated groups:</t>
        <t>A versioned sequence of trust anchor groups is identified by an OID arc. Each group has an ID of this OID arc, with a non-negative integer version number component appended. For example, versioned groups using the OID arc <tt>32473.2</tt> would have IDs <tt>32473.2.0</tt>, <tt>32473.2.1</tt>, <tt>32473.2.2</tt>, and so on. When defining a new group version, the version component is incremented.</t>
        <t>Each candidate path is then configured with the versioned groups that contain it. These groups are described by a trust anchor ID pattern (<xref target="trust-anchor-id-patterns"/>) as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Let <tt>base</tt> be the OID arc that identifies the sequence. Let <tt>min</tt> be the first version that includes the trust anchor.</t>
          </li>
          <li>
            <t>At issuance, if the trust anchor is no longer in the latest group version, let <tt>max</tt> be the last version that includes the trust anchor. The pattern is <tt>base.{min-max}</tt>.</t>
          </li>
          <li>
            <t>At issuance, if the trust anchor is in the latest group version, the pattern is <tt>base.{min-}</tt>. That is, the last component has a <tt>max</tt> of infinity.</t>
          </li>
        </ol>
        <t>In the second case, the range contains not-yet-defined group versions, so there is a potential signaling error. Suppose, after issuance, a new group version is defined without the trust anchor. The unlimited upper bound is now incorrect. A relying party might not trust this trust anchor, while sending this new group version. However, the authenticating party will misinterpret the certificate as compatible based on its stale information. Such signaling errors may result in the wrong certificate being selected.</t>
        <t>This can be mitigated in one of several ways:</t>
        <ul spacing="normal">
          <li>
            <t>Only pre-existing certificates are impacted. Newly-issued certificates postdate this version and will have the correct upper bound. When the certificate is renewed, group inclusions will be corrected.</t>
          </li>
          <li>
            <t><xref target="SCTNotAfter"/> describes a trust anchor removal strategy that only impacts newly-issued certificates. In this case, no renewal is needed. Pre-existing group inclusions remain accurate under this strategy.</t>
          </li>
          <li>
            <t>If the authenticating party's preferences place the correct candidate path (issued by a newer trust anchor) ahead of the misinterpreted one (issued by the removed trust anchor), the correct candidate will still be chosen.</t>
          </li>
          <li>
            <t>When the relying party is a client, any remaining signaling errors can be corrected with the recovery mechanism described in <xref target="recovery"/>.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="certificate-properties">
      <name>Certificate Properties</name>
      <t>As described in <xref target="authenticating-party-configuration"/>, certification paths participating in this mechanism must be configured with a trust anchor ID. This section introduces a RECOMMENDED extensible CertificatePropertyList structure for representing this and other additional properties of a certification path. CertificatePropertyLists may be used as part of authenticating party configuration, and for CAs to communicate additional properties during certificate issuance.</t>
      <t>The extensibility aims to simplify application deployment as PKI mechanisms evolve. When certificate issuance and application software is updated to pass this structure to the underlying TLS implementation, new properties may be transparently defined without changes to certificate and configuration management.</t>
      <t>A CertificatePropertyList is defined using the TLS presentation language (<xref section="3" sectionFormat="of" target="RFC9846"/>) below:</t>
      <sourcecode type="tls-presentation"><![CDATA[
enum {
    trust_anchor_id(0),
    trust_anchor_groups(1),
    trust_anchor_negotiation(2),
    (2^16-1)
} CertificatePropertyType;

struct {
    CertificatePropertyType type;
    opaque data<0..2^16-1>;
} CertificateProperty;

CertificateProperty CertificatePropertyList<0..2^16-1>;
]]></sourcecode>
      <t>The entries in a CertificatePropertyList MUST be sorted numerically by <tt>type</tt> and MUST NOT contain values with a duplicate <tt>type</tt>. Inputs that do not satisfy these invariants are syntax errors and MUST be rejected by parsers.</t>
      <t>This document defines three properties:</t>
      <ul spacing="normal">
        <li>
          <t><tt>trust_anchor_id</tt>, defined in <xref target="trust-anchor-id-property"/></t>
        </li>
        <li>
          <t><tt>trust_anchor_groups</tt>, defined in <xref target="trust-anchor-groups-property"/></t>
        </li>
        <li>
          <t><tt>trust_anchor_negotiation</tt>, defined in <xref target="trust-anchor-negotiation-property"/></t>
        </li>
      </ul>
      <t>Future documents MAY define other properties for use with other mechanisms. Such a document MUST define the format of the <tt>data</tt> field and how authenticating parties interpret the property. Authenticating parties MUST ignore properties with unrecognized CertificatePropertyType values.</t>
      <section anchor="trust-anchor-id-property">
        <name>Trust Anchor ID Property</name>
        <t>The <tt>trust_anchor_id</tt> property's <tt>data</tt> field contains the binary representation of the trust anchor ID of the certification path's trust anchor, as described in <xref target="authenticating-party-configuration"/>. The binary representation is encoded directly into the <tt>data</tt> field with no additional length prefix.</t>
      </section>
      <section anchor="trust-anchor-groups-property">
        <name>Trust Anchor Groups Property</name>
        <t>The <tt>trust_anchor_groups</tt> property's <tt>data</tt> field contains a TrustAnchorIDPatternList structure, defined below. Its value is the certification path's trust anchor group patterns, as described in <xref target="authenticating-party-configuration"/> and <xref target="trust-anchor-id-patterns"/>.</t>
        <sourcecode type="tls-presentation"><![CDATA[
opaque TrustAnchorIDPattern<0..2^8-1>;

TrustAnchorIDPattern TrustAnchorIDPatternList<1..2^16-1>;
]]></sourcecode>
      </section>
      <section anchor="trust-anchor-negotiation-property">
        <name>Trust Anchor Negotiation Property</name>
        <t>The <tt>trust_anchor_negotiation</tt> property's <tt>data</tt> field MUST be empty.</t>
        <t>When a candidate certification path has this property, the authenticating party SHOULD NOT select it as a fallback when the path's issuer cannot be matched against the relying party. When a candidate path lacks this property, the authenticating party MAY use it as a fallback. See also <xref target="certificate-selection"/>.</t>
        <t>A path without the <tt>trust_anchor_negotiation</tt> property MAY still participate in this protocol and include the <tt>trust_anchor_id</tt> and <tt>trust_anchor_groups</tt> properties. In particular, the authenticating party MAY still choose to condition the path on trust anchor negotiation if it is combining multiple sets of candidate paths, each with their separate determinations about suitable fallbacks. <xref target="acme-example"/> gives an example scenario. This could be implemented either with separate local configuration or by modifying the CertificatePropertyList structures when combining the sets.</t>
        <t><xref target="acme-extension"/> discusses how an ACME server might set this property, as well as examples where the authenticating party might override this recommendation.</t>
      </section>
      <section anchor="pem-representation">
        <name>PEM Representation</name>
        <t>A certification path with its associated CertificatePropertyList may be represented in a PEM <xref target="RFC7468"/> structure in a file of type "application/pem-certificate-chain-with-properties". Files of this type MUST use the strict encoding and MUST NOT include explanatory text. The ABNF <xref target="RFC5234"/> for this format is as follows, where "stricttextualmsg" is as defined in <xref section="3" sectionFormat="of" target="RFC7468"/>:</t>
        <sourcecode type="abnf"><![CDATA[
certchainwithproperties = 2*stricttextualmsg
]]></sourcecode>
        <t>The first element MUST be the encoded CertificatePropertyList.
The second element MUST be an end-entity certificate. Each following element
MUST contain a certificate that directly certifies the one preceding it. The certificate representing the trust anchor MUST be omitted from the path.</t>
        <t>CertificatePropertyLists are encoded using the "CERTIFICATE PROPERTIES" label. The encoded data is a serialized CertificatePropertyList, defined in <xref target="certificate-properties"/>.</t>
        <t>Certificates are encoded as in <xref section="5.1" sectionFormat="of" target="RFC7468"/>, except DER <xref target="X690"/> MUST be used.</t>
        <t>The following is an example file with a certification path containing an end-entity certificate and an intermediate certificate. The example CertificatePropertyList encodes:</t>
        <ul spacing="normal">
          <li>
            <t>A <tt>trust_anchor_id</tt> property of <tt>32473.1</tt></t>
          </li>
          <li>
            <t>A <tt>trust_anchor_groups</tt> property with two patterns:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>2187.2.{100-200}</tt></t>
              </li>
              <li>
                <t><tt>32473.3.{42-}.{100-200}</tt></t>
              </li>
            </ul>
          </li>
          <li>
            <t>A <tt>trust_anchor_negotiation</tt> property</t>
          </li>
        </ul>
        <artwork><![CDATA[
-----BEGIN CERTIFICATE PROPERTIES-----
ACoAAAAEgf1ZAQABABoAGAmRC5ELAgJkgUgNgf1Zgf1ZAwMqgGSBSAACAAA=
-----END CERTIFICATE PROPERTIES-----
-----BEGIN CERTIFICATE-----
MIIBVzCB/6ADAgECAgkAh7Uv5X8pplkwCgYIKoZIzj0EAwIwGjEYMBYGA1UEAwwP
SW50ZXJtZWRpYXRlIENBMB4XDTI2MDUwNTIxMzg1NVoXDTI3MDUwNTIxMzg1NVow
FjEUMBIGA1UEAwwLZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC
AAT5mg5z0464cE7rtEpTeSPFNlRUBjxqycdb4rvNkG3Fbd1R2IRo7zYOi5SP3S7L
C4r5Hw+IiDq5X2nQT1w5ympeozIwMDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIHgDAW
BgNVHREEDzANggtleGFtcGxlLmNvbTAKBggqhkjOPQQDAgNHADBEAiBRdPrVpQtJ
s+J9DFhT1Db6QmIZFfjFFKQ88B0gFezyfAIgSwIxntwrPFYagfK6vPcRpDxG2oLV
LkfnP5v1SPjOsMY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIBRTCB7KADAgECAgkAkaBeQj6ZErAwCgYIKoZIzj0EAwIwEjEQMA4GA1UEAwwH
Um9vdCBDQTAeFw0yNjA1MDUyMTM4MzJaFw0zMTA1MDQyMTM4MzJaMBoxGDAWBgNV
BAMMD0ludGVybWVkaWF0ZSBDQTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJEH
0D77iyFv01I/4sEqUaoUel50BBwsWSYrH/LtO6cdGI28NyzMyFuYrE6UCRusgAKo
XBmWjHEGJmoDPoAy2t+jIzAhMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD
AgEGMAoGCCqGSM49BAMCA0gAMEUCIBWtPiDwXXEvbgy2+nu/w4MRBNsQ3hbVWyJT
ITN+1R6WAiEA2AfGBy3Hz8oYY5wPldIndrXjntCzzSEduB6pEvYQZWo=
-----END CERTIFICATE-----
]]></artwork>
        <t>The IANA registration for this media type is described in <xref target="media-type-updates"/>.</t>
      </section>
      <section anchor="acme-extension">
        <name>ACME Extension</name>
        <t>The format defined in <xref target="pem-representation"/> can be used with ACME's alternate format mechanism (see <xref section="7.4.2" sectionFormat="of" target="RFC8555"/>) as follows. When downloading certificates, a supporting client SHOULD include "application/pem-certificate-chain-with-properties" in its HTTP Accept header (<xref section="12.5.1" sectionFormat="of" target="RFC9110"/>). When a supporting server sees such a header, it MAY then respond with that format to include a CertificatePropertyList with the certification path. This CertificatePropertyList MAY include <tt>trust_anchor_id</tt> and <tt>trust_anchor_groups</tt> properties for use with this protocol, or other properties defined in another document.</t>
        <t>When the ACME server provides multiple paths, e.g. with ACME's alternate certificate chain mechanism (see <xref section="7.4.2" sectionFormat="of" target="RFC8555"/>), the ACME server SHOULD include the <tt>trust_anchor_negotiation</tt> property on any paths it expects to gate on trust anchor negotiation. It SHOULD omit the property on any paths which are possible fallbacks when no trust anchors match.</t>
        <t>The authenticating party MAY override this recommendation. In particular, if the authenticating party combines certification paths from two ACME orders, it might only consider some orders as a source for fallback paths.</t>
        <t>When a path is gated on trust anchor negotiation, this protocol removes the need for heuristics in determining which path to serve to which relying party.</t>
        <section anchor="acme-example">
          <name>Example</name>
          <t>There are two CA operators, CA1 and CA2. The authenticating party is configured to request certificates from ACME servers operated by each of CA1 and CA2.</t>
          <t>When the authenticating party requests certificates from CA1, it receives:</t>
          <ul spacing="normal">
            <li>
              <t>Path 1A chains to an older root CA operated by CA1. It does not set <tt>trust_anchor_negotiation</tt> because CA1 considers this to be a reasonable fallback for legacy relying parties.</t>
            </li>
            <li>
              <t>Path 1B chains to a newer root CA operated by CA1. It sets <tt>trust_anchor_negotiation</tt> because not all relying parties support it yet.</t>
            </li>
          </ul>
          <t>When the authenticating party requests certificates from CA2, it receives:</t>
          <ul spacing="normal">
            <li>
              <t>Path 2A chains to a root CA operated by CA2. It does not set <tt>trust_anchor_negotiation</tt> because CA2 considers this to be a reasonable fallback for legacy relying parties.</t>
            </li>
            <li>
              <t>Path 2B chains to a more specific intermediate CA. It sets <tt>trust_anchor_negotiation</tt> because not all relying parties preload the intermediate.</t>
            </li>
          </ul>
          <t>All paths include <tt>trust_anchor_id</tt> properties describing their corresponding issuer. The authenticating party's TLS software will consider all four in connections that use the <tt>trust_anchors</tt> extension.</t>
          <t>For other connections, the TLS software needs to determine fallback paths. Although both 1A and 2A lack the <tt>trust_anchor_negotiation</tt> property, the authenticating party knows that CA2 is more ubiquitously trusted among its supported relying parties than CA1. It configures its TLS software to use CA2 as the source of the fallback path, and so only path 2A will be used as fallback.</t>
        </section>
      </section>
      <section anchor="representing-multiple-paths">
        <name>Representing Multiple Paths</name>
        <t>While ACME represents each certification path separately, applications might combine multiple certification paths in one file as part of local configuration. For example:</t>
        <ul spacing="normal">
          <li>
            <t>An ACME client might serialize all paths returned from a single order in a file. The TLS server might then be configured to load certificates from the files from each order.</t>
          </li>
          <li>
            <t>A deployment might combine the paths from all ACME orders in a single file. The TLS server might then be configured to load its full certificate configuration from the file.</t>
          </li>
        </ul>
        <t>This section extends the PEM representation defined in <xref target="pem-representation"/> for such cases.</t>
        <t>A list of certification paths is represented in PEM by concatenating their corresponding PEM representations. Each path MUST begin with a CertificatePropertyList, which signals a new path to the decoder. If the path has no properties configured, the corresponding PEM-encoded CertificatePropertyList is as follows:</t>
        <artwork><![CDATA[
-----BEGIN CERTIFICATE PROPERTIES-----
AAA=
-----END CERTIFICATE PROPERTIES-----
]]></artwork>
        <t>Paths are ordered by the encoder's preference, with the most preferred encoded first. Depending on the application, the decoder might use this preference order, or it might override it with another ordering.</t>
        <t>This format does not directly represent private keys. However, applications MAY combine this format with private keys in one of several ways:</t>
        <ul spacing="normal">
          <li>
            <t>If the application represents paths with the same private key, it can associate all decoded paths with the corresponding private key.</t>
          </li>
          <li>
            <t>If the application represents paths with different private keys, it can first load all available private keys, then match each decoded path with the private key that matches the end-entity certificate's subjectPublicKeyInfo.</t>
          </li>
        </ul>
        <t>The following example file contains two certification paths:</t>
        <artwork><![CDATA[
-----BEGIN CERTIFICATE PROPERTIES-----
ACoAAAAEgf1ZAQABABoAGAmRC5ELAgJkgUgNgf1Zgf1ZAwMqgGSBSAACAAA=
-----END CERTIFICATE PROPERTIES-----
-----BEGIN CERTIFICATE-----
MIIBVzCB/6ADAgECAgkAh7Uv5X8pplkwCgYIKoZIzj0EAwIwGjEYMBYGA1UEAwwP
SW50ZXJtZWRpYXRlIENBMB4XDTI2MDUwNTIxMzg1NVoXDTI3MDUwNTIxMzg1NVow
FjEUMBIGA1UEAwwLZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC
AAT5mg5z0464cE7rtEpTeSPFNlRUBjxqycdb4rvNkG3Fbd1R2IRo7zYOi5SP3S7L
C4r5Hw+IiDq5X2nQT1w5ympeozIwMDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIHgDAW
BgNVHREEDzANggtleGFtcGxlLmNvbTAKBggqhkjOPQQDAgNHADBEAiBRdPrVpQtJ
s+J9DFhT1Db6QmIZFfjFFKQ88B0gFezyfAIgSwIxntwrPFYagfK6vPcRpDxG2oLV
LkfnP5v1SPjOsMY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIBRTCB7KADAgECAgkAkaBeQj6ZErAwCgYIKoZIzj0EAwIwEjEQMA4GA1UEAwwH
Um9vdCBDQTAeFw0yNjA1MDUyMTM4MzJaFw0zMTA1MDQyMTM4MzJaMBoxGDAWBgNV
BAMMD0ludGVybWVkaWF0ZSBDQTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJEH
0D77iyFv01I/4sEqUaoUel50BBwsWSYrH/LtO6cdGI28NyzMyFuYrE6UCRusgAKo
XBmWjHEGJmoDPoAy2t+jIzAhMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD
AgEGMAoGCCqGSM49BAMCA0gAMEUCIBWtPiDwXXEvbgy2+nu/w4MRBNsQ3hbVWyJT
ITN+1R6WAiEA2AfGBy3Hz8oYY5wPldIndrXjntCzzSEduB6pEvYQZWo=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE PROPERTIES-----
AAA=
-----END CERTIFICATE PROPERTIES-----
-----BEGIN CERTIFICATE-----
MIIBojCCAUigAwIBAgIBAjAKBggqhkjOPQQDAjAcMRowGAYDVQQDDBFJbnRlcm1l
ZGlhdGUgQ0EgMjAeFw0yNjA5MTEyMjA3MzJaFw0yNzA5MTEyMjA3MzJaMBYxFDAS
BgNVBAMMC2V4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErvaU
F7iXvurpBgeG5eCx8cMmcOKb11Nvlk/dCdcAelIcvAAHABGc8cVSkjGlNGQhgeCm
MBKQipIiDskIhIZoRaOBgDB+MB0GA1UdDgQWBBTw8ysZe1gMI/OX0Jx9Y/0yq4Q6
zjAfBgNVHSMEGDAWgBT9JPmvVv2aTEDF/R+XTZzy9iMRWjAPBgNVHRMBAf8EBTAD
AQH/MBYGA1UdEQQPMA2CC2V4YW1wbGUuY29tMBMGA1UdJQQMMAoGCCsGAQUFBwMB
MAoGCCqGSM49BAMCA0gAMEUCIQCAbiJcNrPnAr0N9oBJ70ikytGQxTQLEfdMF3Id
dRHp/QIgNFQIR4pV/CxvnbJnqUYySx7NgynEBj4v9fndOj8+Mvw=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIBhDCCASugAwIBAgIBATAKBggqhkjOPQQDAjAUMRIwEAYDVQQDDAlSb290IENB
IDIwHhcNMjYwOTExMjIwNzMyWhcNMzEwOTEwMjIwNzMyWjAcMRowGAYDVQQDDBFJ
bnRlcm1lZGlhdGUgQ0EgMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAqUU6fc
WctyRGFMz3CGQwUCb5pPhi7imSamipwIrQopqOOUqTr27RLa0CSQwL/87OH/Yxc8
1jp3cC3qdEp4sAmjZjBkMB0GA1UdDgQWBBT9JPmvVv2aTEDF/R+XTZzy9iMRWjAf
BgNVHSMEGDAWgBSQ1f8odAe5s7NU91kxX2mPDd8xezASBgNVHRMBAf8ECDAGAQH/
AgEAMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAgNHADBEAiA1VrVfvq1QtS5v
gZYh1yEIL8wV863GEE2C6/zSB7TzaAIgTUBrpMo56XIb+Wez1CPWtqYFd2a6NvJx
IKzgi/++xTs=
-----END CERTIFICATE-----
]]></artwork>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <t>As in <xref target="X680"/>, an OID component in a trust anchor ID or trust anchor ID pattern can be arbitrarily large. Implementations MUST NOT misinterpret large components or otherwise exhibit undefined behavior on overflow.</t>
      <t>The operations defined in this document act on the byte representation of a trust anchor ID, and do not require decoding individual OID components. Implementations are RECOMMENDED to retain IDs in the byte representation, which naturally supports arbitrary OID components. In particular, trust anchor ID equality and the procedures in <xref target="trust-anchor-id-patterns"/> can work directly on the byte representations.</t>
      <t>However, in some contexts, the ASCII, dotted-decimal representations are more suitable. For example, an application might print IDs for diagnostics, use a text-based configuration file, or work with IDs in some other text-based system. In these contexts, implementations MAY set an implementation-defined upper bound on supported trust anchor IDs. This can help avoid big integers or a quadratic base-10 conversion.</t>
      <t>When limiting OID components, implementations MUST still correctly and interoperably handle unsupported but valid trust anchor IDs. In particular:</t>
      <ul spacing="normal">
        <li>
          <t>Implementations that print a trust anchor ID for diagnostic purposes MAY skip printing an ID, or printing some fallback representation, if they are unable to convert a large OID component to dotted decimal.</t>
        </li>
        <li>
          <t>TLS implementations MUST accept IDs with arbitrarily large OID components in ClientHello, EncryptedExtensions, and CertificateRequest. They MAY discard unsupported IDs before passing them to another component. If all IDs in EncryptedExtensions are discarded, this is equivalent to the extension being omitted.</t>
        </li>
        <li>
          <t>Relying parties MAY limit their local configuration (<xref target="relying-party-configuration"/>) to trust anchor IDs with bounded OID components.</t>
        </li>
        <li>
          <t>Authenticating parties MAY limit their local configuration (<xref target="authenticating-party-configuration"/>) to trust anchor IDs and patterns with bounded OID components.</t>
        </li>
        <li>
          <t>Authenticating parties MAY discard unsupported IDs or patterns in CertificatePropertyList structures before applying them in local configuration, but doing so might result in an incomplete configuration.</t>
        </li>
      </ul>
      <t>Implementations with an OID component limit SHOULD, at minimum, support OID components up to 2<sup>32</sup>-1 to support the full range of PEN values defined in <xref section="3" sectionFormat="of" target="RFC9371"/>. Trust anchor IDs SHOULD be allocated to fit in this limit.</t>
    </section>
    <section anchor="use-cases">
      <name>Use Cases</name>
      <t><tt>trust_anchors</tt>, like <tt>certificate_authorities</tt>, implements trust anchor negotiation. That is, it allows an authenticating party to incorporate relying party trust anchors into certificate selection. <tt>trust_anchors</tt> allows a wider range of TLS applications to use trust anchor negotiation, notably those that would be unable to use <tt>certificate_authorities</tt> due to size or privacy limitations.</t>
      <t>Without trust anchor negotiation, authenticating parties are limited to CAs in the intersection of all supported relying parties. However, trust anchors can vary significantly between different relying party implementations and different versions of a single relying party implementation, particularly as PKIs evolve to meet user security needs.</t>
      <t>As security-positive PKI changes increase variance, this intersection shrinks. This leads to a conflict between user security and service availability. When the authenticating party cannot serve a certificate in the intersection, either the relying party must risk user security by not changing the PKI, or the authenticating party must degrade service availability by dropping support for some relying parties.</t>
      <t>The rest of this section discusses use cases for trust anchor negotiation.</t>
      <section anchor="making-use-of-newly-trusted-cas">
        <name>Making Use of Newly-Trusted CAs</name>
        <t>When one relying party trusts a new CA, other relying parties, such as older ones, may not yet trust it. Trust anchor negotiation allows an authenticating party to negotiate a certificate from the newer CA with relying parties that do trust it, while continuing to negotiate another certificate with relying parties that do not. This allows PKI transitions to progress smoothly. Connections can make use of, for example, a new CA's stronger signature algorithms, stronger validation practices, better automation, or more efficient certificate sizes, without interruptions to other connections.</t>
        <t>Without negotiation, the authenticating party is limited to its relying parties' intersection and must wait for every supported relying party to be updated before the transition even begins. This wait could often take many years. In some cases, such as with IoT devices, relying parties may never receive updates.</t>
        <t>In some contexts, other fields can provide a partial signal. For example, post-quantum-capable relying parties may be detected with the <tt>signature_algorithms</tt> and <tt>signature_algorithms_cert</tt> extensions. However, this relies on all post-quantum CAs being added at roughly the same time and that they are sufficiently interchangeable to be negotiated with these extensions. Trust anchor negotiation directly addresses this problem and allows for both gradual and possibly heterogeneous deployment of post-quantum CAs across relying parties.</t>
      </section>
      <section anchor="removing-untrustworthy-cas">
        <name>Removing Untrustworthy CAs</name>
        <t>When CAs are determined to be untrustworthy, relying parties must remove them to mitigate the risk to user security. Over time, this shrinks their intersection with older relying parties. Without negotiation, the result is authenticating parties have fewer and fewer CA choices available. Even determining the intersecting CAs can be difficult. Often, the only option is to try the new certificate and monitor errors. For authenticating parties that serve many diverse relying parties, this is a disruptive and risky process.</t>
        <t>Trust anchor negotiation removes this constraint. If an authenticating party's CA is distrusted, it can use a new CA in addition to the existing one. The addition does not risk outages for older relying parties and may be chosen from a wider set of CAs, as it only needs to be compatible with the relying parties that distrusted the other CA.</t>
        <t>Over time, the authenticating party can monitor which certificates it serves, and re-evaluate which CA or CAs to use. For example, it may find the new CA was sufficient, or that older relying parties have since all been updated. However, user security depends on the relying party's trust anchors, not the authenticating party's choice of CA, so this can occur asynchronously, based on serving needs and costs, rather than delay the response to a security incident.</t>
      </section>
      <section anchor="key-rotation">
        <name>Key Rotation</name>
        <t>Despite the severity of root CA private key compromise and the benefits of routinely rotating cryptographic key material, such rotation in PKIs is often very rare. In 2023, the oldest root in <xref target="CHROME-ROOTS"/> and <xref target="MOZILLA-ROOTS"/> was 25 years old, dating to 1998.</t>
        <t>Key rotation in PKIs used in TLS is challenging, as it combines the challenges described in both <xref target="making-use-of-newly-trusted-cas"/> and <xref target="removing-untrustworthy-cas"/>. Without trust anchor negotiation, authenticating parties cannot switch to the new root as long as any supported older relying party requires the old root. That, in turn, means relying parties cannot distrust the old root, leaving them vulnerable.</t>
        <t>Trust anchor negotiation offers a smooth transition for CA key rotation. The CA can provide certification paths for the old and new roots. The authenticating party can then serve both paths without impacting older relying parties. New relying parties can then distrust the old root.</t>
      </section>
      <section anchor="other-root-transitions">
        <name>Other Root Transitions</name>
        <t>The mechanisms in this document can aid PKI transitions beyond key rotation. For example, a CA operator may generate a post-quantum root CA and issue from the classical and post-quantum roots concurrently. The authenticating party will then, transparently and with no configuration change, serve both. As in <xref target="key-rotation"/>, newer relying parties can then remove the classical roots, while older relying parties continue to function.</t>
        <t>This same procedure may also be used to transition between newer, more size-efficient signature algorithms, as they are developed.</t>
      </section>
      <section anchor="intermediate-elision">
        <name>Intermediate Elision</name>
        <t>In many PKIs, root CAs issue shorter-lived intermediate certificates which, in turn, issue end-entity certificates. This comes at a bandwidth cost: the TLS handshake includes an extra certificate, which includes a public key, signature, and X.509 metadata. Post-quantum signature algorithms will dramatically increase this cost. ML-DSA-65 <xref target="FIPS204"/>, for example, has a total public key and signature size of 5,261 bytes.</t>
        <t>Trust anchor negotiation can avoid this size cost. Relying parties predistribute intermediate CAs and configure them as short-lived trust anchors. Authenticating parties can then send shorter paths to those relying parties.</t>
        <t>More generally, a CA operator provides authenticating parties with two certification paths: a longer path ending at a long-lived root and a shorter path ending at a short-lived root. Relying parties trust both the long-lived root and the most recent short-lived root. The authenticating party sends the shorter path when possible, falling back to the longer path when the relying party's short-lived root is stale.</t>
      </section>
      <section anchor="conflicting-relying-party-requirements">
        <name>Conflicting Relying Party Requirements</name>
        <t>An authenticating party may need to support relying parties with different, potentially conflicting requirements. For example, in contexts where online revocation checks are expensive, unreliable, or privacy-sensitive, user security is best served by short-lived certificates. In other contexts, long-lived certificates may be more appropriate for, e.g., systems that are offline for long periods of time or have unreliable clocks.</t>
        <t>Trust anchor negotiation allows these conflicts to be resolved by different trust anchors where necessary. This avoids the need to compromise on user security or service availability.</t>
      </section>
      <section anchor="backup-certificates">
        <name>Backup Certificates</name>
        <t>An authenticating party may obtain certification paths from multiple CAs for redundancy. If one CA is compromised and removed from newer relying parties, the TLS server software will be able to gracefully serve a backup certification path, avoiding the immediate breakage that would otherwise be caused by this removal.</t>
      </section>
      <section anchor="public-key-pinning">
        <name>Public Key Pinning</name>
        <t>To reduce security risk from misissued certificates, relying parties sometimes employ public key pinning <xref target="RFC7469"/>. Pinning effectively reduces a relying party's trust anchor list to a subset of the original set.</t>
        <t>As other relying parties in the PKI evolve, the pinning relying party limits the authenticating party to satisfy both the pinning constraint and newer constraints in the PKI. This can lead to conflicts if, for example, the pinned CA is distrusted by a newer relying party. The authenticating party is then forced to either break the pinning relying party, or break the newer ones.</t>
        <t>Trust anchor negotiation reduces this conflict, provided the pinning relying party negotiates with its reduced trust anchor list. The authenticating party can then use a certificate from the pinned CA with the pinning relying party, and another CA with other relying parties.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <section anchor="relying-parties">
        <name>Relying Parties</name>
        <t>The <tt>trust_anchors</tt> extension is analogous to the <tt>certificate_authorities</tt> extension (<xref section="4.3.4" sectionFormat="of" target="RFC9846"/>), but more size-efficient. Like <tt>certificate_authorities</tt>, <tt>trust_anchors</tt> reveals some information about the relying party's trust anchors. However, unlike <tt>certificate_authorities</tt>, <tt>trust_anchors</tt> allows a relying party to only reveal a trust anchor in response to the authenticating party's list, which reduces the fingerprinting exposure. This section provides guidance for a relying party to configure this mechanism, based on its privacy goals.</t>
        <t>When using this extension, a relying party's trust anchors may be divided into three categories:</t>
        <ol spacing="normal" type="1"><li>
            <t>Trust anchors whose IDs the relying party never sends, but still trusts. These are trust anchors that do not participate in this mechanism.</t>
          </li>
          <li>
            <t>Trust anchors whose IDs the relying party sends <em>conditionally</em>, i.e. only if the server offers them. For example, the relying party may indicate support for a trust anchor if its ID is listed in the server's HTTPS/SVCB record or trust anchor list in EncryptedExtensions.</t>
          </li>
          <li>
            <t>Trust anchors whose IDs the relying party sends <em>unconditionally</em>, i.e. independently of the authenticating party's behavior.</t>
          </li>
        </ol>
        <t>Each of these categories carries a different fingerprinting exposure:</t>
        <t>Trust anchors that do not participate are not revealed by this extension. However, they have some fingerprinting exposure due to being trusted. Given a certification path, an authenticating party can probe whether the relying party trusts the trust anchor by seeing if the relying party accepts it.</t>
        <t>Trust anchor IDs sent in response to the authenticating party can only be observed actively. That is, the authenticating party could vary its list and observe how the client responds, in order to probe for the client's trust anchor list. This is similar to the exposure of trust anchors not participating in this extension, except that the trust anchor can be probed by only knowing the trust anchor ID.</t>
        <t>Trust anchor IDs sent unconditionally can be observed passively. This mode is analogous to the <tt>certificate_authorities</tt> extension. Relying parties SHOULD NOT unconditionally advertise trust anchor lists that are unique to an individual user. Rather, unconditionally-advertised lists SHOULD be empty or computed only from the trust anchors common to the relying party's anonymity set (<xref section="3.3" sectionFormat="of" target="RFC6973"/>).</t>
        <t>Relying parties SHOULD determine which trust anchors participate in this mechanism, and whether to advertise them unconditionally or conditionally, based on their privacy goals.</t>
        <t>Additionally, a relying party that computes the <tt>trust_anchors</tt> extension based on prior state may allow observers to correlate across connections. Relying parties SHOULD NOT maintain such state across connections that are intended to be uncorrelated.</t>
      </section>
      <section anchor="authenticating-parties">
        <name>Authenticating Parties</name>
        <t>If the authenticating party is a server, the <tt>trust_anchors</tt> extension in EncryptedExtensions enumerates the trust anchors for the server's available certification paths. (See <xref target="recovery"/>.) This assumes these trust anchors are not sensitive. Servers SHOULD NOT use this mechanism to negotiate certification paths with sensitive trust anchors.</t>
        <t>In servers that host multiple services, this protocol only enumerates certification paths for the requested service. If, for example, a server uses the <tt>server_name</tt> extension to select services, this list is expected to be filtered by <tt>server_name</tt>. This ensures that co-located services are not revealed.</t>
        <t>The above does not apply if the authenticating party is a client. This protocol does not enumerate the available certification paths for a client.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="incorrect-selection-metadata">
        <name>Incorrect Selection Metadata</name>
        <t>If the authenticating party has provisioned certification paths with incorrect trust anchor IDs, it may negotiate inaccurately and send an untrusted path to the relying party when another candidate would have been trusted. This will not result in the untrusted path becoming trusted, but the connection will fail.</t>
      </section>
      <section anchor="trust-anchor-negotiation">
        <name>Trust Anchor Negotiation</name>
        <t>Both the <tt>trust_anchors</tt> and <tt>certificate_authorities</tt> (<xref section="4.3.4" sectionFormat="of" target="RFC9846"/>) extensions implement trust anchor negotiation, so security considerations are largely unchanged from <tt>certificate_authorities</tt>. This section discusses security considerations for trust anchor negotiation in general.</t>
        <section anchor="relying-party-policies">
          <name>Relying Party Policies</name>
          <t>PKI-based TLS authentication depends on the relying party's certificate policies. If the relying party trusts an untrustworthy CA, that CA can intercept TLS connections made by that relying party by issuing certificates associating the target name with the wrong TLS key.</t>
          <t>This attack vector is available with or without trust anchor negotiation. The negotiation mechanism described in this document allows certificate selection to reflect a relying party's certificate policies. It does not determine the certificate policies themselves. Relying parties remain responsible for trusting only trustworthy CAs, and untrustworthy CAs remain a security risk when trusted.</t>
        </section>
        <section anchor="agility">
          <name>Agility</name>
          <t>As with other TLS parameters, negotiation reduces a conflict between availability and security, which allows PKIs to better mitigate security risks to users. When relying parties in an existing TLS ecosystem improve their certificate policies, trust anchor negotiation helps authenticating parties navigate differences between those relying parties and existing relying parties. Each set of requirements may be satisfied without compatibility risk to the other. <xref target="use-cases"/> discusses such scenarios in more detail.</t>
          <t>Negotiation also reduces pressures on relying parties to sacrifice user security for compatibility. If a relying party does not trust an authenticating party's current CA, connections between the two will fail until either the relying party trusts the CA or the authenticating party uses an already trusted CA. Without trust anchor negotiation, the authenticating party is limited to one certificate, and therefore switching CAs risks compatibility problems with other relying parties. The relying party then faces compatibility pressure to add this CA, even if it deems the CA a security risk. With trust anchor negotiation, the authenticating party can use its existing CA <em>in addition to</em> another CA trusted by the relying party. This allows the ecosystem to improve interoperability without sacrificing user security.</t>
        </section>
        <section anchor="serving-multiple-certificates">
          <name>Serving Multiple Certificates</name>
          <t>Trust anchor negotiation reduces compatibility pressures against authenticating parties serving certificates from a less common CA, as they can be served with other certificates. In some cases, the CA may have been distrusted, but still used to support older relying parties. As discussed in <xref target="use-cases"/> and <xref target="agility"/>, this capability aids PKI transitions that mitigate security risks to users.</t>
          <t>Even if the CA is untrustworthy, these certificates do not enable the CA to decrypt or intercept the connection. If a certificate asserts the correct information about the authenticating party, notably the correct public key, the authenticating party can safely present it. Issuing a certificate for the authenticating party's public key does not grant the CA access to the corresponding private key. Conversely, if the attacker already has access to the authenticating party's private key, they do not need to be in control of a CA to intercept a connection.</t>
          <t>Rather, it is the relying party's choice of trusted CAs that determines susceptibility to interception. If the relying party trusts a misbehaving or attacker-controlled CA, the attacker can intercept the connection with a public key certified by that CA, regardless of which CA is used by the intended authenticating party. Conversely, if the relying party does not trust the attacker's CA, the attacker cannot successfully intercept the connection using a public key certified by this CA.</t>
          <t>Choosing trusted CAs is a complex, security-critical process, the full considerations of which are outside the scope of this document. Relying parties thus SHOULD NOT interpret the authenticating party's choice of CA as an endorsement of the CA. Trusting a CA means trusting <em>all</em> certificates issued by that CA, so it is not enough to observe correct certificates from an authenticating party. An untrustworthy CA may sign one correct certificate, but also sign incorrect certificates, possibly in the future, that can attack the relying party.</t>
        </section>
        <section anchor="targeting-tls-interception">
          <name>Targeting TLS Interception</name>
          <t>A network attacker in possession of a misissued certificate could use trust anchor negotiation to differentiate clients and only enable TLS interception with clients that accept the certificate. The network attacker may wish to do this to reduce the odds of detection.</t>
          <t>However, trust anchor negotiation only impacts detection where this differentiation was not already possible. In TLS, the client offers all its available TLS features, including cipher suites and other extensions, in the TLS ClientHello. Any variation in client TLS policies, related or unrelated to trust anchors, may be used as a fingerprint. Transport properties, such as IP geolocation, may also be used. While fingerprinting's heuristic nature makes broad, legitimate use difficult, a network attacker's single interception service can easily use it for targeted attacks.</t>
          <t>If the attacker targets any clients that enforce Certificate Transparency <xref target="RFC6962"/>, the misissued certificates will need to be publicly logged. In this case, detection is more robust, and client differentiation, with or without trust anchor negotiation, has no significant impact.</t>
        </section>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="tls-extensiontype-updates">
        <name>TLS ExtensionType Updates</name>
        <t>IANA is requested to create the following entry in the TLS ExtensionType Values registry, originally created in <xref target="RFC4366"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Extension Name</th>
              <th align="left">TLS 1.3</th>
              <th align="left">DTLS-Only</th>
              <th align="left">Recommended</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD</td>
              <td align="left">trust_anchors</td>
              <td align="left">CH, EE, CR, CT</td>
              <td align="left">N</td>
              <td align="left">Y</td>
              <td align="left">[this-RFC]</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="media-type-updates">
        <name>Media Type Updates</name>
        <t>IANA is requested to create the following entry in the "Media Types" registry, defined in <xref target="RFC6838"/>:</t>
        <dl>
          <dt>Type name:</dt>
          <dd>
            <t>application</t>
          </dd>
          <dt>Subtype name:</dt>
          <dd>
            <t>pem-certificate-chain-with-properties</t>
          </dd>
          <dt>Required parameters:</dt>
          <dd>
            <t>None</t>
          </dd>
          <dt>Optional parameters:</dt>
          <dd>
            <t>None</t>
          </dd>
          <dt>Encoding considerations:</dt>
          <dd>
            <t>7bit</t>
          </dd>
          <dt>Security considerations:</dt>
          <dd>
            <t>Carries a cryptographic certificate and its associated certificate chain and additional properties. This media type carries no active content.</t>
          </dd>
          <dt>Interoperability considerations:</dt>
          <dd>
            <t>None</t>
          </dd>
          <dt>Published specification:</dt>
          <dd>
            <t>[this-RFC, <xref target="pem-representation"/>]</t>
          </dd>
          <dt>Applications that use this media type:</dt>
          <dd>
            <t>ACME clients and servers, HTTP servers, other applications that need to be configured with a certificate chain</t>
          </dd>
          <dt>Additional information:</dt>
          <dd>
            <dl spacing="compact">
              <dt>Deprecated alias names for this type:</dt>
              <dd>n/a</dd>
              <dt>Magic number(s):</dt>
              <dd>n/a</dd>
              <dt>File extension(s):</dt>
              <dd>.pem</dd>
              <dt>Macintosh file type code(s):</dt>
              <dd>n/a</dd>
            </dl>
          </dd>
          <dt>Person &amp; email address to contact for further information:</dt>
          <dd>
            <t>See Authors' Addresses section.</t>
          </dd>
          <dt>Intended usage:</dt>
          <dd>
            <t>COMMON</t>
          </dd>
          <dt>Restrictions on usage:</dt>
          <dd>
            <t>n/a</t>
          </dd>
          <dt>Author:</dt>
          <dd>
            <t>See Authors' Addresses section.</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
        </dl>
      </section>
      <section anchor="pkix-registry-updates">
        <name>PKIX Registry Updates</name>
        <t>IANA is requested to create the following entry in the SMI Security for PKIX Module Identifier registry, defined by <xref target="RFC7299"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Decimal</th>
              <th align="left">Description</th>
              <th align="left">References</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD</td>
              <td align="left">id-mod-trustAnchorIDs-2025</td>
              <td align="left">[this-RFC]</td>
            </tr>
          </tbody>
        </table>
        <t>IANA is requested to add the following entry to the "SMI Security for PKIX Relative Distinguished Name Attribute" registry <xref target="RFC9925"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Decimal</th>
              <th align="left">Description</th>
              <th align="left">References</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">3</td>
              <td align="left">id-rdna-trustAnchorID</td>
              <td align="left">[this-RFC]</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="certificatepropertytype-registry">
        <name>CertificatePropertyType Registry</name>
        <t>IANA is requested to create the "CertificatePropertyType" registry within the "Transport Layer Security (TLS) Extensions" group. The initial entries in the registry are as follows:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Decimal</th>
              <th align="left">Description</th>
              <th align="left">References</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">trust_anchor_id</td>
              <td align="left">[this-RFC]</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">trust_anchor_groups</td>
              <td align="left">[this-RFC]</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">trust_anchor_negotiation</td>
              <td align="left">[this-RFC]</td>
            </tr>
          </tbody>
        </table>
        <t>New values are allocated according to the following process:</t>
        <ul spacing="normal">
          <li>
            <t>Values in the range 0-65279 are assigned via Specification Required <xref target="RFC8126"/>.</t>
          </li>
          <li>
            <t>Values in the range 65280-65535 are reserved for Private Use <xref target="RFC8126"/>.</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="X680" target="https://www.itu.int/rec/T-REC-X.680">
          <front>
            <title>Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021"/>
          </front>
          <seriesInfo name="ISO/IEC" value="8824-1:2021"/>
        </reference>
        <reference anchor="X690" target="https://www.itu.int/rec/T-REC-X.690">
          <front>
            <title>Information technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021"/>
          </front>
          <seriesInfo name="ISO/IEC" value="8825-1:2021"/>
        </reference>
        <reference anchor="RFC9846">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="July" year="2026"/>
            <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 obsoletes RFC 8446, which specified TLS 1.3. This document obsoletes RFC 5246 (specifying TLS 1.2) and RFCs 5077, 6961, 7627, and 8422, all of which pertain to TLS 1.2 or earlier, and updates RFCs 5705 and 6066. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9846"/>
          <seriesInfo name="DOI" value="10.17487/RFC9846"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </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="RFC9371">
          <front>
            <title>Registration Procedures for Private Enterprise Numbers (PENs)</title>
            <author fullname="A. Baber" initials="A." surname="Baber"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="March" year="2023"/>
            <abstract>
              <t>This document describes how Private Enterprise Numbers (PENs) are registered by IANA. It shows how to request a new PEN and how to modify a current PEN. It also gives a brief overview of PEN uses.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9371"/>
          <seriesInfo name="DOI" value="10.17487/RFC9371"/>
        </reference>
        <reference anchor="RFC8555">
          <front>
            <title>Automatic Certificate Management Environment (ACME)</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews"/>
            <author fullname="D. McCarney" initials="D." surname="McCarney"/>
            <author fullname="J. Kasten" initials="J." surname="Kasten"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>Public Key Infrastructure using X.509 (PKIX) certificates are used for a number of purposes, the most significant of which is the authentication of domain names. Thus, certification authorities (CAs) in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate. As of this writing, this verification is done through a collection of ad hoc mechanisms. This document describes a protocol that a CA and an applicant can use to automate the process of verification and certificate issuance. The protocol also provides facilities for other certificate management functions, such as certificate revocation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8555"/>
          <seriesInfo name="DOI" value="10.17487/RFC8555"/>
        </reference>
        <reference anchor="RFC4158">
          <front>
            <title>Internet X.509 Public Key Infrastructure: Certification Path Building</title>
            <author fullname="M. Cooper" initials="M." surname="Cooper"/>
            <author fullname="Y. Dzambasow" initials="Y." surname="Dzambasow"/>
            <author fullname="P. Hesse" initials="P." surname="Hesse"/>
            <author fullname="S. Joseph" initials="S." surname="Joseph"/>
            <author fullname="R. Nicholas" initials="R." surname="Nicholas"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This document provides guidance and recommendations to developers building X.509 public-key certification paths within their applications. By following the guidance and recommendations defined in this document, an application developer is more likely to develop a robust X.509 certificate-enabled application that can build valid certification paths across a wide range of PKI environments. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4158"/>
          <seriesInfo name="DOI" value="10.17487/RFC4158"/>
        </reference>
        <reference anchor="RFC7468">
          <front>
            <title>Textual Encodings of PKIX, PKCS, and CMS Structures</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="S. Leonard" initials="S." surname="Leonard"/>
            <date month="April" year="2015"/>
            <abstract>
              <t>This document describes and discusses the textual encodings of the Public-Key Infrastructure X.509 (PKIX), Public-Key Cryptography Standards (PKCS), and Cryptographic Message Syntax (CMS). The textual encodings are well-known, are implemented by several applications and libraries, and are widely deployed. This document articulates the de facto rules by which existing implementations operate and defines them so that future implementations can interoperate.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7468"/>
          <seriesInfo name="DOI" value="10.17487/RFC7468"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC6973">
          <front>
            <title>Privacy Considerations for Internet Protocols</title>
            <author fullname="A. Cooper" initials="A." surname="Cooper"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="J. Morris" initials="J." surname="Morris"/>
            <author fullname="M. Hansen" initials="M." surname="Hansen"/>
            <author fullname="R. Smith" initials="R." surname="Smith"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document offers guidance for developing privacy considerations for inclusion in protocol specifications. It aims to make designers, implementers, and users of Internet protocols aware of privacy-related design choices. It suggests that whether any individual RFC warrants a specific privacy considerations section will depend on the document's content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6973"/>
          <seriesInfo name="DOI" value="10.17487/RFC6973"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="RFC7299">
          <front>
            <title>Object Identifier Registry for the PKIX Working Group</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="July" year="2014"/>
            <abstract>
              <t>When the Public-Key Infrastructure using X.509 (PKIX) Working Group was chartered, an object identifier arc was allocated by IANA for use by that working group. This document describes the object identifiers that were assigned in that arc, returns control of that arc to IANA, and establishes IANA allocation policies for any future assignments within that arc.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7299"/>
          <seriesInfo name="DOI" value="10.17487/RFC7299"/>
        </reference>
        <reference anchor="RFC9925">
          <front>
            <title>Unsigned X.509 Certificates</title>
            <author fullname="D. Benjamin" initials="D." surname="Benjamin"/>
            <date month="February" year="2026"/>
            <abstract>
              <t>This document defines a placeholder X.509 signature algorithm that may be used in contexts where the consumer of the certificate is not expected to verify the signature. As part of this, it updates RFC 5280.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9925"/>
          <seriesInfo name="DOI" value="10.17487/RFC9925"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC5912">
          <front>
            <title>New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>The Public Key Infrastructure using X.509 (PKIX) certificate format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5912"/>
          <seriesInfo name="DOI" value="10.17487/RFC5912"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="CHROME-ROOTS" target="https://chromium.googlesource.com/chromium/src/+/main/net/data/ssl/chrome_root_store">
          <front>
            <title>Chrome Root Store</title>
            <author>
              <organization>Chromium</organization>
            </author>
            <date year="2023" month="August" day="30"/>
          </front>
        </reference>
        <reference anchor="MOZILLA-ROOTS" target="https://wiki.mozilla.org/CA/Included_Certificates">
          <front>
            <title>Mozilla Included CA Certificate List</title>
            <author>
              <organization>Mozilla</organization>
            </author>
            <date year="2023" month="August" day="30"/>
          </front>
        </reference>
        <reference anchor="FIPS204" target="https://csrc.nist.gov/projects/post-quantum-cryptography">
          <front>
            <title>Module-Lattice-based Digital Signature Standard</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2023" month="August"/>
          </front>
          <seriesInfo name="FIPS PUB" value="204"/>
        </reference>
        <reference anchor="SCTNotAfter" target="https://dadrian.io/blog/posts/sct-not-after/">
          <front>
            <title>How to distrust a CA without any certificate errors</title>
            <author initials="D." surname="Adrian" fullname="David Adrian">
              <organization/>
            </author>
            <date year="2025" month="March"/>
          </front>
        </reference>
        <reference anchor="RFC4514">
          <front>
            <title>Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names</title>
            <author fullname="K. Zeilenga" initials="K." role="editor" surname="Zeilenga"/>
            <date month="June" year="2006"/>
            <abstract>
              <t>The X.500 Directory uses distinguished names (DNs) as primary keys to entries in the directory. This document defines the string representation used in the Lightweight Directory Access Protocol (LDAP) to transfer distinguished names. The string representation is designed to give a clean representation of commonly used distinguished names, while being able to represent any distinguished name. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4514"/>
          <seriesInfo name="DOI" value="10.17487/RFC4514"/>
        </reference>
        <reference anchor="I-D.ietf-plants-merkle-tree-certs">
          <front>
            <title>Merkle Tree Certificates</title>
            <author fullname="David Benjamin" initials="D." surname="Benjamin">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Devon O'Brien" initials="D." surname="O'Brien">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Luke Valenta" initials="L." surname="Valenta">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Filippo Valsorda" initials="F." surname="Valsorda">
              <organization>Geomys</organization>
            </author>
            <date day="7" month="October" year="2026"/>
            <abstract>
              <t>   This document describes Merkle Tree certificates, a new form of X.509
   certificates which integrate public logging of the certificate, in
   the style of Certificate Transparency.  The integrated design reduces
   logging overhead in the face of both shorter-lived certificates and
   large post-quantum signature algorithms, while still achieving
   comparable security properties to existing X.509 constructions and
   Certificate Transparency.  Merkle Tree certificates additionally
   admit an optional size optimization that avoids signatures
   altogether, at the cost of only applying to up-to-date relying
   parties and older certificates.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-plants-merkle-tree-certs-07"/>
        </reference>
        <reference anchor="RFC7469">
          <front>
            <title>Public Key Pinning Extension for HTTP</title>
            <author fullname="C. Evans" initials="C." surname="Evans"/>
            <author fullname="C. Palmer" initials="C." surname="Palmer"/>
            <author fullname="R. Sleevi" initials="R." surname="Sleevi"/>
            <date month="April" year="2015"/>
            <abstract>
              <t>This document defines a new HTTP header that allows web host operators to instruct user agents to remember ("pin") the hosts' cryptographic identities over a period of time. During that time, user agents (UAs) will require that the host presents a certificate chain including at least one Subject Public Key Info structure whose fingerprint matches one of the pinned fingerprints for that host. By effectively reducing the number of trusted authorities who can authenticate the domain during the lifetime of the pin, pinning may reduce the incidence of man-in-the-middle attacks due to compromised Certification Authorities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7469"/>
          <seriesInfo name="DOI" value="10.17487/RFC7469"/>
        </reference>
        <reference anchor="RFC6962">
          <front>
            <title>Certificate Transparency</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Kasper" initials="E." surname="Kasper"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6962"/>
          <seriesInfo name="DOI" value="10.17487/RFC6962"/>
        </reference>
        <reference anchor="RFC4366">
          <front>
            <title>Transport Layer Security (TLS) Extensions</title>
            <author fullname="S. Blake-Wilson" initials="S." surname="Blake-Wilson"/>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
            <author fullname="D. Hopwood" initials="D." surname="Hopwood"/>
            <author fullname="J. Mikkelsen" initials="J." surname="Mikkelsen"/>
            <author fullname="T. Wright" initials="T." surname="Wright"/>
            <date month="April" year="2006"/>
            <abstract>
              <t>This document describes extensions that may be used to add functionality to Transport Layer Security (TLS). It provides both generic extension mechanisms for the TLS handshake client and server hellos, and specific extensions using these generic mechanisms.</t>
              <t>The extensions may be used by TLS clients and servers. The extensions are backwards compatible: communication is possible between TLS clients that support the extensions and TLS servers that do not support the extensions, and vice versa. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4366"/>
          <seriesInfo name="DOI" value="10.17487/RFC4366"/>
        </reference>
      </references>
    </references>
    <?line 949?>

<section anchor="asn1-module">
      <name>ASN.1 Module</name>
      <t>This ASN.1 module uses the conventions established by <xref target="RFC5912"/>.</t>
      <sourcecode type="asn.1"><![CDATA[
TrustAnchorIDs-2025
  { iso(1) identified-organization(3) dod(6) internet(1)
    security(5) mechanisms(5) pkix(7) id-mod(0)
    id-mod-trustAnchorIDs-2025(TBD) }

DEFINITIONS IMPLICIT TAGS ::=
BEGIN

IMPORTS
  ATTRIBUTE
  FROM PKIX-CommonTypes-2009 -- in [RFC5912]
    { iso(1) identified-organization(3) dod(6) internet(1)
      security(5) mechanisms(5) pkix(7) id-mod(0)
      id-mod-pkixCommon-02(57) } ;

id-rdna-trustAnchorID OBJECT IDENTIFIER ::= {
    iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) rdna(25) 3 }

-- The attribute value MUST be a valid trust anchor ID.
at-trustAnchorID ATTRIBUTE ::= {
    TYPE RELATIVE-OID
    IDENTIFIED BY id-rdna-trustAnchorID
}

END
]]></sourcecode>
    </section>
    <section anchor="trust-anchor-id-pattern-test-vectors">
      <name>Trust Anchor ID Pattern Test Vectors</name>
      <t>This section contains test vectors for trust anchor ID patterns (<xref target="trust-anchor-id-patterns"/>). Patterns and IDs are provided in their byte representations in hexadecimal.</t>
      <t>The following IDs are contained in the pattern <tt>81fd5981fd597b8348861580</tt> (32473.{123-456}.{789-}):</t>
      <ul spacing="normal">
        <li>
          <t><tt>81fd597b8615</tt> (32473.123.789)</t>
        </li>
        <li>
          <t><tt>81fd59822c8704</tt> (32473.300.900)</t>
        </li>
        <li>
          <t><tt>81fd598348868d1f</tt> (32473.456.99999)</t>
        </li>
        <li>
          <t><tt>81fd59834881ffffffffffffffff7f</tt> (32473.456.(2<sup>64</sup>-1))</t>
        </li>
        <li>
          <t><tt>81fd59834882808080808080808000</tt> (32473.456.(2<sup>64</sup>))</t>
        </li>
      </ul>
      <t>The following IDs are not contained in the pattern <tt>81fd5981fd597b8348861580</tt> (32473.{123-456}.{789-}):</t>
      <ul spacing="normal">
        <li>
          <t><tt>81fd597b</tt> (32473.123, too few components)</t>
        </li>
        <li>
          <t><tt>81fd597b861500</tt> (32473.123.789.0, too many components)</t>
        </li>
        <li>
          <t><tt>81fd5a7b8615</tt> (32474.123.789, first component out of range)</t>
        </li>
        <li>
          <t><tt>81fd5983748615</tt> (32473.500.789, second component out of range)</t>
        </li>
        <li>
          <t><tt>81fd597b853c</tt> (32473.123.700, third component out of range)</t>
        </li>
        <li>
          <t><tt>8081fd597b8615</tt> (invalid ID, not minimally encoded)</t>
        </li>
        <li>
          <t><tt>81fd597b8695</tt> (invalid ID, component was truncated)</t>
        </li>
      </ul>
      <t>The following IDs are contained in the pattern <tt>81fd5981fd598280808080808080800182808080808080808003</tt> (32473.{2<sup>64</sup>+1 - 2<sup>64</sup>+3}):</t>
      <ul spacing="normal">
        <li>
          <t><tt>81fd5982808080808080808001</tt> (32473.(2<sup>64</sup>+1))</t>
        </li>
        <li>
          <t><tt>81fd5982808080808080808002</tt> (32473.(2<sup>64</sup>+2))</t>
        </li>
        <li>
          <t><tt>81fd5982808080808080808003</tt> (32473.(2<sup>64</sup>+3))</t>
        </li>
      </ul>
      <t>The following IDs are not contained in the pattern <tt>81fd5981fd598280808080808080800182808080808080808003</tt> (32473.{2<sup>64</sup>+1 - 2<sup>64</sup>+3}):</t>
      <ul spacing="normal">
        <li>
          <t><tt>81fd5902</tt> (32473.2)</t>
        </li>
        <li>
          <t><tt>81fd5982808080808080808000</tt> (32473.2<sup>64</sup>)</t>
        </li>
        <li>
          <t><tt>81fd5982808080808080808004</tt> (32473.(2<sup>64</sup>+4))</t>
        </li>
      </ul>
      <section anchor="invalid-ids-or-patterns">
        <name>Invalid IDs or Patterns</name>
        <t>This section contains test vectors where either the ID or pattern is not a valid byte representation. The procedure in <xref target="trust-anchor-id-patterns"/> is defined for arbitrary byte strings and is expected to fail if either input is invalid. Implementations MAY skip these test vectors if they validate the ID and pattern before calling this procedure.</t>
        <t>The ID <tt>81fd59</tt> (32473) is not contained in the pattern <tt>81fd59</tt>. The pattern is invalid with an odd number of components.</t>
        <t>The ID <tt>81fd59</tt> (32473) is not contained in the pattern <tt>81fd</tt>. The pattern is invalid with a truncated <tt>min</tt> value.</t>
        <t>The ID <tt>81fd59</tt> (32473) is not contained in the pattern <tt>81fd5981ffff</tt>. The pattern is invalid with a truncated <tt>max</tt> value.</t>
        <t>The ID <tt>00</tt> (0) is not contained in the pattern <tt>8042</tt>. The pattern is invalid because <tt>min</tt> cannot be infinity.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors thank Nick Harper, Ilari Liusvaara, and Emily Stark for many valuable discussions and insights which led to this document. Thanks also to Aaron Gable for providing feedback on ACME extensions.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
/c3N5H0v+Xh9+HnSad2/G3fHvfn095vbz+cXl8Nebz6Xv496vfuzfq3bHR8u
54dfWwdHB9PBszgdrMb+9cWLs8XVm97nL79vpt7kIL47u325/2Lita86w6vo
2dcP58Hh9cX+9bPXtf5BfPjq/udhcPr74ftOeDlu3x9ulis/+jq8H512f+nN
z96+uhoNup+73VE3wZV6p/eXCI9X89Puuxq/MBicfu2ezefpwn/5Ip2+/LJ4
vTy7m4y7v2ZLvgQgn73qnvYG3aB35V3Eb1eX6S+15OdfTk5f3Izbp5Ojy+Xw
44vZ5xcvfr08Pu615i/8r5tZdzi/vh9+CdP7+OLFB3c++/Xo7mJ6tTr98rIT
vX5be307Cy8O79rXF5/Pk9GHcsR4HDZcjfu9Z79m2HDr9vzLz0cfB3G3gA2D
z4PLUfdAnd2r2pvlyZ3X751ejrv+i/vW5uxztw0nvhmNRwejr7+48OzraIzP
LvWzUS/68hLAiFCs9bqj0WkLuPXLt5vJu7e37rsXrY/XOGDv46g3etnb/P7y
enRwAqt72e/L3+8Hr7qtYbf3y+BVrXX67FmweXHXag/3DpLB72/c6I2/OGwB
riTvrj/Er/Zep+dHU+/lsHN8tvk62rxYf4gHR2/6V+tk3v01qr3vLd99fjV4
+csyOr2IuptO+vPn4dfuzah7TCc/uB/09u4vX4y6o153dnx/Ov9w+vaqddG9
fLXX616e1nBpo26klwdb6ndb8+5o8KY/7L1LL4LT+/fvB3eT+abzc7jeuz8Y
XfXOksv9m8nbd5tfxrXh+Ozn9tXRu24w6Ha6M9jz/quvx9GHD4f3FwtvGHrx
+89h2v/69XrgrXtHq8Hdh8uP76Jth67FBuw07nCn8dgMaCR/CJBtFq2CgpZO
Pzbwx4aERLFn5y8s6BqN3MaZ6crifSjp2daSLAaMfBJEpHE0zLaR1hN6qMxZ
IxFrih0+ax5kuYdcY9mMvVChJ9F9uIhcL++FrVOFAUqjoJ+sjCAlNv4JgdUJ
2CX9ajy+cLqU+eKgFxAj7rK1tztWWna7zc0zRVM21iV6BOxcNcaW0XSeccrR
mJQSoZQzNzUKW6vNVBukS6JOM68SqWGVpmxYgBr/z2m9tq3U0qspUKxgWzVQ
SzUBVoZUs7yBqYVllWyUiqsUWmobXIp9pohDJ/1jiFgvLCKHWo81QURcrkhy
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
73tUDyeSNthGJd3a/w+7hMBHbikBAA==

-->

</rfc>
