<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-sullivan-tls-signed-ech-updates-00" category="std" consensus="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Authenticated ECH Update">Authenticated ECH Config Distribution and Rotation</title>
    <seriesInfo name="Internet-Draft" value="draft-sullivan-tls-signed-ech-updates-00"/>
    <author fullname="Nick Sullivan">
      <organization>Cryptography Consulting LLC</organization>
      <address>
        <email>nicholas.sullivan+ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Dennis Jackson">
      <organization>Mozilla</organization>
      <address>
        <email>ietf@dennis-jackson.uk</email>
      </address>
    </author>
    <date year="2025" month="October" day="20"/>
    <area>Security</area>
    <workgroup>TLS</workgroup>
    <keyword>TLS 1.3</keyword>
    <keyword>Encrypted ClientHello</keyword>
    <keyword>ECH</keyword>
    <keyword>Key Rotation</keyword>
    <keyword>PKIX</keyword>
    <keyword>RPK</keyword>
    <abstract>
      <?line 43?>

<t>Encrypted ClientHello (ECH) requires clients to have the server's ECH configuration before connecting. Currently, when ECH fails, servers can send updated configurations but clients cannot authenticate them without a certificate for the public name, limiting deployment flexibility.</t>
      <t>This document specifies an authenticated ECH configuration update mechanism. Servers can deliver signed ECH configurations during the TLS handshake, allowing clients to authenticate and immediately use them for retry. The mechanism decouples ECH key distribution from transport, enabling the same signed configuration to work via DNS or TLS delivery.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-sullivan-tls-signed-ech-updates/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/grittygrease/draft-sullivan-tls-signed-ech-updates"/>.</t>
    </note>
  </front>
  <middle>
    <?line 49?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Deployment of TLS Encrypted ClientHello (ECH) requires that clients obtain the server's current ECH configuration (ECHConfig) before initiating a connection. Current mechanisms distribute ECHConfig data via DNS HTTPS resource records <xref target="RFC9460"/> or HTTPS well-known URIs <xref target="I-D.ietf-tls-wkech"/>, allowing servers to publish their ECHConfigList prior to connection establishment.</t>
      <t>While ECH includes a retry mechanism where servers can send updated ECHConfigList values during the handshake (via HelloRetryRequest or EncryptedExtensions), the base ECH specification instructs clients not to cache these configurations <xref target="I-D.ietf-tls-esni"/>. Instead, servers must authenticate the outer handshake using a certificate for the public name, and clients must obtain updated configurations through out-of-band mechanisms for future connections.</t>
      <t>This approach limits ECH deployment in two key ways. First, it restricts the usable public names to those for which operators can obtain certificates, reducing the potential anonymity set. Second, it creates delays in key rotation recovery, as clients cannot immediately use updated configurations received during the handshake.</t>
      <t>This document introduces an Authenticated ECH Config Update mechanism to securely deliver and rotate ECHConfig data in-band, during a TLS handshake. The goal is to allow servers to frequently update ECH keys (for example, to limit the lifetime of keys or respond to compromise). This mechanism does not prescribe or rely on fallback to cleartext; when ECH fails with this mechanism, the connection is terminated and retried with updated configurations rather than exposing the protected name.</t>
      <t>The mechanism supports two authentication methods through the <tt>ech_auth</tt> ECHConfig extension:</t>
      <ol spacing="normal" type="1"><li>
          <t>Raw Public Key (RPK) - SPKI hashing for configuration-specific trust</t>
        </li>
        <li>
          <t>PKIX - Certificate-based signing with a critical X.509 extension</t>
        </li>
      </ol>
      <t>Each ECHConfig carries at most one signature using the specified method. By authenticating ECH configs independently, the mechanism makes ECH key distribution orthogonal to transport. The same signed ECHConfig artifact can be conveyed via DNS, HTTPS, or the TLS handshake itself. The client will accept it only if the accompanying signature or proof is valid under one of its trust modes.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY" 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.</t>
      <t>This document assumes familiarity with TLS 1.3 <xref target="RFC8446"/> and the ECH specification <xref target="I-D.ietf-tls-esni"/>, referred to here as simply "ECH".</t>
      <t>The following acronyms are used throughout this document:</t>
      <ul spacing="normal">
        <li>
          <t>RPK: Raw Public Key - A public key used directly without a certificate wrapper</t>
        </li>
        <li>
          <t>PKIX: Public Key Infrastructure using X.509 - The standard certificate-based PKI used on the web</t>
        </li>
        <li>
          <t>SPKI: SubjectPublicKeyInfo - The ASN.1 structure containing a public key and its algorithm identifier</t>
        </li>
        <li>
          <t>HPKE: Hybrid Public Key Encryption - The encryption scheme used by ECH as defined in <xref target="RFC9180"/></t>
        </li>
        <li>
          <t>DER: Distinguished Encoding Rules - A binary encoding format for ASN.1 structures</t>
        </li>
        <li>
          <t>OCSP: Online Certificate Status Protocol - A method for checking certificate revocation status</t>
        </li>
        <li>
          <t>CRL: Certificate Revocation List - A list of revoked certificates published by a Certificate Authority</t>
        </li>
        <li>
          <t>CA: Certificate Authority - An entity that issues digital certificates</t>
        </li>
      </ul>
      <section anchor="terminology">
        <name>Terminology</name>
        <dl>
          <dt>ECHConfig:</dt>
          <dd>
            <t>An individual ECH configuration structure as defined in <xref target="I-D.ietf-tls-esni"/>, which includes fields such as <tt>public_name</tt>, <tt>public_key</tt> (HPKE key), and extensions.</t>
          </dd>
          <dt>ECHConfigList:</dt>
          <dd>
            <t>A sequence of one or more ECHConfig structures as defined in ECH (a byte string that starts with a 16-bit length and may contain multiple concatenated ECHConfig values).</t>
          </dd>
          <dt>ECHConfigTBS (To-Be-Signed):</dt>
          <dd>
            <t>The serialized ECHConfig structure with the <tt>ech_auth</tt> extension, but with the <tt>signature</tt> field within <tt>ech_auth</tt> set to zero-length. This includes all ECHConfig fields and the <tt>ech_auth</tt> extension's <tt>method</tt> and <tt>trusted_keys</tt> fields.</t>
          </dd>
          <dt>authenticated ECHConfig:</dt>
          <dd>
            <t>An ECHConfig that contains an <tt>ech_auth</tt> extension with a valid signature in the <tt>signature</tt> field, allowing clients to verify its authenticity.</t>
          </dd>
          <dt>public name:</dt>
          <dd>
            <t>The value of the <tt>public_name</tt> field in the ECHConfig, i.e., the authoritative DNS name for updates and validation associated with that configuration. This name is not required to be the ClientHelloOuter SNI, though deployments sometimes choose to align them.</t>
          </dd>
          <dt>retry_configs:</dt>
          <dd>
            <t>The ECHConfigList sent by a server in HelloRetryRequest or EncryptedExtensions when ECH is rejected, as defined in <xref target="I-D.ietf-tls-esni"/>.</t>
          </dd>
          <dt>outer SNI:</dt>
          <dd>
            <t>The Server Name Indication value sent in the outer (unencrypted) ClientHello when ECH is used. This is typically the ECHConfig's <tt>public_name</tt> or another name that preserves client privacy.</t>
          </dd>
        </dl>
        <t>The reader should recall that in TLS 1.3, the server's EncryptedExtensions message is encrypted and integrity-protected with handshake keys <xref target="I-D.ietf-tls-esni"/>. New extensions defined as part of EncryptedExtensions are not visible to network attackers and cannot be modified by an attacker without detection. Additionally, "certificate verification" refers to the standard X.509 validation process (chain building, signature and expiration checking, name matching, etc.) unless otherwise specified.</t>
      </section>
    </section>
    <section anchor="mechanism-overview">
      <name>Mechanism Overview</name>
      <t>This specification defines three methods for authenticating ECH configuration updates:</t>
      <section anchor="raw-public-key-rpk">
        <name>Raw Public Key (RPK)</name>
        <t>The ECHConfigList update is authenticated by a Raw Public Key (RPK). The ECHConfig's <tt>ech_auth</tt> extension carries a set of <tt>trusted_keys</tt>, each value being <tt>SHA-256(SPKI)</tt> of an RPK that is authorized to sign an update.</t>
        <t>A client receiving an authenticated update (e.g., in HRR/EE <tt>retry_configs</tt>) MUST:</t>
        <ol spacing="normal" type="1"><li>
            <t>Extract the authenticator key's SubjectPublicKeyInfo (SPKI) and compute <tt>sha256(spki)</tt>. Verify membership in <tt>trusted_keys</tt>.</t>
          </li>
          <li>
            <t>Verify that <tt>not_after</tt> is strictly greater than the client's current time.</t>
          </li>
          <li>
            <t>Verify the signature over the <tt>to_be_signed</tt> input using the authenticator key.</t>
          </li>
        </ol>
        <t>Clients MAY cache <tt>trusted_keys</tt> only for the lifetime of the associated ECHConfig and solely to authenticate a single retry-configs update per fresh connection attempt. Upon successful installation of a new ECHConfigList (via an authenticated update or a fresher out-of-band fetch), or upon expiration of the cached configuration, clients MUST clear any RPK state learned from the prior configuration.</t>
        <t>This specification defines no long-term pinning and no public-name authentication via RPK.</t>
      </section>
      <section anchor="pkix-certificate-based">
        <name>PKIX (Certificate-Based)</name>
        <t>The update is signed with the private key corresponding to an X.509 certificate that chains to a locally trusted root and is valid for the ECHConfig <tt>public_name</tt> (i.e., appears in the certificate's SAN).</t>
        <t>The leaf certificate MUST include a new, critical X.509 v3 extension <tt>id-pe-echConfigSigning</tt> (OID: TBD) whose presence indicates authorization to sign ECH configuration updates for the DNS names in the certificate's SAN. Clients:</t>
        <ul spacing="normal">
          <li>
            <t>MUST validate the certificate chain according to local policy;</t>
          </li>
          <li>
            <t>MUST confirm the SAN covers the ECHConfig <tt>public_name</tt>;</t>
          </li>
          <li>
            <t>MUST confirm the critical <tt>id-pe-echConfigSigning</tt> extension is present in the leaf; and</t>
          </li>
          <li>
            <t>MUST verify the ECH update signature with the leaf key.</t>
          </li>
        </ul>
        <t>When this critical extension is present, clients MUST NOT accept the certificate for TLS server authentication. The <tt>not_after</tt> field in <tt>ech_auth.signature</tt> MUST be 0 for PKIX.</t>
      </section>
    </section>
    <section anchor="benefits-of-signed-ech-configurations">
      <name>Benefits of Signed ECH Configurations</name>
      <t>By treating ECH configurations as signed objects, this mechanism decouples trust in ECH keys from the TLS handshake's certificate validation of the origin. This enables several important capabilities:</t>
      <section anchor="distinct-public-names-without-ca-certificates">
        <name>Distinct Public Names Without CA Certificates</name>
        <t>A server can use many different public hostnames (even per-client, per-connection unique ones) to maximize the anonymity set or for other operational reasons <xref target="I-D.ietf-tls-esni"/>, without having to obtain certificates for each. The RPK method allows the client to authenticate the server's ability to update ECH keys for those public names via a key hash, rather than via a CA-issued certificate. This was not possible under the original ECH design, which required a valid certificate for any public name used <xref target="I-D.ietf-tls-esni"/>.</t>
      </section>
      <section anchor="faster-and-safer-key-rotation">
        <name>Faster and Safer Key Rotation</name>
        <t>The server can proactively push a new ECHConfig to clients shortly before rotating keys, ensuring clients receive it immediately. The update objects include an expiration timestamp (<tt>not_after</tt>), allowing servers to bound the lifetime of configurations to coordinate key rollover. Clients will reject expired configurations.</t>
      </section>
      <section anchor="out-of-band-distribution-synergy">
        <name>Out-of-Band Distribution Synergy</name>
        <t>Because the same authentication methods are defined for in-band and out-of-band, an ECHConfig obtained via DNS can carry the same signature that a TLS in-band update would, allowing clients to verify it even if their DNS channel is not fully trusted. For instance, a client might obtain an ECHConfig via DNS; if that ECHConfig has RPK trusted_keys, subsequent updates via TLS will be signed by that key, protecting against any earlier undetected DNS tampering.</t>
      </section>
      <section anchor="design-simplicity">
        <name>Design Simplicity</name>
        <t>This design attempts to minimize complexity. It does not use explicit key identifiers or complicated pin rotation metadata. For the RPK method, the pinning model is kept simple (a list of allowed signing keys established from an authenticated initial configuration); pin revocation or addition is handled by simply signing a new update that changes the list (clients trust the new list if it is signed by a currently trusted key). There is no "next update time" field that requires clients to preemptively fetch updates; instead, updates are fetched when provided by the server or when the client next connects. The mechanism is agnostic to the transport by which the client obtained the initial ECHConfig – whether via DNS SVCB/HTTPS RR (as in <xref target="I-D.ietf-tls-svcb-ech"/>), via a well-known HTTPS endpoint <xref target="I-D.ietf-tls-wkech"/>, or via some provisioning protocol, the subsequent updates use the same verification process.</t>
      </section>
    </section>
    <section anchor="wire-formats">
      <name>Protocol Elements</name>
      <t>This section specifies the new extensions and data structures in detail. All multi-byte values are in network byte order (big-endian). The syntax uses the TLS presentation language from <xref target="RFC8446"/>.</t>
      <section anchor="ech-authentication-extension-echauth">
        <name>ECH authentication extension (<tt>ech_auth</tt>)</name>
        <t>The <tt>ech_auth</tt> information is carried as an ECHConfig extension inside the ECHConfig structure and is used both when distributed via DNS and when delivered in TLS (HRR/EE) as part of <tt>retry_configs</tt>. This single extension conveys policy (which signature methods and pins are supported) and, when present, a signed authenticator that allows clients to verify and install the ECHConfig immediately.</t>
        <t>The <tt>ech_auth</tt> extension MUST be the last extension in the ECHConfig's extension list. This ensures that the signature in the extension covers all other extensions in the ECHConfigTBS. Implementations MUST place this extension last when constructing an ECHConfig, and MUST reject ECHConfigs where <tt>ech_auth</tt> is not the last extension.</t>
        <t>The <tt>ech_auth</tt> extension has the following structure:</t>
        <artwork><![CDATA[
enum {
    none(0),
    rpk(1),
    pkix(2),
    (255)
} ECHAuthMethod;

// We reuse the TLS HashAlgorithm registry values (though TLS 1.3 itself
// doesn't use this enum directly, the registry still exists)
// For now, implementations MUST use sha256(4). Future specs may allow others.
opaque SPKIHash<32..32>;  // SHA-256 hash of DER-encoded SPKI
]]></artwork>
        <t>struct {
      ECHAuthMethod method;              // Single authentication method
      SPKIHash trusted_keys&lt;0..2^16-1&gt;;  // RPK-only; SHA-256 hashes per IANA TLS
                                          // HashAlgorithm registry value 4;
                                          // zero-length if method != rpk</t>
        <artwork><![CDATA[
  // Optional signed authenticator. Present when the sender wishes
  // to provide a signed ECHConfig (e.g., in TLS retry_configs, or
  // pre-signed in DNS). struct {
    opaque authenticator<1..2^16-1>; // method-specific material (see below)
    uint64 not_after;                 // Unix timestamp; used by RPK;
                                      // MUST be 0 for PKIX SignatureScheme algorithm;
    opaque signature<1..2^16-1>;
  } signature;                        // Optional; zero-length if not present
} ECHAuth;
]]></artwork>
        <section anchor="signature-computation">
          <name>Signature Computation</name>
          <t>The signature is computed over the concatenation:</t>
          <artwork><![CDATA[
context_label = "TLS-ECH-AUTH-v1"  // ASCII, no NUL
to_be_signed = context_label || ECHConfigTBS
]]></artwork>
          <t>where:</t>
          <ul spacing="normal">
            <li>
              <t><tt>ECHConfigTBS</tt> (To-Be-Signed) is the serialized ECHConfig structure including
the <tt>ech_auth</tt> extension, but with the <tt>signature</tt> field within <tt>ech_auth</tt>
set to zero-length. This means it includes:
              </t>
              <ul spacing="normal">
                <li>
                  <t>All ECHConfig base fields (version, length, contents, etc.)</t>
                </li>
                <li>
                  <t>All extensions including <tt>ech_auth</tt> (which MUST be last)</t>
                </li>
                <li>
                  <t>Within <tt>ech_auth</tt>: the <tt>method</tt>, <tt>trusted_keys</tt>, and the authenticator/
not_after/algorithm fields from <tt>signature</tt>, but NOT the actual signature
bytes</t>
                </li>
              </ul>
            </li>
            <li>
              <t>The signature is computed over this entire structure, avoiding circular
dependency by zeroing out only the signature bytes themselves</t>
            </li>
            <li>
              <t>All multi-byte values use network byte order (big-endian)</t>
            </li>
            <li>
              <t>The serialization follows TLS 1.3 presentation language rules from RFC 8446</t>
            </li>
          </ul>
          <t>Including a fixed, scheme-specific context label prevents cross-protocol reuse; covering the to-be-signed ECHConfig and all <tt>ech_auth</tt> fields (except the signature itself) ensures integrity of parameters and pins. The <tt>not_after</tt> timestamp provides freshness by bounding the configuration's validity period.</t>
          <t>Method-specific <tt>authenticator</tt>:</t>
          <ul spacing="normal">
            <li>
              <t>RPK (method=1): the DER-encoded SubjectPublicKeyInfo (SPKI) of the signing key. The client MUST compute the SHA-256 hash of the SPKI, verify that it matches one of the hashes in <tt>trusted_keys</tt>, check that the current time is before the <tt>not_after</tt> timestamp, and then verify the signature with this key. The <tt>not_after</tt> field is REQUIRED and MUST be a timestamp strictly greater than the client's current time at verification.</t>
            </li>
            <li>
              <t>PKIX (method=2): a CertificateEntry vector (leaf + optional intermediates) as in TLS 1.3 Certificate; the leaf MUST include the critical <tt>id-pe-echConfigSigning</tt> extension and be valid for the ECHConfig <tt>public_name</tt>. The client validates the chain, confirms the SAN includes the ECH <tt>public_name</tt>, confirms the critical <tt>id-pe-echConfigSigning</tt> extension is present in the leaf, and verifies the signature with the leaf key. The <tt>not_after</tt> field MUST be set to 0 (absent).</t>
            </li>
          </ul>
          <t>Notes:</t>
          <ul spacing="normal">
            <li>
              <t><tt>trusted_keys</tt> is only used by RPK; clients MUST ignore it for PKIX.</t>
            </li>
            <li>
              <t>If <tt>method</tt> is <tt>rpk(1)</tt>, <tt>trusted_keys</tt> MUST contain at least one SPKI hash; otherwise it MUST be zero-length.</t>
            </li>
            <li>
              <t>A server publishing multiple ECHConfigs MAY use different methods for each to maximize client compatibility.</t>
            </li>
          </ul>
          <t>Context-specific requirements:</t>
          <ul spacing="normal">
            <li>
              <t>When carried in TLS (HelloRetryRequest or EncryptedExtensions), an <tt>ech_auth</tt> extension in each delivered ECHConfig MUST include a signed authenticator in <tt>signature</tt>, and the client MUST verify the authenticator before installing the ECHConfig.</t>
            </li>
            <li>
              <t>When carried in DNS, an <tt>ech_auth</tt> extension MAY omit the <tt>signature</tt> field (unsigned), in which case it conveys only policy (<tt>method</tt>, <tt>trusted_keys</tt>). Clients MAY use such information to attempt ECH and to bootstrap trust, but MUST NOT treat it as an authenticated update. If <tt>signature</tt> is present in DNS, clients SHOULD verify it per the indicated method and MAY treat the ECHConfig as authenticated upon successful verification.</t>
            </li>
          </ul>
          <t>The SPKI hash uses SHA-256 (value 4 in the IANA TLS HashAlgorithm registry). The rationale for using a hash rather than the full SPKI is to keep the extension compact in DNS and on the wire, and to avoid exposing full public keys in the clear. SHA-256 is universally supported and provides sufficient security. The drawback is that hash collisions or second-preimage attacks could undermine the pin – this is considered cryptographically infeasible for SHA-256 at the time of writing.</t>
          <t>Note: While TLS 1.3 moved to SignatureScheme and doesn't directly use the HashAlgorithm enum, we reference the IANA registry value for clarity. Future versions of this specification could add a hash algorithm field using the TLS HashAlgorithm registry if algorithm agility becomes necessary.</t>
          <t>Client behavior: When a client obtains an ECHConfig that contains an <tt>ech_auth</tt> extension, it SHOULD store this information along with the configuration. If the client subsequently uses this ECHConfig to initiate a connection, it relies on delivery of signed ECHConfigs in HRR/EE for in-band updates.</t>
          <t>If an ECHConfig does not include <tt>ech_auth</tt>, the in-band update mechanism defined here is not used for that configuration.</t>
          <t>Server behavior: A server that wishes to allow in-band updates MUST include <tt>ech_auth</tt> in the ECHConfig it publishes via DNS or other means. The server MUST set the <tt>method</tt> field to the authentication method it will use for this configuration. The server MUST ensure that it actually has the capability to perform the indicated method:</t>
          <ul spacing="normal">
            <li>
              <t>If <tt>method</tt> is <tt>rpk(1)</tt>, the server needs a signing key whose SPKI hash is in <tt>trusted_keys</tt>. (It may have multiple keys for rotation; all keys that might sign an update before the next ECHConfig change should be listed. Pins can be added or removed by generating a new ECHConfig with an updated list and distributing it out-of-band or via an update.)</t>
            </li>
            <li>
              <t>If <tt>method</tt> is <tt>pkix(2)</tt>, the server must have a valid certificate (and chain) for the public name with the critical <tt>id-pe-echConfigSigning</tt> extension (Section <xref target="iana">IANA Considerations</xref> defines the extension) available at runtime to use for signing. The certificate's public key algorithm dictates what signature algorithms are possible.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="tls-extensions-for-ech-config-update">
        <name>TLS Extensions for ECH Config Update</name>
        <section anchor="encryptedextensions-helloretryrequest-delivery">
          <name>EncryptedExtensions / HelloRetryRequest Delivery</name>
          <t>This specification reuses the ECH retry_configs delivery mechanism: the server sends an ECHConfigList where each ECHConfig contains the <tt>ech_auth</tt> extension with a signed authenticator. The server MAY include multiple ECHConfigs with different authentication methods (e.g., one with PKIX and one with RPK) to maximize client compatibility. There is no separate TLS extension for negotiation.</t>
        </section>
        <section anchor="server-behavior">
          <name>Server Behavior</name>
          <t>When a server receives a ClientHello with the <tt>encrypted_client_hello</tt> extension, it processes ECH per <xref target="I-D.ietf-tls-esni"/>. If the server has an updated ECHConfigList to distribute:</t>
          <ol spacing="normal" type="1"><li>
              <t>ECH Accepted: If the server successfully decrypts the ClientHelloInner, it completes the handshake using the inner ClientHello. The server MAY include authenticated ECHConfigs in EncryptedExtensions if an update is available.</t>
            </li>
            <li>
              <t>ECH Rejected: If the server cannot decrypt the ClientHelloInner, it SHOULD proceed with the outer handshake and include authenticated ECHConfigs in EncryptedExtensions. This allows the client to immediately retry with the correct configuration.</t>
            </li>
          </ol>
          <t>The server prepares authenticated updates by:</t>
          <ul spacing="normal">
            <li>
              <t>Using the authentication method specified in the ECHConfig's <tt>ech_auth.method</tt></t>
            </li>
            <li>
              <t>Creating the appropriate authenticator (RPK signature or PKIX certificate chain)</t>
            </li>
            <li>
              <t>Including the authenticator in the ECHConfig's <tt>ech_auth.signature</tt> field</t>
            </li>
            <li>
              <t>Sending the ECHConfigList via the existing <tt>retry_configs</tt> mechanism</t>
            </li>
          </ul>
        </section>
        <section anchor="client-behavior">
          <name>Client Behavior</name>
          <t>When a client retrieves an ECHConfig (e.g., from DNS), it examines the <tt>ech_auth</tt> extension and records:</t>
          <ul spacing="normal">
            <li>
              <t>The authentication <tt>method</tt> (RPK or PKIX)</t>
            </li>
            <li>
              <t>Any <tt>trusted_keys</tt> for RPK validation</t>
            </li>
            <li>
              <t>Any pre-distributed signature for immediate validation</t>
            </li>
          </ul>
          <t>During the TLS handshake, upon receiving an ECHConfigList in HRR or EE:</t>
          <ol spacing="normal" type="1"><li>
              <t>Validation: The client validates the authenticator according to its method:
              </t>
              <ul spacing="normal">
                <li>
                  <t>RPK: Computes the SHA-256 hash of the provided SPKI, verifies it matches one in <tt>trusted_keys</tt>, then verifies the signature</t>
                </li>
                <li>
                  <t>PKIX: Validates the certificate chain, verifies the leaf certificate covers the ECHConfig's <tt>public_name</tt>, checks for the critical <tt>id-pe-echConfigSigning</tt> extension, then verifies the signature</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Validity Checking: The client checks temporal validity:
              </t>
              <ul spacing="normal">
                <li>
                  <t>For RPK: Verifies current time is before <tt>not_after</tt></t>
                </li>
                <li>
                  <t>For PKIX: Verifies certificate validity period (the <tt>not_after</tt> field MUST be 0)</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Installation and Retry (see Appendix A for state diagram):
              </t>
              <ul spacing="normal">
                <li>
                  <t>If validation succeeds and this was an ECH rejection (outer handshake):
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>The client treats the retry_configs as authentic per <xref section="6.1.6" sectionFormat="comma" target="I-D.ietf-tls-esni"/></t>
                    </li>
                    <li>
                      <t>The client MUST terminate the connection and retry with the new ECHConfig</t>
                    </li>
                    <li>
                      <t>The retry does not consider the server's TLS certificate for the public name</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>If validation succeeds and this was an ECH acceptance:
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>The client caches the new ECHConfig for future connections</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>If validation fails:
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>The client MUST treat this as if the server's TLS certificate could not be validated</t>
                    </li>
                    <li>
                      <t>The client MUST NOT use the retry_configs</t>
                    </li>
                    <li>
                      <t>The client terminates the connection without retry</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
          </ol>
          <t>Note: Regardless of validation outcome in an ECH rejection, the client will terminate the current connection. The difference is whether it retries with the new configs (validation success) or treats it as a certificate validation failure (validation failure). Implementers should refer to the state diagram in Appendix A for the complete retry logic flow.</t>
        </section>
        <section anchor="backward-compatibility">
          <name>Backward Compatibility</name>
          <t>Clients that do not implement this specification continue to process <tt>retry_configs</tt> as defined in <xref target="I-D.ietf-tls-esni"/>, ignoring the authentication extensions. Servers that do not implement this specification send unauthenticated <tt>retry_configs</tt> as usual.</t>
        </section>
      </section>
    </section>
    <section anchor="example-exchange">
      <name>Example Exchange</name>
      <section anchor="initial-setup">
        <name>Initial Setup</name>
        <t>Consider <tt>api.example.com</tt> as a service protected by ECH with public name <tt>ech.example.net</tt>. The operator publishes an ECHConfig via DNS HTTPS RR with the <tt>ech_auth</tt> extension containing:</t>
        <ul spacing="normal">
          <li>
            <t>Method: RPK (value 1)</t>
          </li>
          <li>
            <t>Trusted keys: SHA-256 hash of an Ed25519 signing key's SPKI</t>
          </li>
          <li>
            <t>Optional: A signed authenticator for immediate validation</t>
          </li>
        </ul>
      </section>
      <section anchor="successful-ech-with-update">
        <name>Successful ECH with Update</name>
        <ol spacing="normal" type="1"><li>
            <t>Client connects: Sends ClientHello with ECH using cached config
            </t>
            <ul spacing="normal">
              <li>
                <t>Outer SNI: <tt>ech.example.net</tt></t>
              </li>
              <li>
                <t>Inner SNI: <tt>api.example.com</tt></t>
              </li>
            </ul>
          </li>
          <li>
            <t>Server accepts ECH: Decrypts inner ClientHello successfully
            </t>
            <ul spacing="normal">
              <li>
                <t>Prepares updated ECHConfig with new keys</t>
              </li>
              <li>
                <t>Selects PKIX method for signing</t>
              </li>
              <li>
                <t>Signs the update with certificate containing the critical <tt>id-pe-echConfigSigning</tt> extension</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Server response:
            </t>
            <ul spacing="normal">
              <li>
                <t>ServerHello (ECH accepted)</t>
              </li>
              <li>
                <t>EncryptedExtensions containing authenticated ECHConfig</t>
              </li>
              <li>
                <t>Certificate for <tt>api.example.com</tt> (inner origin)</t>
              </li>
              <li>
                <t>CertificateVerify, Finished</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Client validation:
            </t>
            <ul spacing="normal">
              <li>
                <t>Verifies ECH acceptance</t>
              </li>
              <li>
                <t>Validates PKIX certificate chain and critical extension</t>
              </li>
              <li>
                <t>Verifies signature over ECHConfig</t>
              </li>
              <li>
                <t>Caches new config for future connections</t>
              </li>
            </ul>
          </li>
        </ol>
      </section>
      <section anchor="ech-rejection-with-recovery">
        <name>ECH Rejection with Recovery</name>
        <ol spacing="normal" type="1"><li>
            <t>Client connects: Uses outdated ECHConfig</t>
          </li>
          <li>
            <t>Server rejects ECH: Cannot decrypt inner ClientHello</t>
          </li>
          <li>
            <t>Server continues outer handshake:
            </t>
            <ul spacing="normal">
              <li>
                <t>Sends authenticated ECHConfig in EncryptedExtensions</t>
              </li>
              <li>
                <t>Uses certificate for <tt>ech.example.net</tt></t>
              </li>
            </ul>
          </li>
          <li>
            <t>Client recovery:
            </t>
            <ul spacing="normal">
              <li>
                <t>Validates and caches new ECHConfig</t>
              </li>
              <li>
                <t>Closes connection (not authenticated for inner origin)</t>
              </li>
              <li>
                <t>Immediately retries with new ECHConfig</t>
              </li>
            </ul>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>This section analyzes security properties by threat model.</t>
      <section anchor="passive-attackers">
        <name>Passive Attackers</name>
        <t>This mechanism preserves ECH's protection against passive observation. ECHConfig updates are delivered within encrypted TLS messages (HelloRetryRequest or EncryptedExtensions), preventing passive observers from learning about configuration changes. The mechanism ensures that even during retry scenarios, the client's intended server name is never exposed in cleartext.</t>
      </section>
      <section anchor="active-network-attackers">
        <name>Active Network Attackers</name>
        <section anchor="initial-trust-bootstrap">
          <name>Initial Trust Bootstrap</name>
          <t>The security of this mechanism fundamentally depends on the authenticity of the initial ECHConfig. If an attacker can inject a malicious initial configuration, they may be able to pin their own keys in the <tt>trusted_keys</tt> field, enabling persistent interception.</t>
          <t>When ECHConfigs are obtained via DNS, an on-path attacker could provide a fake ECHConfig with the attacker's key in <tt>trusted_keys</tt>. While the attacker cannot decrypt ECH-protected connections, they could cause ECH to fail and then present their own certificate during fallback, potentially tricking the client into accepting and caching a compromised configuration. Clients SHOULD prefer authenticated bootstrap mechanisms when available.</t>
          <t>Initial retrieval of ECHConfigList via DNS is unchanged by this mechanism. This specification authenticates updates in-band via RPK or PKIX; it does not attempt to authenticate the initial DNS fetch. ECHConfigs obtained via HTTPS from a well-known URI benefit from Web PKI authentication. Pre-configured ECHConfigs in applications derive their trust from the application's distribution channel.</t>
        </section>
        <section anchor="handshake-integrity">
          <name>Handshake Integrity</name>
          <t>Signed ECHConfigs delivered via HelloRetryRequest or EncryptedExtensions are protected by TLS 1.3's handshake encryption and integrity mechanisms. The Finished message ensures that any modification by an attacker would be detected.</t>
          <t>A man-in-the-middle attacker without the server's handshake keys cannot modify the EncryptedExtensions message containing the ECHConfig update. The TLS 1.3 handshake itself provides replay protection through its use of fresh random values and the Finished message authentication.</t>
        </section>
      </section>
      <section anchor="compromised-keys">
        <name>Compromised Keys</name>
        <section anchor="signature-verification">
          <name>Signature Verification</name>
          <t>Clients MUST correctly implement signature verification for each authentication method. For RPK, servers and clients SHOULD use cryptographically strong signature schemes from the TLS 1.3 SignatureScheme registry, such as Ed25519, ECDSA, or RSA-PSS. Weak schemes like RSA PKCS#1 v1.5 SHOULD NOT be used.</t>
          <t>The inclusion of <tt>not_after</tt> timestamps (for RPK) or certificate validity periods (for PKIX) ensures configuration freshness. These temporal bounds prevent clients from accepting stale configurations that might use compromised keys or outdated parameters. Clients MUST verify these temporal constraints and reject expired configurations. Note that these mechanisms depend on reasonably synchronized clocks (within 5 minutes of actual time is RECOMMENDED).</t>
          <t>Note that signed ECHConfigs themselves are replayable - an attacker could capture and resend a valid signed configuration. However, this is not a security concern as the configuration is public data intended for distribution. The freshness guarantees ensure that old configurations eventually expire, limiting the window during which outdated keys remain acceptable.</t>
        </section>
        <section anchor="key-management">
          <name>Key Management</name>
          <t>Servers MUST protect their ECH update signing keys. If an RPK signing key is compromised, the server SHOULD remove its hash from <tt>trusted_keys</tt> in subsequent updates, signing the transition with a different trusted key. Servers SHOULD consider including multiple keys in <tt>trusted_keys</tt> to facilitate key rotation and recovery from compromise.</t>
          <t>For PKIX-based updates, normal certificate lifecycle management applies. Servers SHOULD obtain new certificates before existing ones expire.</t>
          <t>For PKIX authentication, this specification leverages existing CA infrastructure including revocation mechanisms. A compromised ECH signing certificate could be used to sign malicious updates, but this risk is mitigated by the certificate's constraints (critical extension and name binding) and standard revocation mechanisms (OCSP/CRL). Clients SHOULD apply the same revocation checks to ECH signing certificates as they do for TLS server certificates.</t>
        </section>
      </section>
      <section anchor="implementation-vulnerabilities">
        <name>Implementation Vulnerabilities</name>
        <section anchor="failure-handling">
          <name>Failure Handling</name>
          <t>When ECHConfig update verification fails, clients MUST NOT compromise the security or privacy guarantees of ECH. If ECH was accepted but the update verification failed, the connection proceeds normally without caching the new configuration. This represents a safe failure mode where connectivity is maintained but key rotation is delayed.</t>
          <t>If ECH was rejected and the update verification also fails, the client lacks a valid configuration for retry. In this case, the client SHOULD NOT proceed with the connection using the outer SNI for application data, as this would violate ECH's privacy goals. The client MAY attempt to obtain a valid configuration through other means (such as DNS) or treat the connection as failed.</t>
          <t>Servers MAY include multiple ECHConfigs with different authentication methods to maximize the probability of successful verification. Clients SHOULD process these in order and use the first configuration that successfully verifies.</t>
          <t>In distributed deployments, only servers with access to the appropriate signing keys can generate valid ECHConfig updates. This prevents unauthorized intermediaries (such as CDN nodes) from injecting malicious configurations. If a server sends an update that cannot be verified, the client simply ignores it and continues with its existing configuration. While this could potentially lead to the use of outdated configurations, it prevents compromise of the ECH mechanism itself.</t>
          <t>Algorithm agility is provided through the TLS SignatureScheme registry for RPK and standard PKIX certificate algorithms. Implementations SHOULD support commonly deployed algorithms and MUST be able to handle algorithm transitions.</t>
        </section>
        <section anchor="denial-of-service-considerations">
          <name>Denial of Service Considerations</name>
          <t>Signature verification introduces computational costs. However, these operations occur only during ECH configuration updates, not on every connection. The additional data in EncryptedExtensions (certificates) may increase message sizes, potentially causing fragmentation in some scenarios. Implementations SHOULD be aware of message size limits, particularly in QUIC deployments.</t>
          <t>Attackers cannot force servers to send signed ECHConfigs without establishing TLS connections. Standard TLS denial-of-service mitigations (rate limiting, stateless cookies) apply equally to this mechanism.</t>
        </section>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>This mechanism preserves and potentially enhances ECH's privacy properties. By enabling the use of diverse public names through RPK authentication, servers can increase the anonymity set beyond what is possible with certificate-based authentication alone.</t>
      <t>The ECHConfig updates themselves are delivered within encrypted TLS messages (HelloRetryRequest or EncryptedExtensions), preventing passive observers from learning about configuration changes. The mechanism ensures that even during retry scenarios, the client's intended server name is never exposed in cleartext.</t>
      <t>A potential privacy consideration is that failed ECH attempts followed by successful retries create a distinctive connection pattern. However, this pattern only reveals that ECH was used with a particular public name, not the intended destination behind that name.</t>
      <t>This specification introduces no new tracking mechanisms or identifiers beyond those already present in TLS and DNS.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="echconfig-extension">
        <name>ECHConfig Extension</name>
        <t>IANA is requested to add the following entry to the "ECH Configuration Extension Type Values" registry:</t>
        <ul spacing="normal">
          <li>
            <t>Extension Name: <tt>ech_auth</tt></t>
          </li>
          <li>
            <t>Value: TBD1</t>
          </li>
          <li>
            <t>Purpose: Conveys supported authentication methods, trusted keys, and optional signed authenticators</t>
          </li>
          <li>
            <t>Reference: This document</t>
          </li>
        </ul>
      </section>
      <section anchor="x509-certificate-extension-oid">
        <name>X.509 Certificate Extension OID</name>
        <t>IANA is requested to allocate an object identifier (OID) under the "SMI Security for PKIX Certificate Extensions (1.3.6.1.5.5.7.1)" registry with the following values:</t>
        <ul spacing="normal">
          <li>
            <t>OID: id-pe-echConfigSigning (1.3.6.1.5.5.7.1.TBD2)</t>
          </li>
          <li>
            <t>Name: ECH Configuration Signing</t>
          </li>
          <li>
            <t>Description: Indicates that the certificate's subject public key is authorized to sign ECH configuration updates for the DNS names in the certificate's Subject Alternative Name (SAN).</t>
          </li>
          <li>
            <t>Criticality: Certificates containing this extension MUST mark it critical.</t>
          </li>
          <li>
            <t>Reference: This document.</t>
          </li>
        </ul>
      </section>
      <section anchor="ech-authentication-methods-registry">
        <name>ECH Authentication Methods Registry</name>
        <t>IANA is requested to establish a new registry called "ECH Authentication Methods" with the following initial values:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Method</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">Reserved</td>
              <td align="left">Not used</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">RPK</td>
              <td align="left">Raw Public Key</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">PKIX</td>
              <td align="left">X.509 with critical id-pe-echConfigSigning</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">3-255</td>
              <td align="left">Unassigned</td>
              <td align="left">-</td>
              <td align="left">-</td>
            </tr>
          </tbody>
        </table>
        <t>New values are assigned via IETF Review.</t>
      </section>
    </section>
    <section anchor="deployment-considerations">
      <name>Deployment Considerations</name>
      <section anchor="method-selection">
        <name>Method Selection</name>
        <t>Operators SHOULD support at least one widely implemented method. PKIX (critical extension) provides easier operational deployment with standard certificate issuance workflows and no client pin state. RPK offers small artifacts and simple verification; any client-side state is bounded to the lifetime of the current ECHConfig and a single authenticated retry per connection attempt.</t>
      </section>
      <section anchor="size-considerations">
        <name>Size Considerations</name>
        <t>When sending authenticated ECHConfigs in HelloRetryRequest, servers should be mindful of message size to avoid fragmentation or exceeding anti-amplification limits. RPK signatures are typically more compact than PKIX certificate chains.</t>
      </section>
      <section anchor="key-rotation">
        <name>Key Rotation</name>
        <t>Publish updates well in advance of key retirement. Include appropriate validity periods for each method. Consider overlapping validity windows to allow graceful client migration.</t>
      </section>
      <section anchor="pin-management">
        <name>Pin Management</name>
        <t>For RPK deployments:</t>
        <ul spacing="normal">
          <li>
            <t>Maintain multiple valid pins to enable recovery from key compromise</t>
          </li>
          <li>
            <t>Remove compromised pins via authenticated updates signed by remaining trusted keys</t>
          </li>
          <li>
            <t>Consider using PKIX to re-establish trust if all pinned keys are compromised</t>
          </li>
        </ul>
      </section>
      <section anchor="update-consistency">
        <name>Update Consistency</name>
        <t>If sending updates in both HRR and EncryptedExtensions, ensure consistency to avoid client confusion. When possible, send updates in only one location per handshake.</t>
      </section>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors thank Martin Thomson for earlier contributions and discussions on the initial draft.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
        <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" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
        <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="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
        <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="RFC9180" target="https://www.rfc-editor.org/info/rfc9180" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9180.xml">
        <front>
          <title>Hybrid Public Key Encryption</title>
          <author fullname="R. Barnes" initials="R." surname="Barnes"/>
          <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
          <author fullname="B. Lipp" initials="B." surname="Lipp"/>
          <author fullname="C. Wood" initials="C." surname="Wood"/>
          <date month="February" year="2022"/>
          <abstract>
            <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
            <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9180"/>
        <seriesInfo name="DOI" value="10.17487/RFC9180"/>
      </reference>
      <reference anchor="RFC9460" target="https://www.rfc-editor.org/info/rfc9460" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9460.xml">
        <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="I-D.ietf-tls-esni" target="https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-25" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-esni.xml">
        <front>
          <title>TLS Encrypted Client Hello</title>
          <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
            <organization>Independent</organization>
          </author>
          <author fullname="Kazuho Oku" initials="K." surname="Oku">
            <organization>Fastly</organization>
          </author>
          <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
            <organization>Cryptography Consulting LLC</organization>
          </author>
          <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
            <organization>Cloudflare</organization>
          </author>
          <date day="14" month="June" year="2025"/>
          <abstract>
            <t>This document describes a mechanism in Transport Layer Security (TLS) for encrypting a ClientHello message under a server public key. Discussion Venues This note is to be removed before publishing as an RFC. Source for this draft and an issue tracker can be found at https://github.com/tlswg/draft-ietf-tls-esni (https://github.com/tlswg/draft-ietf-tls-esni).</t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-tls-esni-25"/>
      </reference>
      <reference anchor="I-D.ietf-tls-svcb-ech" target="https://datatracker.ietf.org/doc/html/draft-ietf-tls-svcb-ech-08" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-svcb-ech.xml">
        <front>
          <title>Bootstrapping TLS Encrypted ClientHello with DNS Service Bindings</title>
          <author fullname="Benjamin M. Schwartz" initials="B. M." surname="Schwartz">
            <organization>Meta Platforms, Inc.</organization>
          </author>
          <author fullname="Mike Bishop" initials="M." surname="Bishop">
            <organization>Akamai Technologies</organization>
          </author>
          <author fullname="Erik Nygren" initials="E." surname="Nygren">
            <organization>Akamai Technologies</organization>
          </author>
          <date day="16" month="June" year="2025"/>
          <abstract>
            <t>To use TLS Encrypted ClientHello (ECH) the client needs to learn the ECH configuration for a server before it attempts a connection to the server. This specification provides a mechanism for conveying the ECH configuration information via DNS, using a SVCB or HTTPS resource record (RR).</t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-tls-svcb-ech-08"/>
      </reference>
      <reference anchor="I-D.ietf-tls-wkech" target="https://datatracker.ietf.org/doc/html/draft-ietf-tls-wkech-10" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-wkech.xml">
        <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="19" month="October" year="2025"/>
          <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. Service binding data can include Encrypted ClientHello (ECH) configurations, that may change frequently. This allows the HTTP origin, in collaboration with DNS infrastructure elements, to publish and rotate its own ECH keys. Other service binding data such as information about TLS supported groups is unlikely to change quickly, but the HTTP origin is much more likely to have accurate information when changes do occur. Service data published via this mechanism is typically available via an HTTPS or SVCB resource record.</t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-tls-wkech-10"/>
      </reference>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1963Ibx5LmfzxFj/RDwA4Ai7LlGZPnbCxFyiOurcuQkj0T
G7tmAyiQfdToxnQ1SMGWIvYd9g33STa/zKxbd0OWZubn6kQckwS6uiorK/PL
a81ms1FbtKU5zh6c7tpbU7XFMm/NKnt+9iI7q6t1cZOdF7ZtisWuLeoqy6tV
dlm3OX55MMoXi8bcDT78bruinx+M8JebutkfZ7ZdjYptc5y1zc62Tx4//uHx
k9GqXlb5ht6/avJ1O7O7sizu8mrWlnZmi5vKrGZmeTvb8Wh29vjxKG9Mfpxd
meWuKdr96L5u3t809W57nL39+Wr03uzpL6vjUZbN8IfsaP4t//y8Wjb7LWZ3
VhY01RemLGv55OwF//cns/dL4z+8+eniX/iHyzc/jUY5LbFuZOA1TVOm/apY
vs+udNb0WZbVzU1eFb/zMMfZGV5a3zT59nYPgtIC26K6yX7++Yy/bTZ5UR5n
VbG8rcvczh0B/r4w7fq/3eDT+bLedN56bqqqsNl/z5fvbT302pf170VZ5vEr
eMAVPzj7mzw4370fjaq62dBTdwZLu/zx7MnR0Q/64z8e/cN37sfvvvtef/zh
6B8fux+/+55/vJidzzE+b5uxVdH7o71bLrCTvQ/u3/NfR0W1DhMZ3ZlqxxOK
tjbL2v2WFv8r7ThI+E/4CF8p2tvd4pi+WrTt/obYw5pvvoidRjPif/xfli+I
x/NlOxoN8kk2JiaZZI35t13RGJst+SObtXV2m9+ZjJg/s6a5M80jy9y/5KOz
a3g7soWhtRn8sTJLbP88O9s1DQ1R7qfZPZ0cfmhN+2SnOhC9JK/oZzpvMttV
OqjN6ET6idB3q7rN8ugYYlKb7J6IU9MX82xpmrZYy0c0HZ7zdrcoi2UGpppm
ZbEpmDdXZlvW+w0NlK1L86FYFCWdtPlo9PaWmI5O7I4/s1uzpAGJHDTRvCcA
UhLIGrINUZ/Y1G7mdILDMleGtsk0mWxR/3F6K512mhomjVNNg6zsbf6epp3T
/tzjs2hTEjpAZBWbjVkV9Fu5z3ZWaQMqNKZt9vPs7W00N5rOklirNLKXJFKy
VSwD1029ISGWV3ZbN+00M1VOZNTZWaKlW0dKApoXhFV2V+TZ+asrOrG8FF07
6AtO3BSrVWlGo4fZRdU29Wq3ZHk0Og+bUq/5wS/i1PY2D1xSL9q8qFJuXQoj
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
WO6sNnipknSkVZOvIRH+H/KsBzzkiwAA

-->

</rfc>
