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

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

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

<rfc ipr="pre5378Trust200902" docName="draft-ietf-suit-firmware-encryption-07" category="std">
  <front>
    <title abbrev="Software Encryption">Software Encryption with SUIT Manifests</title>

    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization>Arm Limited</organization>
      <address>
        <email>hannes.tschofenig@arm.com</email>
      </address>
    </author>
    <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="B." surname="Moran" fullname="Brendan Moran">
      <organization>Arm Limited</organization>
      <address>
        <email>Brendan.Moran@arm.com</email>
      </address>
    </author>
    <author initials="D." surname="Brown" fullname="David Brown">
      <organization>Linaro</organization>
      <address>
        <email>david.brown@linaro.org</email>
      </address>
    </author>
    <author initials="K." surname="Takayama" fullname="Ken Takayama">
      <organization>SECOM CO., LTD.</organization>
      <address>
        <email>ken.takayama.ietf@gmail.com</email>
      </address>
    </author>

    <date year="2022" month="September" day="20"/>

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

    <abstract>


<t>This document specifies techniques for encrypting software, firmware 
and personalization data by utilizing the IETF 
SUIT manifest. Key establishment is provided by hybrid
public-key encryption (HPKE) and AES Key Wrap (AES-KW). HPKE
uses public key cryptography while AES-KW uses a pre-shared 
key-encryption key. Encryption of the plaintext is 
accomplished with conventional symmetric key cryptography.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>Vulnerabilities with Internet of Things (IoT) devices have raised the
need for a reliable and secure firmware update mechanism that is also
suitable for constrained devices. To protect firmware images the SUIT manifest
format was developed <xref target="I-D.ietf-suit-manifest"/>. The SUIT manifest provides a 
bundle of metadata about the firmware for an IoT device, where to find 
the firmware image, and the devices to which it applies.</t>

<t>The SUIT information model <xref target="RFC9124"/> details the
information that has to be offered by the SUIT manifest format. In addition to
offering protection against modification, which is provided by a digital
signature or a message authentication code, the firmware image may also 
be afforded confidentiality using encryption.</t>

<t>Encryption prevents third parties, including attackers, from gaining access to
the firmware binary. Hackers typically need intimate knowledge of the target 
firmware to mount their attacks. For example, return-oriented programming (ROP)
requires access to the binary and encryption makes it much more difficult to write 
exploits.</t>

<t>The SUIT manifest provides the data needed for authorized recipients 
of the firmware image to decrypt it. The firmware image is encrypted using a 
symmetric key. This symmetric cryptographic key is established for encryption 
and decryption, and that key can be applied to a SUIT manifest, firmware images, 
or personalization data, depending on the encryption choices of the firmware author.</t>

<t>A symmetric key can be established using a variety of mechanisms; this document 
defines two approaches for use with the IETF SUIT manifest, namely:</t>

<t><list style="symbols">
  <t>hybrid public-key encryption (HPKE), and</t>
  <t>AES Key Wrap (AES-KW) using a pre-shared key-encryption key (KEK).</t>
</list></t>

<t>These choices reduce the number of possible key establishment options and thereby 
help increase interoperability between different SUIT manifest parser implementations.</t>

<t>The document also contains a number of examples.</t>

<t>The original motivating use case of this document was to encrypt firmware. However, SUIT manifests
may require other payloads than firmware images to experience confidentiality
protection using encryption, for example software, personalization data, configuration data, 
or machine learning models. While the term firmware is used throughout
the document, plaintext other than firmware images may get encrypted using
the described mechanism. Hence, the terms firmware (image), software and plaintext are 
used interchangeably.</t>

</section>
<section anchor="conventions-and-terminology" title="Conventions and Terminology">

<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>

<t>This document assumes familiarity with the IETF SUIT manifest <xref target="I-D.ietf-suit-manifest"/>, 
the SUIT information model <xref target="RFC9124"/> and the SUIT architecture <xref target="RFC9019"/>.</t>

<t>The terms sender and recipient are defined in <xref target="RFC9180"/> and have 
the following meaning:</t>

<t><list style="symbols">
  <t>Sender: Role of the entity that sends an encrypted message.</t>
  <t>Recipient: Role of the entity that receives an encrypted message. The terms
firmware consumer and recipient are used interchangeably in this document.</t>
</list></t>

<t>Additionally, the following abbreviations are used in this document:</t>

<t><list style="symbols">
  <t>Key Wrap (KW), defined in RFC 3394 <xref target="RFC3394"/> for use with AES.</t>
  <t>Key-encryption key (KEK), a term defined in RFC 4949 <xref target="RFC4949"/>.</t>
  <t>Content-encryption key (CEK), a term defined in RFC 2630 <xref target="RFC2630"/>.</t>
  <t>Hybrid Public Key Encryption (HPKE), defined in <xref target="RFC9180"/>.</t>
</list></t>

</section>
<section anchor="arch" title="Architecture">

<t><xref target="RFC9019"/> describes the architecture for distributing firmware images 
and manifests from the author to the firmware consumer. It does not, however,
detail the use of encrypted firmware images.</t>

<t>This document enhances the SUIT architecture to include firmware encryption.
<xref target="arch-fig"/> shows the distribution system, which represents the firmware server 
and the device management infrastructure. The distribution system is aware 
of the individual devices to which a firmware update has to be delivered.</t>

<figure title="Firmware Encryption Architecture." anchor="arch-fig"><artwork><![CDATA[
                                           +----------+
                                           |          |
                                           |  Author  |
                                           |          |
 +----------+                              +----------+
 |  Device  |---+                               | 
 |(Firmware |   |                               | Firmware +
 | Consumer)|   |                               | Manifest
 +----------+   |                               |
                |                               |
                |                        +--------------+
                |                        |              |
 +----------+   |  Firmware + Manifest   | Distribution |
 |  Device  |---+------------------------|    System    |
 |(Firmware |   |                        |              |
 | Consumer)|   |                        |              |
 +----------+   |                        +--------------+
                |
                |
 +----------+   |
 |  Device  +---+
 |(Firmware |
 | Consumer)|
 +----------+
]]></artwork></figure>

<t>Firmware encryption requires the sender to know the firmware consumers and the 
respective credentials used by the key distribution mechanism. For AES-KW the 
KEK needs to be known and, in case of HPKE, the sender needs to be in possession 
of the public key of the recipient.</t>

<t>The firmware author may have knowledge about all devices that need 
to receive an encrypted firmware image but in most cases this is not<vspace />
likely. The distribution system certainly has the knowledge about the 
recipients to perform firmware encryption.</t>

<t>To offer confidentiality protection for firmware images two deployment variants need to be 
supported:</t>

<t><list style="symbols">
  <t>The firmware author acts as the sender and the recipient is the firmware consumer
(or the firmware consumers).</t>
  <t>The firmware author encrypts the firmware image with the distribution system as 
the initial recipient. Then, the distribution system decrypts and re-encrypts the 
firmware image towards the firmware consumer(s). Delegating the task of re-encrypting 
the firmware image to the distribution system offers flexiblity when the number 
of devices that need to receive encrypted firmware images changes dynamically 
or when updates to KEKs or recipient public keys are necessary. As a downside, 
the author needs to trust the distribution system with performing the re-encryption 
of the firmware image.</t>
</list></t>

<t>Irrespectively of the two variants, the key distribution data (in the form of the 
COSE_Encrypt structure) is included in the SUIT envelope rather than in the SUIT 
manifest since the manifest will be digitally signed (or MACed) by the firmware author.</t>

<t>Since the SUIT envelope is not protected cryptographically an adversary could modify
the COSE_Encrypt structure. For example, if the attacker alters the key distribution
data then a recipient will decrypt the firmware image with an incorrect key. This
will lead to expending energy and flash cycles until the failure is detected. To
mitigate this attack, the optional suit-cek-verification parameter is added to the
manifest. Since the manifest is protected by a digital signature (or a MAC), an
adversary cannot successfully modify this value. This parameter allows the recipient
to verify whether the CEK has successfully been derived.</t>

<t>Details about the changes to the envelope and the manifest can be found in the next 
section.</t>

</section>
<section anchor="suit-envelope-and-suit-manifest" title="SUIT Envelope and SUIT Manifest">

<t>This specification introduces two extensions to the SUIT envelope and the manifest 
structure, as motivated in <xref target="arch"/>.</t>

<t>The SUIT envelope is enhanced with a key exchange payload, which is carried inside
the suit-protection-wrappers parameter, see <xref target="envelope-fig"/>. One or multiple 
SUIT_Encryption_Info payload(s) are carried within the suit-protection-wrappers 
parameter. The content of the SUIT_Encryption_Info payload is explained in 
<xref target="AES-KW"/> (for AES-KW) and in <xref target="HPKE"/> (for HPKE). When the encryption capability 
is used, the suit-protection-wrappers parameter MUST be included in the envelope.</t>

<figure title="SUIT Envelope CDDL." anchor="envelope-fig"><artwork><![CDATA[
SUIT_Envelope_Tagged = #6.107(SUIT_Envelope)
SUIT_Envelope = {
  suit-authentication-wrapper => bstr .cbor SUIT_Authentication,
  suit-manifest => bstr .cbor SUIT_Manifest,
  SUIT_Severable_Manifest_Members,
  suit-protection-wrappers => bstr .cbor {
      *(int/str) => [+ SUIT_Encryption_Info]
  }
  * SUIT_Integrated_Payload,
  * SUIT_Integrated_Dependency,
  * $$SUIT_Envelope_Extensions,
  * (int => bstr)
}
]]></artwork></figure>

<t>The manifest is extended with a CEK verification parameter (called 
suit-cek-verification), see <xref target="manifest-fig"/>. This parameter is optional 
and is utilized in environments where battery exhaustion attacks are a 
concern. Details about the CEK verification can be found in 
<xref target="cek-verification"/>.</t>

<figure title="SUIT Manifest CDDL." anchor="manifest-fig"><artwork><![CDATA[
SUIT_Manifest = {
    suit-manifest-version         => 1,
    suit-manifest-sequence-number => uint,
    suit-common                   => bstr .cbor SUIT_Common,
    ? suit-reference-uri          => tstr,
    SUIT_Severable_Members_Choice,
    SUIT_Unseverable_Members,
    * $$SUIT_Manifest_Extensions,
}

SUIT_Parameters //= (suit-parameter-cek-verification => bstr)
]]></artwork></figure>

</section>
<section anchor="AES-KW" title="AES Key Wrap">

<t>The AES Key Wrap (AES-KW) algorithm is described in RFC 3394 <xref target="RFC3394"/>, and
it can be used to encrypt a randomly generated content-encryption key (CEK)
with a pre-shared key-encryption key (KEK). The COSE conventions for using
AES-KW are specified in Section 12.2.1 of <xref target="RFC8152"/>.  The encrypted CEK is
carried in the COSE_recipient structure alongside the information needed for 
AES-KW. The COSE_recipient structure, which is a substructure of the 
COSE_Encrypt structure, contains the CEK encrypted by the KEK.</t>

<t>When the firmware image is encrypted for use by multiple recipients, there 
are three options. We use the following notation KEK(R1,S) is the KEK shared between 
recipient R1 and the sender S. Likewise, CEK(R1,S) is shared between R1 and S. 
If a single CEK or a single KEK is shared with all authorized recipients R by a given sender S 
in a certain context then we use CEK(<spanx style="emph">,S) or KEK(</spanx>,S), respectively. The notation 
ENC(plaintext, key) refers to the encryption of plaintext with a given key.</t>

<t><list style="symbols">
  <t>If all authorized recipients have access to the KEK, a single 
COSE_recipient structure contains the encrypted CEK. This means KEK(*,S) ENC(CEK,KEK), and 
ENC(firmware,CEK).</t>
  <t>If recipients have different KEKs, then multiple COSE_recipient structures 
are included but only a single CEK is used. Each COSE_recipient structure 
contains the CEK encrypted with the KEKs appropriate for the recipient. In short, 
KEK_1(R1, S),…, KEK_n(Rn, S), ENC(CEK, KEK_i) for i=1 to n, and ENC(firmware,CEK). 
The benefit of this approach is that the firmware image is encrypted only once with 
a CEK while there is no sharing of the KEK across recipients. Hence, authorized recipients 
still use their individual KEKs to decrypt the CEK and to subsequently obtain the 
plaintext firmware.</t>
  <t>The third option is to use different CEKs encrypted with KEKs of the 
authorized recipients. Assume there are KEK_1(R1, S),…, KEK_n(Rn, S), and 
for i=1 to n the following computations need to be made: ENC(CEK_i, KEK_i) and 
ENC(firmware,CEK_i). This approach is appropriate when no benefits can be gained
from encrypting and transmitting firmware images only once. For example, 
firmware images may contain information unique to a device instance.</t>
</list></t>

<t>Note that the AES-KW algorithm, as defined in Section 2.2.3.1 of <xref target="RFC3394"/>, 
does not have public parameters that vary on a per-invocation basis. Hence, 
the protected structure in the COSE_recipient is a byte string of zero length.</t>

<t>The COSE_Encrypt conveys information for encrypting the firmware image, 
which includes information like the algorithm and the IV, even though the 
firmware image is not embedded in the COSE_Encrypt.ciphertext itself since 
it conveyed as detached content.</t>

<t>The CDDL for the COSE_Encrypt_Tagged structure is shown in <xref target="cddl-aeskw"/>.</t>

<figure title="CDDL for AES Key Wrap Encryption" anchor="cddl-aeskw"><artwork><![CDATA[
COSE_Encrypt_Tagged = #6.96(COSE_Encrypt)
 
SUIT_Encryption_Info = COSE_Encrypt_Tagged

COSE_Encrypt = [
  protected   : bstr .cbor outer_header_map_protected,
  unprotected : outer_header_map_unprotected,
  ciphertext  : null,                  ; because of detached ciphertext
  recipients  : [ + COSE_recipient ]
]

outer_header_map_protected =
{
    1 => int,         ; algorithm identifier
  * label =values     ; extension point
}

outer_header_map_unprotected = 
{
    5 => bstr,        ; IV
  * label =values     ; extension point
}

COSE_recipient = [
  protected   : bstr .size 0,
  unprotected : recipient_header_map,
  ciphertext  : bstr        ; CEK encrypted with KEK
]

recipient_header_map = 
{
    1 => int,         ; algorithm identifier
    4 => bstr,        ; key identifier
  * label =values     ; extension point
}
]]></artwork></figure>

<t>The COSE specification requires a consistent byte stream for the
authenticated data structure to be created, which is shown in
<xref target="cddl-enc-aeskw"/>.</t>

<figure title="CDDL for Enc_structure Data Structure" anchor="cddl-enc-aeskw"><artwork><![CDATA[
       Enc_structure = [
         context : "Encrypt",
         protected : empty_or_serialized_map,
         external_aad : bstr
       ]
]]></artwork></figure>

<t>As shown in <xref target="cddl-aeskw"/>, there are two protected fields: one 
protected field in the COSE_Encrypt structure and a second one in
the COSE_recipient structure. The ‘protected’ field in the Enc_structure, 
see <xref target="cddl-enc-aeskw"/>, refers to the content of the protected 
field from the COSE_Encrypt structure.</t>

<t>The value of the external_aad MUST be set to null.</t>

<t>The following example illustrates the use of the AES-KW algorithm with AES-128.</t>

<t>We use the following parameters in this example:</t>

<t><list style="symbols">
  <t>IV: 0x26, 0x68, 0x23, 0x06, 0xd4, 0xfb, 0x28, 0xca, 0x01, 0xb4, 0x3b, 0x80</t>
  <t>KEK: “aaaaaaaaaaaaaaaa”</t>
  <t>KID: “kid-1”</t>
  <t>Plaintext Firmware: “This is a real firmware image.”</t>
  <t>Firmware (hex): 546869732069732061207265616C206669726D7761726520696D6167652E</t>
</list></t>

<t>The COSE_Encrypt structure, in hex format, is (with a line break inserted):</t>

<figure><artwork><![CDATA[
D8608443A10101A1054C26682306D4FB28CA01B43B80F68340A2012204456B69642D
315818AF09622B4F40F17930129D18D0CEA46F159C49E7F68B644D
]]></artwork></figure>

<t>The resulting COSE_Encrypt structure in a diagnostic format is shown in <xref target="aeskw-example"/>.</t>

<figure title="COSE_Encrypt Example for AES Key Wrap" anchor="aeskw-example"><artwork><![CDATA[
96(
    [
        / protected field with alg=AES-GCM-128 /
        h'A10101', 
        {
           / unprotected field with iv /
           5: h'26682306D4FB28CA01B43B80'
        }, 
        / null because of detached ciphertext /
        null, 
        [ / recipients array /
           h'', / protected field /
           {    / unprotected field /
              1: -3,            / alg=A128KW /
              4: h'6B69642D31'  / key id /
           }, 
           / CEK encrypted with KEK /
           h'AF09622B4F40F17930129D18D0CEA46F159C49E7F68B644D'
        ]
    ]
)
]]></artwork></figure>

<t>The CEK, in hex format, was “4C805F1587D624ED5E0DBB7A7F7FA7EB” and 
the encrypted firmware (with a line feed added) was:</t>

<figure><artwork><![CDATA[
A8B6E61EF17FBAD1F1BF3235B3C64C06098EA512223260
F9425105F67F0FB6C92248AE289A025258F06C2AD70415
]]></artwork></figure>

</section>
<section anchor="HPKE" title="Hybrid Public-Key Encryption (HPKE)">

<t>Hybrid public-key encryption (HPKE) <xref target="RFC9180"/> is a scheme that 
provides public key encryption of arbitrary-sized plaintexts given a 
recipient’s public key.</t>

<t>For use with firmware encryption the scheme works as follows: HPKE, 
which internally utilizes a non-interactive ephemeral-static
Diffie-Hellman exchange to derive a shared secret, is used to 
encrypt a CEK. This CEK is subsequently used to encrypt the firmware image. 
Hence, the plaintext passed to HPKE is the randomly generated CEK. 
The output of the HPKE SealBase function is therefore 
the encrypted CEK along with HPKE encapsulated key (i.e., the ephemeral ECDH 
public key).</t>

<t>Only the holder of recipient’s private key can decapsulate the CEK to decrypt the 
firmware. Key generation in HPKE is influenced by additional parameters, such as 
identity information.</t>

<t>This approach allows all recipients to use the same CEK to decrypt the 
firmware image, in case there are multiple recipients, to fulfill a requirement for 
the efficient distribution of firmware images using a multicast or broadcast protocol.</t>

<t><xref target="I-D.ietf-cose-hpke"/> defines the use of HPKE with COSE and provides examples.</t>

</section>
<section anchor="cek-verification" title="CEK Verification">

<t>The suit-cek-verification parameter contains a byte string resulting from the 
encryption of 8 bytes of 0xA5 using the CEK with a nonce of all zeros and empty 
additional data using the cipher algorithm and mode also used to encrypt the
plaintext. The same nonce used for CEK verification MUST NOT be used to 
encrypt plaintext with the same CEK.</t>

<t>As explained in <xref target="arch"/>, the suit-cek-verification parameter is optional to
implement and optional to use. When used, it reduces the risk of a battery
exhaustion attack against the IoT device.</t>

</section>
<section anchor="ciphers-without-integrity-protection" title="Ciphers without Integrity Protection">

<t>The ability to restart an interrupted firmware update is often a requirement
for low-end IoT devices. To fulfill this requirement it is necessary to chunk
a larger firmware image into blocks and to encrypt each block individually
using a cipher that does not increase the size of the resulting ciphertext 
(i.e., by not adding an authentication tag after each encrypted block).</t>

<t>When the encrypted firmware image has been transferred to the device, it will
typically be stored in a staging area. Then, the bootloader starts decrypting 
the downloaded image block-by-block and swaps it with the currently valid 
image. Note that the currently valid image is available in cleartext and hence
it has to be re-encrypted before copying it to the staging area.</t>

<t>This approach of swapping the newly downloaded image with the previously valid 
image is often referred as A/B approach.  A/B refers to the two storage areas,
sometimes called slots, involved. Two slots are used to allow the update to be
reversed in case the newly obtained firmware image fails to boot. This approach
adds robustness to the firmware update procedure.</t>

<t>When an update gets aborted while the bootloader is decrypting the newly obtained
image and swapping the blocks, the bootloader can restart where it left off. This
technique again offers robustness.</t>

<t>To accomplish this functionality, ciphers without integrity protection are used
to encrypt the firmware image. Integrity protection for the firmware image is,
however, important and therefore the image digest defined in 
<xref target="I-D.ietf-suit-manifest"/> MUST be used.</t>

<t><xref target="I-D.housley-cose-aes-ctr-and-cbc"/> registers several ciphers that do not offer integrity protection.</t>

</section>
<section anchor="complete-examples" title="Complete Examples">

<t>[[Editor’s Note: Add examples for a complete manifest here (including a digital signature), 
multiple recipients, encryption of manifests (in comparison to firmware images).]]</t>

</section>
<section anchor="sec-cons" title="Security Considerations">

<t>The algorithms described in this document assume that the party performing the firmware encryption</t>

<t><list style="symbols">
  <t>shares a key-encryption key (KEK) with the firmware consumer (for use with the AES-Key Wrap scheme), or</t>
  <t>is in possession of the public key of the firmware consumer (for use with HPKE).</t>
</list></t>

<t>Both cases require some upfront communication interaction, which is not part of the SUIT manifest. 
This interaction is likely provided by an IoT device management solution, as described in <xref target="RFC9019"/>.</t>

<t>For AES-Key Wrap to provide high security it is important that the KEK is of high entropy, and that implementations protect the KEK from disclosure. Compromise of the KEK may result in the disclosure of all key data protected with that KEK.</t>

<t>Since the CEK is randomly generated, it must be ensured that the guidelines for random number generation in <xref target="RFC8937"/> are followed.</t>

<t>In some cases third party companies analyse binaries for known security vulnerabilities. With encrypted firmware images this type of analysis is prevented. Consequently, these third party companies either need to be given access to the plaintext binary before encryption or they need to become authorized recipients of the encrypted firmware images. In either case, it is necessary to explicitly consider those third parties in the software supply chain when such a binary analysis is desired.</t>

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

<t>This document asks IANA to register new values into the COSE algorithm
registry. The values are listed in <xref target="iana-algo"/>.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<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='RFC3394' target='https://www.rfc-editor.org/info/rfc3394'>
<front>
<title>Advanced Encryption Standard (AES) Key Wrap Algorithm</title>
<author fullname='J. Schaad' initials='J.' surname='Schaad'><organization/></author>
<author fullname='R. Housley' initials='R.' surname='Housley'><organization/></author>
<date month='September' year='2002'/>
</front>
<seriesInfo name='RFC' value='3394'/>
<seriesInfo name='DOI' value='10.17487/RFC3394'/>
</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='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='RFC9180' target='https://www.rfc-editor.org/info/rfc9180'>
<front>
<title>Hybrid Public Key Encryption</title>
<author fullname='R. Barnes' initials='R.' surname='Barnes'><organization/></author>
<author fullname='K. Bhargavan' initials='K.' surname='Bhargavan'><organization/></author>
<author fullname='B. Lipp' initials='B.' surname='Lipp'><organization/></author>
<author fullname='C. Wood' initials='C.' surname='Wood'><organization/></author>
<date month='February' year='2022'/>
<abstract><t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t><t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t></abstract>
</front>
<seriesInfo name='RFC' value='9180'/>
<seriesInfo name='DOI' value='10.17487/RFC9180'/>
</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'>
	 <organization>Arm Limited</organization>
      </author>
      <author fullname='Hannes Tschofenig'>
	 <organization>Arm Limited</organization>
      </author>
      <author fullname='Henk Birkholz'>
	 <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname='Koen Zandberg'>
	 <organization>Inria</organization>
      </author>
      <date day='9' month='August' 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-19'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-suit-manifest-19.txt' type='TXT'/>
</reference>


<reference anchor='I-D.ietf-cose-hpke'>
   <front>
      <title>Use of Hybrid Public-Key Encryption (HPKE) with CBOR Object Signing and Encryption (COSE)</title>
      <author fullname='Hannes Tschofenig'>
	 <organization>Arm Limited</organization>
      </author>
      <author fullname='Russ Housley'>
	 <organization>Vigil Security, LLC</organization>
      </author>
      <author fullname='Brendan Moran'>
	 <organization>Arm Limited</organization>
      </author>
      <date day='11' month='July' year='2022'/>
      <abstract>
	 <t>   This specification defines hybrid public-key encryption (HPKE) for
   use with CBOR Object Signing and Encryption (COSE).  HPKE offers a
   variant of public-key encryption of arbitrary-sized plaintexts for a
   recipient public key.

   HPKE works for any combination of an asymmetric key encapsulation
   mechanism (KEM), key derivation function (KDF), and authenticated
   encryption with additional data (AEAD) encryption function.
   Authentication for HPKE in COSE is provided by COSE-native security
   mechanisms.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-cose-hpke-02'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-cose-hpke-02.txt' type='TXT'/>
</reference>


<reference anchor='I-D.housley-cose-aes-ctr-and-cbc'>
   <front>
      <title>CBOR Object Signing and Encryption (COSE): AES-CTR and AES-CBC</title>
      <author fullname='Russ Housley'>
	 <organization>Vigil Security, LLC</organization>
      </author>
      <author fullname='Hannes Tschofenig'>
	 <organization>Arm Limited</organization>
      </author>
      <date day='22' month='August' year='2022'/>
      <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>
   <seriesInfo name='Internet-Draft' value='draft-housley-cose-aes-ctr-and-cbc-00'/>
   <format target='https://www.ietf.org/archive/id/draft-housley-cose-aes-ctr-and-cbc-00.txt' type='TXT'/>
</reference>




    </references>

    <references title='Informative References'>





<reference anchor='RFC9019' target='https://www.rfc-editor.org/info/rfc9019'>
<front>
<title>A Firmware Update Architecture for Internet of Things</title>
<author fullname='B. Moran' initials='B.' surname='Moran'><organization/></author>
<author fullname='H. Tschofenig' initials='H.' surname='Tschofenig'><organization/></author>
<author fullname='D. Brown' initials='D.' surname='Brown'><organization/></author>
<author fullname='M. Meriac' initials='M.' surname='Meriac'><organization/></author>
<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='RFC9124' target='https://www.rfc-editor.org/info/rfc9124'>
<front>
<title>A Manifest Information Model for Firmware Updates in Internet of Things (IoT) Devices</title>
<author fullname='B. Moran' initials='B.' surname='Moran'><organization/></author>
<author fullname='H. Tschofenig' initials='H.' surname='Tschofenig'><organization/></author>
<author fullname='H. Birkholz' initials='H.' surname='Birkholz'><organization/></author>
<date month='January' year='2022'/>
<abstract><t>Vulnerabilities with Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism that is also suitable for constrained devices. Ensuring that devices function and remain secure over their service lifetime requires such an update mechanism to fix vulnerabilities, update configuration settings, and add new functionality.</t><t>One component of such a firmware update is a concise and machine-processable metadata document, or manifest, that describes the firmware image(s) and offers appropriate protection. This document describes the information that must be present in the manifest.</t></abstract>
</front>
<seriesInfo name='RFC' value='9124'/>
<seriesInfo name='DOI' value='10.17487/RFC9124'/>
</reference>



<reference anchor='RFC8937' target='https://www.rfc-editor.org/info/rfc8937'>
<front>
<title>Randomness Improvements for Security Protocols</title>
<author fullname='C. Cremers' initials='C.' surname='Cremers'><organization/></author>
<author fullname='L. Garratt' initials='L.' surname='Garratt'><organization/></author>
<author fullname='S. Smyshlyaev' initials='S.' surname='Smyshlyaev'><organization/></author>
<author fullname='N. Sullivan' initials='N.' surname='Sullivan'><organization/></author>
<author fullname='C. Wood' initials='C.' surname='Wood'><organization/></author>
<date month='October' year='2020'/>
<abstract><t>Randomness is a crucial ingredient for Transport Layer Security (TLS) and related security protocols.  Weak or predictable &quot;cryptographically secure&quot; pseudorandom number generators (CSPRNGs) can be abused or exploited for malicious purposes. An initial entropy source that seeds a CSPRNG might be weak or broken as well, which can also lead to critical and systemic security problems. This document describes a way for security protocol implementations to augment their CSPRNGs using long-term private keys. This improves randomness from broken or otherwise subverted CSPRNGs.</t><t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t></abstract>
</front>
<seriesInfo name='RFC' value='8937'/>
<seriesInfo name='DOI' value='10.17487/RFC8937'/>
</reference>



<reference anchor='RFC2630' target='https://www.rfc-editor.org/info/rfc2630'>
<front>
<title>Cryptographic Message Syntax</title>
<author fullname='R. Housley' initials='R.' surname='Housley'><organization/></author>
<date month='June' year='1999'/>
<abstract><t>This document describes the Cryptographic Message Syntax.  This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary messages.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='2630'/>
<seriesInfo name='DOI' value='10.17487/RFC2630'/>
</reference>



<reference anchor='RFC4949' target='https://www.rfc-editor.org/info/rfc4949'>
<front>
<title>Internet Security Glossary, Version 2</title>
<author fullname='R. Shirey' initials='R.' surname='Shirey'><organization/></author>
<date month='August' year='2007'/>
<abstract><t>This Glossary provides definitions, abbreviations, and explanations of terminology for information system security. The 334 pages of entries offer recommendations to improve the comprehensibility of written material that is generated in the Internet Standards Process (RFC 2026). The recommendations follow the principles that such writing should (a) use the same term or definition whenever the same concept is mentioned; (b) use terms in their plainest, dictionary sense; (c) use terms that are already well-established in open publications; and (d) avoid terms that either favor a particular vendor or favor a particular technology or mechanism over other, competing techniques that already exist or could be developed.  This memo provides information for the Internet community.</t></abstract>
</front>
<seriesInfo name='FYI' value='36'/>
<seriesInfo name='RFC' value='4949'/>
<seriesInfo name='DOI' value='10.17487/RFC4949'/>
</reference>


<reference anchor="iana-algo" target="https://www.iana.org/assignments/cose/cose.xhtml">
  <front>
    <title>CBOR Object Signing and Encryption (COSE)</title>
    <author >
      <organization>Internet Assigned Numbers Authority</organization>
    </author>
    <date year="2022" month="September" day="01"/>
  </front>
</reference>


    </references>


<section anchor="acknowledgements" title="Acknowledgements">

<t>We would like to thank Henk Birkholz for his feedback on the CDDL description in this document. Additionally, we would like to thank Michael Richardson, Dave Thaler, and Carsten Bormann for their review feedback. Finally, we would like to thank Dick Brooks for making us aware of the challenges firmware encryption imposes on binary analysis.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAKS9KWMAA608aW/bSJbfDfg/FJLBxu6WFEmW5WOQ3ZYle2PkXNvdg0VP
wyiRJanGFKkhKTvqdOa37zvqIkUl6cEqgCORdbx69e73qtrt9v5eqctEnYvb
bFY+yVyJyzTKN6tSZ6l40uVC3P58fSfeyVTPVFEW+3tyOs3VY2OH/b04i1K5
hOHiXM7KtlblrF2sddme6XyJrdvKtW53T/b3IlmqeZZvzkVRxvt7+3t6lZ+L
Va6Oj05O7/J1Ufa73bNuH+bNlYRZVbTOdbnZ33vK8od5nq1X5wTi/t6D2sCz
+Fxcp6XKU1W2JwgEDlqUMo3vZZKlANpGwSpW+nx/T4h8Fqm4KDeJfS5EmUXh
d53GKi3dkyLLy1zNCv9gs6z+LnMd+fZRtlxCf/9ep4lOg9nUp7Kd6KJsw0DT
LIGG7eyHH/EV4HIpVyudzkN47hP1qLDZABcm1+Uiy3EpbXxPH53C29cdcVdE
i2ymUj13r3hvXss0VUXT+yyfw0b/LnF7zsUoX4q3eqlLFbsWail1ci4WNESn
dEP8JPNlBxaLQNVhuemI19m6SNSmBsjNuii2XlVh+EXPdeJ2vSXevh27lpYS
q222QOXxf3rEVoWKtqEkIC864l2Wy9Q+ZAgvcpXGMq2++iaWzMymc4c6hwja
mnzSgcbZU23yiXzUcfVFdeq3OpV5Vps1xl6dKfb6KaEGHejVMOkbIBH5IDdy
KavzvlHp1pvqxLeX4w/vxPhDBzbkbtKpQfCg0k5p+ndQBPw0xxe4esHLT7N8
CUM9KmLCm6txv9c7s9+Pjs4G9vtp77jvv58Mmtqc9U679P26Pel4ibM0Iqv6
KsoK1V6sHpR7bOiD30hVtKMyb4O4aEfT6JwkUjqrg3vW9eCe9foe3LOjE7ek
4VHXfh+cDbi9lqlsy2SenTPOPP9aLHvxJUZFoeepisX79XKq8kKMqLWjcSO5
xxcfbsSH6T9UVIpb6AACQwD8oSA/GH+4vTzkXjFI3HPR7/b77e5Zu9szY8l8
rkBsLcpyVZy/fPn09NRBYJF2XkoChOTYS0QT/el8WpTLBHvv77XbbeBGEH0y
Inl7t9AFyq819hHFSkV6pkHklCpapPqfa/gKOBVWFwDAhdEmLWE1BQyLq1jB
wrNUJob2EHwpphuxLjU8w67lQonry7sr6EC6ym58Bwh5I+CLnIKAXRAoANYq
z4BBAKswyGIzzTWw7WoNTaL2A7YPsPb645vLQ8Ll6PKWRvtbLlfiAH613/zt
EMQaNNjfWxewHh5C4BA0QDaHpouNeFroRAnuIailRPXWLhawxliQ2gqUIg7Q
Cbcum9ECV4nUKSoLXAJgJgJmWuGyYAxS01GWPsIKNeIKldJSoSLagqeD24Pb
tdRxnCj89VwgyeVZvI5Yie/v/bJOUpXLKaC4xH2jGRxdAkiwwem8EAfX2d2h
iNWjjqDVQj4qkUtdAEwAM7C5gm+40VLkKtGwD4qwWaCoVn6n1yskSrEE6oC9
K5bQW9JCZVKAeEN2pr44FKwT6UwjX5iJQY5luK0lcoAbVC/lHEkOkFchi/09
ZmfxJAscQSXZCsb6/LlZfHz5AsPXx7BEhJu5vzddp4BKRAsgXRKBymm2Lmlu
Bw/hIRWAMQN3C2hDwYsyg0YpkkKlPcHfInzhc4tkaA0kFS2ELgVYBwlsT4dZ
zsDoxBUQzzKLVQJLM2LqyxcYpgRRXPD+hE0J5QtJE0xxMTOVM5NsYVBwrw5Q
hJBxrLk/bBR1QpY0m4HP5Rz2CvoAKCADIpqsZZdQ5UYpYtDRpQShgvJGlkgk
RD1LVRSADRKXSOQ8DNBCDBjaxhpAuiHawc2BXjMAGOcA2plpNOc0yJMSZEiB
wHrmI0QGvAd8ijyF2NI5iCKZIze0AMVRso5JzpaljB5ARIHcykG94WLpeQR7
VRBSKuBNUSEDg7/mXqLcrGAxSbIRxCvA4rAAYIWHNHtKVDxXlv9ZPsN63FCw
T8tsnRKV6dxAArxwhYL1kwTpALjJFSAxbYPSgHXABIBukAPLJcJ4cPPhI+iE
XP1zrXMkZQszTciQEvkF0mkpH6AlkN5yDfu3zAAO2FbY13VSEmmCdkLJrT6t
kkyXAE6FNrf5h0gbOQbXb6UFq7nf4WcOmmOlaQ+QvJr2GmaNFQEIcDGv1loA
mZklwIi858i2FSGJHaGdfxYITSNGcRirTAykAWZYWxlIiMaZc4GrSAYD6yMp
EsfGCLSsoqRVl1wtXHHeqP9aMM8KbEtcCbGuCiEBk5wkRR1djFbekVFdRTB4
4fosoh4lEA8wC4k3I6CLvyJLBCoePD8FQgw39CnDVeaZjBZGzYPWYw3iNHVt
5Wh2JuACkm4ySll8TSczcrFxo2J2sAeKdlvNioM3l28OHYUCkBZz0H4dKQI3
JdMLF7/KwApCLfSwZVVkNGZhZXWuQJjt7y1UskJRAX4rjI3aOwdNY7TqBtBd
PimwtJF/oAsMU2MRmRcws0ZGxllo+wOGcrgnQQeirURBC4v2IBsx4BUEcNVc
o4GwzMCclWR54e5ECCHRS7ipT6wNDNYcIaE39wSCMW9VIQYPFeWukSciQ0zA
KjZJJmNkdCCxLeUMo38CnACHA75r4hnMMq9G6qK6xfzHCwysx2Z2oZHn6zx8
Rty1BCoFshWJkjkJbtKYgOW/kdlGkleBg+cBLxBhuM15tp6D71CyhLdIawWW
GmOgceGIKJTnNblkxlJFlOspPHQMBzhHFLUcRIUf8oDGBJ6wWCA69GCwLU1Q
ExHikHMF5MvG4HMxdqYjk/AdjK/TLMnmG0s4SPMYXCnEs3c/3949a/H/4v0H
+n5z+T8/X99cTvD77evR27fui21x+/rDz2/h/f6e+eq7giv57vL9hHvDU1F7
9G70v8+Y4Z99+Hh3/eH96O0zWAkRK0WcDBuwTpwaVgPWR7SSjWfRCZ0uxh//
I50Wq7/2BmwXoecJdhF9Rw/zy5f9PbDLjPzO0gRNePwJmN+gZANKwYFAaQPb
rNBcAVEN0xQL8LgFcn9n2wUCDwq+wKbJJXC/RB/uayLxK9Zoy9iJ32HrWdOR
mkrYd43chEYVt+riyp1sYKoqQK2onLo63UuoZflOODRznHbNHGT3G0MnS5Ls
iRhJyZRCVzj+D+KWxj0XN1nibBqkuXLDOhLnReoLOMIYfR3sfmNh2T0CgKvA
Rd8xiHBLDEwo9CVgW5qW28QulujcthLuRsYCRivOGKMOCRyh0tLwlh+3Oo5F
kldkoMRaIcoB4QJjHox7/Aa4r+hWUH0dM0ajngMaZVFWGxVDEzwqfkNvB0cB
kVACYFsjjb8yEgY8DE/BN6KsH8RrVuYf2TvGBV5uK/Nm2jLSaVQh3OdIx1/w
TUDDjsXZnqyQOiIp1hiVna5J39VFMRtuTomxHU/DkL1k7eEtogH3p4QdhBHS
DMT+wuhEtITQxaJOa1arnhxrk1ttHooKlQLBRaHnWlkPgMPuRwBSxYP5/Bnb
t0HfAWJQKBkj2+EAEF9silItrRuWKxCWhXF0gmHB/IAVGQR5HxRxBcBzPCWd
5RIGXhNwzGUNM5Evb4I6hnXB49XgAqzBGNlybeVWaMA7piDkgMvBQiPy+Ne/
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

-->

</rfc>

