<?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.13 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-irtf-cfrg-aead-limits-05" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.13.0 -->
  <front>
    <title abbrev="AEAD Limits">Usage Limits on AEAD Algorithms</title>
    <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-aead-limits-05"/>
    <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="2022" month="July" day="11"/>
    <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-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/>
            </author>
            <author fullname="Jérôme Govinden" initials="J." surname="Govinden">
              <organization/>
            </author>
            <author fullname="Felix Günther" initials="F." surname="Günther">
              <organization/>
            </author>
            <author fullname="Kenneth G. Paterson" initials="K." surname="Paterson">
              <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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

-->

</rfc>
