<?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.7.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-pham-cfrg-hiae-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="HiAE">The Fast Software Authenticated Encryption HiAE</title>
    <seriesInfo name="Internet-Draft" value="draft-pham-cfrg-hiae-01"/>
    <author initials="F." surname="Denis" fullname="Frank Denis">
      <organization>Fastly Inc.</organization>
      <address>
        <email>fd@00f.net</email>
      </address>
    </author>
    <author initials="P." surname="Pham" fullname="Phuong Pham">
      <organization>Huawei</organization>
      <address>
        <email>pham.phuong@huawei.com</email>
      </address>
    </author>
    <author initials="L." surname="Prabel" fullname="Lucas Prabel">
      <organization>Huawei</organization>
      <address>
        <email>lucas.prabel@huawei.com</email>
      </address>
    </author>
    <author initials="S." surname="Sun" fullname="Sun Shuzhou">
      <organization>Huawei</organization>
      <address>
        <email>sunshuzhou@huawei.com</email>
      </address>
    </author>
    <date year="2025" month="June" day="17"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 164?>

<t>This document describes the high throughput authenticated encryption algorithm HiAE designed for new wireless generation 6G and data transmission applications.</t>
    </abstract>
  </front>
  <middle>
    <?line 168?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Many recent cryptographic designs have utilized SIMD instructions to achieve high performance, particularly on x86 platforms using AES-NI <xref target="AES-NI"/>. AES-NI has become the foundation for many recent high-speed (authenticated) encryption algorithms like AEGIS <xref target="AEGIS"/>, SNOW-V <xref target="SNOW-V"/>, and Rocca-S <xref target="ROCCA-S"/>, which are tailored to take advantage of the parallelism and efficiency offered by these instructions. However, these designs often neglect the architectural differences between x86 and ARM, where SIMD instructions are implemented via NEON rather than AES-NI. This oversight results in inconsistent performance when deploying these algorithms on ARM-based devices, which dominate mobile and embedded systems. The transition to 6G, with its demand for ultra-high data rates and reliance on software-defined
networks (SDN) or  Cloud Radio Access Networks (Cloud RAN), further emphasizes the need for cryptographic algorithms optimized for diverse platforms. While some existing designs achieve remarkable performance on x86—reaching or exceeding 100 Gbps—these same algorithms often perform suboptimally on ARM platforms due to differences in SIMD instruction sets and hardware support for AES round functions. This gap highlights the pressing need for a unified approach that ensures high and consistent performance across both architectures.</t>
      <t>Addressing this challenge requires rethinking cryptographic design to leverage the unique capabilities of each platform while maintaining compatibility and efficiency. This motivates our work in developing a cross-platform cryptographic HiAE that achieves competitive performance on both x86 and ARM architectures, meeting the stringent demands of 6G systems.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words “<bcp14>MUST</bcp14>”, “<bcp14>MUST NOT</bcp14>”, “<bcp14>REQUIRED</bcp14>”, “<bcp14>SHALL</bcp14>”, “<bcp14>SHALL
NOT</bcp14>”, “<bcp14>SHOULD</bcp14>”, “<bcp14>SHOULD NOT</bcp14>”, “<bcp14>RECOMMENDED</bcp14>”, “<bcp14>NOT RECOMMENDED</bcp14>”,
“<bcp14>MAY</bcp14>”, and “<bcp14>OPTIONAL</bcp14>” 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>
      <?line -18?>

<section anchor="notations">
        <name>Notations</name>
        <ul spacing="normal">
          <li>
            <t><tt>AESL(x)</tt>: <tt>AESL(x) = MixColumns o SubBytes o ShiftRows(x)</tt>, of AES operations <xref target="FIPS-AES"/>.</t>
          </li>
          <li>
            <t><tt>a ^ b</tt>: The bitwise exclusive OR operation between a and b.</t>
          </li>
          <li>
            <t><tt>S</tt>: The internal state, composed of 16 blocks, i.e. <tt>S = (S[0], S[1], ..., S[15])</tt>, where <tt>S[i] (0 &lt;= i &lt;= 15)</tt> are blocks and <tt>S[0]</tt> is the first block. The <tt>i</tt>-th state block at round <tt>r</tt> is defined as <tt>S^r[i]</tt>.</t>
          </li>
          <li>
            <t><tt>N</tt>: A <tt>128</tt>-bit nonce.</t>
          </li>
          <li>
            <t><tt>AD_i</tt>: A <tt>128</tt>-bit associated data block.</t>
          </li>
          <li>
            <t><tt>M_i</tt>: A <tt>128</tt>-bit message block.</t>
          </li>
          <li>
            <t><tt>C_i</tt>: A <tt>128</tt>-bit ciphertext block.</t>
          </li>
          <li>
            <t><tt>const_0</tt>: A <tt>128</tt>-bit constant, represented in hexadecimal as <tt>0x3243f6a8885a308d313198a2e0370734</tt>.</t>
          </li>
          <li>
            <t><tt>const_1</tt>: A <tt>128</tt>-bit constant, represented in hexadecimal as <tt>0x4a4093822299f31d0082efa98ec4e6c8</tt>.</t>
          </li>
          <li>
            <t><tt>X || 0^*</tt>: A <tt>128</tt>-bit block string of the concatenation of <tt>X</tt> and the complement of zeros.
-<tt>|M|</tt>: the length in bit of the string <tt>M</tt>.</t>
          </li>
          <li>
            <t><tt>Truncate(x, l)</tt>: Output the upper bits of <tt>x</tt> with length <tt>l</tt>.</t>
          </li>
        </ul>
      </section>
      <section anchor="the-round-function">
        <name>The Round Function</name>
        <t>The input of the round function <tt>UpdateFunction(S,X)</tt> of HiAE consists of the state <tt>S</tt> and a data block <tt>X</tt>.
If denoting the output by <tt>Snew</tt>, <tt>Snew:=UpdateFunction(S,X)</tt> can be defined as follows:</t>
        <artwork><![CDATA[
Snew[15] = AESL(S[0] ^ S[1]) ^ AESL(S[13]) ^ X,
Snew[14] = S[15],
Snew[13] = S[14],
Snew[12] = S[13] ^ X,
Snew[11] = S[12],
Snew[10] = S[11],
Snew[9] = S[10],
Snew[8] = S[9],
Snew[7] = S[8],
Snew[6] = S[7],
Snew[5] = S[6],
Snew[4] = S[5],
Snew[3] = S[4],
Snew[2] = S[3] ^ X,
Snew[1] = S[2],
Snew[0] = S[1]
]]></artwork>
      </section>
    </section>
    <section anchor="algorithm-description">
      <name>Algorithm Description</name>
      <t>In this section, we describe the specification of our design.</t>
      <section anchor="specification">
        <name>Specification</name>
        <t>HiAE is structured into four phases: initialization, processing of associated data, encryption, and finalization. HiAE has a 2048-bit state, made of sixteen 128-bit blocks <tt>S_0||S_1||...||S_{15}</tt>. The parameters for this algorithm, that are consistent with the definition in <xref section="4" sectionFormat="comma" target="RFC5116"/>, are defined as:</t>
        <ul spacing="normal">
          <li>
            <t><tt>K_LEN</tt> (key length): 32 bytes (256 bits).</t>
          </li>
          <li>
            <t><tt>P_MAX</tt> (maximum length of the plaintext): <tt>2^61 - 1</tt> bytes (<tt>2^64 - 8</tt> bits).</t>
          </li>
          <li>
            <t><tt>A_MAX</tt> (maximum length of the associated data): <tt>2^61 - 1</tt> bytes (<tt>2^64 - 8</tt> bits).</t>
          </li>
          <li>
            <t><tt>N_MIN</tt> (minimum nonce length) = <tt>N_MAX</tt> (maximum nonce length) = <tt>16</tt> bytes (<tt>128</tt> bits).</t>
          </li>
          <li>
            <t><tt>C_MAX</tt> (maximum ciphertext length) = <tt>P_MAX + tag length = (2^61 - 1) + 16 bytes</tt> (<tt>2^64 - 8 + 128</tt> bits).</t>
          </li>
        </ul>
        <t>In more details, HiAE takes as input a <tt>256</tt>-bit key <tt>K = K_0||K_1</tt>, a <tt>128</tt>-bit nonce <tt>N</tt>, the associated data <tt>AD</tt>, and the message <tt>M</tt>.
The output includes the ciphertext <tt>C</tt> where <tt>|C| = |M|</tt> and a <tt>128</tt>-bit tag <tt>T</tt>. Initially, <tt>AD</tt> and <tt>M</tt> are padded with <tt>0</tt> to ensure their lengths are multiples of <tt>128</tt> as  <tt>Pad(AD) = AD||0* = AD_0|| ... || AD_{|AD|/128-1}</tt> and <tt>Pad(M) = M||0* = M_0|| ... || M_{|M|/128-1}</tt>.
The encryption and authentication process are described below.</t>
        <section anchor="initialization">
          <name>Initialization</name>
          <t>First, the state is loaded with <tt>(N, K_0, K_1)</tt> as follow:</t>
          <artwork><![CDATA[
  S[0] = const_0,
  S[1] = K_1,
  S[2] = N,
  S[3] = const_0,
  S[4] = ZERO(128),
  S[5] = N ^ K_0,
  S[6] = ZERO(128),
  S[7] = const_1,
  S[8] = N ^ K_1,
  S[9] = ZERO(128),
  S[10] = K_1,
  S[11] = const_0,
  S[12] = const_1,
  S[13] = K_1,
  S[14] = ZERO(128),
  S[15] = const_0 ^ const_1.
]]></artwork>
          <t>Next, the state is updated with <tt>32 UpdateFunction(S, const_0)</tt>, then XORed with the key one more:</t>
          <artwork><![CDATA[
  S[9] = S[9] ^ K_0,
  S[13] = S[13] ^ K_1.
]]></artwork>
        </section>
        <section anchor="processing-the-associated-data">
          <name>Processing the Associated Data</name>
          <t>Following initialization, the associated data <tt>AD</tt> is used to update the state as:</t>
          <artwork><![CDATA[
   for i = 0 to |AD|/128 - 1:
      S = UpdateFunction(S, AD_i)
   end for
]]></artwork>
          <t>This phase is skipped if the associated data is empty.</t>
        </section>
        <section anchor="encryption">
          <name>Encryption</name>
          <t>At each step of the encryption, a <tt>128</tt>-bit message block is used to update the state, and <tt>M_i</tt> is then encrypted to produce <tt>C_i</tt> following, and skipped the phase if the message is empty.</t>
          <artwork><![CDATA[
   for i = 0 to |M|/128 - 1:
      C_i = AESL(S[0] ^ S[1]) ^ S[9] ^ M_i
      S = UpdateFunction(S, M_i)
   end for
]]></artwork>
        </section>
        <section anchor="finalization">
          <name>Finalization</name>
          <t>After encrypting all the message blocks, the state is updated again with the lengths of associated data and message as:</t>
          <artwork><![CDATA[
   for i = 0 to 31:
      S = UpdateFunction(S, |AD||||M|)
   end for
]]></artwork>
          <t>then the authentication tag is generated as:</t>
          <artwork><![CDATA[
   T = S[0] ^ S[1] ^ ... ^ S[15].
]]></artwork>
        </section>
      </section>
      <section anchor="hiae-algorithm">
        <name>HiAE Algorithm</name>
        <t>A pseudo algorithm of HiAE is described in the following.</t>
        <artwork><![CDATA[
HiAE Algorithm. The internal structures of HiAE are:

   procedure Initialization(N, K_0, K_1)
      S[0] = const_0,
      S[1] = K_1,
      S[2] = N,
      S[3] = const_0,
      S[4] = ZERO(128),
      S[5] = N ^ K_0,
      S[6] = ZERO(128),
      S[7] = const_1,
      S[8] = N ^ K_1,
      S[9] = ZERO(128),
      S[10] = K_1,
      S[11] = const_0,
      S[12] = const_1,
      S[13] = K_1,
      S[14] = ZERO(128),
      S[15] = const_0 ^ const_1.
      for i = 0 to 31 do
         S <-- UpdateFunction(S, const_0)
      end for
      S[9] = S[9] ^ K_0,
      S[13] = S[13] ^ K_1
      return S

   procedure ProcessAD(S, Pad(AD))
      d = |AD|/128
      for i = 0 to d - 1 do
         S <-- UpdateFunction(S, AD_i)
      end for
      return S

   procedure Encryption(S, Pad(M), C)
      m = |M|/128
      for i = 0 to m - 1 do
         C_i <-- AESL(S[0] ^ S[1]) ^ S[9] ^ M_i
         S <-- UpdateFunction(S, M_i)
      end for
      return S

   procedure Decryption(S, Pad(C), M)
      c = |C|/128
      for i = 0 to c - 1 do
         M_i <-- AESL(S[0] ^ S[1]) ^ S[9] ^ C_i
         S <-- UpdateFunction(S, M_i)
      end for
      return S

   procedure Finalization(S, |AD|, |M|)
      for i = 0 to 31 do
         S <-- UpdateFunction(S, |AD|, |M|)
      end for
      T = 0
      for i = 0 to 15 do
         T = T ^ S[i]
      end for
      return T
]]></artwork>
      </section>
    </section>
    <section anchor="settings-specifications">
      <name>Settings Specifications</name>
      <section anchor="authenticated-encryption">
        <name>Authenticated Encryption</name>
        <t><tt>
Encrypt(msg, ad, key, nonce)
</tt></t>
        <t>The Encrypt function encrypts a message and returns the ciphertext along with an authentication tag that confirms the integrity and authenticity of both the message and any associated data, if present.</t>
        <t>Security:</t>
        <ul spacing="normal">
          <li>
            <t>For a specific key, the nonce <bcp14>MUST</bcp14> NEVER be reused under any circumstances, as doing so could enable an attacker to reconstruct the internal state.</t>
          </li>
          <li>
            <t>The key <bcp14>MUST</bcp14> be selected randomly from a uniform distribution.</t>
          </li>
        </ul>
        <t>Inputs:</t>
        <ul spacing="normal">
          <li>
            <t>msg: the message to be encrypted (its length <bcp14>MUST</bcp14> not exceed P_MAX).</t>
          </li>
          <li>
            <t>ad: the associated data to authenticate (its length <bcp14>MUST</bcp14> not exceed A_MAX).</t>
          </li>
          <li>
            <t>key: the encryption key (256 bits).</t>
          </li>
          <li>
            <t>nonce: the public nonce.</t>
          </li>
        </ul>
        <t>Outputs:</t>
        <ul spacing="normal">
          <li>
            <t>ct: the ciphertext.</t>
          </li>
          <li>
            <t>tag: the authentication tag.</t>
          </li>
        </ul>
        <t>Process:</t>
        <artwork><![CDATA[
K = K_1||K_2
S = 0
ct = {}
S = Initialization(nonce, K_1, K_2)
S = ProcessAD(S, Pad(AD))
S = Encryption(S, Pad(msg), ct)
ct = Truncate(ct, |msg|)
tag = Finalization(S, |ad|, |msg|)
return ct and tag
]]></artwork>
      </section>
      <section anchor="authenticated-decryption">
        <name>Authenticated Decryption</name>
        <t><tt>
Decrypt(ct, tag, ad, key, nonce)
</tt></t>
        <t>The Decrypt function decrypts the ciphertext, checks the validity of the authentication tag, and returns the message if the tag is verified successfully, or an error if the tag verification fails.</t>
        <t>Security:</t>
        <ul spacing="normal">
          <li>
            <t>If tag verification fails, the scheme <bcp14>MUST NOT</bcp14> output the decrypted ciphertext.</t>
          </li>
        </ul>
        <t>Inputs:</t>
        <ul spacing="normal">
          <li>
            <t>ct: the ciphertext to decrypt (its length <bcp14>MUST NOT</bcp14> exceed C_MAX).</t>
          </li>
          <li>
            <t>tag: the authentication tag.</t>
          </li>
          <li>
            <t>ad: the associated data to authenticate (its length <bcp14>MUST NOT</bcp14> exceed A_MAX).</t>
          </li>
          <li>
            <t>key: the encryption key.</t>
          </li>
          <li>
            <t>nonce: the public nonce.</t>
          </li>
        </ul>
        <t>Outputs:</t>
        <ul spacing="normal">
          <li>
            <t>Either the decrypted message msg or an error indicating that the authentication tag is invalid for the provided inputs.</t>
          </li>
        </ul>
        <t>Process:</t>
        <artwork><![CDATA[
K = K_1||K_2
S = 0
msg = {}
S = Initialization(nonce, K_1, K_2)
S = ProcessAD(S, Pad(AD))
S = Decryption(S, Pad(ct), msg)
expected_tag = Finalization(S, |ad|, |msg|)
If tag != expected_tag:
   erase msg
   erase expected_tag
   return "verification failed" error
else:
   msg = Truncate(msg, |ct|)
   return msg
]]></artwork>
      </section>
    </section>
    <section anchor="setting-as-a-stream-cipher">
      <name>Setting as a Stream Cipher</name>
      <t><tt>
Keystream(len, key, nonce)
</tt></t>
      <t>The Stream function generates a keystream of variable length by expanding a key and, optionally, a nonce.</t>
      <t>Inputs:</t>
      <ul spacing="normal">
        <li>
          <t>len: Desired length of the keystream in bits.</t>
        </li>
        <li>
          <t>key: The HiAE encryption key.</t>
        </li>
        <li>
          <t>nonce: The HiAE nonce. If not provided, it defaults to N_MAX bytes of zeros.</t>
        </li>
      </ul>
      <t>Outputs:</t>
      <ul spacing="normal">
        <li>
          <t>keystream: The resulting keystream.</t>
        </li>
      </ul>
      <t>Process:</t>
      <artwork><![CDATA[
if len == 0:
   return {}
else:
   K = K_1||K_2
   S = 0
   keystream = {}
   S = Initialization(nonce, K_1, K_2)
   msg = Zero(len)
   S = Encryption(S, Pad(msg), keystream)
   return keystream
]]></artwork>
      <t>The process of generating the keystream is equivalent to encrypting a zero-filled message of length <tt>len</tt>.</t>
    </section>
    <section anchor="setting-as-a-message-authentication-code">
      <name>Setting as a Message Authentication Code</name>
      <t>HiAE can also be used to construct a Message Authentication Code (MAC), taking a key, nonce, and data as input, and producing a 128-bit authentication tag as output.</t>
      <t><tt>
Mac(data, key, nonce)
</tt></t>
      <t>Security:</t>
      <ul spacing="normal">
        <li>
          <t>This is the only function where reusing the same (key, nonce) pair with different input data is permitted.</t>
        </li>
        <li>
          <t>HiAE-based MACs <bcp14>MUST NOT</bcp14> be used as hash functions, as a known key allows for easy construction of inputs that cause state collisions.</t>
        </li>
        <li>
          <t>Unlike MACs built on cryptographic hashes, HiAE-generated tags <bcp14>MUST NOT</bcp14> be used for key derivation, since they are not guaranteed to be uniformly random.</t>
        </li>
      </ul>
      <t>Inputs:</t>
      <ul spacing="normal">
        <li>
          <t>data: The data to be authenticated (<bcp14>MUST NOT</bcp14> exceed A_MAX in length).</t>
        </li>
        <li>
          <t>key: The secret key.</t>
        </li>
        <li>
          <t>nonce: The public nonce.</t>
        </li>
      </ul>
      <t>Output:</t>
      <ul spacing="normal">
        <li>
          <t>tag: The resulting authentication tag.</t>
        </li>
      </ul>
      <t>Process:</t>
      <artwork><![CDATA[
K = K_1||K_2
S = 0
S = Initialization(nonce, K_1, K_2)
S = ProcessAD(S, Pad(data))
tag = Finalization(S, |data|, 0)
return tag
]]></artwork>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="classic-setting">
        <name>Classic Setting</name>
        <t>HiAE provides <tt>256</tt>-bit security against key recovery and state recovery attacks,
along with <tt>128</tt>-bit security for integrity against forgery attempts. It is important to
note that the encryption security assumes the attacker cannot successfully forge messages
through repeated trials.
Related to the keystream bias attacks, our analysis shows that at least <tt>150</tt>-bit security is guaranteed by HiAE.
Finally, we claim that HiAE is secure in the key-commiting attacks, and we do not claim its security in the everything-commiting setting.</t>
      </section>
      <section anchor="quantum-setting">
        <name>Quantum Setting</name>
        <t>HiAE targets a security strength of <tt>128</tt> bits against key recovery attacks and forgery attacks in quantum setting. We do not claim security against online superposition queries to the cryptographic oracle attacks, as such attacks are highly impractical in real-world applications.</t>
      </section>
      <section anchor="attacks-considerations">
        <name>Attacks Considerations</name>
        <t>HiAE is secure against the following attacks:</t>
        <artwork><![CDATA[
  1. Key-Recovery Attack: 256-bit security against key-recovery attacks.
  2. Differential Attack: 256-bit security against differential attacks in the initialization phase.
  3. Forgery Attack: 128-bit security against forgery attacks.
  4. Integral Attack: Secure against integral attacks.
  5. State-recovery Attack:
      * Guess-and-Determine Attack: The time complexity of the guess-and-determine attack cannot be lower than 2^{256}.
      * Algebraic Attack: The system of equations to recover HiAE states cannot be solved with time complexity 2^{256}.

  6. The Linear Bias: at least 150-bit security against a statistical attack.
  7. Key-committing attacks: Secure in the FROB, CMT1, and CMT2 models.
  8. Everything-committing attacks: We do not claim the security of HiAE in CMT3 model.
]]></artwork>
        <t>The details of the cryptanalysis can be found in the paper <xref target="HiAE"/>.</t>
      </section>
    </section>
    <section anchor="implementation-consideration">
      <name>Implementation Consideration</name>
      <t>HiAE is designed to balance the performance of XOR and AES-NI instructions across both ARM and x86 architectures, while being optimized to push performance to its limits.</t>
      <t>A complete list of known implementations and integrations is available at https://github.com/Concyclics/HiAE, including reference implementations of HiAE as AEAD Encryption and Decryption, and HiAE-MAC. A comprehensive comparison of HiAE’s performance with other high-throughput authenticated encryption schemes on ARM and x86 architectures is also provided.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TBD.</t>
    </section>
    <section anchor="test-vectors">
      <name>Test Vectors</name>
      <section anchor="test-vector-1">
        <name>Test Vector 1</name>
        <sourcecode type="test-vectors"><![CDATA[
key   : 90bbc6ec798423365146306759d6812e
        37c3740df539834052bd1f46f57d5785

nonce : 381d72b1a195e7f3dc185a35eedb6326

ad    : 9fd7339411b6d56373f4a9697200eeaa
        1d605cbff643b2d25b0c074ae76a7086
        42a31b5359f0b6cde45f36566024017d
        855d3c7ba0ee4dfcfa5446e2beb66800
        598353b273097f5869b5aec9daaf465f
        0c83daad7127a96c7bef4e39a5b63afe

msg   : 3a8db0ad97300500e5b4c9bf630f1e70
        92f81d041fc6709ab5bed45a740e58ae
        9b085c323861321e15fbdd790bfce99d
        f406a114cc11ae81cf82db449033f22c
        3b4e5e74b09192c58c6f3e976b273560
        2dd674f9e8227ab7a555fb3588ee61c4
        3cc038ec51cab2dd39f075a518aa0545
        80793f689bb920400f1b769709d75b46

ct    : ff9fcccf03188954a27c74821b76332b
        d2490761f9d3e3be14613e91ab0af720
        cc63177cc72a63eea503bed4cb70b0c4
        2d38551b47b7bbda52f23374a4feea06
        b8b9c9d3c888935e4a78de02ec329bc8
        66053c77fdabe930f273adc0175802ca
        31b645d1958afc28806843a671347301
        130d23a94f3adee985fb2e60f0d5d024

tag   : 66346519818b4cb2919e61b5f6c28a9b
]]></sourcecode>
      </section>
      <section anchor="test-vector-2">
        <name>Test Vector 2</name>
        <artwork><![CDATA[
key =
90bbc6ec798423365146306759d6812e
37c3740df539834052bd1f46f57d5785

nonce =
381d72b1a195e7f3dc185a35eedb6326

associated data =
9fd7339411b6d56373f4a9697200eeaa
1d605cbff643b2d25b0c074ae76a7086
42a31b5359f0b6cde45f36566024017d

plaintext =
855d3c7ba0ee4dfcfa5446e2beb66800
598353b273097f5869b5aec9daaf465f
0c83daad7127a96c7bef4e39a5b63afe
3a8db0ad97300500e5b4c9bf630f1e70
92f81d041fc6709ab5bed45a740e58ae
9b085c323861321e15fbdd790bfce99d
f406a114cc11ae81cf82db449033f22c
3b4e5e74b09192c58c6f3e976b273560
2dd674f9e8227ab7a555fb3588ee61c4
3cc038ec51cab2dd39f075a518aa0545
80793f689bb920400f1b769709d75b46
979332e85de4c697d53b3cede5413265
ba71ce552bee963a090cd113e32d597b
c08b631e7029b54564f132493264afec
d67d41016bd73b74e30c87c739e042fa
6ca518dccfcd2133be537df0b72cdc8d
a91d8e14f5c988d8d6109f0ff0e1095c
87213856ee5989acac069c643278f1db
9680ef8b4978631f88032f78e438d56b
5a0dc148674bf513519177840a695fa0
e94f2b32c78e524f9181c776b99ce113
aaa35c11ee51243fe29cc3ec05238cee
72b72039467288d7f34f4dadec2fc096
d21ca7c06dcbff5067c33c6ce6c95a58

ciphertext =
17cd9eac8632514382d4cfc2d93954a2
e3464bd599563524543140c972f65260
453d8f2975609fc41960b20ac522fa73
ff9fcccf03188954a27c74821b76332b
d2490761f9d3e3be14613e91ab0af720
cc63177cc72a63eea503bed4cb70b0c4
2d38551b47b7bbda52f23374a4feea06
b8b9c9d3c888935e4a78de02ec329bc8
66053c77fdabe930f273adc0175802ca
31b645d1958afc28806843a671347301
130d23a94f3adee985fb2e60f0d5d024
dab94f8fd41ccfef27898e5581c4add2
05d3ac44b51df43854cb6a10292ea986
c9725ea6db27695f7ec1c31299e24f8b
e1d44953afb66707179cf873e94a273d
e5fb369ae0314013560e3c597fda5178
c254cf457d3dde55441267fda2145ad5
2a16fbb2d9fa63c6ce8f2175086e5a9d
da2089bc5890f2c7ed81d8049e491035
e0cff5abf178e1dfbbcd1ab7ec47ea8d
854419a04f9f8cdd1542c27da97c30e0
bea2f4a7710d72346e0c7369202692ba
5a43850d5a349d4410155f2bc700a655
d2aa57ab9cfa6dd2db0918c4a43a8628

tag =
6bcf434bcbf11824fb40e01ba5023358
]]></artwork>
      </section>
      <section anchor="test-vector-3">
        <name>Test Vector 3</name>
        <artwork><![CDATA[
key =
90bbc6ec798423365146306759d6812e
37c3740df539834052bd1f46f57d5785

nonce =
381d72b1a195e7f3dc185a35eedb6326

associated data =
9fd7339411b6d56373f4a9697200eeaa
1d605cbff643b2d25b0c074ae76a7086
42a31b5359f0b6cde45f36566024017d
855d3c7ba0ee4dfcfa5446e2beb66800
598353b273097f5869b5aec9daaf465f
0c83daad7127a96c7bef4e39a5b63afe
3a8db0ad97300500e5b4c9bf630f1e70
92f81d041fc6709ab5bed45a740e58ae
9b085c323861321e15fbdd790bfce99d
f406a114cc11ae81cf82db449033f22c
3b4e5e74b09192c58c6f3e976b273560

plaintext =
2dd674f9e8227ab7a555fb3588ee61c4

ciphertext =
66053c77fdabe930f273adc0175802ca

tag =
153ba395e9a447f2b34a717dc1608d8a
]]></artwork>
      </section>
      <section anchor="test-vector-4">
        <name>Test Vector 4</name>
        <artwork><![CDATA[
key =
90bbc6ec798423365146306759d6812e
37c3740df539834052bd1f46f57d5785

nonce =
381d72b1a195e7f3dc185a35eedb6326

associated data =

plaintext =
9fd7339411b6d56373f4a9697200eeaa
1d605cbff643b2d25b0c074ae76a7086
42a31b5359f0b6cde45f36566024017d
855d3c7ba0ee4dfcfa5446e2beb66800
598353b273097f5869b5aec9daaf465f
0c83daad7127a96c7bef4e39a5b63afe
3a8db0ad97300500e5b4c9bf630f1e70
92f81d041fc6709ab5bed45a740e58ae
9b085c323861321e15fbdd790bfce99d
f406a114cc11ae81cf82db449033f22c
3b4e5e74b09192c58c6f3e976b273560
2dd674f9e8227ab7a555fb3588ee61c4
3cc038ec51cab2dd39f075a518aa0545
80793f689bb920400f1b769709d75b46
979332e85de4c697d53b3cede5413265
ba71ce552bee963a090cd113e32d597b
c08b631e7029b54564f132493264afec
d67d41016bd73b74e30c87c739e042fa
6ca518dccfcd2133be537df0b72cdc8d
a91d8e14f5c988d8d6109f0ff0e1095c
87213856ee5989acac069c643278f1db
9680ef8b4978631f88032f78e438d56b
5a0dc148674bf513519177840a695fa0
e94f2b32c78e524f9181c776b99ce113
aaa35c11ee51243fe29cc3ec05238cee
72b72039467288d7f34f4dadec2fc096
d21ca7c06dcbff5067c33c6ce6c95a58
807b91c6ed199ee168eb8e541a4eeaec
6b91acd85dac28c46f6531552e8badae

ciphertext =
d716f4983b0025a57cd4c3c3c94a146d
6cb665a4a5f33032ae3f86dc1a6caed0
5243a1cd70688710da9b9bf9b1e32092
17cd9eac8632514382d4cfc2d93954a2
e3464bd599563524543140c972f65260
453d8f2975609fc41960b20ac522fa73
ff9fcccf03188954a27c74821b76332b
d2490761f9d3e3be14613e91ab0af720
cc63177cc72a63eea503bed4cb70b0c4
2d38551b47b7bbda52f23374a4feea06
b8b9c9d3c888935e4a78de02ec329bc8
66053c77fdabe930f273adc0175802ca
31b645d1958afc28806843a671347301
130d23a94f3adee985fb2e60f0d5d024
dab94f8fd41ccfef27898e5581c4add2
05d3ac44b51df43854cb6a10292ea986
c9725ea6db27695f7ec1c31299e24f8b
e1d44953afb66707179cf873e94a273d
e5fb369ae0314013560e3c597fda5178
c254cf457d3dde55441267fda2145ad5
2a16fbb2d9fa63c6ce8f2175086e5a9d
da2089bc5890f2c7ed81d8049e491035
e0cff5abf178e1dfbbcd1ab7ec47ea8d
854419a04f9f8cdd1542c27da97c30e0
bea2f4a7710d72346e0c7369202692ba
5a43850d5a349d4410155f2bc700a655
d2aa57ab9cfa6dd2db0918c4a43a8628
98f538a011f96f60e25662c66df7ccd1
73615cfed071632089825c791163fabe

tag =
250f1f5bdd8d05be98306b42474e7ee3
]]></artwork>
      </section>
      <section anchor="test-vector-5">
        <name>Test Vector 5</name>
        <artwork><![CDATA[
key =
90bbc6ec798423365146306759d6812e
37c3740df539834052bd1f46f57d5785

nonce =
381d72b1a195e7f3dc185a35eedb6326

associated data =
9fd7339411b6d56373f4a9697200eeaa
1d605cbff643b2d25b0c074ae76a7086
42a31b5359f0b6cde45f36566024017d
855d3c7ba0ee4dfcfa5446e2beb66800
598353b273097f5869b5aec9daaf465f
0c83daad7127a96c7bef4e39a5b63afe
3a8db0ad97300500e5b4c9bf630f1e70
92f81d041fc6709ab5bed45a740e58ae
9b085c323861321e15fbdd790bfce99d
f406a114cc11ae81cf82db449033f22c
3b4e5e74b09192c58c6f3e976b273560
2dd674f9e8227ab7a555fb3588ee61c4
3cc038ec51cab2dd39f075a518aa0545
80793f689bb920400f1b769709d75b46

plaintext =
979332e85de4c697d53b3cede5413265
ba71ce552bee963a090cd113e32d597b
c08b631e7029b54564f132493264afec
d67d41016bd73b74e30c87c739e042fa
6ca518dccfcd2133be537df0b72cdc8d
a91d8e14f5c988d8d6109f0ff0e1095c
87213856ee5989acac069c643278f1db

ciphertext =
dab94f8fd41ccfef27898e5581c4add2
05d3ac44b51df43854cb6a10292ea986
c9725ea6db27695f7ec1c31299e24f8b
e1d44953afb66707179cf873e94a273d
e5fb369ae0314013560e3c597fda5178
c254cf457d3dde55441267fda2145ad5
2a16fbb2d9fa63c6ce8f2175086e5a9d

tag =
2e9d4b892ecf8d1c1726d6b2d00a7fb3
]]></artwork>
      </section>
      <section anchor="test-vector-6">
        <name>Test Vector 6</name>
        <artwork><![CDATA[
key =
90bbc6ec798423365146306759d6812e
37c3740df539834052bd1f46f57d5785

nonce =
381d72b1a195e7f3dc185a35eedb6326

associated data =

plaintext =
9fd7339411b6d56373f4a9697200eeaa
1d605cbff643b2d25b0c074ae76a7086
42a31b5359f0b6cde45f36566024017d
855d3c7ba0ee4dfcfa5446e2beb66800
598353b273097f5869b5aec9daaf465f
0c83daad7127a96c7bef4e39a5b63afe
3a8db0ad97300500e5b4c9bf630f1e70
92f81d041fc6709ab5bed45a740e58ae
9b085c323861321e15fbdd790bfce99d
f406a114cc11ae81cf82db449033f22c
3b4e5e74b09192c58c6f3e976b273560
2dd674f9e8227ab7a555fb3588ee61c4
3cc038ec51cab2dd39f075a518aa0545
80793f689bb920400f1b769709d75b46
979332e85de4c697d53b3cede5413265
ba71ce552bee963a090cd113e32d597b
c08b631e7029b54564f132493264afec
d67d41016bd73b74e30c87c739e042fa
6ca518dccfcd2133be537df0b72cdc8d
a91d8e14f5c988d8d6109f0ff0e1095c
87213856ee5989acac069c643278f1db
9680ef8b4978631f88032f78e438d56b
5a0dc148674bf513519177840a695fa0

ciphertext =
d716f4983b0025a57cd4c3c3c94a146d
6cb665a4a5f33032ae3f86dc1a6caed0
5243a1cd70688710da9b9bf9b1e32092
17cd9eac8632514382d4cfc2d93954a2
e3464bd599563524543140c972f65260
453d8f2975609fc41960b20ac522fa73
ff9fcccf03188954a27c74821b76332b
d2490761f9d3e3be14613e91ab0af720
cc63177cc72a63eea503bed4cb70b0c4
2d38551b47b7bbda52f23374a4feea06
b8b9c9d3c888935e4a78de02ec329bc8
66053c77fdabe930f273adc0175802ca
31b645d1958afc28806843a671347301
130d23a94f3adee985fb2e60f0d5d024
dab94f8fd41ccfef27898e5581c4add2
05d3ac44b51df43854cb6a10292ea986
c9725ea6db27695f7ec1c31299e24f8b
e1d44953afb66707179cf873e94a273d
e5fb369ae0314013560e3c597fda5178
c254cf457d3dde55441267fda2145ad5
2a16fbb2d9fa63c6ce8f2175086e5a9d
da2089bc5890f2c7ed81d8049e491035
e0cff5abf178e1dfbbcd1ab7ec47ea8d

tag =
7f6026d8e7d0296dc37f52bad0aa964f
]]></artwork>
      </section>
      <section anchor="test-vector-7">
        <name>Test Vector 7</name>
        <artwork><![CDATA[
key =
90bbc6ec798423365146306759d6812e
37c3740df539834052bd1f46f57d5785

nonce =
381d72b1a195e7f3dc185a35eedb6326

associated data =

plaintext =
9fd7339411b6d56373f4a9697200eeaa
1d605cbff643b2d25b0c074ae76a7086
42a31b5359f0b6cde45f36566024017d
855d3c7ba0ee4dfcfa5446e2beb66800
598353b273097f5869b5aec9daaf465f
0c83daad7127a96c7bef4e39a5b63afe
3a8db0ad97300500e5b4c9bf630f1e70
92f81d041fc6709ab5bed45a740e58ae
9b085c323861321e15fbdd790bfce99d
f406a114cc11ae81cf82db449033f22c

ciphertext =
d716f4983b0025a57cd4c3c3c94a146d
6cb665a4a5f33032ae3f86dc1a6caed0
5243a1cd70688710da9b9bf9b1e32092
17cd9eac8632514382d4cfc2d93954a2
e3464bd599563524543140c972f65260
453d8f2975609fc41960b20ac522fa73
ff9fcccf03188954a27c74821b76332b
d2490761f9d3e3be14613e91ab0af720
cc63177cc72a63eea503bed4cb70b0c4
2d38551b47b7bbda52f23374a4feea06

tag =
2b84d89eac778e1f6e02938d6bbc6440
]]></artwork>
      </section>
      <section anchor="test-vector-8">
        <name>Test Vector 8</name>
        <artwork><![CDATA[
key =
90bbc6ec798423365146306759d6812e
37c3740df539834052bd1f46f57d5785

nonce =
381d72b1a195e7f3dc185a35eedb6326

associated data =
9fd7339411b6d56373f4a9697200eeaa
1d605cbff643b2d25b0c074ae76a7086
42a31b5359f0b6cde45f36566024017d
855d3c7ba0ee4dfcfa5446e2beb66800
598353b273097f5869b5aec9daaf465f
0c83daad7127a96c7bef4e39a5b63afe
3a8db0ad97300500e5b4c9bf630f1e70
92f81d041fc6709ab5bed45a740e58ae
9b085c323861321e15fbdd790bfce99d
f406a114cc11ae81cf82db449033f22c
3b4e5e74b09192c58c6f3e976b273560
2dd674f9e8227ab7a555fb3588ee61c4
3cc038ec51cab2dd39f075a518aa0545
80793f689bb920400f1b769709d75b46

plaintext =
979332e85de4c697d53b3cede5413265
ba71ce552bee963a090cd113e32d597b
c08b631e7029b54564f132493264afec
d67d41016bd73b74e30c87c739e042fa
6ca518dccfcd2133be537df0b72cdc8d
a91d8e14f5c988d8d6109f0ff0e1095c
87213856ee5989acac069c643278f1db
9680ef8b4978631f88032f78e438d56b
5a0dc148674bf513519177840a695fa0
e94f2b32c78e524f9181c776b99ce113
aaa35c11ee51243fe29cc3ec05238cee
72b72039467288d7f34f4dadec2fc096
d21ca7c06dcbff5067c33c6ce6c95a58
807b91c6ed199ee168eb8e541a4eeaec
6b91acd85dac28c46f6531552e8badae
063e75f45713d5bffe631419b1fe051c
90b2f5ed5e1db1cd82e222b06ecf5f74
0dd46864e73d23e5a037fe5236046ec6
b663b3148164e1034703b4b5d21329df
e79243cecf66b3709eb2c2d4b6309a6c
944d8015b16118f864ccad36dfd715c6
69589438be48a85cfa6a30b09bca1c2f
179c44c9fd5cc161296f970846accfaf
0463e7c2ab901fa5fa4f55951a71c431
0d08fa0a65bc6b8e2b029671ae6520b2
c907757497941a92e36f27fde1ec2fee
f429f959e564e710677e8115e3a1c8ac
a93d2140d13bd2b4aafab28be6e17ada

ciphertext =
dab94f8fd41ccfef27898e5581c4add2
05d3ac44b51df43854cb6a10292ea986
c9725ea6db27695f7ec1c31299e24f8b
e1d44953afb66707179cf873e94a273d
e5fb369ae0314013560e3c597fda5178
c254cf457d3dde55441267fda2145ad5
2a16fbb2d9fa63c6ce8f2175086e5a9d
da2089bc5890f2c7ed81d8049e491035
e0cff5abf178e1dfbbcd1ab7ec47ea8d
854419a04f9f8cdd1542c27da97c30e0
bea2f4a7710d72346e0c7369202692ba
5a43850d5a349d4410155f2bc700a655
d2aa57ab9cfa6dd2db0918c4a43a8628
98f538a011f96f60e25662c66df7ccd1
73615cfed071632089825c791163fabe
5d64c6912c9df6ab0a4ef97b5c848cf4
226172cb26dde45b1f5803b51dcabeb9
088430aafd7ef86f75d161db607b6eae
a93ceff57bee877b8035f081f17fbb0d
38b5258ed3c2a25dd7f1776207e7882d
8321b0f1fb6ef6360616c06945f42035
e069001b5d20b6a1d7573e53fe89cb61
b9dc3e6e4b5b17875550ff2f639fd370
e7b89d24db4613bc1dfdc4c06a62a515
f1c7df93c4ad8596e9016ba98137814d
0dcc3f39306d2a4743d05b429d2b669a
d09ac2f2320653fa84e24a3fc456bb65
2d74782e4d8e7b2412a0c2daeb48db4a

tag =
ed4dacb2fbaa31ca4633509cef1c92fb
]]></artwork>
      </section>
      <section anchor="test-vector-9">
        <name>Test Vector 9</name>
        <artwork><![CDATA[
key =
90bbc6ec798423365146306759d6812e
37c3740df539834052bd1f46f57d5785

nonce =
381d72b1a195e7f3dc185a35eedb6326

associated data =
9fd7339411b6d56373f4a9697200eeaa
1d605cbff643b2d25b0c074ae76a7086
42a31b5359f0b6cde45f36566024017d

plaintext =
855d3c7ba0ee4dfcfa5446e2beb66800
598353b273097f5869b5aec9daaf465f
0c83daad7127a96c7bef4e39a5b63afe
3a8db0ad97300500e5b4c9bf630f1e70
92f81d041fc6709ab5bed45a740e58ae
9b085c323861321e15fbdd790bfce99d
f406a114cc11ae81cf82db449033f22c
3b4e5e74b09192c58c6f3e976b273560
2dd674f9e8227ab7a555fb3588ee61c4
3cc038ec51cab2dd39f075a518aa0545
80793f689bb920400f1b769709d75b46

ciphertext =
17cd9eac8632514382d4cfc2d93954a2
e3464bd599563524543140c972f65260
453d8f2975609fc41960b20ac522fa73
ff9fcccf03188954a27c74821b76332b
d2490761f9d3e3be14613e91ab0af720
cc63177cc72a63eea503bed4cb70b0c4
2d38551b47b7bbda52f23374a4feea06
b8b9c9d3c888935e4a78de02ec329bc8
66053c77fdabe930f273adc0175802ca
31b645d1958afc28806843a671347301
130d23a94f3adee985fb2e60f0d5d024

tag =
a538e4a016862a323841ecbef9855b1d
]]></artwork>
      </section>
      <section anchor="test-vector-10">
        <name>Test Vector 10</name>
        <artwork><![CDATA[
key =
90bbc6ec798423365146306759d6812e
37c3740df539834052bd1f46f57d5785

nonce =
381d72b1a195e7f3dc185a35eedb6326

associated data =
9fd7339411b6d56373f4a9697200eeaa
1d605cbff643b2d25b0c074ae76a7086
42a31b5359f0b6cde45f36566024017d

plaintext =
855d3c7ba0ee4dfcfa5446e2beb66800
598353b273097f5869b5aec9daaf465f
0c83daad7127a96c7bef4e39a5b63afe
3a8db0ad97300500e5b4c9bf630f1e70
92f81d041fc6709ab5bed45a740e58ae
9b085c323861321e15fbdd790bfce99d
f406a114cc11ae81cf82db449033f22c
3b4e5e74b09192c58c6f3e976b273560
2dd674f9e8227ab7a555fb3588ee61c4
3cc038ec51cab2dd39f075a518aa0545
80793f689bb920400f1b769709d75b46
979332e85de4c697d53b3cede5413265
ba71ce552bee963a090cd113e32d597b
c08b631e7029b54564f132493264afec
d67d41016bd73b74e30c87c739e042fa
6ca518dccfcd2133be537df0b72cdc8d
a91d8e14f5c988d8d6109f0ff0e1095c
87213856ee5989acac069c643278f1db
9680ef8b4978631f88032f78e438d56b
5a0dc148674bf513519177840a695fa0
e94f2b32c78e524f9181c776b99ce113
aaa35c11ee51243fe29cc3ec05238cee
72b72039467288d7f34f4dadec2fc096
d21ca7c06dcbff5067c33c6ce6c95a58

ciphertext =
17cd9eac8632514382d4cfc2d93954a2
e3464bd599563524543140c972f65260
453d8f2975609fc41960b20ac522fa73
ff9fcccf03188954a27c74821b76332b
d2490761f9d3e3be14613e91ab0af720
cc63177cc72a63eea503bed4cb70b0c4
2d38551b47b7bbda52f23374a4feea06
b8b9c9d3c888935e4a78de02ec329bc8
66053c77fdabe930f273adc0175802ca
31b645d1958afc28806843a671347301
130d23a94f3adee985fb2e60f0d5d024
dab94f8fd41ccfef27898e5581c4add2
05d3ac44b51df43854cb6a10292ea986
c9725ea6db27695f7ec1c31299e24f8b
e1d44953afb66707179cf873e94a273d
e5fb369ae0314013560e3c597fda5178
c254cf457d3dde55441267fda2145ad5
2a16fbb2d9fa63c6ce8f2175086e5a9d
da2089bc5890f2c7ed81d8049e491035
e0cff5abf178e1dfbbcd1ab7ec47ea8d
854419a04f9f8cdd1542c27da97c30e0
bea2f4a7710d72346e0c7369202692ba
5a43850d5a349d4410155f2bc700a655
d2aa57ab9cfa6dd2db0918c4a43a8628

tag =
6bcf434bcbf11824fb40e01ba5023358
]]></artwork>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="FIPS-AES" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.197.pdf">
          <front>
            <title>Advanced encryption standard (AES)</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2001" month="November"/>
          </front>
          <refcontent>Federal Information Processing Standards Publication 197</refcontent>
        </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"/>
            <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"/>
            <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="RFC5116">
          <front>
            <title>An Interface and Algorithms for Authenticated Encryption</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="AEGIS" target="https://competitions.cr.yp.to/round3/aegisv11.pdf">
          <front>
            <title>AEGIS: A Fast Authenticated Encryption Algorithm (v1.1)</title>
            <author initials="H." surname="Wu" fullname="Hongjun Wu">
              <organization>Nanyang Technological University</organization>
            </author>
            <author initials="B." surname="Preneel" fullname="Bart Preneel">
              <organization>KU Leuven</organization>
            </author>
            <date year="2016"/>
          </front>
        </reference>
        <reference anchor="ROCCA-S">
          <front>
            <title>An Ultra-High Throughput AES-Based Authenticated Encryption Scheme for 6G: Design and Implementation</title>
            <author initials="R." surname="Anand" fullname="Ravi Anand">
              <organization/>
            </author>
            <author initials="S." surname="Banik" fullname="Subhadeep Banik">
              <organization/>
            </author>
            <author initials="A." surname="Caforio" fullname="Andrea Caforio">
              <organization/>
            </author>
            <author initials="K." surname="Fukushima" fullname="Kazuhide Fukushima">
              <organization/>
            </author>
            <author initials="T." surname="Isobe" fullname="Takanori Isobe">
              <organization/>
            </author>
            <author initials="S." surname="Kiyomoto" fullname="Shisaku Kiyomoto">
              <organization/>
            </author>
            <author initials="F." surname="Liu" fullname="Fukang Liu">
              <organization/>
            </author>
            <author initials="Y." surname="Nakano" fullname="Yuto Nakano">
              <organization/>
            </author>
            <author initials="K." surname="Sakamoto" fullname="Kosei Sakamoto">
              <organization/>
            </author>
            <author initials="N." surname="Takeuchi" fullname="Nobuyuki Takeuchi">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
          <seriesInfo name="DOI" value="10.1007/978-3-031-50594-2_12"/>
          <refcontent>Cryptology and Network Security (CANS 2023)</refcontent>
        </reference>
        <reference anchor="SNOW-V">
          <front>
            <title>SNOW-V: an AES-based Stream Cipher for 5G and 6G Communication Systems</title>
            <author initials="P." surname="Ekdahl" fullname="Patrik Ekdahl">
              <organization>Ericsson Research</organization>
            </author>
            <author initials="T." surname="Johansson" fullname="Thomas Johansson">
              <organization>Lund University</organization>
            </author>
            <author initials="A." surname="Maximov" fullname="Alexander Maximov">
              <organization>Ericsson Research</organization>
            </author>
            <author initials="J." surname="Yang" fullname="Jing Yang">
              <organization>Ericsson Research</organization>
            </author>
            <date year="2019"/>
          </front>
          <seriesInfo name="DOI" value="10.13154/tosc.v2019.i3.1-42"/>
          <refcontent>IACR Transactions on Symmetric Cryptology, 2019(3)</refcontent>
        </reference>
        <reference anchor="AES-NI" target="https://www.intel.com/content/dam/doc/white-paper/advanced-encryption-standard-new-instructions-set-paper.pdf">
          <front>
            <title>Intel Advanced Encryption Standard (AES) New Instructions Set</title>
            <author initials="S." surname="Gueron" fullname="Shay Gueron">
              <organization>Intel Corporation</organization>
            </author>
            <date year="2010"/>
          </front>
        </reference>
        <reference anchor="HiAE" target="https://eprint.iacr.org/2025/377">
          <front>
            <title>HiAE: A High-Throughput Authenticated Encryption Algorithm for Cross-Platform Efficiency</title>
            <author initials="H." surname="Chen" fullname="Han Chen">
              <organization>Huawei International Pte., Ltd.</organization>
            </author>
            <author initials="T." surname="Huang" fullname="Tao Huang">
              <organization>Huawei International Pte., Ltd.</organization>
            </author>
            <author initials="P." surname="Pham" fullname="Phuong Pham">
              <organization>Huawei International Pte., Ltd.</organization>
            </author>
            <author initials="S." surname="Wu" fullname="Shuang Wu">
              <organization>Huawei International Pte., Ltd.</organization>
            </author>
            <date year="2025"/>
          </front>
          <refcontent>Cryptology ePrint Archive, Paper 2025/377</refcontent>
        </reference>
        <reference anchor="NIST-LWC" target="https://csrc.nist.gov/projects/lightweight-cryptography">
          <front>
            <title>NIST Lightweight Cryptography (LWC)</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+186XobyZXl/3yKaPnHkB4Cyn3hZ3U3i5KqZImUmmR5aX9V
QmREJJFNAInKTFCiS+VvHmIeYJ5lHmWeZM6NyBUARdmeHrtdrG5LyMjY7nLO
vbGkJpOJVef1Qh2zJ1dzxV7yqmaXRVZ/4KViJ5t6rlZ1LnitJHuxEuXdus6L
FfsmP3nxxOJpWqpbtDSPshArvkRPsuRZPVnP+XIisvJ6Ms+5mtiORd1cF+Xd
MatqaVn5ujxmdbmpate2E9u1btTdh6KUx+zVqlblStWT59ST9QuG4pvrstis
j9kpzaFgL4tys7SqTbrMqwpTurpbY+RXL65eWlZV85V8zxfFCkV3qrKqJS/r
9z9silpVpmSdH7M/1IU4YlVR1qXKKvy6W9KP7yyLQ+6iPLbYxGL4L1+h1csp
e65WeaVLjJwvS766GZQW5TVf5X/kpKJjrcrFHWQRU/1WLXm+OGaZ/FfbzqaQ
btT9uyl7B4UNen833xSr67503Ps3G/5B5cOOSd/TtW70r3P9diqK5WiQNxik
5KlaDIZ5sxG8GhY/NM6CGkzXusF9A11O2eVmNRgFT+xyvvnjvNh80SDVZlWZ
6sMhrFVRLtHmVh1bqP3y1bvLycmLy2PdsnXjE3nLVwL+qnp/1R7BS8kOUP3w
ia5fClR+qaQq+QJWykzXqPyuLISCU0H5l007KGiTLggHVMFJItNFzctrVR+z
eV2vq+OnT1e3i/UmraZwiHp6Xdw+pR9U8pSm+vT81eXVlH5N0cN0LTPdSeds
+r9J87dW0TE71yPqCVYQcFMrVmSDaeFvdqXEfFUsius7dkBDHOouJMB2zIAs
Z+I4AFsrYKO7kxdfv9pWnC5iJ4YE7sX+yQIYzuv5kh3cOlOn0eatWm3QySn0
e3LBTovlWqFf1N+rKNG/r6ainN6tp3XxFABfSe8pV9d5des4D2pIu9o3U/bb
TVdkvO0bYOA/4HGDF402V3ccZu00BukW7NsVlFJWeX23f4SvCDVqpRp89MN8
BVbZeaUHev0te6M20MnIFE6Ix4u3p6cnk23Vr9i3i7rkk2/y6zm7mkMT1/P1
BlZ4cTn5ilewwL32uBRztVQM5mXh18egoyq/XmnHeLVcL/BqVWsnGni94VDt
MVTvXNVEsOxSiQ0sCzc6PTm/xIRdr7Fupcoc/cKHWis8f/vqmDn21LHt6GkS
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
grnjQVEAD0f6khHdjiTE8875BohDe/PBC514jLfN+wHN6V/VuzvNVa8s7/f5
rooZlGiDoljrhEgo6CZIxvX9MvoUQm90m73y/ihyhJNuQqZ3czmNBO5e7Pg0
mA1CsWdw5uOB2eDRnZlHbs/MxoHOLXv5NQSaVw+hoHOcf4cEZOrDtuV9Eawb
Z+hYXWG79aW6DWBop70y2uzoDSxVMbqUBODTwY7e7e73ZbRSJ1m+WAz4pcj6
w1i10sexY1c+ayqejEnmtJCqOTajw0++qHRO1G6P9enZZ3tgB2cntOyp+U3n
uQ0sjvqrsO0RhSkyG2mmensytocBedXEnqnB3xkXByaV3YHeKL7pXcbmSoS+
e9Oh0ZxJUArbXWqie3MHg/7YmuelSdDbC3F1c7zS7kquVbnMa3CSRgspsLkb
CU1UfaBpdcnpvm417+/FHRmz3Kzoro8Guj5o1jSveHXXq745+TR03ywN+KZq
d+FEsVjkVXujmH270jdo9SzSTb6o6YbX+HYYTUQ1p0eTfkMM2t4zcZoPTQ+Z
Pl1J0zurUJzQe6Z3+hiDCOF6w5GQ18q4TaradByKN4n6mK9Iiwb+bcxO1dYd
7IO9wZpIrDlXG/NYhcCk6n30tTdkH3cpxpiD/rL8+C+Oq/og894El94iZNpd
etvntf0niqd0Aizbu0065T1dICmCyA0BNPhuOLsanA9WbSd6/7YyB4a0KENg
NStN42N9kV68VUfWYAnb77J33enFfL9ibTpH6XXTCW2CV4gmtc5wlnSBlGum
s+BMqk+Jhl8ud3Otqs2yOW7sFpMgL3LDYXJsxmsZsrKa2/50d0cZh0fwpcT4
Qi14s7s/puE0J4w2IuurBxwWuqtyc0evASOnk176UHjmBPaWImjHuUcGwjtZ
YmppS1Mw/wD8Lni+ND11txeouWq3jTGfiSiWYBvtoO10yDp0XaLQ+DO9UKrb
j22a043VO7rYej3opTKeYe5Q/NsG89sst9zFfPJBHNX1SGppU4v+HPwe5zHz
ZM2d7uthGWb2QzNmOxH22y1RdlwTJE5XBKsNmHddNJfIf9jozwhb0415rii5
WKiBxiryj3k/tdJ8GQFXgQvSNyP6K2jMDtZfTD4U5UJuf7JBC8qm+TbwtqzX
znu089+O3R09OFOGjHJy0arNdH7MANF7ETrZVjLtQrtT9rwNVXDrhzuSw9oD
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
f6H1159zT/7/Ash4qoE0gwAA

-->

</rfc>
