<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.15 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bweeks-acme-device-attest-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.13.1 -->
  <front>
    <title abbrev="ACME DA">Automated Certificate Management Environment (ACME) Device Attestation Extension</title>
    <seriesInfo name="Internet-Draft" value="draft-bweeks-acme-device-attest-01"/>
    <author fullname="Brandon Weeks">
      <organization>Google</organization>
      <address>
        <email>bweeks@google.com</email>
      </address>
    </author>
    <date year="2022" month="August" day="07"/>
    <area>Security</area>
    <workgroup>ACME Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document specifies new identifiers and a challenge for the
Automated Certificate Management Environment (ACME) protocol which allows validating the identity of a device using attestation.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The Automatic Certificate Management Environment (ACME) <xref target="RFC8555"/> standard specifies methods for validating control over identifiers, such as domain names. It is also useful to be able to validate properties of the device requesting the certificate, such as the identity of the device and if the certificate key is protected by a secure cryptoprocessor.</t>
      <t>Many operating systems and device vendors offer functionality enabling a device to generate a cryptographic attestation of their identity, such as:</t>
      <ul spacing="normal">
        <li>
          <eref target="https://source.android.com/security/keystore/attestation">Android Key Attestation</eref></li>
        <li>
          <eref target="https://developers.google.com/chrome/verified-access/overview">Chrome OS Verified Access</eref></li>
        <li>
          <eref target="https://trustedcomputinggroup.org/resource/trusted-platform-module-tpm-summary/">Trusted Platform Module</eref></li>
      </ul>
      <t>Using ACME and device attestation to issue client certificates for enterprise PKI is anticipated to be the most common use case. The following variances to the ACME specification are described in this document:</t>
      <ul spacing="normal">
        <li>Addition of <tt>permanent-identifier</tt> and <tt>hardware-module</tt> identifier types.</li>
        <li>Addition of the <tt>device-attest-01</tt> challenge type to prove control of the <tt>permanent-identifier</tt> and <tt>hardware-module</tt> identifier types.</li>
        <li>The challenge response payload contains a serialized WebAuthn attestation statement format instead of an empty JSON object (<tt>{}</tt>).</li>
        <li>Accounts and external account binding being used as a mechanism to pre-authenticate requests to an enterprise CA.</li>
      </ul>
      <t>This document does not specify the attestation verification procedures. Section 13 of <xref target="WebAuthn"/> gives some guidance, however verification procedures are complex and may require changes to address future security issues.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
    </section>
    <section anchor="permanent-identifier">
      <name>Permanent Identifier</name>
      <t>A new identifier type, "permanent-identifier" is introduced to represent the identity of a device assigned by the manufacturer, typically a serial number. The name of this identifier type was chosen to align with <xref target="RFC4043"/>, it does not prescribe the lifetime of the identifier, which is at the discretion of the Assigner Authority.</t>
      <t>The identity along with the assigning organization can be included in the Subject Alternate Name Extension using the PermanentIdentifier form described in <xref target="RFC4043"/>.</t>
      <!-- Section 7.4 of RFC 8555 states "Specifications that define new identifier types must specify where in the certificate signing request these identifiers can appear." -->

<t>Clients <bcp14>MAY</bcp14> include this identifier in the certificate signing request (CSR). Alternatively if the server wishes to only issue privacy-preserving certificates, it <bcp14>MAY</bcp14> reject CSRs containing a PermanentIdentifier in the subjectAltName extension.</t>
    </section>
    <section anchor="hardware-module">
      <name>Hardware Module</name>
      <t>A new identifier type, "hardware-module" is introduced to represent the identity of the secure cryptoprocessor that generated the certificate key.</t>
      <!-- TODO: describe the certificate representation -->
<!-- TODO: describe how the CA assert the key is hardware backed without an identifier -->

<t>If the server includes HardwareModule in the subjectAltName extension the CA <bcp14>MUST</bcp14> verify that the certificate key was generated on the secure cryptoprocessor with the asserted identity and type. The key <bcp14>MUST NOT</bcp14> be able to be exported from the cryptoprocessor.</t>
      <t>If the server wishes to issue privacy-preserving certificates, it <bcp14>MAY</bcp14> omit HardwareModule from the subjectAltName extension.</t>
    </section>
    <section anchor="device-attestation-challenge">
      <name>Device Attestation Challenge</name>
      <t>The client can prove control over a permanent identifier of a device by
providing an attestation statement containing the identifier of the device.</t>
      <t>The device-attest-01 ACME challenge object has the following format:</t>
      <dl>
        <dt>type (required, string):</dt>
        <dd>
          <t>The string "device-attest-01".</t>
        </dd>
        <dt>token (required, string):</dt>
        <dd>
          <t>A random value that uniquely identifies the challenge.  This value <bcp14>MUST</bcp14> have
at least 128 bits of entropy. It <bcp14>MUST NOT</bcp14> contain any characters outside the
base64url alphabet, including padding characters ("="). See <xref target="RFC4086"/> for
additional information on randomness requirements.</t>
        </dd>
      </dl>
      <artwork><![CDATA[
{
  "type": "device-attest-01",
  "url": "https://example.com/acme/chall/Rg5dV14Gh1Q",
  "status": "pending",
  "token": "evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oA"
}
]]></artwork>
      <t>A client fulfills this challenge by constructing a key authorization (<xref target="RFC4086"/> Section 8.1)
 from the "token" value provided in the challenge and the client's
 account key. The client then generates a WebAuthn attestation object using the key authorization as the challenge.</t>
      <t>This specification borrows the WebAuthn <em>attestation object</em> representation as described in Section 6.5.4 of <xref target="WebAuthn"/> for encapsulating attestation formats, but with these modifications:</t>
      <ul spacing="normal">
        <li>The key authorization is used to form <em>attToBeSigned</em>. This replaces the concatenation of <em>authenticatorData</em> and <em>clientDataHash</em>. <em>attToBeSigned</em> is hashed using an algorithm specified by the attestation format. <!-- TODO: ^^^ perhaps add more cross-refs or context about "using an algorithm specified by the attestation format" -->
        </li>
        <li>The <em>authData</em> field is unused and <bcp14>SHOULD</bcp14> be omitted.</li>
      </ul>
      <t>A client responds with the response object containing the WebAuthn attestation object in the "attObj" field to acknowledge that the challenge can be validated by the server.</t>
      <t>On receiving a response, the server constructs and stores the key authorization from the challenge's "token" value and the current client account key.</t>
      <t>To validate a device attestation challenge, the server performs the following steps:</t>
      <ol spacing="normal" type="1"><li>Perform the verification procedures described in Section 6 of <xref target="WebAuthn"/>.</li>
        <li>Verify that key authorization conveyed by <em>attToBeSigned</em> matches the key authorization stored by the server.</li>
      </ol>
      <!-- This specification defines a new challenge response field `attObj` to contain WebAuthn attestation objects as described in Section 7.5.1 of {{RFC8555}}. -->

<artwork><![CDATA[
POST /acme/chall/Rg5dV14Gh1Q
Host: example.com
Content-Type: application/jose+json

{
  "protected": base64url({
    "alg": "ES256",
    "kid": "https://example.com/acme/acct/evOfKhNU60wg",
    "nonce": "SS2sSl1PtspvFZ08kNtzKd",
    "url": "https://example.com/acme/chall/Rg5dV14Gh1Q"
  }),
  "payload": base64url({
    "attObj": base64url(/* WebAuthn attestation object */),
  }),
  "signature": "Q1bURgJoEslbD1c5...3pYdSMLio57mQNN4"
}
]]></artwork>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>See Section 13 of <xref target="WebAuthn"/> for additional security considerations related to attestation statement formats, including certificate revocation.</t>
      <t>Key attestation statements may include a variety of information in addition to the public key being attested. While not described in this document, the server <bcp14>MAY</bcp14> use any policy when evaluating this information. This evaluation can result in rejection of a certificate request that features a verifiable key attestation for the public key contained in the request. For example, an attestation statement may indicate use of an unacceptable firmware version.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="acme-identifier-types">
        <name>ACME Identifier Types</name>
        <t>The "ACME Validation Methods" registry is to be updated to include the following entries:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">permanent-identifier</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">hardware-module</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="acme-validation-method">
        <name>ACME Validation Method</name>
        <t>The "ACME Validation Methods" registry is to be updated to include the following entry:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Identifier Type</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">device-attest-01</td>
              <td align="left">permanent-identifier</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <!-- Begin WebAuthn registry text -->
<!-- Editor's note: the below text was written by Carl Wallance as part of draft-wallace-lamps-key-attestation-ext. These registries only need to be established by a single document, so if they are established by another document prior to this document being approved, this text will be removed and replaced with a reference to the other document.  -->

</section>
      <section anchor="attestation-statement-formats">
        <name>Attestation statement formats</name>
        <t><xref section="2.1" sectionFormat="of" target="RFC8809"/> describes registration of new attestation statement format types used when authenticating users via <xref target="WebAuthn"/>. This specification reuses the same format, but, because the context for use is different, a different registry is required. This section defines IANA registries for W3C Web Authentication (WebAuthn) attestation statement format identifiers and extension identifiers used in the context of a certificate request. This specification establishes two registries:</t>
        <ul spacing="normal">
          <li>the "WebAuthn Attestation Statement Format Identifiers for Certificate Request Protocols" registry</li>
          <li>the "WebAuthn Extension Identifiers for Certificate Request Protocols" registry</li>
        </ul>
        <t>Any additional processes established by the expert(s) after the publication of this document will be recorded on the registry web page at the discretion of the expert(s), who may differ from the experts associated with the registry established by <xref target="RFC8809"/>.</t>
        <section anchor="webauthn-attestation-statement-format-identifiers-for-certificate-request-protocols">
          <name>WebAuthn Attestation Statement Format Identifiers for Certificate Request Protocols</name>
          <t>WebAuthn attestation statement format identifiers are strings whose semantic, syntactic, and string-matching criteria are specified in the "Attestation Statement Format Identifiers" (https://www.w3.org/TR/2019/REC-webauthn-1-20190304/#sctn-attstn-fmt-ids) section of <xref target="WebAuthn"/>, along with the concepts of attestation and attestation statement formats.</t>
          <t>Registered attestation statement format identifiers are those that have been added to the registry by following the procedure in <xref target="registering-attestation-statement-format-identifiers"/>.</t>
          <t>Each attestation statement format identifier added to this registry <bcp14>MUST</bcp14> be unique amongst the set of registered attestation statement format identifiers.</t>
          <t>Registered attestation statement format identifiers <bcp14>MUST</bcp14> be a maximum of 32 octets in length and <bcp14>MUST</bcp14> consist only of printable ASCII [RFC20] characters, excluding backslash and double quote, i.e., VCHAR as defined in [RFC5234] but without %x22 and %x5c.  Attestation statement format identifiers are case sensitive and may not match other registered identifiers in a case-insensitive manner unless the designated experts determine that there is a compelling reason to allow an exception.</t>
          <section anchor="registering-attestation-statement-format-identifiers">
            <name>Registering Attestation Statement Format Identifiers</name>
            <t>WebAuthn attestation statement format identifiers are registered using the Specification Required policy (see Section 4.6 of [RFC8126]).</t>
            <t>The "WebAuthn Attestation Statement Format Identifiers for Certificate Request Protocols" registry is located at <eref target="https://www.iana.org/assignments/webauthn_for_certreq">https://www.iana.org/assignments/webauthn_for_certreq</eref>.  Registration requests can be made by following the instructions located there or by sending an email to the webauthn-for-certreq-reg-review@ietf.org mailing list.</t>
            <t>Registration requests consist of at least the following information:</t>
            <ul spacing="normal">
              <li>
                <t>WebAuthn Attestation Statement Format Identifier:
                </t>
                <ul spacing="normal">
                  <li>An identifier meeting the requirements given in <xref target="webauthn-attestation-statement-format-identifiers-for-certificate-request-protocols"/>.</li>
                </ul>
              </li>
              <li>
                <t>Description:
                </t>
                <ul spacing="normal">
                  <li>A relatively short description of the attestation format.</li>
                </ul>
              </li>
              <li>
                <t>Specification Document(s):
                </t>
                <ul spacing="normal">
                  <li>Reference to the document or documents that specify the attestation statement format.</li>
                </ul>
              </li>
              <li>
                <t>Change Controller:
                </t>
                <ul spacing="normal">
                  <li>For Standards Track RFCs, list "IETF".  For others, give the name of the responsible party.  Other details (e.g., postal address, email address, home page URI) may also be included.</li>
                </ul>
              </li>
              <li>
                <t>Notes:
                </t>
                <ul spacing="normal">
                  <li>[optional]</li>
                </ul>
              </li>
            </ul>
            <t>Registrations <bcp14>MUST</bcp14> reference a freely available, stable specification, e.g., as described in Section 4.6 of [RFC8126].  This specification <bcp14>MUST</bcp14> include security and privacy considerations relevant to the attestation statement format.</t>
            <t>Note that WebAuthn attestation statement format identifiers can be registered by third parties (including the expert(s) themselves), if the expert(s) determines that an unregistered attestation statement format is widely deployed and not likely to be registered in a timely manner otherwise.  Such registrations still are subject to the requirements defined, including the need to reference a specification.</t>
          </section>
          <section anchor="registration-request-processing">
            <name>Registration Request Processing</name>
            <t>As noted in <xref target="registering-attestation-statement-format-identifiers"/>, WebAuthn attestation statement format identifiers are registered using the Specification Required policy.</t>
            <t>The expert(s) will clearly identify any issues that cause a registration to be refused, such as an incompletely specified attestation format.</t>
            <t>When a request is approved, the expert(s) will inform IANA, and the registration will be processed.  The IESG is the arbiter of any objection.</t>
          </section>
          <section anchor="initial-values-in-the-webauthn-attestation-statement-format-identifiers-for-certificate-request-protocols-registry">
            <name>Initial Values in the WebAuthn Attestation Statement Format Identifiers for Certificate Request Protocols Registry</name>
            <t>The initial values for the "WebAuthn Attestation Statement Format Identifiers for Certificate Request Protocols" registry have been populated with the values listed in the "WebAuthn Attestation Statement Format Identifier Registrations" (https://www.w3.org/TR/2019/REC-webauthn-1-20190304/#sctn-att-fmt-reg) section of <xref target="WebAuthn"/>.  Also, the Change Controller entry for each of those registrations is:</t>
            <ul spacing="normal">
              <li>
                <t>Change Controller:
                </t>
                <ul spacing="normal">
                  <li>W3C Web Authentication Working Group (public-webauthn@w3.org)</li>
                </ul>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="webauthn-extension-identifiers-for-certificate-request-protocols">
          <name>WebAuthn Extension Identifiers for Certificate Request Protocols</name>
          <t>WebAuthn extension identifiers are strings whose semantic, syntactic, and string-matching criteria are specified in the "Extension Identifiers" (https://www.w3.org/TR/2019/REC-webauthn-1-20190304/#sctn-extension-id) section of <xref target="WebAuthn"/>.</t>
          <t>Registered extension identifiers are those that have been added to the registry by following the procedure in <xref target="registering-extension-identifiers"/>.</t>
          <t>Each extension identifier added to this registry <bcp14>MUST</bcp14> be unique amongst the set of registered extension identifiers.</t>
          <t>Registered extension identifiers <bcp14>MUST</bcp14> be a maximum of 32 octets in length and <bcp14>MUST</bcp14> consist only of printable ASCII characters, excluding backslash and double quote, i.e., VCHAR as defined in [RFC5234] but without %x22 and %x5c.  Extension identifiers are case sensitive and may not match other registered identifiers in a case-insensitive manner unless the designated experts determine that there is a compelling reason to allow an exception.</t>
          <section anchor="registering-extension-identifiers">
            <name>Registering Extension Identifiers</name>
            <t>WebAuthn extension identifiers are registered using the Specification Required policy (see Section 4.6 of [RFC8126]).</t>
            <t>The "WebAuthn Extension Identifiers" registry is located at <eref target="https://www.iana.org/assignments/webauthn">https://www.iana.org/assignments/webauthn</eref>.  Registration requests can be made by following the instructions located there or by sending an email to the webauthn-for-certreq-reg-review@ietf.org mailing list.</t>
            <t>Registration requests consist of at least the following information:</t>
            <ul spacing="normal">
              <li>
                <t>WebAuthn Extension Identifier:
                </t>
                <ul spacing="normal">
                  <li>An identifier meeting the requirements given in <xref target="webauthn-extension-identifiers-for-certificate-request-protocols"/>.</li>
                </ul>
              </li>
              <li>
                <t>Description:
                </t>
                <ul spacing="normal">
                  <li>A relatively short description of the extension.</li>
                </ul>
              </li>
              <li>
                <t>Specification Document(s):
                </t>
                <ul spacing="normal">
                  <li>Reference to the document or documents that specify the extension.</li>
                </ul>
              </li>
              <li>
                <t>Change Controller:
                </t>
                <ul spacing="normal">
                  <li>For Standards Track RFCs, list "IETF".  For others, give the name of the responsible party.  Other details (e.g., postal address, email address, home page URI) may also be included.</li>
                </ul>
              </li>
              <li>
                <t>Notes:
                </t>
                <ul spacing="normal">
                  <li>[optional]</li>
                </ul>
              </li>
            </ul>
            <t>Registrations <bcp14>MUST</bcp14> reference a freely available, stable specification, e.g., as described in Section 4.6 of [RFC8126].  This specification <bcp14>MUST</bcp14> include security and privacy considerations relevant to the extension.</t>
            <t>Note that WebAuthn extensions can be registered by third parties (including the expert(s) themselves), if the expert(s) determines that an unregistered extension is widely deployed and not likely to be registered in a timely manner otherwise.  Such registrations still are subject to the requirements defined, including the need to reference a specification.</t>
          </section>
          <section anchor="registration-request-processing-1">
            <name>Registration Request Processing</name>
            <t>As noted in <xref target="registering-extension-identifiers"/>, WebAuthn extension identifiers are registered using the Specification Required policy.</t>
            <t>The expert(s) will clearly identify any issues that cause a registration to be refused, such as an incompletely specified extension.</t>
            <t>When a request is approved, the expert(s) will inform IANA, and the registration will be processed.  The IESG is the arbiter of any objection.</t>
          </section>
          <section anchor="initial-values-in-the-webauthn-extension-identifiers-registry">
            <name>Initial Values in the WebAuthn Extension Identifiers Registry</name>
            <t>The initial values for the "WebAuthn Extension Identifiers" registry have been populated with the values listed in the "WebAuthn Extension Identifier Registrations" <eref target="https://www.w3.org/TR/2019/REC-webauthn-1-20190304/#sctn-extensions-reg">https://www.w3.org/TR/2019/REC-webauthn-1-20190304/#sctn-extensions-reg</eref> section of <xref target="WebAuthn"/>.  Also, the Change Controller entry for each of those registrations is:</t>
            <ul spacing="normal">
              <li>
                <t>Change Controller:
                </t>
                <ul spacing="normal">
                  <li>W3C Web Authentication Working Group (public-webauthn@w3.org)</li>
                </ul>
              </li>
            </ul>
            <!-- End WebAuthn registry text -->

</section>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="RFC4043">
        <front>
          <title>Internet X.509 Public Key Infrastructure Permanent Identifier</title>
          <author fullname="D. Pinkas" initials="D." surname="Pinkas">
            <organization/>
          </author>
          <author fullname="T. Gindin" initials="T." surname="Gindin">
            <organization/>
          </author>
          <date month="May" year="2005"/>
          <abstract>
            <t>This document defines a new form of name, called permanent identifier, that may be included in the subjectAltName extension of a public key certificate issued to an entity.</t>
            <t>The permanent identifier is an optional feature that may be used by a CA to indicate that two or more certificates relate to the same entity, even if they contain different subject name (DNs) or different names in the subjectAltName extension, or if the name or the affiliation of that entity stored in the subject or another name form in the subjectAltName extension has changed.</t>
            <t>The subject name, carried in the subject field, is only unique for each subject entity certified by the one CA as defined by the issuer name field.  However, the new name form can carry a name that is unique for each subject entity certified by a CA.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4043"/>
        <seriesInfo name="DOI" value="10.17487/RFC4043"/>
      </reference>
      <reference anchor="RFC8555">
        <front>
          <title>Automatic Certificate Management Environment (ACME)</title>
          <author fullname="R. Barnes" initials="R." surname="Barnes">
            <organization/>
          </author>
          <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews">
            <organization/>
          </author>
          <author fullname="D. McCarney" initials="D." surname="McCarney">
            <organization/>
          </author>
          <author fullname="J. Kasten" initials="J." surname="Kasten">
            <organization/>
          </author>
          <date month="March" year="2019"/>
          <abstract>
            <t>Public Key Infrastructure using X.509 (PKIX) certificates are used for a number of purposes, the most significant of which is the authentication of domain names.  Thus, certification authorities (CAs) in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate.  As of this writing, this verification is done through a collection of ad hoc mechanisms.  This document describes a protocol that a CA and an applicant can use to automate the process of verification and certificate issuance.  The protocol also provides facilities for other certificate management functions, such as certificate revocation.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8555"/>
        <seriesInfo name="DOI" value="10.17487/RFC8555"/>
      </reference>
      <reference anchor="RFC8809">
        <front>
          <title>Registries for Web Authentication (WebAuthn)</title>
          <author fullname="J. Hodges" initials="J." surname="Hodges">
            <organization/>
          </author>
          <author fullname="G. Mandyam" initials="G." surname="Mandyam">
            <organization/>
          </author>
          <author fullname="M. Jones" initials="M." surname="Jones">
            <organization/>
          </author>
          <date month="August" year="2020"/>
          <abstract>
            <t>This specification defines IANA registries for W3C Web Authentication (WebAuthn) attestation statement format identifiers and extension identifiers.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8809"/>
        <seriesInfo name="DOI" value="10.17487/RFC8809"/>
      </reference>
      <reference anchor="WebAuthn" target="https://www.w3.org/TR/webauthn-2/">
        <front>
          <title>Web Authentication: An API for accessing Public Key Credentials Level 2</title>
          <author fullname="Jeff Hodges">
            <organization>Google</organization>
          </author>
          <author fullname="J.C. Jones">
            <organization>Mozilla</organization>
          </author>
          <author fullname="Michael B. Jones">
            <organization>Microsoft</organization>
          </author>
          <author fullname="Akshay Kumar">
            <organization>Microsoft</organization>
          </author>
          <author fullname="Emil Lundberg">
            <organization>Yubico</organization>
          </author>
          <date year="2021" month="April"/>
        </front>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner">
            <organization/>
          </author>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba">
            <organization/>
          </author>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <reference anchor="RFC4086">
        <front>
          <title>Randomness Requirements for Security</title>
          <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
            <organization/>
          </author>
          <author fullname="J. Schiller" initials="J." surname="Schiller">
            <organization/>
          </author>
          <author fullname="S. Crocker" initials="S." surname="Crocker">
            <organization/>
          </author>
          <date month="June" year="2005"/>
          <abstract>
            <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts.  However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities.  The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
            <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult.  This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities.  It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="106"/>
        <seriesInfo name="RFC" value="4086"/>
        <seriesInfo name="DOI" value="10.17487/RFC4086"/>
      </reference>
    </references>
    <section anchor="enterprise-pki">
      <name>Enterprise PKI</name>
      <t>ACME was originally envisioned for issuing certificates in the Web PKI, however this extension will primarily be useful in enterprise PKI. The subsection below covers some operational considerations for an ACME-based enterprise CA.
<!-- TODO: ^^^ perhaps also mention/cover IoT attestation PKI usecases -->
      </t>
      <section anchor="external-account-binding">
        <name>External Account Binding</name>
        <t>An enterprise CA likely only wants to receive requests from authorized devices. It is <bcp14>RECOMMENDED</bcp14> that the server require a value for the "externalAccountBinding" field to be
present in "newAccount" requests.</t>
        <t>If an enterprise CA desires to limit the number of certificates that can be requested with a given account, including limiting an account to a single certificate. After the desired number of certificates have been issued to an account, the server <bcp14>MAY</bcp14> revoke the account as described in Section 7.1.2 of <xref target="RFC8555"/>.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
TAAA

-->

</rfc>
