<?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-09" category="std" consensus="true">
  <front>
    <title abbrev="Encrypted Payloads in SUIT Manifests">Encrypted Payloads in SUIT Manifests</title>

    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization>Arm Limited</organization>
      <address>
        <email>hannes.tschofenig@arm.com</email>
      </address>
    </author>
    <author initials="R." surname="Housley" fullname="Russ Housley">
      <organization abbrev="Vigil Security">Vigil Security, LLC</organization>
      <address>
        <email>housley@vigilsec.com</email>
      </address>
    </author>
    <author initials="B." surname="Moran" fullname="Brendan Moran">
      <organization>Arm Limited</organization>
      <address>
        <email>Brendan.Moran@arm.com</email>
      </address>
    </author>
    <author initials="D." surname="Brown" fullname="David Brown">
      <organization>Linaro</organization>
      <address>
        <email>david.brown@linaro.org</email>
      </address>
    </author>
    <author initials="K." surname="Takayama" fullname="Ken Takayama">
      <organization>SECOM CO., LTD.</organization>
      <address>
        <email>ken.takayama.ietf@gmail.com</email>
      </address>
    </author>

    <date year="2022" month="October" day="24"/>

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

    <abstract>


<t>This document specifies techniques for encrypting software, firmware 
and personalization data by utilizing the IETF 
SUIT manifest. Key establishment is provided by hybrid
public-key encryption (HPKE) and AES Key Wrap (AES-KW). HPKE
uses public key cryptography while AES-KW uses a pre-shared 
key-encryption key. Encryption of the plaintext is 
accomplished with conventional symmetric key cryptography.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>Vulnerabilities with Internet of Things (IoT) devices have raised the
need for a reliable and secure firmware update mechanism that is also
suitable for constrained devices. To protect firmware images the SUIT manifest
format was developed <xref target="I-D.ietf-suit-manifest"/>. The SUIT manifest provides a 
bundle of metadata about the firmware for an IoT device, where to find 
the firmware image, and the devices to which it applies.</t>

<t>The SUIT information model <xref target="RFC9124"/> details the
information that has to be offered by the SUIT manifest format. In addition to
offering protection against modification, which is provided by a digital
signature or a message authentication code, the firmware image may also 
be afforded confidentiality using encryption.</t>

<t>Encryption prevents third parties, including attackers, from gaining access to
the firmware binary. Hackers typically need intimate knowledge of the target 
firmware to mount their attacks. For example, return-oriented programming (ROP)
requires access to the binary and encryption makes it much more difficult to write 
exploits.</t>

<t>The SUIT manifest provides the data needed for authorized recipients 
of the firmware image to decrypt it. The firmware image is encrypted using a 
symmetric key.</t>

<t>A symmetric key can be established using a variety of mechanisms; this document 
defines two approaches for use with the IETF SUIT manifest, namely:</t>

<t><list style="symbols">
  <t>hybrid public-key encryption (HPKE), and</t>
  <t>AES Key Wrap (AES-KW) using a pre-shared key-encryption key (KEK).</t>
</list></t>

<t>These choices reduce the number of possible key establishment options and thereby 
help increase interoperability between different SUIT manifest parser implementations.</t>

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

<t>Hence, the term payload is used to generically refer to those objects that may be subject to 
encryption.</t>

</section>
<section anchor="conventions-and-terminology" title="Conventions and Terminology">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”,
“SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this
document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.</t>

<t>This document assumes familiarity with the IETF SUIT manifest <xref target="I-D.ietf-suit-manifest"/>, 
the SUIT information model <xref target="RFC9124"/> and the SUIT architecture <xref target="RFC9019"/>.</t>

<t>The terms sender and recipient are defined in <xref target="RFC9180"/> and have 
the following meaning:</t>

<t><list style="symbols">
  <t>Sender: Role of the entity that sends an encrypted payload.</t>
  <t>Recipient: Role of the entity that receives an encrypted payload.</t>
</list></t>

<t>Additionally, the following abbreviations are used in this document:</t>

<t><list style="symbols">
  <t>Key Wrap (KW), defined in RFC 3394 <xref target="RFC3394"/> for use with AES.</t>
  <t>Key-encryption key (KEK), a term defined in RFC 4949 <xref target="RFC4949"/>.</t>
  <t>Content-encryption key (CEK), a term defined in RFC 2630 <xref target="RFC2630"/>.</t>
  <t>Hybrid Public Key Encryption (HPKE), defined in <xref target="RFC9180"/>.</t>
</list></t>

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

<t><xref target="RFC9019"/> describes the architecture for distributing payloads 
and manifests from an author to devices. It does, however, not
detail the use of payload encryption.</t>

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

<t><xref target="arch-fig"/> shows the distribution system, which represents the firmware server 
and the device management infrastructure. The distribution system is aware 
of the individual devices to which a payload has to be delivered. The author
is typically unaware which devices need to receive these payloads.</t>

<t>To apply encryption the sender needs to know the recipient. For AES-KW the 
KEK needs to be known and, in case of HPKE, the sender needs to be in possession 
of the public key of the recipient.</t>

<t>If the author delegates the task of identifying devices that are the recipients 
of the payloads to the distribution system, it needs to trust the delivery 
system to perform the encryption of the plaintext firmware image.</t>

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

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

<t><list style="symbols">
  <t>The author acts as the sender and the recipient is the device
(or the devices).</t>
  <t>The author treats the distribution system as the initial recipient. Then, 
the distribution system decrypts and re-encrypts the payload for consumption 
by the device (or devices). Delegating the task of re-encrypting 
the payload to the distribution system offers flexiblity when the number 
of devices that need to receive encrypted payloads changes dynamically 
or when updates to KEKs or recipient public keys are necessary. As a downside, 
the author needs to trust the distribution system with performing the re-encryption 
of the payload.</t>
</list></t>

<t>For both variants the key distribution data (embedded inside the
COSE_Encrypt structure) is included in the SUIT envelope rather than in the SUIT 
manifest since the manifest will be digitally signed (or MACed) by the author.</t>

<t>Details about the changes to the envelope and the manifest can be found in the next 
section.</t>

</section>
<section anchor="suit-envelope-and-suit-manifest" title="SUIT Envelope and SUIT Manifest">

<t>This specification introduces two extensions to the SUIT_Parameters,
as motivated in <xref target="arch"/>.</t>

<t>The SUIT manifest is enhanced with a key exchange payload, which is carried within
the suit-directive-override-parameters or suit-directive-set-parameters for each
encrypted payload. One SUIT_Encryption_Info is carried with
suit-parameter-encryption-info, see <xref target="parameter-fig"/>.
The content of the SUIT_Encryption_Info 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_Encryption_Info parameter MUST be included in the SUIT_Directive.</t>

<t>A CEK verification parameter (called suit-parameter-cek-verification),
see <xref target="parameter-fig"/>, also extends the manifest. 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="Extended SUIT_Parameters CDDL." anchor="parameter-fig"><artwork><![CDATA[
SUIT_Manifest = {
    suit-manifest-version         => 1,
    suit-manifest-sequence-number => uint,
    suit-common                   => bstr .cbor SUIT_Common,
    ? suit-reference-uri          => tstr,
    SUIT_Severable_Members_Choice,
    SUIT_Unseverable_Members,
    * $$SUIT_Manifest_Extensions,
}

SUIT_Parameters //= (suit-parameter-encryption-info
    => bstr .cbor SUIT_Encryption_Info)
SUIT_Parameters //= (suit-parameter-cek-verification => bstr)

suit-parameter-encryption-info   = 19
]]></artwork></figure>

</section>
<section anchor="AES-KW" title="AES Key Wrap">

<t>The AES Key Wrap (AES-KW) algorithm is described in RFC 3394 <xref target="RFC3394"/>, and
it can be used to encrypt a randomly generated content-encryption key (CEK)
with a pre-shared key-encryption key (KEK). The COSE conventions for using
AES-KW are specified in Section 12.2.1 of <xref target="RFC8152"/>.  The encrypted CEK is
carried in the COSE_recipient structure alongside the information needed for 
AES-KW. The COSE_recipient structure, which is a substructure of the 
COSE_Encrypt structure, contains the CEK encrypted by the KEK.</t>

<t>When the firmware image is encrypted for use by multiple recipients, there 
are three options. We use the following notation KEK(R1,S) is the KEK shared between 
recipient R1 and the sender S. Likewise, CEK(R1,S) is shared between R1 and S. 
If a single CEK or a single KEK is shared with all authorized recipients R by a given sender S 
in a certain context then we use CEK(<spanx style="emph">,S) or KEK(</spanx>,S), respectively. The notation 
ENC(plaintext, key) refers to the encryption of plaintext with a given key.</t>

<t><list style="symbols">
  <t>If all authorized recipients have access to the KEK, a single 
COSE_recipient structure contains the encrypted CEK. This means KEK(*,S) ENC(CEK,KEK), and 
ENC(payload,CEK).</t>
  <t>If recipients have different KEKs, then multiple COSE_recipient structures 
are included but only a single CEK is used. Each COSE_recipient structure 
contains the CEK encrypted with the KEKs appropriate for the recipient. In short, 
KEK_1(R1, S),…, KEK_n(Rn, S), ENC(CEK, KEK_i) for i=1 to n, and ENC(firmware,CEK). 
The benefit of this approach is that the payload is encrypted only once with 
a CEK while there is no sharing of the KEK across recipients. Hence, authorized recipients 
still use their individual KEKs to decrypt the CEK and to subsequently obtain the 
plaintext.</t>
  <t>The third option is to use different CEKs encrypted with KEKs of the 
authorized recipients. Assume there are KEK_1(R1, S),…, KEK_n(Rn, S), and 
for i=1 to n the following computations need to be made: ENC(CEK_i, KEK_i) and 
ENC(firmware,CEK_i). This approach is appropriate when no benefits can be gained
from encrypting and transmitting payloads only once. For example, 
payloads may contain information unique to an instance of a device rather than
information that is independent of a device instance and therefore applies to an 
entire class of devices.</t>
</list></t>

<t>Note that the AES-KW algorithm, as defined in Section 2.2.3.1 of <xref target="RFC3394"/>, 
does not have public parameters that vary on a per-invocation basis. Hence, 
the protected structure in the COSE_recipient is a byte string of zero length.</t>

<t>The COSE_Encrypt conveys information for encrypting the payload, 
which includes information like the algorithm and the IV, even though the 
payload is not embedded in the COSE_Encrypt.ciphertext itself since 
it conveyed as detached content.</t>

<t>The CDDL for the COSE_Encrypt_Tagged structure is shown in <xref target="cddl-aeskw"/>.</t>

<figure title="CDDL for AES Key Wrap Encryption" anchor="cddl-aeskw"><artwork><![CDATA[
COSE_Encrypt_Tagged = #6.96(COSE_Encrypt)
 
SUIT_Encryption_Info = COSE_Encrypt_Tagged

COSE_Encrypt = [
  protected   : bstr .cbor outer_header_map_protected,
  unprotected : outer_header_map_unprotected,
  ciphertext  : null,            ; because of detached ciphertext
  recipients  : [ + COSE_recipient ]
]

outer_header_map_protected =
{
    1 => int,         ; algorithm identifier
  * label =values     ; extension point
}

outer_header_map_unprotected = 
{
    5 => bstr,        ; IV
  * label =values     ; extension point
}

COSE_recipient = [
  protected   : bstr .size 0,
  unprotected : recipient_header_map,
  ciphertext  : bstr        ; CEK encrypted with KEK
]

recipient_header_map = 
{
    1 => int,         ; algorithm identifier
    4 => bstr,        ; key identifier
  * label =values     ; extension point
}
]]></artwork></figure>

<t>The COSE specification requires a consistent byte stream for the
authenticated data structure to be created, which is shown in
<xref target="cddl-enc-aeskw"/>.</t>

<figure title="CDDL for Enc_structure Data Structure" anchor="cddl-enc-aeskw"><artwork><![CDATA[
       Enc_structure = [
         context : "Encrypt",
         protected : empty_or_serialized_map,
         external_aad : bstr
       ]
]]></artwork></figure>

<t>As shown in <xref target="cddl-aeskw"/>, there are two protected fields: one 
protected field in the COSE_Encrypt structure and a second one in
the COSE_recipient structure. The ‘protected’ field in the Enc_structure, 
see <xref target="cddl-enc-aeskw"/>, refers to the content of the protected 
field from the COSE_Encrypt structure.</t>

<t>The value of the external_aad MUST be set to null.</t>

<t>The following example illustrates the use of the AES-KW algorithm with AES-128.</t>

<t>We use the following parameters in this example:</t>

<t><list style="symbols">
  <t>IV: 0x26, 0x68, 0x23, 0x06, 0xd4, 0xfb, 0x28, 0xca, 0x01, 0xb4, 0x3b, 0x80</t>
  <t>KEK: “aaaaaaaaaaaaaaaa”</t>
  <t>KID: “kid-1”</t>
  <t>Plaintext: “This is a real firmware image.”</t>
  <t>Firmware (hex): 546869732069732061207265616C206669726D7761726520696D6167652E</t>
</list></t>

<t>The COSE_Encrypt structure, in hex format, is (with a line break inserted):</t>

<figure><artwork><![CDATA[
D8608443A10101A1054C26682306D4FB28CA01B43B80F68340A2012204456B69642D
315818AF09622B4F40F17930129D18D0CEA46F159C49E7F68B644D
]]></artwork></figure>

<t>The resulting COSE_Encrypt structure in a diagnostic format is shown in <xref target="aeskw-example"/>.</t>

<figure title="COSE_Encrypt Example for AES Key Wrap" anchor="aeskw-example"><artwork><![CDATA[
96(
    [
        / protected field with alg=AES-GCM-128 /
        h'A10101', 
        {
           / unprotected field with iv /
           5: h'26682306D4FB28CA01B43B80'
        }, 
        / null because of detached ciphertext /
        null, 
        [ / recipients array /
           h'', / protected field /
           {    / unprotected field /
              1: -3,            / alg=A128KW /
              4: h'6B69642D31'  / key id /
           }, 
           / CEK encrypted with KEK /
           h'AF09622B4F40F17930129D18D0CEA46F159C49E7F68B644D'
        ]
    ]
)
]]></artwork></figure>

<t>The CEK, in hex format, was “4C805F1587D624ED5E0DBB7A7F7FA7EB” and 
the encrypted firmware (with a line feed added) was:</t>

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

</section>
<section anchor="HPKE" title="Hybrid Public-Key Encryption (HPKE)">

<t>Hybrid public-key encryption (HPKE) <xref target="RFC9180"/> is a scheme that 
provides public key encryption of arbitrary-sized plaintexts given a 
recipient’s public key.</t>

<t>For use with this specification the scheme works as follows: HPKE, 
which internally utilizes a non-interactive ephemeral-static
Diffie-Hellman exchange to derive a shared secret, is used to 
encrypt a CEK. This CEK is subsequently used to encrypt the firmware image. 
Hence, the plaintext passed to HPKE is the randomly generated CEK. 
The output of the HPKE SealBase function is therefore 
the encrypted CEK along with HPKE encapsulated key (i.e., the ephemeral ECDH 
public key).</t>

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

<t>This approach allows all recipients to use the same CEK to decrypt the 
firmware image, in case there are multiple recipients, to fulfill a requirement for 
the efficient distribution of firmware images using a multicast or broadcast protocol.</t>

<t><xref target="I-D.ietf-cose-hpke"/> defines the use of HPKE with COSE and provides examples.</t>

</section>
<section anchor="cek-verification" title="CEK Verification">

<t>While the SUIT manifest is integrity protected and authenticated, the SUIT envelope 
is not protected cryptographically. Hence, an adversary located along the communication
path between the sender and the recipient could modify the COSE_Encrypt structure
(assuming that no other communication security mechanism is in use).</t>

<t>For example, if the attacker alters the key distribution data then a recipient will
decrypt the firmware image with an incorrect key. This will lead to expending 
energy and flash cycles until the failure is detected.</t>

<t>To mitigate this attack, a new parameter, called suit-cek-verification, is added
to the manifest. The suit-cek-verification parameter is optional to implement and 
optional to use. When used, it reduces the risk of a battery exhaustion attack against 
the IoT device.</t>

<t>Since the manifest is protected by a digital signature (or a MAC), an adversary cannot 
successfully modify this value. This parameter allows the recipient to verify 
whether the CEK has successfully been derived.</t>

<t>The suit-cek-verification parameter contains a byte string resulting from the 
encryption of 8 bytes of 0xA5 using the CEK with a nonce of all zeros and empty 
additional data using the cipher algorithm and mode also used to encrypt the
plaintext. The same nonce used for CEK verification MUST NOT be used to 
encrypt plaintext with the same CEK.</t>

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

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

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

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

<t>The swap should only take place after the signature on the plaintext is verified.
Note that the plaintext firmware image is available in the primary slot only after
the swap has been completed, unless “dummy decrypt” is used to compute the hash 
over the plaintext prior to executing the decrypt operation during a swap.
Dummy decryption here refers to the decryption of the firmware image found in 
the secondary slot sector-by-sector and computing a rolling hash over the resulting
plaintext firmware image (also sector-by-sector) without performing the swap operation. 
While there are performance optimizations possible, such as conveying hashes for 
each sector in the manifest rather than a hash of the entire firmware image, 
such optimizations are not described in this specification.</t>

<t>This approach of swapping the newly downloaded image with the previously valid 
image is often referred as A/B approach. A/B refers to the two slots involved.
Two slots are used to allow the update to be reversed in case the newly obtained
firmware image fails to boot. This approach adds robustness to the firmware 
update procedure.</t>

<t>Since the image in primary slot is available in cleartext it may need to 
re-encrypted it before copying it to the secondary slot. This may be necessary
when the secondary slot has different access permissions or when the staging
area is located in an off-chip flash memory and therefore more vulnerable to
physical attacks. Note that this description assumes that the processor does
not execute encrypted memory (i.e. using on-the-fly decryption in hardware).</t>

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

<t>The ability to restart an interrupted firmware update is often a requirement
for low-end IoT devices. To fulfill this requirement it is necessary to chunk
a firmware image into sectors and to encrypt each sector individually
using a cipher that does not increase the size of the resulting ciphertext 
(i.e., by not adding an authentication tag after each encrypted block).</t>

<t>When an update gets aborted while the bootloader is decrypting the newly obtained
image and swapping the sectors, the bootloader can restart where it left off. This
technique offers robustness and better performance.</t>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<t>[[Editor’s Note: Add examples for a complete manifest here (including a digital signature), 
multiple recipients, encryption of manifests (in comparison to firmware images).]]</t>

<t>The following manifests examplify how to deliver the encrypted firmware and its encryption info to the Devices.</t>

<t>The examples are signed using the following ECDSA secp256r1 key:</t>

<figure><artwork><![CDATA[
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgApZYjZCUGLM50VBC
CjYStX+09jGmnyJPrpDLTz/hiXOhRANCAASEloEarguqq9JhVxie7NomvqqL8Rtv
P+bitWWchdvArTsfKktsCYExwKNtrNHXi9OB3N+wnAUtszmR23M4tKiW
-----END PRIVATE KEY-----
]]></artwork></figure>

<t>The corresponding public key can be used to verify these examples:</t>

<figure><artwork><![CDATA[
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhJaBGq4LqqvSYVcYnuzaJr6qi/Eb
bz/m4rVlnIXbwK07HypLbAmBMcCjbazR14vTgdzfsJwFLbM5kdtzOLSolg==
-----END PUBLIC KEY-----
]]></artwork></figure>

<t>Each example uses SHA256 as the digest function.</t>

<section anchor="example-AES-KW" title="Example 0: AES Key Wrap">
<t>Diagnostic notation of the SUIT Manifest:</t>

<figure><artwork><![CDATA[
/ SUIT_Envelope_Tagged / 107( {
  / suit-authentication-wrapper / 2: << [
    / digest: / << [
      / suit-digest-algorithm-id: / -16 / SHA256 /,
      / suit-digest-bytes: / 
      h'A447024C395B90095678C174C4075F321EF29A57A0
        A028D01080019E5B21ED5F'
    ] >>,
    / signatures: / << / COSE_Sign1_Tagged / 18( [
      / protected: / << {
        / alg / 1: -7 / ES256 /
      } >>,
      / unprotected: / {},
      / payload: / null,
      / signature: / 
      h'65C40240E28F7F02046CE85F8343A7886B349D2523
        B3A815C161D54337395721953ACA109690B3588761
        195071BCF04D557260484B4B281C508D9E95FED4B9EF'
    ] ) >>
  ] >>,
  / suit-manifest / 3: << {
    / suit-manifest-version / 1: 1,
    / suit-manifest-sequence-number / 2: 1,
    / suit-common / 3: << {
      / suit-components / 2: [
        [h'00'] / to be decrypted firmware /,
        [h'01'] / encrypted firmware /
      ]
    } >>,
    / suit-install / 17: << [
      / fetch encrypted firmware /
      / suit-directive-set-component-index / 12, 1 / [h'01'] /,
      / suit-directive-override-parameters / 20, {
        / suit-parameter-uri / 
        21: "https://author.example.com/encrypted-firmware.bin",
        / suit-parameter-image-digest / 3: << [
          / suit-digest-algorithm-id: / -16 / SHA256 /,
          / suit-digest-bytes: / 
          h'F63187728B49B0E57FE891B932C9C881735D880EFAE6
            9A9A4D45E0FE72C70DA1'
        ] >>,
        / suit-parameter-image-size / 14: 46
      },
      / suit-directive-fetch / 21, 15,
      / suit-condition-image-match / 3, 15,

      / decrypt encrypted firmware /
      / suit-directive-set-component-index / 12, 0 / [h'00'] /,
      / suit-directive-override-parameters / 20, {
        / suit-parameter-source-component / 22: 1 / [h'01'] /,
        / suit-parameter-encryption-info<TBD> / 19: 96( [
          / protected: / << {
            / alg / 1: 1 / AES-GCM-128 /
          } >>,
          / unprotected: / {
             / iv / 5: h'26682306D4FB28CA01B43B80'
          },
          / payload: / null / detached ciphertext /,
          / recipients: / [
             / protected / h'',
             / unprotected / {
               / alg / 1: -3 / A128KW /,
               / kid / 4: h'6B69642D31'
              },
             / payload: / 
             h'AF09622B4F40F17930129D18D0CEA46F159C49E7F68B
               644D' / CEK encrypted with KEK /
          ]
        ] )
      },
      / suit-directive-copy / 
      22, 15 / consumes the SUIT_Encryption_Info above /,

      / verify decrypted firmware /
      / suit-directive-override-parameters / 20, {
        / suit-parameter-image-digest / 3: << [
          / suit-digest-algorithm-id: / -16 / SHA256 /,
          / suit-digest-bytes: / 
          h'36921488FE6680712F734E11F58D87EEB66D4
            B21A8A1AD3441060814DA16D50F'
        ] >>,
        / suit-parameter-image-size / 14: 30
      },
      / suit-condition-image-match / 3, 15
    ] >>
  } >>
} )
]]></artwork></figure>

<t>In hex:</t>

<figure><artwork><![CDATA[
D86BA2025873825824822F5820A447024C395B90095678C174C4075F321E
F29A57A0A028D01080019E5B21ED5F584AD28443A10126A0F6584065C402
40E28F7F02046CE85F8343A7886B349D2523B3A815C161D5433739572195
3ACA109690B3588761195071BCF04D557260484B4B281C508D9E95FED4B9
EF0358EEA4010102010349A102828141008141011158DB920C0114A31578
3168747470733A2F2F617574686F722E6578616D706C652E636F6D2F656E
637279707465642D6669726D776172652E62696E035824822F5820F63187
728B49B0E57FE891B932C9C881735D880EFAE69A9A4D45E0FE72C70DA10E
182E150F030F0C0014A2160113D8608443A10101A1054C26682306D4FB28
CA01B43B80F68340A2012204456B69642D315818AF09622B4F40F1793012
9D18D0CEA46F159C49E7F68B644D160F14A2035824822F582036921488FE
6680712F734E11F58D87EEB66D4B21A8A1AD3441060814DA16D50F0E181E
030F
]]></artwork></figure>

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

<t>The algorithms described in this document assume that the party performing payload encryption</t>

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

<t>Both cases require some upfront communication interaction. This interaction is likely provided by
an IoT device management solution, as described in <xref target="RFC9019"/>.</t>

<t>For AES-Key Wrap to provide high security it is important that the KEK is of high entropy, 
and that implementations protect the KEK from disclosure. Compromise of the KEK may result 
in the disclosure of all key data protected with that KEK.</t>

<t>Since the CEK is randomly generated, it must be ensured that the guidelines for random number 
generation in <xref target="RFC8937"/> are followed.</t>

<t>In some cases third party companies analyse binaries for known security vulnerabilities. With 
encrypted payloads this type of analysis is prevented. Consequently, these third party 
companies either need to be given access to the plaintext binary before encryption or they need 
to become authorized recipients of the encrypted payloads. In either case, it is necessary to 
explicitly consider those third parties in the software supply chain when such a binary analysis
is desired.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document asks IANA to register new values into the COSE algorithm
registry. The values are listed in <xref target="iana-algo"/>.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></author>
<date month='March' year='1997'/>
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference anchor='RFC3394' target='https://www.rfc-editor.org/info/rfc3394'>
<front>
<title>Advanced Encryption Standard (AES) Key Wrap Algorithm</title>
<author fullname='J. Schaad' initials='J.' surname='Schaad'><organization/></author>
<author fullname='R. Housley' initials='R.' surname='Housley'><organization/></author>
<date month='September' year='2002'/>
</front>
<seriesInfo name='RFC' value='3394'/>
<seriesInfo name='DOI' value='10.17487/RFC3394'/>
</reference>



<reference anchor='RFC8152' target='https://www.rfc-editor.org/info/rfc8152'>
<front>
<title>CBOR Object Signing and Encryption (COSE)</title>
<author fullname='J. Schaad' initials='J.' surname='Schaad'><organization/></author>
<date month='July' year='2017'/>
<abstract><t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need for the ability to have basic security services defined for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol.  This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization.  This specification additionally describes how to represent cryptographic keys using CBOR.</t></abstract>
</front>
<seriesInfo name='RFC' value='8152'/>
<seriesInfo name='DOI' value='10.17487/RFC8152'/>
</reference>



<reference anchor='RFC8174' target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></author>
<date month='May' year='2017'/>
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>



<reference anchor='RFC9180' target='https://www.rfc-editor.org/info/rfc9180'>
<front>
<title>Hybrid Public Key Encryption</title>
<author fullname='R. Barnes' initials='R.' surname='Barnes'><organization/></author>
<author fullname='K. Bhargavan' initials='K.' surname='Bhargavan'><organization/></author>
<author fullname='B. Lipp' initials='B.' surname='Lipp'><organization/></author>
<author fullname='C. Wood' initials='C.' surname='Wood'><organization/></author>
<date month='February' year='2022'/>
<abstract><t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t><t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t></abstract>
</front>
<seriesInfo name='RFC' value='9180'/>
<seriesInfo name='DOI' value='10.17487/RFC9180'/>
</reference>


<reference anchor='I-D.ietf-suit-manifest'>
   <front>
      <title>A Concise Binary Object Representation (CBOR)-based Serialization Format for the Software Updates for Internet of Things (SUIT) Manifest</title>
      <author fullname='Brendan Moran' initials='B.' surname='Moran'>
         <organization>Arm Limited</organization>
      </author>
      <author fullname='Hannes Tschofenig' initials='H.' surname='Tschofenig'>
         <organization>Arm Limited</organization>
      </author>
      <author fullname='Henk Birkholz' initials='H.' surname='Birkholz'>
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname='Koen Zandberg' initials='K.' surname='Zandberg'>
         <organization>Inria</organization>
      </author>
      <author fullname='Øyvind Rønningstad' initials='O.' surname='Rønningstad'>
         <organization>Nordic Semiconductor</organization>
      </author>
      <date day='7' month='October' year='2022'/>
      <abstract>
	 <t>   This specification describes the format of a manifest.  A manifest is
   a bundle of metadata about code/data obtained by a recipient (chiefly
   the firmware for an IoT device), where to find the that code/data,
   the devices to which it applies, and cryptographic information
   protecting the manifest.  Software updates and Trusted Invocation
   both tend to use sequences of common operations, so the manifest
   encodes those sequences of operations, rather than declaring the
   metadata.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-suit-manifest-20'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-suit-manifest-20.txt' type='TXT'/>
</reference>


<reference anchor='I-D.ietf-cose-hpke'>
   <front>
      <title>Use of Hybrid Public-Key Encryption (HPKE) with CBOR Object Signing and Encryption (COSE)</title>
      <author fullname='Hannes Tschofenig' initials='H.' surname='Tschofenig'>
         <organization>Arm Limited</organization>
      </author>
      <author fullname='Russ Housley' initials='R.' surname='Housley'>
         <organization>Vigil Security, LLC</organization>
      </author>
      <author fullname='Brendan Moran' initials='B.' surname='Moran'>
         <organization>Arm Limited</organization>
      </author>
      <date day='11' month='July' year='2022'/>
      <abstract>
	 <t>   This specification defines hybrid public-key encryption (HPKE) for
   use with CBOR Object Signing and Encryption (COSE).  HPKE offers a
   variant of public-key encryption of arbitrary-sized plaintexts for a
   recipient public key.

   HPKE works for any combination of an asymmetric key encapsulation
   mechanism (KEM), key derivation function (KDF), and authenticated
   encryption with additional data (AEAD) encryption function.
   Authentication for HPKE in COSE is provided by COSE-native security
   mechanisms.

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


<reference anchor='I-D.housley-cose-aes-ctr-and-cbc'>
   <front>
      <title>CBOR Object Signing and Encryption (COSE): AES-CTR and AES-CBC</title>
      <author fullname='Russ Housley' initials='R.' surname='Housley'>
         <organization>Vigil Security, LLC</organization>
      </author>
      <author fullname='Hannes Tschofenig' initials='H.' surname='Tschofenig'>
         <organization>Arm Limited</organization>
      </author>
      <date day='22' month='August' year='2022'/>
      <abstract>
	 <t>   The Concise Binary Object Representation (CBOR) data format is
   designed for small code size and small message size.  CBOR Object
   Signing and Encryption (COSE) is specified in RFC 8152 to provide
   basic security services using the CBOR data format.  This document
   specifies the conventions for using AES-CTR and AES-CBC as Content
   Encryption algorithms with COSE.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-housley-cose-aes-ctr-and-cbc-00'/>
   <format target='https://www.ietf.org/archive/id/draft-housley-cose-aes-ctr-and-cbc-00.txt' type='TXT'/>
</reference>




    </references>

    <references title='Informative References'>





<reference anchor='RFC9019' target='https://www.rfc-editor.org/info/rfc9019'>
<front>
<title>A Firmware Update Architecture for Internet of Things</title>
<author fullname='B. Moran' initials='B.' surname='Moran'><organization/></author>
<author fullname='H. Tschofenig' initials='H.' surname='Tschofenig'><organization/></author>
<author fullname='D. Brown' initials='D.' surname='Brown'><organization/></author>
<author fullname='M. Meriac' initials='M.' surname='Meriac'><organization/></author>
<date month='April' year='2021'/>
<abstract><t>Vulnerabilities in Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism suitable for devices with resource constraints. Incorporating such an update mechanism is a fundamental requirement for fixing vulnerabilities, but it also enables other important capabilities such as updating configuration settings and adding new functionality.</t><t>In addition to the definition of terminology and an architecture, this document provides the motivation for the standardization of a manifest format as a transport-agnostic means for describing and protecting firmware updates.</t></abstract>
</front>
<seriesInfo name='RFC' value='9019'/>
<seriesInfo name='DOI' value='10.17487/RFC9019'/>
</reference>



<reference anchor='RFC9124' target='https://www.rfc-editor.org/info/rfc9124'>
<front>
<title>A Manifest Information Model for Firmware Updates in Internet of Things (IoT) Devices</title>
<author fullname='B. Moran' initials='B.' surname='Moran'><organization/></author>
<author fullname='H. Tschofenig' initials='H.' surname='Tschofenig'><organization/></author>
<author fullname='H. Birkholz' initials='H.' surname='Birkholz'><organization/></author>
<date month='January' year='2022'/>
<abstract><t>Vulnerabilities with Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism that is also suitable for constrained devices. Ensuring that devices function and remain secure over their service lifetime requires such an update mechanism to fix vulnerabilities, update configuration settings, and add new functionality.</t><t>One component of such a firmware update is a concise and machine-processable metadata document, or manifest, that describes the firmware image(s) and offers appropriate protection. This document describes the information that must be present in the manifest.</t></abstract>
</front>
<seriesInfo name='RFC' value='9124'/>
<seriesInfo name='DOI' value='10.17487/RFC9124'/>
</reference>



<reference anchor='RFC8937' target='https://www.rfc-editor.org/info/rfc8937'>
<front>
<title>Randomness Improvements for Security Protocols</title>
<author fullname='C. Cremers' initials='C.' surname='Cremers'><organization/></author>
<author fullname='L. Garratt' initials='L.' surname='Garratt'><organization/></author>
<author fullname='S. Smyshlyaev' initials='S.' surname='Smyshlyaev'><organization/></author>
<author fullname='N. Sullivan' initials='N.' surname='Sullivan'><organization/></author>
<author fullname='C. Wood' initials='C.' surname='Wood'><organization/></author>
<date month='October' year='2020'/>
<abstract><t>Randomness is a crucial ingredient for Transport Layer Security (TLS) and related security protocols.  Weak or predictable &quot;cryptographically secure&quot; pseudorandom number generators (CSPRNGs) can be abused or exploited for malicious purposes. An initial entropy source that seeds a CSPRNG might be weak or broken as well, which can also lead to critical and systemic security problems. This document describes a way for security protocol implementations to augment their CSPRNGs using long-term private keys. This improves randomness from broken or otherwise subverted CSPRNGs.</t><t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t></abstract>
</front>
<seriesInfo name='RFC' value='8937'/>
<seriesInfo name='DOI' value='10.17487/RFC8937'/>
</reference>



<reference anchor='RFC2630' target='https://www.rfc-editor.org/info/rfc2630'>
<front>
<title>Cryptographic Message Syntax</title>
<author fullname='R. Housley' initials='R.' surname='Housley'><organization/></author>
<date month='June' year='1999'/>
<abstract><t>This document describes the Cryptographic Message Syntax.  This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary messages.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='2630'/>
<seriesInfo name='DOI' value='10.17487/RFC2630'/>
</reference>



<reference anchor='RFC4949' target='https://www.rfc-editor.org/info/rfc4949'>
<front>
<title>Internet Security Glossary, Version 2</title>
<author fullname='R. Shirey' initials='R.' surname='Shirey'><organization/></author>
<date month='August' year='2007'/>
<abstract><t>This Glossary provides definitions, abbreviations, and explanations of terminology for information system security. The 334 pages of entries offer recommendations to improve the comprehensibility of written material that is generated in the Internet Standards Process (RFC 2026). The recommendations follow the principles that such writing should (a) use the same term or definition whenever the same concept is mentioned; (b) use terms in their plainest, dictionary sense; (c) use terms that are already well-established in open publications; and (d) avoid terms that either favor a particular vendor or favor a particular technology or mechanism over other, competing techniques that already exist or could be developed.  This memo provides information for the Internet community.</t></abstract>
</front>
<seriesInfo name='FYI' value='36'/>
<seriesInfo name='RFC' value='4949'/>
<seriesInfo name='DOI' value='10.17487/RFC4949'/>
</reference>


<reference anchor="iana-algo" target="https://www.iana.org/assignments/cose/cose.xhtml">
  <front>
    <title>CBOR Object Signing and Encryption (COSE)</title>
    <author >
      <organization>Internet Assigned Numbers Authority</organization>
    </author>
    <date year="2022" month="September" day="01"/>
  </front>
</reference>


    </references>


<section anchor="acknowledgements" title="Acknowledgements">

<t>We would like to thank Henk Birkholz for his feedback on the CDDL description in this document. 
Additionally, we would like to thank Michael Richardson, Oyvind
Ronningstad, Dave Thaler, and Carsten Bormann for 
their review feedback. Finally, we would like to thank Dick Brooks for making us aware of the 
challenges firmware encryption imposes on binary analysis.</t>

</section>


  </back>

<!-- ##markdown-source:
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
yTC/QUMHd/DCWwIPnlGF52tfPMuqr7UkhKb4YJhZ0dmTMTwwVK4qFcNHt/Do
2rwinO6xgv1+Jn5+dZVRcb6+U8kj5f4owflKNZe3LDxWehK/vQ3p1JpsW9Uq
VLEhMAh0J/Gopy2Vham6LyarrbuXRv7B69HlZFTDLG+Hwa/AtUqlkliktyod
Fpp8vQt7VJwfRdGp7swBvqTss5E9oj1gE8cPi/xNzPlW1w+olIBO88qChJyA
/AZxR7dOpHzooAiKHkfKteyADtoUmeRwWi3DtElSrRMQFdD3O4Hyjvroo9lr
aQsb2kjJd1YTARahAaKLlRBZNYCpYVKjiHH/Csrzdzk+OX/nmGXNh9nrzz3L
xEP+q3r+Od//c7H/g89zokuUiK6vj/81+B5Y22tby3f66hTk+59H5lcl2bVn
ED2eZgCXsF4UNGm8J2hAZhQEjbp/na07VV+eEOX8+usYXIsofpJQTuQMXQ1d
tihf5aLswiyfSN7RsfFWjP2CKiriKC3qzNuJ2X3Lxz6nqN3YT+j9IsVakZP6
b7/tezfZAAw2FletMIkXqXteDxVK0IVOaWICRBfpyMTXyDihjVNqrNCdMHxt
W1bflAE0Ho6u+8jnG5ACsY1qIztFQ5Q3GH9//lK8vjp/1wd/58X4F/r1qHJ5
/v3z/nLcvxxcfj/Yvf/++rLZg+/fD4fy8/34+eB76969Px/0f/xx2d/845ff
/zF8+/3FZct6h4b68PdfrtOfn1q9379fh7sfXseb0cWbj6cr/+dXq6v+y2G/
fz0OorEbL7fv3/d+WL374Hudl9H67v37i+5VendUef0ULLuffpqt5nf9+E2y
eHGbJsNfxh/uX7xM45fPf/Z7rwaNl0/vw/7bNPm4vnIal830hf+TXNr45ahk
YcbpHSqLTDYR1z6aL1HKXwMky+RScv8V6svx+HZwcT400Ti5vR/f//L8RfSP
84+/W8P+j7+cy8+j/o+zESBuvPrBHXz/vnnx/v3d9S/vZr+E24/uD3H7vX86
nh5Vph9P1834XRCe/zy9f2F1nu82F9P+enA5G/4+dT9e2c27N8v5x0Xyw/3k
YnrZup2nH19dXEfB8tkzExFFyCQe6BoQpcdIwV8/76PKcNXVl0t66460RJQ7
psKo1lnxfiY5Vk3f0zTKTj/p+1+MG+P0rX4ZQk/VtVVcL6zOkZ8K2+oci08V
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

-->

</rfc>

