<?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-03" 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="2022" month="March" day="07"/>

    <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.  Firmware encryption uses the IETF 
SUIT manifest with key establishment provided by the hybrid
public-key encryption (HPKE) scheme and the AES Key Wrap (AES-KW) 
with a pre-shared key-encryption key. Encryption of the firmware
image is encrypted using AES-GCM or AES-CCM.</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>

</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="I-D.irtf-cfrg-hpke"/> and have 
the following meaning:</t>

<t><list style="symbols">
  <t>Sender: Role of entity which sends an encrypted message.</t>
  <t>Recipient: Role of entity which receives an encrypted message.</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="I-D.irtf-cfrg-hpke"/>.</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, however,
not detail the use of encrypted firmware images.</t>

<t>This document enhances the SUIT architecutre 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 will not be 
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 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-cek-verification       => bstr,
    SUIT_Severable_Members_Choice,
    SUIT_Unseverable_Members,
    * $$SUIT_Manifest_Extensions,
}
]]></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 accross 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 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, 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="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: 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 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><xref target="I-D.ietf-cose-hpke"/> defines the use of HPKE with COSE.</t>

<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 (detached) firmware image (at layer 0).</t>
  <t>AES-GCM-128 for encryption of the CEK in layer 1 as well as ECDH
with NIST P-256 and HKDF-SHA256 as a Key Encapsulation Mechanism (KEM).</t>
</list></t>

<figure title="COSE_Encrypt Example for HPKE" anchor="hpke-example"><artwork><![CDATA[
96_0([
    / protected header with alg=AES-GCM-128 /
    h'a10101',
    / unprotected header with nonce /
    {5: h'938b528516193cc7123ff037809f4c2a'},
    / detached ciphertext /
    null,
    / recipient structure /
    [
        / protected field with alg for HPKE /
        h'a1013863',
        / unprotected header /
        {
            / ephemeral public key with x / y coodinate /
            -1: h'a401022001215820a596f2ca8d159c04942308ca90
                  cfbfca65b108ca127df8fe191a063d00d7c5172258
                  20aef47a45d6d6c572e7bd1b9f3e69b50ad3875c68
                  f6da0caaa90c675df4162c39',
             /  kid for recipient static ECDH public key /
             4: h'6b69642d32',
        },
        / encrypted CEK /
        h'9aba6fa44e9b2cef9d646614dcda670dbdb31a3b9d37c7a
          65b099a8152533062',
    ],
])
]]></artwork></figure>

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

<t>[[Editor’s Note: Guidance about the selection of an IV needs to be added here.]]</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 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 does not require any actions by IANA.</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='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='25' month='October' 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-16'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-suit-manifest-16.txt' type='TXT'/>
</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 day='2' month='September' year='2021'/>
      <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.

 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-12'/>
   <format target='https://www.ietf.org/archive/id/draft-irtf-cfrg-hpke-12.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='10' month='January' year='2022'/>
      <abstract>
	 <t>   This specification defines hybrid public-key encryption (HPKE) for
   use with CBOR Object Signing and Encryption (COSE).

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-cose-hpke-00'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-cose-hpke-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>




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

-->

</rfc>

