<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-irtf-t2trg-taxonomy-manufacturer-anchors-09" category="info" submissionType="IRTF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.1 -->
  <front>
    <title abbrev="manufacturer keys">A Taxonomy of operational security considerations for manufacturer installed keys and Trust Anchors</title>
    <seriesInfo name="Internet-Draft" value="draft-irtf-t2trg-taxonomy-manufacturer-anchors-09"/>
    <author initials="M." surname="Richardson" fullname="Michael Richardson">
      <organization>Sandelman Software Works</organization>
      <address>
        <email>mcr+ietf@sandelman.ca</email>
      </address>
    </author>
    <date year="2025" month="May" day="28"/>
    <workgroup>T2TRG Research Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 169?>

<t>This document provides a taxonomy of methods used by manufacturers of silicon and devices
to secure private keys and public trust anchors.
This deals with two related activities: how trust anchors and private keys
are installed into devices during manufacturing, and how the related
manufacturer held private keys are secured against disclosure.</t>
      <t>This document does not evaluate the different mechanisms, but rather just
serves to name them in a consistent manner in order to aid in communication.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-irtf-t2trg-taxonomy-manufacturer-anchors/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        t2trg Research Group mailing list (<eref target="mailto:t2trg@irtf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/t2trg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/t2trg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/t2trg/draft-irtf-t2trg-taxonomy-manufacturer-anchors"/>.</t>
    </note>
  </front>
  <middle>
    <?line 181?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>An increasing number of protocols derive a significant part of their security by using trust anchors <xref target="RFC4949"/> that are installed by manufacturers into a device during manufacturing.
Disclosure of the list of trust anchors does not usually cause a problem, but changing them in any way does.
This includes adding, replacing or deleting anchors.</t>
      <t>The document <xref target="RFC6024"/> deals with how trust anchor stores are managed in the device which uses them.
This document deals with how the PKI associated with such a trust anchor is managed.</t>
      <t>Many protocols also leverage manufacturer installed identities.
These identities are usually in the form of <xref target="ieee802-1AR"/> Initial Device Identity certificates (IDevID).
The identity has two components: a private key that must remain under the strict control of a trusted part of the device, and a public part (the certificate), which (ignoring, for the moment, personal privacy concerns) may be freely disclosed.</t>
      <t>There also situations where identities are tied up in the provision of symmetric shared secrets.
A common example is the SIM card <xref target="_3GPP.51.011"/>: it now comes as a virtual SIM, which could in theory be factory provisioned.
The provision of an initial, per-device default password also falls into the category of symmetric shared secret.</t>
      <t>It is further not unusual for many devices (particularly smartphones) to also have one or more group identity keys.
This is used, for instance, in <xref target="fidotechnote"/> to make claims about being a particular model of phone.
The key pair that does this is loaded into large batches of phones for privacy reasons.</t>
      <t>The trust anchors are used for a variety of purposes.
For instance, trust anchors are used to verify:</t>
      <ul spacing="normal">
        <li>
          <t>the signature on a software update (as per <xref target="RFC9019"/>),</t>
        </li>
        <li>
          <t>a TLS Server Certificate, such as when setting up an HTTPS connection,</t>
        </li>
        <li>
          <t>the <xref target="RFC8366"/> format voucher that provides proof of an ownership change.</t>
        </li>
      </ul>
      <t>Device identity keys are used when performing enrollment requests (in <xref target="RFC8995"/>, and in some uses of <xref target="RFC9140"/>.
The device identity certificate is also used to sign Evidence by an Attesting Environment (see <xref target="RFC9334"/>).</t>
      <t>These security artifacts are used to anchor other chains of information such as: an EAT Claim as to the version of software/firmware running on a device <xref target="I-D.birkholz-suit-coswid-manifest"/>, an EAT claim about legitimate network activity (via <xref target="I-D.birkholz-rats-mud"/>, or embedded in the IDevID in <xref target="RFC8520"/>).</t>
      <t>Known software versions lead directly to vendor/distributor signed Software Bill of Materials (SBOM), such as those described by <xref target="RFC9393"/> and the NTIA/SBOM work <xref target="ntiasbom"/> and CISQ/OMG SBOM work underway <xref target="cisqsbom"/>.</t>
      <t>In order to manage risks and assess vulnerabilities in a Supply Chain, it is necessary to determine a degree of trustworthiness in each device.
A device may mislead audit systems as to its provenance, about its software load or even about what kind of device it is (see <xref target="RFC7168"/> for a humorous example).</t>
      <t>In order to properly assess the security of a Supply Chain it is necessary to understand the kinds and severity of the threats which a device has been designed to resist.
To do this, it is necessary to understand the ways in which the different trust anchors and identities are initially provisioned, are protected, and are updated.</t>
      <t>To do this, this document details the different trust anchors (TrAnc) and identities (IDs) found in typical devices.
The privacy and integrity of the TrAncs and IDs is often provided by a different, superior artifact.
This relationship is examined.</t>
      <t>While many might desire to assign numerical values to different mitigation techniques in order to be able to rank them, this document does not attempt to do that, as there are too many other (mostly human) factors that would come into play.
Such an effort is more properly in the purview of a formal ISO9001 process such as ISO14001.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>This document is not a standards track document, and it does not make use of formal requirements language.</t>
        <t>This section will be expanded to include needed terminology as required.</t>
        <t>The words Trust Anchor are contracted to TrAnc and TrAncs rather than TA, in order not to confuse with <xref target="RFC9397"/>'s "Trusted Application".</t>
        <t>This document defines a number of hyphenated terms, and they are summarized here:</t>
        <dl>
          <dt>device-generated:</dt>
          <dd>
            <t>a private or symmetric key that is generated on the device</t>
          </dd>
          <dt>infrastructure-generated:</dt>
          <dd>
            <t>a private or symmetric key that is generated by some system, likely
located at the factory that built the device</t>
          </dd>
          <dt>mechanically-installed:</dt>
          <dd>
            <t>when a key or certificate is programmed into non-volatile storage by
an out-of-band mechanism such as JTAG <xref target="JTAG"/></t>
          </dd>
          <dt>mechanically-transferred:</dt>
          <dd>
            <t>when a key or certificate is transferred into a system via private interface, such as serial console, JTAG managed mailbox, or other physically private interface</t>
          </dd>
          <dt>network-transferred:</dt>
          <dd>
            <t>when a key or certificate is transferred into a system using a network interface which would be available after the device has shipped.  This applies even if the network is physically attached using a bed-of-nails <xref target="BedOfNails"/>.</t>
          </dd>
          <dt>device/infrastructure-co-generated:</dt>
          <dd>
            <t>when a private or symmetric key is derived from a secret previously synchronized between the silicon vendor and the factory using a common algorithm.</t>
          </dd>
        </dl>
        <t>In addition, <xref target="keygen"/> introduces three primary private key generation techniques named <em>arbitrarily</em> after three vegetables (avocado, bamboo, and carrot) and two secondary ones named after two fruits (salak and sapodilla).
The two secondary ones refer to methods where a secure element is involved, and mnemonically start with the same letter: S.</t>
      </section>
    </section>
    <section anchor="applicability-model">
      <name>Applicability Model</name>
      <t>There is a wide variety of devices to which this analysis can apply.
(See <xref target="I-D.ietf-iotops-7228bis-01"/>.)
This document will use a J-group processor as a sample.
This class is sufficiently large to experience complex issues among multiple CPUs, packages and operating systems, but at the same time, small enough that this class is often deployed in single-purpose IoT-like uses.
Devices in this class often have Secure Enclaves, and can include silicon manufacturer controlled processors in the boot process (the Raspberry PI boots under control of the GPU).</t>
      <t>Almost all larger systems (servers, laptops, desktops) include a Baseboard Management Controller (BMC), which ranges from a M-Group Class 3 MCU, to a J-Group Class 10 CPU (see, for instance <xref target="openbmc"/> which uses a Linux kernel and system inside the BMC).
As the BMC usually has complete access to the main CPU's memory, I/O hardware and disk, the boot path security of such a system needs to be understood first as being about the security of the BMC.</t>
      <section anchor="a-reference-manufacturingboot-process">
        <name>A reference manufacturing/boot process</name>
        <t>In order to provide for immutability and privacy of the critical TrAnc and IDs, many CPU manufacturers will provide for some kind of private memory area which is only accessible when the CPU is in certain privileged states.
See the Terminology section of <xref target="RFC9397"/>, notably TEE, REE, and TAM, and also section 4, Architecture.</t>
        <t>The private memory that is important is usually non-volatile and rather small.
It may be located inside the CPU silicon die, or it may be located externally.
If the memory is external, then it is usually encrypted by a hardware mechanism on the CPU, with only the key kept inside the CPU.</t>
        <t>The entire mechanism may be external to the CPU in the form of a hardware-TPM module, or it may be entirely internal to the CPU in the form of a firmware-TPM.
It may use a custom interface to the rest of the system, or it may implement the TPM 1.2 or TPM 2.0 specifications.
Those details are important to performing a full evaluation, but do not matter much to this model (see initial-enclave-location below).</t>
        <t>During the manufacturing process, once the components have been soldered to the board, the system is usually put through a system-level test.
This is often done as a "bed-of-nails" test <xref target="BedOfNails"/>, where the board has key points attached mechanically to a test system.
A <xref target="JTAG"/> process tests the System Under Test, and then initializes some firmware into the still empty flash storage.</t>
        <t>It is now common for a factory test image to be loaded first: this image will include code to initialize the private memory key described above, and will include a first-stage bootloader and some kind of (primitive) Trusted Application Manager (TAM).
(The TAM is a piece of software that lives within the trusted execution environment.)</t>
        <t>Embedded in the first-stage bootloader will be a Trust Anchor that is able to verify the second-stage bootloader image.</t>
        <t>After the system has undergone testing, the factory test image is erased, leaving the first-stage bootloader.
One or more second-stage bootloader images are installed.
The production image may be installed at that time, or if the second-stage bootloader is able to install it over the network, it may be done that way instead.</t>
        <t>There are many variations of the above process, and this section is not attempting to be prescriptive, but to provide enough illustration to motivate subsequent terminology.</t>
        <t>The process may be entirely automated, or it may be entirely driven by humans working in the factory, or a combination of the above.</t>
        <t>These steps may all occur on an access-controlled assembly line, or the system boards may be shipped from one place to another (maybe another country) before undergoing testing.</t>
        <t>Some systems are intended to be shipped in a tamper-proof state, but it is usually not desirable that bed-of-nails testing be possible without tampering, so the initialization process is usually done prior to rendering the system tamper-proof.
An example of a one-way tamper-proof, weather resistant treatment might to mount the system board in a case and fill the case with resin.</t>
        <t>Quality control testing may be done prior to, as well as after, the application of tamper-proofing, as systems which do not pass inspection may be reworked to fix flaws, and this should ideally be impossible once the system has been made tamper-proof.</t>
      </section>
    </section>
    <section anchor="types-of-trust-anchors">
      <name>Types of Trust Anchors</name>
      <t>Trust Anchors (TrAnc) are fundamentally public keys with authorizations implicitly attached through the code that references them.</t>
      <t>They are used to validate other digitally signed artifacts.
Typically, these are chains of PKIX certificates leading to an End-Entity certificate (EE).</t>
      <t>The chains are usually presented as part of an externally provided object, with the term "externally" to be understood as being as close as untrusted flash, to as far as objects retrieved over a network.</t>
      <t>There is no requirement that there be any chain at all: the trust anchor can be used to validate a signature over a target object directly.</t>
      <t>The trust anchors are often stored in the form of self-signed certificates.
The self-signature does not offer any cryptographic assurance, but it does provide a form of error detection, providing verification against non-malicious forms of data corruption.
If storage is at a premium (such as inside-CPU non-volatile storage) then only the public key itself need to be stored.
For a 256-bit ECDSA key, this is 32 bytes of space.</t>
      <t>The following subsections explain a number of different kinds of trust anchors that a manufacturer can include into a device.
Each kind of trust anchor has different kinds of trust associated with it based what authorization is associated with the key.
That is, these different anchors do different things, and so the risk associated with the anchor depends upon what those things that can be done are.</t>
      <t>There are some characteristic associated with each trust anchor that depend upon the associated risk.</t>
      <ol spacing="normal" type="1"><li>
          <t>There is a risk around whether or not a trust anchor can be replaced or modified so that it's a different anchor, (with the associated private key) controlled by a different entity.  This is not a risk associated with loss of the original manufacturer's private key, but with integrity of the public key.</t>
        </li>
        <li>
          <t>There is a risk that multiple trust anchors could be added to the device.  This would not replace the manufacturer's anchor, but augment it with additional trust anchors not authorized by the manufacturer.</t>
        </li>
        <li>
          <t>There is a risk that a trust anchor could be removed from the device, or rendered unuseable. For instance, it might be impractical to replace a trust anchor, but it might be possible via fault injection or high-energy radiation for an attacker to corrupt one or two bites of a trust anchor, rendering the anchor useless.</t>
        </li>
        <li>
          <t>There is a risk associated with compromise of the associate private key that goes with the (public key) of the trust anchor.  While this is the most obvious concern expressed: that an attacker gets control of the key, the above three risks may be more practical for some attackers.</t>
        </li>
        <li>
          <t>There is a risk that the manufacturer will lose access to the private key, without the private key being compromised.  No attacker posseses the private key, but neither can the manufacturer use the key anymore.</t>
        </li>
      </ol>
      <t>Should any of the above things occur, the manufacturer will be in a position where they might have to deploy new trust anchors to every device.
For some trust anchors, they may be safely replaced with an over-the-air update.
For the trust anchor that authorizes over-the-air updates, the manufacturer might be in a position where every single device has to be recalled and serviced with specialized hardware capable of updating the firmware.
For some devices, the hardware will have to be entirely replaced, at great cost.</t>
      <t>This has already happened to Intel: <xref target="leakedmsikey"/></t>
      <section anchor="first-stage-bootloader-trust-anchor">
        <name>First-Stage Bootloader Trust Anchor</name>
        <t>This anchor is part of the first-stage bootloader, and it is used to validate a second-stage bootloader which may be stored in external flash.</t>
        <t>This is called the first-stage bootloader trust anchor.
In most cases this trust anchor is burnt into fuses in the CPU, often within the die along with the first-stage bootloader itself.
It can not be changed without replacement of the entire device.
Replacement, removal or modification of this trust anchor is improbable.</t>
        <t>The anchor could be rendered unuseable if additinal fuses can be blown.
Some fuse implementations allow for bits to changed from 1 (unblown), to 0 (blown).
Access to blow the fuses is usually restricted.
On some devices, it requires voltages not normally present, making this impossible to do by software.
However, it might be possible for an attacker to blow fuses using an external high voltage probe or via injection of gamma ray.   The likely result however is that the device would no longer boot.</t>
      </section>
      <section anchor="software-update-trust-anchor">
        <name>Software Update Trust Anchor</name>
        <t>This anchor is used to validate the main application (or operating system) load for the device.</t>
        <t>It can be stored in a number of places.
First, it may be identical to the First Bootloader Trust Anchor.</t>
        <t>Second, it may be stored in the second-stage bootloader, and therefore its integrity is protected by the First Bootloader Trust Anchor.</t>
        <t>Third, it may be stored in the application code itself, where the application validates updates to the application directly (update in place), or via a double-buffer arrangement.
The initial (factory) load of the application code initializes the trust arrangement.</t>
        <t>In this situation the application code is not started in a secured boot path.
The second-stage bootloader does not validate the application/operating system before starting it, but it may still provide measured boot mechanism. <xref section="2.1" sectionFormat="comma" target="I-D.ietf-rats-endorsements"/></t>
      </section>
      <section anchor="trusted-application-manager-anchor">
        <name>Trusted Application Manager anchor</name>
        <t>This anchor is the key used by the <xref target="RFC9397"/> Trusted Application Manager (TAM).
Code which is signed by this anchor will be given execution privileges as described by the manifest which accompanies the code.</t>
        <t>The TAM software itself will typically be verified by the first -stage</t>
        <t>This privilege may include updating anchors that are present within the TAM, or elsewhere in the Trusted Execution Environment.</t>
      </section>
      <section anchor="public-webpki-anchors">
        <name>Public WebPKI anchors</name>
        <t>These anchors are used to authenticate HTTPS certificates from web sites.
These anchors are typically distributed as part of desktop browsers, and via desktop operating systems.
On IoT devices with specific purposes <xref target="RFC8520"/>, a limited number of conections is expected, so a limited number of trust anchors is usually distributed.</t>
        <t>The exact set of these anchors is not precisely defined: it is usually determined by the browser vendor (e.g., Mozilla, Google, Apple, Safari, Microsoft), or the operating system vendor (e.g., Apple, Google, Microsoft, Ubuntu).
In most cases these vendors look to the CA/Browser Forum <xref target="CABFORUM"/> for inclusion criteria.</t>
      </section>
      <section anchor="dnssec-root">
        <name>DNSSEC root</name>
        <t>This anchor is part of the DNS Security extensions.
It provides an anchor for integrity protection of DNS lookups.
Secure DNS lookups may be important in order to get access to software updates.
This anchor is now scheduled to change approximately every 3 years, with the new key announced several years before it is used, making it possible to embed keys that will be valid for up to five years.</t>
        <t>This trust anchor is typically part of the application/operating system code and is usually updated by the manufacturer when they do updates.
However, a system that is connected to the Internet may update the DNSSEC anchor itself through the mechanism described in <xref target="RFC5011"/>.</t>
        <t>There are concerns that there may be a chicken-and-egg situation for devices that have remained in a powered off state (or disconnected from the Internet) for a period of many years.
That upon being reconnected, that the device would be unable to do DNSSEC validation because the trust anchor within the device would be too old.</t>
        <t>This could be fixed with a software/firmware update.
However, it could also be that in such a situation, that the device would be unable to validate the DNSSEC names required in order to obtain the operating system update.</t>
      </section>
      <section anchor="privatecloud-pki-anchors">
        <name>Private/Cloud PKI anchors</name>
        <t>It is common for many IoT and network appliances to have links to vendor provided services.
For instance, the IoT device that calls home for control purposes, or the network appliance that needs to validate a license key before it can operate.
(This may be identical to, or distinct from a Software Update anchor.  In particular, the device might call home over HTTPS to learn if there is a software update that needs to be done, but the update is signed by another key.)</t>
        <t>Such vendor services can be provided with public certificates, but the very short lifetime for public certificates precludes their use in many operational environments.
Instead, a private PKI anchor is included.
This can be in the form a multi-level PKI (as described in <xref target="pkilevel"/>), or degenerate to a level-1 PKI: a self-signed certificate.</t>
        <t>A level-1 PKI is very simple to create and operate, and there are innumerable situations where there is just a call to the "curl" utility <xref target="curl"/>, with a "--pinnedpubkey" option to specify the anchor.</t>
      </section>
      <section anchor="onboarding-and-other-enrollment-anchors">
        <name>Onboarding and other Enrollment anchors</name>
        <t><xref target="RFC8995"/>, <xref target="RFC8572"/>, and <xref target="RFC8366"/> specify mechanisms for onboarding of new devices.
The voucher artifact is transferred to the device by different means, and the device must verify the signature on it.
This requires a trust anchor to be built-in to the device, and some kind of private PKI be maintained by the vendor (or its authorized signing designate).
<xref target="I-D.richardson-anima-masa-considerations"/> provides some advice on choices in PKI design for a MASA.
The taxonomy presented in this document applies to describing how this PKI has been designed.</t>
      </section>
      <section anchor="onboarded-network-local-anchors">
        <name>Onboarded network-local anchors</name>
        <t><xref target="RFC7030"/>, <xref target="RFC8995"/> and <xref target="I-D.ietf-netconf-trust-anchors"/> provide mechanisms by which new trust anchors may be loaded by a device during an onboarding process.
The trust anchors involved are typically local to an enterprise and are used to validate connections to other devices in the network.</t>
        <t>This typically includes connections to network management systems that may also load or modify other trust anchors in the system.
<xref target="I-D.richardson-anima-masa-considerations"/> provides some advice in the BRSKI <xref target="RFC8995"/> case for appropriate PKI complexity for such local PKIs.</t>
        <t>Note that this trust anchor is that of the network operator, is not related to the trust anchor described in the previous section that is used to validate an ownership transfer.</t>
      </section>
    </section>
    <section anchor="types-of-device-identities">
      <name>Types of Device Identities</name>
      <t>Device identities are installed during manufacturing time for a variety of purposes.</t>
      <t>Identities require some private component.
Asymmetric identities (e.g., RSA, ECDSA, EdDSA systems) require a corresponding public component, usually in the form of a certificate signed by a trusted third party.</t>
      <t>This certificate associates the identity with attributes.</t>
      <t>The process of making this coordinated key pair and then installing it into the device is called identity provisioning.</t>
      <section anchor="manufacturer-installed-idevid-certificates">
        <name>Manufacturer installed IDevID certificates</name>
        <t><xref target="ieee802-1AR"/> defines a category of certificates that are installed by the manufacturer which contain a device unique serial number.</t>
        <t>A number of protocols depend upon this certificate.</t>
        <ul spacing="normal">
          <li>
            <t><xref target="RFC8572"/> and <xref target="RFC8995"/> introduce mechanisms for new devices (called pledges) to be onboarded into a network without intervention from an operator. A number of derived protocols such as <xref target="RFC9733"/>, <xref target="I-D.ietf-anima-constrained-voucher"/>, <xref target="I-D.ietf-anima-brski-cloud"/> extend this in a number of ways.</t>
          </li>
          <li>
            <t><xref target="RFC9334"/> depends upon a key provisioned into the Attesting Environment to sign Evidence. The IDevID may be used for this.</t>
          </li>
          <li>
            <t><xref target="RFC9019"/> depends upon a key provisioned into the
device in order to decrypt software updates.
Both symmetric and asymmetric keys are possible.
In both cases, the decrypt operation depends upon the device having access to
a private key provisioned in advance.
The IDevID can be used for this if algorithm choices permit.
ECDSA keys do not directly support encryption in the same way that RSA does, for
instance, but the addition of ECIES can solve this.
There may be other legal considerations why the IDevID might not be used, and
a second key provisioned.</t>
          </li>
        </ul>
        <section anchor="keygen">
          <name>Operational Considerations for Manufacturer IDevID Public Key generation</name>
          <t>The OEM manufacturer has the responsibility to provision a key pair into each
device as part of the manufacturing process.
There are a variety of mechanisms to accomplish this, which this section details.</t>
          <t>There are three fundamental ways to generate IDevID certificates for devices:</t>
          <ol spacing="normal" type="1"><li>
              <t>generating a private key on the device, creating a Certificate Signing
Request (or equivalent), and then returning a certificate to the device.</t>
            </li>
            <li>
              <t>generating a private key outside the device, signing the certificate, and
the installing both into the device.</t>
            </li>
            <li>
              <t>deriving the private key from a previously installed secret seed, that is shared with only the manufacturer.</t>
            </li>
          </ol>
          <t>There are additional variations where the IDevID is provided as part of a Trusted Platform Module (TPM) or Secure Element (SE).
The OEM vendor may purchase such devices from another vendor, and that vendor often offers provisioning of a key pair into the device as a service.</t>
          <t>The document <xref target="I-D.moskowitz-ecdsa-pki"/> provides some practical instructions
on setting up a reference implementation for ECDSA keys using a three-tier
mechanism.</t>
          <section anchor="avcado">
            <name>Avocado method: On-device private key generation</name>
            <t>In this method, the device generates a private key on the device.
This is done within some very secure aspect of the device, such as in a Trusted Execution Environment, and the resulting private key is then stored in a secure and permanent way.
The permanency may extend beyond use of on-CPU flash, and could even involve blowing of one-time fuses.</t>
            <t>Generating the key on-device has the advantage that the private key never leaves the device.
The disadvantage is that the device may not have a verifiable random number generator.
The use of a pseudo-random number generator needs to be well seeded as explained in <xref target="RFC4086"/>.
<xref target="factoringrsa"/> is an example of a successful attack on this scenario.</t>
            <t>There are a number of options of how to get the public key from the device to the certification authority.
As it is a public key, privacy is less of a concern, and the focus is on integrity.
(However disclosing the public key may have impacts on trackability of the device.)</t>
            <t>So, transmission must be done in an integral manner, and must be securely associated with an assigned serial number.
The serial number goes into the certificate, and the resulting certificate needs to be loaded into the manufacturer's asset database, and returned to the device to be stored as the IDevID certificate.</t>
            <t>One way to do the transmission is during a factory Bed of Nails test (see <xref target="BedOfNails"/>) or JTAG Boundary Scan.
When done via a physical connection like this, then this is referred to as a
<em>avocado device-generated</em> / <em>mechanically-transferred</em> method.</t>
            <t>There are other ways that could be used where a certificate signing request is sent over a special network channel when the device is powered up in the factory.
This is referred to as the <em>avocado device-generated</em> / <em>network-transferred</em> method.</t>
            <t>Regardless of how the certificate signing request is sent from the device to the factory, and how the certificate is returned to the device, a concern from production line managers is that the assembly line may have to wait for the certification authority to respond with the certificate.
This is inherently a synchronous process, as the process can not start until the private key is generated and stored.</t>
            <t>After the key generation, the device needs to set a flag such that it no longer will generate a new key, and will not accept a new IDevID via the factory network connection.
This may be a software setting, or could be as dramatic as blowing a fuse.</t>
            <t>Devices are typically constructed in a fashion such that the device is unable to ever disclose the private key via an external interface.
This is usually done using a secure-enclave provided by the CPU architecture in combination with on-chip non-volatile memory.</t>
            <t>The risk is that if an attacker with physical access is able to put the device back into an unconfigured mode, then the attacker may be able to substitute a new certificate into the device.
It is difficult to construct a rationale for doing this as the attacker would not be able to forge a certificate from the manufacturers' CA.
Other parties that rely on the IDevID would see the device as an imposter if another CA was used.
However, if the goal is theft of the device itself (without regard to having access to firmware updates), then use of another manufacturer identity may be profitable.
Stealing a very low value item, such as a light bulb makes very little sense.
Stealing medium value items, such as appliances, or high-value items such as cars, yachts or even airplanes would make sense.
Replacing the manufacturer IDevID permits the attacker to also replace the authority to transfer ownership in protocols like <xref target="RFC8995"/>.</t>
          </section>
          <section anchor="bamboo">
            <name>Bamboo method: Off-device private key generation</name>
            <t>In this method, a key pair is generated in the factory, outside of the device.
The factory keeps the private key in a restricted area, but uses it to form a Certification Signing Request (CSR).
The CSR is passed to the manufacturer's Certification Authority (CA), and a certificate is returned.
Other meta-data is often also returned, such as a serial number.</t>
            <t>Generating the key off-device has the advantage that the randomness of the private key can be better analyzed.
As the private key is available to the manufacturing infrastructure, the authenticity of the public key is well known ahead of time.</t>
            <t>The private key and certificate can be programmed into the device along with the initial bootloader firmware in a single step.</t>
            <t>As the private key can be known to the factory in advance of the device being ready for it, the certificate can also be generated in advance.
This hides the latency to talk to the CA, and allows for the connectivity to the CA to be less reliable without shutting down the assembly line.
A single write to the flash of the device can contain the entire firmware of the device, including configuration of trust anchors and private keys.</t>
            <t>The major downside to generating the private key off-device is that it could be seen by the manufacturing infrastructure.
It could be compromised by humans in the factory, or the equipment could be compromised.
The use of this method increases the value of attacking the manufacturing infrastructure.</t>
            <t>If private keys are generated by the manufacturing plant, and are immediately installed, but never stored, then the window in which an attacker can gain access to the private key is immensely reduced.
But, the process then becomes more synchronous, negating much of the advantage of such a system.</t>
            <t>As in the previous case, the transfer may be done via physical interfaces such as bed-of-nails, giving the <em>bamboo infrastructure-generated</em> / <em>mechanically-transferred</em> method.</t>
            <t>There is also the possibility of having a <em>bamboo infrastructure-generated</em> / <em>network-transferred</em>
key.
There is a support for "server-generated" keys in <xref target="RFC7030"/>, <xref target="RFC8894"/>, and <xref target="RFC4210"/>.
All methods strongly recommend encrypting the private key for transfer.
This is difficult to comply with here as there is not yet any private key material in the device, so in many cases it will not be possible to encrypt the private key.
Still, it may be acceptable if the device is connected directly by a wired network and unroutable addresses are used.
A private wired network can often be made as secure as a bed-of-nails interface.</t>
          </section>
          <section anchor="carrot-method-key-setup-based-on-secret-seed">
            <name>Carrot method: Key setup based on secret seed</name>
            <t>In this method, a random symmetric seed is generated by a supplier to the OEM.
This is typically the manufacturer of the CPU, often a system on a chip (SOC).
In this section there are two Original Equipment Manufacturer (OEM): the first is the familiar one that is responsible for the entire device (the device-OEM), and the second one is the silicon (the silicon-OEM) vendor in which this symmetric seed key has been provisioned.</t>
            <t>In this process, the silicon-OEM provisions a unique secret into each device shipped.
This is typically at least 256-bits in size.</t>
            <t>This can be via fuses blown in a CPU's Trusted Execution Environment <xref target="RFC9397"/>, a TPM, or a Secure Element that provisioned at its fabrication time.
In some cases, the secret is based upon a Physically Uncloneable Function <xref target="PUF"/>.</t>
            <t>This value is revealed to the OEM board manufacturer only via a secure channel.
Upon first boot, the system (within a TEE, a TPM, or Secure Element) will generate a key pair using this seed to initialize a Pseudo-Random-Number-Generator (PRNG).
The OEM, in a separate system, will initialize the same PRNG and, thus generate the same key pair.
The OEM then derives the public key part, and signs it with their certification authority (CA) to turns it into a certificate.
The private part is then destroyed by the OEM, ideally never stored or seen by anyone.</t>
            <t>The certificate (being public information) is placed into a database, in some cases it is loaded by the device as its IDevID certificate, in other cases, it is retrieved during the onboarding process based upon a unique serial number asserted by the device.</t>
            <t>In some ways, this method appears to have all the downsides of the previous two methods: the device must correctly derive its own private key, and the OEM has access to the private key, making it also vulnerable.
The device does not depend upon any internal source of random numbers to derive its key.</t>
            <t>The OEM does all the private key manipulation in a secure place, probably offline, and need never involve the actual physical factory.
The OEM can do this in a different country, even.</t>
            <t>The security of the process rests upon the difficulty in extracting the seed provided by the Silicon-OEM.
While the Silicon-OEM must operate a factory that is more secure, which has a much higher cost, the exposure for this facility can be much better controlled.  The device-OEM's factory, which has many more components as input, including device testing, can operate at a much lower risk level.</t>
            <t>Additionally, there are some other advantages to the OEM: The private keys and certificates may be calculated by the OEM asynchronously to the manufacturing process, either done in batches in advance of actual manufacturing, or on demand when an IDevID is requested.</t>
            <t>There are additional downsides of this method for OEM: the cost is often higher, and may involve additional discrete parts.
The security has been outsourced to the OEM-silicon fabrication system.
The resulting seeds must be communicated to the OEM in batches.
This will often by done by physical courier, but other arrangements are possible.
The device-OEM must store and care for these keys very carefully.</t>
          </section>
          <section anchor="salak-method-on-device-generation-with-secure-element">
            <name>Salak method: on-device generation with Secure Element</name>
            <t>In this method, a key-pair is generated by the device using a secure element.
(It may be a discrete TPM, but the firmware TPM method is considered avocado).</t>
            <t>The secure element provides additional assurance that the private key was properly generated.
Secure elements are designed specifically so that private keys can not be extracted from the device, so even if the device is attacked in a sophisticated way, using hardware, the private key will not be disclosed.</t>
          </section>
          <section anchor="sapodilla-method-secure-element-factory-generation">
            <name>Sapodilla method: Secure Element factory generation</name>
            <t>In this method, a key-pair is generated by the Silicon-OEM in their factory.
This method is essentially identical to the salak method, but it occurs in a different factory.</t>
            <t>As a result the choice of which certification authority (CA) gets used may be very different.
It is typical for the Silicon-OEM to operate a CA themselves.
There are a few options: a) they may put IDevIDs into the device which are generic to the silicon-OEM provider, b) they may operate a CA on behalf of the device-OEM, c) they may even connect over a network to the device-OEM's CA.</t>
            <t>The device-OEM receives the secure element devices in batches in a similar way that they receive other parts.
The secure elements are placed by the device-OEM's manufacturing plant into the devices.</t>
            <t>Upon first boot the device-OEM's firmware can read the IDevID certificate that have been placed into the secure elements, and can ask the secure element to perform signing operations using the private key contained in the secure element.
But, the private key can not be extracted.</t>
            <t>Despite the increase convenience of this method, there may be a risk if the secure elements are stolen in transport.
A thief could use them to generate signatures that would appear to be from device-OEM's devices.
To deal with this, there is often a simple activation password that the device-OEM's firmware must provide to the secure element in order to activate it.
This password is probably stored in the clear in the device-OEM's firmware: it can't be encrypted, because the source of decryption keys would be in the secure element.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="public-key-infrastructures-pki">
      <name>Public Key Infrastructures (PKI)</name>
      <t><xref target="RFC5280"/> describes the format for PKIX certificates.
Numerous mechanisms for doing enrollment have been defined (including: EST <xref target="RFC7030"/>, CMP <xref target="RFC4210"/>, SCEP <xref target="RFC8894"/>).</t>
      <t><xref target="RFC5280"/> provides mechanisms to deal with multi-level certification
authorities, but it is not always clear what operating rules apply.</t>
      <t>The certification authority (CA) that is central to <xref target="RFC5280"/>-style public key infrastructures can suffer three kinds of failures:</t>
      <ol spacing="normal" type="1"><li>
          <t>disclosure of the private key,</t>
        </li>
        <li>
          <t>lost of access to the private key,</t>
        </li>
        <li>
          <t>inappropriate/unauthorized signing of a certificate or artifact by an unauthorized actor</t>
        </li>
      </ol>
      <t>A PKI which discloses one or more private certification authority keys is no
longer secure.</t>
      <t>An attacker can create new identities, and forge certificates connecting
existing identities to attacker controlled public/private keypairs.
This can permit the attacker to impersonate any specific device.</t>
      <t>In case 3, a failure when the CA is convinced to sign (or issue) a certificate which it is not authorized to do so.
See for instance <xref target="ComodoGate"/>.
This is an authorization failure, and while a significant event, it does not result in the CA having to be re-initialized from scratch as no private keys were disclosed.</t>
      <t>This is distinguished from when access to the private key is lost: but the key has not been disclosed.
Any signatures that have already been made continue to be trustworthy, however, no new signature can be made.
While this can render the CA useless, and if this the firmware signing key, it likely results in a recall of all products that need to use this trust anchor.
(Note: that there are some situations where a trust anchor will be created, it will then be used to sign a number of subordinate CAs, enough for the anticipated lifespan of the anchor, and then the private key intentionally destroyed.)</t>
      <t>If the PKI uses Certificate Revocation Lists (CRL)s, then an attacker that has access to the private key can also revoke existing identities.</t>
      <t>In the other direction, a PKI which loses access to a private key can no
longer function.
This does not immediately result in a failure, as existing identities remain valid until their expiry time (notAfter).
However, if CRLs or OCSP are in use, then the inability to sign a fresh CRL or OCSP response will result in all identities becoming invalid once the existing CRLs or OCSP statements expire.</t>
      <t>This section details some nomenclature about the structure of certification
authorities.</t>
      <section anchor="pkilevel">
        <name>Number of levels of certification authorities (pkilevel)</name>
        <t><xref section="6.1" sectionFormat="of" target="RFC5280"/> provides a Basic Path Validation.
In the formula, the certificates are arranged into a list.</t>
        <t>The certification authority (CA) starts with a Trust Anchor (TrAnc).
This is counted as the first level of the authority.</t>
        <t>In the degenerate case of a self-signed certificate, then this a one level PKI.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="112" width="128" viewBox="0 0 128 112" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
              <path d="M 96,32 L 96,96" fill="none" stroke="black"/>
              <path d="M 120,48 L 120,80" fill="none" stroke="black"/>
              <path d="M 8,32 L 96,32" fill="none" stroke="black"/>
              <path d="M 104,80 L 120,80" fill="none" stroke="black"/>
              <path d="M 8,96 L 96,96" fill="none" stroke="black"/>
              <g class="text">
                <text x="108" y="52">&lt;-</text>
                <text x="40" y="68">Issuer=</text>
                <text x="80" y="68">X</text>
                <text x="48" y="84">Subject=X</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
.----------.
|          |<-.
|Issuer= X |  |
|Subject=X |--'
'----------'
]]></artwork>
        </artset>
        <t>The private key associated with the Trust Anchor signs one or more certificates.
When this first level authority trusts only End-Entity (EE) certificates,
then this is a two level PKI.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="232" viewBox="0 0 232 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
              <path d="M 8,176 L 8,224" fill="none" stroke="black"/>
              <path d="M 32,96 L 32,168" fill="none" stroke="black"/>
              <path d="M 80,96 L 80,128" fill="none" stroke="black"/>
              <path d="M 96,32 L 96,96" fill="none" stroke="black"/>
              <path d="M 96,176 L 96,224" fill="none" stroke="black"/>
              <path d="M 120,48 L 120,80" fill="none" stroke="black"/>
              <path d="M 136,176 L 136,224" fill="none" stroke="black"/>
              <path d="M 144,128 L 144,168" fill="none" stroke="black"/>
              <path d="M 224,176 L 224,224" fill="none" stroke="black"/>
              <path d="M 8,32 L 96,32" fill="none" stroke="black"/>
              <path d="M 96,80 L 120,80" fill="none" stroke="black"/>
              <path d="M 8,96 L 96,96" fill="none" stroke="black"/>
              <path d="M 80,128 L 144,128" fill="none" stroke="black"/>
              <path d="M 8,176 L 40,176" fill="none" stroke="black"/>
              <path d="M 64,176 L 96,176" fill="none" stroke="black"/>
              <path d="M 136,176 L 168,176" fill="none" stroke="black"/>
              <path d="M 192,176 L 224,176" fill="none" stroke="black"/>
              <path d="M 8,224 L 96,224" fill="none" stroke="black"/>
              <path d="M 136,224 L 224,224" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="152,168 140,162.4 140,173.6 " fill="black" transform="rotate(90,144,168)"/>
              <polygon class="arrowhead" points="40,168 28,162.4 28,173.6 " fill="black" transform="rotate(90,32,168)"/>
              <g class="text">
                <text x="108" y="52">&lt;-</text>
                <text x="40" y="68">Issuer=</text>
                <text x="80" y="68">X</text>
                <text x="164" y="68">root</text>
                <text x="48" y="84">Subject=X</text>
                <text x="164" y="84">CA</text>
                <text x="52" y="180">EE</text>
                <text x="180" y="180">EE</text>
                <text x="40" y="196">Issuer=</text>
                <text x="80" y="196">X</text>
                <text x="168" y="196">Issuer=</text>
                <text x="208" y="196">X</text>
                <text x="52" y="212">Subject=Y1</text>
                <text x="180" y="212">Subject=Y2</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
.----------.
|          |<-.
|Issuer= X |  |   root
|Subject=X +--'    CA
'--+-----+-'
   |     |
   |     '-------.
   |             |
   v             v
.----EE----.    .----EE----.
|Issuer= X |    |Issuer= X |
|Subject=Y1|    |Subject=Y2|
'----------'    '----------'


]]></artwork>
        </artset>
        <t>When this first level authority signs subordinate certification authorities,
and those certification authorities sign End-Entity certificates, then
this is a three level PKI.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="448" width="480" viewBox="0 0 480 448" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,304 L 8,352" fill="none" stroke="black"/>
              <path d="M 32,176 L 32,224" fill="none" stroke="black"/>
              <path d="M 32,256 L 32,296" fill="none" stroke="black"/>
              <path d="M 56,128 L 56,168" fill="none" stroke="black"/>
              <path d="M 56,224 L 56,256" fill="none" stroke="black"/>
              <path d="M 88,224 L 88,256" fill="none" stroke="black"/>
              <path d="M 96,304 L 96,352" fill="none" stroke="black"/>
              <path d="M 120,176 L 120,224" fill="none" stroke="black"/>
              <path d="M 128,32 L 128,96" fill="none" stroke="black"/>
              <path d="M 136,304 L 136,352" fill="none" stroke="black"/>
              <path d="M 152,96 L 152,128" fill="none" stroke="black"/>
              <path d="M 152,256 L 152,296" fill="none" stroke="black"/>
              <path d="M 200,96 L 200,128" fill="none" stroke="black"/>
              <path d="M 216,32 L 216,96" fill="none" stroke="black"/>
              <path d="M 224,304 L 224,352" fill="none" stroke="black"/>
              <path d="M 240,48 L 240,80" fill="none" stroke="black"/>
              <path d="M 256,304 L 256,352" fill="none" stroke="black"/>
              <path d="M 272,256 L 272,296" fill="none" stroke="black"/>
              <path d="M 280,176 L 280,224" fill="none" stroke="black"/>
              <path d="M 304,128 L 304,168" fill="none" stroke="black"/>
              <path d="M 304,224 L 304,256" fill="none" stroke="black"/>
              <path d="M 344,224 L 344,256" fill="none" stroke="black"/>
              <path d="M 344,304 L 344,352" fill="none" stroke="black"/>
              <path d="M 368,176 L 368,224" fill="none" stroke="black"/>
              <path d="M 384,304 L 384,352" fill="none" stroke="black"/>
              <path d="M 400,256 L 400,296" fill="none" stroke="black"/>
              <path d="M 472,304 L 472,352" fill="none" stroke="black"/>
              <path d="M 128,32 L 216,32" fill="none" stroke="black"/>
              <path d="M 216,80 L 240,80" fill="none" stroke="black"/>
              <path d="M 128,96 L 216,96" fill="none" stroke="black"/>
              <path d="M 56,128 L 152,128" fill="none" stroke="black"/>
              <path d="M 200,128 L 304,128" fill="none" stroke="black"/>
              <path d="M 32,176 L 120,176" fill="none" stroke="black"/>
              <path d="M 280,176 L 368,176" fill="none" stroke="black"/>
              <path d="M 32,224 L 120,224" fill="none" stroke="black"/>
              <path d="M 280,224 L 368,224" fill="none" stroke="black"/>
              <path d="M 32,256 L 56,256" fill="none" stroke="black"/>
              <path d="M 88,256 L 152,256" fill="none" stroke="black"/>
              <path d="M 272,256 L 304,256" fill="none" stroke="black"/>
              <path d="M 344,256 L 400,256" fill="none" stroke="black"/>
              <path d="M 8,304 L 40,304" fill="none" stroke="black"/>
              <path d="M 64,304 L 96,304" fill="none" stroke="black"/>
              <path d="M 136,304 L 168,304" fill="none" stroke="black"/>
              <path d="M 192,304 L 224,304" fill="none" stroke="black"/>
              <path d="M 256,304 L 288,304" fill="none" stroke="black"/>
              <path d="M 312,304 L 344,304" fill="none" stroke="black"/>
              <path d="M 384,304 L 416,304" fill="none" stroke="black"/>
              <path d="M 440,304 L 472,304" fill="none" stroke="black"/>
              <path d="M 8,352 L 96,352" fill="none" stroke="black"/>
              <path d="M 136,352 L 224,352" fill="none" stroke="black"/>
              <path d="M 256,352 L 344,352" fill="none" stroke="black"/>
              <path d="M 384,352 L 472,352" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="408,296 396,290.4 396,301.6 " fill="black" transform="rotate(90,400,296)"/>
              <polygon class="arrowhead" points="312,168 300,162.4 300,173.6 " fill="black" transform="rotate(90,304,168)"/>
              <polygon class="arrowhead" points="280,296 268,290.4 268,301.6 " fill="black" transform="rotate(90,272,296)"/>
              <polygon class="arrowhead" points="160,296 148,290.4 148,301.6 " fill="black" transform="rotate(90,152,296)"/>
              <polygon class="arrowhead" points="64,168 52,162.4 52,173.6 " fill="black" transform="rotate(90,56,168)"/>
              <polygon class="arrowhead" points="40,296 28,290.4 28,301.6 " fill="black" transform="rotate(90,32,296)"/>
              <g class="text">
                <text x="228" y="52">&lt;-</text>
                <text x="44" y="68">root</text>
                <text x="160" y="68">Issuer=</text>
                <text x="200" y="68">X</text>
                <text x="44" y="84">CA</text>
                <text x="168" y="84">Subject=X</text>
                <text x="64" y="196">Issuer=</text>
                <text x="104" y="196">X</text>
                <text x="200" y="196">subordinate</text>
                <text x="312" y="196">Issuer=</text>
                <text x="352" y="196">X</text>
                <text x="76" y="212">Subject=Y1</text>
                <text x="196" y="212">CA</text>
                <text x="324" y="212">Subject=Y2</text>
                <text x="52" y="308">EE</text>
                <text x="180" y="308">EE</text>
                <text x="300" y="308">EE</text>
                <text x="428" y="308">EE</text>
                <text x="40" y="324">Issuer=</text>
                <text x="84" y="324">Y1</text>
                <text x="168" y="324">Issuer=</text>
                <text x="212" y="324">Y1</text>
                <text x="288" y="324">Issuer=</text>
                <text x="332" y="324">Y2</text>
                <text x="416" y="324">Issuer=</text>
                <text x="460" y="324">Y2</text>
                <text x="52" y="340">Subject=Z1</text>
                <text x="180" y="340">Subject=Z1</text>
                <text x="300" y="340">Subject=Z3</text>
                <text x="428" y="340">Subject=Z4</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
               .----------.
               |          |<-.
   root        |Issuer= X |  |
    CA         |Subject=X +--'
               '--+-----+-'
                  |     |
      .-----------'     '------------.
      |                              |
      v                              v
   .----------.                   .----------.
   |Issuer= X |    subordinate    |Issuer= X |
   |Subject=Y1|        CA         |Subject=Y2|
   '--+---+---'                   '--+----+--'
      |   |                          |    |
   .--'   '-------.              .---'    '------.
   |              |              |               |
   v              v              v               v
.----EE----.    .----EE----.   .----EE----.    .----EE----.
|Issuer= Y1|    |Issuer= Y1|   |Issuer= Y2|    |Issuer= Y2|
|Subject=Z1|    |Subject=Z1|   |Subject=Z3|    |Subject=Z4|
'----------'    '----------'   '----------'    '----------'





]]></artwork>
        </artset>
        <t>In general, when arranged as a tree, with the End-Entity certificates at the
bottom, and the Trust Anchor at the top, then the pkilevel is defined to be where the deepest EE
certificates are, counting from one.</t>
        <t>It is quite common to have a three-level PKI, where the root (level one) of the CA is
stored in a Hardware Security Module (HSM) in a way that it cannot be continuously accessed ("offline"), while the level two subordinate CA can sign certificates at any time ("online").</t>
      </section>
      <section anchor="protection-of-ca-private-keys">
        <name>Protection of CA private keys</name>
        <t>The private key for the certification authorities must be protected from
disclosure.
The strongest protection is afforded by keeping them in an offline device,
passing Certificate Signing Requests (CSRs) to the offline device by human
process.</t>
        <t>For examples of extreme measures, see <xref target="kskceremony"/>.
There is however a wide spectrum of needs, as exampled in <xref target="rootkeyceremony"/>.
The SAS70 audit standard is usually used as a basis for the Ceremony, see <xref target="keyceremony2"/>.</t>
        <t>This is inconvenient, and may involve latencies of days, possibly even weeks
to months if the offline device is kept in a locked environment that requires
multiple keys to be present.</t>
        <t>There is therefore a tension between protection and availability.
Convenient and timely access to sign new artifacts is not something that is just nice to have.
If access is inconvenient then it may cause delays for signing of new code releases,
or it may incentivize technical staff to build in workarounds in order that they can get their job done faster.
The compromise between situations is often mitigated by having some levels of the PKI be offline, and some levels of the PKI be online.</t>
      </section>
      <section anchor="preservation-of-ca-and-trust-anchor-private-keys">
        <name>Preservation of CA and Trust Anchor private keys</name>
        <t>A public key (or certificate) is installed into target device(s) as a trust anchor.
It is there in order to verify further artifacts, and it represents a significant investment.
Trust anchors must not be easily replaced by attackers, and securing the trust anchor against such tampering may involve burning the trust anchor into unchangeable fuses inside a CPU.</t>
        <t>Replacement of the anchor can involve a physical recall of every single device.
It is therefore important that the trust anchor is useable for the entire lifetime of every single one of the devices.</t>
        <t>The previous section deals with attacks against the infrastructure: the attacker wants to get access to the private key material, or to convince the infrastructure to use the private key material to their bidding.
Such an event, if it was undetected would be catastrophic.
But, when it is detected, would render almost every device useless (or potentially dangerous) until the anchor could be replaced.</t>
        <t>There is a different situation, however, which would lead to a similar result.
If the legitimate owner of the trust anchor infrastructure loses access to the private keys, then an equally catastrophic situation occurs.</t>
        <t>There are many situations that could lead to this.
The most typical situation would seem to be some kind of physical damage: a flood, a fire.
Less obvious situations could occur if a human forgets a password, or if the human with the password(s) dies, or becomes incapacitated.</t>
        <t>Backups of critical material are routinely done.
Storage of backups offsite deals with physical damage, and in many cases the organization maintains an entire set of equipment at another location.</t>
        <t>The question then becomes: how are the backups unlocked, or activated.
Why attack the primary site physically if an attacker can target the backup site, or the people whose job it is to activate the backup site?</t>
        <t>Consider the situation where a hurricane or earthquake takes out all power and communications at an organizations' primary location, and it becomes necessary to activate the backup site.
What does it take to do that?</t>
        <t>Typically, the secrets will be split using <xref target="shamir79"/> into multiple pieces, each piece being carried with a different trusted employee.</t>
        <t>In <xref target="kskceremony"/>, the pieces are stored on smartcards that are kept in a vault, and the trusted people carry keys to the vault.</t>
        <t>One advantage of this mechanism is that if necessary, the doors to the vault can be drilled out.
This takes some significant time and leaves significant evidence, so it can not be done quietly by an attacker.
In the case of the DNSSEC Root, a failure of the vault to open actually required this to be done.</t>
        <t>In other systems the digital pieces are carried on the person themselves, ideally encrypted with a password known only to that person.</t>
        <t><xref target="shamir79"/> allows for keys to be split up into many components (n of them), where only some smaller number of them, k, need to be present to reconstruct the secret.
This is known as a (k, n) threshold scheme.</t>
        <section anchor="splittingnumbers">
          <name>Secret splitting, k-of-n</name>
          <t>In this document, each of the people who hold a piece of the secret are referred to as Key Executives.</t>
          <t>The choice of n, and the choice of k is therefore of critical concern.
It seems unwise for an organization to publish them, as it provides some evidence as to how many Key Executives would need to be coerced.</t>
          <t>The identities of the n Key Executives should also be confidential.
The list of who they are should probably be limited to the members of the board and executive.
There does not seem to be any particular reason for the Key Executives to be members of the board, but having a long term relationship with the enterprise seems reasonable, and a clear understanding of when to use the piece.</t>
          <t>The number k, which is the minimum number of people that would need to be coerced should also remain confidential.</t>
          <t>A number that can be published is the difference between k and n, which represents the number of redundant Key Executives that exist.</t>
          <t>An enterprise that has operations in multiple places may be better positioned to survive incidents that disrupt travel.
For instance, an earthquake, tsunami, or pandemic not only has the possibility to kill Key Executives but it could also damage smartcards or USB key that they are stored on.
<xref target="shamir79"/> suggests that n=2k-1, which implies that a simple majority of Key Executives are needed to reconstruct the secret.</t>
          <t>However there are other values of k have some different tradeoffs: requiring a majority of Key Executives might be difficult when travel is impossible.
For instance, a value of k set to be less than a simple majority.
This enables the situation where Key Executives are split between two or more continents (with each continent having at least k Key Executives) would allow either continent to continue operations without the other group.</t>
          <t>This might be a very good way to manage a code signing or update signing key.
Split it among development groups in three time zones (eight hours apart), such that any of those development groups can issue an emergency security patch.
(Another way would be to have three End-Entity certificates that can sign code, and have each time zone sign their own code.  That implies that there is at least a level two PKI around the code signing process, and that any bootloaders that need to verify the code being starting it are able to do PKI operations.)</t>
        </section>
      </section>
      <section anchor="supporting-provisioned-anchors-in-devices">
        <name>Supporting provisioned anchors in devices</name>
        <t>IDevID-type Identity (or Birth) Certificates which are provisioned into
devices need to be signed by a certification authority maintained by the manufacturer.
During the period of manufacture of new product, the manufacturer needs to be able to sign new Identity Certificates.</t>
        <t>During the anticipated lifespan of the devices the manufacturer needs to maintain the ability for third parties to validate the Identity Certificates.
If there are Certificate Revocation Lists (CRLs) involved, then they will need to re-signed during this period.
Even for devices with a short active lifetime, the lifespan of the device could be very long if devices are kept in a warehouse for many decades before being activated.</t>
        <t>Trust anchors which are provisioned in the devices will have corresponding
private keys maintained by the manufacturer.
The trust anchors will often anchor a PKI which is going to be used for a
particular purpose.
There will be End-Entity (EE) certificates of this PKI which will be used to sign
particular artifacts (such as software updates), or messages in communications protocols
(such as TLS connections).
The private keys associated with these EE certificates are not stored in the
device, but are maintained by the manufacturer.
These need even more care than the private keys stored in the devices, as
compromise of the software update key compromises all the devices, not
just a single device.</t>
      </section>
    </section>
    <section anchor="evaluation-questions">
      <name>Evaluation Questions</name>
      <t>This section recaps the set of questions that may need to be answered.
This document does not assign valuation to the answers.</t>
      <section anchor="integrity-and-privacy-of-on-device-data">
        <name>Integrity and Privacy of on-device data</name>
        <dl>
          <dt>initial-enclave-location:</dt>
          <dd>
            <t>Is the location of the initial software trust anchor internal to the CPU package?
Some systems have a software verification public key which is built into the CPU package, while other systems store that initial key in a non-volatile device external to the CPU.</t>
          </dd>
          <dt>initial-enclave-integrity-key:</dt>
          <dd>
            <t>If the first-stage bootloader is external to the CPU, and if it is integrity protected, where is the key used to check the integrity?</t>
          </dd>
          <dt>initial-enclave-privacy-key:</dt>
          <dd>
            <t>If the first-stage data is external to the CPU, is it kept confidential by use of encryption?</t>
          </dd>
          <dt>first-stage-exposure:</dt>
          <dd>
            <t>The number of people involved in the first stage initialization.
An entirely automated system would have a number zero.
A factory with three 8 hour shifts might have a number that is a multiple of three.
A system with humans involved may be subject to bribery attacks, while a system with no humans may be subject to attacks on the system which are hard to notice.</t>
          </dd>
          <dt>first-second-stage-gap:</dt>
          <dd>
            <t>how far and long does a board travel between being initialized with a first-stage bootloader to where it is locked down so that changes to the bootloader can no longer be made.
For many situations, there is no distance at all as they occur in the same factory, but for other situations boards are manufactured and tested in one location, but are initialized elsewhere.</t>
          </dd>
        </dl>
      </section>
      <section anchor="integrity-and-privacy-of-device-identity-infrastructure">
        <name>Integrity and Privacy of device identity infrastructure</name>
        <t>For IDevID provisioning, which includes a private key and matching
certificate installed into the device, the associated public key
infrastructure that anchors this identity must be maintained by the
manufacturer.</t>
        <dl>
          <dt>identity-pki-level:</dt>
          <dd>
            <t>referring to <xref target="pkilevel"/>, the level number at which End-Entity certificates are present.</t>
          </dd>
          <dt>identity-time-limits-per-subordinate:</dt>
          <dd>
            <t>how long is each subordinate CA maintained before a new
subordinate CA key is generated?  There may be no time limit, only a device
count limit.</t>
          </dd>
          <dt>identity-number-per-subordinate:</dt>
          <dd>
            <t>how many identities are signed by a particular subordinate CA before it is
retired?  There may be no numeric limit, only a time limit.</t>
          </dd>
          <dt>identity-anchor-storage:</dt>
          <dd>
            <t>how is the root CA key stored? An open description that might include whether an HSM is used, or not, or even the model of it.</t>
          </dd>
          <dt>identity-shared-split-extra:</dt>
          <dd>
            <t>referring to <xref target="splittingnumbers"/>, where a private key is split up into n-components, of which k are required to recover the key, this number is n-k.
This is the number of spare shares.
Publishing this provides a measure of how much redundancy is present while not actually revealing either k or n.</t>
          </dd>
          <dt>identity-shared-split-continents:</dt>
          <dd>
            <t>the number of continents on which the private key can be recovered without travel by any of the secret shareholders.</t>
          </dd>
        </dl>
      </section>
      <section anchor="integrity-and-privacy-of-included-trust-anchors">
        <name>Integrity and Privacy of included trust anchors</name>
        <t>For each trust anchor (public key) stored in the device, there will be an
associated PKI.
For each of those PKI the following questions need to be answered.</t>
        <dl>
          <dt>pki-level:</dt>
          <dd>
            <t>how deep is the EE that will be evaluated, based upon the criteria in <xref target="pkilevel"/></t>
          </dd>
          <dt>pki-algorithms:</dt>
          <dd>
            <t>what kind of algorithms and key sizes can actively be used with the device.</t>
          </dd>
          <dt>pki-lifespan:</dt>
          <dd>
            <t>what is the timespan for this anchor.  Does it get replaced at some interval, and if so, by what means is this done?</t>
          </dd>
          <dt>pki-level-locked:</dt>
          <dd>
            <t>(a Boolean) is the level where the EE cert will be found locked by the device, or can
levels be added or deleted by the PKI operator without code changes to the
device.</t>
          </dd>
          <dt>pki-breadth:</dt>
          <dd>
            <t>how many different non-expired EE certificates is the PKI designed to manage?</t>
          </dd>
          <dt>pki-lock-policy:</dt>
          <dd>
            <t>can any EE certificate be used with this trust anchor to sign?  Or, is there
some kind of policy OID or Subject restriction?  Are specific subordinate
CAs needed that lead to the EE?</t>
          </dd>
          <dt>pki-anchor-storage:</dt>
          <dd>
            <t>how is the private key associated with this trust root stored? How many people are needed to recover it?</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This entire document is about security considerations.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no IANA requests.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Robert Martin of MITRE provided some guidance about citing the SBOM efforts.
Carsten Bormann provides many editorial suggestions.</t>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="ieee802-1AR" target="http://standards.ieee.org/findstds/standard/802.1AR-2009.html">
          <front>
            <title>IEEE 802.1AR Secure Device Identifier</title>
            <author>
              <organization>IEEE Standard</organization>
            </author>
            <date year="2009"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8995">
          <front>
            <title>Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <author fullname="M. Behringer" initials="M." surname="Behringer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document specifies automated bootstrapping of an Autonomic Control Plane. To do this, a Secure Key Infrastructure is bootstrapped. This is done using manufacturer-installed X.509 certificates, in combination with a manufacturer's authorizing service, both online and offline. We call this process the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol. Bootstrapping a new device can occur when using a routable address and a cloud service, only link-local connectivity, or limited/disconnected networks. Support for deployment models with less stringent security requirements is included. Bootstrapping is complete when the cryptographic identity of the new key infrastructure is successfully deployed to the device. The established secure connection can be used to deploy a locally issued certificate to the device as well.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8995"/>
          <seriesInfo name="DOI" value="10.17487/RFC8995"/>
        </reference>
        <reference anchor="RFC9019">
          <front>
            <title>A Firmware Update Architecture for Internet of Things</title>
            <author fullname="B. Moran" initials="B." surname="Moran"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="D. Brown" initials="D." surname="Brown"/>
            <author fullname="M. Meriac" initials="M." surname="Meriac"/>
            <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="RFC9140">
          <front>
            <title>Nimble Out-of-Band Authentication for EAP (EAP-NOOB)</title>
            <author fullname="T. Aura" initials="T." surname="Aura"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <author fullname="A. Peltonen" initials="A." surname="Peltonen"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>The Extensible Authentication Protocol (EAP) provides support for multiple authentication methods. This document defines the EAP-NOOB authentication method for nimble out-of-band (OOB) authentication and key derivation. The EAP method is intended for bootstrapping all kinds of Internet-of-Things (IoT) devices that have no preconfigured authentication credentials. The method makes use of a user-assisted, one-directional, out-of-band (OOB) message between the peer device and authentication server to authenticate the in-band key exchange. The device must have a nonnetwork input or output interface, such as a display, microphone, speaker, or blinking light, that can send or receive dynamically generated messages of tens of bytes in length.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9140"/>
          <seriesInfo name="DOI" value="10.17487/RFC9140"/>
        </reference>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="RFC9393">
          <front>
            <title>Concise Software Identification Tags</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="J. Fitzgerald-McKay" initials="J." surname="Fitzgerald-McKay"/>
            <author fullname="C. Schmidt" initials="C." surname="Schmidt"/>
            <author fullname="D. Waltermire" initials="D." surname="Waltermire"/>
            <date month="June" year="2023"/>
            <abstract>
              <t>ISO/IEC 19770-2:2015 Software Identification (SWID) tags provide an extensible XML-based structure to identify and describe individual software components, patches, and installation bundles. SWID tag representations can be too large for devices with network and storage constraints. This document defines a concise representation of SWID tags: Concise SWID (CoSWID) tags. CoSWID supports a set of semantics and features that are similar to those for SWID tags, as well as new semantics that allow CoSWIDs to describe additional types of information, all in a more memory-efficient format.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9393"/>
          <seriesInfo name="DOI" value="10.17487/RFC9393"/>
        </reference>
        <reference anchor="RFC9733">
          <front>
            <title>BRSKI with Alternative Enrollment (BRSKI-AE)</title>
            <author fullname="D. von Oheimb" initials="D." role="editor" surname="von Oheimb"/>
            <author fullname="S. Fries" initials="S." surname="Fries"/>
            <author fullname="H. Brockhaus" initials="H." surname="Brockhaus"/>
            <date month="March" year="2025"/>
            <abstract>
              <t>This document defines enhancements to the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol, known as BRSKI with Alternative Enrollment (BRSKI-AE). BRSKI-AE extends BRSKI to support certificate enrollment mechanisms instead of the originally specified use of Enrollment over Secure Transport (EST). It supports certificate enrollment protocols such as the Certificate Management Protocol (CMP) that use authenticated self-contained signed objects for certification messages, allowing for flexibility in network device onboarding scenarios. The enhancements address use cases where the existing enrollment mechanism may not be feasible or optimal, providing a framework for integrating suitable alternative enrollment protocols. This document also updates the BRSKI reference architecture to accommodate these alternative methods, ensuring secure and scalable deployment across a range of network environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9733"/>
          <seriesInfo name="DOI" value="10.17487/RFC9733"/>
        </reference>
        <reference anchor="I-D.ietf-anima-brski-cloud">
          <front>
            <title>BRSKI Cloud Registrar</title>
            <author fullname="Owen Friel" initials="O." surname="Friel">
              <organization>Cisco</organization>
            </author>
            <author fullname="Rifaat Shekh-Yusef" initials="R." surname="Shekh-Yusef">
              <organization>Ciena</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="3" month="March" year="2025"/>
            <abstract>
              <t>   Bootstrapping Remote Secure Key Infrastructures (BRSKI) defines how
   to onboard a device securely into an operator-maintained
   infrastructure.  It assumes that there is local network
   infrastructure for the device to discover and help the device.  This
   document extends BRSKI and defines new device behavior for
   deployments where no local infrastructure is available, such as in a
   home or remote office.  This document defines how the device can use
   a well-defined "call-home" mechanism to find the operator-maintained
   infrastructure.

   This document defines how to contact a well-known Cloud Registrar,
   and two ways in which the new device may be redirected towards the
   operator-maintained infrastructure.  The Cloud Registrar enables
   discovery of the operator-maintained infrastructure, and may enable
   establishment of trust with operator-maintained infrastructure that
   does not support BRSKI mechanisms.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-brski-cloud-14"/>
        </reference>
        <reference anchor="I-D.ietf-iotops-7228bis-01">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Mehmet Ersue" initials="M." surname="Ersue">
         </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Carles Gomez" initials="C." surname="Gomez">
              <organization>Universitat Politecnica de Catalunya</organization>
            </author>
            <date day="8" month="January" year="2025"/>
            <abstract>
              <t>   The Internet Protocol Suite is increasingly used on small devices
   with severe constraints on power, memory, and processing resources,
   creating constrained-node networks.  This document provides a number
   of basic terms that have been useful in the standardization work for
   constrained-node networks.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-iotops-7228bis-01"/>
        </reference>
        <reference anchor="I-D.ietf-anima-constrained-voucher">
          <front>
            <title>Constrained Bootstrapping Remote Secure Key Infrastructure (cBRSKI)</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
              <organization>vanderstok consultancy</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <date day="3" month="March" year="2025"/>
            <abstract>
              <t>   This document defines the Constrained Bootstrapping Remote Secure Key
   Infrastructure (cBRSKI) protocol, which provides a solution for
   secure zero-touch onboarding of resource-constrained (IoT) devices
   into the network of a domain owner.  This protocol is designed for
   constrained networks, which may have limited data throughput or may
   experience frequent packet loss. cBRSKI is a variant of the BRSKI
   protocol, which uses an artifact signed by the device manufacturer
   called the "voucher" which enables a new device and the owner's
   network to mutually authenticate.  While the BRSKI voucher data is
   encoded in JSON, cBRSKI uses a compact CBOR-encoded voucher.  The
   BRSKI voucher data definition is extended with new data types that
   allow for smaller voucher sizes.  The Enrollment over Secure
   Transport (EST) protocol, used in BRSKI, is replaced with EST-over-
   CoAPS; and HTTPS used in BRSKI is replaced with DTLS-secured CoAP
   (CoAPS).  This document Updates RFC 8995 and RFC 9148.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-voucher-27"/>
        </reference>
        <reference anchor="I-D.richardson-anima-masa-considerations">
          <front>
            <title>Operational Considerations for Voucher infrastructure for BRSKI MASA</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="22" month="January" year="2025"/>
            <abstract>
              <t>   This document describes a number of operational modes that a BRSKI
   Manufacturer Authorized Signing Authority (MASA) may take on.

   Each mode is defined, and then each mode is given a relevance within
   an over applicability of what kind of organization the MASA is
   deployed into.  This document does not change any protocol
   mechanisms.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-richardson-anima-masa-considerations-09"/>
        </reference>
        <reference anchor="I-D.moskowitz-ecdsa-pki">
          <front>
            <title>Guide for building an ECC pki</title>
            <author fullname="Robert Moskowitz" initials="R." surname="Moskowitz">
              <organization>HTT Consulting</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Liang Xia" initials="L." surname="Xia">
              <organization>Huawei</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="31" month="January" year="2021"/>
            <abstract>
              <t>   This memo provides a guide for building a PKI (Public Key
   Infrastructure) using openSSL.  All certificates in this guide are
   ECDSA, P-256, with SHA256 certificates.  Along with common End Entity
   certificates, this guide provides instructions for creating IEEE
   802.1AR iDevID Secure Device certificates.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-moskowitz-ecdsa-pki-10"/>
        </reference>
        <reference anchor="RFC4949">
          <front>
            <title>Internet Security Glossary, Version 2</title>
            <author fullname="R. Shirey" initials="R." surname="Shirey"/>
            <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="RFC5011">
          <front>
            <title>Automated Updates of DNS Security (DNSSEC) Trust Anchors</title>
            <author fullname="M. StJohns" initials="M." surname="StJohns"/>
            <date month="September" year="2007"/>
            <abstract>
              <t>This document describes a means for automated, authenticated, and authorized updating of DNSSEC "trust anchors". The method provides protection against N-1 key compromises of N keys in the trust point key set. Based on the trust established by the presence of a current anchor, other anchors may be added at the same place in the hierarchy, and, ultimately, supplant the existing anchor(s).</t>
              <t>This mechanism will require changes to resolver management behavior (but not resolver resolution behavior), and the addition of a single flag bit to the DNSKEY record. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="74"/>
          <seriesInfo name="RFC" value="5011"/>
          <seriesInfo name="DOI" value="10.17487/RFC5011"/>
        </reference>
        <reference anchor="RFC8366">
          <front>
            <title>A Voucher Artifact for Bootstrapping Protocols</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>This document defines a strategy to securely assign a pledge to an owner using an artifact signed, directly or indirectly, by the pledge's manufacturer. This artifact is known as a "voucher".</t>
              <t>This document defines an artifact format as a YANG-defined JSON document that has been signed using a Cryptographic Message Syntax (CMS) structure. Other YANG-derived formats are possible. The voucher artifact is normally generated by the pledge's manufacturer (i.e., the Manufacturer Authorized Signing Authority (MASA)).</t>
              <t>This document only defines the voucher artifact, leaving it to other documents to describe specialized protocols for accessing it.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8366"/>
          <seriesInfo name="DOI" value="10.17487/RFC8366"/>
        </reference>
        <reference anchor="RFC8572">
          <front>
            <title>Secure Zero Touch Provisioning (SZTP)</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="I. Farrer" initials="I." surname="Farrer"/>
            <author fullname="M. Abrahamsson" initials="M." surname="Abrahamsson"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>This document presents a technique to securely provision a networking device when it is booting in a factory-default state. Variations in the solution enable it to be used on both public and private networks. The provisioning steps are able to update the boot image, commit an initial configuration, and execute arbitrary scripts to address auxiliary needs. The updated device is subsequently able to establish secure connections with other systems. For instance, a device may establish NETCONF (RFC 6241) and/or RESTCONF (RFC 8040) connections with deployment-specific network management systems.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8572"/>
          <seriesInfo name="DOI" value="10.17487/RFC8572"/>
        </reference>
        <reference anchor="RFC7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
        <reference anchor="RFC8894">
          <front>
            <title>Simple Certificate Enrolment Protocol</title>
            <author fullname="P. Gutmann" initials="P." surname="Gutmann"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document specifies the Simple Certificate Enrolment Protocol (SCEP), a PKI protocol that leverages existing technology by using Cryptographic Message Syntax (CMS, formerly known as PKCS #7) and PKCS #10 over HTTP. SCEP is the evolution of the enrolment protocol sponsored by Cisco Systems, which enjoys wide support in both client and server implementations, as well as being relied upon by numerous other industry standards that work with certificates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8894"/>
          <seriesInfo name="DOI" value="10.17487/RFC8894"/>
        </reference>
        <reference anchor="RFC4210">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate Management Protocol (CMP)</title>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="T. Kause" initials="T." surname="Kause"/>
            <author fullname="T. Mononen" initials="T." surname="Mononen"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This document describes the Internet X.509 Public Key Infrastructure (PKI) Certificate Management Protocol (CMP). Protocol messages are defined for X.509v3 certificate creation and management. CMP provides on-line interactions between PKI components, including an exchange between a Certification Authority (CA) and a client system. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4210"/>
          <seriesInfo name="DOI" value="10.17487/RFC4210"/>
        </reference>
        <reference anchor="_3GPP.51.011" target="http://www.3gpp.org/ftp/Specs/archive/51_series/51.011/51011-4f0.zip">
          <front>
            <title>Specification of the Subscriber Identity Module - Mobile Equipment (SIM-ME) interface</title>
            <author>
              <organization abbrev="3GPP">3rd Generation Partnership Project</organization>
              <address>
                <postal>
                  <country>France</country>
                  <city>Sophia Antipolis Cedex</city>
                </postal>
              </address>
            </author>
            <author fullname="PHAN, Ly Thanh">
              <organization>Gemalto N.V.</organization>
            </author>
            <date day="15" month="June" year="2005"/>
          </front>
        </reference>
        <reference anchor="RFC6024">
          <front>
            <title>Trust Anchor Management Requirements</title>
            <author fullname="R. Reddy" initials="R." surname="Reddy"/>
            <author fullname="C. Wallace" initials="C." surname="Wallace"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>A trust anchor represents an authoritative entity via a public key and associated data. The public key is used to verify digital signatures, and the associated data is used to constrain the types of information for which the trust anchor is authoritative. A relying party uses trust anchors to determine if a digitally signed object is valid by verifying a digital signature using the trust anchor's public key, and by enforcing the constraints expressed in the associated data for the trust anchor. This document describes some of the problems associated with the lack of a standard trust anchor management mechanism and defines requirements for data formats and push-based protocols designed to address these problems. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6024"/>
          <seriesInfo name="DOI" value="10.17487/RFC6024"/>
        </reference>
        <reference anchor="factoringrsa" target="https://eprint.iacr.org/2013/599">
          <front>
            <title>Factoring RSA keys from certified smart cards: Coppersmith in the wild</title>
            <author initials="N. van" surname="Someren" fullname="Nicko van Someren">
              <organization/>
            </author>
            <date year="2013" month="September" day="16"/>
          </front>
        </reference>
        <reference anchor="kskceremony" target="https://www.iana.org/dnssec/dps/zsk-operator/dps-zsk-operator-v2.0.pdf">
          <front>
            <title>DNSSEC Practice Statement for the Root Zone ZSK Operator</title>
            <author>
              <organization>Verisign</organization>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="rootkeyceremony" target="https://cryptography.fandom.com/wiki/Root_Key_Ceremony">
          <front>
            <title>Root Key Ceremony, Cryptography Wiki</title>
            <author>
              <organization>Community</organization>
            </author>
            <date year="2020" month="April" day="04"/>
          </front>
        </reference>
        <reference anchor="keyceremony2" target="http://www.digi-sign.com/compliance/key%20ceremony/index">
          <front>
            <title>SAS 70 Key Ceremony</title>
            <author>
              <organization>Digi-Sign</organization>
            </author>
            <date year="2020" month="April" day="04"/>
          </front>
        </reference>
        <reference anchor="shamir79" target="http://web.mit.edu/6.857/OldStuff/Fall03/ref/Shamir-HowToShareASecret.pdf">
          <front>
            <title>How to share a secret.</title>
            <author initials="A." surname="Shamir" fullname="Adi Shamir">
              <organization/>
            </author>
            <date year="1979"/>
          </front>
        </reference>
        <reference anchor="fidotechnote" target="https://fidoalliance.org/fido-technotes-the-truth-about-attestation/">
          <front>
            <title>FIDO TechNotes: The Truth about Attestation</title>
            <author>
              <organization>FIDO Alliance</organization>
            </author>
            <date year="2018" month="July" day="19"/>
          </front>
        </reference>
        <reference anchor="ntiasbom" target="https://www.ntia.doc.gov/SoftwareTransparency">
          <front>
            <title>NTIA Software Component Transparency</title>
            <author>
              <organization>NTIA</organization>
            </author>
            <date year="2020" month="July" day="01"/>
          </front>
        </reference>
        <reference anchor="cisqsbom" target="https://www.it-cisq.org/software-bill-of-materials/index.htm">
          <front>
            <title>TOOL-TO-TOOL SOFTWARE BILL OF MATERIALS EXCHANGE</title>
            <author>
              <organization>CISQ/Object Management Group</organization>
            </author>
            <date year="2020" month="July" day="01"/>
          </front>
        </reference>
        <reference anchor="ComodoGate" target="https://www.theregister.com/2011/03/28/comodo_gate_hacker_breaks_cover/">
          <front>
            <title>Comodo-gate hacker brags about forged certificate exploit</title>
            <author>
              <organization/>
            </author>
            <date year="2011" month="March" day="28"/>
          </front>
        </reference>
        <reference anchor="openbmc" target="https://www.openbmc.org/">
          <front>
            <title>Defining a Standard Baseboard Management Controller Firmware Stack</title>
            <author>
              <organization>Linux Foundation/OpenBMC Group</organization>
            </author>
            <date year="2020" month="July" day="01"/>
          </front>
        </reference>
        <reference anchor="JTAG" target="https://en.wikipedia.org/wiki/JTAG">
          <front>
            <title>Joint Test Action Group</title>
            <author>
              <organization/>
            </author>
            <date year="2020" month="August" day="26"/>
          </front>
        </reference>
        <reference anchor="BedOfNails" target="https://en.wikipedia.org/wiki/Bed_of_nails_tester">
          <front>
            <title>Bed of nails tester</title>
            <author>
              <organization>Wikipedia</organization>
            </author>
            <date year="2024" month="December" day="30"/>
          </front>
        </reference>
        <reference anchor="leakedmsikey" target="https://www.binarly.io/blog/leaked-msi-source-code-with-intel-oem-keys-how-does-this-affect-industry-wide-software-supply-chain">
          <front>
            <title>Leaked MSI Source Code with Intel OEM Keys: How Does This Affect Industry-wide Software Supply Chain?</title>
            <author>
              <organization>Binarly efiXplorer Team</organization>
            </author>
            <date year="2025" month="May" day="27"/>
          </front>
        </reference>
        <reference anchor="CABFORUM" target="https://cabforum.org/wp-content/uploads/CA-Browser-Forum-BR-1.7.3.pdf">
          <front>
            <title>CA/Browser Forum Baseline Requirements for the Issuance and Management of Publicly-Trusted Certificates, v.1.7.3</title>
            <author>
              <organization>CA/Browser Forum</organization>
            </author>
            <date year="2020" month="October"/>
          </front>
        </reference>
        <reference anchor="PUF" target="https://en.wikipedia.org/wiki/Physical_unclonable_function">
          <front>
            <title>Physically Uncloneable Function</title>
            <author>
              <organization>Wikipedia</organization>
            </author>
            <date year="2023" month="July" day="23"/>
          </front>
        </reference>
        <reference anchor="curl" target="https://curl.se/download.html">
          <front>
            <title>CURL</title>
            <author initials="D." surname="Stenberg" fullname="Daniel Stenberg">
              <organization/>
            </author>
            <date year="2025" month="May" day="28"/>
          </front>
        </reference>
        <reference anchor="I-D.birkholz-suit-coswid-manifest">
          <front>
            <title>A SUIT Manifest Extension for Concise Software Identifiers</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="17" month="July" year="2018"/>
            <abstract>
              <t>   This document defines a resource extension for Concise Software
   Identifiers (CoSWID) that represents a SUIT firmware manifest.  This
   extension combines the information elements of the SUIT information
   model with the semantic expressiveness of Software Identifiers.  In
   consequence, this composite enables the integration of Firmware
   Updates for the Internet of Things (SUIT) in existing work-flows for
   updates of software components in general.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-birkholz-suit-coswid-manifest-00"/>
        </reference>
        <reference anchor="I-D.birkholz-rats-mud">
          <front>
            <title>MUD-Based RATS Resources Discovery</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="22" month="February" year="2025"/>
            <abstract>
              <t>   Manufacturer Usage Description (MUD) files and the MUD URIs that
   point to them are defined in RFC 8520.  This document introduces a
   new type of MUD file to be delivered in conjunction with a MUD file
   signature and/or to be referenced via a MUD URI embedded in other
   documents or messages, such as an IEEE 802.1AR Secure Device
   Identifier (DevID) or a CBOR Web Token (CWT).  These signed documents
   can be presented to other entities, e.g., a network management system
   or network path orchestrator.  If this entity also takes on the role
   of a verifier as defined by the IETF Remote ATtestation procedureS
   (RATS) architecture, this verifier can use the references included in
   the MUD file specified in this document to discover, for example,
   appropriate reference value providers, endorsement documents or
   endorsement distribution APIs, trust anchor stores, remote verifier
   services (sometimes referred to as Attestation Verification
   Services), or transparency logs.  All theses references in the MUD
   file pointing to resources and auxiliary RATS services can satisfy
   general RATS prerequisite by enabling discovery or improve discovery
   resilience of corresponding resources or services.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-birkholz-rats-mud-01"/>
        </reference>
        <reference anchor="RFC8520">
          <front>
            <title>Manufacturer Usage Description Specification</title>
            <author fullname="E. Lear" initials="E." surname="Lear"/>
            <author fullname="R. Droms" initials="R." surname="Droms"/>
            <author fullname="D. Romascanu" initials="D." surname="Romascanu"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>This memo specifies a component-based architecture for Manufacturer Usage Descriptions (MUDs). The goal of MUD is to provide a means for end devices to signal to the network what sort of access and network functionality they require to properly function. The initial focus is on access control. Later work can delve into other aspects.</t>
              <t>This memo specifies two YANG modules, IPv4 and IPv6 DHCP options, a Link Layer Discovery Protocol (LLDP) TLV, a URL, an X.509 certificate extension, and a means to sign and verify the descriptions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8520"/>
          <seriesInfo name="DOI" value="10.17487/RFC8520"/>
        </reference>
        <reference anchor="RFC7168">
          <front>
            <title>The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCP-TEA)</title>
            <author fullname="I. Nazar" initials="I." surname="Nazar"/>
            <date month="April" year="2014"/>
            <abstract>
              <t>The Hyper Text Coffee Pot Control Protocol (HTCPCP) specification does not allow for the brewing of tea, in all its variety and complexity. This paper outlines an extension to HTCPCP to allow for pots to provide networked tea-brewing facilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7168"/>
          <seriesInfo name="DOI" value="10.17487/RFC7168"/>
        </reference>
        <reference anchor="I-D.ietf-rats-endorsements">
          <front>
            <title>RATS Endorsements</title>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Armidale Consulting</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="3" month="March" year="2025"/>
            <abstract>
              <t>   In the IETF Remote Attestation Procedures (RATS) architecture, a
   Verifier accepts Evidence and, using Appraisal Policy typically with
   additional input from Endorsements and Reference Values, generates
   Attestation Results in formats that are useful for Relying Parties.
   This document illustrates the purpose and role of Endorsements and
   discusses some considerations in the choice of message format for
   Endorsements in the scope of the RATS architecture.

   This document does not aim to define a conceptual message format for
   Endorsements and Reference Values.  Instead, it extends RFC9334 to
   provide further details on Reference Values and Endorsements, as
   these topics were outside the scope of the RATS charter when RFC9334
   was developed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-endorsements-06"/>
        </reference>
        <reference anchor="I-D.ietf-netconf-trust-anchors">
          <front>
            <title>A YANG Data Model for a Truststore</title>
            <author fullname="Kent Watsen" initials="K." surname="Watsen">
              <organization>Watsen Networks</organization>
            </author>
            <date day="16" month="March" year="2024"/>
            <abstract>
              <t>   This document presents a YANG module for configuring bags of
   certificates and bags of public keys that can be referenced by other
   data models for trust.  Notifications are sent when certificates are
   about to expire.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netconf-trust-anchors-28"/>
        </reference>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <author fullname="S. Crocker" initials="S." surname="Crocker"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts. However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult. This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities. It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications. 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="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="RFC9397">
          <front>
            <title>Trusted Execution Environment Provisioning (TEEP) Architecture</title>
            <author fullname="M. Pei" initials="M." surname="Pei"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="D. Wheeler" initials="D." surname="Wheeler"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>A Trusted Execution Environment (TEE) is an environment that enforces the following: any code within the environment cannot be tampered with, and any data used by such code cannot be read or tampered with by any code outside the environment. This architecture document discusses the motivation for designing and standardizing a protocol for managing the lifecycle of Trusted Applications running inside such a TEE.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9397"/>
          <seriesInfo name="DOI" value="10.17487/RFC9397"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA6196XPbVpbvd1TN/4By6lWkboJanMSx6k1lZEVO1Ilij6VM
euaLCyRBEi0SYGORzDh+f/s7v7PcBaTkdL2X6k5EErjLueeefcmyLLk/S58n
SVd2q+IsPU9v8w91Va+3aT1P603R5F1ZV/kqbYtp35TdNp3WVVvO9Ic2nddN
us6rfp5Pu74pmrSs2i5frYpZelds2zSvZult07ddel5Nl3XTJvlk0hQ0a/QW
nk1m9bTK17SMWZPPu6xsunnWnXbNIut0VVn4UpbLiNnxyyR5WJylt6e3735I
3xVtkTfTZfpDU/eb5O7hLL2quqKpii77HgMn07w7o3XO66TtmiJf0wPvbl8n
Sd53NN5ZkqWyjOtyusyLVfoO/21mbV0laVo3NNMNbatY0WLSm3rePeRNkf5W
N3ct/V6s83JFu5s2fy2Lbv4frT06nuZJUtXNmiB3X5zRo+9eX3x9+u0x/iyL
ovj2+DQ7OX+Hj2na5c2ioGU+W3bd5uzoiIBazbCIMR4d0yqO5mU1a7tZ6347
ohHGNEJ2enz8crzs1qtnMpYc7rOry8vLVJ9Jb3CgRfp9cV9Oi/RqVlRdOS+L
Rl4xUKT8D+9ZXr/RueSxWd7RwJguSQDQeHPfvnz59Vn66t3NT1fyxcvjk5dn
aduXXYYTKruCT1J/PPnq+Cyt6nqin58//+osJTxr9z38/OXzM8LF9qGc6Tcv
ntM3ebutpllRNfVqRd9fZd+PcQqEKuU6zyZNe1dm01Xdz+hl/Cd8pqy7etNm
L05Pv52UhFUnZ6n+vTsSbkHX5GVVzLL7up8ui+Ys3fOlvtk4DNL313krg/ir
hBux86W+v67bu/qh7H7PiumMHtrclQrjr15+9dJw6fjkxCD//Jtv7M+vX5zq
ny+Onx/bt9++JODeXFy+1WFOTwj4F9f4+PyHt2/HX5+M/XDfHJ9+dZbQ37h6
dVNWi6bNzyLcem2/pO9uzuXqz5t6nU6LhvFqlrbrvOnSKcBAM9UbIi7tuuyW
dBPTblmkD+VKsSrC/ZaQv9jQyN24zKcNY/7p8cnzo69fvtyHq3J1n31PcKar
+7dx+oquftsVZfUsfuK/+yo7r9KLZV4tBj9dLIsqu677FH8Mf/y5zN5inxfL
uh/89Es+K/P0x6Ki3+0muR9v8+ofefozzVYMXyund3V6z9RkXTRFFV+uk+dE
4bKTb3AAd+0dQbRY19U2hv/3v9zcXF6kbxs6B1xouqddsaZLzRQa8H1X1136
P3VVpP9z81P6hml73TwC8YeHBwJ3lTO4Z1VL5P9otmmPfm/vslpfxRdZ+EV2
fzo+Hm9m88dpyH8VTdmWi+EOX2BvDS2QECfen9sgL/+nYpte6O+j9KLZbrp6
0eSb5Tb9rbwrFa47u5kGD47nRMDq9Xhar48e6J0jDPyeBn5vA+so8fJ1/Rf1
et1XxAf1IdvB6XF2/BX9j8/I7+F0sImb85v0xXG0jX1r1gOYlYsyA7R4sfT/
zYrOZFoc0Qz/6/TYJjkiPlB8eGrV32OgGwf2vatul/m6bF68jNHqx/oh7Wr8
SLwihxTQFN34iXt3PivTGx4qPOKTly9e7mVrD8VkTERgXMz6o2/GRKuO3qxm
N10/nx+9Jini+PlRU8yPZMCMFnNb32Ap5zeyEMY10KVyVhN/WFb07z38EziA
R2hEBqCyz1md2UttRlck6xraUpZP6p4YVEffdkyFj2I2+vrq+zfpLb34C14k
sYMu1y3eTPnN9Ny/+fhF4EHOdT2D2/BtdvwiO3mJjRFTzttJvX5kU8ASPDIm
0Wm8qO+PTBy5bfKq3dAf1XQbr/6X26tzL7UQPm+IJBCZ2H1j37Lxdrxa4NAL
YpZY7bRs//mZ1RLrx1N8Aq2uIpuUq1VWz4krkpxW5qtWUBoiTLz42zdvfs5u
32T4b3rz5vXtb+fvLtNXVz//nL55nV6f316+uzr/+Sa9/PvFj+e//HD5+EYu
rm7+8+jN5B8kVKTXROgWQixZZnx8gwSuelb/kD+KZdgiYVJTLEriOQ1fXDrR
kyPC5NNvcYfp/fcLGuD9Mp/eFc17Eobzu/b9tL4vmgGiyWwZnk7l6XTS5ItW
8YwI+4L4qnLYKZ4qPmxWddkN8OkkO36enX6LDRCpribr6ROr1yf4gOLlfF+Q
xAnOlzspMH2Vt8Wkxl8BEC/qqoMARut9XTZrRjR6Y3r3+HH8XFb9h/R13dOw
fOWIP1Wvri8+dyB/uz3/IaZYf6tLYHMBjWOKocIhdiWLagwmsCmIcfOWmSVg
1N05v81OmQe/KmZv5r+QlN8+Asb9g9Jr7+v5+wovvgeFMAnBVk4PQOviB9Lw
gX0A+80mGKzzq+zkNHt+jHWuCLGK2botiV08ceCTssqb1XZc1keTVb04ktcy
ei9r676ZFiSSzoqMpM9lRqAt6KYW6wwSXrasH7JZzcSTBOZ8PqfbRM/MSN1r
tvQGvebueNtvNqttRnKwSWK27595wvT65oroEiYkBJpBHiSKCs1tlb65vAbP
JFoLfvQ9zUhEt2zTc56RHgpm9LTthmeEgFdW3z0KyVey/ZSQ++90eaCM3pJO
GEP16+z46+yUpZSL81ev37z79foRiE7zCd3Lfi3nvoE439GdOOpp7Jx0tYvz
7FVTP7Skvr7Gc9mrd9nJ+MX4+dNy08X5kb6W8msDQjH4la/livQQUob/2ZcN
X8vWSYJXbduD7bByHtxbQr63/WRVTumcWGenU7nw1KUdpfdjXmuIc29I7p/Q
xLgjgM/bX1//S9fi7XLb0vCr931FGlmVT1bF+zn97dmn7dKepMP6lZ8t8HD6
Onr4X7krz0FHTp8z5+qb1WMnSj+N2+JoVj9UOMM9ivXFr+9+/rwuckOIQJBa
PNuHW0Sd74uqZ76yAME6S9n0QR/FoMCf/gM2EcAOT9H96Cf6w9G/ZjJJkiTL
MuIj0FenXZLwdSIhomdE2DT1PV0lYjRpF9iD1gVtbtamfUuIMdlGFpwWD7Ql
IQ9RXODVjA0LbQLpUUwNpMTdg0k5u9CGkS3t2DykKxvrUgqSAoQEdA912hSr
HNgI5ea+7EqIXUuIpuGrMmYwSQIq4O1RRLxqW1Y661lZ9VugTyMegcelW6Jz
JpGdalmsZoON0ByyQVreIsd06axsCT9b+m48BC3IZUoSZ1rc56seo2CuWUmU
rMHva5IrCV3aNd22CTF5UqxInEj/QftM6H7f09u0CyAWXlxDec7FJtd2/H5e
VWyFI9yf0R/0cF5i7/QQqy5T5q9jxYB1OZutiiT5ApS2qWc9X6UkIcW4rEjE
zltAqerXuOJ0woQZXT2tVzghggLrBKRXMIUA4kDFp8doaWXjbYaEKz0PFJ/X
x49qwPj0id7IuzQ+rx0M4wPM9Qj3nuA4+d6BXteRrggy/Hc0tzuHnmghSMo0
J7Sm0WmHRFXWAn2cxYIXbrCutulDvuXXFVUJTqueL8tsxkjUFJtVPsVbRG9n
xaroWGgy/E6gLzh8YBjAvkIwCJB+iNxpS/p1Idi2Zoo9M7uJguNhWU6XuJot
L3Y8xLvB2PTi25+u0rxt62nJd4t/a3saJI+npmF0Slr8NSDgsYAGrUnQINmV
fn/MEFyycRG3FqsqCMz+G96RnYHuCHZEnNjHj4FZlOBzRYo3aQexzRIm6YBH
pQdX9PPV94c8lU20Jfm5ZUoyNYWHKEge3mTBwDX23cCGW6UkixbCMIlKliRn
TEWuxdIURLS5AOX1KISM5Ebe+IED/Bys83CkB3ZAt6cW4mPseV3jxEYpDGRs
e+dVTtn0PoUx65AATZeKANUUBYFNyQ2fzy2UDzmWtux6tdI/8LcDqHewyvUb
gzoT/RYCMyj5dk3UnnYtqv9MNX86wHMmJPRU8SFfb4j/loxw6c3VNRv36NQC
A+KnT2dp2dFFe8BrmBhM5Z74FJ043jE4TOt+ZShdN7I7Nilu/cKwwdvhSnNQ
KsYLhlhm1KGY5/0KFKltH4gUCkjmhGZKR/hA6CQWmOLxHRNIrzrscd43TImZ
ZlSMseb82DqucoDDLqf9ikVKtnhulrRwOjKQLixhmRPVhBUO79KdFm7vERVM
xSiLsFrBDL5OFbCLgPTxY2jxAPmsaSF3tKNVXq5NQZwUoq35RdGMRJCYkGNZ
Ak4g/yYvG7kBTBg7nR7yjnHOFQSjdJJ3U7rCbgiRKg1DwTAI35TIDbgzX3Qa
DS8QDuRNWXQM+k3fbAh96bXX0UYfeZ/WQvSmnJNSk/xF7iddorxjmg92aDoH
ITekrPSAkI5Qg6CW7fgePn06HGGYPL39+Sa9AYdtQqF3pCSR71BFSNExNacT
I8T78fb27Q2uZVUw3xzZgpiqwwhPRyNekVQdAgJkJ2DRH3C0MRqTfEk3fllu
hO1AdlBKFyGHBwSviDaGGbAocXswuW9I7icNkjCSsSVjJ8ynT0Ka6KuWLqMw
C6azGdwunz4JPswGk4YGhlJJvh0EIJ9eYi/QJ4hj0z7E/oUFXVZ00+uKV3TQ
FoBLtuPQoRMQfGkLLzEAY3H/42NXhlTzRWRNktfvPE90+npaZ1jI5flteoEL
gePTK0/H62icosnR3IwUTV+xgYOxSMHw8eN38MBMyuZuWa9+FwwSxxNE63JO
exXA8nxTmY/v36ogGb2EUSutCmI+zZ0JsNv04L7Md8Zm2Kz7GcajfRYkdc1m
ntMLZ5P7/x27dk6PBXo/EYGtPN7rJluYAEgSJwVw2hE94otTzWC5L8HSSMKB
ZEFHSHM4tflVuWIKcW3GuPTg5tWb60N/E0gLaIEm7ZTGEEGNDlZgQggPFMNy
YSs8wqspb/3jRzNm6jNigrv+IfXPMMuFfPXxo9kSgZXJVSDOiiySNmV7JyI/
UfiibdP7fkX3J5+QDsIsjiXj0AYwAiciBKbLSs/nDQNkVtAu11CVceILYqhO
VqQVER2sMDaNVeS0ecEJMEHFDjDiddkynPN+RhO0WxIL1q2iXNnxHSewC0kT
xMC37rBAY/m06SH9/QE04q6s2B5k15HXrrcIp//i5JtvhbzQ0pc98ZK6b40r
Hw6ARmsgQkGQUGAx1bTLxvJMCKl9gOKjYU8zv4zVCfhbSH86DH7plsQFulb5
urtHEMAmBW2R8EYwroNeB72FyA4dRM1cZ+8hDeYmBOEjkRli/WlXIxxIPSos
rCK5YsQ/Qaylm8IfgVeOg7BgFSyxG4jWnZjsnljIwW1zXk0PhwsiYZVEgznM
nnzJtxsYOEycMGlHeKtQbhJYQmDzsLJPGgqAI7QCVxAGw3cz96vCHSY8KIEz
SmFV1mBtFzQD/KcUPCpZ4kp+W5arQuScdblYdnyCkB9rYBMYAOmHNChWDqVW
VNRApaW9LoQ6s8RSgjVFGioJe2zKAUbk1R0rMDtQNoUNjpn1puM5amanIyFK
LPjyumpZrfCJg3XdgvrRFcmrQ5UqW+HDDyx1QjIVGYcUt+04uWE6R1d+TpeL
sZEFNXeHTGDum/uyeJDrwxxolV7dvHl5fHyCZ4G/jmTS9ydf0Q8Ezi++SG+Z
5NSrerEd2gdK3WTqAj5SmGju3BPKwgOAsOAH5ZUWostoQrPfioSJPl84W0Qr
wgoc7iuAvviwQYwKX0hVZun6FfyNXyh2ocOqngGSTcsLo3sY/qwm5bhHGJEx
VMOAGFfVokHwr9Lb85FHBOylg4ZWzbEb1kdZkHr5/OWLT5++bNNnZpU8J1ql
loxnuyYW+CnYeOXtFsvthoQl1nOxp3ZkXGorBpx+TbJ6+Tv9DDQiwVKuYLYo
wFPotbMk1BfBNp2+4JRHWoR7HjKEVwk5OqbJien2LPP8P4xLF5qFN+Ezo3RV
3pEOmKzqqVjIOlGhVXfi9yd9ueqi1aiViY2pmVPUsRaWKXOemxYzEP0IqxdN
TutTlaCqq+y+BuFYFWyhAGOebJOUxdm+g09vAkA7q5a7EHCx0OniP58+DRbU
wRVJxKP5E0sKnjX7kEAmhYBlcAXdbAgmgTjfsnDDprN6Rd/zgsy0ApPrpP7A
UphQkY03Pu8MmiQq3v1/WrnYynInNLqJlOMJ1QLRvKd1MuXMieo3oTkI7Ba0
fEO3NRVvSY5LQ/eCBY1S+Iebog13SCSWpB1YB3QlJOXhLMU19fGj94CxdCZT
Hg1QfFrHWK7AeBTVS7MpziRyyKIN6A0an2QbaNRbIjOkUfBNndDaIVCIBiiW
Z5FvnQhq18D2oaaLfEVaP5GXtUhJMNyx+kZbo5XQqkmuKtUeytowxEJa+Dpv
tpHNSDc4YG2wzs7Sv+TNpKRDbsrV9i/ugDDSfbEgkYGOjQSA/J4u7qwekWK9
ntS10KVp3pAoItICjFYEiBrMYJuyxi3j64j087zpIVEetPkqvxOZLN/UMyLv
uZrB9gzSFHOVp9WqLzai3Kz1xaowhlRWdMnvTSxaV4g6UUwhykEcUuz0OAbY
pVekIyMc7gbMzkg1i+Xb9Br2B7NSASdT9tkFxgAzpdDKTL7Dc1W+IvRsCTQV
IzKx6YMb0Sg1SI9Q8XDACZjDiVn3b5nYWZQxA0cwe8vSsspApLu1LEO1/Zzu
aUlD0BbF7kHLIT5J+MmKLsfiFB/o2RYHnhNAFum6X3UlLGIXb38lBrMhrk3E
RIQzDaWlp1Q/EPuyUmsGG2mKIE/Evlekydf9YinUu4uWJuLdrNis6q1ohkDt
VZGpESW9qm8z8ATW7sdqQWhFZnEDyShsitI40Eti/PSxNQSsnChgVysy7k7N
xT/zEG1NMJogVMskILZ8vsvbDXFiwr23V/xzq9bVwKSK5354+ys0l/MVZLYU
kGDoN06rOmAfSEPLXOUbhGuOII3e4a9Dt+L8s2EJB6+uL5wJtoGxpTWic51x
vAAMB7T65+n1xa8jFnUJhcJfTo5xzqyQxQY6QkmNoSAqEljl81SCHO4QiryS
ayr0vuSITwYA1kXqZWsfnGkc9FywjkhPPmXQqkmDjdW0FhKQ1nQ1m+0ovTp6
kyLglBVM9saRtjwKDieHrT/Q/9TurwuC9NeqYK66V10TWS4bnEprhkXWVYea
pC5cBN1zITN8ZyJHzVGIIzuqKlQXgel63XdGO5x7b+ommtKsrHd4KZPUoJGI
/zie2IHE9CAcnyUpU7SNsAsQIRfmen64dxX4IsO9BMNlboYlYBamkczfcRQY
hwQiyBEIA8MtBKVidS2Qp00MZwOck3JHEIOJN2zT28vLUfoO/2Lh+fxatVI2
7eu7X43S88CUpnL5YCMmQ5brDakzudB0w6tIhMP4Kp4zHRrD9q2+BhMwA2TF
1o06zMqCpaVy54XiA4LvMRkNJ8emC2M1U35k3DS7g62N0AaBm6bFOoT20mTt
zmAkTIiPqVOj9l1BamK8XoUQFPBoIF2zLceuFh9u7JTy68hu317DoN6vhluX
4VlT/BPjmfkR4zmIC9eakrpTrwMBUMdpitY5nUwR8CsoQSaY5DHO0SpPxqf4
HX+ejo/TdlNMRRIt2Vp/qwY9sWOwlcThCm6kNzHTanvwJ3Fes8wEPjarVRMF
5ydGCLYtxhL1OLDdSk0vWSG8JmMMARpPilX9AML/vfh0haoF5MIoBe0SpISv
vnPkCR9j2xKJ8kRFRPEUYkdnNQrAFKLXhqlXw5zWSF8GX+aKo6+8E0Z5Lpw2
LDQ8C8XhZ/zwQCgeqTTl1sD0mx0tCE9rvYQdKj7CZng4WQ0MjaYjOYbasV2f
XW6ypV+ZkyLizWm1zidGgnIrVM4ZuZ33q+1ADmFL2aZz4mlLU+Gcz0vddhCZ
xczo1EqskcRhEYwmhTmKmEOcqfuIf2aSa4wZgWRiZbDFqecxolcAkzcuE5e5
V5dqNFYuk2VEYhfC1XgNIvtHdP0AknuJvJTDdI8BQUUEEgqIxhISHnA87/m1
iKebspgWobdAyOmqRCQGSI5eZ3MHFx+IF/KwhXd+kGCaXA6M+Y+s3owyeWxX
MRpuZjJxgBnzJbl+dySGP4QppxrqFQAqMldfAKPVVzOKzQb+fEGkSa2D9L8q
8nu7nvuXP07eBJ7NJ1fWxtEezrOrISg6uxJUH0vAAjH+xdIyaN78aSh4mOkg
oJIItg3131FAvPmei3UQtBS5I3ngWW/UFAqVRb3rSogZUz2lkqsY2NvKyH7J
gOS7Q/otkH0DDBVyGkhBqgkQViDEUVVNUtrqTu5M209a+PpAqb1w4QQBIRlD
tpT3xFVyNnTv51sz6OEV2C5bTVv2zmDFhryCJ/w6a9UIIjVpxsHCu/W6YiOr
APzrKUmL7GOrVKLKAnUCDoo15B/EL/IEAeoyLXX7UfuGSO44NcTdiF26Mttv
vsVl0o/Tuqd5tof08hwIqreAj0KuAS35xlvXDEeJ/Kt9NJiV/Usd6Y9Fk4kb
l6U9OcFyIGSp0VxQkW1yoUXF/KVAhtoETKItLF/zDHxDW6HbjnoKxO2Qg/kY
hTds5mcnC7ZpF1chGS58jHAvC+dgkYTez4D94VPE0wqRDcVrw8IBXD1rMfLD
M8CY2avgEZ6ZxqnlrQiZc1A5icAwSy8GRVjaf9IWNM+UNUODTXg7bWts+H8o
aCzwZdA5IWN5QN2BkMEuJMyvdQcsAr7KLxtWsiuIR/yuztkUQH9BgHn5Aczy
IbrgSwleQYzVSujV2p2jE1gC6suyyjoHM4yOIfkivd1uxCkfJ80m0UfvTiL0
nCNmHmegQg0HHXGgAMNVIlIVWVgJoN/LLrTymRAkYtVMMdRpbhZQhsu8jcMw
6Kg4wkKuF/KVZBXq4XNefKLu4tpabfmEWiGk3oX/9qerv8dxXHCpKo2Ea51o
++VuOMLB5aUGD9hYYTgZCCvBhYmKi9OCX8dpJN5PVnMqyMibskBN02f+0We7
+rDXhGFXgQjNnNVEAZapxHbQEsVki5NMA+tb15QFbJ3MipytdxzYxqo69OOY
MQg/MknbypbBEWl9Z14KsTAJGHEmew4rD+NlZHYJetbVuYCBR8N4RCDmkMTZ
UJ9pi9U80/MPD1QYvPtVpnc+rBrOQtmUz9UjPKYL2TfiOleyyq8Yd8zdtEXT
cLRlp5E4+ghOh2UlIwcWogu9l1RcugrwmmMUxkMCEPhZ0/QbCZO9mjvHBkSJ
ji3Yxbrs16TTqCtBVMwMyt0+j8ihSORONfVXFIEABBC2txh3YaBKJFSenn79
TTahTV9efC9ZtSMXmvX8lNhzJ7Si3eRTU/7nxEbrB7Y0QjSYyrVHYhAjS+AT
8x5acebvxMhKTO7A8BdYBqN43HFyiQgJE7ojTATNe3y2QQgqbXeSS3gTpg/J
Fx/B4HFV9oFeLCIbffHz+ZDf0D1PgvtCibjyVUSU7B1edzErNgVW3m/gPJXb
iEsvQwm09M6JrmgGGRUbWSlBHjh8ozRZJ/gdTcdRJhHsJCiPp5aZeUX+Naya
pjkZp4FRXbbScFwBaaJMnetGPcv7iITELBczkd1nmrFdq97RfdmGUQT67ig9
8CDyCwr8I4ehnTiOREgluMx8U87tvfcQiLY6KZuQYVHCpBKi5ZdtOK3QCkGm
YcCEv3wEtNNdoGkUsFry4/swdX632czbGBT9dSPim8NeFKQDYwav1eDHLoB+
IX4WXbE5o2A0imZn+OhtEHAOR6YdPX9kR8NTt50gg9h53PxuWO4WuRFewIp4
CETXcRoHaJYm94nII7nnYu2y3ccTOyruXnNyEty1ErJbVv8w0yiRDnowg5dt
sU0bpNfzD2yNqESCuROzsRJtC62Fx4sop9DH4SJiiVhhQntckRxNQPxqz10a
YCSsTwSysnVpBu6J3aDyRV20npoceBQ8dDFTwfIIkyTixig9HzP8IfWE/aAW
Bw6iThIOkcozPeQAIsTO26F3RfmHaarijJQ4OpV0Nc7FztGZyG1YQOfrR1Bs
iI1iyhCxKPJXRDfVqTnxDypYeTDDi/1L7fcHvCk02WH37ldFKQpfXu2uq28L
ZyImiQN7htonQjzHDc0jKDF1Z6V19Mgm2UIByaBuSwmtMeufhUyxiZLDDeG4
o/UNc5fgXyRBZeu46WuDffTcSAdVBTifQ1t3xFsISMVSHSe0I6pbQthkwB0Z
sQt5LC7L7pvtnl37W79n27IPcUuG4Qgi4JBoqZYcjh1s8LMln8AszWbBmTf2
T/MNa810KLyewADF9swAUuo6lvW6AfiEDP6hkcPANoJYt4Ami4IyncUTYcn5
ir6ewftGKr/GLHJK6ln68WOYX4sYli++QLpz22U3bIR65Y1QofKmo/vcmjCB
ZL9VzYV8aULAUJp/xPQlqq2hihPWnY+D9RPbLbvW+VyeME5GZApOOyZL0OE1
ZWCYNzTpG7A2yIlzdoKWgcNGtIjAhjorkbkCV7ojlo8sRORmdpbgioM1TgoN
m585mqIHbLmtnXf82CV7558YCS8kuDgRKLAg7NscOF49Yb4oovcucx0yUFgr
hcHzATBIVAKbkNRO+gZbnzj+zXlxVHPPIdczSZ4g2gMsT/fLzPskPegrHuSQ
dc7j9EA+jZNzR37xjcBVTsObjOBRQpITdI831eA+lZ1pom1K2k3H5lsAnctZ
Bao2PK93ckPV4ajcXYI1OXZNzOjj5Mf6AZRitF8c2MPhefGycI3nCZAZcoKt
jXP4WAqAUBGIE/N0ka/XxLRyCJ5cuEPC57B9iB5LWZNw3TyMmXOCXQoERSUG
wkZxcrvI+V8l3eTJ275zf50HPzRaHSDubBAyciiR4pYlZihsdyC646GaxxiO
3BpcpdDQLXHIU++d5Cceo1tgkUxowiFiE8AjhMh5pRqxugJ7vVwuYYUSd21C
7ecWQjBtnlhHCEm2Zwm5CJ1y4SN2FK0xPINH+JBLojjQpCI4+gHZw5EhGmk3
NYl2RTbpxZrRcGQJO4AkGVHzFw/UfK4nauLGzqoDF17AuMNRQYPFBGm5fo8M
JdeVo7UMQyxp2QWEmIVmPzdxppoIc4OZjoYIa1Z2npWdB52X//Ot+h/NlLMu
8tavx3nmx5Ykw8XXOEGGQ/xaCW4eIX6J93k6PgET5vDqJ5x8+f5rafKgpbbj
cxCV8Wf8hlK0wuJF1ALGQ/mZTFpcsHvF+wpdyAjnjUSZNSp7cZ6R5VRMIRej
qEDrbLbKguC3dJ5KtS7xpJ3ZXzG9WMT8+BLYI2euoHErkogCtfg4CSw2ETWF
MYCQnXPIChJbVm2hCaj6gwLz0u0/SBQTmip1KNLfiglnKTsruJiO92QEQoYV
ckaYqXl5oTmZeeRDMcFN8XnI4UgeQi47KrYca6BZOpFSG2o8ws23X3ai/JiX
XtW3LqrRy7lzpAZr4mOUz0XDEldal5jdU3G6lGbL47CZjSaqtPXex2PlInQN
+b1ZLMwHokZIbFRCFIBFyQad7ZRUMLzNofWzs4F/yyVROYxSGFk87kExXoxH
6XX9O4JSR+kPdb1A1AyuE/3nJp/nTTlCwc2mBvoeOsffDlGJR9QBbDw3wCj9
ddJXXX+4K6ZigzII8lvrOxebMyyi8vGj1XrRNCu+BZw9iLgzxI8LsmrtPdSv
e1K6p+ck3BJ8D5JL1Ur8zVVYcqOyt2VK45PKJFWOwVBYfL/h6DIp5em/cyze
h3wFEXYw9XuVfJAta8nHfguIAmnhKOpXctdE7gTtb+oPnN+IYC3W+p6n2yLH
1XASPFRd0bSruq+mhSaMERvkJ41JeO3GyZD0VSg/cjakOLbEO6+0lPkRA6vf
iIeOVD0e23SboeDub3p4Ok+yMuairIV5rNfcsH2WOBceCF+sB6wTeV2kpcV1
aA6xtypayVoJBts4hqu4ZpsRCh868HxMm2cjnDGqFUI5Yt8bpa2mQOheUuTJ
6aBLEr5Rs3SWFYtFIGXM2R6ukdp4kxVsKZxgAsaGdttwTSt1jbNYi2IFbrPO
7GjbPdRAI05SY9GIgy30ONnEz0ZwMQ81hRtq9IjAzh673KsgCj8VYiT4TEp/
7NhGQs10MCRSzOrVzBDMaXzz8oMzw+zJLzZTTKj6yLsc1TlRz2tZuXhcA/if
2l4kmelGkSvgE7ciMlBPOFx1L5W1lTIvFuva0QUK5qYRP75S5HUhYnxaYHi4
Ky7peaOFK5neMKasyuqu9QnJ3g+rFqHdWgDLImCk5mxBNYcla8y1jyU3rup4
yM465HUX5RzYUogCEFU2E6RRJuhXAqKC48PKdp8OxfOBvxKf6CycfKgcOhsv
sSVfl2EUnqwow9ic7I19tCLSoAwDXQVL3zEj7LDgQbw99UdpaNHSPRVJqRYi
A8fIYSIpkHo2diSmZrqzYjxXa/Y0qhNmM4klcIksyhVJsAjaknoRuy+xlCGF
dDquHsQ2kEozOYNK5EFcHVinxGeNgswij6GpL88zsxwP2UPotM7F36Ohn3j7
IBLCmXpu7kr+HfUipK6PJTdJ1Cb/mJ3g9TNWrvZ6wRGOFz6KBaq1lINvwFxh
iCyCpJEi0J81HonzbfnW79R4cVjxD6ZkgkbKU56hlNmzlERujrD5+BGfOVhV
CNazLNvQ4MWMjofw4BktwOLNRGTdBv4SoQ1vKg7vEZVgpnEgl74OhaMUUhHj
5cuvMZ98+PrFqVWkCOtl2FS+EhajTO1nQpFEkiqiLGkrr2EhJ8MMu8hZB4QP
S27RYw7I7hYCfmGYZVhjpPRp02oWGzjY5Npx4mVWVvHs5nTek3oAlJiIPajL
Q3napF7h+aEfkMtvEVAkrR6lhcYE7H0FxiWGWKRM8erMeKeQZ5e1ZQlhCTKW
suLr85tzzSKzWnA+sMbSilzKlSUZsq+DbxAWJyWn6DmMvlMJIEKlwvENjg9f
DVAINcw9CjE+KQZ5KwG9jyTijE/ESt753YeYReAVnXrXI+PSGHKfRx9VHgNT
8EipYXjjPSEzlj83UDNlexLfBGg2hAUaH7c3yMrXmWHwasxVmN9VRGFEkaTr
qpQNRjHeuPZ5UhYaJ65wDtpEkS8tU8GmccutH+5TborGrv9rWKgvc6Ga6HQ5
RJBREfrGpintomgSHkgZOyrBsgSm9CuEf9RnNrlpnxqAX+o4D9ZKmY9M97XK
g3qDozEiFiF+SMlUdSG/Jt7vem3Ccj9Gp+IAwLjKGd2pYTkgX9HCgqP3lcRL
HdN9pOZS4mcwciYHY0TJZVogMc2l7IZVLEQXf3dzPpJIJfrPDAFLikmHblyJ
rSpaGk8ujcoBNsPosVJweRT2F4gtLvC+g02YRaqtE8uDV5x7XkxmrriRsL5O
bSJWucpialn/8A6NaV3jsjNCuKpZQcoFn4Oqri7Nwuq3OAebm9sVIJHAY6KB
1/sL6Gnhn1BcAjmMq+P5sgdhWbNIxNpfZHGP8ioV2ZgHebLXc3qzJc6LrYkF
mv3lIcOIpfgwxiiTFcgASsCtSJVPvR7KAAHXTw8UmkQCZgstsAanj+MiGp1m
N9ucgpxLdY8TgMrCQnrlrv04DXdj6eh+VxbxR4sNO40IQ9rXFMR+gepEO2Oj
j0YND9w0KGrjAYPmJ3ymQciZFBIIqtZ4HNtfcmtYn4sDNwyZlL25imxYUzD/
8cnLPz9/kjosD/TLWcGxnHsMTK9qWEEdKZEiTmExACFsZv1hG94E77ANz5Ql
Gd2pBvFig5u3lKwVZ/FK4rqP8YbAjrhFQBLAKoykNVixK9fqCDgBagM7KBFK
F7DZWmy5cyChEDYUIs1u5LBGZZxIA+ewe9xT9FGB04WzixOvCZtuZYFiQJ7L
i6vLG15mC0lDD/M2tOYIw14VCy16EfRwelgKETDMYP1TfepikaMTSizQYAg0
plxfaEMRUdEudntERZRNJ1Ij/09xIYWPX2gNBiHFqP0dl+CVYj+psBFCENFm
LGeG7bO5J8+Mowir1DIVoUU/pnxDKU7VrYhtBgQJ1GUqTTlaqVIwCisWmAig
WZWR0U0ir4LAfSlpxaZZVSr3kPzQ6HbGEZ8GNanyGOB0dAFGolPKU0Fpw/RG
VIfknRQLZO0CjJqkFFrVYZBN2BQEH639H3LVOASSAyofX1PfuUxcW5gpL+zF
CosuAuGYT3ueygRgwFUl4pHptA0TTqk2mKCAiGd8WlykLZztkDM5uPRnnEo8
CLEMMMOHagbZYN7JbPX6Wm8yCRMRnB/sLYmYLOhcczJxenD79voQsrbVZtBs
3oObS63ngUuhKiGuNwlzhJZItOpdkToraKB2HXnajhT1KOV1CcLh8Ps2Ekhk
ifE1CoiqVM8Qy9BuTeNHelbtyP4+1BAH00jqX5vUcaHNoIhAHBTDNyIgtVbm
he9XRrJpk3hHMvuGUZNAKq5o3ZMz0jutZuwjlV0+fpHf441P3t0u70ZWO7u5
7VNX0ecUc4S4WpgZFGIGkgPPOQNpWFXYpxsEuLPXh+qNGRLXIpTNr0kc3lUU
MGJTo8gCMbGcm8I85FtNzNSvphJ7qHLMpNiCIWjtsbriFAhNe+EyImyjlnpD
ogNzEI9iF5LMRDmRUiXJD550mD++dodjZJ/5MwcnOIt4uLWK43eQqaqSvgc8
Asxa//qeGB9sDXyPTdS5usnZztZw0ygT1/SsYQTDsLp/Ove26Gd19sjDkUWW
s9ZaqbKWu/wMszbCG/zV8bffwFnz8WPYdQ3icSuRT0G+HqEG2Na8X2nEVGpi
dzstKqJNdUy4ArlTbHys6iyl2RPcgwxWn6cyCA83uu9JNjNdMUpB/zpv1aGX
B6OMXPWOEuldrYZmqwfK4+yc6Ijk3Vfe/zlODtRrYuWuHcH3y8T58dkRmeDi
sYACqudZCZHoRrGdux6J+r0uW5Yc2OxnGRxc8F3XIBkHlYUz2XNybaSwZhQh
Dj9uq4rqQGWSMJvgK4kQ92WpB5xwcJNDBhyiVFiseci3vuTEGTpYJDghvUYG
Fr6+Yx4NU5G0tuIegYRQCtneLLBqLcYiBmbp+iz40gHa5eYXl/hqNU3D+gnM
/bgi2ytuCUTv3ZB0O05+W1olBom4sqJlgVmLQ/pSK9RZ6D0oteKV2oLBvpL3
WnwrHRb7e58epe8fK0n3Xql/dKOEyYoUx64p553TQs1i/BjYMMSHKcIXi4xV
Zxl5Ggvt1FesBWWDXN0Zb1YwP6sv5a6w9txmsHU88/Tm9xS0C/b9jrSIZmZX
2PoJ/JndPUJIXD552IBjUC9vP66OPAWRwYMSAtwBRwybTRvR+yjJ3JMN1BzL
S98y8RH6ppVrYcTycQ7RxTC4l9WSfQygD654HQyEvkqAZTCIwcmimaWuWl91
5WqHxZVhOUh2JWjOYFDqIRZhIkHFkQyQgxzseiGiheZ6BTGuHGLhVJLcYjmC
ahyclES8Z9Ppz0omcDuDg/Vo7K6pAsnFGjgrgUp+7GXzGVctmgKjxveU025V
ishZdnCF0oeBXGKQ6acu5nFOoomrEj7k/rDTOl96yGmKnSNg4hNEH7sCPWHl
/iAX3wRT4RZWACeq0ospID6FpdFTadviiiuoXpJNYTWOUk2ldIoK4pyTY+he
zqM4avHZGtVUm0hQJGPTRzCZQJYQSxoaYsCtUi44TBN1fRyB9RlC7kB1PCSh
dmXXO/yJbvVQm5N4Arjm4Be3crByhtAD1MAg9uxZ7QyzJhu6XbosvGAp3C9v
QIUdPYoKhX2ZXpyPkzdM09lJb7ZT5vR1VI1dpmqLULFl9lJJ/DtuJJ+BsIiL
cyIx4hAI40BELlnUwCXey3wg/luoz4FPbgAN1oCKyL6VDuJN2kM9J5NTdSlx
txYzSuv5EWrOy06SG266Il8JArOWgjh8LvRMi0LlKVNMED7Bcfz9asJVidW5
TaJXB181IiuC0dbFDGnUfqQ2GMqFjIxcFmDwoHtuysFm23y6hLRnRdTLhqRp
2MLlcLhAss7+zjXn2TF764GKCW+AUJ127wiTOiN+YIwycOtwKTizHLNQ4m3c
Y1VGX3HVT6+LzuefVUalUOgeZTTU1kMWsVOzRQ0xsTAsyeNKru8KFGzZYTwV
6+KWKMIV8sQeKdkknd6ydWRnwqrV0pQ6S9PFzTs1ZdBfEifZtp63D0TXeLBz
B/eDi/ND67bziLRg15iAlGec3e8KeumBynMhFg89HPv0Un9QTyimoghWhc9e
DsFpiT9cLjXlCqe/Y8HneyDfBrV+d2AkhXnC4rsjh6AcnrQ3/xmDshZ6x80j
8mWhuQikkg8KCUr8Ztxq1AcDRSWhQyIYp3JZ9kOQUxDUJONgN84YRLEgyDK7
UNApZb2x5BhY7gd00yIFkcbHEbXdaEe65KKyGoEX3ZvAGYCMwFKjk1L4hGEL
wSLyVRBCbDUaiUT6fosm9NwbreBHTWsDdhBfETuDUfd22Yv9a8Z7HYqsKAyn
4HpAKLKDBpdxiwGAzZkvD19rCpyD/cDKJIECknwrzN5nwT3ZbU9xZp3/g3nz
g9ZdrEOL8PBEg2vk5JVAeWoLKUL1OXSXREB7K0gaDipY7alcxdD4Z19u2Gq5
7/3IvhMQ21Sb4yk6CGcCa2V+sb+E4XDJKC2y00kwqvO+xz1BbK3z3SlK3LtS
4q+dZdsyoCHAimYQiGkkNdPRpK55RigaAlEW7PF9LF1bsh7X4KScMwcfLcHo
Va93ypUoxHSTQjp+SSk4r/uMaG0LQQcuFGnh1458DsvRCjEYhlhM2YjhTA5z
L3o684ATc5147gWHsP7WCPk4dmjvhb+mjxXs/9dsA6X2S+KlszvTGaJMbPtz
M+5TyBOte+LjQNW1CMLzTCol+2GeCZZZLLgPpMpuLi7f+ki87OL6LQSUc2IN
VhucVkW0nM8cwb6w/Zr7cp/bBXfLxbQ4i3cs1a/RbUb6EbJxxDp4aNzNFspp
FVdbt/bghgvOMF67QFFJ8ig7r52GSaXQ62TZwzVDLKU3wpxCUWstazfWE30E
u3PrcjDKAwdZu3hj2Marpu5llHw243INPnEJZNwWEb/KEccspXA44KyQlgXq
HUgHFfkD9VPEygsuIO/ESnhYSa3uN1pZh/0rzv21T5JUE3bQFA8lispBIwrB
uFUpAnInjil/4l4R35G19dIHeeAuJYLdt6zhHty8uZAEnsij2nk/6kOdvrF6
MJeOkke+5gNa0qFUx5I0N832m+druop5k7pyjyw1qk9ZVcyAX+rhH3hEyDCy
N9Cqd5ztxtpgSWsjHwQf+CVzvgU9jLC/GNjAeBcqGfvbDSLOijSYwD8OVHFx
O3zizh9uO7IuEXuODYVOict1VoeKqUdb/u5ayahExrVbWAfglHMR56Qi+ZN+
KvV0WOXrHAWKtabkwPXpu+ZppEYuXbTm+aQxvUAE1yv1pwWhIrbzVtFfo1k+
00+aFvf219eaLoM4bVE/gST3pMF6ZQUAlyKHMYrDfyxWar24asMdJ79iAYKN
kIajAsUH6hTMpQC4h0kMkcMd45xT/rTVrlyZYjYouEv7Fi/VO77i2S+s5WQ/
OC/Vwdt3v/zg/cwjcw9ucp7Iyk1rMd6okC8HsOB1XArsqvcEwz9gC/WubJYX
JNqqHWopsL9oxDQpka2rk9RxksBjFlpohnw+fSPvaDTYwErreQB75c0vOoOO
y/0VVAoTOGh9x1C04jYmKqUS/+GemlKOMKxSKDqIbiroVnjImq/UbrFias4/
U4aIrO40H4wcG5twFXYdNNJbqZNCOG3heqv54oMzX297N5Q5vi37ov9YKWm6
4YqEQvHi4REZRZIzKqnkjc8EyrUSqGkMgaqskh6ovAoiZ+G+2QXH8aTMgLUh
NUABGhTVBDIaDWTjui6PFyTyyYcsuFlXwZW5kDUE3LLhwzhHCCCu4ntb940o
o5E7WCPj3VKlEJldBB7WIBKLPlW56Ve5hYs5msLYw9UOJ9w1gDQqKZwrCVgs
UnBFC/W/s6g95e67TjwO3EWyDJB1bXYnk/lkCS2hO2JLm6582P7B8KfhSuU+
HM8EwK2WoeHgDytLW0igZWQPv/EsbZxYUazoa0ECTZQJvIzG0K0ONdtEhNfy
+YvqAbMilwVulQYXHzbSO9xF+dGAIrErq+P31GTji9uNpZiIlwu+bL2m6aeV
Hnp1E1Wv54iODVQor3qbd8xqcwcJaFKDci3B7g+oxgtrP+cUQVFyIUlaaTWs
PSikwClabcDAztKBvacdGnycq4YwBjlrXUQd0zzQ8Fbb/TYqJ65odS7zsVtP
4diGo1gaDSENuUCg13mlDXAJND7QSv2NxeyxQK0BmfF0CSfOgBCLjQiK2ieH
0UT9/lwNQe5SOGzZQsYQPuJqneq1cFIcLK9MFkLZITMxMZRlTPPFON7z37Lr
zkIPoIn1VTkN8xNwFB6iKtM9SEfXTtgUQ53+G7jOaZmF1uZTHPFFRoahuDGe
y2KYF6baucpJzq0iEvsA8ANaR2xNRbnhZlWmofg4n8DWzXw+FnsesXpnu1bv
mEfGDjhrbjVODnyDk9wfIotcFmfrDGXc7kPNP62LoYUsKp70w5Ac+gZaPrPf
o4sra5vuDWKCh8h1m3Rbcon+OrKcjGun6pp6cAHm2kTm4EYHpbKU+hZ7Kj+2
ddQhziu9aiiyeLF6s+QaphLykm9HCmQrvDba3Vagk4c96xUftGWZw4mBCmCk
3SPIv4wMIeMQGwI9GAdL+AOGql5pq9idUkltgL2uqA3XCNzhmG58WLFyqzTF
VIaDxjn4XzIunhJmuaAjR5Movkq1QJvGfKfWQta013DLSBpznBIG6GWxbgui
ZIN45zmamkpY2Fmac/nircaZdkprg2gly0cXe6LZMEnQNVAN9VIuCTUJho0W
xRn5y3w1jw3TGYvg0+AtRlI1xAyqaMchIsqP4dIdUi8SHQundAzubZBZFzIo
pOqWq7zxgfq8Ih3JukUOuMDgzqrIH5EoXeUee+8Q1LC0DzTI3XEc1cKlh/eD
H9nVEVJfvUEMDYE2sguUoD1cznU/d6DWuXZBLgbIZWi0TjUd+HVqy3b1hcQi
Kh0YmGNv0JCacSRIuylV3TQrPWYgbJHefTHfNyHJMQEJnpjv27xIUl29KiRl
AyZO2FthxqMhi7n6ELSaxDoK6Hf5w1HrYdGG1BXEpDg6RZ/iDKUBeQKi+mps
m5hLnf1Mcsi5xby2hiA+gya96SDUZYgjzMQtO3bvwUeJPTpD4dOg3URilBJV
JC7KNkXhgthyO1jGmZZa+FLO1Jp/jaIKHV6t0gQg7FO6HZj/5hEkSr4IE06u
ImN7mx68/enqUHOMvz799piTnyS9U+2FrLQzXd1pVjBOfkFGPpTVQcaaxKgU
PiHe3zStpZQeOLH/LL28uY2t8xfXb+WLr05P+AvY6r3NHiJHuGQna8R5Kh51
wkoHEbtJjN2UVr+h9M2oVxzYKCfIhc99vZCmRxtT7cg5sHzsM8lYvZsCPaKZ
nQbrz9puu4p91INj4hQnKa8nSTSumPw8L1d4RDJjVLzovX8zVPI5UWVVSw+1
x20BnFxSVkHe8VFf7Um938lPrYM6BGwYSqP3WCBA4iSymLUBiYpDrdWv1krM
moH7CEjFoYNDSjRiT5AessbAsadlJRCB5TN3hZpLXFSk6pnHulokxYdSMguD
hN8uKMQcdgLlczsKQAhJzLQQrEJia8QIEYTWlGiC0taVZEZvfYG00J7EeeDP
R6zk81EHPRjPVSK/LytVrjjxkcsloEXr4eCAtEyfx3B/OBLK3NbStHHQ2POi
Xtez+gcaAnZhM5jn1aBNgS5Q4yTZbiFNN3h+FL+/5yyNsIu7yoWl25H6Bzut
mpx5W6sK7USdIJfAgFDVsaSPgOBIxPZOOD7MvmyXNowo0U+5fHFTzpw+ZH4J
4b0gZH6e82q7w+jUyicRGL7zDfCmrHoLNufYAmIh3ZIUiaXFxVU1Y6yvvWFW
mBwVD4My6SLlcCM8BZ+Wc9fayVbCN9Tn7Pqy2a/s4lKwrUU7cQEV3HCpVYnY
Yt2Yde0Q1jQoMECqJcoPnDnWGxpidqq25MPKU1LaTC6tVDp90JZJUU8XxvIw
m6PtJ5aiTkCAqUX6h5k6kHM40IaVIlTkaTe579ml1fFd1t8OKqARllmXvJEc
eRTa2BMEjf1AYZrhu+LeGj3+XMIieHDx7udDi86PivwKvjxhn/WhOg2NegfR
b4c8mYPMtyVqrClMHpBcIbd+pnyPdGlkda4+obE1mNZLGwZg+AucBwSg3bdC
LZSmpetclDcpo8WHTQnzJdKiDmgGjug+jCNFCXoc6/jm4uatZvMD6EGUB52/
z4pVHJnT+pZ4172qzk6tkB4sH44dv1aO45AAFlmv62jldhatiEu9ibzMu3HO
wkFGrFyFiv6FaGi+3UFHYWP5cQ2DgaAiRRN+cdjPck2780oavJIeWCWnw/Tj
F66qE8QoqyT7zfgEQ+yRqrixNLGlt2if/F+uhNzY8A0yYo/6lt1ywFBZsRaj
mnP1rEotNv8ZmYlzAaybV9wWUvuAeVbE5nmftCMaooh7dst9lpYtO6hlxUxW
Usr2V7AKc2q4T1zqymbRgP+H/knzvL1fJOPM/TP+t+SP1P3zx//mL67Al5t/
T/+e0m9/0Bc3PXef+nf6Isu+/LfkSz/AlzzwnpjEPc16IviIyzAUqWKx/Te3
lxBSQWAvBtPmz0ELMrQdiyueJV2YaZSzz+pPAGYIlyFY6GuuKhoA568EDjx+
cQ4I/ZXH+StBKJXH6d/+zy/dPO4rNxu+uo++upelXV7yK/gm/DxYGo0QfPYL
/O8T+dF9Pv0jOslwWXyyiZ7t545CjjLkb4/e8VEiLAyZG48TAimNsbevnPKm
JDhPVjYeOdE0/ic64MFvw/PWA3bfxcefyEH7V2I0GA4+xIe9c/+R7KxSTiU8
Fr/yP3bHicbUx+6ffuw+iWcc73lmCLYhvoVHP/g5CWGjGIh/9oEOCOlh9Ve3
+/gfA2UA5j+ehsYfDhxjGfLL/XsdD27Bnrv5mY/77u5nPn7mbu9+fOTq2+2O
P/uPp4OfTwPK8D8DyiCf/cfng5+/eppw7H4c0hVHWojNCYNbjVTbMU6cS+G+
oggKFj9CEqTzcJFM6q6r1z6kIOI3amXr6k0gjZmQwfqXGn00CdyVipgVxQaJ
EZeXyVBuGAlTh5xljW5dg+5/9qUU6FpLmUZNXJf6B45ahY0PmNocqERQFa4D
FavQSVgQ4EdroONKVlt5ih9vrg/lGWcDF8ud9WER1U48wSJgw871TGMTnh2O
VCnGxNpw/aEe6C5i6gGNHp4CLAQiID8jxswDWqHasET2xXmkE+9KD09neYJF
mKfVN6jACSTeuKQmfo6OLcSGaisA25jP60bDGZBRo7bvteaVKzjM8ZbAiMrS
9G6JFkucaTlzRopdsYITDeGi3RNXxoar6GqpABaMYSon6dzaLSDlirOv79o7
gkNBeLQV04Yal60jCmJbSWvnwhQojl5L18pWVRyeQIsXAMUIvoPh0pvzmxfH
BN5ZyemtyOqOy2m3diEnJGT77IkLHcet1A996qPzOFLFmfm7XWe9pGyUhbb5
RFiSOrXVlfRQFHdt0qGDcdUtW/MBDEBcImRno2reqmZ/aBHW3JI0QakKmrhG
glK23LX7FoO0A3LneqPQ3ZWq8IgxedDIT0MpDvuXNCDW7tBzwjYs9Ihuhbty
TveDBcV14nWtQGr4PwQjxSTLBWMrTcoGIeHmpz5DNASvEDeNlRbj/KxYwUg8
V6k7qNPKtdObYsX5EqOkdh3HYayrkBaD8MFiuuSAeuDGfM6w6ssVoxRcetLM
sg38EM71xnkLUrOCNOh/1BMJcZjnyL0U3Ava9RlcAxuM86Gs6dovzGGs9jfW
Ur1iaVaOicOMoJzr/scqydgRClUgLD8PaBRejnhITLTOQ2s47JkBNTyUY7GK
RuKzk06+gq0HRCnyYW1a5ym2lhzOr6PVbud904WldM2Gxg21BHnbgT2TLhlR
J+10E1dRZaxSNx3d67Bd3WTrGwsqFJnVqIswMolZ317J3Lae6NENn2iJqp13
GTB9JW0LOMbXmpG10kT44u2vXNVgp11Y0CTVBf34wBlvHNzT8i4CsxQSd80Y
nDtuWJLU2oQNYs9d7ezhVKzZhm5yX8ByUIkULqDWVbskmLcOpGIxCv0sZ7GF
/iGvuna3ccTQNGfpGZJbVTt7/J4JvNl0/xA6fIleZ7MZl8fkiuTIuVfT+ZyN
otxwW7o+wwjgUrjyDpMhRGWq7uMHpVgshHXaM0BeUMNxvuI+IWEbRrMi883b
1J0LCJkBleDwOwyKNOz2fxNEj7KBgsiQoLq/s3iLbVLWtWK3fR3EHIiRbmzm
1lWxIIq1ZpcT0o73tRMdQn5o9hwcQWCWJSYmVRQCYAYtICTaJYqz4/jGgLAG
pVBsL64yoTRlsXAVP6zLp19bGZqoULbdvVm+zhfFGRewqCX0Z862xp8521Y7
pQZrkWXwojkfXyQlcX4xPTMfNqOvMn95xqkG9gjo6qzU3HTLcyNUzzf5tOwk
Vit5RZcHrVhgjYQ8OeVgRsVvQAuJQcQZtEYEMpCkzzi9MHHvztGvKLy9Awgo
bY7Sn1hsaRZ5Zf4oqyfeaqnpUspsMDlxWTMsWWuVSLXXKzFh0VMzb1xe3xnX
aclVrbAF95XIRJLFoXECMxjajNYbwq1zJmMImfR5GINiFdy+VRian4Rfcvmb
m6KGfPXAxh7wfrniYZTC4NXvksTqU4qp2aOe+mKWfYNATLEaFsQGl3QTUFOI
SxrARM3OII6+lTJnFogpGTfciTc8gPZLt2MDreOphj5VgRuJR55YOwCZq9MQ
flReldZeyjva2a3l7oSZL61zKLUbkhs1Cufjx3aZr8vmxUspuVv7ttebsuDK
C5wmxB+sHy9pzqXvcBK0U9c0n2KN/raFumwHaoXG8PDgFkvTaDoaAaej0WdB
kWIvZ9+jL7RXuW0yPXssauskbDzAz2t5qiivVAN/rENOUCPFgV9r5dTalNcN
51q7NyVLW4QGanYXtFDHnpeJmGFjyVqMLvb/SkVeyV2Mmpiy7EqXsrCkQn8f
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
3uEAAA==

-->

</rfc>
