<?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-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.2 -->
  <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-02"/>
    <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="2022" month="November" day="08"/>
    <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 8152 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="RFC8152"/> 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 five modes of operation for Advanced Encryption
Standard (AES) <xref target="AES"/>.  AES supports three key sizes: 128 bits,
192 bits, and 256 bits.  The AES has a block size of 128 bits (16 octets).</t>
      <t>NIST has defined several modes of operation for use with AES <xref target="MODES"/>.  Each
of these modes has different characteristics.  The five modes are:
ECB (Electronic Code Book), 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
key combination MUST NOT be used more than once.  The encryptor can generate
the IV in any manner that ensures uniqueness.  For example, the encryptor
might generate the IV with a counter or a linear feedback shift
register (LFSR).</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, which might be based on a counter or
a LFSR.  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 in both uses
of AES-CTR.  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>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>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>
      <section anchor="aes-ctr-alg">
        <name>AES-CTR COSE Algoritm Identifiers</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>
        <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>
        <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>
      <section anchor="aes-cbc-alg">
        <name>AES-CBC COSE Algoritm Identifiers</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>
        <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>
        <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="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-GCM 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-GCM.</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 the SUIT manifest.  Many thanks to Ilari Liusvaara and
Scott Arciszewski 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="RFC8152" target="https://www.rfc-editor.org/info/rfc8152">
          <front>
            <title>CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <date month="July" year="2017"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need for the ability to have basic security services defined 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>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8152"/>
          <seriesInfo name="DOI" value="10.17487/RFC8152"/>
        </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-20.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="7" month="October" 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-20"/>
        </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:
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

-->

</rfc>
