<?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-tschofenig-suit-firmware-encryption" 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="May" day="31"/>

    <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 that 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 for interoperability of
different SUIT manifest implementations. The document also offers 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>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 1949 <xref target="RFC1949"/>.</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="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, 
contains the CEK encrypted by the KEK. When the firmware image is encrypted 
for use by multiple recipients, the COSE_recipient structure will contain 
one encrypted CEK if all of the authorized recipients have access to the KEK.</t>

<t>However, the COSE_recipient structure can contain the same CEK encrypted
with many different KEKs if needed to reach all of the authorized recipients.</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 defined as 
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 it can be seen in the CDDL in <xref target="cddl-aeskw"/>, there are two protected fields 
and the ‘protected’ field in the Enc_structure, see <xref target="cddl-enc-aeskw"/>, 
refers to the outer protected field, not 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. In the firmware 
encryption scenario, the plaintext passed to HPKE for encryption is a 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 us to have 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 received ciphertext, i.e. 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"/>.</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: Add example for complete manifest here (which also includes the digital signature).
TBD: Add multiple recipient example as well. 
TBD: Add 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 be provided by a 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>

</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="RFC1949" target='https://www.rfc-editor.org/info/rfc1949'>
<front>
<title>Scalable Multicast Key Distribution</title>
<author initials='A.' surname='Ballardie' fullname='A. Ballardie'><organization /></author>
<date year='1996' month='May' />
<abstract><t>This memo provides a scalable solution to the multicast key distribution problem.  This memo defines an Experimental Protocol for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='1949'/>
<seriesInfo name='DOI' value='10.17487/RFC1949'/>
</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 Borman for their review feedback.</t>

</section>


  </back>

<!-- ##markdown-source:
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
zyG7CoZU8b8Kok36n2E9Y90KRlFK/ZVbRLr24ZQ9ytWQUZ/p6ZHRaDtwcsCs
Ao0VLaWjT7ZJ1OGHMsam+sEphA5StB3Gvgq+0aZDdklUfQjLhliWyE2HTFk8
mIEKlUcK2q9wLIqUjQtsjTEwyr4gQ0zvAWi4zpdQUqM+ZOZgz0/ZkSL1qGE9
tkVHbLbZ/jpOrlORYHEKPKSRHt3leI9lWR5ec+4rKTJP35U3w6B9sCFFhKfI
okt9KbdhnLI8Rk2FiIzVRxgHdpfCCYzjkMV3sUUWSFToU6VJuZzH5tlj+VBD
LiDVwEUr+I+uLhGUcqvAhixEecEGeayix5aLqSDkQNfNyrlnJtnXEwqcRwck
qD6GBti4sDxFUxUABsHcDivYmSqTKZNcFd6YhMtx20MC+ascX0z+rPBFJ3xq
MZnvOWD2TlnrfbvfgO/+EL/bHfxu0R2/i9/LBd2npx6npy5+L+hph54OWwgN
7BCILi99jujRxRQe3QS+49L165AHUti1dsNjSswpGAKdC8tFUJpnbMHxWrw/
OWW9bn/YHw067Zb6dtutQbvf67v9CVz14W67Px0M+i7exVH9KTwbwO+ZbUKM
hy7EarCGql0jWscqecI2LYO0mt9ggxDttH9yamKJ6bDfGna7nbHbgn/w3etC
5tkftjut/rQ7P2sPJ+OWe9btnA1b8/6w022N2y233W51u73+GeDXbU/rtY7b
G7rD8bw16rfbZ915tzV3B6MODBxN3eG0NZmNu/252xtNuqPZAOCc9bvdqUJB
kgUWEFMKkIP7CaQKehSnYAEtQi2bRqrkKKkpxEwQGklzYlmwn38+0CHJs3D1
VDWlUGLzCevHkk2PG7mFZB8sI0Ywba9pQQ1uCwN7pwDuPk4/zod+stcC6KiW
XxADyY8MovLr3xCCFR5BEsv3BbTWj4G4Q8YUxny4j9DCKPi4p8zpFII4mEXc
BbaChSiP7yJPtFR13Mc0XrrwwtACTyTU++KMAml/VkCtbXgnf8KfE8sZFeTN
+CJbfmfqWTlYsEICwBx7eEfdybDVAxyGg2m/3Z1Ne7PW9OxsMB7MB/PxYHZ2
ZHKbnFBjdACCVmqsJgD+s747AyLnZ+OpO3fP5p12p3fWmfS7k1a/NRrOxj1Q
43an3QdjOB912z3Q/Xl/MG/Nz/qTUbvdHY5n7eFo3Gr32r3hvAUWajwdtLpu
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

-->

</rfc>

