<?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-rfc2629 version 1.6.5 (Ruby 3.0.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cpbs-pseudorandom-ctls-01" category="exp" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.3 -->
  <front>
    <title abbrev="Pseudorandom cTLS">The Pseudorandom Extension for cTLS</title>
    <seriesInfo name="Internet-Draft" value="draft-cpbs-pseudorandom-ctls-01"/>
    <author initials="B." surname="Schwartz" fullname="Benjamin Schwartz">
      <organization>Google LLC</organization>
      <address>
        <email>bemasc@google.com</email>
      </address>
    </author>
    <author initials="C." surname="Patton" fullname="Christopher Patton">
      <organization>Cloudflare, Inc.</organization>
      <address>
        <email>cpatton@cloudflare.com</email>
      </address>
    </author>
    <date year="2022" month="April" day="11"/>
    <area>Security</area>
    <workgroup>TLS WG</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This draft describes a cTLS extension that allows each party to emit a purely pseudorandom bitstream.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/bemasc/pseudorandom-ctls"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The contents of a two-party protocol as perceived by a third party are called the "wire image".</t>
      <t>A Tweakable Strong Pseudorandom Permutation (TSPRP) is a variable-input-length block cipher that is parameterized by a secret "key" and a public "tweak".  Also known as a "super-pseudorandom permutation" or "wide block cipher".</t>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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>
    </section>
    <section anchor="introduction">
      <name>Introduction</name>
      <section anchor="background">
        <name>Background</name>
        <t>Compact TLS <xref target="cTLS"/> is a compact representation of TLS 1.3 (or later), intended for uses where compatibility with previous versions of TLS is not required.  It defines a pre-configuration object called a "template" that contains a profile of the capabilities and behaviors of a TLS server, which is known to both client and server before they initiate a connection.  The template allows both parties to omit information that is irrelevant or redundant, allowing a secure connection to be established while exchanging fewer bits on the wire.</t>
        <t>Every cTLS template potentially results in a distinct wire image, with important implications for user privacy and ossification risk.</t>
        <t>One interesting consequence of conventional wire formats (i.e. not pseudorandom) is the risk of protocol confusion attacks.  For example, in the NAT Slipstreaming attacks <xref target="SLIPSTREAM"/>, a web server causes a browser to send HTTP data that can be confused for another protocol (e.g. SIP) that is processed by a firewall.  Because firewalls are typically focused on attacks arriving from outside the network, malicious payloads sent from a trusted client can trick some firewalls into disabling their own protections.</t>
      </section>
      <section anchor="goal">
        <name>Goal</name>
        <t>The goal of this extension is to enable two endpoints to agree on a TLS-based protocol whose wire image is purely pseudorandom.</t>
        <section anchor="requirements">
          <name>Requirements</name>
          <ul spacing="normal">
            <li>Privacy: A third party without access to the template cannot tell whether two connections are using the same pseudorandom cTLS template, or two different pseudorandom cTLS templates.</li>
            <li>Ossification risk: Every byte sent on the underlying transport is pseudorandom to an observer who does not know the cTLS template.</li>
            <li>Efficiency: Zero size overhead and minimal CPU cost in the simplest case.  Support for servers with many cTLS templates, when appropriately constructed.</li>
            <li>Protocol confusion attack resistance: This attack assumes a malicious server or client that can coerce its peer into sending a ciphertext that could be misinterpreted as a different protocol by a third party.  This extension must enable each peer to ensure that its own output is unlikely to resemble any other protocol.</li>
          </ul>
        </section>
        <section anchor="non-requirements">
          <name>Non-requirements</name>
          <ul spacing="normal">
            <li>Efficient support for demultiplexing arbitrary cTLS templates.</li>
            <li>Addressing information leakage in the length and timing of transmissions.</li>
          </ul>
        </section>
        <section anchor="experimental-status">
          <name>Experimental status</name>
          <t>This specification has experimental status (INTENDED).  The goals of this experiment include:</t>
          <ul spacing="normal">
            <li>To assess the internet's tolerance of unrecognized protocols.</li>
            <li>To gain experience with TSPRPs in a protocol context.</li>
            <li>To exercise cTLS's extensibility features.</li>
            <li>To support practical and theoretical research into protocol distinguishability.</li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="the-pseudorandom-extension">
      <name>The Pseudorandom Extension</name>
      <section anchor="form">
        <name>Form</name>
        <t>A cTLS template is structured as a JSON object.  This extension is represented by an additional key, "pseudorandom", whose value is an object with at least two string-valued keys: "tsprp" (a name from the TSPRP registry (see <xref target="tsprp-registry"/>)) and "key" (a base64-encoded shared secret whose length is specified by the TSPRP).  For example, a cTLS template might contain an entry like:</t>
        <sourcecode type="json"><![CDATA[
"pseudorandom": {
  "tsprp": "exp-hctr2",
  "key": "nx2kEm50FCE...TyOhGOw477EHS"
},
]]></sourcecode>
      </section>
      <section anchor="use">
        <name>Use</name>
        <t>The cTLS Record Layer protocol is comprised of AEAD-encrypted ciphertext fragments interleaved with plaintext fragments.  Each record is prefixed by a plaintext header, and some records, like those containing the ClientHello and ServerHello, are not encrypted at all.  The ciphertext fragments are pseudorandom already, so this extension specifies a transformation of the plaintext fragments that ensures that all bits written to the wire are pseudorandom.</t>
        <t>Conceptually, the extension sits between the cTLS Record Layer and the underlying transport (e.g. TCP, UDP).  The transformation is based on a TSPRP with the following syntax:</t>
        <artwork><![CDATA[
TSPRP-Encipher(key, tweak, message) -> ciphertext
TSPRP-Decipher(key, tweak, ciphertext) -> message
]]></artwork>
        <t>The TSPRP specifies the length (in bytes) of the key.  The tweak is a byte string of any length.  The TSPRP uses the key and tweak to encipher the input message, which also may have any length.  The output ciphertext has the same length as the input message.</t>
        <t>Pseudorandom cTLS uses the TSPRP to encipher all plaintext handshake records, including the record headers.  As long as there is sufficient entropy in the <tt>key_share</tt> extension or <tt>random</tt> field of the ClientHello (resp. ServerHello) the TSPRP output will be pseudorandom.</t>
        <ul empty="true">
          <li>
            <t>TODO: Check that the assumptions hold for HelloRetryRequest.  As long as no handshake messages are repeated verbatim, it should be fine, but we need to check whether an active attacker can trigger a replay.</t>
          </li>
        </ul>
        <t>Pseudorandom cTLS also enciphers every record header.  In addition to the header, 16 bytes of the AEAD ciphertext itself is enciphered to ensure the input has enough entropy.  Any AEAD algorithm whose ciphertext overhead is less than 16 bytes is not compatible with this specification.</t>
        <t>By default, Pseudorandom cTLS assumes that the TLS ciphertext is using an AEAD algorithm whose output is purely pseudorandom, such as AES-GCM and ChaCha20-Poly1305.  If the ciphertext might not be pseudorandom (e.g. when handling hostile plaintext), the ciphertext can be "reciphered" to ensure pseudorandomness (see <xref target="confusion-defense"/>).</t>
        <section anchor="key-derivation">
          <name>Key Derivation</name>
          <t>To provide clear separation between data sent by the client and the server, the client and server encipher data using different keys, derived from the profile key as follows:</t>
          <artwork><![CDATA[
client_key = TSPRP-Encipher(key, "derive", zeros)
server_key = TSPRP-Encipher(key, "derive", ones)
]]></artwork>
          <t>where <tt>zeros</tt> and <tt>ones</tt> are messages the same size as <tt>key</tt>, with all bits set to zero and one respectively.  This procedure guarantees that <tt>client_key</tt> and <tt>server_key</tt> are distinct and would appear unrelated to any party who does not know the profile key.</t>
        </section>
        <section anchor="with-streaming-transports">
          <name>With Streaming Transports</name>
          <t>When used over a streaming transport, Pseudorandom cTLS requires that headers have predictable lengths.  Therefore, if a Connection ID is negotiated, it MUST always be included.  Normally, when TLS runs on top of a streaming transport, Connection IDs are not enabled, so this is not expected to be a significant limitation.</t>
          <t>The transformation performed by the sender uses <tt>TSPRP-Encipher()</tt> and <tt>client_key</tt> or <tt>server_key</tt>.  The sender first constructs any CTLSPlaintext records as follows:</t>
          <ol spacing="normal" type="1"><li>Set <tt>tweak = "hs"</tt>.</li>
            <li>Replace the message with <tt>TSPRP-Encipher(client/server_key, tweak, message)</tt>.</li>
            <li>Fragment the message if necessary, ensuring each fragment is at least 16 bytes long.</li>
            <li>Change the <tt>content_type</tt> of the final fragment to <tt>ctls_handshake_end(TBD)</tt> (see <xref target="content-type"/>).</li>
          </ol>
          <t>Note: This procedure requires that handshake messages are at least 16 bytes long.  This condition is automatically true in most configurations.</t>
          <t>The sender then constructs cTLS records as usual, but applies the following transformation before sending each record:</t>
          <ol spacing="normal" type="1"><li>Let <tt>prefix</tt> be the first 19 bytes of the record.</li>
            <li>If the record is CTLSPlaintext, set <tt>tweak = ""</tt>.</li>
            <li>If the record is CTLSCiphertext, let <tt>tweak</tt> be the 64-bit Sequence Number in network byte order.</li>
            <li>Replace <tt>prefix</tt> with <tt>TSPRP-Encipher(client/server_key, tweak, prefix)</tt>.</li>
          </ol>
          <ul empty="true">
            <li>
              <t>OPEN ISSUE: How should we actually form the tweaks?  Should we add some kind of chaining, within a stream or binding ServerHello to ClientHello?</t>
            </li>
          </ul>
        </section>
        <section anchor="with-datagram-transports">
          <name>With Datagram Transports</name>
          <t>Pseudorandom cTLS applies to datagram applications of cTLS without restriction.  If there are multiple records in the datagram, encipherment starts with the last record header and proceeds back-to-front.</t>
          <t>Given the inputs:</t>
          <ul spacing="normal">
            <li>
              <tt>payload</tt>, an entire datagram that may contain multiple cTLS records.</li>
            <li>
              <tt>TSPRP-Decipher()</tt> and <tt>client_key</tt> or <tt>server_key</tt></li>
            <li>
              <tt>connection_id</tt>, the ID expected on incoming CTLSCiphertext records</li>
          </ul>
          <t>The recipient deciphers the datagram as follows:</t>
          <ol spacing="normal" type="1"><li>Let <tt>max_hdr_length = max(15, len(connection_id) + 5)</tt>.  This represents the most data that might be needed to read the CTLSPlaintext and DTLS Handshake headers (<xref section="5.2" sectionFormat="of" target="DTLS13"/>) or the CTLSCiphertext header.</li>
            <li>Let <tt>index = 0</tt>.</li>
            <li>
              <t>While <tt>index != len(payload)</tt>:
              </t>
              <ol spacing="normal" type="1"><li>Let <tt>prefix = payload[index : min(len(payload), index + max_hdr_length + 16)]</tt></li>
                <li>Let <tt>tweak = "datagram" + len(payload) + index</tt>.</li>
                <li>Replace <tt>prefix</tt> with <tt>TSPRP-Decipher(client/server_key, tweak, prefix)</tt>.</li>
                <li>Set <tt>index</tt> to the end of this record.</li>
              </ol>
            </li>
          </ol>
          <t>CTLSPlaintext records are subject to an additional decipherment step:</t>
          <ol spacing="normal" type="1"><li>Perform fragment reassembly to recover the complete <tt>Handshake.body</tt> (<xref section="5.5" sectionFormat="of" target="DTLS13"/>).</li>
            <li>Let <tt>tweak</tt> be <tt>"datagram hs" + Handshake.msg_type</tt>.</li>
            <li>Replace <tt>Handshake.body</tt> with <tt>TSPRP-Decipher(client/server_key, tweak, Handshake.body)</tt>.</li>
          </ol>
        </section>
      </section>
      <section anchor="confusion-defense">
        <name>Protocol confusion defense</name>
        <t>The procedure described in <xref target="use"/> is sufficient to render the bitstream pseudorandom to a third party when both peers are operating correctly.  However, if a malicious client or server can coerce its peer into sending particular plaintext (as is common in web browsers), it can choose plaintext with knowledge of the encryption keys, in order to produce ciphertext that has visible structure to a third party.  This technique can be used to mount protocol confusion attacks <xref target="SLIPSTREAM"/>.</t>
        <t>This attack is particularly straightforward when using the AES-GCM or ChaCha20-Poly1305 cipher suites, as much of the ciphertext is encrypted by XOR with a stream cipher.  A malicious peer in this threat model can choose desired ciphertext, XOR it with the keystream to produce the malicious plaintext, and rely on the other peer's encryption stage to reverse the encryption and reveal the desired ciphertext.</t>
        <t>As a defense against this attack, the Pseudorandom cTLS extension supports two optional keys named "client-recipher" and "server-recipher".  Each key's value is an integer <tt>E</tt> between 0 and 16 (inclusive) indicating how much entropy to add.  When the "client-recipher" key is present, the client MUST prepend <tt>E</tt> fresh random bytes to <tt>CTLSCiphertext.encrypted_record</tt> before encipherment.  The server MUST apply a similar transformation if the "server-recipher" key is present.</t>
        <t>This transformation does not alter the <tt>Length</tt> field in the Unified Header, so it does not reduce the maximum plaintext record size.  However, it does increase the output message size, which may impact MTU calculations in DTLS.</t>
        <t>The sender MUST compute <tt>R</tt> using a cryptographically secure pseudo-random number generator (CSPRNG) whose seed contains at least 16 bytes of entropy that is not known to the peer.</t>
        <t>In general, a malicious peer can still produce desired ciphertext with probability <tt>2^-8E</tt> for each attempt by guessing a value of <tt>R</tt>.  Accordingly, values of <tt>E</tt> less than 8 are NOT RECOMMENDED for defense against confusion attacks.</t>
      </section>
    </section>
    <section anchor="plaintext-alerts">
      <name>Plaintext Alerts</name>
      <t>Representing plaintext alerts (i.e. CTLSPlaintext messages with <tt>content_type = alert(21)</tt>) requires additional steps, because Alert fragments have little entropy.</t>
      <t>A standard TLS Alert fragment is always 2 bytes long.  In Pseudorandom cTLS, senders MUST append at least 16 random bytes to any plaintext Alert fragment and increase <tt>CTLSPlaintext.length</tt> accordingly.  Enciphering and deciphering then proceed identically to other CTLSPlaintext messages.  The recipient MUST remove these bytes before passing the CTLSPlaintext to the cTLS implementation.</t>
      <ul empty="true">
        <li>
          <t>QUESTION: Are there client-issued Alerts in response to malformed ServerHello?</t>
        </li>
      </ul>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <section anchor="multiple-profiles-and-key-rotation">
        <name>Multiple profiles and key rotation</name>
        <t>Pseudorandom cTLS supports multiple profiles on the same server port.  If all profiles share the same Pseudorandom cTLS configuration (and the same length of <tt>connection_id</tt> if applicable), the server simply deciphers the incoming data before reading the <tt>profile_id</tt> or <tt>connection_id</tt>.</t>
        <t>If multiple Pseudorandom cTLS configurations are in use, the server can use trial deciphering to determine which profile applies to each new connection.  A trial is confirmed as correct if the deciphered <tt>ClientHello.profile_id</tt> matches an expected value.  To avoid false matches, server operators SHOULD choose a <tt>profile_id</tt> whose length is at least 8 bytes.</t>
        <t>Pseudorandom cTLS key rotation can be represented as a transition from one profile to another.  If the only difference between two profiles is the Pseudorandom cTLS configuration, the server MAY use the same <tt>profile_id</tt> for both profiles, relying on trial deciphering to identify which version is in use.  Trial deciphering is also sufficient to determine whether the client is using Pseudorandom cTLS, so the "pseudorandom" key MAY appear in the template's "optional" section.</t>
        <t>Pseudorandom cTLS does not support demultiplexing distinct configurations by <tt>connection_id</tt>.  Such use would require both the client and server to perform trial deciphering on every datagram.  Instead, clients that implement Pseudorandom cTLS MUST use a distinct transport session (e.g. UDP 5-tuple) for each cTLS profile.</t>
      </section>
      <section anchor="computational-cost">
        <name>Computational cost</name>
        <t>Pseudorandom cTLS adds a constant, symmetric computational cost to sending and receiving every record, roughly similar to the cost of encrypting a very small record.  The cryptographic cost of delivering small records will therefore be increased by a constant factor, and the computational cost of delivering large records will be almost unchanged.</t>
        <t>The optional defense against ciphertext confusion attacks further increases the overall computational cost, generally at least doubling the cost of delivering large records.  It also adds up to 16 bytes of overhead to each encrypted record.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Pseudorandom cTLS operates as a layer between cTLS and its transport, so the security properties of cTLS are largely preserved.  However, there are some small differences.</t>
      <t>In datagram mode, the <tt>profile_id</tt> and <tt>connection_id</tt> fields allow a server to reject almost all packets from a sender who does not know the template (e.g. a DDoS attacker), with minimal CPU cost.  Pseudorandom cTLS requires the server to apply a decryption operation to every incoming datagram before establishing whether it might be valid.  This operation is O(1) and uses only symmetric cryptography, so the impact is expected to be bearable in most deployments.</t>
      <t>cTLS templates are presumed to be published by the server operator.  In order to defend against ciphertext confusion attacks (<xref target="confusion-defense"/>), the client MUST refuse to connect unless the server provides a cTLS template with a sufficiently large "client-recipher" value.</t>
      <ul empty="true">
        <li>
          <t>TODO: More precise security properties and security proof.  The goal we're after hasn't been widely considered in the literature so far, at least as far as we can tell.  The basic idea is that the "real" protocol (Pseudorandom cTLS) should be indistinguishable from some "target" protocol that the network is known tolerate.  The assumption is that middleboxes would not attempt to parse packets whose contents are pseudorandom.  (The same idea underlies QUIC's wire encoding format <xref target="RFC9000"/>.)   A starting point might be the formal notion of "Observational Equivalence" (https://infsec.ethz.ch/content/dam/ethz/special-interest/infk/inst-infsec/information-security-group-dam/research/publications/pub2015/ASPObsEq.pdf).</t>
        </li>
      </ul>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Pseudorandom cTLS is intended to improve privacy in scenarios where the adversary can observe traffic to various servers but lacks access to their cTLS templates, by preventing the adversary from determining which profiles are in use by which clients and servers.  If instead the adversary does have access to some cTLS templates, and these templates do not have distinctive <tt>profile_id</tt> values, Pseudorandom cTLS can reduce privacy, by enabling strong confirmation that a connection is using a specific profile.</t>
      <t>When Pseudorandom cTLS is enabled, the adversary can still observe the length and timing of messages, so templates that differ in these can still be distinguished.  Implementations MAY use TLS padding to reduce the observable patterns.</t>
      <t>The adversary could also send random data to the server (a "probing attack") in order to learn the fraction of messages of each length that produce valid ClientHellos.  This "probability fingerprint" could allow discrimination between profiles.  Server operators that wish to defend against probing attacks SHOULD choose a sufficiently long <tt>profile_id</tt> that invalid ClientHellos are always rejected without eliciting a response.  A 15-byte <tt>profile_id</tt> provides 128-bit security.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="tsprp-registry">
        <name>TSPRP Registry</name>
        <t>This specification anticipates the existence of an IANA registry of Tweakable Strong Pseudorandom Permutations (TSPRPs).  Until such a registry exists, the value "exp-hctr2" is reserved to indicate the HCTR2 TSPRP <xref target="HCTR2"/>.</t>
      </section>
      <section anchor="ctls-template-key-registry">
        <name>cTLS Template Key registry</name>
        <t>This document requests that IANA add the following value to the "cTLS Template Keys" registry:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Key</th>
              <th align="left">JSON Type</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">pseudorandom</td>
              <td align="left">object</td>
              <td align="left">(This document)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="content-type">
        <name>TLS ContentType Registry</name>
        <t>IANA is requested to add the following codepoint to the TLS Content Types Registry</t>
        <t>This document requests that a code point be allocated from the "TLS ContentType"
registry.  The row to be added in the registry has the following form:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">DTLS-OK</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD</td>
              <td align="left">ctls_handshake_end</td>
              <td align="left">Y</td>
              <td align="left">RFCXXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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="cTLS">
          <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">
              <organization>Arm Limited</organization>
            </author>
            <date day="7" month="March" year="2022"/>
            <abstract>
              <t>   This document specifies a "compact" version of TLS 1.3.  It is
   isomorphic to TLS 1.3 but saves space by trimming obsolete material,
   tighter encoding, a template-based specialization technique, and
   alternative cryptographic techniques. cTLS is not directly
   interoperable with TLS 1.3, but it should eventually be possible for
   a cTLS/TLS 1.3 server to exist and successfully interoperate.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-ctls-05"/>
        </reference>
        <reference anchor="DTLS13">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>RTFM, Inc.</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Nagendra Modadugu" initials="N." surname="Modadugu">
              <organization>Google, Inc.</organization>
            </author>
            <date day="30" month="April" year="2021"/>
            <abstract>
              <t>   This document specifies Version 1.3 of the Datagram Transport Layer
   Security (DTLS) protocol.  DTLS 1.3 allows client/server applications
   to communicate over the Internet in a way that is designed to prevent
   eavesdropping, tampering, and message forgery.

   The DTLS 1.3 protocol is intentionally based on the Transport Layer
   Security (TLS) 1.3 protocol and provides equivalent security
   guarantees with the exception of order protection/non-replayability.
   Datagram semantics of the underlying transport are preserved by the
   DTLS protocol.

   This document obsoletes RFC 6347.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-dtls13-43"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="SLIPSTREAM" target="https://samy.pl/slipstream/">
          <front>
            <title>NAT Slipstreaming v2.0</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="HCTR2" target="https://eprint.iacr.org/2021/1441/20211027:085150">
          <front>
            <title>Length-preserving encryption with HCTR2</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAJh4U2IAA5Vc63bbxrX+z6eYMj8itiR1sd0kXCttZUmx1dqWaskn7enq
MUFgSKIGARYDSmYc91nOs5wnO9++zGBAMk3q1dVIJDCXffn2t/fs0Wg06jV5
U9iJ6d8vrbl1dpNVdVJm1cpcfWxs6fKqNPOqNun9q7t+L5nNavuApztPyndZ
lZbJCkNldTJvRul65kbr6LFR2hRudHLaS5PGLqp6OzH247rXy9f1xDT1xjVn
JyffnJz1ktomE3Nn002dN9veY1V/WNTVZj0xmMd8/6L3wW7xYTYx12Vj69I2
o0uastdzDWZ6nxRViWVsreut84n5W1OlQ+Oquqnt3OGn7Yp++Huvl2yaZVVP
embUM/iXl25ino/NXbp8TOrmB/5QtvTclv9IVnnZ/a6qF0mZ/5A0ENLEvKiq
RWHNq1cX/KVdJXkxMTP816V/WPCX47RadWa7GJvbpGmqMprrYlnnrqnWS1vH
X3YnuyiqTTYvIKohpJCO4ynTNb/1hzQ8w/P2yqpe4fUHix2bt99dnJ2efjOB
/Mt5/MXdq+vbu/u3V+evJzxok9QL20zMsmnWbnJ87JLVdrwujl2Rrx1EmqyO
5Tmxozfn9+YufJWXC/NwNj7BEy8v7t+eHR7Sruu8bMZ5ktZjbPP47OTs9Pj0
6dNT/un05OyrycnXz06fncQTvbLlolmO1rV1tn6giWyZ1ts1ycc85s1SZuz1
eqPRyCQzLChJYSP3y9yJiZrMurTOZ9aZhG0Y9uhNvlkmjUmKonp0xibp0qyh
9a1pKgg5xzdmvaltsTWxgZtZ3si2xzLpKs+ywvZ6X5iLqnywJS0Nc5WZubTz
vMz5d1qRNWkFUy4bZ6o5Bm8eq5FMuK4rmG9VmMSZta1TCy1lZralh5Z5nem6
oGOTYrn4rsFo/cccH+SrZGH7WMu5uX+0yYdkBvO8a+oKsur4762tV5uGLcsc
3d/dvr0dmJyE8pDUOb01ysv1phkVLHIzK6r0g0lztlAWFB7GOmC9cMf8B79A
Z9PaNqYPd+3zrklqsyJPTb+h9fTHxpwXrjIfyuqxpB0mpu822GYHN2jffnl9
uAHtLrOdVdAmSYqYyRAyONN//e7uvj+U/5o3N/zz26s/v7t+e3VJP9+9PH/1
KvzQ0yfuXt68e3XZ/tS+eXHz+vXVm0t5GZ+azke9/uvzv+Ib2mX/5vb++ubN
+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
OdOz2bd9LsL2qf0EZL/3/4XVhvxfSwAA

-->

</rfc>
