<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.3 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-irtf-cfrg-aead-limits-00" category="info" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.42.0 -->
  <front>
    <title abbrev="AEAD Limits">Usage Limits on AEAD Algorithms</title>
    <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-aead-limits-00"/>
    <author initials="F." surname="Günther" fullname="Felix Günther">
      <organization>ETH Zurich</organization>
      <address>
        <email>mail@felixguenther.info</email>
      </address>
    </author>
    <author initials="M." surname="Thomson" fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <author initials="C.A." surname="Wood" fullname="Christopher A. Wood">
      <organization>Cloudflare</organization>
      <address>
        <email>caw@heapingbits.net</email>
      </address>
    </author>
    <date year="2020" month="August" day="14"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>An Authenticated Encryption with Associated Data (AEAD) algorithm provides
confidentiality and integrity.  Excessive use of the same key can give an
attacker advantages in breaking these properties.  This document provides simple
guidance for users of common AEAD functions about how to limit the use of keys
in order to bound the advantage given to an attacker.  It considers limits in
both single- and multi-user settings.</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/chris-wood/draft-wood-cfrg-aead-limits">https://github.com/chris-wood/draft-wood-cfrg-aead-limits</eref>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>An Authenticated Encryption with Associated Data (AEAD) algorithm
provides confidentiality and integrity. <xref target="RFC5116" format="default"/> specifies an AEAD
as a function with four inputs - secret key, nonce, plaintext,
and optional associated data - that produces ciphertext output and error code
indicating success or failure. The ciphertext is typically composed of the encrypted
plaintext bytes and an authentication tag.</t>
      <t>The generic AEAD interface does not describe usage limits.  Each AEAD algorithm
does describe limits on its inputs, but these are formulated as strict
functional limits, such as the maximum length of inputs, which are determined by
the properties of the underlying AEAD composition.  Degradation of the security
of the AEAD as a single key is used multiple times is not given a thorough
treatment.</t>
      <t>These limits might also be influenced by the number of "users" of
a given key. In the traditional setting, there is one key shared between a two
parties. Any limits on the maximum length of inputs or encryption operations
apply to that single key. The attacker's goal is to break security
(confidentiality or integrity) of that specific key. However, in practice, there
are often many users with independent keys. In this "multi-user" setting, the
attacker is assumed to have done some offline work to help break security of
single key (or user), where the attacker cannot choose which key is attacked.
As a result, AEAD algorithm limits may depend on offline work and the number
of users. However, given that a multi-user attacker does not target any specific
user, acceptable advantages may differ from that of the single-user setting.</t>
      <t>The number of times a single pair of key and nonce can be used might also be
relevant to security.  For some algorithms, such as AEAD_AES_128_GCM or
AEAD_AES_256_GCM, this limit is 1 and using the same pair of key and nonce has
serious consequences for both confidentiality and integrity; see
<xref target="NonceDisrespecting" format="default"/>.  Nonce-reuse resistant algorithms like
AEAD_AES_128_GCM_SIV can tolerate a limited amount of nonce reuse.</t>
      <t>It is good practice to have limits on how many times the same key (or pair of
key and nonce) are used.  Setting a limit based on some measurable property of
the usage, such as number of protected messages or amount of data transferred,
ensures that it is easy to apply limits.  This might require the application of
simplifying assumptions.  For example, TLS 1.3 specifies limits on the number of
records that can be protected, using the simplifying assumption that records are
the same size; see Section 5.5 of <xref target="TLS" format="default"/>.</t>
      <t>Currently, AEAD limits and usage requirements are scattered among peer-reviewed
papers, standards documents, and other RFCs. Determining the correct limits for
a given setting is challenging as papers do not use consistent labels or
conventions, and rarely apply any simplifications that might aid in reaching a
simple limit.</t>
      <t>The intent of this document is to collate all relevant information about the
proper usage and limits of AEAD algorithms in one place.  This may serve as a
standard reference when considering which AEAD algorithm to use, and how to use
it.</t>
    </section>
    <section anchor="requirements-notation" numbered="true" toc="default">
      <name>Requirements Notation</name>
      <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&nbsp;14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they
appear in all capitals, as shown here.</t>
    </section>
    <section anchor="notation" numbered="true" toc="default">
      <name>Notation</name>
      <t>This document defines limitations in part using the quantities below.</t>
      <table align="center">
        <thead>
          <tr>
            <th align="right">Symbol</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">n</td>
            <td align="left">Number of bits per block</td>
          </tr>
          <tr>
            <td align="right">k</td>
            <td align="left">Size of the AEAD key (in bits)</td>
          </tr>
          <tr>
            <td align="right">t</td>
            <td align="left">Size of the authentication tag (in bits)</td>
          </tr>
          <tr>
            <td align="right">l</td>
            <td align="left">Length of each message (in blocks)</td>
          </tr>
          <tr>
            <td align="right">s</td>
            <td align="left">Total plaintext length in all messages (in blocks)</td>
          </tr>
          <tr>
            <td align="right">q</td>
            <td align="left">Number of user encryption attempts</td>
          </tr>
          <tr>
            <td align="right">v</td>
            <td align="left">Number of attacker forgery attempts</td>
          </tr>
          <tr>
            <td align="right">p</td>
            <td align="left">Adversary attack probability</td>
          </tr>
          <tr>
            <td align="right">o</td>
            <td align="left">Offline adversary work (in number of encryption and decryption queries; multi-user setting only)</td>
          </tr>
          <tr>
            <td align="right">u</td>
            <td align="left">Number of users or keys (multi-user setting only)</td>
          </tr>
        </tbody>
      </table>
      <t>For each AEAD algorithm, we define the confidentiality and integrity advantage
roughly as the advantage an attacker has in breaking the corresponding security
property for the algorithm. Specifically:</t>
      <ul spacing="normal">
        <li>Confidentiality advantage (CA): The advantage of an attacker succeeding in breaking
the confidentiality properties of the AEAD. In this document, the definition of
confidentiality advantage is the increase in the probability that an attacker is
able to successfully distinguish an AEAD ciphertext from the output of a random
function.</li>
        <li>Integrity advantage (IA): The probability of an attacker succeeding in breaking
the integrity properties of the AEAD. In this document, the definition of
integrity advantage is the probability that an attacker is able to forge a
ciphertext that will be accepted as valid.</li>
      </ul>
      <t>Each application requires a different application of limits in order to keep CA
and IA sufficiently small.  For instance, TLS aims to keep CA below 2^-60 and IA
below 2^-57. See <xref target="TLS" format="default"/>, Section 5.5.</t>
    </section>
    <section anchor="calculating-limits" numbered="true" toc="default">
      <name>Calculating Limits</name>
      <t>Once an upper bound on CA and IA are determined, this document
defines a process for determining two overall limits:</t>
      <ul spacing="normal">
        <li>Confidentiality limit (CL): The number of bytes of plaintext and maybe
authenticated additional data (AAD) an application can encrypt before giving
the adversary a non-negligible CA.</li>
        <li>Integrity limit (IL): The number of bytes of ciphertext and maybe authenticated
additional data (AAD) an application can process, either successfully or not,
before giving the adversary a non-negligible IA.</li>
      </ul>
      <t>For an AEAD based on a block function, it is common for these limits to be
expressed instead in terms of the number of blocks rather than bytes.
Furthermore, it might be more appropriate to track the number of messages rather
than track bytes.  Therefore, the guidance is usually based on the total number
of blocks processed (s).  To aid in calculating limits for message-based
protocols, a formulation of limits that includes a maximum message size (l) is
included.</t>
      <t>All limits are based on the total number of messages, either the number of
protected messages (q) or the number of forgery attempts (v); which correspond
to CL and IL respectively.</t>
      <t>Limits are then derived from those bounds using a target attacker probability.
For example, given a confidentiality advantage of <tt>v * (8l / 2^106)</tt> and attacker
success probability of <tt>p</tt>, the algorithm remains secure, i.e., the adversary's
advantage does not exceed the probability of success, provided that
<tt>v &lt;= (p * 2^106) / 8l</tt>. In turn, this implies that <tt>v &lt;= (p * 2^106) / 8l</tt>
is the corresponding limit.</t>
    </section>
    <section anchor="limits" numbered="true" toc="default">
      <name>Single-User AEAD Limits</name>
      <t>This section summarizes the confidentiality and integrity bounds and limits for modern AEAD algorithms
used in IETF protocols, including: AEAD_AES_128_GCM <xref target="RFC5116" format="default"/>, AEAD_AES_256_GCM <xref target="RFC5116" format="default"/>,
AEAD_AES_128_CCM <xref target="RFC5116" format="default"/>, AEAD_CHACHA20_POLY1305 <xref target="RFC8439" format="default"/>, AEAD_AES_128_CCM_8 <xref target="RFC6655" format="default"/>.</t>
      <t>The CL and IL values bound the total number of encryption and forgery queries (q and v).
Alongside each value, we also specify these bounds.</t>
      <section anchor="aeadaes128gcm-and-aeadaes256gcm" numbered="true" toc="default">
        <name>AEAD_AES_128_GCM and AEAD_AES_256_GCM</name>
        <t>The CL and IL values for AES-GCM are derived in <xref target="AEBounds" format="default"/> and summarized below.
For this AEAD, n = 128 and t = 128 <xref target="GCM" format="default"/>. In this example, the length s is the sum
of AAD and plaintext, as described in <xref target="GCMProofs" format="default"/>.</t>
        <section anchor="confidentiality-limit" numbered="true" toc="default">
          <name>Confidentiality Limit</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
CA <= ((s + q + 1)^2) / 2^129
]]></artwork>
          <t>This implies the following usage limit:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
q + s <= p^(1/2) * 2^(129/2) - 1
]]></artwork>
          <t>Which, for a message-based protocol with <tt>s &lt;= q * l</tt>, if we assume that every
packet is size <tt>l</tt>, produces the limit:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
q <= (p^(1/2) * 2^(129/2) - 1) / (l + 1)
]]></artwork>
        </section>
        <section anchor="integrity-limit" numbered="true" toc="default">
          <name>Integrity Limit</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
IA <= 2 * (v * (l + 1)) / 2^128
]]></artwork>
          <t>This implies the following limit:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
v <= (p * 2^127) / (l + 1)
]]></artwork>
        </section>
      </section>
      <section anchor="aeadchacha20poly1305" numbered="true" toc="default">
        <name>AEAD_CHACHA20_POLY1305</name>
        <t>The only known analysis for AEAD_CHACHA20_POLY1305 <xref target="ChaCha20Poly1305Bounds" format="default"/>
combines the confidentiality and integrity limits into a single expression,
covered below:</t>
        <!-- I've got to say that this is a pretty unsatisfactory situation. -->

<artwork name="" type="" align="left" alt=""><![CDATA[
CA <= v * ((8 * l) / 2^106)
IA <= v * ((8 * l) / 2^106)
]]></artwork>
        <t>This advantage is a tight reduction based on the underlying Poly1305 PRF <xref target="Poly1305" format="default"/>.
It implies the following limit:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
v <= (p * 2^103) / l
]]></artwork>
      </section>
      <section anchor="aeadaes128ccm" numbered="true" toc="default">
        <name>AEAD_AES_128_CCM</name>
        <t>The CL and IL values for AEAD_AES_128_CCM are derived from <xref target="CCM-ANALYSIS" format="default"/>
and specified in the QUIC-TLS mapping specification <xref target="I-D.ietf-quic-tls" format="default"/>. This analysis uses the total
number of underlying block cipher operations to derive its bound. For CCM, this number is the sum of:
the length of the associated data in blocks, the length of the ciphertext in blocks, the length of
the plaintext in blocks, plus 1.</t>
        <t>In the following limits, this is simplified to a value of twice the length of the packet in blocks,
i.e., 2l represents the effective length, in number of block cipher operations, of a message with
l blocks. This simplification is based on the observation that common applications of this AEAD carry
only a small amount of associated data compared to ciphertext. For example, QUIC has 1 to 3 blocks of AAD.</t>
        <t>For this AEAD, n = 128 and t = 128.</t>
        <section anchor="confidentiality-limit-1" numbered="true" toc="default">
          <name>Confidentiality Limit</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
CA <= (2l * q)^2 / 2^n
   <= (2l * q)^2 / 2^128
]]></artwork>
          <t>This implies the following limit:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
q <= sqrt((p * 2^126) / l^2)
]]></artwork>
        </section>
        <section anchor="integrity-limit-1" numbered="true" toc="default">
          <name>Integrity Limit</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
IA <= v / 2^t + (2l * (v + q))^2 / 2^n
   <= v / 2^128 + (2l * (v + q))^2 / 2^128
]]></artwork>
          <t>This implies the following limit:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
v + (2l * (v + q))^2 <= p * 2^128
]]></artwork>
          <t>In a setting where <tt>v</tt> or <tt>q</tt> is sufficiently large, <tt>v</tt> is negligible compared to
<tt>(2l * (v + q))^2</tt>, so this this can be simplified to:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
v + q <= p^(1/2) * 2^63 / l
]]></artwork>
        </section>
      </section>
      <section anchor="aeadaes128ccm8" numbered="true" toc="default">
        <name>AEAD_AES_128_CCM_8</name>
        <t>The analysis in <xref target="CCM-ANALYSIS" format="default"/> also applies to this AEAD, but the reduced tag
length of 64 bits changes the integrity limit calculation considerably.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
IA <= v / 2^t + (2l * (v + q))^2 / 2^n
   <= v / 2^64 + (2l * (v + q))^2 / 2^128
]]></artwork>
        <t>This results in reducing the limit on <tt>v</tt> by a factor of 2^64.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
v * 2^64 + (2l * (v + q))^2 <= p * 2^128
]]></artwork>
      </section>
    </section>
    <section anchor="mu-limits" numbered="true" toc="default">
      <name>Multi-User AEAD Limits</name>
      <t>In the public-key, multi-user setting, <xref target="MUSecurity" format="default"/> proves that the success
probability in attacking one of many independently users is bounded by the
success probability of attacking a single user multiplied by the number of users
present. Each user is assumed to have an independent and identically distributed
key, though some may share nonces with some very small probability. Absent
concrete multi-user bounds, this means the attacker advantage in the multi-user
setting is the product of the single-user advantage and the number of users.</t>
      <t>This section summarizes the confidentiality and integrity bounds and limits for
the same algorithms as in <xref target="limits" format="default"/>, except in the multi-user setting. The CL
and IL values bound the total number of encryption and forgery queries (q and v).
Alongside each value, we also specify these bounds.</t>
      <section anchor="aeadaes128gcm-and-aeadaes256gcm-1" numbered="true" toc="default">
        <name>AEAD_AES_128_GCM and AEAD_AES_256_GCM</name>
        <t>Concrete multi-user bounds for AEAD_AES_128_GCM and AEAD_AES_256_GCM exist
due to <xref target="GCM-MU" format="default"/>. AES-GCM without nonce
randomization is also discussed in <xref target="GCM-MU" format="default"/>, though this section does not
include those results as they do not apply to protocols such as TLS 1.3 <xref target="RFC8446" format="default"/>.</t>
        <section anchor="confidentiality-limit-2" numbered="true" toc="default">
          <name>Confidentiality Limit</name>
          <!-- From (1) in {{GCM-MU}}, assuming n=2^7, \sigma = (v+q)*l, B = \sigma/u, dropping the last term
  (with denominator 2^(k+n), and dropping the first term since the adversary's
  offline work dominates -->
<artwork name="" type="" align="left" alt=""><![CDATA[
CA <= ((v + q) * l)^2 / (u * 2^128)
]]></artwork>
          <t>This implies the following limit:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
v + q <= sqrt(p * u * 2^128) / l
]]></artwork>
        </section>
        <section anchor="integrity-limit-2" numbered="true" toc="default">
          <name>Integrity Limit</name>
          <!-- From Bad_8 advantage contribution to the inequality from 4.3 in {{GCM-MU}},
  assuming \sigma = (v+e)*l -->
<artwork name="" type="" align="left" alt=""><![CDATA[
CA <= (1 / 2^1024) + ((2 * (v + q)) / 2^256)
        + ((2 * o * (v + q)) / 2^(k + 128))
        + (128 * ((v + q) + ((v + q) * l)) / 2^k)
]]></artwork>
          <t>When k = 128, the last term in this inequality dominates. Thus, we can simplify
this to:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
CA <= (128 * ((v + q) + ((v + q) * l)) / 2^128)
]]></artwork>
          <t>This implies the following limit:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
v + q <= (p * 2^128) / (128 * (l + 1))
]]></artwork>
          <t>When k = 256, the second and fourth terms in the CA inequality dominate. Thus, we
can simplify this to:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
CA <= ((2 * (v + q)) / 2^256)
        + (128 * ((v + q) + ((v + q) * l)) / 2^256)
]]></artwork>
          <t>This implies the following limit:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
v + q <= (p * 2^255) / ((64 * l) + 65)
]]></artwork>
        </section>
      </section>
      <section anchor="aeadchacha20poly1305-aeadaes128ccm-and-aeadaes128ccm8" numbered="true" toc="default">
        <name>AEAD_CHACHA20_POLY1305, AEAD_AES_128_CCM, and AEAD_AES_128_CCM_8</name>
        <t>There are currently no concrete multi-user bounds for AEAD_CHACHA20_POLY1305,
AEAD_AES_128_CCM, or AEAD_AES_128_CCM_8. Thus, to account for the additional
factor <tt>u</tt>, i.e., the number of users, each <tt>p</tt> term in the confidentiality and
integrity limits is replaced with <tt>p / u</tt>.</t>
        <section anchor="aeadchacha20poly1305-1" numbered="true" toc="default">
          <name>AEAD_CHACHA20_POLY1305</name>
          <t>The combined confidentiality and integrity limit for AEAD_CHACHA20_POLY1305 is
as follows.</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
v <= ((p / u) * 2^106) / 8l
  <= (p * 2^103) / (l * u)
]]></artwork>
        </section>
        <section anchor="aeadaes128ccm-and-aeadaes128ccm8" numbered="true" toc="default">
          <name>AEAD_AES_128_CCM and AEAD_AES_128_CCM_8</name>
          <t>The integrity limit for AEAD_AES_128_CCM is as follows.</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
v + q <= (p / u)^(1/2) * 2^63 / l
]]></artwork>
          <t>Likewise, the integrity limit for AEAD_AES_128_CCM_8 is as follows.</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
v * 2^64 + (2l * (v + q))^2 <= (p / u) * 2^128
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="sec-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>Many of the formulae in this document depend on simplifying assumptions that are
not universally applicable.  When using this document to set limits, it is
necessary to validate all these assumptions for the setting in which the limits
might apply.  In most cases, the goal is to use assumptions that result in
setting a more conservative limit, but this is not always the case.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document does not make any request of IANA.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="GCM">
          <front>
            <title>Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC</title>
            <seriesInfo name="NIST" value="Special Publication 800-38D"/>
            <author initials="M." surname="Dworkin">
              <organization/>
            </author>
            <date year="2007" month="November"/>
          </front>
        </reference>
        <reference anchor="GCMProofs" target="https://eprint.iacr.org/2012/438.pdf">
          <front>
            <title>Breaking and Repairing GCM Security Proofs</title>
            <author initials="T." surname="Iwata">
              <organization/>
            </author>
            <author initials="K." surname="Ohashi">
              <organization/>
            </author>
            <author initials="K." surname="Minematsu">
              <organization/>
            </author>
            <date year="2012" month="August" day="01"/>
          </front>
        </reference>
        <reference anchor="ChaCha20Poly1305Bounds" target="https://eprint.iacr.org/2014/613.pdf">
          <front>
            <title>A Security Analysis of the Composition of ChaCha20 and Poly1305</title>
            <author initials="G." surname="Procter">
              <organization/>
            </author>
            <date year="2014" month="August" day="11"/>
          </front>
        </reference>
        <reference anchor="AEBounds" target="http://www.isg.rhul.ac.uk/~kp/TLS-AEbounds.pdf">
          <front>
            <title>Limits on Authenticated Encryption Use in TLS</title>
            <author initials="A." surname="Luykx">
              <organization/>
            </author>
            <author initials="K." surname="Paterson">
              <organization/>
            </author>
            <date year="2016" month="March" day="08"/>
          </front>
        </reference>
        <reference anchor="MUSecurity" target="https://cseweb.ucsd.edu/~mihir/papers/musu.pdf">
          <front>
            <title>Public-Key Encryption in a Multi-user Setting: Security Proofs and Improvements</title>
            <author initials="M." surname="Bellare">
              <organization/>
            </author>
            <author initials="A." surname="Boldyreva">
              <organization/>
            </author>
            <author initials="S." surname="Micali">
              <organization/>
            </author>
            <date year="2000" month="May"/>
          </front>
        </reference>
        <reference anchor="RFC5116" target="https://www.rfc-editor.org/info/rfc5116">
          <front>
            <title>An Interface and Algorithms for Authenticated Encryption</title>
            <seriesInfo name="DOI" value="10.17487/RFC5116"/>
            <seriesInfo name="RFC" value="5116"/>
            <author initials="D." surname="McGrew" fullname="D. McGrew">
              <organization/>
            </author>
            <date year="2008" month="January"/>
            <abstract>
              <t>This document defines algorithms for Authenticated Encryption with Associated Data (AEAD), and defines a uniform interface and a registry for such algorithms.  The interface and registry can be used as an application-independent set of cryptoalgorithm suites.  This approach provides advantages in efficiency and security, and promotes the reuse of crypto implementations.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization/>
            </author>
            <date year="1997" month="March"/>
            <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>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <date year="2017" month="May"/>
            <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>
        </reference>
        <reference anchor="RFC8439" target="https://www.rfc-editor.org/info/rfc8439">
          <front>
            <title>ChaCha20 and Poly1305 for IETF Protocols</title>
            <seriesInfo name="DOI" value="10.17487/RFC8439"/>
            <seriesInfo name="RFC" value="8439"/>
            <author initials="Y." surname="Nir" fullname="Y. Nir">
              <organization/>
            </author>
            <author initials="A." surname="Langley" fullname="A. Langley">
              <organization/>
            </author>
            <date year="2018" month="June"/>
            <abstract>
              <t>This document defines the ChaCha20 stream cipher as well as the use of the Poly1305 authenticator, both as stand-alone algorithms and as a "combined mode", or Authenticated Encryption with Associated Data (AEAD) algorithm.</t>
              <t>RFC 7539, the predecessor of this document, was meant to serve as a stable reference and an implementation guide.  It was a product of the Crypto Forum Research Group (CFRG).  This document merges the errata filed against RFC 7539 and adds a little text to the Security Considerations section.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6655" target="https://www.rfc-editor.org/info/rfc6655">
          <front>
            <title>AES-CCM Cipher Suites for Transport Layer Security (TLS)</title>
            <seriesInfo name="DOI" value="10.17487/RFC6655"/>
            <seriesInfo name="RFC" value="6655"/>
            <author initials="D." surname="McGrew" fullname="D. McGrew">
              <organization/>
            </author>
            <author initials="D." surname="Bailey" fullname="D. Bailey">
              <organization/>
            </author>
            <date year="2012" month="July"/>
            <abstract>
              <t>This memo describes the use of the Advanced Encryption Standard (AES) in the Counter with Cipher Block Chaining - Message Authentication Code (CBC-MAC) Mode (CCM) of operation within Transport Layer Security (TLS) and Datagram TLS (DTLS) to provide confidentiality and data origin authentication.  The AES-CCM algorithm is amenable to compact implementations, making it suitable for constrained environments.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="Poly1305">
          <front>
            <title>The Poly1305-AES Message-Authentication Code</title>
            <seriesInfo name="DOI" value="10.1007/11502760_3"/>
            <seriesInfo name="Fast Software Encryption" value="pp. 32-49"/>
            <author initials="D." surname="Bernstein" fullname="Daniel J. Bernstein">
              <organization/>
            </author>
            <date year="2005"/>
          </front>
        </reference>
        <reference anchor="CCM-ANALYSIS">
          <front>
            <title>On the Security of CTR + CBC-MAC</title>
            <seriesInfo name="DOI" value="10.1007/3-540-36492-7_7"/>
            <seriesInfo name="Selected Areas in Cryptography" value="pp. 76-93"/>
            <author initials="J." surname="Jonsson" fullname="Jakob Jonsson">
              <organization/>
            </author>
            <date year="2003"/>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="NonceDisrespecting" target="https://eprint.iacr.org/2016/475.pdf">
          <front>
            <title>Nonce-Disrespecting Adversaries -- Practical Forgery Attacks on GCM in TLS</title>
            <author initials="H." surname="Bock">
              <organization/>
            </author>
            <author initials="A." surname="Zauner">
              <organization/>
            </author>
            <author initials="S." surname="Devlin">
              <organization/>
            </author>
            <author initials="J." surname="Somorovsky">
              <organization/>
            </author>
            <author initials="P." surname="Jovanovic">
              <organization/>
            </author>
            <date year="2016" month="May" day="17"/>
          </front>
        </reference>
        <reference anchor="TLS" target="https://www.rfc-editor.org/info/rfc8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <seriesInfo name="DOI" value="10.17487/RFC8446"/>
            <seriesInfo name="RFC" value="8446"/>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization/>
            </author>
            <date year="2018" month="August"/>
            <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>
        </reference>
        <reference anchor="I-D.ietf-quic-tls" target="http://www.ietf.org/internet-drafts/draft-ietf-quic-tls-29.txt">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-quic-tls-29"/>
            <author initials="M" surname="Thomson" fullname="Martin Thomson">
              <organization/>
            </author>
            <author initials="S" surname="Turner" fullname="Sean Turner">
              <organization/>
            </author>
            <date month="June" day="9" year="2020"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.  Note to Readers  Discussion of this draft takes place on the QUIC working group mailing list (quic@ietf.org (mailto:quic@ietf.org)), which is archived at https://mailarchive.ietf.org/arch/ search/?email_list=quic.  Working Group information can be found at https://github.com/quicwg; source code and issues list for this draft can be found at https://github.com/quicwg/base-drafts/labels/-tls.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="GCM-MU">
          <front>
            <title>The Multi-user Security of GCM, Revisited</title>
            <seriesInfo name="DOI" value="10.1145/3243734.3243816"/>
            <seriesInfo name="Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications" value="Security"/>
            <author initials="V." surname="Hoang" fullname="Viet Tung Hoang">
              <organization/>
            </author>
            <author initials="S." surname="Tessaro" fullname="Stefano Tessaro">
              <organization/>
            </author>
            <author initials="A." surname="Thiruvengadam" fullname="Aishwarya Thiruvengadam">
              <organization/>
            </author>
            <date year="2018" month="January"/>
          </front>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <seriesInfo name="DOI" value="10.17487/RFC8446"/>
            <seriesInfo name="RFC" value="8446"/>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization/>
            </author>
            <date year="2018" month="August"/>
            <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>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
/qLaGNVI8H+t6xxfJ0AAAA==

-->

</rfc>
