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

<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 122?>

<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.
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 <xref target="TLSCertCompress"/> which is intended specifically for WebPKI applications. 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 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>
          <tt>CCADB_SNAPSHOT_TIME</tt> - <tt>2023-01-01 00:00:00Z</tt></li>
        <li>
          <tt>CT_CERT_WINDOW</tt> - <tt>2022-12-01 00:00:00Z</tt> to <tt>2023-01-01 00:00:00Z</tt></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>Query the CCADB for all known root and intermediate certificates <xref target="CCADBAllCerts"/> as of <tt>CCADB_SNAPSHOT_TIME</tt></li>
            <li>Remove all certificates which have an extendedKeyUsage extension but do not have the TLS Server Authentication bit set or the anyExtendedKeyUsage bit set.</li>
            <li>Remove all certificates whose notAfter date is on or before <tt>CCADB_SNAPSHOT_TIME</tt>.</li>
            <li>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.</li>
            <li>Remove all intermediate certificates which are not signed by root certificates still in the listing.</li>
            <li>Remove any certificates which are duplicates (have the same SHA256 certificate fingerprint)</li>
            <li>Order the list by the date each certificate was included in the CCADB, breaking ties with the lexicographic ordering of the SHA256 certificate fingerprint.</li>
            <li>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>.</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>Input: The byte representation of a <tt>Certificate</tt> message as defined in <xref target="TLS13"/> whose contents are <tt>X509</tt> certificates.</li>
            <li>Output: <tt>opaque</tt> bytes suitable for transmission in a <tt>CompressedCertificate</tt> message defined in <xref target="TLSCertCompress"/>.</li>
          </ul>
          <ol spacing="normal" type="1"><li>Parse the message and extract a list of <tt>CertificateEntry</tt>s, iterate over the list.</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>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.</li>
                <li>Otherwise, copy the <tt>CertificateEntry</tt> entry to the output without modification.</li>
              </ol>
            </li>
            <li>Correct the length field for the <tt>Certificate</tt> message.</li>
          </ol>
          <t>The resulting output should be a well-formatted <tt>Certificate</tt> message payload with the known intermediate and root certificates replaced with three byte identifiers.</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.
If the compressed certificate chain cannot be parsed (e.g. due to incorrect length fields) the decompression algorithm <bcp14>SHOULD</bcp14> return the sentinel value <tt>0xff</tt>. Note that the connection will fail regardless even if this step is not taken as neither certificate validation nor transcript validation can succeed.</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>
          <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"/>.</t>
          <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.</t>
          <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>Authority Information Access (<xref section="4.2.2.1" sectionFormat="of" target="RFC5280"/>)</li>
            <li>Certificate Policies  (<xref section="4.2.1.4" sectionFormat="of" target="RFC5280"/>)</li>
            <li>CRL Distribution Points (<xref section="4.2.1.13" sectionFormat="of" target="RFC5280"/>)</li>
            <li>Freshest CRL (<xref section="4.2.1.15" sectionFormat="of" target="RFC5280"/>)</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>
          <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>
                <tt>chain_log=30</tt></li>
              <li>
                <tt>search_log=30</tt></li>
              <li>
                <tt>hash_log=30</tt></li>
              <li>
                <tt>target_length=6000</tt></li>
              <li>
                <tt>threads=1</tt></li>
              <li>
                <tt>compression_level=22</tt></li>
              <li>
                <tt>force_max_window=1</tt></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 these parameters are not used during decompression. 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>'Original' refers to the sampled certificate chains without any compression.</li>
        <li>'TLS Cert Compression' used ZStandard with the parameters configured for maximum compression as defined in <xref target="TLSCertCompress"/>.</li>
        <li>'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.</li>
        <li>'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.</li>
        <li>'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.</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 incorrect compression or decompression will lead to the TLS connection failing as the client and server transcripts will differ, with at least one necessarily including the original certificate chain rather than the decompressed version. However, implementors <bcp14>SHOULD</bcp14> use a memory-safe language to implement this compression scheme.</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="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>
        <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>
        <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="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="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 345?>

<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:
H4sIAAAAAAAAA9V963bbRpbufz4FjrP6+DIkReri23R3RpGUjk5iy7HkSXey
+tggCJKIQIBBAZIZtfMs8yzzZGd/e+8qVIGk7XSv+XGykkjCpS679v2GwWDQ
q7M6T59H944nVTadp9PopFyuqtSYrCyiWVlFP6STV9+eRydpVWezLInr1Nzr
xZNJld4Er9F9uoH787JaP4/S96teb1omRbyk8adVPKsHWVrPBnVuBgk9PYjl
3cFo1DPNZJnxnPV6RY+fn1193Sua5SStnvemNObzXlIWJi1MY55HddWkPZr9
oBdXaUyruEyTpsrq9b3ebVldz6uyWdHVqyouzKqs6ui7eJ1WUftU7yYtGhoz
ij79bBTJku79QENnxTz6C17B9WWc5XSd9vMf2NiwrOa4HFfJgi4v6nplnu/t
4Slcym7SoX1sDxf2JlV5a9I9en8P782zetFMZMDb+d5HIIancxxE7c3Dbw1l
kGFWfuz9j90bLuplThCKm3pREvCjAU0WRbMmz+UkT9OiyEz0f+Lk2pQF36Qd
xUX2a1zT+T2PXpS/Znke851UYISZ/mPKLw5+lheHzXWvV5TVkt66wVFcfXcJ
HLLo9zx6/fXJ06dPnvWiHy+vTu2fT/nB8YH8fXj4uBedHl+dXfLfBwcHz3q9
6Hi1ytOTq+/KucERR4riHgZHctyEPUWyjvAgcMrUhMeTtbzPL8bVPCUYWxDf
xHk2Hca4PUzK5V5S7+Xl/G2emXqP0IVGq9/aC8OfFTqMvdH+aP9gMHo8GB3h
mgMu/SPwZSCCnjA4gT/6S1nO/6VdyADbtmHKpkpoB4uqXGbNkhHS/tH+Yqpk
79+AvcVz2uuqLGh3Zi9pp39be9Pv0TbjvX9x87Jk7P7k5Pj0q+M8Z64SbB83
AmYUfUcTEl1u22mSxNPJcLkemjhPDXGzJB2YjF6S48PdPZ1Fh3udJmU1NSeX
//k14+bv34Si/71tt7KkKk05q7fdtJvfiRObN04yk5QErqyYeYREhPBsNBrR
b5cnx8RKB6fD63i5iov4msgP9G6S2AyEgRCsv45Nna8v62a69iF9WhJs60Ua
ff/m/CRaxMXULOLrNKrSX5qsSqPEkxN1GU3SaEYDfbntGG5vb4cznoXhPiE0
2aNBkoEbVdhQO+LAwzMzSN/XxPlx2WCVwZmM6EAG46e7ziQriJPcezWMXiQv
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
qwCBAAA=

-->

</rfc>
