<?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-08" category="std">
  <front>
    <title abbrev="Encrypted Payloads in SUIT Manifests">Encrypted Payloads in 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="October" day="06"/>

    <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.</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>While the original motivating use case of this document was firmware encryption, SUIT manifests
may require payloads other than firmware images to experience confidentiality
protection, such as
- software (other than firmware),
- personalization data, 
- configuration data,
- machine learning models, etc.</t>

<t>Hence, the term payload is used to generically refer to those objects that may be subject to 
encryption.</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 payload.</t>
  <t>Recipient: Role of the entity that receives an encrypted payload.</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 payloads 
and manifests from an author to devices. It does, however, not
detail the use of payload encryption.</t>

<t>This document enhances this architecture to support encryption.
The author and the distribution system are logical roles. In some deployments
these roles are separated in different physical entities and in others
they are co-located.</t>

<t><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 payload has to be delivered. The author
is typically unaware which devices need to receive these payloads.</t>

<t>To apply encryption the sender needs to know the recipient. 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>If the author delegates the task of identifying devices that are the recipients 
of the payloads to the distribution system, it needs to trust the delivery 
system to perform the encryption of the plaintext firmware image.</t>

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

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

<t><list style="symbols">
  <t>The author acts as the sender and the recipient is the device
(or the devices).</t>
  <t>The author treats the distribution system as the initial recipient. Then, 
the distribution system decrypts and re-encrypts the payload for consumption 
by the device (or devices). Delegating the task of re-encrypting 
the payload to the distribution system offers flexiblity when the number 
of devices that need to receive encrypted payloads 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 payload.</t>
</list></t>

<t>For both variants the key distribution data (embedded inside 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 author.</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(payload,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 payload 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.</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 payloads only once. For example, 
payloads may contain information unique to an instance of a device rather than
information that is independent of a device instance and therefore applies to an 
entire class of devices.</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 payload, 
which includes information like the algorithm and the IV, even though the 
payload 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: “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 this specification 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>While the SUIT manifest is integrity protected and authenticated, the SUIT envelope 
is not protected cryptographically. Hence, an adversary located along the communication
path between the sender and the recipient could modify the COSE_Encrypt structure
(assuming that no other communication security mechanism is in use).</t>

<t>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.</t>

<t>To mitigate this attack, a new parameter, called suit-cek-verification, is added
to the manifest. 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>

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

</section>
<section anchor="firmware-updates-on-iot-devices-with-flash-memory" title="Firmware Updates on IoT Devices with Flash Memory.">

<t>Flash memory on microcontrollers is a type of non-volatile memory that erases
data in units called blocks, pages or sectors and re-writes data at byte level 
(often 4-bytes).
Flash memory is furthermore segmented into different memory regions, which store
the bootloader, different versions of firmware images (in so-called slots), 
and configuration data. <xref target="image-layout"/> shows an example layout of a 
microcontroller flash area. The primary slot contains the firmware image to be 
executed by the bootloader, which is a common deployment on devices that do 
not offer the concept of position independent code.</t>

<t>When the encrypted firmware image has been transferred to the device, it will
typically be stored in a staging area, in the secondary slot in our example.</t>

<t>At the next boot, the bootloader will recognize a new firmware image in the 
secondary slot and will start decrypting the downloaded image sector-by-sector
and will swap it with the image found in the primary slot.</t>

<t>The swap should only take place after the signature on the plaintext is verified.
Note that the plaintext firmware image is available in the primary slot only after
the swap has been completed, unless “dummy decrypt” is used to compute the hash 
over the plaintext prior to executing the decrypt operation during a swap.
Dummy decryption here refers to the decryption of the firmware image found in 
the secondary slot sector-by-sector and computing a rolling hash over the resulting
plaintext firmware image (also sector-by-sector) without performing the swap operation. 
While there are performance optimizations possible, such as conveying hashes for 
each sector in the manifest rather than a hash of the entire firmware image, 
such optimizations are not described in this specification.</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 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>Since the image in primary slot is available in cleartext it may need to 
re-encrypted it before copying it to the secondary slot. This may be necessary
when the secondary slot has different access permissions or when the staging
area is located in an off-chip flash memory and therefore more vulnerable to
physical attacks. Note that this description assumes that the processor does
not execute encrypted memory (i.e. using on-the-fly decryption in hardware).</t>

<figure title="Example Flash Area Layout" anchor="image-layout"><artwork><![CDATA[
+--------------------------------------------------+
| Bootloader                                       |
+--------------------------------------------------+
| Primary Slot                                     |
|                                        (sector 1)|
|..................................................|
|                                                  |
|                                        (sector 2)|
|..................................................|
|                                                  |
|                                        (sector 3)|
|..................................................|
|                                                  |
|                                        (sector 4)|
+--------------------------------------------------+
| Secondary Slot                                   |
|                                        (sector 1)|
|..................................................|
|                                                  |
|                                        (sector 2)|
|..................................................|
|                                                  |
|                                        (sector 3)|
|..................................................|
|                                                  |
|                                        (sector 4)|
+--------------------------------------------------+
| Swap Area                                        |
|                                                  |
+--------------------------------------------------+
| Configuration Data                               |
+--------------------------------------------------+
]]></artwork></figure>

<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 firmware image into sectors and to encrypt each sector 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 an update gets aborted while the bootloader is decrypting the newly obtained
image and swapping the sectors, the bootloader can restart where it left off. This
technique offers robustness and better performance.</t>

<t>For this purpose ciphers without integrity protection are used
to encrypt the firmware image. Integrity protection for the firmware image must,
however, be provided and the the suit-parameter-image-digest, defined in Section 
8.4.8.6 of <xref target="I-D.ietf-suit-manifest"/>, MUST be used.</t>

<t><xref target="I-D.housley-cose-aes-ctr-and-cbc"/> registers AES Counter mode (AES-CTR) and 
AES Cipher Block Chaining (AES-CBC) ciphers that do not offer integrity protection. 
These ciphers are useful for the use cases that require firmware encryption on IoT
devices. For many other use cases where software packages, configuration information 
or personalization data needs to be encrypted, the use of Authenticated Encryption 
with Additional Data (AEAD) ciphers is preferred.</t>

<t>The following sub-sections provide further information about the initialization vector
(IV) selection for use with AES-CBC and AES-CTR in the firmware encryption context. An
IV MUST NOTE be re-used when the same key is used. For this application, the IVs are
not random but rather based on the slot/sector-combination in flash memory. The 
text below assumes that the block-size of AES is (much) smaller than sector size. The
typical sector-size of flash memory is in the order of KiB. Hence, multiple AES blocks
need to be decrypted until an entire sector is completed.</t>

<section anchor="aes-cbc" title="AES-CBC">

<t>In AES-CBC a single IV is used for encryption of firmware belonging to a single sector
since individual AES blocks are chained toghether, as shown in <xref target="aes-cbc-fig"/>. The numbering 
of sectors in a slot MUST start with zero (0) and MUST increase by one with every sector
till the end of the slot is reached. The IV follows this numbering.</t>

<t>For example, let us assume the slot size of a specific flash controller on an IoT device 
is 64 KiB, the sector size 4096 bytes (4 KiB) and AES-128-CBC uses an AES-block size of
128 bit (16 bytes). Hence, sector 0 needs 4096/16=256 AES-128-CBC operations using IV 0.
If the firmware image fills the entire slot then that slot contains 16 sectors, i.e. IVs
ranging from 0 to 15.</t>

<figure title="AES-CBC Operation" anchor="aes-cbc-fig"><artwork><![CDATA[
       P1              P2
        |              |
   IV--(+)    +-------(+)
        |     |        |
        |     |        |
    +-------+ |    +-------+
    |       | |    |       |
    |       | |    |       |
 k--|  E    | | k--|  E    |
    |       | |    |       |
    +-------+ |    +-------+
        |     |        |
        +-----+        |
        |              |
        |              |
        C1             C2

Legend: 
  Pi = Plaintext blocks
  Ci = Ciphertext blocks
  E = Encryption function
  k = Symmetric key
  (+) = XOR operation
]]></artwork></figure>

</section>
<section anchor="aes-ctr" title="AES-CTR">

<t>Unlike AES-CBC, AES-CTR uses an IV per AES operation, as shown in <xref target="aes-ctr-fig"/>. 
Hence, when an image is encrypted using AES-CTR-128 or AES-CTR-256, the IV MUST
start with zero (0) and MUST be incremented by one for each 16-byte plaintext block
within the entire slot.</t>

<t>Using the previous example with a slot size of 64 KiB, the sector size 4096 bytes and
the AES plaintext block size of 16 byte requires IVs from 0 to 255 in the first sector
and 16 * 256 IVs for the remaining sectors in the slot. The last IV used to encrypt 
data in the slot is therefore</t>

<figure title="AES-CTR Operation" anchor="aes-ctr-fig"><artwork><![CDATA[
         IV1            IV2
          |              |
          |              |
          |              |
      +-------+      +-------+
      |       |      |       |
      |       |      |       |
   k--|  E    |   k--|  E    |
      |       |      |       |
      +-------+      +-------+
          |              |
     P1--(+)        P2--(+)
          |              |
          |              |
          C1             C2

Legend: 
  See previous diagram.
]]></artwork></figure>

</section>
</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 payload encryption</t>

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

<t>Both cases require some upfront communication interaction. 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 payloads 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 payloads. 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' 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>
      <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' initials='H.' surname='Tschofenig'>
         <organization>Arm Limited</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>
      <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' initials='R.' surname='Housley'>
         <organization>Vigil Security, LLC</organization>
      </author>
      <author fullname='Hannes Tschofenig' initials='H.' surname='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:
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
afw/PTYnaJh3AAA=

-->

</rfc>

