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

    <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, key use policy (see <xref target="sec-key-use-policies"/>) and vendor-specific information.</t>

<figure><artwork><![CDATA[
id-policy-signature-only OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1570 }

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
}
]]></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><em>MikeO: I don&#39;t fully grok how the <spanx style="verb">policy</spanx> will be used. Should it be a list (SEQUENCE of OBJECT IDENTIFIER)? Can it be empty?</em></t>

<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 whose policy is not in their list of 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 Use Policies</name>

<t>Key attestation certificates contain object identifiers describing the policies that the device will enforce upon the device&#39;s use of the application key.
For example <spanx style="verb">id-policy-signature-only</spanx> indicates that the key may only be used to make signatures
(and not to decrypt, as would be possible for an RSA key).</t>

<t><em>(MikeO: nitpick I would say &quot;describing policies surrounding the use of the application key.&quot; I&#39;m just thinking that, for example, the device can&#39;t control whether some dumb client decides to encrypt for your RSA sig-only key, so in that case the policy OID is as much for the client as for the device itself. Also has &quot;application key&quot; been defined in this document, or should we use one of the existing terms?)</em>.</t>

<t>*RJK: I&#39;ve clarified that it&#39;s for the private half of the application key, so we&#39;re not claiming we can control encrypt/verify. Leaving this open for now to check that&#39;s what you mneant.</t>

<t><em>MikeO: I&#39;ve changed it again from &quot;... enforce upon the use of the private half of the application key&quot; to &quot;... enforce upon the decive&#39;s use of the application key&quot;. Is that ok?</em></t>

<t>*(MikeO: I wonder if we could just borrow and tweak wording from RFC 5280&#39;s Policy OIDs section:
   In a key attestation certificate, policy object identifiers indicate
   the policy under which the certificate has been issued and the
   purposes for which the certificate may be used.</t>

<t>... these are placed within the <spanx style="verb">ApplicationKeyInformation</spanx> extension of the key attestation certificate, and not it its `certificatePolicies extension (cite 5280 4.2.1.4) because ...
)*</t>

<t>Note that these are OIDs describing policies within the key attestation ecosystem and are unrelated to the certificate policy OIDs defined in <xref target="RFC5280"></xref> section 4.2.1.4.</t>

<t><em>(MikeO: it seems weird to say &quot;These are unrelated to X.509 policy OIDs&quot;, and then give the example <spanx style="verb">id-policy-signature-only</spanx> which, at first glance, looks like it&#39;s basically an X.509 KeyUsage.)</em></t>

<t>*RJK: I see where you&#39;re coming from - I&#39;ll have a look at what we can do with KeyUsage, and come back to the other stuff about key policies if nothing else changes.</t>

<section anchor="key-use-policy-variants"><name>Key Use Policy Variants</name>

<t>Each of the policies described below has two variants.</t>

<t><list style="numbers">
  <t>In the first, the policy means that a key may be used only in certain ways,
and this cannot be overidden even by an administrator.</t>
  <t>In the second, the policy means that a key may normally be used only in certain ways,
but that an authorized administrator may override this in some way
(for example, in order to facilitate disaster recovery).</t>
</list></t>

<t>For example, for a CA processing a key attestation bundle in a certificate request, normally only the first variant (no administrative override) would be acceptable.
If the application key is lost then the application key owner can be expected
to generate a new key and certify it.
There is no need to recover the old key.</t>

<t>*(MikeO: I&#39;m not sure I see the connection between the last two sentences and the first one above. Maybe need to make the connection clearer between losing your key, and key use policies, like mention above that non-exportability is one of the important policies?)</t>

<t>In other use cases, the weaker policy may be more appropriate.</t>

</section>
<section anchor="signature-only-policy"><name>Signature-Only Policy</name>

<t>This policy is identified by <spanx style="verb">id-policy-signature-only</spanx>.
It means that the private key may only be used for signature, and MAY NOT be exported in plaintext outside the device.</t>

<t><em>(MikeO: for clarity, maybe name this <spanx style="verb">id-keyattest-policy-sig-non-exportable</spanx> or something like that?)</em></t>

</section>
<section anchor="signature-only-policy-with-administrator-override"><name>Signature-Only Policy with Administrator Override</name>

<t>This policy is identified by <spanx style="verb">TODO</spanx>.
It means that the private key may normally only be used for signature <em>(MikeO: and MAY NOT be exported?)</em>,
but that an authorized administrator may override this in some way.</t>

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

<t>A vendor may define policies outside the list described in the list document,
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.
A verifier MUST NOT accept such a vendor-defined policy unless they fully understand the intended meaning.</t>

<t><em>(MikeO: This description reinforces a question I asked above about whether this should allow a list of policies?)</em></t>

<t>*RJK: Probably yes, then we don&#39;t have to have a sign-and-decrypt policy.</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-policy-signature-only OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1570 }
]]></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>

<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="policies-with-administrator-override"><name>Policies with Administrator Override</name>

<t>No attempt is made to define the scope of administrator override in policies which include it.
Depending on the device it may mean that,
for example, a signature-only RSA key could additional be given decrypt permission,
or it could mean that private key material could be exploited in plaintext.
The range of possibilities is to 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 possibilty of administrator override of the policy governing its use.
For example there is nothing in the signature-only policy to prevent a key owner exposing a signature oracle for their key,
allowing anyone to sign with it.
In other words, verifiers should not place undue weight on the distinction between the two classes of policy.</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 


id-policy-signature-only OBJECT IDENTIFIER ::=
        { 1 3 6 1 4 1 54392 5 1570 }

]]></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:
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
UqMFV3kAAA==

-->

</rfc>

