<?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.7 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-tls-cert-abridge-01" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.0 -->
  <front>
    <title abbrev="Abridged Certs">Abridged Compression for WebPKI Certificates</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-tls-cert-abridge-01"/>
    <author fullname="Dennis Jackson">
      <organization>Mozilla</organization>
      <address>
        <email>ietf@dennis-jackson.uk</email>
      </address>
    </author>
    <date year="2024" month="March" day="16"/>
    <area>Security</area>
    <workgroup>Transport Layer Security</workgroup>
    <abstract>
      <?line 128?>

<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>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://tlswg.github.io/draft-ietf-tls-cert-abridge/draft-ietf-tls-cert-abridge.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-tls-cert-abridge/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Transport Layer Security Working Group mailing list (<eref target="mailto:tls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/tlswg/draft-ietf-tls-cert-abridge"/>.</t>
    </note>
  </front>
  <middle>
    <?line 132?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="motivation">
        <name>Motivation</name>
        <t>When a server responds to a TLS Client Hello, the size of its initial flight of packets is limited by the underlying transport protocol. If the size limit is exceeded, the server must wait for the client to acknowledge receipt before concluding the flight, incurring the additional latency of a round trip before the handshake can complete. For TLS handshakes over TCP, the size limit is typically around 14,500 bytes. For TLS handshakes in QUIC, the limit is much lower at a maximum of 4500 bytes (<xref section="8.1" sectionFormat="comma" target="RFC9000"/>).</t>
        <t>The existing compression schemes used in <xref target="TLSCertCompress"/> have been shown to deliver a substantial improvement in QUIC handshake latency <xref target="FastlyStudy"/>, <xref target="QUICStudy"/> by reducing the size of server's certificate chain and so fitting the server's initial messages within a single flight. However, in a post-quantum setting, the signatures and public keys used in a TLS certificate chain will be typically 10 to 40 times their current size and cannot be compressed with existing TLS Certificate Compression schemes because most of the size of the certificate is in high entropy fields such as cryptographic keys and signatures.</t>
        <t>Consequently studies <xref target="SCAStudy"/> <xref target="PQStudy"/> have shown that post-quantum certificate transmission becomes the dominant source of latency in PQ TLS with certificate chains alone expected to exceed even the TCP initial flight limit. This motivates alternative designs for reducing the wire size of post-quantum certificate chains.</t>
      </section>
      <section anchor="overview">
        <name>Overview</name>
        <t>This draft introduces a new TLS certificate compression scheme which is intended specifically for WebPKI applications and is negotiated using the existing certificate compression extension described in <xref target="TLSCertCompress"/>. It uses a predistributed dictionary consisting of all intermediate and root certificates contained in the root stores of major browsers which is sourced from the Common CA Database <xref target="CCADB"/>. As of May 2023, this dictionary would be 3 MB in size and consist of roughly 2000 intermediate certificates and 200 root certificates. The disk footprint can be reduced to near zero as many clients (such as Mozilla Firefox &amp; Google Chrome) are already provisioned with their trusted intermediate and root certificates for compatibility and performance reasons.</t>
        <t>Using a shared dictionary allows for this compression scheme to deliver dramatically more effective compression than previous schemes, reducing the size of certificate chains in use today by ~75%, significantly improving on the ~25% reduction achieved by existing schemes. A preliminary evaluation (<xref target="eval"/>) of this scheme suggests that 50% of certificate chains in use today would be compressed to under 1000 bytes and 95% to under 1500 bytes. Similarly to <xref target="SCA"/>, this scheme effectively removes the CA certificates from the certificate chain on the wire but this draft achieves a much better compression ratio, since <xref target="SCA"/> removes the redundant information in chain that existing TLS Certificate Compression schemes exploit and is more fragile in the presence of out of sync clients or servers.</t>
        <t>Note that as this is only a compression scheme, it does not impact any trust decisions in the TLS handshake. A client can offer this compression scheme whilst only trusting a subset of the certificates in the CCADB certificate listing, similarly a server can offer this compression scheme whilst using a certificate chain which does not chain back to a WebPKI root. Furthermore, new root certificates are typically included in the CCADB at the start of their application to a root store, a process which typically takes more than a year. Consequently, applicant root certificates can be added to new versions of this scheme ahead of any trust decisions, allowing new CAs to compete on equal terms with existing CAs as soon as they are approved for inclusion in a root program. As a result this scheme is equitable in so far as it provides equal benefits for all CAs in the WebPKI, doesn't privilege any particular end-entity certificate or website and allows WebPKI clients to make individual trust decisions without fear of breakage.</t>
      </section>
      <section anchor="relationship-to-other-drafts">
        <name>Relationship to other drafts</name>
        <t>This draft defines a certificate compression mechanism suitable for use with TLS Certificate Compression <xref target="TLSCertCompress"/>.</t>
        <t>The intent of this draft is to provide an alternative to CA Certificate Suppression <xref target="SCA"/> as it provides a better compression ratio, can operate in a wider range of scenarios (including out of sync clients or servers) and doesn't require any additional error handling or retry mechanisms.</t>
        <t>CBOR Encoded X.509 (C509) <xref target="I-D.ietf-cose-cbor-encoded-cert-05"/> defines a concise alternative format for X.509 certificates. If this format were to become widely used on the WebPKI, defining an alternative version of this draft specifically for C509 certificates would be beneficial.</t>
        <t>Compact TLS, (cTLS) <xref target="I-D.ietf-tls-ctls-08"/> defines a version of TLS1.3 which allows a pre-configured client and server to establish a session with minimal overhead on the wire. In particular, it supports the use of a predefined list of certificates known to both parties which can be compressed. However, cTLS is still at an early stage and may be challenging to deploy in a WebPKI context due to the need for clients and servers to have prior knowledge of handshake profile in use.</t>
        <t>TLS Cached Information Extension <xref target="RFC7924"/> introduced a new extension allowing clients to signal they had cached certificate information from a previous connection and for servers to signal that the clients should use that cache instead of transmitting a redundant set of certificates. However this RFC has seen little adoption in the wild due to concerns over client privacy.</t>
        <t>Handling long certificate chains in TLS-Based EAP Methods <xref target="RFC9191"/> discusses the challenges of long certificate chains outside the WebPKI ecosystem. Although the scheme proposed in this draft is targeted at WebPKI use, defining alternative shared dictionaries for other major ecosystems may be of interest.</t>
      </section>
      <section anchor="status">
        <name>Status</name>
        <t>This draft is still at an early stage. Open questions are marked with the tag <strong>DISCUSS</strong>.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This draft refers to dates in Internet Date/Time Format as specified in <xref section="5.6" sectionFormat="of" target="DATES"/> without the optional <tt>T</tt> separator.</t>
    </section>
    <section anchor="scheme">
      <name> Abridged Compression Scheme</name>
      <t>This section describes a compression scheme suitable for compressing certificate chains used in TLS. The scheme is defined in two parts. An initial pass compressing known intermediate and root certificates and then a subsequent pass compressing the end-entity certificate.</t>
      <t>The compression scheme in this draft has two parameters listed below which influence the construction of the static dictionary. Future versions of this draft would use different parameters and so construct different dictionaries which would be registered under different TLS Certificate Compression code points. This is discussed further in <xref target="deployment"/>.</t>
      <ul spacing="normal">
        <li>
          <t><tt>CCADB_SNAPSHOT_TIME</tt> - <tt>2023-01-01 00:00:00Z</tt></t>
        </li>
        <li>
          <t><tt>CT_CERT_WINDOW</tt> - <tt>2022-12-01 00:00:00Z</tt> to <tt>2023-01-01 00:00:00Z</tt></t>
        </li>
      </ul>
      <section anchor="pass-1-intermediate-and-root-compression">
        <name>Pass 1: Intermediate and Root Compression</name>
        <t>This pass relies on a shared listing of intermediate and root certificates known to both client and server. As many clients (e.g. Mozilla Firefox and Google Chrome) already ship with a list of trusted intermediate and root certificates, this pass allows their existing lists to be reused, rather than requiring them to have to be duplicated and stored in a separate format. The first subsection details how the certificates are enumerated in an ordered list. This ordered list is distributed to client and servers which use it to compress and decompress certificate chains as detailed in the subsequent subsection.</t>
        <section anchor="listing">
          <name>Enumeration of Known Intermediate and Root Certificates</name>
          <t>The Common CA Database <xref target="CCADB"/> is operated by Mozilla on behalf of a number of Root Program operators including Mozilla, Microsoft, Google, Apple and Cisco. The CCADB contains a listing of all the root certificates trusted by these root programs, as well as their associated intermediate certificates and not yet trusted certificates from new applicants to one or more root programs.</t>
          <t>At the time of writing, the CCADB contains around 200 root program certificates and 2000 intermediate certificates which are trusted for TLS Server Authentication, occupying 3 MB of disk space. The listing used in this draft will be the relevant certificates included in the CCADB at <tt>CCADB_SNAPSHOT_TIME</tt>.</t>
          <t>As entries on this list typically have a lifespan of 10+ years and new certificates are added to the CCADB a year or or more before being marked as trusted, future drafts which include newer certificates will only need to be issued infrequently. This is discussed further in <xref target="deployment"/>.</t>
          <t>The algorithm for enumerating the list of compressible intermediate and root certificates is given below:</t>
          <ol spacing="normal" type="1"><li>
              <t>Query the CCADB for all known root and intermediate certificates <xref target="CCADBAllCerts"/> as of <tt>CCADB_SNAPSHOT_TIME</tt></t>
            </li>
            <li>
              <t>Remove all certificates which have an extendedKeyUsage extension but do not have the TLS Server Authentication bit set or the anyExtendedKeyUsage bit set.</t>
            </li>
            <li>
              <t>Remove all certificates whose notAfter date is on or before <tt>CCADB_SNAPSHOT_TIME</tt>.</t>
            </li>
            <li>
              <t>Remove all root certificates which are not marked as trusted or in the process of applying to be trusted by at least one of the following browser root programs: Mozilla, Google, Microsoft, Apple.</t>
            </li>
            <li>
              <t>Remove all intermediate certificates which do not chain back to root certificates still in the listing.</t>
            </li>
            <li>
              <t>Remove any certificates which are duplicates (have the same SHA256 certificate fingerprint)</t>
            </li>
            <li>
              <t>Order the list of certificates by the timestamp for when each was added to the CCADB, breaking any ties with the lexicographic ordering of the SHA256 certificate fingerprint.</t>
            </li>
            <li>
              <t>Associate each element of the list with the concatenation of the constant <tt>0xff</tt> and its index in the list represented as a <tt>uint16</tt>.</t>
            </li>
          </ol>
          <t>[[<strong>DISCUSS:</strong> The four programs were selected because they represent certificate consumers in the CCADB. Are there any other root programs which ought to be included? The only drawback is a larger disk requirement, since this compression scheme does not impact trust decisions.]]</t>
          <t>[[<strong>TODO:</strong> Ask CCADB to provide an authoritative copy of this listing. A subset of these lists is available in <tt>benchmarks/data</tt> in this draft's repository.]]</t>
        </section>
        <section anchor="compression-of-ca-certificates-in-certificate-chain">
          <name>Compression of CA Certificates in Certificate Chain</name>
          <t>Compression Algorithm:</t>
          <ul spacing="normal">
            <li>
              <t>Input: The byte representation of a <tt>Certificate</tt> message as defined in <xref target="TLS13"/> whose contents are <tt>X509</tt> certificates.</t>
            </li>
            <li>
              <t>Output: <tt>opaque</tt> bytes suitable for transmission in a <tt>CompressedCertificate</tt> message defined in <xref target="TLSCertCompress"/>.</t>
            </li>
          </ul>
          <ol spacing="normal" type="1"><li>
              <t>Parse the message and extract a list of <tt>CertificateEntry</tt>s, iterate over the list.</t>
            </li>
            <li>
              <t>Check if <tt>cert_data</tt> is bitwise identical to any of the known intermediate or root certificates from the listing in the previous section.
              </t>
              <ol spacing="normal" type="1"><li>
                  <t>If so, replace the opaque <tt>cert_data</tt> member of <tt>CertificateEntry</tt> with its adjusted three byte identifier and copy the <tt>CertificateEntry</tt> structure with corrected lengths to the output.</t>
                </li>
                <li>
                  <t>Otherwise, copy the <tt>CertificateEntry</tt> entry to the output without modification.</t>
                </li>
              </ol>
            </li>
            <li>
              <t>Correct the length field for the <tt>Certificate</tt> message.</t>
            </li>
          </ol>
          <t>The resulting output should be a well-formatted <tt>Certificate</tt> message payload with the recognized intermediate and root certificates replaced with three byte identifiers and resulting lengths corrected. Note that the <tt>extensions</tt> field in each <tt>CertificateEntry</tt> remains unchanged, as does the <tt>certificate_request_context</tt> and any unrecognized certificates.</t>
          <t>The decompression algorithm requires the above steps but in reverse, swapping any recognized three-byte identifier in a <tt>cert_data</tt> field with the DER representation of the associated certificate and updating the lengths. Unrecognized three-byte identifiers are ignored. Note that this does not have security implications, as the peer could send a Certificate message with an arbitrary payload directly.
If the compressed certificate chain cannot be parsed (e.g. due to incorrect length fields) the decompression algorithm <bcp14>MUST</bcp14> report the failure and as required by <xref target="TLSCertCompress"/>, the connection <bcp14>MUST</bcp14> be terminated with the "bad_certificate" alert.</t>
          <t>TLS implementations intending to only use this scheme as a compressor (e.g. servers) <bcp14>SHOULD</bcp14> minimize the storage requirements of pass 1 by using a lookup table which maps the cryptographic hash of each certificate in the pass 1 listing to its assigned three byte identifier. This avoids the need for the compressor to retain a full copy of the pass 1 list. The hashing algorithm used in this lookup table is internal to the implementation and not exposed, but <bcp14>MUST</bcp14> be cryptographically secure. Note that implementations using this scheme as a decompressor (e.g. clients) typically already ship with a listing of trusted root and intermediate certificates which can be reused by the decompressor without any additional storage overhead.</t>
        </section>
      </section>
      <section anchor="pass-2-end-entity-compression">
        <name>Pass 2: End-Entity Compression</name>
        <t>This section describes a pass based on Zstandard <xref target="ZSTD"/> with application-specified dictionaries. The dictionary is constructed with reference to the list of intermediate and root certificates discussed earlier in <xref target="listing"/>, as well as several external sources of information.</t>
        <t>[[<strong>DISCUSS:</strong> This draft is unopinionated about the underlying compression scheme is used as long as it supports application specified dictionaries. Is there an argument for using a different scheme?]]</t>
        <section anchor="construction-of-shared-dictionary">
          <name>Construction of Shared Dictionary</name>
          <t>[[<strong>DISCUSS / TODO:</strong> This section remains a work in progress and needs refinement. The goal is to produce a dictionary of minimal size which provides maximum compression whilst treating every CA equitably. Currently this dictionary occupies ~65KB of space, is equitable and has performance within a ~100 bytes of the best known alternative. This is discussed further in <xref target="eval"/>.]]</t>
          <t>The dictionary is built by systematic combination of the common strings used in certificates by each issuer in the known list described in <xref target="listing"/>. This dictionary is constructed in three stages, with the output of each stage being concatenated with the next. Implementations of this scheme need only consume the finished dictionary and do not need to construct it themselves.</t>
          <ul spacing="normal">
            <li>
              <t>Firstly, for each intermediate certificate enumerated in the listing in <xref target="listing"/>., extract the issuer field (<xref section="4.1.2.4" sectionFormat="of" target="RFC5280"/>) and derive the matching authority key identifier (<xref section="4.2.1.1" sectionFormat="of" target="RFC5280"/>) for the certificate. Order them according to the listing in <xref target="listing"/>, then copy them to the output.</t>
            </li>
            <li>
              <t>Secondly, take the listing of certificate transparency logs trusted by the root programs selected in <xref target="listing"/>, which are located at<xref target="AppleCTLogs"/> <xref target="GoogleCTLogs"/> as of <tt>CCADB_SNAPSHOT_TIME</tt> and extract the list of log identifiers. Remove duplicates and order them lexicographically, then copy them to the output.</t>
            </li>
            <li>
              <t>Finally, enumerate all certificates contained within certificate transparency logs above and witnessed during <tt>CT_CERT_WINDOW</tt>. For each issuer in the listing in <xref target="listing"/>, select the first end-entity certificate when ordered by the log id (lexicographically) and latest witnessed date.  </t>
              <t>
Extract the contents of the following extensions from the end-entity certificate selected for each issuer:  </t>
              <ul spacing="normal">
                <li>
                  <t>Authority Information Access (<xref section="4.2.2.1" sectionFormat="of" target="RFC5280"/>)</t>
                </li>
                <li>
                  <t>Certificate Policies  (<xref section="4.2.1.4" sectionFormat="of" target="RFC5280"/>)</t>
                </li>
                <li>
                  <t>CRL Distribution Points (<xref section="4.2.1.13" sectionFormat="of" target="RFC5280"/>)</t>
                </li>
                <li>
                  <t>Freshest CRL (<xref section="4.2.1.15" sectionFormat="of" target="RFC5280"/>)</t>
                </li>
              </ul>
              <t>
Concatenate the byte representation of each extension (including extension id and length) and copy it to the output. If no end-entity certificate can be found for an issuer with this process, omit the entry for that issuer.</t>
            </li>
          </ul>
          <t>[[<strong>DISCUSS:</strong> This last step is picking a single certificate issued by each issuer as a canonical reference to use for compression. The ordering chosen allows the dictionary builder to stop traversing CT as soon as they've found an entry for each issuer. It would be much more efficient to just ask CAs to submit this information to the CCADB directly.]]</t>
          <section anchor="compression-of-end-entity-certificates-in-certificate-chain">
            <name>Compression of End-Entity Certificates in Certificate Chain</name>
            <t>The resulting bytes from Pass 1 are passed to ZStandard <xref target="ZSTD"/> with the dictionary specified in the previous section. It is <bcp14>RECOMMENDED</bcp14> that the compressor (i.e. the server) use the following parameters:</t>
            <ul spacing="normal">
              <li>
                <t><tt>chain_log=30</tt></t>
              </li>
              <li>
                <t><tt>search_log=30</tt></t>
              </li>
              <li>
                <t><tt>hash_log=30</tt></t>
              </li>
              <li>
                <t><tt>target_length=6000</tt></t>
              </li>
              <li>
                <t><tt>threads=1</tt></t>
              </li>
              <li>
                <t><tt>compression_level=22</tt></t>
              </li>
              <li>
                <t><tt>force_max_window=1</tt></t>
              </li>
            </ul>
            <t>These parameters are recommended in order to achieve the best compression ratio however implementations <bcp14>MAY</bcp14> use their preferred parameters as long as the resulting output can be decompressed by a <xref target="ZSTD"/>-compliant implementation. With TLS Certificate Compression, the server needs to only perform a single compression at startup and cache the result, so optimizing for maximal compression is recommended. The client's decompression speed is insensitive to these parameters.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="eval">
      <name>Preliminary Evaluation</name>
      <t>[[<strong>NOTE:</strong> This section to be removed prior to publication.]]</t>
      <t>The storage footprint refers to the on-disk size required for the end-entity dictionary. The other columns report the 5th, 50th and 95th percentile of the resulting certificate chains. The evaluation set was a ~75,000 certificate chains from the Tranco list using the python scripts in the draft's Github repository.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Scheme</th>
            <th align="left">Storage Footprint</th>
            <th align="left">p5</th>
            <th align="left">p50</th>
            <th align="left">p95</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Original</td>
            <td align="left">0</td>
            <td align="left">2308</td>
            <td align="left">4032</td>
            <td align="left">5609</td>
          </tr>
          <tr>
            <td align="left">TLS Cert Compression</td>
            <td align="left">0</td>
            <td align="left">1619</td>
            <td align="left">3243</td>
            <td align="left">3821</td>
          </tr>
          <tr>
            <td align="left">Intermediate Suppression and TLS Cert Compression</td>
            <td align="left">0</td>
            <td align="left">1020</td>
            <td align="left">1445</td>
            <td align="left">3303</td>
          </tr>
          <tr>
            <td align="left">
              <strong>This Draft</strong></td>
            <td align="left">65336</td>
            <td align="left">661</td>
            <td align="left">1060</td>
            <td align="left">1437</td>
          </tr>
          <tr>
            <td align="left">
              <strong>This Draft with opaque trained dictionary</strong></td>
            <td align="left">3000</td>
            <td align="left">562</td>
            <td align="left">931</td>
            <td align="left">1454</td>
          </tr>
          <tr>
            <td align="left">Hypothetical Optimal Compression</td>
            <td align="left">0</td>
            <td align="left">377</td>
            <td align="left">742</td>
            <td align="left">1075</td>
          </tr>
        </tbody>
      </table>
      <ul spacing="normal">
        <li>
          <t>'Original' refers to the sampled certificate chains without any compression.</t>
        </li>
        <li>
          <t>'TLS Cert Compression' used ZStandard with the parameters configured for maximum compression as defined in <xref target="TLSCertCompress"/>.</t>
        </li>
        <li>
          <t>'Intermediate Suppression and TLS Cert Compression' was modelled as the elimination of all certificates in the intermediate and root certificates with the Basic Constraints CA value set to true. If a cert chain included an unrecognized certificate with CA status, then no CA certificates were removed from that chain. The cert chain was then passed to 'TLS Cert Compression' as a second pass.</t>
        </li>
        <li>
          <t>'This Draft with opaque trained dictionary' refers to pass 1 and pass 2 as defined by this draft, but instead using a 3000 byte dictionary for pass 2 which was produced by the Zstandard dictionary training algorithm. This illustrates a ceiling on what ought to be possible by improving the construction of the pass 2 dictionary in this document. However, using this trained dictionary directly will not treat all CA's equitably, as the dictionary will be biased towards compressing the most popular CAs more effectively.</t>
        </li>
        <li>
          <t>'Hypothetical Optimal Compression' is the resulting size of the cert chain after reducing it to only the public key in the end-entity certificate, the CA signature over the EE cert, the embedded SCT signatures and a compressed list of domains in the SAN extension. This represents the best possible compression as it entirely removes any CA certs, identifiers, field tags and lengths and non-critical extensions such as OCSP, CRL and policy extensions.</t>
        </li>
      </ul>
    </section>
    <section anchor="deployment">
      <name>Deployment Considerations</name>
      <section anchor="dictionary-versioning">
        <name>Dictionary Versioning</name>
        <t>The scheme defined in this draft is deployed with the static dictionaries constructed from the parameters listed in <xref target="scheme"/> fixed to a particular TLS Certificate Compression code point.</t>
        <t>As new CA certificates are added to the CCADB and deployed on the web, new versions of this draft would need to be issued with their own code point and dictionary parameters. However, the process of adding new root certificates to a root store is already a two to three year process and this scheme includes untrusted root certificates still undergoing the application process in its dictionary. As a result, it would be reasonable to expect a new version of this scheme with updated dictionaries to be issued at most once a year and more likely once every two or three years.</t>
        <t>A more detailed analysis and discussion of CA certificate lifetimes and root store operations is included in <xref target="churn"/>, as well as an alternative design which would allow for dictionary negotiation rather than fixing one dictionary per code point.</t>
        <t>[[<strong>DISCUSS:</strong> Are there concerns over this approach? Would using at most one code point per year be acceptable? Currently 3 of the 16384 'Specification Required' IANA managed code points are in use.]]</t>
      </section>
      <section anchor="version-migration">
        <name>Version Migration</name>
        <t>As new versions of this scheme are specified, clients and servers would benefit from migrating to the latest version. Whilst servers using CA certificates outside the scheme's listing can still offer this compression scheme and partially benefit from it, migrating to the latest version ensures that new CAs can compete on a level playing field with existing CAs. It is possible for a client or server to offer multiple versions of this scheme without having to pay twice the storage cost, since the majority of the stored data is in the pass 1 certificate listing and the majority of certificates will be in both versions and so need only be stored once.</t>
        <t>Clients and servers <bcp14>SHOULD</bcp14> offer the latest version of this scheme and <bcp14>MAY</bcp14> offer one or more historical versions. Although clients and servers which fall out of date will no longer benefit from the scheme, they will not suffer any other penalties or incompatibilities. Future schemes will likely establish recommended lifetimes for sunsetting a previous version and adopting a new one.</t>
        <t>As the majority of clients deploying this scheme are likely to be web browsers which typically use monthly release cycles (even long term support versions like Firefox ESR offer point releases on a monthly basis), this is unlikely to be a restriction in practice. The picture is more complex for servers as operators are often to reluctant to update TLS libraries, but as a new version only requires changes to static data without any new code and would happen infrequently, this is unlikely to be burdensome in practice.</t>
      </section>
      <section anchor="disk-space-requirements">
        <name>Disk Space Requirements</name>
        <t>Clients and servers implementing this scheme need to store a listing of root and intermediate certificates for pass 1, which currently occupies around ~3 MB and a smaller dictionary on the order of ~100 KB for pass 2. Clients and servers offering multiple versions of this scheme do not need to duplicate the pass 1 listing, as multiple versions can refer to same string.</t>
        <t>As popular web browsers already ship a complete list of trusted intermediate and root certificates, their additional storage requirements are minimal. Servers offering this scheme are intended to be 'full-fat' web servers and so typically have plentiful storage already. This draft is not intended for use in storage-constrained IoT devices, but alternative versions with stripped down listings may be suitable.</t>
        <t>[[<strong>DISCUSS:</strong> The current draft priorities an equitable treatment for every recognized and applicant CA over minimizing storage requirements. The required disk space could be significantly reduced by only including CAs which meet a particular popularity threshold via CT log sampling.]]</t>
      </section>
      <section anchor="implementation-complexity">
        <name>Implementation Complexity</name>
        <t>Although much of this draft is dedicated to the construction of the certificate list and dictionary used in the scheme, implementations are indifferent to these details. Pass 1 can be implemented as a simple string substitution and pass 2 with a single call to permissively licensed and widely distributed Zstandard implementations such as <xref target="ZstdImpl"/>. Future versions of this draft which vary the dictionary construction then only require changes to the static data shipped with these implementations and the use of a new code point.</t>
        <t>There are several options for handling the distribution of the associated static data. One option is to distribute it directly with the TLS library and update it as part of that library's regular release cycle. Whilst this is easy for statically linked libraries written in languages which offer first-class package management and compile time feature selection (e.g. Go, Rust), it is trickier for dynamically linked libraries who are unlikely to want to incur the increased distribution size. In these ecosystems it may make sense to distribute the dictionaries are part of an independent package managed by the OS which can be discovered by the library at run-time. Another promising alternative would be to have existing automated certificate tooling provision the library with both the full certificate chain and multiple precompressed chains during the certificate issuance / renewal process.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This draft does not introduce new security considerations for TLS, except for the considerations already identified in <xref target="TLSCertCompress"/>, in particular:</t>
      <ul spacing="normal">
        <li>
          <t>The decompressed Certificate message <bcp14>MUST</bcp14> be processed as if it were encoded without being compressed in order to ensure parsing and verification have the same security properties as they would in TLS normally.</t>
        </li>
        <li>
          <t>Since Certificate chains are presented on a per-server-name or per-user basis, a malicious application cannot introduce individual fragments into the Certificate message in order to leak information by modifying the plaintext.</t>
        </li>
      </ul>
      <t>Further, implementors <bcp14>SHOULD</bcp14> use a memory-safe language to implement this compression schemes.</t>
      <t>Note that as this draft specifies a compression scheme, it does not impact the negotiation of trust between clients and servers and is robust in the face of changes to CCADB or trust in a particular WebPKI CA. The client's trusted list of CAs does not need to be a subset or superset of the CCADB list and revocation of trust in a CA does not impact the operation of this compression scheme. Similarly, servers who use roots or intermediates outside the CCADB can still offer and benefit from this scheme.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Some servers may attempt to identify clients based on their TLS configuration, known as TLS fingerprinting <xref target="FingerprintingPost"/>. If there is significant diversity in the number of TLS Certificate Compression schemes supported by clients, this might enable more powerful fingerprinting attacks. However, this compression scheme can be used by a wide range of clients, even if they make different or contradictory trust decisions and so the resulting diversity is expected to be low.</t>
      <t>In TLS1.3, the extension carrying the client's supported TLS Certificate Compression schemes is typically transmitted unencrypted and so can also be exploited by passive network observers in addition to the server with whom the client is communicating. Deploying Encrypted Client Hello <xref target="ECH"/> enables the encryption of the Client Hello and the TLS Certificate Compression extension within it which can mitigate this leakage.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>[[<strong>TODO:</strong> Adopt an identifier for experimental purposes.]]</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="TLSCertCompress">
          <front>
            <title>TLS Certificate Compression</title>
            <author fullname="A. Ghedini" initials="A." surname="Ghedini"/>
            <author fullname="V. Vasiliev" initials="V." surname="Vasiliev"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>In TLS handshakes, certificate chains often take up the majority of the bytes transmitted.</t>
              <t>This document describes how certificate chains can be compressed to reduce the amount of data transmitted and avoid some round trips.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8879"/>
          <seriesInfo name="DOI" value="10.17487/RFC8879"/>
        </reference>
        <reference anchor="ZSTD">
          <front>
            <title>Zstandard Compression and the 'application/zstd' Media Type</title>
            <author fullname="Y. Collet" initials="Y." surname="Collet"/>
            <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
            <date month="February" year="2021"/>
            <abstract>
              <t>Zstandard, or "zstd" (pronounced "zee standard"), is a lossless data compression mechanism. This document describes the mechanism and registers a media type, content encoding, and a structured syntax suffix to be used when transporting zstd-compressed content via MIME.</t>
              <t>Despite use of the word "standard" as part of Zstandard, readers are advised that this document is not an Internet Standards Track specification; it is being published for informational purposes only.</t>
              <t>This document replaces and obsoletes RFC 8478.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8878"/>
          <seriesInfo name="DOI" value="10.17487/RFC8878"/>
        </reference>
        <reference anchor="TLS13">
          <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="DATES">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>
        <reference anchor="AppleCTLogs" target="https://valid.apple.com/ct/log_list/current_log_list.json">
          <front>
            <title>Certificate Transparency Logs trusted by Apple</title>
            <author>
              <organization>Apple</organization>
            </author>
            <date year="2023" month="June" day="05"/>
          </front>
        </reference>
        <reference anchor="GoogleCTLogs" target="https://source.chromium.org/chromium/chromium/src/+/main:components/certificate_transparency/data/log_list.json">
          <front>
            <title>Certificate Transparency Logs trusted by Google</title>
            <author>
              <organization>Google</organization>
            </author>
            <date year="2023" month="June" day="05"/>
          </front>
        </reference>
        <reference anchor="CCADBAllCerts" target="https://ccadb.my.salesforce-sites.com/ccadb/AllCertificateRecordsCSVFormat">
          <front>
            <title>CCADB Certificates Listing</title>
            <author>
              <organization>Mozilla</organization>
            </author>
            <author>
              <organization>Microsoft</organization>
            </author>
            <author>
              <organization>Google</organization>
            </author>
            <author>
              <organization>Apple</organization>
            </author>
            <author>
              <organization>Cisco</organization>
            </author>
            <date year="2023" month="June" day="05"/>
          </front>
        </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="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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="SCA">
          <front>
            <title>Suppressing CA Certificates in TLS 1.3</title>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>AWS</organization>
            </author>
            <author fullname="Cameron Bytheway" initials="C." surname="Bytheway">
              <organization>AWS</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <date day="5" month="January" year="2023"/>
            <abstract>
              <t>   A TLS client or server that has access to the complete set of
   published intermediate certificates can inform its peer to avoid
   sending certificate authority certificates, thus reducing the size of
   the TLS handshake.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kampanakis-tls-scas-latest-03"/>
        </reference>
        <reference anchor="ECH">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>RTFM, Inc.</organization>
            </author>
            <author fullname="Kazuho Oku" initials="K." surname="Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="9" month="October" year="2023"/>
            <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-17"/>
        </reference>
        <reference anchor="FastlyStudy" target="https://www.fastly.com/blog/quic-handshake-tls-compression-certificates-extension-study">
          <front>
            <title>Does the QUIC handshake require compression to be fast?</title>
            <author initials="P." surname="McManus" fullname="Patrick McManus">
              <organization>Fastly</organization>
            </author>
            <date year="2020" month="May" day="18"/>
          </front>
        </reference>
        <reference anchor="QUICStudy">
          <front>
            <title>On the interplay between TLS certificates and QUIC performance</title>
            <author fullname="Marcin Nawrocki" initials="M." surname="Nawrocki">
              <organization>Freie Universität Berlin, Germany</organization>
            </author>
            <author fullname="Pouyan Fotouhi Tehrani" initials="P." surname="Tehrani">
              <organization>Fraunhofer FOKUS, Germany</organization>
            </author>
            <author fullname="Raphael Hiesgen" initials="R." surname="Hiesgen">
              <organization>HAW Hamburg, Germany</organization>
            </author>
            <author fullname="Jonas Mücke" initials="J." surname="Mücke">
              <organization>Freie Universität Berlin, Germany</organization>
            </author>
            <author fullname="Thomas C. Schmidt" initials="T." surname="Schmidt">
              <organization>HAW Hamburg, Germany</organization>
            </author>
            <author fullname="Matthias Wählisch" initials="M." surname="Wählisch">
              <organization>Freie Universität Berlin, Germany</organization>
            </author>
            <date month="November" year="2022"/>
          </front>
          <seriesInfo name="Proceedings of the 18th International Conference on emerging Networking EXperiments and" value="Technologies"/>
          <seriesInfo name="DOI" value="10.1145/3555050.3569123"/>
          <refcontent>ACM</refcontent>
        </reference>
        <reference anchor="SCAStudy">
          <front>
            <title>Faster Post-Quantum TLS Handshakes Without Intermediate CA Certificates</title>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization/>
            </author>
            <author fullname="Michael Kallitsis" initials="M." surname="Kallitsis">
              <organization/>
            </author>
            <date year="2022"/>
          </front>
          <seriesInfo name="Cyber Security, Cryptology, and Machine Learning" value="pp. 337-355"/>
          <seriesInfo name="DOI" value="10.1007/978-3-031-07689-3_25"/>
          <seriesInfo name="ISBN" value="[&quot;9783031076886&quot;, &quot;9783031076893&quot;]"/>
          <refcontent>Springer International Publishing</refcontent>
        </reference>
        <reference anchor="PQStudy" target="https://blog.cloudflare.com/sizing-up-post-quantum-signatures/">
          <front>
            <title>Sizing Up Post-Quantum Signatures</title>
            <author initials="B." surname="Westerbaan" fullname="Bas Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date year="2021" month="November" day="08"/>
          </front>
        </reference>
        <reference anchor="CCADB" target="https://www.ccadb.org/">
          <front>
            <title>Common CA Database</title>
            <author>
              <organization>Mozilla</organization>
            </author>
            <author>
              <organization>Microsoft</organization>
            </author>
            <author>
              <organization>Google</organization>
            </author>
            <author>
              <organization>Apple</organization>
            </author>
            <author>
              <organization>Cisco</organization>
            </author>
            <date year="2023" month="June" day="05"/>
          </front>
        </reference>
        <reference anchor="ZstdImpl" target="https://github.com/facebook/zstd">
          <front>
            <title>ZStandard (Zstd)</title>
            <author>
              <organization>Facebook</organization>
            </author>
            <date year="2023" month="June" day="05"/>
          </front>
        </reference>
        <reference anchor="FingerprintingPost" target="https://www.fastly.com/blog/the-state-of-tls-fingerprinting-whats-working-what-isnt-and-whats-next">
          <front>
            <title>The state of TLS fingerprinting What’s Working, What Isn’t, and What’s Next</title>
            <author initials="F. S. R." surname="Team" fullname="Fastly Security Research Team">
              <organization>Fastly</organization>
            </author>
            <date year="2022" month="July" day="20"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-cose-cbor-encoded-cert-05">
          <front>
            <title>CBOR Encoded X.509 Certificates (C509 Certificates)</title>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Shahid Raza" initials="S." surname="Raza">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Joel Höglund" initials="J." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Martin Furuhed" initials="M." surname="Furuhed">
              <organization>Nexus Group</organization>
            </author>
            <date day="10" month="January" year="2023"/>
            <abstract>
              <t>   This document specifies a CBOR encoding of X.509 certificates.  The
   resulting certificates are called C509 Certificates.  The CBOR
   encoding supports a large subset of RFC 5280 and all certificates
   compatible with the RFC 7925, IEEE 802.1AR (DevID), CNSA, RPKI, GSMA
   eUICC, and CA/Browser Forum Baseline Requirements profiles.  When
   used to re-encode DER encoded X.509 certificates, the CBOR encoding
   can in many cases reduce the size of RFC 7925 profiled certificates
   with over 50%.  The CBOR encoded structure can alternatively be
   signed directly ("natively signed"), which does not require re-
   encoding for the signature to be verified.  The document also
   specifies C509 COSE headers, a C509 TLS certificate type, and a C509
   file format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cbor-encoded-cert-05"/>
        </reference>
        <reference anchor="I-D.ietf-tls-ctls-08">
          <front>
            <title>Compact TLS 1.3</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Benjamin M. Schwartz" initials="B. M." surname="Schwartz">
              <organization>Google</organization>
            </author>
            <date day="13" month="March" year="2023"/>
            <abstract>
              <t>   This document specifies a "compact" version of TLS 1.3 and DTLS 1.3.
   It saves bandwidth by trimming obsolete material, tighter encoding, a
   template-based specialization technique, and alternative
   cryptographic techniques. cTLS is not directly interoperable with TLS
   1.3 or DTLS 1.3 since the over-the-wire framing is different.  A
   single server can, however, offer cTLS alongside TLS or DTLS.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-ctls-08"/>
        </reference>
        <reference anchor="RFC7924">
          <front>
            <title>Transport Layer Security (TLS) Cached Information Extension</title>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>Transport Layer Security (TLS) handshakes often include fairly static information, such as the server certificate and a list of trusted certification authorities (CAs). This information can be of considerable size, particularly if the server certificate is bundled with a complete certificate chain (i.e., the certificates of intermediate CAs up to the root CA).</t>
              <t>This document defines an extension that allows a TLS client to inform a server of cached information, thereby enabling the server to omit already available information.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7924"/>
          <seriesInfo name="DOI" value="10.17487/RFC7924"/>
        </reference>
        <reference anchor="RFC9191">
          <front>
            <title>Handling Large Certificates and Long Certificate Chains in TLS-Based EAP Methods</title>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>The Extensible Authentication Protocol (EAP), defined in RFC 3748, provides a standard mechanism for support of multiple authentication methods. EAP-TLS and other TLS-based EAP methods are widely deployed and used for network access authentication. Large certificates and long certificate chains combined with authenticators that drop an EAP session after only 40 - 50 round trips is a major deployment problem. This document looks at this problem in detail and describes the potential solutions available.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9191"/>
          <seriesInfo name="DOI" value="10.17487/RFC9191"/>
        </reference>
      </references>
    </references>
    <?line 369?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors thank Bas Westerbaan, Martin Thomson and Kathleen Wilson for feedback on early versions of this document.</t>
    </section>
    <section anchor="churn">
      <name>CCADB Churn and Dictionary Negotiation</name>
      <section anchor="ccadb-churn">
        <name>CCADB Churn</name>
        <t>Typically around 10 or so new root certificates are introduced to the WebPKI each year. The various root programs restrict the lifetimes of these certificates, Microsoft to between 8 and 25 years (<eref target="https://learn.microsoft.com/en-us/security/trusted-root/program-requirements">3.A.3</eref>), Mozilla to between 0 and 14 years (<eref target="https://wiki.mozilla.org/CA/Root_CA_Lifecycles">Summary</eref>). Chrome has proposed a maximum lifetime of 7 years in the future (<eref target="https://www.chromium.org/Home/chromium-security/root-ca-policy/moving-forward-together/">Blog Post</eref>). Some major CAs have objected to this proposed policy as the root inclusion process currently takes around 3 years from start to finish (<eref target="https://www.digicert.com/blog/googles-moving-forward-together-proposals-for-root-ca-policy">Digicert Blog</eref>). Similarly, Mozilla requires CAs to apply to renew their roots with at least 2 years notice (<eref target="https://wiki.mozilla.org/CA/Root_CA_Lifecycles">Summary</eref>).</t>
        <t>Typically around 100 to 200 new WebPKI intermediate certificates are issued each year. No WebPKI root program currently limits the lifetime of intermediate certificates, but they are in practice capped by the lifetime of their parent root certificate. The vast majority of these certificates are issued with 10 year lifespans. A small but notable fraction (&lt;10%) are issued with 2 or 3 year lifetimes. Chrome's Root Program has proposed that Intermediate Certificates be limited to 3 years in the future (<eref target="https://www.chromium.org/Home/chromium-security/root-ca-policy/moving-forward-together/">Update</eref>). However, the motivation for this requirement is unclear. Unlike root certificates, intermediate certificates are only required to be disclosed with a month's notice to the CCADB (<eref target="https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/#53-intermediate-certificates">Mozilla Root Program Section 5.3.2</eref>, <eref target="https://www.chromium.org/Home/chromium-security/root-ca-policy/">Chrome Policy</eref>).</t>
      </section>
      <section anchor="dictionary-negotiation">
        <name>Dictionary Negotiation</name>
        <t>This draft is currently written with a view to being adopted as a particular TLS Certificate Compression Scheme. However, this means that each dictionary used in the wild must have an assigned code point. A new dictionary would likely need to be issued no more than yearly. However, negotiating the dictionary used would avoid the overhead of minting a new draft and code point. A sketch for how dictionary negotiation might work is below.</t>
        <t>This draft would instead define a new extension, which would define TLS Certificate Compression with ZStandard Dictionaries. Dictionaries would be identified by an IANA-assigned identifier of two bytes, with a further two bytes for the major version and two more for the minor version. Adding new certificates to a dictionary listing would require a minor version bump. Removing certificates or changing the pass 2 dictionary would require a major version bump.</t>
        <artwork><![CDATA[
struct {
  uint16 identifier;
  uint16 major_version;
  uint16 minor_version;
} DictionaryId

struct {
  DictionaryId supported_dictionaries<6..2^16-1>
} ZStdSharedDictXtn
]]></artwork>
        <t>The client lists their known dictionaries in an extension in the ClientHello. The client need only retain and advertise the highest known minor version for any major version of a dictionary they are willing to offer. The server may select any dictionary it has a copy of with matching identifier, matching major version number and a minor version number not greater than the client's minor version number.</t>
        <t>The expectation would be that new minor versions would be issued monthly or quarterly, with new major versions only every year or multiple years. This reflects the relative rates of when certificates are added or removed to the CCADB listing. This means in practice clients would likely offer a single dictionary containing their latest known version. Servers would only need to update their dictionaries yearly when a new major version is produced.</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
BXWOrXf8VD2x9G7YGkv41dh2n5nVqpylea4pSeBntpuZBvi75qJypM9wqrrt
fh2bLFHnYczmxulJBLaZMssE6KsmZb1dam01ZuTyD0lk74oJyiw0nuG6IrWJ
i3KrQQInrlhRpEw41plUVLYz3wowCk8n3HHEzO4N+yn4YUWHz6UVH/805BHr
SNGBf/JT64HEoEONaEplnHXbHtqmE76OCqTS0bRWIDbWg+ps59Yz773Jiw0i
LtYPmecNTrLW2ugs114daCkY5OuQlJLsxanf1cNlK3VqKHSZvpOwUxTlVWx6
8ZZtqDrrQbI44btjL68WrN9vPbQbFw71u9NoZuw0i+Xwb2MUinUrT7iN1Lpc
c0k7bJuwbQoio8CFT/G0++zWDnSNblMq2+aLcxNdqxUxfKV9BMDnGnFZGu23
gDWF+aTtVNUmq5yf85PyCDI/OAvukkzDTtev2I/2Wp/WrFzZ4ke8f3nyojXf
FXec6W9a9d9hSYfpZfD/1HSSXusTMF+lbCTbtA60oTpE63hhPD+BzQ0vRgkS
uBMN26gnx/b3eXl6+WrITg0mPrhUNt5zrASfuTRe5mSoh1ej5O4LL8WXA2Zt
QCT6dyn/QQtm0XM148yrnQqiQjKU78/ulhZlaeg6dwrldg0TiwstEftAAHov
rCz2ezF8Xl2QJHdLy4rPy89mt7PuxdZ6p9Nhf+cMvyZqO93a66KESEO7Kpml
BbZnt7ScQgzzNrN2NrPdN3rKE8KeIpyUp7HZmOvEeI+IU3D2uR1WytW8hhoi
uBDjC2K3PbmxHO1blK5Poxe/s6NDEtYmMGy8Th5cLe8VgKExFIeeuH8berlp
xXe3zYBt/gLgcjZKt7g3OIO41rZ5BUfeePtcFQ8w5dk1iJTvSRQNsGLbzMKK
SyrkaVdME5MCtjGZ1uBIaKvNXAz728xT6RDoVA05ICllkayLsGDh7i5ZNlXR
id12Wi9Ib7qgio79Ziw2PcTyGq8GpVJEUiL7AvmxZoPTI52Ok7BNfQ3LzPlY
uJ1LnCy/in7UEkGWwQ78qY//mImPAilmSZKuOer4lRe2PLRyZPLo8MlRdP/S
tpXgvbxWQ/p+dHHy4gR1azFKTb16QEk3kqYD4oqzLC16ni0q7baqvGFnRxzk
DFtn2bC3CYLFYO4uIzxtJeN7cSTx4ess4+hHCeDaIQRSXf7k18vLcu67bFx2
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
t8EYZW3JxXjwfwFHH2w/WIwAAA==

-->

</rfc>
