<?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.22 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-irtf-cfrg-aead-limits-06" category="info" submissionType="IRTF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="AEAD Limits">Usage Limits on AEAD Algorithms</title>
    <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-aead-limits-06"/>
    <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="2023" month="January" day="30"/>
    <keyword>safe</keyword>
    <keyword>limits</keyword>
    <keyword>crypto</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-key settings.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Crypto Forum Research Group mailing list (cfrg@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/search/?email_list=cfrg"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/cfrg/draft-irtf-cfrg-aead-limits"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>An Authenticated Encryption with Associated Data (AEAD) algorithm
provides confidentiality and integrity. <xref target="RFC5116"/> specifies an AEAD
as a function with four inputs -- secret key, nonce, plaintext, associated data
(of which plaintext and associated data can optionally be zero-length) -- that
produces ciphertext output and an 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 the same
thorough treatment.</t>
      <t>Effective limits can be influenced by the number of "users" of
a given key. In the traditional setting, there is one key shared between 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. This multi-key security setting,
often referred to as the multi-user setting in the academic literature,
considers an attacker's advantage in breaking security of any of these many
keys, further assuming the attacker may have done some offline work to help break
security. As a result, AEAD algorithm limits may depend on offline work and the
number of keys. However, given that a multi-key attacker does not target any specific
key, acceptable advantages may differ from that of the single-key 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"/>.  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 and QUIC both specify limits on
the number of records that can be protected, using the simplifying assumption
that records are the same size; see <xref section="5.5" sectionFormat="of" target="TLS"/> and <xref section="6.6" sectionFormat="of" target="RFC9001"/>.</t>
      <t>Exceeding the determined usage limit can be avoided using rekeying.  Rekeying
uses a lightweight transform to produce new keys.  Rekeying effectively resets
progress toward single-key limits, allowing a session to be extended without
degrading security.  Rekeying can also provide a measure of forward and
backward (post-compromise) security.  <xref target="RFC8645"/> contains a thorough survey
of rekeying and the consequences of different design choices.</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">
      <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 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
    </section>
    <section anchor="notation">
      <name>Notation</name>
      <t>This document defines limitations in part using the quantities in
<xref target="notation-table"/> below.</t>
      <table anchor="notation-table">
        <name>Notation</name>
        <thead>
          <tr>
            <th align="right">Symbol</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">n</td>
            <td align="left">AEAD block length (in bits)</td>
          </tr>
          <tr>
            <td align="right">k</td>
            <td align="left">AEAD key length (in bits)</td>
          </tr>
          <tr>
            <td align="right">r</td>
            <td align="left">AEAD nonce length (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">Maximum 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 protected messages (AEAD encryption invocations)</td>
          </tr>
          <tr>
            <td align="right">v</td>
            <td align="left">Number of attacker forgery attempts (failed AEAD decryption invocations)</td>
          </tr>
          <tr>
            <td align="right">p</td>
            <td align="left">Upper bound on 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-key setting only)</td>
          </tr>
          <tr>
            <td align="right">u</td>
            <td align="left">Number of keys (multi-key setting only)</td>
          </tr>
          <tr>
            <td align="right">B</td>
            <td align="left">Maximum number of blocks encrypted by any key (multi-key setting only)</td>
          </tr>
        </tbody>
      </table>
      <t>For each AEAD algorithm, we define the (passive) confidentiality and (active)
integrity advantage roughly as the advantage an attacker has in breaking the
corresponding classical security property for the algorithm. A passive attacker
can query ciphertexts for arbitrary plaintexts. An active attacker can additionally
query plaintexts for arbitrary ciphertexts. Moreover, we define the combined
authenticated encryption advantage guaranteeing both confidentiality and integrity
against an active attacker. Specifically:</t>
      <ul spacing="normal">
        <li>Confidentiality advantage (CA): The probability of a passive attacker
succeeding in breaking the confidentiality properties (IND-CPA) of the AEAD scheme.
In this document, the definition of confidentiality advantage roughly is the
probability that an attacker successfully distinguishes the ciphertext outputs
of the AEAD scheme from the outputs of a random function.</li>
        <li>Integrity advantage (IA): The probability of an active attacker succeeding
in breaking the integrity properties (INT-CTXT) of the AEAD scheme. In this document,
the definition of integrity advantage roughly is the probability that an attacker
is able to forge a ciphertext that will be accepted as valid.</li>
        <li>Authenticated Encryption advantage (AEA): The probability of an active
attacker succeeding in breaking the authenticated-encryption properties of the
AEAD scheme. In this document, the definition of authenticated encryption
advantage roughly is the probability that an attacker successfully distinguishes
the ciphertext outputs of the AEAD scheme from the outputs of a random function
or is able to forge a ciphertext that will be accepted as valid.</li>
      </ul>
      <t>See <xref target="AEComposition"/>, <xref target="AEAD"/> for the formal definitions of and relations
between passive confidentiality (IND-CPA), ciphertext integrity (INT-CTXT),
and authenticated encryption security (AE).
The authenticated encryption advantage subsumes, and can be derived as the
combination of, both CA and IA:</t>
      <artwork><![CDATA[
CA <= AEA
IA <= AEA
AEA <= CA + IA
]]></artwork>
      <t>Each application requires an individual determination of limits in order to keep CA
and IA sufficiently small.  For instance, TLS aims to keep CA below 2<sup>-60</sup> and IA
below 2<sup>-57</sup> in the single-key setting; see <xref section="5.5" sectionFormat="of" target="TLS"/>.</t>
    </section>
    <section anchor="calculating-limits">
      <name>Calculating Limits</name>
      <t>Once upper bounds on CA, IA, or AEA are determined, this document
defines a process for determining three overall operational limits:</t>
      <ul spacing="normal">
        <li>Confidentiality limit (CL): The number of messages an application can encrypt
before giving the adversary a confidentiality advantage higher than CA.</li>
        <li>Integrity limit (IL): The number ciphertexts an application can decrypt,
either successfully or not, before giving the adversary an integrity advantage
higher than IA.</li>
        <li>Authenticated encryption limit (AEL): The combined number of messages and
number of ciphertexts an application can encrypt or decrypt before giving the
adversary an authenticated encryption advantage higher than AEA.</li>
      </ul>
      <t>When limits are expressed as a number of messages an application can encrypt or
decrypt, this requires assumptions about the size of messages and any
authenticated additional data (AAD).  Limits can instead be expressed in terms
of the number of bytes, or blocks, of plaintext and maybe AAD in total.</t>
      <t>To aid in translating between message-based and byte/block-based limits,
a formulation of limits that includes a maximum message size (l) and the AEAD
schemes' block length in bits (n) is provided.</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 an integrity advantage of <tt>IA = v * (8l / 2^106)</tt> and a
targeted maximum attacker success probability of <tt>IA = p</tt>, the algorithm remains
secure, i.e., the adversary's advantage does not exceed the targeted probability
of success, provided that <tt>v &lt;= (p * 2^106) / 8l</tt>. In turn, this implies that
<tt>v &lt;= (p * 2^103) / l</tt> is the corresponding limit.</t>
      <t>To apply these limits, implementations can count the number of messages that are
protected or rejected against the determined limits (q and v respectively).
This requires that messages cannot exceed the maximum message size (l) that is
chosen.</t>
      <t>This analysis assumes a message-based approach to setting limits.
Implementations that use byte counting rather than message counting could use a
maximum message size (l) of one to determine a limit for q that can be applied
with byte counting.  This results in attributing per-message overheads to every
byte, so the resulting limit could be significantly lower than necessary.
Actions, like rekeying, that are taken to avoid the limit might occur more
often as a result.</t>
    </section>
    <section anchor="su-limits">
      <name>Single-Key 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"/>, AEAD_AES_256_GCM <xref target="RFC5116"/>,
AEAD_AES_128_CCM <xref target="RFC5116"/>, AEAD_CHACHA20_POLY1305 <xref target="RFC8439"/>, AEAD_AES_128_CCM_8 <xref target="RFC6655"/>.
The limits in this section apply to using these schemes with a single key;
for settings where multiple keys are deployed (for example, when rekeying within
a connection), see <xref target="mu-limits"/>.</t>
      <t>These algorithms, as cited, all define a nonce length (r) of 96 bits.  Some
definitions of these AEAD algorithms allow for other nonce lengths, but the
analyses in this document all fix the nonce length to r = 96.  Using other nonce
lengths might result in different bounds; for example, <xref target="GCMProofs"/> shows that
using a variable-length nonce for AES-GCM results in worse security bounds.</t>
      <t>The CL and IL values bound the total number of encryption and forgery queries (q and v).
Alongside each advantage value, we also specify these bounds.</t>
      <section anchor="aeadaes128gcm-and-aeadaes256gcm">
        <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"/> and summarized below.
For this AEAD, n = 128 and t = 128 <xref target="GCM"/>. In this example, the length s is the sum
of AAD and plaintext (in blocks of 128 bits), as described in <xref target="GCMProofs"/>.</t>
        <section anchor="confidentiality-limit">
          <name>Confidentiality Limit</name>
          <artwork><![CDATA[
CA <= ((s + q + 1)^2) / 2^129
]]></artwork>
          <t>This implies the following usage limit:</t>
          <artwork><![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> (in blocks of 128 bits), produces the limit:</t>
          <artwork><![CDATA[
q <= (p^(1/2) * 2^(129/2) - 1) / (l + 1)
]]></artwork>
        </section>
        <section anchor="integrity-limit">
          <name>Integrity Limit</name>
          <artwork><![CDATA[
IA <= 2 * (v * (l + 1)) / 2^128
]]></artwork>
          <t>This implies the following limit:</t>
          <artwork><![CDATA[
v <= (p * 2^127) / (l + 1)
]]></artwork>
        </section>
      </section>
      <section anchor="aeadchacha20poly1305">
        <name>AEAD_CHACHA20_POLY1305</name>
        <t>The known single-user analyses for AEAD_CHACHA20_POLY1305 <xref target="ChaCha20Poly1305-SU"/>,
<xref target="ChaCha20Poly1305-MU"/> combine the confidentiality and integrity limits into a
single expression, covered below. For this AEAD, n = 512, k = 256, and t = 128;
the length l is the sum of AAD and plaintext (in blocks of 128 bits),
see <xref target="ChaCha20Poly1305-MU"/>.</t>
        <!--
    In {{ChaCha20Poly1305-SU}}, L is |AAD| + |plaintext| + 1; the + 1 is one
    block length encoding.

    From {{ChaCha20Poly1305-MU}} Theorem 4.1 / 3.4:
      AE <= v * 2^25 * (l+1) / 2^t
    where t = 128.
    (NB: The bound component "c * l" (for c = 3*2^24) is upper-bounding
    2^25 * (l+1) for the worst case l = |AAD|+|m| = 2; cf. Theorem 3.4.)
-->
<artwork><![CDATA[
AEA <= (v * (l + 1)) / 2^103
]]></artwork>
        <t>This advantage is a tight reduction based on the underlying Poly1305 PRF <xref target="Poly1305"/>.
It implies the following limit:</t>
        <artwork><![CDATA[
v <= (p * 2^103) / (l + 1)
]]></artwork>
      </section>
      <section anchor="aeadaes128ccm">
        <name>AEAD_AES_128_CCM</name>
        <t>The CL and IL values for AEAD_AES_128_CCM are derived from <xref target="CCM-ANALYSIS"/>
and specified in the QUIC-TLS mapping specification <xref target="RFC9001"/>. 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">
          <name>Confidentiality Limit</name>
          <artwork><![CDATA[
CA <= (2l * q)^2 / 2^n
   <= (2l * q)^2 / 2^128
]]></artwork>
          <t>This implies the following limit:</t>
          <artwork><![CDATA[
q <= sqrt((p * 2^126) / l^2)
]]></artwork>
        </section>
        <section anchor="integrity-limit-1">
          <name>Integrity Limit</name>
          <artwork><![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><![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><![CDATA[
v + q <= sqrt(p) * 2^63 / l
]]></artwork>
        </section>
      </section>
      <section anchor="aeadaes128ccm8">
        <name>AEAD_AES_128_CCM_8</name>
        <t>The analysis in <xref target="CCM-ANALYSIS"/> also applies to this AEAD, but the reduced tag
length of 64 bits changes the integrity limit calculation considerably.</t>
        <artwork><![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><![CDATA[
v * 2^64 + (2l * (v + q))^2 <= p * 2^128
]]></artwork>
      </section>
      <section anchor="single-key-examples">
        <name>Single-Key Examples</name>
        <t>An example protocol might choose to aim for a single-key CA and IA that is at
most 2<sup>-50</sup>.  If the messages exchanged in the protocol are at most a
common Internet MTU of around 1500 bytes, then a value for l might be set to
2<sup>7</sup>.  <xref target="ex-table-su"/> shows limits for q and v that might be
chosen under these conditions.</t>
        <table anchor="ex-table-su">
          <name>Example single-key limits</name>
          <thead>
            <tr>
              <th align="left">AEAD</th>
              <th align="right">Maximum q</th>
              <th align="right">Maximum v</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">AEAD_AES_128_GCM</td>
              <td align="right">2<sup>32.5</sup></td>
              <td align="right">2<sup>71</sup></td>
            </tr>
            <tr>
              <td align="left">AEAD_AES_256_GCM</td>
              <td align="right">2<sup>32.5</sup></td>
              <td align="right">2<sup>71</sup></td>
            </tr>
            <tr>
              <td align="left">AEAD_CHACHA20_POLY1305</td>
              <td align="right">n/a</td>
              <td align="right">2<sup>46</sup></td>
            </tr>
            <tr>
              <td align="left">AEAD_AES_128_CCM</td>
              <td align="right">2<sup>30</sup></td>
              <td align="right">2<sup>30</sup></td>
            </tr>
            <tr>
              <td align="left">AEAD_AES_128_CCM_8</td>
              <td align="right">2<sup>30.9</sup></td>
              <td align="right">2<sup>13</sup></td>
            </tr>
          </tbody>
        </table>
        <t>AEAD_CHACHA20_POLY1305 provides no limit to q based on the provided single-user
analyses.</t>
        <t>The limit for q on AEAD_AES_128_CCM and AEAD_AES_128_CCM_8 is reduced due to a
need to reduce the value of q to ensure that IA does not exceed the target.
This assumes equal proportions for q and v for AEAD_AES_128_CCM.
AEAD_AES_128_CCM_8 permits a much smaller value of v due to the shorter tag,
which permits a higher limit for q.</t>
        <t>Some protocols naturally limit v to 1, such as TCP-based variants of TLS, which
terminate sessions on decryption failure.  If v is limited to 1, q can be
increased to 2<sup>31</sup> for both CCM AEADs.</t>
      </section>
    </section>
    <section anchor="mu-limits">
      <name>Multi-Key AEAD Limits</name>
      <t>In the multi-key setting, each user is assumed to have an independent and
uniformly distributed key, though nonces may be re-used across users with some
very small probability. The success probability in attacking one of these many
independent keys can be generically bounded by the success probability of
attacking a single key multiplied by the number of keys present <xref target="MUSecurity"/>, <xref target="GCM-MU"/>.
Absent concrete multi-key bounds, this means the attacker advantage in the multi-key
setting is the product of the single-key advantage and the number of keys.</t>
      <t>This section summarizes the confidentiality and integrity bounds and limits for
the same algorithms as in <xref target="su-limits"/> for the multi-key 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">
        <name>AEAD_AES_128_GCM and AEAD_AES_256_GCM</name>
        <t>Concrete multi-key bounds for AEAD_AES_128_GCM and AEAD_AES_256_GCM exist due to
Theorem 4.3 in <xref target="GCM-MU2"/>, which covers protocols with nonce randomization,
like TLS 1.3 <xref target="TLS"/> and QUIC <xref target="RFC9001"/>. Here, the full nonce is XORed with
a secret, random offset. The bound for nonce randomization was further improved
in <xref target="ChaCha20Poly1305-MU"/>.</t>
        <t>Results for AES-GCM with random, partially implicit nonces <xref target="RFC5288"/> are
captured by Theorem 5.3 in <xref target="GCM-MU2"/>, which apply to protocols such as TLS 1.2
<xref target="RFC5246"/>. Here, the implicit part of the nonce is a random value, of length
at least 32 bits and fixed per key, while we assume that the explicit part of
the nonce is chosen using a non-repeating process. The full nonce is the
concatenation of the two parts. This produces similar limits under most
conditions.  Note that implementations that choose the explicit part at random
have a higher chance of nonce collisions and are not considered for the
limits in this section.</t>
        <t>For this AEAD, n = 128, t = 128, and r = 96; the key length is k = 128 or k =
256 for AEAD_AES_128_GCM and AEAD_AES_128_GCM respectively.</t>
        <section anchor="mu-gcm-ae">
          <name>Authenticated Encryption Security Limit</name>
          <!--
    From {{GCM-MU2}} Theorem 4.3; for nonce randomization (XN transform).

    Let:
        - #blocks encrypted/verified overall:   \sigma = (q + v) * l
        - worst-case  o (offline work), q+v, \sigma <= 2^95
          (Theorem 4.3 requires q <= 2^(1-e)r ; this yields e >= 0.0104, hence
          d = 1,5/e -1 <= 143 <= 2^8.)

    We can simplify the Theorem 4.3 advantage bound as follows:
        - Note: Last term is 2^-48; hence any other term <= 2^-50 is negligible.
        - 1st term (../2^k):  roughly <= 2^8 * (o + q+v + \sigma) / 2^k
           roughly <= (o + (q+v)*l) / 2^(k-8)
          This is negligible for k = 256.
          For k = 128, it is negligible if o, (q+v)*l <= 2^70.
          For o <= 2^70 and B >= 2^8, it is dominated by the 2nd term;
            we assume that and hence omit the 1st term.
          If B is small and k = 128, then \sigma might be relevant and
            we can add n*\sigma/2^128
        - 2nd term (../2^n):
          \sigma*(2B + cn + 2)/2^n = \sigma*(B + 97)/2^127
          Assuming that B >> 100, the dominant term is \sigma*B/2^127
        - 3rd term (../2^2n):  <= 2^-160, negligible.
        - 4th term (../2^(k+n)):  roughly <= (\sigma^2 + 2o(q+v)) / 2^256
          <= 2^-64, negligible.
        - 5th term (2^(-r/2)):  = 2^-48

    The 5th term, ensuring that the adversary is d-repeating ({{GCM-MU2}},
    Theorem 4.2), was improved in {{ChaCha20Poly1305-MU}} Theorem 7.7 to
      2^-(\delta * r)
    for which \delta can be chosen as \delta = 2 for d < 2^9.
    As d < 2^9 does not affect the above simplifications, this only makes the
    5th term negligible (2^-192), and allows to omit it.
-->
<t>Protocols with nonce randomization have a limit of:</t>
          <artwork><![CDATA[
AEA <= (q+v)*l*B / 2^127
]]></artwork>
          <t>This implies the following limit:</t>
          <artwork><![CDATA[
q + v <= p * 2^127 / (l * B)
]]></artwork>
          <t>This assumes that B is much larger than 100; that is, each user enciphers
significantly more than 1600 bytes of data.  Otherwise, B should be increased by 161 for
AEAD_AES_128_GCM and by 97 for AEAD_AES_256_GCM.</t>
          <!--
    From {{GCM-MU2}} Theorem 5.3; for partial random nonces (CN transform).

    Let:
        - #blocks encrypted/verified overall:   \sigma = (q + v) * l
        - length R of random implicit nonce part: R = 32 (bits), as in TLS 1.2/RFC5288
        - worst-case  o (offline work), q+v, \sigma <= 2^77  (as per 1st term)
          (Theorem 5.3 requires R >= 32 [satisfied], o <= 2^(n-2);
          yields d = (q+v)R/2^(R-1) = (q+v)/2^26.)

    We can simplify the Theorem 5.3 advantage bound as follows:
        - 1st term (../2^k):  roughly <= ((q+v)/2^26 * (o + q+v) + n*\sigma) / 2^k
           roughly <= ((q+v)*o + (q+v)^2) / 2^(k+26) + (q+v)*l / 2^(k-7)
          This is negligible for k = 256.
          The second part ("(q+v)*l / 2^(k-7)") is negligible compared to the
             first part (and the 2nd term).
          For k = 128, what remains is:  ((q+v)*o + (q+v)^2) / 2^(k+26)
             which dominates the 2nd term if q+v > B*l*2^25.
        - 2nd term (../2^n):
          \sigma*(2B + cn + 2)/2^n = \sigma*(B + 97)/2^127
          Assuming that B >> 100, the dominant term is \sigma*B/2^127
        - 3rd term (../2^2n):  <= 2^-160, negligible.
        - 4th term (../2^(k+n)):  roughly <= (\sigma^2 + 2o(q+v)) / 2^256
          <= 2^-100, negligible.
        - 5th term (2^(-7R)):  = 2^-224, negligible.
-->

<t>Protocols with random, partially implicit nonces have the following limit,
which is similar to that for nonce randomization:</t>
          <artwork><![CDATA[
AEA <= (((q+v)*o + (q+v)^2) / 2^(k+26)) + ((q+v)*l*B / 2^127)
]]></artwork>
          <t>The first term is negligible if k = 256; this implies the following simplified
limits:</t>
          <artwork><![CDATA[
AEA <= (q+v)*l*B / 2^127
q + v <= p * 2^127 / (l * B)
]]></artwork>
          <t>For k = 128, assuming o &lt;= q+v (i.e., that the attacker does not spend more work than all legitimate protocol users together), the limits are:</t>
          <!--
    Simplifying
      p >= (((q+v)*o + (q+v)^2) / 2^(k+26)) + ((q+v)*l*B / 2^127)

    to

      p/2 >= ((q+v)*o + (q+v)^2) / 2^(k+26)
      AND
      p/2 >= (q+v)*l*B / 2^127

    and assuming o <= q+v
    yields

      q+v <= sqrt(p) * 2^76
      AND
      q+v <= p * 2^126 / (l * B)
-->

<artwork><![CDATA[
AEA <= (((q+v)*o + (q+v)^2) / 2^154) + ((q+v)*l*B / 2^127)
q + v <= min( sqrt(p) * 2^76,  p * 2^126 / (l * B) )
]]></artwork>
        </section>
        <section anchor="confidentiality-limit-2">
          <name>Confidentiality Limit</name>
          <!--
    From {{GCM-MU2}} Theorem 4.3,
    substracting terms for Pr[Bad_7] and Pr[Bad_8],
    and applying simplifications as above (note there are no verification queries),
    we obtain:

    Adv^{mu-ae w/o INT}_RCAU <=
        2^8 * (o + q) / 2^k   +  \sigma*B/2^127

    For o <= 2^70 and any B, the 1st term is dominated by the 2nd term;
    we assume that and hence again omit the 1st term.
-->

<t>The confidentiality advantage is essentially dominated by the same term as
the AE advantage for protocols with nonce randomization:</t>
          <artwork><![CDATA[
CA <= q*l*B / 2^127
]]></artwork>
          <t>This implies the following limit:</t>
          <artwork><![CDATA[
q <= p * 2^127 / (l * B)
]]></artwork>
          <!--
    From {{GCM-MU2}} Theorem 5.3,
    subtracting terms for Pr[Bad_7] and Pr[Bad_8],
    and applying simplifications as above (note there are no verification queries),
    we obtain:

    Adv^{mu-ae w/o INT}_CGCM <=
        q * (o + q) / 2^(k+26)   +   \sigma*B/2^127
-->

<t>Similarly, the limits for protocols with random, partially implicit nonces are:</t>
          <artwork><![CDATA[
CA <= ((q*o + q^2) / 2^(k+26)) + (q*l*B / 2^127)
q <= min( sqrt(p) * 2^76,  p * 2^126 / (l * B) )
]]></artwork>
        </section>
        <section anchor="integrity-limit-2">
          <name>Integrity Limit</name>
          <t>There is currently no dedicated integrity multi-key bound available for
AEAD_AES_128_GCM and AEAD_AES_256_GCM. The AE limit can be used to derive
an integrity limit as:</t>
          <artwork><![CDATA[
IA <= AEA
]]></artwork>
          <t><xref target="mu-gcm-ae"/> therefore contains the integrity limits.</t>
        </section>
      </section>
      <section anchor="aeadchacha20poly1305-1">
        <name>AEAD_CHACHA20_POLY1305</name>
        <t>Concrete multi-key bounds for AEAD_CHACHA20_POLY1305 are given in Theorem 7.8
in <xref target="ChaCha20Poly1305-MU"/>, covering protocols with nonce randomization like
TLS 1.3 <xref target="TLS"/> and QUIC <xref target="RFC9001"/>.</t>
        <t>For this AEAD, n = 512, k = 256, t = 128, and r = 96; the length l is the sum
of AAD and plaintext (in blocks of 128 bits).</t>
        <section anchor="mu-ccp-ae">
          <name>Authenticated Encryption Security Limit</name>
          <!--
    From {{ChaCha20Poly1305-MU}} Theorem 7.8; for nonce randomization (XN transform).

    Let:
        - d: the max. number of times any nonce is repeated across users
        - \delta: the nonce-randomizer result's parameter
        - d = r * (\delta + 1) - 1 < 2^9, \delta = 2 be fixed, satisfying Theorem 7.8
        - this limits the number of encryption queries to q <= r * 2^(r-1) <= 2^101
        - o, B <= 2^261 as required for Theorem 7.8

    We can simplify the Theorem 7.8 advantage bound as follows:
        - 1st term:  v([constant]* l + 3)/2^t
          Via Theorem 3.4, the more precise term is:  v * (2^25 * (l + 1) + 3) / 2^128
          The 3v/2^t summand is dominated by the rest, so we simplify to
            (v * (l + 1)) / 2^103

        - 2nd term:  d(o + q)/2^k
          For d < 2^9 (as above) and o + q <= 2^145, this is dominated by the 1st term;
          [[ 1st term <= 2nd term as long as v * (l + 1)/2^103 <= d(o + q)/2^256;
          i.e., o + q <= v * (l + 1) * 2^153 / d.
          Even for minimal values v = 1 and l = 1 in 1st term, with d < 2^9,
          this holds as long as o + q <= 2^145. ]]
            we assume that and hence omit the 2nd term.

        - 3rd term:  2o * (n - k)/2^k
          This is dominated by the 2nd term; we hence omit it.

        - 4th term:  2v * (n - k + 4t)/2^k
          This is dominated by the 1st term; we hence omit it.

        - 5th term:  (B + q)^2/2^(n+1)
          This is dominated by the 1st term as long as B + q < 2^205;
          i.e., negligible and we hence omit it.

        - 6th term:  1/2^(2t-2) = 2^-254
          This is negligible, we hence omit it.

        - 7th term:  1/2^(n - k - 2) = 2^-254
          This is negligible, we hence omit it.

        - 8th term:  1/(\delta * r)
          This is 2^-192 for the chosen \delta = 2, hence negligible and we omit it.
-->

<t>Protocols with nonce randomization have a limit of:</t>
          <artwork><![CDATA[
AEA <= (v * (l + 1)) / 2^103
]]></artwork>
          <t>It implies the following limit:</t>
          <artwork><![CDATA[
v <= (p * 2^103) / (l + 1)
]]></artwork>
          <t>Note that this is the same limit as in the single-user case except that the
total number of forgery attempts <tt>v</tt> and maximum message length in blocks <tt>l</tt>
is calculated across all used keys.</t>
        </section>
        <section anchor="confidentiality-limit-3">
          <name>Confidentiality Limit</name>
          <!--
    From {{ChaCha20Poly1305-MU}} Theorem 7.8
    subtracting terms for Pr[Bad_5] and Pr[Bad_6],
    and applying simplifications as above (note there are no verification queries),
    the remaining relevant terms are:

        - 2nd term:  d(o + q)/2^k
          As d < 2^9, this is upper bounded by   (o+q)/2^247

        - 3rd term:  2o * (n - k)/2^k
          This is  o/2^247 , dominated by the 2nd term; we hence omit it.

        - 5th term:  (B + q)^2/2^(n+1)

          This is dominated by the 2nd term as long as B + q < sqrt(o+q) * 2^133.

          We omit this term on the basis that B <= q * l and there is no value
          of q less than 2^100 (see below) for which B > sqrt(q) * 2^133 given
          that constraint.

          Even with a single user and a single key such that B = q * l, and no
          offline work from the adversary (o = 0) the term is only relevant when
          q * l = sqrt(q) * 2^133.  With q capped at 2^100, the smallest value
          of l that can result from this is 2^83, which far exceeds the maximum
          size of a single message at 2^32.

        - 8th term:  1/(\delta * r)
          This is 2^-192 for the chosen \delta = 2, hence negligible and we omit it.
-->

<t>While the AE advantage is dominated by the number of forgery attempts <tt>v</tt>, those
are irrelevant for the confidentiality advantage. The relevant limit for
protocols with nonce randomization becomes dominated, at a very low level, by
the adversary's offline work <tt>o</tt> and the number of protected messages <tt>q</tt>
across all used keys:</t>
          <artwork><![CDATA[
CA <= (o + q) / 2^247)
]]></artwork>
          <!--
    In addition, the restrictions on q from {{ChaCha20Poly1305-MU}} Theorem 7.8
    applies: q <= r * 2^(r-1) <= 2^101.
    We round this to 2^100; this value can be slightly increased trading off d.
-->

<t>This implies the following simplified limit, which for most reasonable values of
<tt>p</tt> is dominated by a technical limitation of approximately <tt>q = 2^100</tt>:</t>
          <artwork><![CDATA[
q <= min( p * 2^247 - o, 2^100 )
]]></artwork>
        </section>
        <section anchor="integrity-limit-3">
          <name>Integrity Limit</name>
          <t>The AE limit for AEAD_CHACHA20_POLY1305 essentially is the integrity (multi-key)
bound. The former hence also applies to the latter:</t>
          <artwork><![CDATA[
IA <= AEA
]]></artwork>
          <t><xref target="mu-ccp-ae"/> therefore contains the integrity limits.</t>
        </section>
      </section>
      <section anchor="aeadaes128ccm-and-aeadaes128ccm8">
        <name>AEAD_AES_128_CCM and AEAD_AES_128_CCM_8</name>
        <t>There are currently no concrete multi-key bounds for 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 keys, each <tt>p</tt> term in the confidentiality and
integrity limits is replaced with <tt>p / u</tt>.</t>
        <t>The multi-key integrity limit for AEAD_AES_128_CCM is as follows.</t>
        <artwork><![CDATA[
v + q <= sqrt(p / u) * 2^63 / l
]]></artwork>
        <t>Likewise, the multi-key integrity limit for AEAD_AES_128_CCM_8 is as follows.</t>
        <artwork><![CDATA[
v * 2^64 + (2l * (v + q))^2 <= (p / u) * 2^128
]]></artwork>
      </section>
      <section anchor="multi-key-examples">
        <name>Multi-Key Examples</name>
        <t>An example protocol might choose to aim for a multi-key AEA, CA, and IA that is at
most 2<sup>-50</sup>.  If the messages exchanged in the protocol are at most a
common Internet MTU of around 1500 bytes, then a value for l might be set to
2<sup>7</sup>.  <xref target="ex-table-mu"/> shows limits for q and v across all keys that
might be chosen under these conditions.</t>
        <table anchor="ex-table-mu">
          <name>Example multi-key limits</name>
          <thead>
            <tr>
              <th align="left">AEAD</th>
              <th align="right">Maximum q</th>
              <th align="right">Maximum v</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">AEAD_AES_128_GCM</td>
              <td align="right">2<sup>69</sup>/B</td>
              <td align="right">2<sup>69</sup>/B</td>
            </tr>
            <tr>
              <td align="left">AEAD_AES_256_GCM</td>
              <td align="right">2<sup>69</sup>/B</td>
              <td align="right">2<sup>69</sup>/B</td>
            </tr>
            <tr>
              <td align="left">AEAD_CHACHA20_POLY1305</td>
              <td align="right">2<sup>100</sup></td>
              <td align="right">2<sup>46</sup></td>
            </tr>
            <tr>
              <td align="left">AEAD_AES_128_CCM</td>
              <td align="right">2<sup>30</sup>/sqrt(u)</td>
              <td align="right">2<sup>30</sup>/sqrt(u)</td>
            </tr>
            <tr>
              <td align="left">AEAD_AES_128_CCM_8</td>
              <td align="right">2<sup>30.9</sup>/sqrt(u)</td>
              <td align="right">2<sup>13</sup>/u</td>
            </tr>
          </tbody>
        </table>
        <t>The limits for AEAD_AES_128_GCM, AEAD_AES_256_GCM, AEAD_AES_128_CCM, and
AEAD_AES_128_CCM_8 assume equal proportions for q and v. The limits for
AEAD_AES_128_GCM, AEAD_AES_256_GCM and AEAD_CHACHA20_POLY1305 assume the use
of nonce randomization, like in TLS 1.3 <xref target="TLS"/> and QUIC <xref target="RFC9001"/>.</t>
        <t>The limits for AEAD_AES_128_GCM and AEAD_AES_256_GCM further depend on the
maximum number B of 128-bit blocks encrypted by any single key. For example,
limiting the number of messages (of size &lt;= 2<sup>7</sup> blocks) to at most
2<sup>20</sup> (about a million) per key results in B = 2<sup>27</sup>, which
limits both q and v to 2<sup>42</sup> messages.</t>
        <t>Only the limits for AEAD_AES_128_CCM and AEAD_AES_128_CCM_8 depend on the number
of used keys u, which further reduces them considerably. If v is limited to 1,
q can be increased to 2<sup>31</sup>/sqrt(u) for both CCM AEADs.</t>
      </section>
    </section>
    <section anchor="sec-considerations">
      <name>Security Considerations</name>
      <t>The different analyses of AEAD functions that this work is based upon generally
assume that the underlying primitives are ideal.  For example, that a
pseudorandom function (PRF) used by the AEAD is indistinguishable from a truly
random function or that a pseudorandom permutation (PRP) is indistinguishable
from a truly random permutation. Thus, the advantage estimates assume that the
attacker is not able to exploit a weakness in an underlying primitive.</t>
      <t>Many of the formulae in this document depend on simplifying assumptions,
from differing models, which means that results 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. As an example of one such simplification, this document
defines v as the total number of failed decryption queries (that is, failed forgery
attempts), whereas models usually count in v all forgery attempts.</t>
      <t>The CA, IA, and AEA values defined in this document are upper bounds based on existing
cryptographic research. Future analysis may introduce tighter bounds. Applications
SHOULD NOT assume these bounds are rigid, and SHOULD accommodate changes. In
particular, in two-party communication, one participant cannot regard apparent
overuse of a key by other participants as being in error, when it could be that
the other participant has better information about bounds.</t>
      <t>Note that the limits in this document apply to the adversary's ability to
conduct a single successful forgery. For some algorithms and in some cases,
an adversary's success probability in repeating forgeries may be noticeably
larger than that of the first forgery. As an example, <xref target="MF05"/> describes
such multiple forgery attacks in the context of AES-GCM in more detail.</t>
    </section>
    <section anchor="iana-considerations">
      <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>
            <author initials="M." surname="Dworkin">
              <organization/>
            </author>
            <date year="2007" month="November"/>
          </front>
          <seriesInfo name="NIST" value="Special Publication 800-38D"/>
        </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="ChaCha20Poly1305-SU" 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="AEComposition" target="https://eprint.iacr.org/2000/025.pdf">
          <front>
            <title>Authenticated Encryption: Relations among notions and analysis of the generic composition paradigm</title>
            <author initials="M." surname="Bellare">
              <organization/>
            </author>
            <author initials="C." surname="Namprempre">
              <organization/>
            </author>
            <date year="2007" month="July"/>
          </front>
        </reference>
        <reference anchor="AEAD" target="https://web.cs.ucdavis.edu/~rogaway/papers/ad.pdf">
          <front>
            <title>Authenticated-Encryption with Associated-Data</title>
            <author initials="P." surname="Rogaway">
              <organization/>
            </author>
            <date year="2002" month="September"/>
          </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="GCM-MU" target="https://eprint.iacr.org/2016/564.pdf">
          <front>
            <title>The Multi-User Security of Authenticated Encryption: AES-GCM in TLS 1.3</title>
            <author initials="M." surname="Bellare">
              <organization/>
            </author>
            <author initials="B." surname="Tackmann">
              <organization/>
            </author>
            <date year="2017" month="November" day="27"/>
          </front>
        </reference>
        <reference anchor="GCM-MU2" target="https://eprint.iacr.org/2018/993.pdf">
          <front>
            <title>The Multi-user Security of GCM, Revisited: Tight Bounds for Nonce Randomization</title>
            <author initials="V. T." surname="Hoang">
              <organization/>
            </author>
            <author initials="S." surname="Tessaro">
              <organization/>
            </author>
            <author initials="A." surname="Thiruvengadam">
              <organization/>
            </author>
            <date year="2018" month="October" day="15"/>
          </front>
        </reference>
        <reference anchor="ChaCha20Poly1305-MU">
          <front>
            <title>The Security of ChaCha20-Poly1305 in the Multi-User Setting</title>
            <author fullname="Jean Paul Degabriele" initials="J." surname="Degabriele">
              <organization>Technische Universität Darmstadt, Darmstadt, Germany</organization>
            </author>
            <author fullname="Jérôme Govinden" initials="J." surname="Govinden">
              <organization>Technische Universität Darmstadt, Darmstadt, Germany</organization>
            </author>
            <author fullname="Felix Günther" initials="F." surname="Günther">
              <organization>ETH Zurich, Zurich, Switzerland</organization>
            </author>
            <author fullname="Kenneth G. Paterson" initials="K." surname="Paterson">
              <organization>ETH Zurich, Zurich, Switzerland</organization>
            </author>
            <date month="November" year="2021"/>
          </front>
          <seriesInfo name="Proceedings of the 2021 ACM SIGSAC Conference on Computer and Communications" value="Security"/>
          <seriesInfo name="DOI" value="10.1145/3460120.3484814"/>
        </reference>
        <reference anchor="RFC5116">
          <front>
            <title>An Interface and Algorithms for Authenticated Encryption</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew">
              <organization/>
            </author>
            <date month="January" year="2008"/>
            <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>
          <seriesInfo name="RFC" value="5116"/>
          <seriesInfo name="DOI" value="10.17487/RFC5116"/>
        </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">
              <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="RFC8439">
          <front>
            <title>ChaCha20 and Poly1305 for IETF Protocols</title>
            <author fullname="Y. Nir" initials="Y." surname="Nir">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <date month="June" year="2018"/>
            <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>
          <seriesInfo name="RFC" value="8439"/>
          <seriesInfo name="DOI" value="10.17487/RFC8439"/>
        </reference>
        <reference anchor="RFC6655">
          <front>
            <title>AES-CCM Cipher Suites for Transport Layer Security (TLS)</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew">
              <organization/>
            </author>
            <author fullname="D. Bailey" initials="D." surname="Bailey">
              <organization/>
            </author>
            <date month="July" year="2012"/>
            <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>
          <seriesInfo name="RFC" value="6655"/>
          <seriesInfo name="DOI" value="10.17487/RFC6655"/>
        </reference>
        <reference anchor="Poly1305">
          <front>
            <title>The Poly1305-AES Message-Authentication Code</title>
            <author fullname="Daniel J. Bernstein" initials="D." surname="Bernstein">
              <organization/>
            </author>
            <date year="2005"/>
          </front>
          <seriesInfo name="Fast Software Encryption" value="pp. 32-49"/>
          <seriesInfo name="DOI" value="10.1007/11502760_3"/>
        </reference>
        <reference anchor="CCM-ANALYSIS">
          <front>
            <title>On the Security of CTR + CBC-MAC</title>
            <author fullname="Jakob Jonsson" initials="J." surname="Jonsson">
              <organization/>
            </author>
            <date year="2003"/>
          </front>
          <seriesInfo name="Selected Areas in Cryptography" value="pp. 76-93"/>
          <seriesInfo name="DOI" value="10.1007/3-540-36492-7_7"/>
        </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="MF05" target="https://csrc.nist.gov/CSRC/media/Projects/Block-Cipher-Techniques/documents/BCM/Comments/CWC-GCM/multi-forge-01.pdf">
          <front>
            <title>Multiple forgery attacks against Message Authentication Codes</title>
            <author initials="D. A." surname="McGrew">
              <organization/>
            </author>
            <author initials="S. R." surname="Fluhrer">
              <organization/>
            </author>
            <date year="2005" month="May" day="31"/>
          </front>
        </reference>
        <reference anchor="TLS">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <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="RFC8645">
          <front>
            <title>Re-keying Mechanisms for Symmetric Keys</title>
            <author fullname="S. Smyshlyaev" initials="S." role="editor" surname="Smyshlyaev">
              <organization/>
            </author>
            <date month="August" year="2019"/>
            <abstract>
              <t>A certain maximum amount of data can be safely encrypted when encryption is performed under a single key.  This amount is called the "key lifetime".  This specification describes a variety of methods for increasing the lifetime of symmetric keys.  It provides two types of re-keying mechanisms based on hash functions and block ciphers that can be used with modes of operations such as CTR, GCM, CBC, CFB, and OMAC.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8645"/>
          <seriesInfo name="DOI" value="10.17487/RFC8645"/>
        </reference>
        <reference anchor="RFC9001">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="RFC5288">
          <front>
            <title>AES Galois Counter Mode (GCM) Cipher Suites for TLS</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey">
              <organization/>
            </author>
            <author fullname="A. Choudhury" initials="A." surname="Choudhury">
              <organization/>
            </author>
            <author fullname="D. McGrew" initials="D." surname="McGrew">
              <organization/>
            </author>
            <date month="August" year="2008"/>
            <abstract>
              <t>This memo describes the use of the Advanced Encryption Standard (AES) in Galois/Counter Mode (GCM) as a Transport Layer Security (TLS) authenticated encryption operation.  GCM provides both confidentiality and data origin authentication, can be efficiently implemented in hardware for speeds of 10 gigabits per second and above, and is also well-suited to software implementations.  This memo defines TLS cipher suites that use AES-GCM with RSA, DSA, and Diffie-Hellman-based key exchange mechanisms.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5288"/>
          <seriesInfo name="DOI" value="10.17487/RFC5288"/>
        </reference>
        <reference anchor="RFC5246">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks">
              <organization/>
            </author>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="August" year="2008"/>
            <abstract>
              <t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol.  The TLS protocol provides communications security over the Internet.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5246"/>
          <seriesInfo name="DOI" value="10.17487/RFC5246"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
EIWPAAA=

-->

</rfc>
