<?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-00" 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="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.  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 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 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="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 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="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.</t>

</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

