<?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.36 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-jackson-tls-cert-abridge-00" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="Abridged Certs">Abridged Compression for WebPKI Certificates</title>
    <seriesInfo name="Internet-Draft" value="draft-jackson-tls-cert-abridge-00"/>
    <author fullname="Dennis Jackson">
      <organization>Mozilla</organization>
      <address>
        <email>ietf@dennis-jackson.uk</email>
      </address>
    </author>
    <date year="2023" month="July" 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://dennisjackson.github.io/draft-jackson-tls-cert-abridge/draft-jackson-tls-cert-abridge.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-jackson-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/dennisjackson/draft-jackson-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"/>
        </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"/>
        </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/S96teb1omRbyk8adVPKsHP8fJtSmLQZ2bQUIv
DGJ5fTAa9UwzWWY8bb1e0RvnZ1df94pmOUmr570pDfu8l5SFSQvTmOdRXTVp
jxZw0IurNKaFXKZJU2X1+l7vtqyu51XZrOjqVRUXZlVWdfRdvE6rqH2qd5MW
DY0ZRZ9+NopkSfd+oKGzYh79Ba/g+jLOcrpO+/mPLK1nw7Ka43JcJQu6vKjr
lXm+t4encCm7SYf2sT1c2JtU5a1J9+j9Pbw3z+pFM6E3p2lRZEbBtfdx4OHF
HMdSe1MGAwxl3GFWfmKoT9weLuplTqCLm3pR0qlEA5o6imZNnsspn/Ks0f+R
9/kmbTUusl/jmg72efSi/DXL85jvpAI8AOQ/ZLl24mFz3esVZbWkt25wRlff
XQK/LGo+j15/ffL06ZNnvejHy6tT++dTfnB8IH8fHj7uRafHV2eX/PfBwcGz
Xi86Xq3y9OTqu3JucPaRor+H3ZHgAaFVkawjPAhkMzXh+GQt7/OLcTVPCeIW
4Ddxnk2HMW4Pk3K5l9R7eTl/m2em3iM8otHqt/bC8GeFDqN1tD/aPxiMHg9G
R7jmgEv/CHwZiKA1DE7gj/5SlvN/aRcywLZtmLKpEtrBoiqXWbNkTLV/tL+Y
Ktn7N6B18Zz2uioL2p3ZS9rp39be9Hu0zXjvX9y8LBm7Pzk5Pv3qOM+Z4wTb
x42AUUXf0YREsNt2miTxdDJcrocmzlNDnC5JByajl+T4cHdPZ9HhXqdJWU3N
yeV/fs24+fs3oeh/b9utLKlKU87qbTft5nfixOaNk8wkJYErK2YeIREhPBuN
RvTb5ckx8djB6fA6Xq7iIr4m8gO9myQ2A2EnBOuvY1Pn68u6ma59SJ+WBNt6
kUbfvzk/iRZxMTWL+DqNqvSXJqvSKPFkSF1GkzSa0UBfbjuG29vb4YxnYbhP
CE32aJBk4EYVNtSOOPDwzAzS9zWJBFw2WGVwJiM6kMH46a4zyQriJPdeDaMX
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
OQyTHIEAAA==

-->

</rfc>
