<?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-02" 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 of the private key. For example, a reliant party may
use this information 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 attestation 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 <xref target="sec-devidkey"/>) by signing device identity certificates (see <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 an 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 <xref target="sec-ka-ddc"/>), which are used to certify device certification subkeys (see <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 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 <xref target="sec-ka-kac"/>) or device delegation certificates (see <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 <xref target="sec-ka-intermediate"/>)</t>
  <t>Exactly one device identity certificate (see <xref target="sec-ka-dic"/>)</t>
  <t>Zero or more device delegation certificates (see <xref target="sec-ka-ddc"/>)</t>
  <t>Exactly one key attestation certificate  (see <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 <xref target="sec-ka-dic"/>) and device delegation certificates (see <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 uniqueness requirement on device identity keys
(and all other keys in this specification)
is achieved by generating keys of adequate size and
using 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 certificate 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 particularly 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 hardened 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 attestation 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 application 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 application 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 on 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>Chris Trufan (Entrust).</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:
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
YkjFBviNzu9b6ZIGaTftqP8HTqBksl56AAA=

-->

</rfc>

