<?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.5.26 (Ruby 2.3.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-cose-aes-ctr-and-cbc-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="AES-CTR and AES-CBC with COSE">CBOR Object Signing and Encryption (COSE): AES-CTR and AES-CBC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-cose-aes-ctr-and-cbc-03"/>
    <author initials="R." surname="Housley" fullname="Russ Housley">
      <organization abbrev="Vigil Security">Vigil Security, LLC</organization>
      <address>
        <email>housley@vigilsec.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization>Arm Limited</organization>
      <address>
        <email>hannes.tschofenig@arm.com</email>
      </address>
    </author>
    <date year="2023" month="January" day="19"/>
    <area>Security</area>
    <workgroup>COSE</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>The Concise Binary Object Representation (CBOR) data format is designed
for small code size and small message size. CBOR Object Signing and
Encryption (COSE) is specified in RFC 9052 to provide basic
security services using the CBOR data format. This document specifies the
conventions for using AES-CTR and AES-CBC as Content Encryption
algorithms with COSE.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>This document specifies the conventions for using AES-CTR and AES-CBC 
as Content Encryption algorithms with the CBOR Object Signing and Encryption
(COSE) <xref target="RFC9052"/> syntax.  Encryption with COSE today uses Authenticated
Encryption with Associated Data (AEAD) <xref target="RFC5116"/> algorithms, which provide
both confidentiality and integrity protection.  However, there are situations
where another mechanism, such as a digital signature, is used to provide
integrity.  In these cases, an AEAD algorithm is not needed.  The software
manifest being defined by the IETF SUIT WG <xref target="I-D.ietf-suit-manifest"/> is one
example where a digital signature is always present.</t>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</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="aes-alg">
      <name>AES Modes of Operation</name>
      <t>NIST has defined several modes of operation for Advanced Encryption
Standard (AES) <xref target="AES"/> <xref target="MODES"/>.  AES supports three key sizes: 128 bits,
192 bits, and 256 bits.  The AES has a block size of 128 bits (16 octets).
Each of these modes has different characteristics.  The modes include:
CBC (Cipher Block Chaining), CFB (Cipher FeedBack), OFB (Output FeedBack),
and CTR (Counter).</t>
      <t>Only AES Counter mode (AES-CTR) and AES Cipher Block Chaining (AES-CBC) are
discussed in this document.</t>
    </section>
    <section anchor="aes-ctr">
      <name>AES Counter Mode</name>
      <t>When AES-CTR is used as a COSE Content Encryption algorithm, the
encryptor generates a unique value that is communicated to the
decryptor.  This value is called an initialization vector (IV) in this
document.  The same IV and AES key combination MUST NOT be used more
than once.  The encryptor can generate the IV in any manner that ensures
the same IV value is not use more than once with the same AES key.</t>
      <t>When using AES-CTR, each AES encrypt operation generates 128 bits of key
stream.  AES-CTR encryption is the XOR of the key stream with the
plaintext.  AES-CTR decryption is the XOR of the key stream with the
ciphertext.  If the generated key stream is longer than the plaintext or
ciphertext, the extra key stream bits are simply discarded.  For this reason,
AES-CTR does not require the plaintext to be padded to a multiple of the
block size.</t>
      <t>AES-CTR has many properties that make it an attractive COSE Content Encryption
algorithm.  AES-CTR uses the AES block cipher to create a stream cipher.  Data
is encrypted and decrypted by XORing with the key stream produced by AES
encrypting sequential IV block values, where the first block of the key
key stream is the AES encryption of the IV, the second block of the key
stream is the AES encryption of (IV + 1) mod 2^128, the third block of the key
stream is the AES encryption of (IV + 2) mod 2^128, and so on.  AES-CTR is
easy to implement, and AES-CTR can be pipelined and parallelized.  AES-CTR
also supports key stream precomputation.  Sending of the IV is the only
source of expansion because the plaintext and ciphertext are the same size.</t>
      <t>When used correctly, AES-CTR provides a high level of confidentiality.
Unfortunately, AES-CTR is easy to use incorrectly.  Being a stream
cipher, reuse of the IV with the same key is catastrophic.  An IV
collision immediately leaks information about the plaintext.  For
this reason, it is inappropriate to use this AES-CTR with static
keys.  Extraordinary measures would be needed to prevent reuse of an
IV value with the static key across power cycles.  To be safe,
implementations MUST use fresh keys with AES-CTR.</t>
      <t>AES-CTR keys may be obtained either from a key structure or from a recipient
structure.  Implementations encrypting and decrypting MUST validate that the
key type, key length, and algorithm are correct and appropriate for the
entities involved.</t>
      <t>With AES-CTR, it is trivial to use a valid ciphertext to forge other
(valid to the decryptor) ciphertexts.  Thus, it is equally catastrophic to
use AES-CTR without a companion authentication and integrity
mechanism.  Implementations MUST use AES-CTR in conjunction with an
authentication and integrity mechanism, such as a digital signature.</t>
      <t>Since AES-CTR cannot provide integrity protection for external additional
authenticated data, the decryptor MUST ensure that no external additional
authenticated data was supplied.</t>
      <section anchor="aes-ctr-key">
        <name>AES-CTR COSE Key</name>
        <t>When using a COSE key for the AES-CTR algorithm, the following checks are made:</t>
        <ul spacing="normal">
          <li>The 'kty' field MUST be present, and it MUST be 'Symmetric'.</li>
          <li>If the 'alg' field is present, it MUST match the AES-CTR algorithm being used.</li>
          <li>If the 'key_ops' field is present, it MUST include 'encrypt' when encrypting.</li>
          <li>If the 'key_ops' field is present, it MUST include 'decrypt' when decrypting.</li>
          <li>If the 'protected' field is present, it MUST be a zero-length byte string.</li>
        </ul>
      </section>
      <section anchor="aes-ctr-alg">
        <name>AES-CTR COSE Algoritm Identifiers</name>
        <t>The following table defines the COSE AES-CTR algorithm values.  Note that
these algorithms are being registered as "Deprecated" to avoid accidental
use without a companion integrity protection mechanism.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="center">Value</th>
              <th align="center">Key Size</th>
              <th align="center">Description</th>
              <th align="right">Recommended</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">A128CTR</td>
              <td align="center">TBD1</td>
              <td align="center">128</td>
              <td align="center">AES-CTR w/ 128-bit key</td>
              <td align="right">Deprecated</td>
            </tr>
            <tr>
              <td align="left">A192CTR</td>
              <td align="center">TBD2</td>
              <td align="center">192</td>
              <td align="center">AES-CTR w/ 192-bit key</td>
              <td align="right">Deprecated</td>
            </tr>
            <tr>
              <td align="left">A256CTR</td>
              <td align="center">TBD3</td>
              <td align="center">256</td>
              <td align="center">AES-CTR w/ 256-bit key</td>
              <td align="right">Deprecated</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="aes-cbc">
      <name>AES Cipher Block Chaining Mode</name>
      <t>AES-CBC mode requires an 16 octet Initialization Vector (IV).  Use of a
randomly or pseudo-randomly generated IV ensures that the encryption of the
same plaintext will yield different ciphertext.</t>
      <t>AES-CBC performs an XOR of the IV with the first plaintext block before it
is encrypted.  For successive blocks, AES-CBC performs an XOR of previous
ciphertext block with the current plaintext before it is encrypted.</t>
      <t>AES-CBC requires padding of the plaintext; the padding algorithm specified
in Section 6.3 of <xref target="RFC5652"/> MUST be used prior to encrypting the
plaintext.  This padding algorithm allows the decryptor to unambiguously
remove the padding.</t>
      <t>The simplicity of AES-CBC makes it an attractive COSE Content Encryption
algorithm.  The need to carry an IV and the need for padding lead to an
increase in the overhead (when compared to AES-CTR).  AES-CBC is much safer
for use with static keys than AES-CTR.  That said, as described in <xref target="RFC4107"/>,
the use of automated key management to generate fresh keys is greatly
preferred.</t>
      <t>AES-CBC does not provide integrity protection.  Thus, an attacker
can introduce undetectable errors if AES-CBC is used without a companion
authentication and integrity mechanism.  Implementations MUST use AES-CBC
in conjunction with an authentication and integrity mechanism, such as a
digital signature.</t>
      <t>Since AES-CBC cannot provide integrity protection for external additional
authenticated data, the decryptor MUST ensure that no external additional
authenticated data was supplied.</t>
      <section anchor="aes-cbc-key">
        <name>AES-CBC COSE Key</name>
        <t>When using a COSE key for the AES-CBC algorithm, the following checks are made:</t>
        <ul spacing="normal">
          <li>The 'kty' field MUST be present, and it MUST be 'Symmetric'.</li>
          <li>If the 'alg' field is present, it MUST match the AES-CBC algorithm being used.</li>
          <li>If the 'key_ops' field is present, it MUST include 'encrypt' when encrypting.</li>
          <li>If the 'key_ops' field is present, it MUST include 'decrypt' when decrypting.</li>
          <li>If the 'protected' field is present, it MUST be a zero-length byte string.</li>
        </ul>
      </section>
      <section anchor="aes-cbc-alg">
        <name>AES-CBC COSE Algoritm Identifiers</name>
        <t>The following table defines the COSE AES-CBC algorithm values. Note that
these algorithms are being registered as "Deprecated" to avoid accidental
use without a companion integrity protection mechanism.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="center">Value</th>
              <th align="center">Key Size</th>
              <th align="center">Description</th>
              <th align="right">Recommended</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">A128CBC</td>
              <td align="center">TBD4</td>
              <td align="center">128</td>
              <td align="center">AES-CBC w/ 128-bit key</td>
              <td align="right">Deprecated</td>
            </tr>
            <tr>
              <td align="left">A192CBC</td>
              <td align="center">TBD5</td>
              <td align="center">192</td>
              <td align="center">AES-CBC w/ 192-bit key</td>
              <td align="right">Deprecated</td>
            </tr>
            <tr>
              <td align="left">A256CBC</td>
              <td align="center">TBD6</td>
              <td align="center">256</td>
              <td align="center">AES-CBC w/ 256-bit key</td>
              <td align="right">Deprecated</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="impl-cons">
      <name>Implementation Considerations</name>
      <t>COSE libraries that support either AES-CTR or AES-CBC and accept
Additional Authenticated Data (AAD) as input should return an
error if one of these non-AEAD content encryption algorithm is
selected.  This would ensure that a caller does not expect the AAD
to be protected when the cryptographic algorithm is unable to do so.</t>
    </section>
    <section anchor="iana-cons">
      <name>IANA Considerations</name>
      <t>IANA is requested to register six COSE algorithm identifiers for AES-CTR and
AES-CBC in the COSE Algorithms Registry <xref target="IANA"/>.</t>
      <t>The information for the six COSE algorithm identifiers is provided in
<xref target="aes-ctr-alg"/> and <xref target="aes-cbc-alg"/>.  Also, for all six entries, the
"Capabilities" column should contain "[kty]", the "Change Controller"
column should contain "IESG", and the "Reference" column should contain
a reference to this document.</t>
      <t>Ideally, the six values will be assigned in the -65534 to -261 range.</t>
    </section>
    <section anchor="sec-cons">
      <name>Security Considerations</name>
      <t>This document specifies AES-CTR and AES-CBC for COSE, which are not
authenticated encryption with additional data (AEAD) ciphers.  The use
of the ciphers is limited to special use cases where integrity and
authentication is provided by another mechanism, such as firmware
encryption.</t>
      <t>Since AES has a 128-bit block size, regardless of the mode
employed, the ciphertext generated by AES encryption becomes
distinguishable from random values after 2^64 blocks are encrypted
with a single key.  Implementations should change the key before
before reaching this limit.</t>
      <t>To avoid cross-protocol concerns, implementations MUST NOT use the same
keying material with more than one mode.  For example, the same keying
material must not be used with AES-CTR and AES-CBC.</t>
      <t>There are fairly generic precomputation attacks against all block cipher
modes that allow a meet-in-the-middle attack against the key.  These attacks
require the creation and searching of huge tables of ciphertext associated
with known plaintext and known keys.  Assuming that the memory and processor
resources are available for a precomputation attack, then the theoretical
strength of AES-CTR and AES-CBC are limited to 2^(n/2) bits, where n is the
number of bits in the key.  The use of long keys is the best countermeasure
to precomputation attacks.</t>
      <t>When used properly, AES-CTR mode provides strong confidentiality. Unfortunately,
it is very easy to misuse this counter mode.  If counter block values are ever
used for more that one plaintext with the same key, then the same key stream
will be used to encrypt both plaintexts, and the confidentiality guarantees are
voided.</t>
      <t>What happens if the encryptor XORs the same key stream with two different
plaintexts? Suppose two plaintext octet sequences P1, P2, P3 and Q1, Q2, Q3
are both encrypted with key stream K1, K2, K3. The two corresponding
ciphertexts are:</t>
      <artwork><![CDATA[
   (P1 XOR K1), (P2 XOR K2), (P3 XOR K3)

   (Q1 XOR K1), (Q2 XOR K2), (Q3 XOR K3)
]]></artwork>
      <t>If both of these two ciphertext streams are exposed to an attacker, then a
catastrophic failure of confidentiality results, since:</t>
      <artwork><![CDATA[
   (P1 XOR K1) XOR (Q1 XOR K1) = P1 XOR Q1
   (P2 XOR K2) XOR (Q2 XOR K2) = P2 XOR Q2
   (P3 XOR K3) XOR (Q3 XOR K3) = P3 XOR Q3
]]></artwork>
      <t>Once the attacker obtains the two plaintexts XORed together, it is relatively
straightforward to separate them.  Thus, using any stream cipher, including
AES-CTR, to encrypt two plaintexts under the same key stream leaks the
plaintext.</t>
      <t>Therefore, it is inappropriate to use AES-CTR with static keys. Extraordinary
measures would be needed to prevent reuse of a counter block value with the
static key across power cycles.  To be safe, implementations MUST use fresh
keys with AES-CTR.</t>
      <t>Data forgery is trivial with AES-CTR mode. The demonstration of this attack
is similar to the key stream reuse discussion above.  If a known plaintext
octet sequence P1, P2, P3 is encrypted with key stream K1, K2, K3, then the
attacker can replace the plaintext with one of his own choosing.  The
ciphertext is:</t>
      <artwork><![CDATA[
   (P1 XOR K1), (P2 XOR K2), (P3 XOR K3)
]]></artwork>
      <t>The attacker simply XORs a selected sequence Q1, Q2, Q3 with the
ciphertext to obtain:</t>
      <artwork><![CDATA[
   (Q1 XOR (P1 XOR K1)), (Q2 XOR (P2 XOR K2)), (Q3 XOR (P3 XOR K3))
]]></artwork>
      <t>Which is the same as:</t>
      <artwork><![CDATA[
   ((Q1 XOR P1) XOR K1), ((Q2 XOR P2) XOR K2), ((Q3 XOR P3) XOR K3)
]]></artwork>
      <t>Decryption of the attacker-generated ciphertext will yield exactly what
the attacker intended:</t>
      <artwork><![CDATA[
   (Q1 XOR P1), (Q2 XOR P2), (Q3 XOR P3)
]]></artwork>
      <t>Accordingly, implementations MUST use of AES-CTR in conjunction with an
authentication and integrity mechanism, such as a digital signature.</t>
      <t>AES-CBC does not provide integrity protection.  Thus, an attacker
can introduce undetectable errors if AES-CBC is used without a companion
authentication mechanism.  Accordingly, implementations MUST use of AES-CBC
in conjunction with an authentication and integrity mechanism, such as a
digital signature.</t>
      <t>If an attacker is able to strip the authentication and integrity mechanism,
then the attacker can replace it with their one of their own creation, even
without knowing the plaintext.  The usual defense against such an attack is
an Authenticated Encryption with Associated Data (AEAD) <xref target="RFC5116"/>
algorithm.  Of course, neither AES-CTR nor AES-CBC is an AEAD.  Thus,
an implementation SHOULD provide integrity protection for the kid field
to prevent undetected stripping of the the authentication and integrity
mechanism; this prevents an attacker from altering the kid to trick the
recipient into using a different key.</t>
      <t>With AES-CBC mode, implementers SHOULD perform integrity checks prior to
decryption to avoid padding oracle vulnerabilities <xref target="Vaudenay"/>.</t>
      <t>With the assignment of COSE algorithm identifiers for AES-CTR and
AES-CBC in the COSE Algorithms Registry, an attacker can replace the
COSE algorithm identifiers with one of these identifiers.  Then, the
attacker might be able to manipulate the ciphertext to learn some of the
plaintext or extract the keying material used for authentication and
integrity.</t>
      <t>Since AES-GCM uses AES-CTR for encryption, an attacker can switch the
algorithm identifier from AES-GCM to AES-CTR, and then strip the
authentication tag to bypass the authentication and integrity, allowing the
attacker to manipulate the ciphertext.</t>
      <t>An attacker can switch the algorithm identifier from AES-GCM to AES-CBC,
guess of 16 bytes of plaintext at a time, and checking each guess with
padding oracle as discussed above.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Many thanks to David Brown for raising the need for non-AEAD algorithms
to support encryption within the SUIT manifest.  Many thanks to
David Brown,
Ilari Liusvaara,
Scott Arciszewski,
John Preuß Mattsson, and
Laurence Lundblade
for the review and thoughtful comments.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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="RFC4107" target="https://www.rfc-editor.org/info/rfc4107">
          <front>
            <title>Guidelines for Cryptographic Key Management</title>
            <author fullname="S. Bellovin" initials="S." surname="Bellovin">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <date month="June" year="2005"/>
            <abstract>
              <t>The question often arises of whether a given security system requires some form of automated key management, or whether manual keying is sufficient.  This memo provides guidelines for making such decisions. When symmetric cryptographic mechanisms are used in a protocol, the presumption is that automated key management is generally but not always needed.  If manual keying is proposed, the burden of proving that automated key management is not required falls to the proposer.  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="107"/>
          <seriesInfo name="RFC" value="4107"/>
          <seriesInfo name="DOI" value="10.17487/RFC4107"/>
        </reference>
        <reference anchor="RFC5652" target="https://www.rfc-editor.org/info/rfc5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS).  This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
        <reference anchor="RFC9052" target="https://www.rfc-editor.org/info/rfc9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need to be able to define basic security services for this data format.  This document defines the CBOR Object Signing and Encryption (COSE) protocol.  This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization.  This specification additionally describes how to represent cryptographic keys using CBOR.  </t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="AES">
          <front>
            <title>Advanced Encryption Standard (AES)</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2001" month="November"/>
          </front>
          <seriesInfo name="FIPS Publication" value="197"/>
        </reference>
        <reference anchor="MODES">
          <front>
            <title>Recommendation for Block Cipher Modes of Operation: Methods and Techniques</title>
            <author initials="M." surname="Dworkin" fullname="Morris Dworkin">
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2001" month="December"/>
          </front>
          <seriesInfo name="NIST Special Publication" value="800-38A"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC5116" target="https://www.rfc-editor.org/info/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="I-D.ietf-suit-manifest" target="https://www.ietf.org/archive/id/draft-ietf-suit-manifest-21.txt">
          <front>
            <title>A Concise Binary Object Representation (CBOR)-based Serialization Format for the Software Updates for Internet of Things (SUIT) Manifest</title>
            <author fullname="Brendan Moran" initials="B." surname="Moran">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Koen Zandberg" initials="K." surname="Zandberg">
              <organization>Inria</organization>
            </author>
            <author fullname="Øyvind Rønningstad" initials="O." surname="Rønningstad">
              <organization>Nordic Semiconductor</organization>
            </author>
            <date day="9" month="November" year="2022"/>
            <abstract>
              <t>   This specification describes the format of a manifest.  A manifest is
   a bundle of metadata about code/data obtained by a recipient (chiefly
   the firmware for an IoT device), where to find the that code/data,
   the devices to which it applies, and cryptographic information
   protecting the manifest.  Software updates and Trusted Invocation
   both tend to use sequences of common operations, so the manifest
   encodes those sequences of operations, rather than declaring the
   metadata.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-suit-manifest-21"/>
        </reference>
        <reference anchor="IANA" target="https://www.iana.org/assignments/cose/cose.xhtml">
          <front>
            <title>IANA Registry for CBOR Object Signing and Encryption (COSE)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="Vaudenay" target="https://www.iacr.org/cryptodb/archive/2002/EUROCRYPT/2850/2850.pdf">
          <front>
            <title>Security Flaws Induced by CBC Padding Applications to SSL, IPSEC, WTLS...</title>
            <author initials="S." surname="Vaudenay" fullname="Serge Vaudenay">
              <organization>Swiss Federal Institute of Technology (EPFL)</organization>
            </author>
            <date year="2002"/>
          </front>
          <seriesInfo name="EUROCRYPT" value="2002"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAF1syWMAA+1b624bR5b+T4DvUFCAtbVL0hJlK7GCwY5ujrWRLFmUnRkM
JoNis0jWqC+crm7JjK28yj7Mvth+59SlqylKtrM7ix1gBCQm+1J16ly+c2W/
3+92Kl2lak9sHB6cX4rz8V9VUomRnuU6nwmZT8RxnpTLRaWLXDw9PB8db+6J
/eNR//Dqkm/z54PDjW5Hjselull7V9zqai7o7W5nUiS5zLDjpJTTqq9VNe0n
hVF9qUw/qco+3usn46S/tYOHZYUnh1vDnf7Wdn/7ZbeT4MqsKJd7wlSTbqfb
0YtyT1Rlbarh1tbLrWG3Y+pxpo0BxdVygddPjq9egbxSyT0xUkld6mrZ7dwW
5fWsLOrFniPsWi1xbYLn80qVuar6R0Qh7WEqEPUXmRa54r1Ut7PQe+JPVZH0
hCnKqlRTg0/LjD78mV6RdTUvyr1uR4DHAn86N3viciBeF7VJ1dJetJy4rI1p
Xy/K2Z54r2c6DRT3xOnpob3rOd1+wN5TmdTpnpjb1X5/Q48YlQySIluh5fVA
XJlkXkxVrmcxOa9lnitz7yZokrn+RZIqQMplJk51pis1aW/MLw+q8PLvZZnZ
3budvCgzvH+jiC/i8tXhcHv7pf/83fa3z/3n59tb3/rPL3ZfDP3nl1vuMxRr
z+7r9Xd/ciPzRLUUdkRyk+VEPMXzmxuOe0EyIrD6DZ9KppC9wYJ1pUQxDa8b
1uUrlczzIi1mS/H0zcnoatOu4FWU9HPbXjKq1MrofFqEXTZenVyMxEU9TnXC
e22A5O2X3zJNZ+dH945zqcCzTGF/Psm0KMVBWiTX4lAv5qoUZ8UEMgKR5wtV
OpmcKZwsplb/rVZm/bFZBc4G4ojsQOf+stWAs6IstVm997/JqeHDnKI3xGih
Eo1dVjj23dZWf+e7/Q02fLy1ok4vtrd3+fNJ/2jAyGJqXfUz6O1Umcre2n+z
3+Y1XRGXaqZNVS6Z01+MhW4dWc5UBd2vqoXZe/bs9vZ2oGUuB+DYMwkkmuWQ
ZGWeEc7x/wYf5lWW0tvvZT1RuVyuiN8btXiVylsDZk9q0u3xUhCcXsjJhGja
Xyw8d4yoCjEanfYEFO34sCd+ujodDQaDR6Q/GoTd2+IfKZzn3j0W/+gWyCpe
qQmUbkUHYqkfX7w6XZX6IyI/fnd5fnj5x4srkjE9uvEYY5OSGcuiKCbjZ7JM
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
JwF1VWSh6JLJXM44hiPKQqUrCuZB2owKCSQOaC7oK1fULlROHou8QnRqBSOT
azpowmU+29EChQBxepydGfYp4Pn0NGYS690aB/OlIeVng9aDQzaBNVHro3Hx
2qCV6rSfiVpxqn/EqBVkr0at4+RrolZqhP6jRK0xrf+MWleiVq8Jj0WtUI2v
j1pbXPdR6z+D1i8JWsE6DhOfrwtaaa7wy4JWv8yLdUGrW+YLgla/zO66oNUu
89mgtY3Z5MiNnrjuB6kZhQJ9YLZhJWMlSvW4lGWotbsaqS82+Yi5KBtty1kr
1ALKtR9wsT2E4AcNaM5AUqGHen9mzqW3UgHgc44F2HWR5ypy1XQn8yLvc/c+
cXGIWtNe4wqxUSlbqA+fbG0vBnFp22Rl43vVhwVVpxi19o9gH7Zf4Y3dogJH
luwYZqXkglBrkgDBFxkkXp0UwhSul8iTXvdZjsChYTk/wwVOGp5zjT5vh3B/
H6xlR7tFMDEtGoHwVE9w+HkECo2lh6mzjx9p37u7EBPGtVjvbz6zOaMfu15y
593Ox49xpn3HauGuORzjZndqih5vQV162gIrkra59ujGoVzIsU65ILgBiad1
lntNIfkjQBYbf4I7+/OG9X8byMPyGc9WIRwi2W5w3XndeyfHox/cwAK/eqk4
60nUAzvBuYvSP2OLiKstY8A2VQt7gWUWcm1yRd7A2LktL5P+7osXO89prf5w
d1uURLvTlzCFd09njEoalXloXmndVBKPF0KGfoqHsB5Kvxq0qJUJoSa8sfGM
mxCyWZcfBQD6dzsuUXJ3uAdpx3TphMaNVdZ+EMd1shr/wFq7Eh/GijVePjYa
hIwzs/M6zQHagaIbifCo3TQaqasxk+UkRfbpsz1K1rEUILFYqkkvOhjnkU26
bdt3MdfG5JaojT2haYl8VmszZ0jgIrzN2L1myCmZ9vDn3ecu52WphMS027Ei
EBQHptxfWRN8ez21uu/7jDbV7XZcyltS69sml14w1uK9M+euRZ+wroD+k9Yn
iG+pEr4u1qf2v29rUSmBWwC0PGVFJQmaKY+b9ZapLtl3Y1C9Vu8I79O4lVsg
q03FqOxT5bgjEmu2Ry43UTaVuvQVEYBzu4nn0ibweQabxgYEPXHPFwTwWIv1
EBRkUZdaqaqv8z6I7ds5QrdOWMZx3ZqD8bcNJd9NI5x7yT7tMYqnR22BYV6T
5EhLWAPj1mAY0HPKcJ3TAFO7lWivud7WvjF1ZiXtyj+ZghzsYB7kS0UWaqYh
XOV+pdU5eSN1atWUAHk921hcuWvyKsiWDDW1nV2OcH0RYXVeExtEWDD8+Wn+
bLjpBpgsDvgZiG4nr7MxjAJL8QyCw8rAXJ+C03xDSK7piTHN6CV2Xsd19NiD
r1eAlQ6rHSuI26NcrgtdVmr+UFq10lwV7d4q0l6uLN0osNs3VzNtQk8yieaW
7AiHvxJ3+S0I3JAyMnEkEW9JFVtSXLhbacBGMgo9Wd/F9Y7Iz0v6KRie4wxr
msYrrs52zmoJAKuUpbHbIeTwPTqibU6TdzkXHKK6I8j/w/mlWUeTo/+2aMqO
UenL/LsYUcxJ7MMj0QgL103tnARp8MV2T1wM8d8Ok/4WX9/i69sd/vWNPV8z
p2HtqKHhRzz+Ix7/cWfAGkZ7cafSLApu+MdFRj4559O//vorD4s/vdjmquSP
25s9fBnaL0P+smO/7GzSC/Ts2/jZt/Gzb6NneWkEFFNLegh/mbIGHCz9Tl8+
EJ9cKS1Uh5w2SP75UtPCBEam3Bq+Ny8AR2HqlHTAkON86KD8b3QY8Tvhbr7d
ds+Gs7lnm+941n55O3TPhqO7Z5vvvxPuJsnSseWcI7C5Cqd0fXCrYS1NMfQu
c2WmKp5gsBZaqpR/v5HauRSpZ/MKZnZL45kUrSgaFrHTalmourlyTL5sDwP1
XP2AFSV0qSPzWqGIKnTlWmOwwxAr5d/g3ciPPzr2sGbiwTmF1rwD9Z+/ZuBh
HUZFQ2lfM/qwPpgIkw92PuP+6MOR+w3BjHA16v23IgKLqVdcuMuwduUG+9h4
aKialYVbDwa+KJWlHwWIJGBP7UZD3TTKjYNquep7EfK2cCiGodZg2MOA06A1
kMprMxV0S4VtktW5IV7IJcR0JiInmRcFKaZ1j61+iDa/BaiclV3FBuamABnG
EY663Lo5eYO4a8cVidPWRtsEOQCJCItgMaIwwseI1IbWnzij0ZGLkStH91td
OOyyPPBbXTiUsszwW104PIq5cqRWWmmBR/0mKYgOHjXWEPPSdBUCHld7a9hL
4qU61lruXMS+4iL2FRcRYftJwgY+oyDmQTOLArS/91zJ/+fORtzL+DrG/V/0
Nghr8kg58KgrKVHxeGG17ss2Yz3L284yhhfdRJC6jEpt9IWwxWUsPQpHc5uB
EG8JCP2vvNqNSgoua6oVqCkCQRUSJHtofyqu0FEXrlV6+PofJ7V7j+ccTpcG
fiZfqVHmUZFSG/8bIK91TEtb9ML9/uWzLSV2IMifuQ/gEw72oF5fCSdJbouo
m/w5EUYzYt9b9+VWNS3VsHN9KWXMThrXbsINqe+1ReEw9EerF6Gn1LT5w8B8
8KZuWiEyByroeI7YZnzEEdds8q3s8MMEOlVoFoR2eikRF4ibOiW09OU9CNX/
6tOVIn/yiU3zM1Zi3t+hBNoCnVXn6yrh63eM3bEN0KO71hzy3opzzyjU5Gqg
s2n6kdiiTv1vI9pOExFhmQtTZM2EfDzIb+f2k1B/aFVgQu54X9HiX8i1u6k/
HJ65Hw46TnLbNBjmfV4ZMCFxDn8dl6yO+qWbzn1IMvMG1e7hdCVn/KOB5QJa
8Fmj6dmCTRihCHQ+xmXrqx481FrJrz/TwSGAZFa7KuL2Lvf7+HNUrSG/VOlM
2eOz5RC9/MMU+y4pFaTcNhf+OZb/vZKNSd0oUkJYnKqJHUAwdPWMUhSqul3z
b7OPJBBMHJQE6CRNZDvhJ7phHCM0VppuIINZ6Pm0sdmZFP/w0f/KEQrf3pkC
97A1eHOCmFuLU12bG4n0CldGSVFVYr9MtPlF3ZprjWv/UcxzcYFA/L/+E+tV
lTFW7aC0p7K25fdTYOs4lVSj9RhM80Dq1ilVUVM+V6fCdggrKvf8N48o03F0
RAAA

-->

</rfc>
