<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.6.2 (Ruby 3.0.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-irtf-cfrg-aead-limits-04" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.3 -->
  <front>
    <title abbrev="AEAD Limits">Usage Limits on AEAD Algorithms</title>
    <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-aead-limits-04"/>
    <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="March" day="07"/>
    <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 the explicit part of the
nonce is a non-repeating counter. The full nonce is the concatenation of the
two parts. This produces similar limits under most conditions.</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;
          i.e., likely negligible in comparison, but we include it as both are small.
        
        - 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>, number of protected messages <tt>q</tt>
and maximum blocks encrypted <tt>B</tt>, across all used keys:</t>
          <artwork><![CDATA[
CA <= ((o + q) / 2^247) + ((B + q)^2 / 2^513)
]]></artwork>
          <!--
    Simplifying
      p >= ((o + q) / 2^247) + ((B + q)^2 / 2^513)

    to

      p/2 >= (o + q) / 2^247
      AND
      p/2 >= (B + q)^2 / 2^513

    yields

      q <= (p * 2^246) - o
      AND
      q <= sqrt(p) * 2^256 - B
    
    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>It implies the following simplified limit, which for most reasonable values
of <tt>p</tt> is dominated by a technical limitation around <tt>q = 2^100</tt>:</t>
          <artwork><![CDATA[
q <= min( p * 2^246 - o,  sqrt(p) * 2^256 - B, 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^7 blocks) to at most 2^20 (about a
million) per key results in B = 2^27, which limits both q and v to 2^42 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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
ZggCiVd5iv8FUE00F3mOAAA=

-->

</rfc>
