<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 3.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC2986 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2986.xml">
<!ENTITY RFC5280 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC5914 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5914.xml">
<!ENTITY RFC8411 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8411.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
]>


<rfc ipr="trust200902" docName="draft-ounsworth-pkix-key-attestation-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="PKIX Key Attestation">PKIX Key Attestation Format</title>

    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road -- Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="R." surname="Kettlewell" fullname="Richard Kettlewell">
      <organization abbrev="Entrust - nCipher">Entrust - nCipher Security Limited</organization>
      <address>
        <postal>
          <street>One Station Square</street>
          <city>Cambridge</city>
          <code>CB1 2GA</code>
          <country>United Kingdom</country>
        </postal>
        <email>richard.kettlewell@entrust.com</email>
      </address>
    </author>
    <author initials="B." surname="Couillard" fullname="Bruno Couillard">
      <organization>CRYPTO4A</organization>
      <address>
        <postal>
          <street>1550 Laperriere Ave</street>
          <city>Ottawa, On</city>
          <code>K1Z 7T2</code>
          <country>Canada</country>
        </postal>
        <email>bruno@crypto4a.com</email>
      </address>
    </author>
    <author initials="" surname="JP Fiset" fullname="Jean-Pierre Fiset">
      <organization>CRYPTO4A</organization>
      <address>
        <postal>
          <street>1550 Laperriere Ave</street>
          <city>Ottawa, On</city>
          <code>K1Z 7T2</code>
          <country>Canada</country>
        </postal>
        <email>jp@crypto4a.com</email>
      </address>
    </author>

    <date year="2023" month="March" day="13"/>

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

    <abstract>


<t>This document describes syntax for conveying key origin attestation information to a Certification Authority (CA) or other entity,
so that they may decide how much trust to place in the management private of the key,
for example to support a decision about whether to issue a certificate. In contrast to other key attestation formats, the one defined in this document requires only ASN.1 and the standard PKIX modules.</t>

<!-- End of Abstract -->



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ounsworth-pkix-key-attestation/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Limited Additional Mechanisms for PKIX and SMIME (lamps) Working Group mailing list (<eref target="mailto:spasm@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/spasm/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/spasm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/EntrustCorporation/draft-ounsworth-pq-composite-keys"/>.</t>
    </note>


  </front>

  <middle>


<section anchor="sec-intro"><name>Introduction</name>

<t>Key attestion refers to the originator of a cryptographic key pair providing information about the provenance of that key pair,
in a manner that can be cryptographically verified.
The information provided may include, for example, the model and identity of the device that created the key pair
and any policies that may be enforced upon the use of the private key, contained in a cryptographic envelope that can be chained to a manufacturing public key of the device vendor.</t>

<t>This information can be used by a Certification Authority (CA) to decide whether to issue a certificate, to apply a given policy or certificate template, or by other entities for their own purposes. The CA may choose to publish some or all of the key attestation data in the certificate for the use of parties that will rely on this certificate.</t>

<t>Many devices, including Hardware Security Modules, provide attestation information of some form in proprietary formats.
A common syntax for key attestations is required to reduce the implementation burden on CA implementors and operators.
Furthermore it is desirable that the syntax is sympathetic to existing CA implementations.</t>

<!-- End of Introduction section -->

</section>
<section anchor="sec-terminology"><name>Terminology</name>
<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL
NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;,
&quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be interpreted as
described in BCP14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
<section anchor="cryptographic-keys"><name>Cryptographic Keys</name>

<t>This section describes the cryptographic keys referenced in this document.</t>

<section anchor="sec-trust-anchor"><name>Trust Anchor Key</name>

<t>A trust anchor key is a signing key held by a vendor.
For the purposes of this document, a trust anchor may be a proper Trust Anchor as defined in <xref target="RFC5914"></xref>, or a root certification authority as defined in <xref target="RFC5280"></xref>.
It is used either to directly sign device identity keys as defined in <xref target="sec-devidkey"/> or to sign intermediate CA keys.
A trust anchor key MUST be associated with a vendor identity.</t>

<t>Constraints:</t>

<t><list style="symbols">
  <t>A trust anchor key MUST only be used for purposes consistent with signing intermediate CA keys or devices (i.e. signing delegation certificates, CRLs, etc).</t>
</list></t>

</section>
<section anchor="sec-intca"><name>Intermediate CA Key</name>

<t>An intermediate CA key is a signing key held by a vendor and certified by that vendor&#39;s trust anchor.</t>

<t>It can be used for one of two purposes:</t>

<t><list style="symbols">
  <t>to certify device identity keys (see section <xref target="sec-devidkey"/>) by signing device identity certificates (see section <xref target="sec-ka-dic"/>)</t>
  <t>to certify further intermediate CA keys</t>
</list></t>

<t>The exact configuration and management of trust anchor keys and intermediate CA keys is beyond the scope of this document.
An example configuration is that a vendor have an offline trust anchor,
and an intermediate CA in each of its manufacturing sites,
certified by the trust anchor key when a manufacturing site is created or during maintenance or recovery activities.</t>

<t>It may be impossible recertify a device after manufacture,
and it may be impossible for a manufacturer to know when a device has been retired from use.
Therefore:</t>

<t><list style="symbols">
  <t>an intermediate CA need not track and public revocation information</t>
  <t>intermediate CA keys MAY have a expiration date of 99991231235959Z (<xref target="RFC5280"></xref> section 4.1.2.5).</t>
</list></t>

<t>Constraints:</t>

<t><list style="symbols">
  <t>An intermediate CA key MUST only be used for purposes consistent with certifying intermediate CA keys (i.e. signing delegation certificates, CRLs, etc) or devices.</t>
</list></t>

</section>
<section anchor="sec-devidkey"><name>Device Identity Key</name>

<t>A device identity key is a signing key held by a device.
It is assumed that the key is unique to the device and cannot be extracted
or used for any purpose other than the ones listed below.
It is envisaged that this key will persist for the lifetime of the device.</t>

<t>It can be used for one of two purposes:</t>

<t><list style="symbols">
  <t>to sign key attestations directly</t>
  <t>to sign device delegation certificates (see section <xref target="sec-ka-ddc"/>), which are used to certify device certification subkeys (see section <xref target="sec-devsubkeys"/>).</t>
</list></t>

<t>Constraints:</t>

<t><list style="symbols">
  <t>A device identity key MUST NOT be used for any purpose other than signing key attestation certificates or device delegation certificates.</t>
</list></t>

</section>
<section anchor="sec-devsubkeys"><name>Device Certification Subkey</name>

<t>A device certification key is a signing key held by a device.
It is assumed that the key is unique to the device and cannot be extracted
or used for any purpose other than the ones listed below.
Depending on the device architecture,
it may also be limited to a particular context or partition of the device;
in this case it is assumed to be unique to the particular context.
A device certification key may have any lifetime, from single use to the lifetime of the device.</t>

<t>It can be used for one of two purposes:</t>

<t><list style="symbols">
  <t>to sign key attestations directly</t>
  <t>to sign further device delegation certificates.</t>
</list></t>

<t>Constraints:</t>

<t><list style="symbols">
  <t>A device certification subkey MUST NOT be used for any purpose other than signing key attestation certificates (see section <xref target="sec-ka-kac"/>) or device delegation certificates (see section <xref target="sec-ka-ddc"/>).</t>
</list></t>

</section>
<section anchor="sec-appkey"><name>Application Key</name>

<t>An application key is a key created and managed by a device
(excluding the device identity key and device certification subkey described above).
Its purpose and lifetime are arbitrary - in other words, it can be used for any purpose a user of the device wishes.</t>

<t><em>(MikeO: maybe I&#39;m a noob here, but the distinction between this an a Device Certification Subkey could be stated more clearly. Maybe the distinction &quot;This is envisioned for cases where a device needs an attested key which may be used for arbitrary purposes&quot;.)</em></t>

<t><em>(RJK: it&#39;s not really about what the device desires - these are the keys that we are trying to attest the origin of. The user has some higher-level purpose, e.g. code signing, which requires them to define a code signing key and attest to its origins in an HSM; from the point of view of this spec, their code-signing key is an application key. Keeping this comment open in the hope we can find a clear way of articulating this.)</em></t>

</section>
</section>
<section anchor="key-attestations"><name>Key Attestations</name>

<t>A verifier is an entity which wishes to verify the origin of a key,
based on its trust in a trust anchor.</t>

<t>For example,
it could be a certificate authority with an operational constraint that it only certifies hardware-protected keys.</t>

<section anchor="sec-keyattestationbundle"><name>Key Attestation Bundle</name>

<t>A key attestation consists of a nonempty sequence of <xref target="RFC5280"></xref> certificates, containing key attestation extensions as described below.</t>

<t>Specifically, a key attestation consists of:</t>

<t><list style="symbols">
  <t>Zero or more intermediate certificates (see section <xref target="sec-ka-intermediate"/>)</t>
  <t>Exactly one device identity certificate (see section <xref target="sec-ka-dic"/>)</t>
  <t>Zero or more device delegation certificates (see section <xref target="sec-ka-ddc"/>)</t>
  <t>Exactly one key attestation certificate  (see section <xref target="sec-ka-kac"/>)</t>
</list></t>

<t>The first certificate
(whether it is an intermediate certificate or the device identity certificate)
is signed by a trust anchor key.
A verifier must decide 
through its own policies and processes which trust anchors keys to trust
and what policies to accept in key attestations certified by them.
A trust anchor key MUST be associated with a vendor identity.</t>

<t>Constraints:</t>

<t><list style="symbols">
  <t>A verifier MUST verify that each certificate is well-formed (except that expiry and revocation information need not be present)</t>
  <t>A verifier MUST verify that the first certificate is signed by a trust anchor key</t>
  <t>A verifier MUST verify that each certificate, apart from the first, is certified by the previous certificate in the key attestation.</t>
  <t>A verifier MUST verify that the ordering of certificates is as described above.</t>
</list></t>

</section>
<section anchor="sec-ka-intermediate"><name>Intermediate CA Certificate</name>

<t>An intermediate CA delegation certificate certifies an intermediate CA.
Apart from the absence of any constraints on expiry time and revocation,
it is little different from any other intermediate CA&#39;s certificate.</t>

<t>It MUST have the <xref target="RFC5280"></xref> basic constraints extension with the <spanx style="verb">cA</spanx> boolean set to true.</t>

<t>It MAY have the <xref target="RFC5280"></xref> <spanx style="verb">pathLenConstraint</spanx>,
and there is no change to the <xref target="RFC5280"></xref> interpretation this field.
Therefore, if it is present,
it must permit sufficiently many following certificates to account for certificates signed by the device
i.e. device identity certificates (see section <xref target="sec-ka-dic"/>) and device delegation certificates (see section <xref target="sec-ka-ddc"/>).</t>

<t>It MUST NOT have any of the extensions defined in the following sections (<xref target="sec-ka-dic"/>, <xref target="sec-ka-ddc"/> and <xref target="sec-ka-kac"/>).
A verifier may detect an intermediate CA delegation by the presence of a true <spanx style="verb">cA</spanx> boolean and the absence of these extensions.</t>

<t>Constraints:</t>

<t><list style="symbols">
  <t>A verifier MUST honor <spanx style="verb">pathLenConstraint</spanx> if present.</t>
  <t>There may be any number of intermediate CA certificates, including 0.</t>
</list></t>

</section>
<section anchor="sec-ka-dic"><name>Device Identity Certificate</name>

<t>A device identity certificate certifies a specific device by binding its public device identity key (defined in <xref target="sec-devidkey"/>) to a vendor-specific representation of device identity such as vendor name, model, and serial number.
For a hardware device, it is envisaged that a manufacturing facility will use its trust anchor or intermediate CA to sign a device identity certificate for each device as it is manufactured.</t>

<t>A device identity certificate MUST contain a <spanx style="verb">DeviceInformation</spanx> extension,
identified by <spanx style="verb">id-device-information</spanx>.
This extension contains the vendor identity, device model and device serial.
Together these are called the device identity and MUST uniquely define a particular device.</t>

<figure><artwork><![CDATA[
id-device-information OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1567 }

DeviceInformation ::= SEQUENCE {
  vendor UTF8STring   -- manufacturer of device
  model UTF8STring    -- device model information
  serial UTF8STring   -- device instance information
}
]]></artwork></figure>

<ul empty="true"><li>
  <t>EDNOTE: this is a temporary OID for the purposes of prototyping. We are requesting IANA to assign a permanent OID, see <xref target="sec-iana"/>.</t>
</li></ul>

<t>A device identity certificate MUST have the <xref target="RFC5280"></xref> basic constraints extension with the <spanx style="verb">cA</spanx> boolean set to true
(since the device is acting as a CA).</t>

<t>No significance is attached to the subject field of a device identity certificate.</t>

<t>Constraints:</t>

<t><list style="symbols">
  <t>A verifier MUST reject any key attestation that does not contain exactly one device identity certificate.</t>
  <t>A verifier MUST reject any device identity certificate whose vendor identity as indicated in the <spanx style="verb">vendor</spanx> field does not match the one associated with the trust anchor used to verify the key attestation.</t>
  <t>Two distinct devices from the same vendor MUST NOT have the same device identity, i.e. they must have different values for at least one field of <spanx style="verb">DeviceIdentity</spanx>.</t>
  <t>Two distinct devices MUST NOT have the same device identity key.</t>
</list></t>

<t>As a matter of interpretation,
it is envisaged that the uniquess requirement on device identity keys
(and all other keys in this specification)
is achieved by generating keys of adequate size,
using a cryptographically secure pseudorandom number generators,
rather than by maintaining an industry-wide database of all device identity keys.</t>

</section>
<section anchor="sec-ka-ddc"><name>Device Delegation Certificate</name>

<t>A device delegation certificate certifies that a specific certification subkey (defined in <xref target="sec-devsubkeys"/>) belongs to a specific device by binding it to a vendor-specific representation of the device and the subkey&#39;s purpose.
It is envisaged that a single hardware device may have multiple certification subkeys each being restricted to, for example, a single partition or application context.
The device may create new certification subkeys and therefore new device delegation certificates over time, for instance when the device is re-initialized, 
or if the device supports dynamic creation of users or application contexts and needs to create distinct certification subkeys for each.</t>

<t>A device delegation certificate MUST contain a <spanx style="verb">DeviceSubkeyInformation</spanx> extension,
identified by <spanx style="verb">id-device-subkey-information</spanx>.
This contains the vendor identity, device model, device serial and key purpose.
Note that this does not uniquely define the certification subkey.</t>

<figure><artwork><![CDATA[
id-device-subkey-information OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1568 }

DeviceSubkeyInformation ::= SEQUENCE {
  vendor UTF8STring   -- manufacturer of device
  model UTF8STring    -- device model information
  serial UTF8STring   -- device instance information
  purpose UTF8String  -- description of subkey purpose
}
]]></artwork></figure>

<ul empty="true"><li>
  <t>EDNOTE: this is a temporary OID for the purposes of prototyping. We are requesting IANA to assign a permanent OID, see <xref target="sec-iana"/>.</t>
</li></ul>

<t>The meaning of the <spanx style="verb">purpose</spanx> field is entirely dependent on the device.</t>

<t>It MUST have the <xref target="RFC5280"></xref> basic constraints extension with the <spanx style="verb">cA</spanx> boolean set to true
(since the device is acting as a CA).</t>

<t>No significance is attached to the subject field of a device delegation certificate.</t>

<t>Constraints:</t>

<t><list style="symbols">
  <t>A verifier MUST reject any device delegation certificate whose device identity as indicated in the <spanx style="verb">vendor</spanx>, <spanx style="verb">model</spanx> and <spanx style="verb">serial</spanx> fields does not match the values from the device identity certificate.</t>
  <t>The <spanx style="verb">purpose</spanx> field may have any value.</t>
  <t>Two device delegation certificates signed by the same key MAY have the same <spanx style="verb">purpose</spanx> field.</t>
</list></t>

</section>
<section anchor="sec-ka-kac"><name>Key Attestation Certificate</name>

<t>A key attestation certificate certifies that an application key was created in a particular device and is managed according to a particular policy.</t>

<t>A key attestation certificate MUST contain a <spanx style="verb">ApplicationKeyInformation</spanx> extension
identified by <spanx style="verb">id-application-key-information</spanx>.
This contains the vendor identity, device model, device serial and vendor-specific information.</t>

<t>A key attestation certicate MUST contain an <xref target="RFC5280"></xref> Extended Key Usage extension
documenting how the device will permit the key to be used.
See <xref target="sec-key-use-policies"/> for more details.</t>

<figure><artwork><![CDATA[
ApplicationKeyInformation ::= SEQUENCE {
  vendor UTF8STring         -- manufacturer of device
  model UTF8STring          -- device model information
  vendorinfo OCTET STRING   -- vendor-specific information
}
]]></artwork></figure>

<ul empty="true"><li>
  <t>EDNOTE: this is a temporary OID for the purposes of prototyping. We are requesting IANA to assign a permanent OID, see <xref target="sec-iana"/>.</t>
</li></ul>

<t>If the key attestation certificate contains the <xref target="RFC5280"></xref> Basic Constraints extension then it MUST have the <spanx style="verb">cA</spanx> boolean set to false.</t>

<t>No significance is attached to the subject field of a key attestation certificate.</t>

<t>Constraints:</t>

<t><list style="symbols">
  <t>A verifier MUST reject any key attestation certificate whose device identity as indicated in the <spanx style="verb">vendor</spanx>, <spanx style="verb">model</spanx> and <spanx style="verb">serial</spanx> fields does not match the values from the device identity certificate.</t>
  <t>A verifier MUST reject any key attestation certificate which does not contain exactly one <xref target="RFC5280"></xref> Extended Key Usage extension</t>
  <t>A verifier MUST reject any key attestation certificate which permits operations inconsistent with its acceptable policies.</t>
</list></t>

<section anchor="vendor-specific-information"><name>Vendor-Specific Information</name>

<t>The <spanx style="verb">ApplicationKeyInformation.vendorInfo</spanx> field of the key attestation certificate MAY contain any octet string (including the empty string).
The interpretation is up to the vendor.
For example,
it may be used to convey information about how the key was generated
or a vendor-specific description of the policies that govern its use.</t>

</section>
</section>
</section>
<section anchor="sec-key-use-policies"><name>Key Usage</name>

<t>Key attestation certificates contain an <xref target="RFC5280"></xref> s4.2.1.12 Extended Key Usage extension
describing how the device will permit the key to be used.</t>

<t>The standard ExtendedKeyUsage purposes defined in <xref target="RFC5280"></xref> are not necessarily suitable in this context. For example the standard ExtendedKeyUsage OIDs are also not necessarily suitable. For example the device may have no information about whether a signing key is intended to be used for server authentication, client authentication, or
any other application of digital signatures.
For this reason an additional set of key usage purposes are defined here.</t>

<figure><sourcecode type="ASN.1"><![CDATA[
id-Signature       OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1613 }
-- the device will generate signatures with the key

id-Decryption      OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1614 }
-- the device will decrypt messages with the key and return the plaintext

id-KeyAgreement    OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1615 }
-- the device will use the key for key agreement

id-KeyTransport    OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1616 }
-- the device will use the key for key transport 

id-Recoverable     OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1612 }
-- the key is can be recovered under administrative authorization
]]></sourcecode></figure>

<ul empty="true"><li>
  <t>EDNOTE: these are a temporary OIDs for the purposes of prototyping. We are requesting IANA to assign a permanent OID, see <xref target="sec-iana"/>.</t>
</li></ul>

<ul empty="true"><li>
  <t>EDNOTE: We should consult particurly with CAs to see if there are other properties that would be beneficial to include in this list.</t>
</li></ul>

<t>Constraints:</t>

<t><list style="symbols">
  <t>If the device does not include <spanx style="verb">id-Signature</spanx> in the list of key use purposes then it MUST NOT generate signatures with the key.</t>
  <t>If the device does not include <spanx style="verb">id-Decryption</spanx> in the list of key use purposes then it MUST NOT decrypt ciphertexts with the key.</t>
  <t>If the device does not include <spanx style="verb">id-KeyAgreement</spanx> in the list of key use purposes then it MUST NOT use the key for key agreement.</t>
  <t>If the device does not include <spanx style="verb">id-KeyTransport</spanx> in the list of key use purposes then it MUST NOT use the key for key transport.</t>
  <t>If the device does not include <spanx style="verb">id-Recoverable</spanx> in the list of key use purposes then it MUST NOT permit recovery operations on the key.</t>
</list></t>

<section anchor="distinctions-between-key-use-policies"><name>Distinctions between Key Use Policies</name>

<t><list style="symbols">
  <t>Decryption means using the key to decrypt a ciphertext and returning the plaintext to the caller, outside the device</t>
  <t>Key Transport means using the key to decrypt a ciphertext and using the plaintext as key material, managed by the device</t>
  <t>Key Agreement means using the key to agree a secret shared with another party, as prelude to further secure communication</t>
</list></t>

</section>
<section anchor="recoverable-keys"><name>Recoverable Keys</name>

<t>The <spanx style="verb">id-Recoverable</spanx> key use purpose indicates that the policies controlling use of the key may
be modified by a suitably authorized administrator.
This may be necessary, for example, to ensure that the key remains available for use
even when an authentication token is lost or destroyed.</t>

<t>The scope of possible modifications, and the kind of authorization required,
are intentionally vague.</t>

<t>See <xref target="sec-security-recovery"/> for further discussion.</t>

</section>
<section anchor="key-protection"><name>Key Protection</name>

<t>These key use purposes are not intended to describe how applications keys is protected by the device.
For example one device may protect keys by maintaining them inside a hardended boundary
at all times;
another may allow keys to be used across multiple devices
by encrypting them under a shared master key,
or by sharing them with other authorized devices via a secure channel.</t>

<t>Provided the device is able to guarantee that the key use policy it signs will be honored,
the mechanism is uses to protect application keys is not relevant.</t>

</section>
<section anchor="vendor-defined-key-use-policies"><name>Vendor-Defined Key Use Policies</name>

<t>A vendor may define key use policies outside the list above,
for example reflecting policies not envisaged by this document
or to cover device-specific functionality.
For example they may describe a policy in terms of their device&#39;s proprietary policy or access control syntax
and publish an OID reflecting that policy.</t>

<t>A verifier MUST NOT accept such a vendor-defined policy unless they fully understand the intended meaning.</t>

</section>
</section>
<section anchor="sec-embedding"><name>Embedding Key Attestations in Certification Requests</name>

<t>A convenient way to convey a key attestation is to embed it into a <xref target="RFC2986"></xref> certification request.
This may be done via the <spanx style="verb">AttestationBundle</spanx> extension, identified by the OID <spanx style="verb">id-attestation-bundle</spanx>.</t>

<t>Constraints:</t>

<t><list style="symbols">
  <t>A certification request SHOULD only have one embedded key attestation.</t>
  <t>A CA MUST follow meet all the constraints on verifiers described above.</t>
  <t>A CA MUST verify that the subject public key in the certification request is the same as the subject public key in the key attestation certificate.</t>
</list></t>

<t>*RJK TODO tidy up all this section</t>

<t>(MikeO: 
We&#39;ll need to be explicit about how to bundle this into a <xref target="RFC2986"></xref> Attribute. Do we need an OID for the <spanx style="verb">type</spanx>? I assume the <spanx style="verb">values</spanx> is straight-forward: it&#39;ll be a single item, which is the OCTET STRING of the <spanx style="verb">AttestationBundle</spanx>?</t>

<t>Attribute { ATTRIBUTE:IOSet } ::= SEQUENCE {
        type   ATTRIBUTE.&amp;id({IOSet}),
        values SET SIZE(1..MAX) OF ATTRIBUTE.&amp;Type({IOSet}{@type})
   }</t>

<t>)</t>

<figure><artwork><![CDATA[
id-attestation-bundle OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1571 }

AttestationBundle ::= SEQUENCE OF Certificate
]]></artwork></figure>

<ul empty="true"><li>
  <t>EDNOTE: this is a temporary OID for the purposes of prototyping. We are requesting IANA to assign a permanent OID, see <xref target="sec-iana"/>.</t>
</li></ul>

</section>
<section anchor="sec-imp-considers"><name>Implementation Considerations</name>

<t>... TODO document any (non-security) GOTCHAs ...</t>

<!-- End of In Practice section -->

</section>
<section anchor="sec-iana"><name>IANA Considerations</name>

<t>The following Object Identifiers are to be assigned by IANA:</t>

<figure><artwork><![CDATA[
id-device-information OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1567 }

id-device-subkey-information OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1568 }

id-application-key-information OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1569 }

id-attestation-bundle OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1571 }

id-Signature       OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1613 }

id-Decryption      OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1614 }

id-KeyAgreement    OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1615 }

id-KeyTransport    OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1616 }

id-Recoverable     OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1612 }
]]></artwork></figure>

<ul empty="true"><li>
  <t>TODO: suggest to IANA which public arc we want these in (these are just placeholders).</t>
</li></ul>

<ul empty="true"><li>
  <t>TODO update for our new EKU OIDs</t>
</li></ul>

<t>*RJK: the OIDs are assigned by a free OID assignment service. If I can have something under Entrust then I&#39;ll replace them with that.</t>

<!-- End of IANA Considerations section -->

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<section anchor="key-use-constraints"><name>Key Use Constraints</name>

<t>The key use constraints describe above are essential.
For example if a device identity key could be used by a user to sign arbitrary messages,
that user could forge key attestations.</t>

</section>
<section anchor="verification-model"><name>Verification Model</name>

<t>An API that verifies a key attestion may be designed in a number of different ways.</t>

<t><list style="numbers">
  <t>It may accept just a key attestation.
It will verify it, and return either an error indicator or the public trust anchor key, vendor identity, public application key, and the policy governing is use.
The caller must check at least that the trust anchor key is acceptable; the vendor identity from the key attestation matches the one associated with the trust anchor; and that the policy is acceptable, before using the application key.
If the caller is running in a context where there are multiple copies of the application key (for example, the certification request verification described in <xref target="sec-embedding"/> it must also check that all copies of the appcalition key match.</t>
  <t>It may accept a key attestation, trust anchor, vendor identity and at least one acceptable policy.
It will verify the key attestation using the trust anchor, and check that the vendor identities in the key attestation match the trust anchor, and check that the policy is acceptable.
It will return either an error indicator or the application key.
If the caller is running in a context where there are multiple copies of the application key then it must also check that all copies of the appcalition key match.
Apart from that it can use the application key without further checks.</t>
  <t>It may accept a key attestation, trust anchor, vendor identity, application key and at least one acceptable policy.
It will verify the key attestation using the trust anchor, and check that the vendor identities in the key attestation match the trust anchor, check that the policy is acceptable, and that the application key is the expected value.
It will return either an error or a success indicator.
The caller can use the application key without further checks.</t>
</list></t>

<t>In all of these models the same set of checks must be done, but in the first two some of the checks are delegated to the caller.
The advantage of the later models is that they are more robust against the caller ommitting some of the necessary checks.
For a publicly available API this robustness is particularly appropriate.</t>

</section>
<section anchor="sec-security-recovery"><name>Recoverable Keys</name>

<t>The definition of recoverability is intentionally vague.
Depending on the device it may mean that,
for example, a signature-only RSA key could additionally be given decrypt permission,
or it could mean that private key material could be extracted in plaintext.
The range of possibilities is too broad to tie down in a device-independent specification.</t>

<t>It should be noted that placing trust in a key does mean generally placing trust in the operators and administrators
of the device that contains it, even without any possibility of administrator override of the policy governing its use.
For example, even if a key is not recoverable, there is nothing to prevent a key owner exposing a signature oracle for their key,
allowing anyone to sign with it.
As such, if the key owner and the device administrator belong to the same organization,
and have aligned priorities, there is not much practical difference between recoverable and non-recoverable keys.</t>

<t>However, in the example where a device is owned and managed by a service provider but leased to an end user,
the key owner and the device administrators belong to separate organizations and have different priorities.
In that case a verifier may prefer to reject recoverable keys.</t>

</section>
<section anchor="uniqueness-of-keys"><name>Uniqueness of Keys</name>

<t>It&#39;s generally assumed that all keys are unique.
This is the expected outcome for properly generated cryptographic keys,
and while a collision is in principle possible by chance,
it&#39;s much more likely that a collision indicates a failure in the key generation process (for example, <xref target="DSA1571"/>).</t>

<!-- End of Security Considerations section -->

<!-- Start of Appendices -->

</section>
</section>


  </middle>

  <back>


    <references title='Normative References'>

&RFC2986;
&RFC5280;
&RFC5914;
&RFC8411;
<reference anchor="X.690" >
  <front>
    <title>Information technology - ASN.1 encoding Rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
    <author >
      <organization>ITU-T</organization>
    </author>
    <date year="2015" month="November"/>
  </front>
  <seriesInfo name="ISO/IEC" value="8825-1:2015"/>
</reference>
&RFC2119;
&RFC8174;


    </references>

    <references title='Informative References'>

<reference anchor="DSA1571" target="https://www.debian.org/security/2008/dsa-1571">
  <front>
    <title>DSA-1571-1 openssl - predictable random number generator</title>
    <author >
      <organization>Debian Project</organization>
    </author>
    <date year="2008" month="May"/>
  </front>
</reference>


    </references>


<section anchor="appdx-samples"><name>Samples</name>

<t>... either place samples here inline, or reference a github.
I&#39;ve got a script I&#39;ve used in other I-Ds to inline include files, if that&#39;s useful here.</t>

</section>
<section anchor="appx-asn1-module"><name>ASN.1 Module</name>

<t>... any ASN.1 that we are defining goes here ...</t>

<figure><sourcecode type="ASN.1"><![CDATA[
-- TODO probably need some ASN.1 furniture around this
-- TODO need to import Certificate from RFC5280

id-device-information OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1567 }

DeviceInformation ::= SEQUENCE {
  vendor UTF8STring   -- manufacturer of device
  model UTF8STring    -- device model information
  serial UTF8STring   -- device instance information
}

id-device-subkey-information OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1568 }

DeviceSubkeyInformation ::= SEQUENCE {
  vendor UTF8STring   -- manufacturer of device
  model UTF8STring    -- device model information
  serial UTF8STring   -- device instance information
  purpose UTF8String     -- description of subkey purpose
}

id-application-key-information OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1569 }

ApplicationKeyInformation ::= SEQUENCE {
  vendor UTF8STring         -- manufacturer of device
  model UTF8STring          -- device model information
  policy OBJECT IDENTIFIER  -- policy governing key use
  vendorinfo OCTET STRING   -- vendor-specific information
}

id-attestation-bundle OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1571 }

AttestationBundle ::= SEQUENCE OF Certificate 


]]></sourcecode></figure>

</section>
<section anchor="intellectual-property-considerations"><name>Intellectual Property Considerations</name>

<t>... mention any IP considerations here ...</t>

</section>
<section anchor="contributors-and-acknowledgements"><name>Contributors and Acknowledgements</name>
<t>This document incorporates contributions and comments from a large group of experts. The Editors would especially like to acknowledge the expertise and tireless dedication of the following people, who attended many long meetings and generated millions of bytes of electronic mail and VOIP traffic over the past year in pursuit of this document:</t>

<t>... list of helpful people ...</t>

<t>We are grateful to all, including any contributors who may have
been inadvertently omitted from this list.</t>

<t>This document borrows text from similar documents, including those referenced below. Thanks go to the authors of those
   documents.  &quot;Copying always makes things easier and less error prone&quot; - <xref target="RFC8411"></xref>.</t>

<!-- End of Contributors section -->

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+0923Ict5Xv/RWIVLUiXTMjkZZsid5NMiIpeyxRVEgqF6dc
S0w3ZgZmT/e40c3RRKXU/sP+wH7Lfsp+yZ4LgEZfeBEtJ3ZVXIk97AtwcHDu
5+D0cDiMSl2mak+8eTn5s3ipNmJclsqUstR5Jl7kxVKWkZxOC3XZ/0x0X/z7
b4ZDcXjw+vjscE8cJro0olwokRRyVopMLpUYDn8bJXmMv/f4+jCvMrPOi3Ix
XF3od8MLtRnKetTho53IjQyXsuQ/ZZpn8HJZVDycXhX0lyl3Hz169mg3koWS
e+JUxVWhy01kSvh7uScmh2cvovV8T7waH705jS7WcCkrVZGpcniAkESxLPdg
kiS6VFml9iIh5kVerfbEvVd6qUuViHECiwKoZCqOVLyQmTZLI2Z5wRgB8MTp
0eToUGylcrky2/dgjHKzAnDv/SkvLnQ2F1/jkHh9KXUK181KmuXvtSpno7yY
4w1ZxAu4sSjLldl7+BCfw0v6Uo3cYw/xwsNpka+NekgjPMQ357pcVFN49zAj
hOznxSovCI8PO8j+cRjny1VuYGGIdHMviuI8ARD3RGWG0sRaRyu9J+Cf+yKW
GVxVAFshN2JLz4RMU7FRZlvA4hfSLMRCFQqXm8d7eAN+GpioUDOzR0Mkaiar
FEkid/c3S76Nf0ayKhd5gVgXYkj/FkJncPdoJI4d2PY608+RvlCdW4AdoD1e
v7D7Zm856rV37VWkDwUbv/vk0SNxmqewiaU4yWUi/u+//lucVjCA2Hn0yD4d
A0ntieOylGs5EMdZKQudu3uA3bKA2/syk4n0VxOA9eXuS/H510/sNcWbv4QF
jPyW/F4xXCPYl6iLhpMRcFwJLLpWadrAw4kGUiyS7u0GLoYi29cr2CXPGtej
p36hhajjTIlTKxdOf6wkbXuNm325nBY6mas2Vt5mxEMvgcQSWGGInf3nO2L3
63ETOwUva3Thl3UDhp6PxH5e6RTYJWkg6HlRZXnnHmFn/+Qvb86OH49ba9x5
8uSReCVXqig00LUYX6orCOA2e7/znfjybLe5uinC9Pu42KzK/LG8YkXfvhEv
tFFlYzXfKpkN3wBYAFd495+7nh9WzcXwzSjKSHOA8ELOPnmxv/vs6Rf255Pd
p4/cz2c7j+3Pp493dvDnfZL5kwdLkSp5iaITdQkIDBQgfx598ewR4EhMVSxR
ME2EqcxKxaVYqwewwHmeZVJkCghOl6QnBL+0ZyGz2u7eJJsxhEDNJcj0LE/z
+QaIf3z6erQjVMZCUZxUqYIdOYU59EzH/EI+E8+l0THwTPiY2Hp+eLI9QNzl
GTybdu7vw31SFwfalHC90mYBoLYfO4DH7lmAE1kCvK/zS7WcAhPvPtpx0iSU
nJ4QJmdvh2eOChTsutGw0vqhyenxw8nh/p54+nT3yXBnj8Zr6/BZBVLebEDK
vSMtVy60QUGuMwAWBf6ecGqKdQ9u/cNYTvOHF4VcJvk6GxazePeL3We0B5F2
2GZ6ODgd7zz5coehsjsC14Z4cbgj8pXKjElhM1aFSnRcymkKJAB4y5ciqwgP
c5UpUHE5SykQx3OkdwfVer0eJWqqZUZq01jJ9xBMhacPEyNppqhG7xFoN7wX
dfFKWD2gscSbIv8BaC2KoiFgS06BzST+eUb4yeNqCZIKEGXiQk9hIwMUxnl2
qTa4x6B0YVA9ByoODB6hQ4LMhRT7qihrkhsTUCi9t/bHpH3zEoU6TAgXB5HJ
YZdkicyyARtjA1DEOlFika/FsooXbCrhyKtUxgp5CPlqCWw+VwT2qtCXgAwk
brwDYA4ihFy9A5sG8A+vmmoFhkUJwOHoBuGCPa+A+RaKoIFntDFgoUkRe/DV
CCwuRABgi0Fg0BERIQZ4/WZA04Ox5ymOYA0xXKgfK10AgvMs3ViORa7CF8la
RLVIptkyT5ClRlHEBA4PwfrGdueYOHEvlzpJUoWMAMZhAS/FBNL7+0A6Q42X
PkTRSw8w3gORpAoyawhe2lEkSJwAlk9CcV7I1QLkBC51JXUBSM4vNbF6uN+M
RBwG76tMZrHdB9hR9+4gQorBHcsQ03gLzbOpas4FBtpGXALnz7RKRkCaqjEV
AwBIRRrRWZxWiRqIYJ8Z/YA3lRJO4WEiMUcXibrUAB3PDyY26nZLLwRmhC/J
DP7IUx2D/OFHcToAVSEoMbxSrXKmQJTidmhHgUh6RC/SbX8bnwqYKQUx0UTD
gp8n7gE0VTPYYuB7QPaqmqZ2G5rLAGQneTGyLBwiyg4K4CViurmJH2FOy3DX
s8KAoFutUhxxDuIwYzyhSAifA50Em0EvwA2YP+B2xClLZQUUBbIWlgcGvwEy
F7jd+2PCdrzI4RpxPK4eTHWTL5FQyYavubzBgyAOpZMNITh2PrdbK1mUfmvX
YF4BN8CScsuoIe9H0RFSA+MbmJtpDjflG+DSNZiRtWF6xNw6cFR6pYAEEGgx
eAXBheeBeBSogY0TI6NoDDS0XMLTgRhurRe23DhpQoQD/6mIuoFrkBtQ3PCU
06oATsAlAn79vRwkABI80CJpI5j2RVXgXi1zWBnYIKQ5jS5IhzkR7UDSqCOW
KwmXSqBPAEC9Y8ugMQvD2hJiDUEFYor+SwLtvjiD+bU1aViGlfWVDyQUEBPg
fyRG3Dt6e3p2b8D/FWAB4O+Twz+8nZwcHuDv02/Gr175H5F94vSb47evDupf
9Zv7x0dHh68P+GW4KhqXontH47/AHUTbveM3Z5Pj1+NX97pCHikDEDJF+QXQ
gymAokaayOlXkgzP99/87//sPBbv3/8GrcydnWcfPtg/nu58+Rj+AIbMeDbS
FvwnqskI+FDJguQLUHAsV7qUKVCfhF1ZIF+hqQNYB4TuN8QPKAJjRYZDfK30
iXXa0t+wugCzskefwRT3Yc9IQY8z4NuCgix24/DyUNJl0EFjq8j5Au0ijCSF
0fPMWRcLlVqZ5cTbC8u+TlAw+wcgwKKbA1t5LYm1QPI0oJMm1M1/tYb89ySr
pCjyvAxEACk4Ly17XgV34PtRNCFWIXGrtJOgCfBlXMKu4fKczPYaifDaHPD9
e8QZPpjAXdj9nMah14mMlmBQokAD9sLXR30IJT7AxRuTx5o03BpA8vj0EMDG
7QNjgi0BY5s9MCXEVcMR7Tl9gpLIbwUoOgM8jyRPs7id7AMXl2MlqdjSI7Cs
3NOgrtXcaq5a+gIx75+8gn+rMt5mMpu0hq0pDSaMJZJYL6puJjPiMTs5K00S
d3zzgWkgBmCZlA0dizhBow8pc5179BBSYQd53E0/DWwZpTwntklgGyGp0dR8
PcRV3zAXcggOCAzShGLGMr53jyISr2BNgX0JezvT86qwXJAlocGNK23RCiuT
3p0H9E/VJndWbozWT5uLR7h3zl5vzq2tsvabtZCXQOGoSmcpcE8DlIE14jqQ
AIcpCc4ETIxR3qaRhSFFM4haFKC6DIEiuGOi4dsIpbMpkdL5zhK5yxnFBQjS
GGxkUPTwqr4kc4ipyYosjdFNo8llVG7DpNt5OYMVBVMrXqvue31G4ix4lmTJ
RQYulV2CHXQhcXMU+gQlWRKzAjxVIGuyv0Hygy1AhNyDUopVZCAx0SO5oP23
1mqhLvO4Y/vAKL30AUrV7ilQwEoX3p4jMnkG/+zsfg7/e/LsybPvxJaXvJ7g
H492RrujJ9t9Qq1fInykYLN7caVs+2iBFkhDlm0HvB0Tx921bPPiADVojwy5
Trrx405DgVIAXktqU86+XWX6x0o5d9BRG0pEcNhge9H5eUdep0oiANzji3wl
xpm18mHozDnBRqSIQwAFHJ61AwL8H21Ajngw4BpxFprioK4R795mT/UMyHKp
mq7PR0tg0qEd+9lp6OAZu/YrNvAqKZuglB0AY2mQL2j7EUxdyd80LEw1vUYD
2LswcK+m7qMDZwM3sHLFFoXkEnoqjeV6Gr0KIQ3SbTqZpwR/TcJuPQERN9Hx
a6LkA7UCTYRA2kiAmwmTXqWywtkKZrDLyRVIbUaOfHzyQuMqlRReKwEoxDZd
dV5iPe5XkTO7Y2mcZ+ZRQIM3F94dfXQd2hFKq1M3nuUGrAkMrDJl59kO/o/m
SWew3EiKV3JJH999em7pFw4XEoXDzax0rWxhPhuvVqlbRK0ewBNk5YAGlAwe
8QyFP5xpUttxDb6KttQ7F9sI6LkhXvDV6xBa+7ZyClbONvKq8djEtz3loIyU
xVTDbhWYuADyZmyTVz9ACm9TUrgzEi8XrXDYGvMRSAafbWGW9XgPyRpGwHSM
BCsln5JPPBBTG69MKFrB+J6qco1GEDGZRPPoOqEW5xWKJQrYIlIpXhKn4JCn
mxEG5KeqM8M9jtJZ/QdX7LqQow3aZIgStxY0rBgOIjZ4lG1P1C/W1qsR4/Ho
OOzeaPszRMPJty/3AJXgvqDoAwLA8KoLelu56YnSUFB6iBcNb5AVqy5SZi8W
ZAShDCPQggAy7AcH8Whz0K6kONdCz2Fxw1RdqtSBCDbQaD6i3JzjLac+fXwc
Bl5ybBI9ZAxFBk97gnRQ5GTUMyCGwiKZ+Ob06CsWYiQTc82Oy6VWa+9+YAJu
YMOROMEwnMDSQpOnMKetVswoKJHzJXtEoBFc9HGBDg4gDGkYgE8QeKQOsZYU
xHXSuXSj0Ibdb5enGNSVNhxeWGAsPzKumORx8fTUprkZzPmDaCqRVNASL50j
S2Hplk/7Ioijo+ryRN4IAgfhEI4rZDZ+yCUmsRfBTDUwDhnZzrEyYmEjp8NV
kaOmZNq2lkS7hud5lSWgfFjQwWOB7J3SLTInOlKZjXfDOMiA1ZYrgNcAZSmb
nahdiKaBbiP3fbIelKjKDCkpits4YWdNgsinWYHLBlbqXgEVaKfPxHeqyFEt
cLA1dCpuoRbC59HD/0wcotNOceyu9A7379pAQQuqn6CxWhBdozjFtYqTIxIz
XZgwLgf6yuUqrDGUXYlCYV2Ja5CyHaEkAMZ3SrHt9o9CRlziPZsxicpFkVfz
BUufdVZnjsgZLnLw71i+a5/H5GGNla05XyVPnqRynXsCGRvHakXs2jGU2qGK
5c8QDvRLpmG8jAEgKZISIhkQiOUuQ/T1YRI0JxByfhh9ehbX/XGBOpAwxUwa
KKCs3L4BgrKPLMQN+/iRqwI2Rku61iE04UDoLvoR7EudV6YJTtaXqRrdYmlg
BymKIIGwajCdbokfsrX6w6P7ASRWhLYkR2/AtJ/dAxHejQQB7TURJafGiVo0
3Gq1gHlvRxBsCjaogjSPRncLC6jAgJpR5sGOjEPlfcHLB+28HbgihFbyahCg
WuBPqfolhMhLduYNfPw8Hp+LaZ6D1sYEVWn51A3t4lXNkc8xGfZKZTUjnXOE
riTrTqMdhpnebO59qfplnyiyZRRoWwC20ySIwwHlzazAs1zCTiYS+QqTZCXY
4rMZio8MJe8SETbLU1BQSEoNOmLpgiVTbIaG92oWqgVnRBGuO8egQ+/hjh6Q
21P02by3an2AQDk3Ki9UsHw7MszThG3QmotAbamhpgKgEhU0XvqCosHqatFQ
cwNXATfoy5V/BEzDVni9Kszk3SSfF3kGG9lDhEg1ll5GAl4kevJZMkCirUvC
yHhrMU3rqM5/P+oPWoYSpxY5iOW+2OUV0oVscrzuXgA0TjWHWzR5lBRi7nNR
t65Jp21z4IX13tDPUSiLGp+dbw9ssAQJZK7VmFjROOAiE07NYqkamL6MRM5X
Sm/m2tEGlm1bwc92IgF+6ZRt6zSlmEtts1stlnczNy5QIq/FMNXJoIJzsSpj
YQqSBCBsbtgnojRrJcOE50wBQUXieU21IJxoCKcmz3Uy5LGHgfI/H3E2upbC
dnhOR7fslIGDrq7ysRd4G2CwfG6rWLwniza5LfVprw0HoDVxAC3d1P5mEETz
Ia6///3vUe8qxPHzbw/3z8Tk4PD12eTF5PBE7O39hy9dfC92xOfiC/j3Y/j/
k8efP9sVT8TOky++FMAaHSTiu+L08A9vD1/vH4r3MIxFw9uzF09Pz4hWhMDa
rzDB42kXS/UJPY3H8fkG8sLMjHBk3J7BISzD4rS4UZAVfSB8RNFvffVlaYMc
koqAcgpLHE8OfDw/TOKjA5iXG3SlR+JPvFPo/SsuIpmMXxNpg+nKxI0aTmZo
DMCIA4HKgnlcy0x++IAi8ha0+6ktgmjL6MyW3bjJDeX3YA0SMbE/Ru31mpmU
YMnsQ2UJ/MghXEqMVlMs0WS1z8rimuXcwmIv1A+spDYdB4zET5Irjg05hla3
cyL7DNhgruv2YL3AAF6LqUkWgYCPyUGxivucHzq36PCwAu3FC19n2XZsOklb
l4oJIiQ95vjZOvfROl+l4K1Zg+eALMxNE8Tfba0Z5D2aS1zRitDQ07U5eynT
ypbCwT4ATZmSluO33glWO975lUDeDh52YqOxIZVTloG29zans707CTqXXTC+
3owjXv1VLdEWxeWwTs+VyhpfNmTCWnRyu4EDtLpkBWELo230heM3CcyIhGP0
39QgqgyxVU/ZKNVJg4AxqoJt6q+3NoOokHVUf7rh/LwN+JAtl8BmFZvhGp17
LCjE4BnBAevpW23DDjqoTb8rLKGkYQnd6GlZI8EbK71x916jp04fUoAqm7PF
f71tdVsLqZVbs7IL5nvg4/1XZHulyye17KM6BbWs0lJTDUhvspQsmKlCeAGo
stAxp9RadcB+niCjVjQiuT4vdrZoAMGJEpGp9RUQeIcOPTJ67ga3Bis+hM2o
kfVmNSnVYTTVRoE2BYArU6D2ZCAwRakb+LZl7ODmbMAQRZJAeO2+YODdXLFQ
BpwTC5iZ5mV6cdK/VmczNnTrFVTbbxlyxuSj7UMGoM9MvL1xOGhahrR+qvR2
FPo6L31ZK1UiWQ3TNgWbBcU1fjr2YBfqu5qFT2uzsIPBX4lxKHy6jt4q+S16
CWNXK18MzVLMPuxsyl+MSYniYQk2n43FkWVip3SmCYk5LJ4iksHKAKse29nx
X68B2s/zH2eCXi8+2DDsuGfXGIYDcU6kek6cfc4kavfE9NmLzuhyZt0NFu5Z
z1Y3KiVoPG+YXa8EmiE1MtEoPh9GEulqa8b+vFhvZBcjVb3psGtMi27FwFrW
dYwkyDtuMNd5Gl9GgGHEInFZ4fB5Ph4yugmotuYI6hxeXqU7elRHsJLhz6I8
2oZRMMHVa+xZYVA7Lg5xQXimCbf4LVpKwRpdbSziFg/DNaoduFoOY77Op7GV
QAbDOKdelCEq4NrQ5ZU+fCDRaRN8AFFqrCK7Eu+30zj8z8fqHf/WNdqHZ8Nr
4nj/7PBMnJ6dTF5/ze9dsyu/uADFpP/kUoNDQxKt6YTP7O73qogSDUndVi99
+mImUzR87qgLrgH7pwUjftl64M4LwZTvtSGWW4qBnwgCSwlT12kgLtsFzvgA
Z5vpsJcTFqR+7os/Mo+5EgcRyAa2kK6W2SPeJbxyXhPTTVyAerGWl4AtcPNK
bA2AjLdV5yEo98PVHXRv250abSTTsDB05Qg7PFcU1ruEdVXoINGh556jrk4Q
O2VpowtcT9r1nlvWLlcihadL5+gfcnEOVd3bOiAmAl/50hTh4XneHmOjV9OY
x6Pd0c5oZ/cGncOZ5TuoHMK8P8LsJoE5eAovWfvOUJFsRTbJFFZMyEJjSKfS
TI2++tX67CLYOxZWV84KkthwuSFW4V41Q3fEdlgiy3tIwdWgNGuW6TCuxXCN
H9IwIJswGIA1VChrbM5bxKmmU4OtyzkeSHYZ79BOQ52q53jijyaWqGmNOylH
YQRp6MyOkHX3H1QB8CJCWDU3hMMwdYcENgf4bDp6t6duDqus7+TTfrHzOfi0
w2GHohz/BEupnR6s2UAQDhRF/HDxPwWEx/0gJDw6+HkGMdOc31YoAGCsdlYp
nel5VxJgQGjjeaE4Inp3wJ70A0ZV1xYMfwTYTefmPytkZqi3wd3n/+L285d+
OgLghI80EZ/+BAB2awAsD9kCYHtkCo/dA0cBHyRLnWm0NLAjhytH/Bvrok7o
wGUAW+ae+QfZezUoMJxZUEUlat4qLZ2fVKS2knJ/TIE5HIVDfgVDwOzPR1mD
g+uuOnMK7IMVH8DhWATLXRG8xMRjC321A5NGUNEbKe7185Drz53BhYPVIiTA
XcMAxVzETTw9uh0INdffAQbH1DE1hOIQ6B1gCBn8DlBcy8G3B8Hz+CcCwTPx
LUEIuPwOEFijwZ9+DCzRPKv3gzIpdcm88VX5bKco8cbaP0jBgUbA8BwaT84g
tIaJIwAZkEAgzN3TXp47A5GqBQpQv1VpMA0U1EANCZRa4H7szPWT9azS2DM4
JTkug/B4RmfqWtdcMTXRFhokAAJazAtZ+JrPzIoSEDwb6hQAFjLtMHqG9pCN
TaNhVXuVWXuDNiaU8y/9UeEObbSIwXttpk4mevOX2urkaYpLCFqp2BNJ0ZSC
AT7EI521tvFCH4NPtTpAo56iPNaSd4bept0jJhdg61ZF0NICpyywKxgWd19i
90J3hhbgihS2OuFTs1nLSIPBLhQ5GGluSj7lA8Dkm9ogdqed/dFcXhS/bwY+
g3ahuTdGQ6P5Bh8D7BHJdiXbc9gpR86pIrGO9bhmUUPHajbY449QaRNXxnDA
ysYV33AdvnPljOoytDPOQ7PWVaCSlxAYp8Yf+a4L/BuU3PC8wkoD3Db7Do/R
ys+WeCAEdoiaq1ACkYEBUxyN/02EAU0wWjDVZr6KHLnzEbwUoHQF184il3EB
e1JnHG1KPYJ5VcbSxU1rbQ/HT0tpSk5tDyLucYM3/NPEbtZsr0nVZewvtWQG
JUZbYE+kFLbjjetu1ArkT7l/1bySIHZK1aJa2ifuwoPVn6BuDZtutDNZTqRT
Ug7DNv+0rSoIEw7drSCw4VpVlNipupSuy4eNAhxYV6ErlccuLsgVkpQ8awCJ
XB+KVVIhVMHc7NdVqFmqOIPh30N46mwykVTQPiDiZhlE9cKl45wPPqtYo8iU
Kt1bvp7rOWbpWXp8Yne9YmkbjuABIR73gWn07Kl7IGH8xHixZvvkRP5UvKHT
MhhsDJZX+pJ/jpM34zyoPO0ZAK5CdOEF567ZyassxZlpMdgAb8MES24xIdpz
rk1lUZjhcDlVCYVR2gePcO3Nk28nbAcbG5FQ7lXKOFCsJCMfFk841dGTbsxQ
E93R61R+mFHO4K+2y+L3rTyrtb6bcj1BmYFMREHAAGw+LRQmmEUzS4AvIP4p
WxA07OWzROe9QcxegIRtG0Rnmyg+gDAxUuxhvU69//6Y95QLkmEjlBVXC9Wu
j3dE0FPnH47UPjPgQrZBx7BOO6xwEdrUaSdpbhji+uDvZyffvhRnxwfHIH2T
DUbbeGl1lyFwQty5zOhP6gHcpUMfLI7VO5Q/ugxDbHCDT39xyL5NKLDvgJgK
O/Qd5HjYjoazDOa8u3PsZHz+OzGxp6Vt3Jjiv+d0WASxPl+UeG5lDRqFzkuy
9PQlJBpcR3c60aKskYVwWeEuJf6O+qN6SMH7HZ/BO8/fgkc4OT4FAvjQTa3Y
Xp8AOL7rnh/9m0623tNLH7YH/jEbyj5FaCbfHW7tjEZH4z9vi+MX4atnMJh7
+f3vcegP2zgEMO+2r2HoMsQdixe+3MGBO9horhQADJKYv7A0DfVSbLZQQ8EA
wsS5Lbbr0HI1jO0NDMqORiNmgroRWLYRWxlg1Flm2+Lr47P9b8DXh4ejdlc0
MMYwcR/XxyCoKRrBg8vohwLBtufk/GGHY+bjiZN/hQmakjEqWCbiuHs/V2Hz
z1Yac326965DP3NDf1pW+LQh1E8cDv3EQcxPHJP8xBFGJ2aQSfdA2c3n9vA4
cZdNl7Hqk0WMWmUt6SizIldWbNURxR/o0BX2o13kKfL/9siNDOovcScu8qqg
GsHDl28p8Miqcs+ZIjY3YcJDizP04FHY8WXaFEwcoO+EsZoJhUbJ6sAD9iAq
0X8mB8X1QacIzOQB9bbknrm1X4LmQrsdY49saQqg+3Wjy+Zz3o1ETyCwniLf
qBGN/9C+qQ1ttGho/XhGNivp9EZom+u+CviLsP9C3eGUeg74gzC+JYKL6KMP
BFYSPcVvw+bMO1aNcY5OUVtLR5hbpoOS4zcTYdvCFe6sUj0ARaKsharsflI9
S326qq7/BjOZznTtwI7aLjFs5hNZdcxmqqYlt87afLochHkJ23UQ+wMUBdWY
UtSFjwuxviSibp+HHXSLYBz5Nz3COkxhPQ7OWlLZsPHdwmzojCve44XCnmCu
ut1bqb09IH3m+au+0pw6Vd+2QimpbxtX3uY4wFd2HWEoqgXBAHaQSnvr2Fq7
A4Sr47DLxYxbldnGh9SogiN73NSjjuTXpc35SrtGlp3RxVano3G/+X4ZUmmj
sSibM7WP9kG4U6KUBeWd4QIwbB7ahiZGP9lBQxgGUt1tU2qHSAfNPnzdQx7U
riM47NCuN9h0yLxvy+ttaU5HXZ7qlXXJCBd5hTNT14bcOGYfydRw35Yf/7EU
5QLyP40EGke8ubeH+8ZK36TIf+jMudgjTYlC7/OfSkmDzly/QtK6BVkNmsKq
p7cTXgbfmaOsthz1BlKkIhVTcajK02VDfN9pVydZ0Jvb2Dq+IMBgyw/4eaZE
G8vhjkzuuDa1dMB+Ydzx27IFv8WFClRgWxeqMdC8AJlgtBKLG+yL2Ia8cLDo
OgmxYfZBMV/kU9qXOUb/y5AL8+VSl+RDhrD4tIJfO5/4ZcWJ2QmfQGCDAZmZ
5sgI5SaokMWnVxxM5DhKT6LFennd0H5kj67M6MgIl4UU7mU+RuxKUdopg6v6
19kyKAwSEqoaUdmBrXMhP2ZIoa+T03FgkNXFJtxWk3vEu2QYJQENn/vIqW8L
v+UnC3vo+3RYbev5vn3UNN2lz3jfC+qp4JMsuHjNvTLKHDzeAj+NhOSikeLW
GQtV7+vWNfuN42lcs2+z9lPKgLhjTGhTk6iouykh0JQ6pfVwAhzx0HmUTBXX
cp0lV5jDMlHfxwpcUSjafZyOsnzIXytwi+buUuFwdPqowHh7WHzWsN9c4VlY
EMeTaFf16dMBnjQHVgvxnYWt/sYmKBT2oLcA09j3/x1+sYtO7XnqASkk49S3
5tc2lSJd9AJWhVLc2fO2QnGE5xcxDj5wh6LqWZx56krUGzjgE3C+slXSpwTm
MrNJNm7SwWX9KRvuQIrY5Eor01wof49kxVEaoE5n0eNJOpusDpDER67ybBhe
u+BTg9/ka8BVMXAk4ZyeVic4TW2F+hr3WZfQfW+gICmKGtC2mMReYQl5PJwA
uh2uTIAso0BScQelGllMsq3jrDW6RqgI7JctqFNfo2vGijrJ88cKKD7VgxgQ
gW/pABaJS6BazjZPsI9dzVaNBqCoeChtRb1X6WWbMmjrSGCZ2H58wZbUpJu6
grOn9/3ANmbSKbegS1P+dgxJVlx3FpMB5rO70w3l9GIqKn1gmGBI0aT6Ak8I
2XOQwVA+RQ6+P6iOqmg0DnKHYvPM9ZNqeQjv39tvEnGblIZnf4XX3vLu6Y3T
Es07/MLMipQDpirxNn5iZirjCwoC0JSokkBtJe+Ghv+2oU9ranDAwd4SzDwZ
9ukecAtsxzDSfvwPSObBJX7+io6HUrGsoCvk3fvWkJPhgeESJ+r57apTZpq+
uqH5izMPSJbNqtR//wCg5o/s8Ac6GPR3Q2mynSF/YcdCj5KUnwz7HbJ6BX6Y
524xHLitKySxbo3CPrA9U6pPoFQE2Qw84AzLTUjuyQKT1WQU+NdcHgS7d8MO
hGd7yNi2NbLRvxpPBOc6/nXq8mNOXYpbHbz8OaPqv9izRdYe6q4N3+sYSzag
+dPOJP2zs22CxVdkPxmmUixGqIDQ3nCRaTfGi/JxyW4EycnJGxE3FUogGfGT
M1gCgTlPZ+KOY/z0QKoS/n6EaX12Ds+j8HdfXVkYvuytDdtj1R7ZkeDVYeyW
vnSLNIDavSjtF6TwG744KxfIKtoCshhQ/XLXMw+Ktw0ANbZFMR3jRR2bqCQo
ty8bybWVyknzrhfcBpcrK6h5NppOmNrX2HEBB6yNiyV45VzzOAMroeR4i0Lc
F/jJRfq6Lr3yx2PAL5hj2MnNdg9Awx1jGxv70R9gWqyG63xFY4/3ypVmLlS6
QmXIAPP+2AzpHIHCe4iSNA2be9mOffUO4jrdSYiIPhahM3C1sbCR+szl6Ce7
T0eEdcfNXZ7mBX7+V1AoyzYXX2o6WGofafQYK+kkWPDtIe60CrssswuwBXNn
0HONlQ1f5cSd9YgjIe7t5yvqWixTjLvDUi4oZEx7BAaztjYx7TtHSUCVZ+qe
GFLBAX7e8/tWyqRB4U1r6v8B2+5PbZl6AAA=

-->

</rfc>

