<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.26 (Ruby 3.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>
<?rfc toc_levels="4"?>

<rfc ipr="trust200902" docName="draft-ietf-suit-mti-17" category="std" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="SUIT Algorithm Recommendations">Cryptographic Algorithm Recommendations for Software Updates of Internet of Things Devices</title>

    <author initials="B." surname="Moran" fullname="Brendan Moran">
      <organization>Arm Limited</organization>
      <address>
        <email>brendan.moran.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="Ø." surname="Rønningstad" fullname="Øyvind Rønningstad">
      <organization>Nordic Semiconductor</organization>
      <address>
        <email>oyvind.ronningstad@gmail.com</email>
      </address>
    </author>
    <author initials="A." surname="Tsukamoto" fullname="Akira Tsukamoto">
      <organization>Openchip &amp; Software Technologies, S.L.</organization>
      <address>
        <email>akira.tsukamoto@gmail.com</email>
      </address>
    </author>

    <date year="2025" month="June" day="09"/>

    <area>Security</area>
    <workgroup>SUIT</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document specifies cryptographic algorithm profiles to be used with the Software Updates for Internet of Things (suit) manifest.
These profiles define mandatory-to-implement algorithms to ensure interoperability.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>This document defines algorithm profiles for SUIT manifest parsers and authors to promote interoperability in constrained node software update scenarios. These profiles specify sets of mandatory-to-implement (MTI) algorithms tailored to the evolving security landscape, acknowledging that cryptographic requirements may change over time. To accommodate this, algorithms are grouped into profiles, which may be updated or deprecated as needed.</t>

<t>This document defines the following MTI profiles for constrained environments:</t>

<t><list style="symbols">
  <t>One symmetric MTI profile</t>
  <t>Two "current" constrained asymmetric MTI profiles</t>
  <t>Two "current" AEAD asymmetric MTI profiles</t>
  <t>One "future" constrained asymmetric MTI profile</t>
</list></t>

<t>The terms "current" and "future" distinguish between traditional cryptographic algorithms and those believed to be secure against both classical and quantum computer-based attacks, respectively.</t>

<t>At least one algorithm in each category must be FIPS-validated.</t>

<t>Due to the asymmetric nature of SUIT deployments—where manifest authors are typically resource-rich and recipients are resource-constrained—the cryptographic requirements differ for each role.</t>

<t>This specification uses AES-CTR in combination with a digest algorithm, as defined in <xref target="RFC9459"/>, to support use cases that require out-of-order block reception and decryption-capabilities not offered by AEAD algorithms. For further discussion of these constrained use cases, see <xref target="aes-ctr-payloads"/>. Other SUIT use cases (see <xref target="I-D.ietf-suit-manifest"/>) may define different profiles.</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>

<t>The abbreviation SUIT stands for Software Updates for the Internet of Things and specifically addresses the requirements of constrained devices and networks, as described in <xref target="RFC9019"/>.</t>

</section>
<section anchor="profiles"><name>Profiles</name>

<t>Each profile consist of algorithms from the following categories:</t>

<t><list style="symbols">
  <t>Digest Algorithms</t>
  <t>Authentication Algorithms</t>
  <t>Key Exchange Algorithms (optional)</t>
  <t>Encryption Algorithms (optional)</t>
</list></t>

<t>Each profile references specific algorithm identifiers, as defined in <xref target="IANA-COSE"/>.
Since these algorithm identifiers are used in the context of the IETF SUIT manifest <xref target="I-D.ietf-suit-manifest"/>, they are represented using CBOR Object Signing and Encryption (COSE) structures as defined in <xref target="RFC9052"/> and <xref target="RFC9053"/>.</t>

<t>The use of the profiles by authors and recipients is based on the following assumptions:</t>

<t><list style="symbols">
  <t>Recipients <bcp14>MAY</bcp14> choose which MTI profile they wish to implement. It is <bcp14>RECOMMENDED</bcp14> that they implement the "Future" Asymmetric MTI profile. Recipients <bcp14>MAY</bcp14> implement any number of other profiles not defined in this document. Recipients <bcp14>MAY</bcp14> choose not to implement encryption and the corresponding key exchange algorithms if they do not intend to support encrypted payloads.</t>
  <t>Authors <bcp14>MUST</bcp14> implement all MTI profiles. Authors <bcp14>MAY</bcp14> implement any number of additional profiles.</t>
</list></t>

<section anchor="suit-sha256-hmac-a128kw-a128ctr"><name> Symmetric MTI profile: suit-sha256-hmac-a128kw-a128ctr</name>

<texttable>
      <ttcol align='left'>Algorithm Type</ttcol>
      <ttcol align='left'>Algorithm</ttcol>
      <ttcol align='left'>COSE Key</ttcol>
      <c>Digest</c>
      <c>SHA-256</c>
      <c>-16</c>
      <c>Authentication</c>
      <c>HMAC-256</c>
      <c>5</c>
      <c>Key Exchange</c>
      <c>A128KW Key Wrap</c>
      <c>-3</c>
      <c>Encryption</c>
      <c>A128CTR</c>
      <c>-65534</c>
</texttable>

</section>
<section anchor="suit-sha256-esp256-ecdh-a128ctr"><name>Current Constrained Asymmetric MTI Profile 1: suit-sha256-esp256-ecdh-a128ctr</name>

<texttable>
      <ttcol align='left'>Algorithm Type</ttcol>
      <ttcol align='left'>Algorithm</ttcol>
      <ttcol align='left'>COSE Key</ttcol>
      <c>Digest</c>
      <c>SHA-256</c>
      <c>-16</c>
      <c>Authentication</c>
      <c>ESP256</c>
      <c>-9</c>
      <c>Key Exchange</c>
      <c>ECDH-ES + A128KW</c>
      <c>-29</c>
      <c>Encryption</c>
      <c>A128CTR</c>
      <c>-65534</c>
</texttable>

</section>
<section anchor="suit-sha256-ed25519-ecdh-a128ctr"><name>Current Constrained Asymmetric MTI Profile 2: suit-sha256-ed25519-ecdh-a128ctr</name>

<texttable>
      <ttcol align='left'>Algorithm Type</ttcol>
      <ttcol align='left'>Algorithm</ttcol>
      <ttcol align='left'>COSE Key</ttcol>
      <c>Digest</c>
      <c>SHA-256</c>
      <c>-16</c>
      <c>Authentication</c>
      <c>Ed25519</c>
      <c>-19</c>
      <c>Key Exchange</c>
      <c>ECDH-ES + A128KW</c>
      <c>-29</c>
      <c>Encryption</c>
      <c>A128CTR</c>
      <c>-65534</c>
</texttable>

</section>
<section anchor="suit-sha256-esp256-ecdh-a128gcm"><name>Current AEAD Asymmetric MTI Profile 1: suit-sha256-esp256-ecdh-a128gcm</name>

<texttable>
      <ttcol align='left'>Algorithm Type</ttcol>
      <ttcol align='left'>Algorithm</ttcol>
      <ttcol align='left'>COSE Key</ttcol>
      <c>Digest</c>
      <c>SHA-256</c>
      <c>-16</c>
      <c>Authentication</c>
      <c>ESP256</c>
      <c>-9</c>
      <c>Key Exchange</c>
      <c>ECDH-ES + A128KW</c>
      <c>-29</c>
      <c>Encryption</c>
      <c>A128GCM</c>
      <c>1</c>
</texttable>

</section>
<section anchor="suit-sha256-ed25519-ecdh-chacha-poly"><name>Current AEAD Asymmetric MTI Profile 2: suit-sha256-ed25519-ecdh-chacha-poly</name>

<texttable>
      <ttcol align='left'>Algorithm Type</ttcol>
      <ttcol align='left'>Algorithm</ttcol>
      <ttcol align='left'>COSE Key</ttcol>
      <c>Digest</c>
      <c>SHA-256</c>
      <c>-16</c>
      <c>Authentication</c>
      <c>Ed25519</c>
      <c>-19</c>
      <c>Key Exchange</c>
      <c>ECDH-ES + A128KW</c>
      <c>-29</c>
      <c>Encryption</c>
      <c>ChaCha20/Poly1305</c>
      <c>24</c>
</texttable>

</section>
<section anchor="suit-sha256-hsslms-a256kw-a256ctr"><name>Future Constrained Asymmetric MTI Profile: suit-sha256-hsslms-a256kw-a256ctr</name>

<texttable>
      <ttcol align='left'>Algorithm Type</ttcol>
      <ttcol align='left'>Algorithm</ttcol>
      <ttcol align='left'>COSE Key</ttcol>
      <c>Digest</c>
      <c>SHA-256</c>
      <c>-16</c>
      <c>Authentication</c>
      <c>HSS-LMS</c>
      <c>-46</c>
      <c>Key Exchange</c>
      <c>A256KW</c>
      <c>-5</c>
      <c>Encryption</c>
      <c>A256CTR</c>
      <c>-65532</c>
</texttable>

<t>A note regarding the use of HSS-LMS: The decision as to how deep the tree is, is a decision that affects authoring tools only (see <xref target="RFC8778"/>).
Verification is not affected by the choice of the "W" parameter, but the size of the signature is affected. To support the long lifetimes required by IoT devices, it is <bcp14>RECOMMENDED</bcp14> to use trees with greater height (see Section 2.2 of <xref target="RFC8778"/>).</t>

</section>
</section>
<section anchor="reporting-profiles"><name>Reporting Profiles</name>

<t>When using Manifest Recipients Response communication, particularly data structures that are designed for reporting of update capabilities, status, progress, or success, the same profile as the is used on the SUIT manifest <bcp14>SHOULD</bcp14> be used. There are cases where this is not possible, such as suit-sha256-hsslms-a256kw-a256ctr. In this case, the closest equivalent profile <bcp14>SHOULD</bcp14> be used, for example suit-sha256-esp256-ecdh-a128ctr.</t>

</section>
<section anchor="security"><name>Security Considerations</name>

<t>Payload encryption is often used to protect Intellectual Property (IP) and Personally Identifying Information (PII) in transit. The primary function of payload in SUIT is to act as a defense against passive IP and PII snooping. By encrypting payloads, confidential IP and PII can be protected during distribution. However, payload encryption of firmware or software updates of a commodity device is not a cybersecurity defense against targetted attacks on that device.</t>

<section anchor="payload-encryption-as-part-of-a-defense-in-depth-strategy"><name>Payload Encryption as Part of a Defense-in-Depth Strategy</name>

<t>To define the purpose of payload encryption as a defensive cybersecurity tool, it is important to define the capabilities of modern threat actors. A variety of capabilities are possible:</t>

<t><list style="symbols">
  <t>find bugs by binary code inspection</t>
  <t>send unexpected data to communication interfaces, looking for unexpected behavior</t>
  <t>use fault injection to bypass or manipulate code</t>
  <t>use communication attacks or fault injection along with gadgets found in the code</t>
</list></t>

<t>Given this range of capabilities, it is important to understand which capabilities are impacted by firmware encryption. Threat actors who find bugs by manual inspection or use gadgets found in the code will need to first extract the code from the target. In the IoT context, it is expected that most threat actors will start with sample devices and physical access to test attacks.</t>

<t>Due to these factors, payload encryption serves to limit the pool of attackers to those who have the technical capability to extract code from physical devices and those who perform code-free attacks.</t>

</section>
<section anchor="aes-ctr-payloads"><name>Use of AES-CTR in Payload Encryption</name>

<t>AES-CTR mode with a digest is specified, see <xref target="RFC9459"/>. All of the AES-CTR security considerations in <xref target="RFC9459"/> apply. A non-AEAD encryption mode is specified in this specification due to the following mitigating circumstances:</t>

<t><list style="symbols">
  <t>Out-of-order decryption must be supported. Therefore, we must use a stream cipher that supports random access.</t>
  <t>Chosen plaintext attacks are extremely difficult to achieve, since the payloads are typically constructed in a relatively secure environment--the developer's computer or build infrastructure--and should be signed in an air-gapped or similarly protected environment. In short, the plaintext is authenticated prior to encryption.</t>
  <t>Content Encryption Keys must be used to encrypt only once.</t>
</list></t>

<t>See <xref target="I-D.ietf-suit-firmware-encryption"/> for additional background information.</t>

<t>As a result of these mitigating circumstances, AES-CTR is an acceptable cipher for typical software/firmware delivery scenarios.</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>IANA is requested to create a page for COSE Algorithm Profiles within
the category for Software Update for the Internet of Things (SUIT)</t>

<t>IANA is also requested to create a registry for COSE Algorithm Profiles
within this page. The initial content of the registry is:</t>

<texttable>
      <ttcol align='left'>Profile</ttcol>
      <ttcol align='left'>Status</ttcol>
      <ttcol align='left'>Digest</ttcol>
      <ttcol align='left'>Auth</ttcol>
      <ttcol align='left'>Key Exchange</ttcol>
      <ttcol align='left'>Encryption</ttcol>
      <ttcol align='left'>Descriptor Array</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>suit-sha256-hmac-a128kw-a128ctr</c>
      <c>MANDATORY</c>
      <c>-16</c>
      <c>5</c>
      <c>-3</c>
      <c>-65534</c>
      <c>[-16,   5,  -3, -65534]</c>
      <c><xref target="suit-sha256-hmac-a128kw-a128ctr"/></c>
      <c>suit-sha256-esp256-ecdh-a128ctr</c>
      <c>MANDATORY</c>
      <c>-16</c>
      <c>-9</c>
      <c>-29</c>
      <c>-65534</c>
      <c>[-16,  -9, -29, -65534]</c>
      <c><xref target="suit-sha256-esp256-ecdh-a128ctr"/></c>
      <c>suit-sha256-ed25519-ecdh-a128ctr</c>
      <c>MANDATORY</c>
      <c>-16</c>
      <c>-19</c>
      <c>-29</c>
      <c>-65534</c>
      <c>[-16,  -19, -29, -65534]</c>
      <c><xref target="suit-sha256-ed25519-ecdh-a128ctr"/></c>
      <c>suit-sha256-esp256-ecdh-a128gcm</c>
      <c>MANDATORY</c>
      <c>-16</c>
      <c>-9</c>
      <c>-29</c>
      <c>1</c>
      <c>[-16,  -9, -29,      1]</c>
      <c><xref target="suit-sha256-esp256-ecdh-a128gcm"/></c>
      <c>suit-sha256-ed25519-ecdh-chacha-poly</c>
      <c>MANDATORY</c>
      <c>-16</c>
      <c>-19</c>
      <c>-29</c>
      <c>24</c>
      <c>[-16,  -19, -29,     24]</c>
      <c><xref target="suit-sha256-ed25519-ecdh-chacha-poly"/></c>
      <c>suit-sha256-hsslms-a256kw-a256ctr</c>
      <c>MANDATORY</c>
      <c>-16</c>
      <c>-46</c>
      <c>-5</c>
      <c>-65532</c>
      <c>[-16, -46,  -5, -65532]</c>
      <c><xref target="suit-sha256-hsslms-a256kw-a256ctr"/></c>
</texttable>

<t>New entries to this registry require Standards Action.</t>

<t>A recipient device that claims conformance to this document will have implemented at least one of the above algorithms.</t>

<t>As time progresses, if entries are removed from mandatory status, they will become <bcp14>SHOULD</bcp14>, <bcp14>MAY</bcp14> and then possibly <bcp14>NOT RECOMMENDED</bcp14> for new implementation.  However, as it may be impossible to update the SUIT manifest processor in the field, support for all relevant algorithms will almost always be required by authoring tools.</t>

<t>When new algorithms are added by subsequent documents, the device and authoring tools will then claim conformance to those new documents.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>



<reference anchor='RFC8778'>
  <front>
    <title>Use of the HSS/LMS Hash-Based Signature Algorithm with CBOR Object Signing and Encryption (COSE)</title>
    <author fullname='R. Housley' initials='R.' surname='Housley'/>
    <date month='April' year='2020'/>
    <abstract>
      <t>This document specifies the conventions for using the Hierarchical Signature System (HSS) / Leighton-Micali Signature (LMS) hash-based signature algorithm with the CBOR Object Signing and Encryption (COSE) syntax. The HSS/LMS algorithm is one form of hash-based digital signature; it is described in RFC 8554.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8778'/>
  <seriesInfo name='DOI' value='10.17487/RFC8778'/>
</reference>

<reference anchor='RFC9052'>
  <front>
    <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
    <author fullname='J. Schaad' initials='J.' surname='Schaad'/>
    <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='RFC9459'>
  <front>
    <title>CBOR Object Signing and Encryption (COSE): AES-CTR and AES-CBC</title>
    <author fullname='R. Housley' initials='R.' surname='Housley'/>
    <author fullname='H. Tschofenig' initials='H.' surname='Tschofenig'/>
    <date month='September' year='2023'/>
    <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>
  <seriesInfo name='RFC' value='9459'/>
  <seriesInfo name='DOI' value='10.17487/RFC9459'/>
</reference>


<reference anchor='I-D.ietf-suit-manifest'>
   <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>University of Applied Sciences Bonn-Rhein-Sieg</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='28' month='May' year='2025'/>
      <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 Internet of Things (IoT) device), where to find
   the 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-34'/>
   
</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>




    </references>

    <references title='Informative References'>




<reference anchor='I-D.ietf-suit-firmware-encryption'>
   <front>
      <title>Encrypted Payloads in SUIT Manifests</title>
      <author fullname='Hannes Tschofenig' initials='H.' surname='Tschofenig'>
         <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
      </author>
      <author fullname='Russ Housley' initials='R.' surname='Housley'>
         <organization>Vigil Security, LLC</organization>
      </author>
      <author fullname='Brendan Moran' initials='B.' surname='Moran'>
         <organization>Arm Limited</organization>
      </author>
      <author fullname='David Brown' initials='D.' surname='Brown'>
         <organization>Linaro</organization>
      </author>
      <author fullname='Ken Takayama' initials='K.' surname='Takayama'>
         <organization>SECOM CO., LTD.</organization>
      </author>
      <date day='19' month='March' year='2025'/>
      <abstract>
	 <t>   This document specifies techniques for encrypting software, firmware,
   machine learning models, and personalization data by utilizing the
   IETF SUIT manifest.  Key agreement is provided by ephemeral-static
   (ES) Diffie-Hellman (DH) and AES Key Wrap (AES-KW).  ES-DH uses
   public key cryptography while AES-KW uses a pre-shared key.
   Encryption of the plaintext is accomplished with conventional
   symmetric key cryptography.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-suit-firmware-encryption-24'/>
   
</reference>

<reference anchor='RFC9053'>
  <front>
    <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
    <author fullname='J. Schaad' initials='J.' surname='Schaad'/>
    <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 a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
      <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='9053'/>
  <seriesInfo name='DOI' value='10.17487/RFC9053'/>
</reference>

<reference anchor='RFC9019'>
  <front>
    <title>A Firmware Update Architecture for Internet of Things</title>
    <author fullname='B. Moran' initials='B.' surname='Moran'/>
    <author fullname='H. Tschofenig' initials='H.' surname='Tschofenig'/>
    <author fullname='D. Brown' initials='D.' surname='Brown'/>
    <author fullname='M. Meriac' initials='M.' surname='Meriac'/>
    <date month='April' year='2021'/>
    <abstract>
      <t>Vulnerabilities in Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism suitable for devices with resource constraints. Incorporating such an update mechanism is a fundamental requirement for fixing vulnerabilities, but it also enables other important capabilities such as updating configuration settings and adding new functionality.</t>
      <t>In addition to the definition of terminology and an architecture, this document provides the motivation for the standardization of a manifest format as a transport-agnostic means for describing and protecting firmware updates.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='9019'/>
  <seriesInfo name='DOI' value='10.17487/RFC9019'/>
</reference>


<reference anchor="IANA-COSE" target="https://www.iana.org/assignments/cose/cose.xhtml">
  <front>
    <title>CBOR Object Signing and Encryption (COSE)</title>
    <author >
      <organization></organization>
    </author>
    <date year="2022"/>
  </front>
</reference>


    </references>


<section anchor="full-cddl"><name>Full CDDL</name>

<t>The following CDDL creates a subset of COSE for use with SUIT. Both tagged and untagged messages are defined. SUIT only uses tagged COSE messages, but untagged messages are also defined for use in protocols that share a ciphersuite with SUIT.</t>

<t>To be valid, the following CDDL <bcp14>MUST</bcp14> have the COSE CDDL appended to it. The COSE CDDL can be obtained by following the directions in <xref section="1.4" sectionFormat="comma" target="RFC9052"/>.</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_COSE_tool_tweak /= suit-sha256-hmac-a128kw-a128ctr
SUIT_COSE_tool_tweak /= suit-sha256-esp256-ecdh-a128ctr
SUIT_COSE_tool_tweak /= suit-sha256-ed25519-ecdh-a128ctr
SUIT_COSE_tool_tweak /= suit-sha256-esp256-ecdh-a128gcm
SUIT_COSE_tool_tweak /= suit-sha256-ed25519-ecdh-chacha-poly
SUIT_COSE_tool_tweak /= suit-sha256-hsslms-a256kw-a256ctr
SUIT_COSE_tool_tweak /= SUIT_COSE_Profiles

SUIT_COSE_Profiles /= SUIT_COSE_Profile_HMAC_A128KW_A128CTR
SUIT_COSE_Profiles /= SUIT_COSE_Profile_ESP256_ECDH_A128CTR
SUIT_COSE_Profiles /= SUIT_COSE_Profile_ED25519_ECDH_A128CTR
SUIT_COSE_Profiles /= SUIT_COSE_Profile_ESP256_ECDH_A128GCM
SUIT_COSE_Profiles /= SUIT_COSE_Profile_ED25519_ECDH_CHACHA20_POLY1304
SUIT_COSE_Profiles /= SUIT_COSE_Profile_HSSLMS_A256KW_A256CTR

suit-sha256-hmac-a128kw-a128ctr    = [-16, 5, -3, -65534]
suit-sha256-esp256-ecdh-a128ctr     = [-16, -9, -29, -65534]
suit-sha256-ed25519-ecdh-a128ctr     = [-16, -19, -29, -65534]
suit-sha256-esp256-ecdh-a128gcm     = [-16, -9, -29, 1]
suit-sha256-ed25519-ecdh-chacha-poly = [-16, -19, -29, 24]
suit-sha256-hsslms-a256kw-a256ctr  = [-16, -46, -5, -65532]

SUIT_COSE_Profile_HMAC_A128KW_A128CTR =
    SUIT_COSE_Profile<5,-65534> .and COSE_Messages
SUIT_COSE_Profile_ESP256_ECDH_A128CTR =
    SUIT_COSE_Profile<-9,-65534> .and COSE_Messages
SUIT_COSE_Profile_ED25519_ECDH_A128CTR =
    SUIT_COSE_Profile<-19,-65534> .and COSE_Messages
SUIT_COSE_Profile_ESP256_ECDH_A128GCM =
    SUIT_COSE_Profile<-9,1> .and COSE_Messages
SUIT_COSE_Profile_ED25519_ECDH_CHACHA20_POLY1304 =
    SUIT_COSE_Profile<-19,24> .and COSE_Messages
SUIT_COSE_Profile_HSSLMS_A256KW_A256CTR =
    SUIT_COSE_Profile<-46,-65532> .and COSE_Messages

SUIT_COSE_Profile<authid, encid> = SUIT_COSE_Messages<authid,encid>

SUIT_COSE_Messages<authid, encid> =
    SUIT_COSE_Untagged_Message<authid, encid> /
    SUIT_COSE_Tagged_Message<authid, encid> 
      
SUIT_COSE_Untagged_Message<authid, encid> = SUIT_COSE_Sign<authid> /
    SUIT_COSE_Sign1<authid> / SUIT_COSE_Encrypt<encid> / 
    SUIT_COSE_Encrypt0<encid> / SUIT_COSE_Mac<authid> /
    SUIT_COSE_Mac0<authid> 

SUIT_COSE_Tagged_Message<authid, encid> =
    SUIT_COSE_Sign_Tagged<authid> / SUIT_COSE_Sign1_Tagged<authid> /
    SUIT_COSE_Encrypt_Tagged<encid> / SUIT_COSE_Encrypt0_Tagged<encid> /
    SUIT_COSE_Mac_Tagged<authid> / SUIT_COSE_Mac0_Tagged<authid>

; Note: This is not the same definition as is used in COSE.
; It restricts a COSE header definition further without
; repeating the COSE definition. It should be merged
; with COSE by using the CDDL .and operator.
SUIT_COSE_Profile_Headers<algid> = (
    protected : bstr .cbor SUIT_COSE_alg_map<algid>,
    unprotected : SUIT_COSE_header_map
)
SUIT_COSE_alg_map<algid> = {
    1 => algid,
    * int => any
}

SUIT_COSE_header_map = {
    * int => any
}

SUIT_COSE_Sign_Tagged<authid> = #6.98(SUIT_COSE_Sign<authid>)


SUIT_COSE_Sign<authid> = [
    SUIT_COSE_Profile_Headers<authid>,
    payload : bstr / nil,
    signatures : [+ SUIT_COSE_Signature<authid>]
]


SUIT_COSE_Signature<authid> =  [
    SUIT_COSE_Profile_Headers<authid>,      
    signature : bstr
]


SUIT_COSE_Sign1_Tagged<authid> = #6.18(SUIT_COSE_Sign1<authid>)


SUIT_COSE_Sign1<authid> = [
    SUIT_COSE_Profile_Headers<authid>,
    payload : bstr / nil,
    signature : bstr
]


SUIT_COSE_Encrypt_Tagged<encid> = #6.96(SUIT_COSE_Encrypt<encid>)


SUIT_COSE_Encrypt<encid> = [
    SUIT_COSE_Profile_Headers<encid>,
    ciphertext : bstr / nil,
    recipients : [+SUIT_COSE_recipient<encid>]
]


SUIT_COSE_recipient<encid> = [    
    SUIT_COSE_Profile_Headers<encid>,
    ciphertext : bstr / nil,
    ? recipients : [+SUIT_COSE_recipient<encid>]
]


SUIT_COSE_Encrypt0_Tagged<encid> = #6.16(SUIT_COSE_Encrypt0<encid>)


SUIT_COSE_Encrypt0<encid> = [
    SUIT_COSE_Profile_Headers<encid>,
    ciphertext : bstr / nil,
]


SUIT_COSE_Mac_Tagged<authid> = #6.97(SUIT_COSE_Mac<authid>)


SUIT_COSE_Mac<authid> = [
   SUIT_COSE_Profile_Headers<authid>,      
   payload : bstr / nil,
   tag : bstr,
   recipients :[+SUIT_COSE_recipient<authid>]
]


SUIT_COSE_Mac0_Tagged<authid> = #6.17(SUIT_COSE_Mac0<authid>)


SUIT_COSE_Mac0<authid> = [
   SUIT_COSE_Profile_Headers<authid>,      
   payload : bstr / nil,
   tag : bstr,
]
]]></sourcecode></figure>

</section>
<section anchor="acknowledgments"><name>Acknowledgments</name>

<t>We would like to specifically thank Magnus Nyström, Deb Cooley, Michael Richardson, Russ Housley, Mike Jones, Henk Birkholz, and Hannes Tschofenig for their review comments.</t>

</section>


  </back>

<!-- ##markdown-source:
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
gF74ug3Usvx/FvSd/werY3XBRUIAAA==

-->

</rfc>

