<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-tls-cert-abridge-02" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.0 -->
  <front>
    <title abbrev="Abridged Certs">Abridged Compression for WebPKI Certificates</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-tls-cert-abridge-02"/>
    <author fullname="Dennis Jackson">
      <organization>Mozilla</organization>
      <address>
        <email>ietf@dennis-jackson.uk</email>
      </address>
    </author>
    <date year="2024" month="September" 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 anchor="sec-combined-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="Lecture Notes in Computer Science" 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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
b4MxytqSi/Hg/wLd9b5DWIwAAA==

-->

</rfc>
