<?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.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-beck-tls-trust-anchor-ids-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title>TLS Trust Anchor Identifiers</title>
    <seriesInfo name="Internet-Draft" value="draft-beck-tls-trust-anchor-ids-02"/>
    <author initials="B." surname="Beck" fullname="Bob Beck">
      <organization>Google LLC</organization>
      <address>
        <email>bbe@google.com</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>Google LLC</organization>
      <address>
        <email>asymmetric@google.com</email>
      </address>
    </author>
    <date year="2024" month="October" day="10"/>
    <area>Security</area>
    <workgroup>Transport Layer Security</workgroup>
    <abstract>
      <?line 104?>

<t>This document defines the TLS Trust Anchors extension, a mechanism for relying parties to convey trusted certification authorities. It describes individual certification authorities more succinctly than the TLS Certificate Authorities extension.</t>
      <t>Additionally, to support TLS clients with many trusted certification authorities, it supports a mode where servers describe their available certification paths and the client selects from them. Servers may describe this during connection setup, or in DNS for lower latency.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://davidben.github.io/tls-trust-expressions/draft-beck-tls-trust-anchor-ids.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-beck-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/davidben/tls-trust-expressions"/>.</t>
    </note>
  </front>
  <middle>
    <?line 110?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>TLS <xref target="RFC8446"/> 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 certificate 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. Typically the authenticating party is the server and the relying party is the client.</t>
      <t>An authenticating party may need to interoperate with relying parties that trust different sets of CAs. <xref section="4.2.4" sectionFormat="of" target="RFC8446"/> 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>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>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 authentiating 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 update its policies to meet new security requirements, it 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>To address this, this document introduces Trust Anchor Identifiers. There are four parts to this mechanism:</t>
      <ol spacing="normal" type="1"><li>
          <t><xref target="trust-anchor-ids"/> defines <em>trust anchor identifiers</em>, which are short, unique identifiers for X.509 trust anchors.</t>
        </li>
        <li>
          <t><xref target="tls-extension"/> defines a TLS extension that communicates the relying party's requested trust anchors, and the authenticating party's available ones. When the relying party is a TLS client, it can mitigate large lists by sending a, possibly empty, subset of its trust anchors to the TLS server. The server provides its list of available trust anchors in response so that the client can retry on mismatch.</t>
        </li>
        <li>
          <t><xref target="dns-service-parameter"/> allows TLS servers to advertise their available trust anchors in HTTPS or SVCB <xref target="RFC9460"/> DNS records. TLS clients can then request an accurate initial subset and avoid a retry penalty.</t>
        </li>
        <li>
          <t><xref target="acme-extension"/> defines an ACME <xref target="RFC8555"/> extension for provisioning multiple certification paths, each with an associated trust anchor identifier.</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="RFC8446"/>, 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 public key or certificate that relying parties use to determine whether a certification path is trusted.</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>
          <dt>CertificatePropertyList:</dt>
          <dd>
            <t>A structure associated with a certification path, containing additional information from the CA, for use by the authenticating party when presenting the certification path.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="trust-anchor-ids">
      <name>Trust Anchor Identifiers</name>
      <t>This section defines trust anchor identifiers, which are short, unique identifiers for a trust anchor. To simplify allocation, these identifiers are defined with object identifiers (OIDs) <xref target="X680"/> and IANA-registered Private Enterprise Numbers (PENs) <xref target="RFC9371"/>:</t>
      <t>A trust anchor identifier is defined with a OID under the OID arc of some PEN. 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 identifier 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 identifiers may be represented in one of three ways:</t>
      <ul spacing="normal">
        <li>
          <t>For use in ASN.1-based protocols, a trust anchor identifier'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 identifier'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 identifier'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 identifier'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 identifier's ASCII representation is the relative object identifier in dotted decimal notation. The example identifier's ASCII representation is <tt>32473.1</tt>.</t>
        </li>
      </ul>
      <t>Trust anchor identifiers SHOULD be allocated by the CA operator and 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 identifier. In particular, the protocol requires authenticating and relying parties to agree, and the authenticating party's configuration typically comes from the CA.</t>
      <t>The length of a trust anchor identifier's binary representation MUST NOT exceed 255 bytes. It SHOULD be significantly shorter, for bandwidth efficiency.</t>
      <section anchor="certificate-properties">
        <name>Certificate Properties</name>
        <t>This document introduces an extensible CertificatePropertyList structure for CAs to communicate additional information to authenticating parties, such as associated trust anchor identifiers. A CertificatePropertyList is defined using the TLS presentation language (<xref section="3" sectionFormat="of" target="RFC8446"/>) below:</t>
        <artwork><![CDATA[
enum { trust_anchor_identifier(0), (2^16-1) } CertificatePropertyType;

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

CertificateProperty CertificatePropertyList<0..2^16-1>;
]]></artwork>
        <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 a single property, <tt>trust_anchor_identifier</tt>. The <tt>data</tt> field of the property contains the binary representation of the trust anchor identifier of the certification path's trust anchor, as described in <xref target="trust-anchor-ids"/>. Future documents may define other properties for use with other mechanisms.</t>
        <t>Authenticating parties MUST ignore unrecognized properties with CertificatePropertyType values.</t>
      </section>
      <section anchor="relying-party-configuration">
        <name>Relying Party Configuration</name>
        <t>Relying parties are configured with one or more supported trust anchors. Each trust anchor which participates in this protocol must have an associated trust anchor identifier.</t>
        <t>When trust anchors are self-signed X.509 certificates, the X.509 trust anchor identifier extension MAY be used to carry this identifier. The trust anchor identifier extension has an <tt>extnID</tt> of <tt>id-trustAnchorIdentifier</tt> and an <tt>extnValue</tt> containing a DER-encoded TrustAnchorIdentifier structure, defined below. The TrustAnchorIdentifier is the trust anchor identifier's ASN.1 representation, described in <xref target="trust-anchor-ids"/>. This extension MUST be non-critical.</t>
        <artwork><![CDATA[
id-trustAnchorIdentifier OBJECT IDENTIFIER ::= { TBD }

TrustAnchorIdentifier ::= RELATIVE-OID
]]></artwork>
        <t>Relying parties MAY instead or additionally configure trust anchor identifiers via some application-specific out-of-band information.</t>
        <t>Relying parties MAY support trust anchors without associated trust anchor identifiers, 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>
      </section>
      <section anchor="authenticating-party-configuration">
        <name>Authenticating Party Configuration</name>
        <t>Authenticating parties are configured with one or more candidate certification paths to present in TLS, in some preference order. This preference order is used when multiple candidate paths are usable for a connection. For example, the authenticating party may prefer candidates that minimize message size or have more performant private keys.</t>
        <t>Each candidate path which participates in this protocol must be provisioned with the trust anchor identifier for its corresponding trust anchor in the CertificatePropertlyList.</t>
        <t>Authenticating parties MAY have candidate certification paths without associated trust anchor identifiers, but such paths will not participate in this protocol. Those paths MAY participate in other trust anchor negotiation protocols, such as the <tt>certificate_authorities</tt> extension.</t>
      </section>
    </section>
    <section anchor="tls-extension">
      <name>TLS Extension</name>
      <t>This section defines the <tt>trust_anchors</tt> extension, which is sent in the ClientHello, EncryptedExtensions, CertificateRequest, and Certificate messages in TLS 1.3 or later.</t>
      <section anchor="overview">
        <name>Overview</name>
        <t>The <tt>trust_anchors</tt> extension is defined using the structures below:</t>
        <artwork><![CDATA[
enum { trust_anchors(TBD), (2^16-1) } ExtensionType;

opaque TrustAnchorIdentifier<1..2^8-1>;

TrustAnchorIdentifier TrustAnchorIdentifierList<0..2^16-1>;
]]></artwork>
        <t>When the extension is sent in the ClientHello or CertificateRequest messages, the <tt>extension_data</tt> is a TrustAnchorIdentifierList and indicates that the sender supports the specified trust anchors. The list is unordered, and MAY be empty. Each TrustAnchorIdentifier uses the binary representation, as described in <xref target="trust-anchor-ids"/>.</t>
        <t>When the extension is sent in EncryptedExtensions, the <tt>extension_data</tt> is a TrustAnchorIdentifierList containing the list of trust anchors that server has available, in the server's preference order, and MUST NOT be empty.</t>
        <t>When the extension is sent in Certificate, the <tt>extension_data</tt> MUST be empty and indicates that the sender sent the certificate because the certificate matched a trust anchor identifier sent by the peer. When used in this form, the extension may only be sent in the first CertificateEntry. It MUST NOT be sent in subsequent ones.</t>
      </section>
      <section anchor="certificate-selection">
        <name>Certificate Selection</name>
        <t>A <tt>trust_anchors</tt> extension in the ClientHello or CertificateRequest is processed similarly to the <tt>certificate_authorities</tt> extension. The relying party indicates some set of supported trust anchors in the ClientHello or CertificateRequest <tt>trust_anchors</tt> extension. The authenticating party then selects a certificate from its candidate certification paths (see <xref target="authenticating-party-configuration"/>), as described in <xref section="4.4.2.2" sectionFormat="of" target="RFC8446"/> and <xref section="4.4.2.3" sectionFormat="of" target="RFC8446"/>. This process is extended as follows:</t>
        <t>If the ClientHello or CertificateRequest contains a <tt>trust_anchors</tt> extension, the authenticating party SHOULD send a certification path whose trust anchor identifier appears in the relying party's <tt>trust_anchors</tt> extension.</t>
        <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>
        <t>If no certification paths satisfy either extension, the authenticating party MAY return a <tt>handshake_failure</tt> alert, or choose among fallback certification paths without considering <tt>trust_anchors</tt> or <tt>certification_authorities</tt>. See <xref target="retry-mechanism"/> for additional guidance on selecting a fallback when the ClientHello contains <tt>trust_anchors</tt>.</t>
        <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.</t>
        <t>If the authenticating party sends a certification path that matches the relying party's <tt>trust_anchors</tt> extension, as described in <xref target="certificate-selection"/>, the authenticating party MUST send an empty <tt>trust_anchors</tt> extension in the first CertificateEntry of the Certificate message. In this case, the <tt>certificate_list</tt> flexibility described in <xref section="4.4.2" sectionFormat="of" target="RFC8446"/> no longer applies. The <tt>certificate_list</tt> MUST contain a complete certification path, issued by the matching trust anchor, correctly ordered and with no extraneous certificates. That is, each certificate MUST certify the one immediately preceding it, and the trust anchor MUST certify the final certificate. The authenticating party MUST NOT send the <tt>trust_anchors</tt> extension in the Certificate message in other situations.</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 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="retry-mechanism">
        <name>Retry Mechanism</name>
        <t>When the relying party is a client, it may choose not to send its full trust anchor identifier list due to fingerprinting risks (see <xref target="privacy-considerations"/>), or because the list is too large. The client MAY send a subset of supported trust anchors, or an empty list. This subset may be determined by, possibly outdated, prior knowledge about the server, such as <xref target="dns-service-parameter"/> or past connections.</t>
        <t>To accommodate this, 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 identifier, and</t>
          </li>
          <li>
            <t>Satisfy the conditions in <xref section="4.4.2.2" sectionFormat="of" target="RFC8446"/>, with the exception of <tt>certification_authorities</tt>, and any future extensions that play a similar role</t>
          </li>
        </ul>
        <t>If this collection is non-empty, the server sends a <tt>trust_anchors</tt> extension in EncryptedExtensions, containing the corresponding trust anchor identifiers in preference order.</t>
        <t>When a client sends a subset or empty list in <tt>trust_anchors</tt>, it SHOULD implement the following retry mechanism:</t>
        <t>If the client receives either a connection error or an untrusted certificate, the client looks in server's EncryptedExtensions for a trust anchor identifier 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, sending only the selected trust anchor identifier in the ClientHello <tt>trust_anchors</tt> extension. If the EncryptedExtensions had no <tt>trust_anchor</tt> extension, or no match was found, the client returns the error to the application.</t>
        <t>Clients SHOULD retry at most once per connection attempt.</t>
        <t>[[TODO: Retrying in a new connection is expensive and cannot be done from within the TLS stack in most implementations. Consider handshake modifications to instead retry within the same connection. https://github.com/davidben/tls-trust-expressions/issues/53 ]]</t>
        <t>This mechanism allows the connection to recover from a certificate selection failure, e.g. due to the client not revealing its full preference list, at additional latency cost. <xref target="dns-service-parameter"/> describes an optimization which can avoid this 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="dns-service-parameter">
      <name>DNS Service Parameter</name>
      <t>This section defines the <tt>tls-trust-anchors</tt> SvcParamKey <xref target="RFC9460"/>. TLS servers can use this to advertise their available trust anchors in DNS, and aid the client in formulating its <tt>trust_anchors</tt> extension (see <xref target="retry-mechanism"/>). This allows TLS deployments to support clients with many trust anchors without incurring the overhead of a reconnect.</t>
      <section anchor="syntax">
        <name>Syntax</name>
        <t>The <tt>tls-trust-anchors</tt> parameter contains an ordered list of one or more trust anchor identifiers, in server preference order.</t>
        <t>The presentation <tt>value</tt> of the SvcParamValue is a non-empty comma-separated list (<xref section="A.1" sectionFormat="of" target="RFC9460"/>). Each element of the list is a trust anchor identifier in the ASCII representation defined in <xref target="trust-anchor-ids"/>. Any other <tt>value</tt> is a syntax error. To enable simpler parsing, this SvcParam MUST NOT contain escape sequences.</t>
        <t>The wire format of the SvcParamValue is determined by prefixing each trust anchor identifier with its length as a single octet, then concatenating each of these length-value pairs to form the SvcParamValue. These pairs MUST exactly fill the SvcParamValue; otherwise, the SvcParamValue is malformed.</t>
        <t>For example, if a TLS server has three available certification paths issued by <tt>32473.1</tt>, <tt>32473.2.1</tt>, and <tt>32473.2.2</tt>, respectively, the DNS record in presentation syntax may be:</t>
        <sourcecode type="dns"><![CDATA[
example.net.  7200  IN SVCB 3 server.example.net. (
    tls-trust-anchors=32473.1,32473.2.1,32473.2.2 )
]]></sourcecode>
        <t>The wire format of the SvcParamValue would be the 17 octets below. In the example, the octets comprising each trust anchor identifier are placed on separate lines for clarity</t>
        <artwork><![CDATA[
0x04, 0x81, 0xfd, 0x59, 0x01,
0x05, 0x81, 0xfd, 0x59, 0x02, 0x01,
0x05, 0x81, 0xfd, 0x59, 0x02, 0x02,
]]></artwork>
      </section>
      <section anchor="configuring-services">
        <name>Configuring Services</name>
        <t>Services SHOULD include the trust anchor identifier for each of their available certification paths, in preference order, in the <tt>tls-trust-anchors</tt> of their HTTPS or SVCB endpoints. As TLS configuration is updated, services SHOULD update the DNS record to match. The mechanism for this is out of scope for this document, but services are RECOMMENDED to automate this process.</t>
        <t>Services MAY have certification paths without trust anchor identifiers, but those paths will not participate in this mechanism.</t>
      </section>
      <section anchor="client-behavior">
        <name>Client Behavior</name>
        <t>When connecting to a service endpoint whose HTTPS or SVCB record contains the <tt>tls-trust-anchors</tt> parameter, the client first computes the intersection between its configured trust anchors and the server's provided list. If this intersection is non-empty, the client MAY use it to determine the <tt>trust_anchors</tt> extension in the ClientHello (see <xref target="retry-mechanism"/>).</t>
        <t>If doing so, the client MAY send a subset of this intersection to meet size constraints, but SHOULD offer multiple options. This reduces the chance of a reconnection if, for example, the first option in the intersection uses a signature algorithm that the client doesn't support, or if the TLS server and DNS configuration are out of sync.</t>
        <t>Although this service parameter is intended to reduce trust anchor mismatches, mismatches may still occur in some scenarios. Clients and servers MUST continue to implement the provisions described in <xref target="retry-mechanism"/>, even when using this service parameter.</t>
      </section>
    </section>
    <section anchor="acme-extension">
      <name>ACME Extension</name>
      <t>This section extends ACME <xref target="RFC8555"/> to be able to issue certificate paths, each with an associated CertificatePropertyList by defining a new media type in <xref target="media-type"/>.</t>
      <t>When an ACME server processes an order object, it MAY issue multiple certification paths, each with an associated Trust Anchor Identifier. The ACME server encodes each certification path using the application/pem-certificate-chain-with-properties format, defined in <xref target="media-type"/>).  Note this format is required to form a complete certification path. The CA MUST return a result that may be verified by relying parties without path building <xref target="RFC4158"/>.</t>
      <t>The ACME server provides additional results to the client with the link relation header fields described in <xref section="7.4.2" sectionFormat="of" target="RFC8555"/>. When fetching certificates, the ACME client includes application/pem-certificate-chain-with-properties in its Accept header to indicate it supports the new format. Unlike the original mechanism described in <xref target="RFC8555"/>, these certification paths do not require heuristics to be used. Instead, the server uses the associated Trust Anchor Identifiers to select a path when requested.</t>
      <t>When the ACME client wishes to renew any of the certification paths issued in this order, it repeats this process to renew each path concurrently. Thus this extension is suitable when the CA is willing to issue and renew all paths together. It may not be appropriate if the paths have significantly different processing times or lifetimes. Future enhancements to ACME may be defined to address these cases, e.g. by allowing the ACME client to make independent orders.</t>
    </section>
    <section anchor="media-type">
      <name>Media Type</name>
      <t>A certification path with its associated CertificationPropertyList 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" and "eol" are as defined in
<xref section="3" sectionFormat="of" target="RFC7468"/>:</t>
      <artwork><![CDATA[
certchainwithproperties = stricttextualmsg eol stricttextualmsg
                          *(eol stricttextualmsg)
]]></artwork>
      <t>The first element MUST be the encoded CertificatePropertyList.
The second element MUST be an end-entity certificate.  Each following
certificate MUST directly certify 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.</t>
      <artwork><![CDATA[
-----BEGIN CERTIFICATE PROPERTIES-----
TODO fill in an example
-----END CERTIFICATE PROPERTIES-----
-----BEGIN CERTIFICATE-----
TODO fill in an example
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
TODO fill in an example
-----END CERTIFICATE-----
]]></artwork>
      <t>The IANA registration for this media type is described in <xref target="media-type-updates"/>.</t>
    </section>
    <section anchor="use-cases">
      <name>Use Cases</name>
      <section anchor="key-rotation">
        <name>Key Rotation</name>
        <t>In most X.509 deployments, a compromise of <em>any</em> root CA's private key compromises the entire PKI. Yet key rotation in PKIs is rare. In 2023, the oldest root in <xref target="CHROME-ROOTS"/> and <xref target="MOZILLA-ROOTS"/> was 25 years old, dating to 1998. Key rotation is challenging in a single-certificate deployment model. As long as any older relying party requires the old root, authenticating parties cannot switch to the new root, which in turn means relying parties cannot distrust the old root, leaving them vulnerable.</t>
        <t>A multi-certificate deployment model avoids these transition problems. Key rotation may proceed as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>The CA operator generates a new root CA with a separate key, but continues operating the old root CA.</t>
          </li>
          <li>
            <t>Root programs begin trusting the new root CA alongside the old one, as a transition state. Both root CAs are configured to participate in trust anchor negotiation.</t>
          </li>
          <li>
            <t>When authenticating parties request certificates, the CA operator issues certificates from both roots and provisions the authenticating party with both certificates.</t>
          </li>
          <li>
            <t>Trust anchor negotiation selects the old root for relying parties that only trust the old root, and the new root for relying parties that only trust the new root. In transition, relying parties that trust both may be served either, but prioritizing the new root helps monitor the transition.</t>
          </li>
          <li>
            <t>Once authenticating parties have been provisioned with new certificates, root programs can safely distrust the old root in new relying parties. The CA operator may continue to operate the old root CA for as long as it wishes to serve authenticating parties that, in turn, wish to serve older relying parties.</t>
          </li>
        </ol>
        <t>This process requires no configuration changes to the authenticating party, given an automated, multi-certificate-aware certificate issuance process. The authenticating party does not need to know why it received two certificates, only how to select between them for each relying party.</t>
      </section>
      <section anchor="adding-cas">
        <name>Adding CAs</name>
        <t>In the single-certificate model, authenticating parties cannot use TLS certificates issued from a new root CA until all supported relying parties have been updated to trust the new root CA. This can take years or more. Some relying parties, such as IoT devices, may never receive trust store updates at all.</t>
        <t>As a result, it is very difficult for authenticating parties that serve a wide variety of relying parties to use a newly-trusted root CA. When trust stores diverge too far, authenticating parties often must partition their services into multiple TLS endpoints (i.e. different DNS names) and direct different relying parties to different endpoints. Authenticating parties sometimes resort to TLS fingerprinting, to detect particular relying parties. But, as this repurposes other TLS fields for unintended purposes, this is unreliable and usually requires writing custom service-specific logic.</t>
        <t>In a multi-certificate deployment model, authenticating parties can begin serving certificates from new root CAs without interrupting relying parties that depend on existing ones.</t>
        <t>In some contexts, it may be possible to use other fields to select the new CA. For example, post-quantum-capable clients may be detected with the <tt>signature_algorithms</tt> and <tt>signature_algorithms_cert</tt> extensions. However, this assumes all post-quantum CAs are added at the same time. A multi-certificate model avoids this problem and allows for a more gradual deployment of post-quantum CAs.</t>
      </section>
      <section anchor="removing-cas">
        <name>Removing CAs</name>
        <t>Authenticating parties in a single-certificate model are limited to CAs in the intersection of their supported relying parties. As newer relying parties remove untrusted CAs over time,the intersection with older relying parties shrinks. Moreover, the authenticating party may not even know which CAs are in the intersection. 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>The multi-certificate model removes this constraint. If an authenticating party's CA is distrusted, it can continue to use that CA, in addition to a newer one. This removes the risk that some older relying party required that CA and was incompatible with the new one. The mechanisms in this document will select an appropriate certificate for each relying party.</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 postquantum root CA and use the mechanism in <xref target="acme-extension"/> to issue from the classical and postquantum 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>
        <t>[[TODO: There's one missing piece, which is that some servers may attempt to parse the signature algorithms out of the certificate chain. See https://github.com/davidben/tls-trust-expressions/issues/9 ]]</t>
      </section>
      <section anchor="intermediate-elision">
        <name>Intermediate Elision</name>
        <t>Today, root CAs typically issue shorter-lived intermediate certificates which, in turn, issue end-entity certificates. The long-lived root key is less exposed to attack, while the short-lived intermediate key can be more easily replaced without changes to relying parties.</t>
        <t>This operational improvement comes at a bandwidth cost: the TLS handshake includes an extra certificate, which includes a public key, signature, and X.509 metadata. An average X.509 name in the Chrome Root Store <xref target="CHROME-ROOTS"/> or Mozilla CA Certificate Program <xref target="MOZILLA-ROOTS"/> is around 100 bytes alone. Post-quantum signature algorithms will dramatically shift this tradeoff. Dilithium3 <xref target="Dilithium"/>, for example, has a total public key and signature size of 5,245 bytes.</t>
        <t><xref target="I-D.ietf-tls-cert-abridge"/> proposes to predistribute known intermediate certificates to relying parties, as a compression scheme. A multi-certificate deployment model provides another way to achieve this effect. To relying parties, a predistributed intermediate certificate is functionally equivalent to a root certificate. PKIs use intermediate certificates because changing root certificates requires updating relying parties, but predistributed intermediates already presume updated relying parties.</t>
        <t>A CA operator could provide authenticating parties with two certification paths: a longer path ending at a long-lived trust anchor and shorter path the other ending at a short-lived, revocable root. Relying parties would be configured to trust both the long-lived root and the most recent short-lived root. A server that prioritizes the shorter path would then send the shorter path to up-to-date relying parties and the longer path to older relying parties.</t>
        <t>This achieves the same effect with a more general-purpose multi-certificate mechanism. It is also more flexible, as the two paths need not be related. For example, root CA public keys are not distributed in each TLS connection, so a post-quantum signature algorithm that optimizes for signature size may be preferable. In this model, both the long-lived and short-lived roots may use such an algorithm. In a compression-based model, the same intermediate must optimize both its compressed and uncompressed size, so such an algorithm may not be suitable.</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 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>A single-certificate deployment model forces authenticating parties to find a single certificate that meets all requirements. User security then suffers in all contexts, as the PKI may not quite meet anyone's needs. In a multi-certificate deployment model, different contexts may use different trust anchors. An authenticating party that supports multiple contexts would provision certificates for each, with certificate negotiation logic directing the right one to each relying party.</t>
      </section>
      <section anchor="backup-certificates">
        <name>Backup Certificates</name>
        <t>An authenticating party may obtain certificate paths from multiple CAs for redundancy in the face of future CA compromises. If one CA is compromised and removed from newer relying parties, the TLS server software will transparently serve the other one.</t>
        <t>To support this, TLS serving software SHOULD permit users to configure multiple ACME endpoints and select from the union of the certificate paths returned by each ACME server.</t>
      </section>
      <section anchor="public-key-pinning">
        <name>Public Key Pinning</name>
        <t>To reduce the risk of attacks from misissued certificates, relying parties sometimes employ public key pinning <xref target="RFC7469"/>. This enforces that one of some set of public keys appear in the final certificate path. This 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>This protocol reduces this conflict if the pinning relying party uses its effective, reduced trust anchor list. The authenticating party can then, as needed, use a certificate from the pinned CA with the pinning relying party, and another CA with newer relying parties.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <section anchor="relying-parties">
        <name>Relying Parties</name>
        <t>The negotiation mechanism described in this document is analogous to the <tt>certificate_authorities</tt> extension (<xref section="4.2.4" sectionFormat="of" target="RFC8446"/>), but more size-efficient. Like that extension, it presumes the requested trust anchor list is not sensitive.</t>
        <t>The privacy implications of this are determined by how a relying party uses this extension. Trust anchors supported by a relying party may be divided into three categories:</t>
        <ol spacing="normal" type="1"><li>
            <t>Trust anchors whose identifiers the relying party sends <em>unconditionally</em>, i.e. not in response to the server's HTTPS/SVCB record, trust anchor list in EncryptedExtensions, etc.</t>
          </li>
          <li>
            <t>Trust anchors whose identifiers 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 identifier is listed in the server's HTTPS/SVCB record or trust anchor list in EncryptedExtensions.</t>
          </li>
          <li>
            <t>Trust anchors whose identifiers the relying party never sends, but still trusts. These are trust anchors which do not participate in this mechanism.</t>
          </li>
        </ol>
        <t>Each of these categories carries a different fingerprinting exposure:</t>
        <t>Trust anchor identifiers sent unconditionally can be observed passively. Thus, relying parties SHOULD NOT unconditionally advertise trust anchor lists which are unique to an individual user. Rather, such lists SHOULD be either 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>Trust anchor identifiers 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.</t>
        <t>This is similar to the baseline exposure for trust anchors that do not participate in negotiation. An authenticating party in possession of a certificate can send it and determine if the relying party accepts or rejects it. Unlike this baseline exposure, trust anchors that participate in this protocol can be probed by only knowing the trust anchor identifier.</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. PKIs that reliably use the DNS service parameter (<xref target="dns-service-parameter"/>) can rely on conditional advertisement for stronger privacy properties without a round-trip penalty.</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. As above, implementing the DNS service parameter can avoid a round-trip penalty without such state.</t>
      </section>
      <section anchor="authenticating-parties">
        <name>Authenticating Parties</name>
        <t>If the authenticating party is a server, the mechanisms in <xref target="dns-service-parameter"/> and <xref target="retry-mechanism"/> enumerate the trust anchors for the server's available certification paths. This mechanism assumes they 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, the addition to EncryptedExtensions in <xref target="retry-mechanism"/> is expected to be filtered by <tt>server_name</tt>. Likewise, the DNS parameter in <xref target="dns-service-parameter"/> only contains information for the corresponding service. In both cases, 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="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. Suppose an authenticating party currently uses some CA, but a relying party deems trusting that CA to pose an unacceptable security risk to its users. In a single-certificate deployment, those authenticating parties may be unwilling to adopt a CA trusted by the relying party, as switching CAs risks compatibility problems elsewhere. The relying party then faces compatibility pressure and adds this CA, sacrificing user security. However, in a multi-certificate deployment, the authenticating party can use its existing CA <em>in addition to</em> another CA trusted by relying party B. This allows the ecosystem to improve interoperability, while still meeting relying party B's user-security goals.</t>
      </section>
      <section anchor="incorrect-selection-metadata">
        <name>Incorrect Selection Metadata</name>
        <t>If the authenticating party has incorrect information about trust anchor identifiers, it may send an untrusted certification path. This will not result in that path being trusted, but does present the possibility of a degradation of service. However, this information is provisioned by the CA, which is already expected to provide accurate information.</t>
      </section>
      <section anchor="serving-multiple-certificates">
        <name>Serving Multiple Certificates</name>
        <t>Negotiation reduces compatibility pressures against authenticating parties choosing to serve certificates from a less common CA, as the authenticating party can serve it in addition to other CAs that, together, satisfy all supported relying parties. The CA may even have been distrusted by some relying parties, e.g. if it is needed for older, unupdated relying parties that are still important for the authenticating party to support. As discussed in <xref target="use-cases"/> and <xref target="agility"/>, this deployment model avoids compatibility risks during PKI transitions which mitigate security risks to users.</t>
        <t>Serving such certificates does 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, whether or not the issuing CA is otherwise trustworthy. 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>While the choice of CA is a security-critical decision in a PKI, it is the relying party's choice of trusted CAs that determines interceptibility, not the authenticating party's choice of certificates to present. If the relying party trusts an attacker-controlled CA, the attacker can intercept the connection independent of whether the authenticating party uses that CA or another CA. In both cases, the attacker would need to present a different certificate, with a different public key. Conversely, if the relying party does not trust the attacker's CA, the authenticating party's correct but untrusted attacker-issued certificate will not enable the attacker to substitute in a different public key. The ability to intercept a connection via the PKI is determined solely by relying party trust decisions.</t>
        <t>Relying parties thus SHOULD NOT interpret the authenticating party's choice of CA list as an endorsement of the CA. The authenticating party's role is to present a certificate which will demonstrate its name and TLS key to the relying party. Authenticating parties do not vet CAs for trustworthiness, only the correctness of their specific, configured certificates and the CA's ability to meet the authenticating party's requirements, such as availability, compatibility, and performance. It is the responsibility of the relying party, and its corresponding root program, to determine the set of trusted CAs. Trusting a CA means trusting <em>all</em> certificates issued by that CA, so it is not enough to observe authenticating parties serving correct certificates. An untrustworthy CA may sign one correct certificate, but also sign incorrect certificates, possibly in the future, that can attack the relying party. Root program management is a complex, security-critical process, the full considerations of which are outside the scope of this document.</t>
      </section>
      <section anchor="targeting-tls-interception">
        <name>Targeting TLS Interception</name>
        <t>Trust Anchor Identifiers, like <tt>certificate_authorities</tt>, enables a TLS server to differentiate between clients that do and do not trust some CA. If this CA mis-issued a certificate, this could be used by a network attacker to only enable TLS interception with clients that trust the CA. The network attacker may wish to do this reduce the odds of detection. Clients which do not trust the CA will not accept the mis-issued certificate, which may be user-visible.</t>
        <t>However, the attacker could also use any existing mechanism for differentiating clients. In TLS parameter negotiation, the client offers all its available TLS features, including cipher suites and other extensions, in the TLS ClientHello. This means any variation in any client TLS policies, related or unrelated to trust anchors, may be used as an implementation fingerprint to differentiate clients. While fingerprinting's heuristic nature makes it not viable for a broad, diverse set of TLS servers, it is viable for a network attacker's single interception service. Trust Anchor Identifiers only impacts detection where this differentiation was not already possible.</t>
        <t>If the attacker targets any clients that enforce Certificate Transparency <xref target="RFC6962"/>, the mis-issued certificates will need to be publicly logged. In this case, detection is more robust, and client differentiation, with or without Trust Anchor Identifiers, has no significant impact.</t>
      </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, defined by <xref target="RFC8446"/>:</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="media-type"/>]</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="certificatepropertytype-registry">
        <name>CertificatePropertyType Registry</name>
        <t>[[TODO: Establish a CertificatePropertyType registry.]]</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="X680">
          <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">
          <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="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="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="RFC9460">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </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="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="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="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>
      </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="Dilithium" target="https://pq-crystals.org/dilithium/data/dilithium-specification-round3-20210208.pdf">
          <front>
            <title>CRYSTALS-Dilithium Algorithm Specifications and Supporting Documentation</title>
            <author initials="S." surname="Bai" fullname="Shi Bai">
              <organization/>
            </author>
            <author initials="L." surname="Ducas" fullname="Léo Ducas">
              <organization/>
            </author>
            <author initials="E." surname="Kiltz" fullname="Eike Kiltz">
              <organization/>
            </author>
            <author initials="T." surname="Lepoint" fullname="Tancrède Lepoint">
              <organization/>
            </author>
            <author initials="V." surname="Lyubashevsky" fullname="Vadim Lyubashevsky">
              <organization/>
            </author>
            <author initials="P." surname="Schwabe" fullname="Peter Schwabe">
              <organization/>
            </author>
            <author initials="G." surname="Seiler" fullname="Gregor Seiler">
              <organization/>
            </author>
            <author initials="D." surname="Stehlé" fullname="Damien Stehlé">
              <organization/>
            </author>
            <date year="2021" month="February" day="08"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-tls-cert-abridge">
          <front>
            <title>Abridged Compression for WebPKI Certificates</title>
            <author fullname="Dennis Jackson" initials="D." surname="Jackson">
              <organization>Mozilla</organization>
            </author>
            <date day="16" month="September" year="2024"/>
            <abstract>
              <t>   This draft defines a new TLS Certificate Compression scheme which
   uses a shared dictionary of root and intermediate WebPKI
   certificates.  The scheme smooths the transition to post-quantum
   certificates by eliminating the root and intermediate certificates
   from the TLS certificate chain without impacting trust negotiation.
   It also delivers better compression than alternative proposals whilst
   ensuring fair treatment for both CAs and website operators.  It may
   also be useful in other applications which store certificate chains,
   e.g.  Certificate Transparency logs.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-cert-abridge-02"/>
        </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="I-D.davidben-tls-trust-expr">
          <front>
            <title>TLS Trust Expressions</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>Google LLC</organization>
            </author>
            <author fullname="Bob Beck" initials="B." surname="Beck">
              <organization>Google LLC</organization>
            </author>
            <date day="28" month="June" year="2024"/>
            <abstract>
              <t>   This document defines TLS trust expressions, a mechanism for relying
   parties to succinctly convey trusted certification authorities to
   subscribers by referencing named and versioned trust stores.  It also
   defines supporting mechanisms for subscribers to evaluate these trust
   expressions, and select one of several available certification paths
   to present.  This enables a multi-certificate deployment model, for a
   more agile and flexible PKI that can better meet security
   requirements.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-davidben-tls-trust-expr-04"/>
        </reference>
        <reference anchor="I-D.ietf-tls-wkech">
          <front>
            <title>A well-known URI for publishing service parameters</title>
            <author fullname="Stephen Farrell" initials="S." surname="Farrell">
              <organization>Trinity College Dublin</organization>
            </author>
            <author fullname="Rich Salz" initials="R." surname="Salz">
              <organization>Akamai Technologies</organization>
            </author>
            <author fullname="Benjamin M. Schwartz" initials="B. M." surname="Schwartz">
              <organization>Meta Platforms, Inc.</organization>
            </author>
            <date day="1" month="October" year="2024"/>
            <abstract>
              <t>   We define a well-known URI at which an HTTP origin can inform an
   authoritative DNS server, or other interested parties, about its
   Service Bindings.  The data can include Encrypted ClientHello (ECH)
   configurations, allowing the origin, in collaboration with DNS
   infrastructure elements, to publish and rotate its own ECH keys.

Note

   This note is to be removed before publishing as an RFC.

   The source for this draft is in https://github.com/sftcd/wkesni/
   Issues and PRs are welcome there too.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-wkech-06"/>
        </reference>
      </references>
    </references>
    <?line 595?>

<section anchor="comparison-to-tls-trust-expressions">
      <name>Comparison to TLS Trust Expressions</name>
      <t><xref target="I-D.davidben-tls-trust-expr"/> describes Trust Expressions, another trust anchor negotiation mechanism that aims to solve similar problems. The mechanisms differ in the following ways:</t>
      <ul spacing="normal">
        <li>
          <t><tt>trust_anchors</tt> is usable by more kinds of PKIs. Trust Expressions express trust anchor lists relative to named “trust stores”, maintained by root programs. Arbitrary lists may not be easily expressible. <tt>trust_anchors</tt> does not have this restriction.</t>
        </li>
        <li>
          <t>When used with large trust stores, the retry mechanism in <tt>trust_anchors</tt> requires a new connection. In most applications, this must be implemented outside the TLS stack, so more components must be changed and redeployed. In deployments that are limited by client changes, this may be a more difficult transition. [[TODO: See <xref target="retry-mechanism"/> for an alternate retry scheme that avoids this.]]</t>
        </li>
        <li>
          <t>Trust Expressions works with static server configuration. An ideal <tt>trust_anchors</tt> deployment requires automation to synchronize a server's DNS and TLS configuration. <xref target="I-D.ietf-tls-wkech"/> could be a starting point for this automation. In deployments that are limited by server changes, this may be a more difficult transition.</t>
        </li>
        <li>
          <t>Trust Expressions require that CAs continually fetch information from manifests that are published by root programs, while <tt>trust_anchors</tt> relies only on static pre-assigned trust anchor identifiers.</t>
        </li>
        <li>
          <t><tt>trust_anchors</tt>, when trust anchors are conditionally sent, has different fingerprinting properties. See <xref target="privacy-considerations"/>.</t>
        </li>
        <li>
          <t><tt>trust_anchors</tt> can only express large client trust stores (for server certificates), not large server trust stores. Large trust stores rely on the retry mechanism described in <xref target="retry-mechanism"/>, which is not available to client certificates.</t>
        </li>
      </ul>
      <t>The two mechanisms can be deployed together. An authenticating party can have metadata for both mechanisms available, and a relying party can advertise both.</t>
      <t>[[TODO: remove this or move to supporting documentation after more working group consensus]]</t>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors thank Nick Harper, and Emily Stark for many valuable discussions and insights which led to this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
