<?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.3.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-01" category="std">

  <front>
    <title abbrev="Firmware Encryption">Firmware 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>

    <date year="2021" month="July" day="12"/>

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

    <abstract>


<t>This document specifies a firmware update mechanism where the
firmware image is encrypted.  This mechanism uses the IETF 
SUIT manifest with key establishment provided by the hybrid
public-key encryption (HPKE) scheme or AES Key Wrap (AES-KW) with
a pre-shared key-encryption key.  In either case, AES-GCM or 
AES-CCM is used for firmware encryption.</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="I-D.ietf-suit-information-model"/> 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 image. For example, return-oriented programming (ROP) requires 
intimate knowledge of the target firmware and encryption makes this 
approach much more difficult to exploit. The SUIT manifest provides the 
data needed for authorized recipients of the firmware image to decrypt it.</t>

<t>A 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. This symmetric key
can be established using a variety of mechanisms; this document defines two 
approaches for use with the IETF SUIT manifest.  Key establishment can be
provided by the hybrid public-key encryption (HPKE) scheme or AES Key Wrap
(AES-KW) with a pre-shared key-encryption key.  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 for developers.</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"/>
and the SUIT architecture <xref target="RFC9019"/>.</t>

<t>In context of encryption, the terms “recipient” and “firmware consumer” 
are used interchangeably.</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 / key-encrypting 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="I-D.irtf-cfrg-hpke"/>.</t>
</list></t>

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

<t>Figure 1 in <xref target="RFC9019"/> shows the architecture for distributing firmware 
images and manifests from the author to the firmware consumer. It does, however,
not detail the use of encrypted firmware images. <xref target="arch-fig"/> therefore 
focuses on those aspects. The firmware server and the device management 
infrastructure is represented by the distribution system, which is aware 
of the individual devices a firmware update has to be delivered to.</t>

<t>Firmware encryption requires the party doing the encryption to know either 
the KEK (in case of AES-KW) or the public key of the recipient (in case of
HPKE). The firmware author may have knowledge about all the devices but in 
most cases this will not be likely. Hence, it is the responsibility of the 
distribution system to perform the firmware encryption.</t>

<t>Since including the COSE_Encrypt structure in the manifest invalidates a
a digital signature or a MAC added by the author, this structure needs to 
be added to the envelope by the distribution system. This approach offers
flexiblity when the number of devices that need to receive encrypted 
firmware images changes dynamically or when the updates to KEKs or 
recipient public keys are necessary. As a downside, the author needs 
to trust the distribution system with performing 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>

</section>
<section anchor="aes-key-wrap" 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:</t>

<t><list style="symbols">
  <t>If all of authorized recipients have access to the KEK, a single 
COSE_recipient structure contains the encrypted CEK.</t>
  <t>If recipients have different KEKs, then the COSE_recipient structure 
may contain the same CEK encrypted with many different KEKs. The benefit 
of this approach is that the firmware image is encrypted only once with 
the CEK while the authorized recipients still need to use their 
individual KEKs to obtain the plaintext.</t>
  <t>The last option is to use different CEKs encrypted with KEKs of the 
authorized recipients. This 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-based Firmware 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, not to the protected 
field of the COSE_recipient structure.</t>

<t>The value of the external_aad is 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 dignostic 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 was “4C805F1587D624ED5E0DBB7A7F7FA7EB” and the encrypted firmware was:</t>

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

</section>
<section anchor="hybrid-public-key-encryption-hpke" title="Hybrid Public-Key Encryption (HPKE)">

<t>Hybrid public-key encryption (HPKE) <xref target="I-D.irtf-cfrg-hpke"/> 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: The firmware
author uses HPKE, which internally utilizes a non-interactive ephemeral-static
Diffie-Hellman exchange to derive a shared secret, which is then used to 
encrypt plaintext.</t>

<t>In the firmware encryption scenario, the plaintext passed to HPKE for encryption 
is the randomly generated CEK. The output of the HPKE operation is therefore 
the encrypted CEK along with HPKE encapsulated key (i.e. the ephemeral ECDH 
public key of the author). The CEK is then used to encrypt the firmware.</t>

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

<t>This approach allows all recipients to use the same CEK to encrypt 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>The CDDL for the COSE_Encrypt structure as used with HPKE is shown in <xref target="cddl-hpke"/>.</t>

<figure title="CDDL for HPKE-based COSE_Encrypt Structure" anchor="cddl-hpke"><artwork><![CDATA[
COSE_Encrypt_Tagged = #6.96(COSE_Encrypt)
 
SUIT_Encryption_Info = COSE_Encrypt_Tagged

COSE_Encrypt = [
  protected   : bstr .cbor header_map, ; must contain alg
  unprotected : header_map,            ; must contain iv
  ciphertext  : null,                  ; because of detached ciphertext
  recipients  : [ + COSE_recipient_outer ]
]

COSE_recipient_outer = [
  protected   : bstr .size 0,
  unprotected : header_map, ; must contain alg
  ciphertext  : bstr        ; CEK encrypted based on HPKE algo
  recipients  : [ + COSE_recipient_inner ]  
]

COSE_recipient_inner = [
  protected   : bstr .cbor header_map, ; must contain alg
  unprotected : header_map, ; must contain kid, 
  ciphertext  : bstr        ; CEK encrypted based on HPKE algo
  recipients  : null
]

header_map = {
  Generic_Headers,
  * label =values,
}

Generic_Headers = (
    ? 1 => int,         ; algorithm identifier
    ? 2 => crv,         ; EC identifier
    ? 4 => bstr,        ; key identifier
    ? 5 => bstr         ; IV
)
]]></artwork></figure>

<t>The COSE_Encrypt structure in <xref target="cddl-hpke"/> requires the 
encrypted CEK and the ephemeral public key of the firmare author to be
generated. This is accomplished with the HPKE encryption function as 
shown in <xref target="hpke-encryption"/>.</t>

<figure anchor="hpke-encryption"><artwork><![CDATA[
    CEK = random()
    pkR = DeserializePublicKey(recipient_public_key)
    info = "cose hpke" || 0x00 || COSE_KDF_Context
    enc, context = SetupBaseS(pkR, info)
    ciphertext = context.Seal(null, CEK)
]]></artwork></figure>

<t>Legend:</t>

<t><list style="symbols">
  <t>The functions DeserializePublicKey(), SetupBaseS() and Seal() are 
defined in HPKE <xref target="I-D.irtf-cfrg-hpke"/>.</t>
  <t>CEK is a random byte sequence of keysize length whereby keysize 
corresponds to the size of the indicated symmetric encryption algorithm 
used for firmware encryption. For example, AES-128-GCM requires a 16 byte 
key. The CEK would therefore be 16 bytes long.</t>
  <t>‘recipient_public_key’ represents the public key of the recipient.</t>
  <t>‘info’ is a data structure described below used as input to the key 
derivation internal to the HPKE algorithm. In addition to the constant 
prefix, the COSE_KDF_Context structure is used. The COSE_KDF_Context is 
shown in <xref target="cddl-cose-kdf"/>.</t>
</list></t>

<t>The result of the above-described operation is the encrypted CEK (denoted 
as ciphertext) and the enc - the HPKE encapsulated key (i.e. the ephemeral 
ECDH public key of the author).</t>

<figure title="COSE_KDF_Context Data Structure" anchor="cddl-cose-kdf"><artwork><![CDATA[
PartyInfo = (
   identity : bstr,
   nonce : nil,
   other : nil
)

COSE_KDF_Context = [
   AlgorithmID : int,
   PartyUInfo : [ PartyInfo ],
   PartyVInfo : [ PartyInfo ],
   SuppPubInfo : [
       keyDataLength : uint,
       protected : empty_or_serialized_map
   ],
]
]]></artwork></figure>

<t>Notes:</t>

<t><list style="symbols">
  <t>PartyUInfo.identity corresponds to the kid found in the 
COSE_Sign_Tagged or COSE_Sign1_Tagged structure (when a digital 
signature is used). When utilizing a MAC, then the kid is found in 
the COSE_Mac_Tagged or COSE_Mac0_Tagged structure.</t>
  <t>PartyVInfo.identity corresponds to the kid used for the respective 
recipient from the inner-most recipients array.</t>
  <t>The value in the AlgorithmID field corresponds to the alg parameter 
in the protected structure in the inner-most recipients array.</t>
  <t>keyDataLength is set to the number of bits of the desired output value.</t>
  <t>protected refers to the protected structure of the inner-most array.</t>
</list></t>

<t>The author encrypts the firmware using the CEK with the selected algorithm.</t>

<t>The recipient decrypts the encrypted CEK, using two input parameters:</t>

<t><list style="symbols">
  <t>the private key skR corresponding to the public key pkR used by the author 
when creating the manifest.</t>
  <t>the HPKE encapsulated key (i.e. ephemeral ECDH public key) created by the 
author.</t>
</list></t>

<t>If the HPKE operation is successful, the recipient obtains the CEK and can decrypt the 
firmware.</t>

<t><xref target="hpke-decryption"/> shows the HPKE computations performed by the recipient for decryption.</t>

<figure anchor="hpke-decryption"><artwork><![CDATA[
    info = "cose hpke" || 0x00 || COSE_KDF_Context
    context = SetupBaseR(ciphertext, skR, info)
    CEK = context.Open(null, ciphertext)
]]></artwork></figure>

<t>An example of the COSE_Encrypt structure using the HPKE scheme is 
shown in <xref target="hpke-example"/>. It uses the following algorithm 
combination:</t>

<t><list style="symbols">
  <t>AES-GCM-128 for encryption of the firmware image.</t>
  <t>AES-GCM-128 for encrytion of the CEK.</t>
  <t>Key Encapsulation Mechanism (KEM): NIST P-256</t>
  <t>Key Derivation Function (KDF): HKDF-SHA256</t>
</list></t>

<figure title="COSE_Encrypt Example for HPKE" anchor="hpke-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,  
        [  // COSE_recipient_outer
            h'',          // empty protected field
            {             // unprotected field with ... 
                 1: 1     //     alg=A128GCM
            },
            // Encrypted CEK
            h'FA55A50CF110908DA6443149F2C2062011A7D8333A72721A',
            [    // COSE_recipient_inner
                 // protected field with alg HPKE/P-256+HKDF-256 (new)
                 h'A1013818',
                 {  // unprotected field with ...
                    //    HPKE encapsulated key
                    -1: h'A4010220012158205F...979D51687187510C445’,
                    //    kid for recipient static ECDH public key
                     4: h'6B69642D31'
                 }, 
                 // empty ciphertext
                 null
            ]
        ]
     ]
)
]]></artwork></figure>

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

<t>TBD: Example for complete manifest here (which also includes the digital signature).
TBD: Multiple recipient example as well. 
TBD: Encryption of manifest (in addition of firmware encryption).</t>

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

<t>The algorithms described in this document assume that the firmware author</t>

<t><list style="symbols">
  <t>has either shared 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 generations are followed, see <xref target="RFC8937"/>.</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 requests IANA to create new entries in the COSE Algorithms
registry established with <xref target="I-D.ietf-cose-rfc8152bis-algs"/>.</t>

<figure><artwork><![CDATA[
+-------------+-------+---------+------------+--------+---------------+  
| Name        | Value | KDF     | Ephemeral- | Key    | Description   |
|             |       |         | Static     | Wrap   |               |
+-------------+-------+---------+------------+--------+---------------+
| HPKE/P-256+ | TBD1  | HKDF -  | yes        | none   | HPKE with     |
| HKDF-256    |       | SHA-256 |            |        | ECDH-ES       |
|             |       |         |            |        | (P-256) +     |
|             |       |         |            |        | HKDF-256      |
+-------------+-------+---------+------------+--------+---------------+
| HPKE/P-384+ | TBD2  | HKDF -  | yes        | none   | HPKE with     |
| HKDF-SHA384 |       | SHA-384 |            |        | ECDH-ES       |
|             |       |         |            |        | (P-384) +     |
|             |       |         |            |        | HKDF-384      |
+-------------+-------+---------+------------+--------+---------------+
| HPKE/P-521+ | TBD3  | HKDF -  | yes        | none   | HPKE with     |
| HKDF-SHA521 |       | SHA-521 |            |        | ECDH-ES       |
|             |       |         |            |        | (P-521) +     |
|             |       |         |            |        | HKDF-521      |
+-------------+-------+---------+------------+--------+---------------+
| HPKE        | TBD4  | HKDF -  | yes        | none   | HPKE with     |
| X25519 +    |       | SHA-256 |            |        | ECDH-ES       |
| HKDF-SHA256 |       |         |            |        | (X25519) +    |
|             |       |         |            |        | HKDF-256      |
+-------------+-------+---------+------------+--------+---------------+
| HPKE        | TBD4  | HKDF -  | yes        | none   | HPKE with     |
| X448 +      |       | SHA-512 |            |        | ECDH-ES       |
| HKDF-SHA512 |       |         |            |        | (X448) +      |
|             |       |         |            |        | HKDF-512      |
+-------------+-------+---------+------------+--------+---------------+
]]></artwork></figure>

</section>


  </middle>

  <back>

    <references title='Normative References'>




<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 month="February" day="22" year="2021" />
      <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-12" />
   <format type="TXT" target="https://www.ietf.org/archive/id/draft-ietf-suit-manifest-12.txt" />
</reference>



<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 initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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 initials='J.' surname='Schaad' fullname='J. Schaad'><organization /></author>
<author initials='R.' surname='Housley' fullname='R. Housley'><organization /></author>
<date year='2002' month='September' />
</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 initials='J.' surname='Schaad' fullname='J. Schaad'><organization /></author>
<date year='2017' month='July' />
<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 initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<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="I-D.irtf-cfrg-hpke">
   <front>
      <title>Hybrid Public Key Encryption</title>
      <author fullname="Richard L. Barnes">
	 <organization>Cisco</organization>
      </author>
      <author fullname="Karthik Bhargavan">
	 <organization>Inria</organization>
      </author>
      <author fullname="Benjamin Lipp">
	 <organization>Inria</organization>
      </author>
      <author fullname="Christopher A. Wood">
	 <organization>Cloudflare</organization>
      </author>
      <date month="February" day="15" year="2021" />
      <abstract>
	 <t>   This document describes a scheme for hybrid public-key encryption
   (HPKE).  This scheme provides authenticated 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.  We provide
   instantiations of the scheme using widely used and efficient
   primitives, such as Elliptic Curve Diffie-Hellman key agreement,
   HKDF, and SHA2.

   This document is a product of the Crypto Forum Research Group (CFRG)
   in the IRTF.

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


<reference anchor="I-D.ietf-cose-rfc8152bis-algs">
   <front>
      <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
      <author fullname="Jim Schaad">
	 <organization>August Cellars</organization>
      </author>
      <date month="September" day="24" year="2020" />
      <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 a set of algorithms that can be used with the
   CBOR Object Signing and Encryption (COSE) protocol RFC XXXX.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-cose-rfc8152bis-algs-12" />
   <format type="TXT" target="https://www.ietf.org/archive/id/draft-ietf-cose-rfc8152bis-algs-12.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 initials='B.' surname='Moran' fullname='B. Moran'><organization /></author>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'><organization /></author>
<author initials='D.' surname='Brown' fullname='D. Brown'><organization /></author>
<author initials='M.' surname='Meriac' fullname='M. Meriac'><organization /></author>
<date year='2021' month='April' />
<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="I-D.ietf-suit-information-model">
   <front>
      <title>A Manifest Information Model for Firmware Updates in IoT Devices</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>
      <date month="April" day="6" year="2021" />
      <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 life requires such an update
   mechanism to fix vulnerabilities, to update configuration settings,
   as well as adding new functionality.

   One component of such a firmware update is a concise and machine-
   processable meta-data 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="Internet-Draft" value="draft-ietf-suit-information-model-11" />
   <format type="TXT" target="https://www.ietf.org/archive/id/draft-ietf-suit-information-model-11.txt" />
</reference>



<reference  anchor="RFC8937" target='https://www.rfc-editor.org/info/rfc8937'>
<front>
<title>Randomness Improvements for Security Protocols</title>
<author initials='C.' surname='Cremers' fullname='C. Cremers'><organization /></author>
<author initials='L.' surname='Garratt' fullname='L. Garratt'><organization /></author>
<author initials='S.' surname='Smyshlyaev' fullname='S. Smyshlyaev'><organization /></author>
<author initials='N.' surname='Sullivan' fullname='N. Sullivan'><organization /></author>
<author initials='C.' surname='Wood' fullname='C. Wood'><organization /></author>
<date year='2020' month='October' />
<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 initials='R.' surname='Housley' fullname='R. Housley'><organization /></author>
<date year='1999' month='June' />
<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 initials='R.' surname='Shirey' fullname='R. Shirey'><organization /></author>
<date year='2007' month='August' />
<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>




    </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 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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
wT/G/5ZcAAA=

-->

</rfc>

