<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.5 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-csr-attestation-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.2 -->
  <front>
    <title abbrev="Remote Attestation with CSRs">Use of Remote Attestation with Certificate Signing Requests</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-csr-attestation-03"/>
    <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="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization>Siemens</organization>
      <address>
        <email>Hannes.Tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <date year="2024" month="February" day="12"/>
    <keyword>PKI</keyword>
    <keyword>PKCS#10</keyword>
    <keyword>CFMF</keyword>
    <keyword>Attestation</keyword>
    <keyword>Evidence</keyword>
    <keyword>Certificate Signing Requests</keyword>
    <abstract>
      <?line 90?>

<t>A client requesting a certificate from a Certification Authority (CA) may wish to offer believable claims about the protections afforded to the corresponding private key, such as whether the private key resides on a hardware security module or the protection capabilities provided by the hardware.</t>
      <t>This document describes how to encode Evidence produced by an Attester for inclusion in Certificate Signing Requests (CSRs), and any certificates necessary for validating it.</t>
      <t>Including Evidence along with a CSR can help to improve the assessment of the security posture for the private key, and the trustworthiness properties of the submitted key to the requested certificate profile. These Evidence Claims can include information about the hardware component's manufacturer, the version of installed or running firmware, the version of software installed or running in layers above the firmware, or the presence of hardware components providing specific protection capabilities or shielded locations (e.g., to protect keys).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://lamps-wg.github.io/csr-attestation/draft-ounsworth-csr-attestation.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-lamps-csr-attestation/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/lamps-wg/csr-attestation"/>.</t>
    </note>
  </front>
  <middle>
    <?line 99?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>When requesting a certificate from a Certification Authority (CA), a PKI end entity may wish to include Evidence of the security properties of its environments in which the private keys are stored in that request.
This Evidence can be appraised by authoritative entities, such as a Registration Authority (RA) or a CA, or associated trusted Verifiers as part of validating an incoming certificate request against given certificate policies. Regulatory bodies are beginning to require proof-of-hardware residency for certain classifications of cryptographic keys. At the time of writing, the most notable example is the Code-Signing Baseline Requirements <xref target="CSBR"/> document maintained by the CA/Browser Forum, which requires compliant CAs to "ensure that a Subscriber’s Private Key is generated, stored,
and used in a secure environment that has controls to prevent theft or misuse".</t>
      <t>This specification defines an attribute and an extension that allow for conveyance of Evidence in Certificate Signing Requests (CSRs) in either PKCS#10 <xref target="RFC2986"/> or Certificate Request Message Format (CRMF) <xref target="RFC4211"/> payloads which provides an elegant and automatable mechanism for meeting requirements such as those in the CA/B Forum's <xref target="CSBR"/>.</t>
      <t>As outlined in the RATS Architecture <xref target="RFC9334"/>, an Attester (typically
a device) produces a signed collection of Claims that constitutes Evidence about its running environment.
While the term "attestation" is not defined in RFC 9334, it was later defined in <xref target="I-D.ietf-rats-tpm-based-network-device-attest"/>, it refers to the activity of producing and appraising remote attestation Evidence.
A Relying Party may consult an Attestation Result produced by a Verifier that has appraised the Evidence in making policy decisions about the trustworthiness of the
Target Environment being assessed via appraisal of Evidence. <xref target="architecture"/> provides the basis to illustrate in this document how the various roles
in the RATS architecture map to a certificate requester and a CA/RA.</t>
      <t>At the time of writing, several standard and several proprietary attestation technologies
are in use.
This specification thereby is intended to be as technology-agnostic as it is feasible with respect to implemented remote attestation technologies. Instead, it focuses on (1) the conveyance of Evidence via CSRs while making minimal assumptions about content or format of the transported Evidence and (2) the conveyance of sets of certificates used for validation of Evidence.
The certificates typically contain one or more certification paths
rooted in a device manufacture trust anchor and the leaf certificate being
on the device in question; the latter is the Attestation Key that signs the Evidence statement.</t>
      <t>This document specifies a CSR Attribute (or Extension for Certificate Request Message Format (CRMF) CSRs) for carrying Evidence. Evidence can be placed into an EvidenceStatement along with an OID to identify its type and optionally a hint to the Relying Party about how to verify it. A set of EvidenceStatements may be grouped together along with the set of CertificateAlternatives needed to validate them to form a EvidenceBundle. One or more EvidenceBundles may be placed into the id-aa-evidence CSR Attribute (or CRFM Extension).</t>
      <t>A CSR may contain one or more Evidence payloads, for example Evidence
asserting the storage properties of a private key as well Evidence
asserting firmware version and other general properties
of the device, or Evidence signed using different cryptographic
algorithms.</t>
      <t>With these attributes, additional
information information is available to an RA or CA which may be used
to decide whether to issue a certificate and what certificate profile
to apply. The scope of this document is, however,
limited to the conveyance of Evidence within CSR. The exact format of the
Evidence being conveyed is defined in various standard and proprietary
specifications.</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>
      <?line -18?>

<t>This document re-uses the terms defined in <xref target="RFC9334"/> related to remote
attestation. Readers of this document are assumed to be familiar with
the following terms: Evidence, Claim, Attestation Results (AR), Attester,
Verifier, Target Environment, Attesting Environment, and Relying Party (RP).</t>
      <t>The term "Certification Request" message is defined in <xref target="RFC2986"/>.
Specifications, such as <xref target="RFC7030"/>, later introduced the term
"Certificate Signing Request (CSR)" to refer to the Certification
Request message. While the term "Certification Signing Request"
would have been correct, the mistake was unnoticed. In the meanwhile
CSR is an abbreviation used beyond PKCS#10. Hence, it is equally
applicable to other protocols that use a different syntax and
even a different encoding, in particular this document also
considers Certificate Request Message Format (CRMF) <xref target="RFC4211"/>
to be "CSRs". We use the terms "CSR" and Certificate Request
message interchangeably.</t>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t><xref target="fig-arch"/> shows the high-level communication pattern of the RATS
background check model where the Attester transmits the Evidence in the
CSR to the RA and the CA, which is subsequently forwarded to the Verifier.
The Verifier appraises the received Evidence and computes an Attestation
Result, which is then processed by the RA/CA prior to the certificate
issuance.</t>
      <t>In addition to the background check model the RATS architecture also
specifies the passport model and combinations. See Section 5.2 of
<xref target="RFC9334"/> for a description of the passport model. The passport model
requires the Attester to transmit Evidence to the Verifier directly in order
to obtain the Attestation Result, which is then forwarded to the Relying
Party. This specification utilizes the background model since CSRs are
often used as one-shot messages where no direct real-time interaction
between the Attester and the Verifier is possible.</t>
      <t>Note that the Verifier is a logical role that may be included in the
RA/CA product. In this case the Relying Party and Verifier collapse into a
single entity. The Verifier functionality can, however,
also be kept separate from the RA/CA functionality, such as a utility or
library provided by the device manufacturer. For example,
security concerns may require parsers of Evidence formats to be logically
or physically separated from the core CA functionality. The interface
by which the Relying Party passes Evidence to the Verifier and receives back
Attestation Results may be proprietary or standardized, but in any case is
out-of-scope for this document.</t>
      <figure anchor="fig-arch">
        <name>Architecture with Background Check Model.</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="536" viewBox="0 0 536 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,176 L 8,240" fill="none" stroke="black"/>
              <path d="M 112,176 L 112,240" fill="none" stroke="black"/>
              <path d="M 240,32 L 240,96" fill="none" stroke="black"/>
              <path d="M 240,176 L 240,240" fill="none" stroke="black"/>
              <path d="M 280,104 L 280,192" fill="none" stroke="black"/>
              <path d="M 312,96 L 312,168" fill="none" stroke="black"/>
              <path d="M 352,32 L 352,96" fill="none" stroke="black"/>
              <path d="M 368,176 L 368,240" fill="none" stroke="black"/>
              <path d="M 240,32 L 352,32" fill="none" stroke="black"/>
              <path d="M 240,96 L 352,96" fill="none" stroke="black"/>
              <path d="M 8,176 L 112,176" fill="none" stroke="black"/>
              <path d="M 240,176 L 272,176" fill="none" stroke="black"/>
              <path d="M 288,176 L 368,176" fill="none" stroke="black"/>
              <path d="M 112,192 L 232,192" fill="none" stroke="black"/>
              <path d="M 248,192 L 280,192" fill="none" stroke="black"/>
              <path d="M 8,240 L 112,240" fill="none" stroke="black"/>
              <path d="M 240,240 L 368,240" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="320,168 308,162.4 308,173.6" fill="black" transform="rotate(90,312,168)"/>
              <polygon class="arrowhead" points="288,104 276,98.4 276,109.6" fill="black" transform="rotate(270,280,104)"/>
              <polygon class="arrowhead" points="240,192 228,186.4 228,197.6" fill="black" transform="rotate(0,232,192)"/>
              <g class="text">
                <text x="392" y="52">Compare</text>
                <text x="460" y="52">Evidence</text>
                <text x="300" y="68">Verifier</text>
                <text x="392" y="68">against</text>
                <text x="388" y="84">policy</text>
                <text x="236" y="132">Evidence</text>
                <text x="368" y="132">Attestation</text>
                <text x="348" y="148">Result</text>
                <text x="408" y="196">Compare</text>
                <text x="488" y="196">Attestation</text>
                <text x="60" y="212">Attester</text>
                <text x="172" y="212">Evidence</text>
                <text x="280" y="212">Relying</text>
                <text x="404" y="212">Result</text>
                <text x="464" y="212">against</text>
                <text x="40" y="228">(/w</text>
                <text x="76" y="228">HSM)</text>
                <text x="148" y="228">in</text>
                <text x="176" y="228">CSR</text>
                <text x="272" y="228">Party</text>
                <text x="328" y="228">(RA/CA)</text>
                <text x="404" y="228">policy</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
                              .-------------.
                              |             | Compare Evidence
                              |   Verifier  | against
                              |             | policy
                              '--------+----'
                                   ^   |
                          Evidence |   | Attestation
                                   |   | Result
                                   |   v
 .------------.               .----|----------.
 |            +-------------->|----'          | Compare Attestation
 |  Attester  |   Evidence    | Relying       | Result against
 |  (/w HSM)  |   in CSR      | Party (RA/CA) | policy
 '------------'               '---------------'
]]></artwork>
        </artset>
      </figure>
      <t>As discussed in RFC 9334, different security and privacy aspects need to be
considered. For example, Evidence may need to be protected against replay and
Section 10 of RFC 9334 lists approach for offering freshness. There are also
concerns about the exposure of persistent identifiers by utilizing attestation
technology, which are discussed in Section 11 of RFC 9334. Finally, the keying
material used by the Attester needs to be protected against unauthorized access,
and against signing arbitrary content that originated from outside the device.
This aspect is described in Section 12 of RFC 9334. Most of these aspects are,
however, outside the scope of this specification but relevant for use with a
given attestation technology. The focus of this specification is on the
transport of Evidence from the Attester to the Relying Party via existing
CSR messages.</t>
    </section>
    <section anchor="information-model">
      <name>Information Model</name>
      <section anchor="interaction-with-an-hsm">
        <name>Interaction with an HSM</name>
        <t>This specification is intended to be applicable both in cases where the CSR
is constructed internally or externally to the attesting environment, from the
point of view of the calling application.</t>
        <t>Cases where the CSR is generated internally to the attesting environment
are straightforward: the HSM generates and embeds the Evidence and the corresponding
certificate chains when constructing the CSR.</t>
        <t>Cases where the CSR is generated externally may require extra round-trips of communication
between the CSR generator and the attesting environment, first to obtain
the necessary Evidence about the subject key, and then to use
the subject key to sign the CSR. For example, consider a CSR generated by
a popular crypto library about a subject key stored on a PKCS#11 <xref target="PKCS11"/> device.</t>
        <t>As an example, assuming that the HSM is, or contains, the attesting environment, and
some cryptographic library is assembling a CSR by interacting with the HSM over some
network protocol, then the interaction would conceptually be:</t>
        <figure anchor="fig-csr-client-p11">
          <name>Example interaction between CSR generator and HSM.</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="384" viewBox="0 0 384 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,176 L 8,208" fill="none" stroke="black"/>
                <path d="M 160,32 L 160,80" fill="none" stroke="black"/>
                <path d="M 184,176 L 184,208" fill="none" stroke="black"/>
                <path d="M 200,88 L 200,304" fill="none" stroke="black"/>
                <path d="M 240,32 L 240,80" fill="none" stroke="black"/>
                <path d="M 328,32 L 328,80" fill="none" stroke="black"/>
                <path d="M 352,88 L 352,304" fill="none" stroke="black"/>
                <path d="M 376,32 L 376,80" fill="none" stroke="black"/>
                <path d="M 160,32 L 240,32" fill="none" stroke="black"/>
                <path d="M 328,32 L 376,32" fill="none" stroke="black"/>
                <path d="M 160,80 L 240,80" fill="none" stroke="black"/>
                <path d="M 328,80 L 376,80" fill="none" stroke="black"/>
                <path d="M 208,128 L 344,128" fill="none" stroke="black"/>
                <path d="M 208,160 L 344,160" fill="none" stroke="black"/>
                <path d="M 8,176 L 184,176" fill="none" stroke="black"/>
                <path d="M 8,208 L 184,208" fill="none" stroke="black"/>
                <path d="M 208,256 L 344,256" fill="none" stroke="black"/>
                <path d="M 208,288 L 344,288" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="352,256 340,250.4 340,261.6" fill="black" transform="rotate(0,344,256)"/>
                <polygon class="arrowhead" points="352,128 340,122.4 340,133.6" fill="black" transform="rotate(0,344,128)"/>
                <polygon class="arrowhead" points="216,288 204,282.4 204,293.6" fill="black" transform="rotate(180,208,288)"/>
                <polygon class="arrowhead" points="216,160 204,154.4 204,165.6" fill="black" transform="rotate(180,208,160)"/>
                <g class="text">
                  <text x="196" y="52">Crypto</text>
                  <text x="352" y="52">HSM</text>
                  <text x="200" y="68">Library</text>
                  <text x="264" y="116">getEvidence()</text>
                  <text x="32" y="196">CSR</text>
                  <text x="56" y="196">=</text>
                  <text x="120" y="196">assembleCSR()</text>
                  <text x="192" y="196">-</text>
                  <text x="248" y="244">sign(CSR)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                   +---------+          +-----+
                   | Crypto  |          | HSM |
                   | Library |          |     |
                   +---------+          +-----+
                        |                  |
                        | getEvidence()    |
                        |----------------->|
                        |                  |
                        |<-----------------|
+---------------------+ |                  |
| CSR = assembleCSR() |-|                  |
+---------------------+ |                  |
                        |                  |
                        | sign(CSR)        |
                        |----------------->|
                        |                  |
                        |<-----------------|
                        |                  |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="implementation-strategies">
        <name>Implementation Strategies</name>
        <t>To support a number of different use cases for the transmission of
Evidence in a CSR (together with certificate chains) the structure
shown in <xref target="fig-info-model"/> is used.</t>
        <t>On a high-level, the structure can be explained as follows:
A PKCS#10 attribute or a CRMF extension contains one or more
EvidenceBundle structures. Each EvidenceBundle contains one or more
EvidenceStatement structures as well as one or more
CertificateAlternatives which enable to carry various format of
certificates.</t>
        <figure anchor="fig-info-model">
          <name>Information Model for CSR Evidence Conveyance.</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="488" viewBox="0 0 488 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
                <path d="M 8,256 L 8,288" fill="none" stroke="black"/>
                <path d="M 80,96 L 80,256" fill="none" stroke="black"/>
                <path d="M 160,144 L 160,256" fill="none" stroke="black"/>
                <path d="M 176,32 L 176,96" fill="none" stroke="black"/>
                <path d="M 176,256 L 176,288" fill="none" stroke="black"/>
                <path d="M 272,128 L 272,224" fill="none" stroke="black"/>
                <path d="M 272,256 L 272,336" fill="none" stroke="black"/>
                <path d="M 432,256 L 432,336" fill="none" stroke="black"/>
                <path d="M 480,128 L 480,224" fill="none" stroke="black"/>
                <path d="M 8,32 L 176,32" fill="none" stroke="black"/>
                <path d="M 8,96 L 176,96" fill="none" stroke="black"/>
                <path d="M 272,128 L 480,128" fill="none" stroke="black"/>
                <path d="M 160,144 L 272,144" fill="none" stroke="black"/>
                <path d="M 272,160 L 480,160" fill="none" stroke="black"/>
                <path d="M 272,224 L 480,224" fill="none" stroke="black"/>
                <path d="M 8,256 L 176,256" fill="none" stroke="black"/>
                <path d="M 272,256 L 432,256" fill="none" stroke="black"/>
                <path d="M 176,272 L 272,272" fill="none" stroke="black"/>
                <path d="M 8,288 L 176,288" fill="none" stroke="black"/>
                <path d="M 272,288 L 432,288" fill="none" stroke="black"/>
                <path d="M 272,336 L 432,336" fill="none" stroke="black"/>
                <g class="text">
                  <text x="56" y="52">PKCS#10</text>
                  <text x="100" y="52">or</text>
                  <text x="132" y="52">CRMF</text>
                  <text x="64" y="68">Attribute</text>
                  <text x="116" y="68">or</text>
                  <text x="64" y="84">Extension</text>
                  <text x="180" y="132">(1</text>
                  <text x="204" y="132">or</text>
                  <text x="240" y="132">more)</text>
                  <text x="376" y="148">CertificateAlternatives</text>
                  <text x="328" y="180">Certificate</text>
                  <text x="388" y="180">OR</text>
                  <text x="320" y="196">TypedCert</text>
                  <text x="388" y="196">OR</text>
                  <text x="336" y="212">TypedFlatCert</text>
                  <text x="28" y="228">(1</text>
                  <text x="52" y="228">or</text>
                  <text x="48" y="244">more)</text>
                  <text x="220" y="244">(1</text>
                  <text x="244" y="244">or</text>
                  <text x="240" y="260">more)</text>
                  <text x="84" y="276">EvidenceBundle</text>
                  <text x="352" y="276">EvidenceStatement</text>
                  <text x="300" y="308">Type</text>
                  <text x="320" y="324">Statement</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
 +--------------------+
 |  PKCS#10 or CRMF   |
 |  Attribute or      |
 |  Extension         |
 +--------+-----------+
          |
          |           (1 or more) +-------------------------+
          |         +-------------+ CertificateAlternatives |
          |         |             +-------------------------+
          |         |             | Certificate OR          |
          |         |             | TypedCert   OR          |
          |         |             | TypedFlatCert           |
   (1 or  |         |             +-------------------------+
    more) |         |      (1 or
 +--------+---------+-+     more) +-------------------+
 |  EvidenceBundle    +-----------+ EvidenceStatement |
 +--------------------+           +-------------------+
                                  | Type              |
                                  | Statement         |
                                  +-------------------+
]]></artwork>
          </artset>
        </figure>
        <t>The following use cases are supported:</t>
        <t>Single Attester, which only distributes Evidence without any certificate chains,
i.e. the Verifier is assumed to be in possession of the certificate chain already
or there is no certificate chain because the Verifier directly trusts the Attester key.
As a result a single EvidenceBundle is included
in a CSR that contains a single EvidenceStatement without the CertificateAlternatives
structure. <xref target="fig-single-attester"/> shows this use case.</t>
        <figure anchor="fig-single-attester">
          <name>Use Case 1: Single Attester without Certificate Chain.</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="184" viewBox="0 0 184 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
                <path d="M 176,32 L 176,96" fill="none" stroke="black"/>
                <path d="M 8,32 L 176,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 176,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 176,96" fill="none" stroke="black"/>
                <g class="text">
                  <text x="84" y="52">EvidenceBundle</text>
                  <text x="88" y="84">EvidenceStatement</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
  +--------------------+
  |  EvidenceBundle    |
  +--------------------+
  | EvidenceStatement  |
  +--------------------+
]]></artwork>
          </artset>
        </figure>
        <t>A single Attester, which shares Evidence together with a certificate chain.
The CSR conveys a single EvidenceBundle with a single EvidenceStatement
and a single CertificateAlternatives structure. <xref target="fig-single-attester-with-chain"/> shows
this use case.</t>
        <figure anchor="fig-single-attester-with-chain">
          <name>Use Case 2: Single Attester with Certificate Chain.</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="144" width="224" viewBox="0 0 224 144" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,112" fill="none" stroke="black"/>
                <path d="M 216,32 L 216,112" fill="none" stroke="black"/>
                <path d="M 8,32 L 216,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 216,64" fill="none" stroke="black"/>
                <path d="M 8,112 L 216,112" fill="none" stroke="black"/>
                <g class="text">
                  <text x="84" y="52">EvidenceBundle</text>
                  <text x="88" y="84">EvidenceStatement</text>
                  <text x="112" y="100">CertificateAlternatives</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
 +-------------------------+
 |  EvidenceBundle         |
 +-------------------------+
 | EvidenceStatement       |
 | CertificateAlternatives |
 +-------------------------+
]]></artwork>
          </artset>
        </figure>
        <t>In a Composite Device, which contains multiple Attesters, a collection of Evidence
statements is obtained. Imagine that each Attester returns its Evidence together with a
certificate chain. As a result, multiple EvidenceBundle structures, each carrying
an EvidenceStatement and the corresponding CertificateAlternative structure with the
certificate chain as provided by each Attester, are included in the CSR.
This may result in certificates being duplicated across multiple EvidenceBundles.
This approach does not require any processing capabilities
by a lead Attester since the information is merely forwarded. <xref target="fig-multiple-attesters"/>
shows this use case.</t>
        <figure anchor="fig-multiple-attesters">
          <name>Use Case 3: Multiple Attesters in Composite Device.</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="224" width="336" viewBox="0 0 336 224" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,192" fill="none" stroke="black"/>
                <path d="M 216,32 L 216,192" fill="none" stroke="black"/>
                <path d="M 8,32 L 216,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 216,64" fill="none" stroke="black"/>
                <path d="M 8,112 L 216,112" fill="none" stroke="black"/>
                <path d="M 8,144 L 216,144" fill="none" stroke="black"/>
                <path d="M 8,192 L 216,192" fill="none" stroke="black"/>
                <path d="M 216,112 L 236,152" fill="none" stroke="black"/>
                <path d="M 216,32 L 236,72" fill="none" stroke="black"/>
                <path d="M 216,112 L 236,72" fill="none" stroke="black"/>
                <path d="M 216,192 L 236,152" fill="none" stroke="black"/>
                <g class="text">
                  <text x="84" y="52">EvidenceBundle</text>
                  <text x="160" y="52">(1)</text>
                  <text x="276" y="68">Provided</text>
                  <text x="324" y="68">by</text>
                  <text x="88" y="84">EvidenceStatement</text>
                  <text x="276" y="84">Attester</text>
                  <text x="320" y="84">1</text>
                  <text x="112" y="100">CertificateAlternatives</text>
                  <text x="84" y="132">EvidenceBundle</text>
                  <text x="160" y="132">(2)</text>
                  <text x="276" y="148">Provided</text>
                  <text x="324" y="148">by</text>
                  <text x="88" y="164">EvidenceStatement</text>
                  <text x="276" y="164">Attester</text>
                  <text x="320" y="164">2</text>
                  <text x="112" y="180">CertificateAlternatives</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
  +-------------------------+
  |  EvidenceBundle (1)     |\
  +-------------------------+ \ Provided by
  | EvidenceStatement       | / Attester 1
  | CertificateAlternatives |/
  +-------------------------+
  |  EvidenceBundle (2)     |\
  +-------------------------+ \ Provided by
  | EvidenceStatement       | / Attester 2
  | CertificateAlternatives |/
  +-------------------------+
]]></artwork>
          </artset>
        </figure>
        <t>In the last scenario, we also assume a Composite Device with additional processing
capabilities of the Leader Attester, which parses the certificate chains provided by
all Attesters in the device and removes redundant certificate information. The
benefit of this approach is the reduced transmission overhead. There are several
implementation strategies and we show two in <xref target="fig-multiple-attesters-optimized"/>.</t>
        <figure anchor="fig-multiple-attesters-optimized">
          <name>Use Case 4: Multiple Attesters in Composite Device (with Optimization).</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="544" width="464" viewBox="0 0 464 544" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 16,320 L 16,528" fill="none" stroke="black"/>
                <path d="M 136,64 L 136,144" fill="none" stroke="black"/>
                <path d="M 136,176 L 136,256" fill="none" stroke="black"/>
                <path d="M 264,320 L 264,528" fill="none" stroke="black"/>
                <path d="M 344,64 L 344,144" fill="none" stroke="black"/>
                <path d="M 344,176 L 344,256" fill="none" stroke="black"/>
                <path d="M 136,64 L 344,64" fill="none" stroke="black"/>
                <path d="M 136,96 L 344,96" fill="none" stroke="black"/>
                <path d="M 112,128 L 128,128" fill="none" stroke="black"/>
                <path d="M 136,144 L 344,144" fill="none" stroke="black"/>
                <path d="M 136,176 L 344,176" fill="none" stroke="black"/>
                <path d="M 136,208 L 344,208" fill="none" stroke="black"/>
                <path d="M 112,240 L 128,240" fill="none" stroke="black"/>
                <path d="M 136,256 L 344,256" fill="none" stroke="black"/>
                <path d="M 16,320 L 264,320" fill="none" stroke="black"/>
                <path d="M 16,352 L 264,352" fill="none" stroke="black"/>
                <path d="M 16,528 L 264,528" fill="none" stroke="black"/>
                <path d="M 344,176 L 364,216" fill="none" stroke="black"/>
                <path d="M 344,64 L 364,104" fill="none" stroke="black"/>
                <path d="M 344,144 L 364,104" fill="none" stroke="black"/>
                <path d="M 344,256 L 364,216" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="136,240 124,234.4 124,245.6" fill="black" transform="rotate(0,128,240)"/>
                <polygon class="arrowhead" points="136,128 124,122.4 124,133.6" fill="black" transform="rotate(0,128,128)"/>
                <g class="text">
                  <text x="60" y="36">Implementation</text>
                  <text x="156" y="36">strategy</text>
                  <text x="212" y="36">(4a)</text>
                  <text x="212" y="84">EvidenceBundle</text>
                  <text x="288" y="84">(1)</text>
                  <text x="64" y="100">Certificate</text>
                  <text x="404" y="100">Provided</text>
                  <text x="452" y="100">by</text>
                  <text x="40" y="116">Chain</text>
                  <text x="72" y="116">+</text>
                  <text x="216" y="116">EvidenceStatement</text>
                  <text x="404" y="116">Attester</text>
                  <text x="448" y="116">1</text>
                  <text x="60" y="132">End-Entity</text>
                  <text x="240" y="132">CertificateAlternatives</text>
                  <text x="64" y="148">Certificate</text>
                  <text x="220" y="164">....</text>
                  <text x="212" y="196">EvidenceBundle</text>
                  <text x="288" y="196">(n)</text>
                  <text x="404" y="212">Provided</text>
                  <text x="452" y="212">by</text>
                  <text x="60" y="228">End-Entity</text>
                  <text x="216" y="228">EvidenceStatement</text>
                  <text x="404" y="228">Attester</text>
                  <text x="448" y="228">n</text>
                  <text x="64" y="244">Certificate</text>
                  <text x="240" y="244">CertificateAlternatives</text>
                  <text x="60" y="292">Implementation</text>
                  <text x="156" y="292">strategy</text>
                  <text x="212" y="292">(4b)</text>
                  <text x="92" y="340">EvidenceBundle</text>
                  <text x="96" y="372">EvidenceStatement</text>
                  <text x="184" y="372">(1)</text>
                  <text x="96" y="388">...</text>
                  <text x="96" y="404">EvidenceStatement</text>
                  <text x="184" y="404">(n)</text>
                  <text x="120" y="420">CertificateAlternatives</text>
                  <text x="224" y="420">{</text>
                  <text x="56" y="436">End</text>
                  <text x="100" y="436">Entity</text>
                  <text x="176" y="436">Certificate</text>
                  <text x="240" y="436">(1)</text>
                  <text x="96" y="452">...</text>
                  <text x="56" y="468">End</text>
                  <text x="100" y="468">Entity</text>
                  <text x="176" y="468">Certificate</text>
                  <text x="240" y="468">(n)</text>
                  <text x="84" y="484">&lt;Remainder</text>
                  <text x="140" y="484">of</text>
                  <text x="168" y="484">the</text>
                  <text x="96" y="500">Certificate</text>
                  <text x="172" y="500">Chain&gt;</text>
                  <text x="32" y="516">}</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
Implementation strategy (4a)

                +-------------------------+
                |  EvidenceBundle (1)     |\
  Certificate   +-------------------------+ \ Provided by
  Chain +       | EvidenceStatement       | / Attester 1
  End-Entity -->| CertificateAlternatives |/
  Certificate   +-------------------------+
                         ....
                +-------------------------+
                |  EvidenceBundle (n)     |\
                +-------------------------+ \ Provided by
  End-Entity    | EvidenceStatement       | / Attester n
  Certificate-->| CertificateAlternatives |/
                +-------------------------+

Implementation strategy (4b)

 +------------------------------+
 |  EvidenceBundle              |
 +------------------------------+
 | EvidenceStatement (1)        |
 |        ...                   |
 | EvidenceStatement (n)        |
 | CertificateAlternatives {    |
 |   End Entity Certificate (1) |
 |        ...                   |
 |   End Entity Certificate (n) |
 |   <Remainder of the          |
 |    Certificate Chain>        |
 | }                            |
 +------------------------------+
]]></artwork>
          </artset>
        </figure>
        <t>In implementation strategy (4a) we assume that each Attester is provisioned with
a unique end-entity certificate. Hence, the certificate chains will at least differ
with respect to the end-entity certificates.
The Lead Attester will therefore create multiple EvidenceBundle structures, each
will carry an EvidenceStatement followed by a certificate chain in
the CertificateAlternative structures containing most likely only the end-entity
certificate. The shared certificate chain is carried in the first entry of the
EvidenceBundle sequence to allow path validation to take place immediately after
processing the first structure. This implementation strategy may
place extra burden on the Relying Party to parse EvidenceBundles and
reconstruct certificate chains if the Verifier requires each
EvidenceStatement to be accompanied with a complete certificate chain.</t>
        <t>Implementation strategy (4b), as an alternative, requires the Lead Attester
to merge all certificate chains into a single EvidenceBundle containing a single
de-duplicated sequence of CertificateAlternatives structures. This means that each
EvidenceBundle is self-contained and any EvidenceStatement can be verified using
only the sequence of CertificateAlternatives in its bundle, but Verifiers will have
to do proper certification path building since the sequence of CertificateAlternatives
is now a cert bag and not a cert chain. This implementation strategy may
place extra burden on the Attester in order to allow the Relying Party
to treat the Evidence and Certificates as opaque content. It also may place
extra burden on the Verifier since this implementation strategy requires it to be able to
perform X.509 path building over a bag of certificates that may be out of
order or contain extraneous certificates.</t>
        <t>Note: This specification does not mandate optimizing certificate chains since
there is a trade-off between the Attester implementation complexity and the
transmission overhead.</t>
      </section>
    </section>
    <section anchor="asn1-elements">
      <name>ASN.1 Elements</name>
      <section anchor="object-identifiers">
        <name>Object Identifiers</name>
        <t>We reference <tt>id-pkix</tt> and <tt>id-aa</tt>, both defined in <xref target="RFC5912"/>.</t>
        <t>We define:</t>
        <artwork><![CDATA[
-- Arc for Evidence types
id-ata OBJECT IDENTIFIER ::= { id-pkix (TBD1) }
]]></artwork>
      </section>
      <section anchor="evidence-attribute-and-extension">
        <name>Evidence Attribute and Extension</name>
        <t>By definition, Attributes within a PKCS#10 CSR are
typed as ATTRIBUTE and within a CRMF CSR are typed as EXTENSION.
This attribute definition contains one or more
Evidence bundles of type <tt>EvidenceBundle</tt> which each contain
one or more Evidence statements of a type <tt>EvidenceStatement</tt> along with
an optional certificate chain.
This structure allows for grouping Evidence statements that share a
certificate chain.</t>
        <artwork><![CDATA[
EVIDENCE-STATEMENT ::= TYPE-IDENTIFIER

EvidenceStatementSet EVIDENCE-STATEMENT ::= {
   ... -- None defined in this document --
}
]]></artwork>
        <t>This is a mapping and ASN.1 Types for Evidence Statements to the OIDs
that identify them. These mappings are are used to construct
or parse EvidenceStatements. These would typically be Evidence Statement
formats defined in other IETF standards, defined by other standards bodies,
or vendor proprietary formats along with the OIDs that identify them.</t>
        <t>This list is left empty in this document. However, implementers should
populate it with the formats that they wish to support.</t>
        <artwork><![CDATA[
EvidenceHint ::= CHOICE {
     rfc822Name [0] IA5String,
     dNSName    [1] IA5String,
     uri        [2] IA5String,
     text       [3] UTF8String
}

EvidenceStatements ::= SEQUENCE SIZE (1..MAX) OF EvidenceStatement

EvidenceStatement ::= SEQUENCE {
   type   EVIDENCE-STATEMENT.&id({EvidenceStatementSet}),
   stmt   EVIDENCE-STATEMENT.&Type({EvidenceStatementSet}{@type}),
   hint   EvidenceHint OPTIONAL
}
]]></artwork>
        <t>The type is on OID indicating the format of the data contained in stmt.</t>
        <t>The hint is intended for an Attester to indicate to the Relying Party (RP)
which Verifier should be invoked to parse this statement. In many cases,
the type OID will already uniquely indicate which Verifier to invoke;
for example because the OID indicates a prorietary Evidence format for
which the RP has corresponding proprietary Verifier. However,
in some cases it may still be ambiguous, or the type may indicate
another layer of conceptual message wrapping in which case it is helpful
to the RP to bring this hint outside of the statement.
It is assumed that the RP must be pre-configured with a list of trusted
Verifiers and that the contents of this hint can be used to look up
the correct Verifier. Under no circumstances must the RP be tricked into
contacting an unknown and untrusted Verifier since the returned Attestation
Result must not be relied on. The format and contents of the hint are out of
scope of this document.</t>
        <artwork><![CDATA[
EvidenceBundles ::= SEQUENCE SIZE (1..MAX) OF EvidenceBundle

EvidenceBundle ::= SEQUENCE
{
  evidence EvidenceStatements,
  certs SEQUENCE SIZE (1..MAX) OF CertificateAlternatives OPTIONAL
}

id-aa-evidence OBJECT IDENTIFIER ::= { id-aa TBDAA }

-- For PKCS#10
attr-evidence ATTRIBUTE ::= {
  TYPE EvidenceBundles
  IDENTIFIED BY id-aa-evidence
}

-- For CRMF
ext-evidence EXTENSION ::= {
  SYNTAX EvidenceBundles
  IDENTIFIED BY id-aa-evidence
}
]]></artwork>
        <t>The Extension variant is intended only for use within CRMF CSRs and <bcp14>MUST NOT</bcp14> be used within X.509 certificates due to the privacy implications of publishing Evidence about the end entity's hardware environment. See <xref target="security-considerations"/> for more discussion.</t>
        <t>The <tt>certs</tt> contains a set of certificates that
may be needed to validate the contents of an Evidence statement
contained in <tt>evidence</tt>. The set of certificates should contain
the object that contains the public key needed to directly validate the
<tt>evidence</tt>.  The remaining elements should chain that data back to
an agreed upon trust anchor used for attestation. No order is implied, it is
up to the Attester and its Verifier to agree on both the order and format
of certificates contained in <tt>certs</tt>.</t>
        <t>A CSR <bcp14>MAY</bcp14> contain one or more instances of <tt>attr-evidence</tt> or <tt>ext-evidence</tt>.
This means that the <tt>SEQUENCE OF EvidenceBundle</tt> is redundant with the
ability to carry multiple <tt>attr-evidence</tt> or <tt>ext-evidence</tt> at the CSR level;
either mechanism <bcp14>MAY</bcp14> be used for carrying multiple Evidence bundles.</t>
      </section>
      <section anchor="certificatealternatives">
        <name>CertificateAlternatives</name>
        <t>This is an ASN.1 CHOICE construct used to represent an encoding of a
broad variety of certificate types.</t>
        <artwork><![CDATA[
CertificateAlternatives ::=
   CHOICE {
      cert          [0] Certificate,
      typedCert     [1] TypedCert,
      typedFlatCert [2] TypedFlatCert,
      ...
   }
]]></artwork>
        <t>"Certificate" is a standard X.509 certificate that <bcp14>MUST</bcp14> be compliant
with RFC 5280.  Enforcement of this constraint is left to the relying
parties.</t>
        <t>"TypedCert" is an ASN.1 construct that has the characteristics of a
certificate, but is not encoded as an X.509 certificate.  The
certType Field (below) indicates how to interpret the certBody field.  While
it is possible to carry any type of data in this structure, it's
intended the content field include data for at least one public key
formatted as a SubjectPublicKeyInfo (see <xref target="RFC5912"/>).</t>
        <artwork><![CDATA[
TYPED-CERT ::= TYPE-IDENTIFIER

CertType ::= TYPED-CERT.&id

TypedCert ::= SEQUENCE {
              certType     TYPED-CERT.&id({TypedCertSet}),
              content     TYPED-CERT.&Type ({TypedCertSet}{@certType})
          }

TypedCertSet TYPED-CERT ::= {
   ... -- None defined in this document --
      }
]]></artwork>
        <t>"TypedFlatCert" is a certificate that does not have a valid ASN.1
encoding.
These are often compact or implicit certificates used by smart cards.
certType indicates the format of the data in the
certBody field, and ideally refers to a published specification.</t>
        <artwork><![CDATA[
TypedFlatCert ::= SEQUENCE {
    certType OBJECT IDENTIFIER,
    certBody OCTET STRING
}
]]></artwork>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to open two new registries, allocate a value
from the "SMI Security for PKIX Module Identifier" registry for the
included ASN.1 module, and allocate values from "SMI Security for
S/MIME Attributes" to identify two Attributes defined within.</t>
      <section anchor="module-registration-smi-security-for-pkix-module-identifier">
        <name>Module Registration - SMI Security for PKIX Module Identifier</name>
        <ul spacing="normal">
          <li>
            <t>Decimal: IANA Assigned - <strong>Replace TBDMOD</strong></t>
          </li>
          <li>
            <t>Description: CSR-ATTESTATION-2023 - id-mod-pkix-attest-01</t>
          </li>
          <li>
            <t>References: This Document</t>
          </li>
        </ul>
      </section>
      <section anchor="object-identifier-registrations-smi-security-for-smime-attributes">
        <name>Object Identifier Registrations - SMI Security for S/MIME Attributes</name>
        <ul spacing="normal">
          <li>
            <t>Evidence Statement
            </t>
            <ul spacing="normal">
              <li>
                <t>Decimal: IANA Assigned - Replace <strong>TBDAA</strong></t>
              </li>
              <li>
                <t>Description: id-aa-evidence</t>
              </li>
              <li>
                <t>References: This Document</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="smi-security-for-pkix-evidence-statement-formats-registry">
        <name>"SMI Security for PKIX Evidence Statement Formats" Registry</name>
        <t>IANA is asked to create a registry for Evidence Statement Formats within
the SMI-numbers registry, allocating an assignment from id-pkix ("SMI
Security for PKIX" Registry) for the purpose.</t>
        <ul spacing="normal">
          <li>
            <t>Decimal: IANA Assigned - <strong>replace TBD1</strong></t>
          </li>
          <li>
            <t>Description: id-ata</t>
          </li>
          <li>
            <t>References: This document</t>
          </li>
          <li>
            <t>Initial contents: None</t>
          </li>
          <li>
            <t>Registration Regime: Specification Required.
Document must specify an EVIDENCE-STATEMENT definition to which this
Object Identifier shall be bound.</t>
          </li>
        </ul>
        <t>Columns:</t>
        <ul spacing="normal">
          <li>
            <t>Decimal: The subcomponent under id-ata</t>
          </li>
          <li>
            <t>Description: Begins with id-ata</t>
          </li>
          <li>
            <t>References: RFC or other document</t>
          </li>
        </ul>
      </section>
      <section anchor="attestation-evidence-oid-registry">
        <name>Attestation Evidence OID Registry</name>
        <t>IANA is asked to create a registry that helps developers to find
OID/Evidence mappings.</t>
        <t>Registration requests are evaluated using the criteria described in
the registration template below after a three-week review period on
the [[TBD]] mailing list, with the advice of one or more Designated
Experts <xref target="RFC8126"/>.  However, to allow for the allocation of values
prior to publication, the Designated Experts may approve registration
once they are satisfied that such a specification will be published.</t>
        <t>Registration requests sent to the mailing list for review should use
an appropriate subject (e.g., "Request to register attestation
evidence: example").</t>
        <t>IANA must only accept registry updates from the Designated Experts
and should direct all requests for registration to the review mailing
list.</t>
        <section anchor="registration-template">
          <name>Registration Template</name>
          <t>The registry has the following columns:</t>
          <ul spacing="normal">
            <li>
              <t>OID: The OID number, which has already been allocated. IANA does
not allocate OID numbers for use with this registry.</t>
            </li>
            <li>
              <t>Description: Brief description of the use of the Evidence and the
registration of the OID.</t>
            </li>
            <li>
              <t>Reference(s): Reference to the document or documents that register
the OID for use with a specific attestation technology, preferably
including URIs that can be used to retrieve copies of the documents.
An indication of the relevant sections may also be included but is not
required.</t>
            </li>
            <li>
              <t>Change Controller: For Standards Track RFCs, list the "IESG".  For
others, give the name of the responsible party. In most cases the
third party requesting registration in this registry will also be the
party that registered the OID.</t>
            </li>
          </ul>
        </section>
        <section anchor="initial-registry-contents">
          <name>Initial Registry Contents</name>
          <t>The initial registry contents is shown in the table below. It lists two
entries, one for DICE-based Evidence and the second for the Conceptual
Message Wrapper (CMW) <xref target="I-D.ietf-rats-msg-wrap"/>.</t>
          <figure anchor="tab-ae-reg">
            <name>Initial Contents of the Attestation Evidence OID Registry</name>
            <artwork><![CDATA[
| OID              | Description                | Reference(s)   | Change Controller |
|------------------|----------------------------|----------------|-------------------|
| 2 23 133 5 4 10  | DICE Evidence              | {{TCGDICE1.1}} |  TCG              |
| 2 23 133 5 4 9   | Conceptual Message Wrapper | {{TCGDICE1.1}} |  TCG              |
]]></artwork>
          </figure>
          <t>The current registry values can be retrieved from the IANA online website.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>A PKCS#10 or CRMF Certification Request message typically consists of a
distinguished name, a public key, and optionally a set of attributes,
collectively signed by the entity requesting certification.
In general usage, the private key used to sign the CSR <bcp14>MUST</bcp14> be different from the
Attesting Key utilized to sign Evidence about the Target
Environment, though exceptions <bcp14>MAY</bcp14> be made where CSRs and Evidence are involved in
bootstrapping the Attesting Key.
To demonstrate that the private
key applied to sign the CSR is generated, and stored in a secure
environment that has controls to prevent theft or misuse (including
being non-exportable / non-recoverable), the Attesting Environment
has to collect claims about this secure environment (or Target
Environment, as shown in <xref target="fig-attester"/>).</t>
      <t><xref target="fig-attester"/> shows the interaction inside an Attester. The
Attesting Environment, which is provisioned with an Attestation Key,
retrieves claims about the Target Environment. The Target
Environment offers key generation, storage and usage, which it
makes available to services. The Attesting Environment collects
these claims about the Target Environment and signs them and
exports Evidence for use in remote attestation via a CSR.</t>
      <figure anchor="fig-attester">
        <name>Interaction between Attesting and Target Environment</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="576" width="328" viewBox="0 0 328 576" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,240 L 8,544" fill="none" stroke="black"/>
              <path d="M 40,80 L 40,144" fill="none" stroke="black"/>
              <path d="M 48,288 L 48,352" fill="none" stroke="black"/>
              <path d="M 96,152 L 96,280" fill="none" stroke="black"/>
              <path d="M 120,152 L 120,280" fill="none" stroke="black"/>
              <path d="M 120,448 L 120,512" fill="none" stroke="black"/>
              <path d="M 152,32 L 152,80" fill="none" stroke="black"/>
              <path d="M 168,352 L 168,440" fill="none" stroke="black"/>
              <path d="M 200,152 L 200,280" fill="none" stroke="black"/>
              <path d="M 232,448 L 232,512" fill="none" stroke="black"/>
              <path d="M 240,280 L 240,352" fill="none" stroke="black"/>
              <path d="M 264,80 L 264,144" fill="none" stroke="black"/>
              <path d="M 304,240 L 304,472" fill="none" stroke="black"/>
              <path d="M 304,488 L 304,544" fill="none" stroke="black"/>
              <path d="M 320,112 L 320,480" fill="none" stroke="black"/>
              <path d="M 40,80 L 264,80" fill="none" stroke="black"/>
              <path d="M 272,112 L 320,112" fill="none" stroke="black"/>
              <path d="M 40,144 L 264,144" fill="none" stroke="black"/>
              <path d="M 8,240 L 88,240" fill="none" stroke="black"/>
              <path d="M 128,240 L 192,240" fill="none" stroke="black"/>
              <path d="M 208,240 L 304,240" fill="none" stroke="black"/>
              <path d="M 48,288 L 240,288" fill="none" stroke="black"/>
              <path d="M 48,352 L 240,352" fill="none" stroke="black"/>
              <path d="M 120,448 L 232,448" fill="none" stroke="black"/>
              <path d="M 72,480 L 112,480" fill="none" stroke="black"/>
              <path d="M 232,480 L 320,480" fill="none" stroke="black"/>
              <path d="M 120,512 L 232,512" fill="none" stroke="black"/>
              <path d="M 8,544 L 304,544" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="280,112 268,106.4 268,117.6" fill="black" transform="rotate(180,272,112)"/>
              <polygon class="arrowhead" points="208,280 196,274.4 196,285.6" fill="black" transform="rotate(90,200,280)"/>
              <polygon class="arrowhead" points="208,152 196,146.4 196,157.6" fill="black" transform="rotate(270,200,152)"/>
              <polygon class="arrowhead" points="176,440 164,434.4 164,445.6" fill="black" transform="rotate(90,168,440)"/>
              <polygon class="arrowhead" points="160,32 148,26.4 148,37.6" fill="black" transform="rotate(270,152,32)"/>
              <polygon class="arrowhead" points="128,152 116,146.4 116,157.6" fill="black" transform="rotate(270,120,152)"/>
              <polygon class="arrowhead" points="120,480 108,474.4 108,485.6" fill="black" transform="rotate(0,112,480)"/>
              <polygon class="arrowhead" points="104,280 92,274.4 92,285.6" fill="black" transform="rotate(90,96,280)"/>
              <g class="text">
                <text x="168" y="52">CSR</text>
                <text x="204" y="52">with</text>
                <text x="188" y="68">Evidence</text>
                <text x="112" y="116">CSR</text>
                <text x="160" y="116">Library</text>
                <text x="32" y="180">Private</text>
                <text x="156" y="180">Public</text>
                <text x="248" y="180">Signature</text>
                <text x="16" y="196">Key</text>
                <text x="144" y="196">Key</text>
                <text x="248" y="196">Operation</text>
                <text x="44" y="212">Generation</text>
                <text x="156" y="212">Export</text>
                <text x="108" y="244">--</text>
                <text x="268" y="260">Attester</text>
                <text x="256" y="276">(HSM)</text>
                <text x="84" y="308">Target</text>
                <text x="160" y="308">Environment</text>
                <text x="80" y="324">(with</text>
                <text x="120" y="324">key</text>
                <text x="184" y="324">generation,</text>
                <text x="88" y="340">storage</text>
                <text x="136" y="340">and</text>
                <text x="180" y="340">usage)</text>
                <text x="128" y="388">Collect</text>
                <text x="132" y="404">Claims</text>
                <text x="56" y="468">Attestation</text>
                <text x="168" y="468">Attesting</text>
                <text x="48" y="484">Key</text>
                <text x="176" y="484">Environment</text>
                <text x="172" y="500">(Firmware)</text>
                <text x="268" y="500">Evidence</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
                   ^
                   |CSR with
                   |Evidence
     .-------------+-------------.
     |                           |
     |       CSR Library         |<-----+
     |                           |      |
     '---------------------------'      |
            |  ^         ^              |
 Private    |  | Public  | Signature    |
 Key        |  | Key     | Operation    |
 Generation |  | Export  |              |
            |  |         |              |
 .----------|--|---------|------------. |
 |          |  |         |    Attester| |
 |          v  |         v    (HSM)   | |
 |    .-----------------------.       | |
 |    | Target Environment    |       | |
 |    | (with key generation, |       | |
 |    | storage and usage)    |       | |
 |    '--------------+--------'       | |
 |                   |                | |
 |           Collect |                | |
 |            Claims |                | |
 |                   |                | |
 |                   v                | |
 |             .-------------.        | |
 |Attestation  | Attesting   |        | |
 |   Key ----->| Environment +----------+
 |             | (Firmware)  |Evidence|
 |             '-------------'        |
 |                                    |
 '------------------------------------'
]]></artwork>
        </artset>
      </figure>
      <t><xref target="fig-attester"/> places the CSR library outside the Attester, which
is a valid architecture for certificate enrollment.
The CSR library may also be located
inside the trusted computing base. Regardless of the placement
of the CSR library, an Attesting Environment <bcp14>MUST</bcp14> be able to collect
claims about the Target Environment such that statements about
the storage of the keying material can be made.
For the Verifier, the provided Evidence must allow
an assessment to be made whether the key used to sign the CSR
is stored in a secure location and cannot be exported.</t>
      <t>Evidence communicated in the attributes and structures defined
in this document are meant to be used in a CSR. It is up to
the Verifier and to the Relying Party (RA/CA) to place as much or
as little trust in this information as dictated by policies.</t>
      <t>This document defines the transport of Evidence of different formats
in a CSR. Some of these encoding formats are based on standards
while others are proprietary formats. A Verifier will need to understand
these formats for matching the received claim values against policies.</t>
      <t>Policies drive the processing of Evidence at the Verifier: the Verifier's
Appraisal Policy for Evidence will often be based on specifications by the manufacturer
of a hardware security module, a regulatory agency, or specified by an
oversight body, such as the CA Browser Forum. The Code-Signing Baseline
Requirements <xref target="CSBR"/> document
is an example of such a policy that has
been published by the CA Browser Forum and specifies certain properties,
such as non-exportability, which must be enabled for storing
publicly-trusted code-signing keys. Other
policies influence the decision making at the Relying Party when
evaluating the Attestation Result. The Relying Party is ultimately
responsible for making a decision of what information in the Attestation
Result it will accept. The presence of the attributes defined in this
specification provide the Relying Party with additional assurance about
an Attester. Policies used at the Verifier and the Relying Party are
implementation dependent and out of scope for this document. Whether to
require the use of Evidence in a CSR is out-of-scope for this document.</t>
      <section anchor="freshness">
        <name>Freshness</name>
        <t>Evidence generated by an Attester generally needs to be fresh to provide
value to the Verifier since the configuration on the device may change
over time. Section 10 of <xref target="RFC9334"/> discusses different approaches for
providing freshness, including a nonce-based approach, the use of timestamps
and an epoch-based technique.  The use of nonces requires that nonce to be provided by
the Relying Party in some protocol step prior to Evidence and CSR generation,
and the use of timestamps requires synchronized clocks which connot be
guaranteed in all operating environments. Epochs also require (unidirectional)
communication prior to Evidence and CSR generation.
This document only specifies how to carry existing Evidence formats inside a CSR,
and so issues of syncronizing freshness data is left to be handled, for example,
via certificate management protocols.
Developers, operators, and designers of protocols, which embed
Evidence-carrying-CSRs, <bcp14>MUST</bcp14> consider what notion of freshness is
appropriate and available in-context; thus the issue of freshness is
left up to the discretion of protocol designers and implementors.</t>
        <t>In the case of Hardware Security Modules (HSM), the definition of "fresh" is somewhat ambiguous in the context
of CSRs, especially considering that non-automated certificate enrollments
are often asynchronous, and considering the common practice of re-using the
same CSR for multiple certificate renewals across the lifetime of a key.
"Freshness" typically implies both asserting that the data was generated
at a certain point-in-time, as well as providing non-replayability.
Certain use cases may have special properties impacting the freshness
requirements. For example, HSMs are typically designed to not allow downgrade
of private key storage properties; for example if a given key was asserted at
time T to have been generated inside the hardware boundary and to be
non-exportable, then it can be assumed that those properties of that key
will continue to hold into the future.</t>
      </section>
      <section anchor="publishing-evidence-in-an-x509-extension">
        <name>Publishing evidence in an X.509 extension</name>
        <t>This document specifies and Extension for carrying Evidence in a CRMF Certificate Signing Request (CSR), but it is intentionally <bcp14>NOT RECOMMENDED</bcp14> for a CA to copy the ext-evidence or ext-evidenceCerts extensions into the published certificate.
The reason for this is that certificates are considered public information and the Evidence might contain detailed information about hardware and patch levels of the device on which the private key resides.
The certificate requester has consented to sharing this detailed device information with the CA but might not consent to having these details published.
These privacy considerations are beyond the scope of this document and may require additional signaling mechanisms in the CSR to prevent unintended publication of sensitive information, so we leave it as "<bcp14>NOT RECOMMENDED</bcp14>".</t>
      </section>
      <section anchor="type-oid-and-verifier-hint">
        <name>Type OID and verifier hint</name>
        <t>The <tt>EvidenceStatement</tt> includes both a <tt>type</tt> OID and a freeform <tt>hint</tt> field with which the Attester can provide information to the Relying Party about which Verifier to invoke to parse a given piece of Evidence.
Care should be taken when processing these data since at the time they are used, they are not yet verified. In fact, they are protected by the CSR signature but not by the signature from the Attester and so could be maliciously replaced in some cases.
The authors' intent is that the <tt>type</tt> OID and <tt>hint</tt> will allow an RP to select between Verifier with which it has pre-established trust relationships, such as Verifier libraries that have been compiled in to the RP application.
As an example, the <tt>hint</tt> may take the form of an FQDN to uniquely identify a Verifier implementation, but the RP <bcp14>MUST NOT</bcp14> blindly make network calls to unknown domain names and trust the results.
Implementers should also be cautious around <tt>type</tt> OID or <tt>hint</tt> values that cause a short-cirtuit in the verification logic, such as <tt>None</tt>, <tt>Null</tt>, <tt>Debug</tt>, empty CMW contents, or similar values that could cause the Evidence to appear to be valid when in fact it was not properly checked.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="RFC5912">
          <front>
            <title>New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>The Public Key Infrastructure using X.509 (PKIX) certificate format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5912"/>
          <seriesInfo name="DOI" value="10.17487/RFC5912"/>
        </reference>
        <reference anchor="RFC4211">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate Request Message Format (CRMF)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This document describes the Certificate Request Message Format (CRMF) syntax and semantics. This syntax is used to convey a request for a certificate to a Certification Authority (CA), possibly via a Registration Authority (RA), for the purposes of X.509 certificate production. The request will typically include a public key and the associated registration information. This document does not define a certificate request protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4211"/>
          <seriesInfo name="DOI" value="10.17487/RFC4211"/>
        </reference>
        <reference anchor="RFC2986">
          <front>
            <title>PKCS #10: Certification Request Syntax Specification Version 1.7</title>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <date month="November" year="2000"/>
            <abstract>
              <t>This memo represents a republication of PKCS #10 v1.7 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process. The body of this document, except for the security considerations section, is taken directly from the PKCS #9 v2.0 or the PKCS #10 v1.7 document. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2986"/>
          <seriesInfo name="DOI" value="10.17487/RFC2986"/>
        </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"/>
            <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"/>
            <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="I-D.ietf-rats-msg-wrap">
          <front>
            <title>RATS Conceptual Messages Wrapper (CMW)</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <date day="29" month="January" year="2024"/>
            <abstract>
              <t>   This document defines two encapsulation formats for RATS conceptual
   messages (i.e., Evidence, Attestation Results, Endorsements and
   Reference Values.)

   The first encapsulation format uses a CBOR or JSON array with two
   mandatory members, one for the type, another for the value, and a
   third optional member complementing the type field that says which
   kind of conceptual message(s) are carried in the value.  The other
   format wraps the value in a CBOR byte string and prepends a CBOR tag
   to convey the type information.

   This document also defines a corresponding CBOR tag, as well as JSON
   Web Tokens (JWT) and CBOR Web Tokens (CWT) claims.  These allow
   embedding the wrapped conceptual messages into CBOR-based protocols
   and web APIs, respectively.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-03"/>
        </reference>
        <reference anchor="RFC7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
        <reference anchor="I-D.tschofenig-rats-psa-token">
          <front>
            <title>Arm's Platform Security Architecture (PSA) Attestation Token</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Simon Frost" initials="S." surname="Frost">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Mathias Brossard" initials="M." surname="Brossard">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Adrian L. Shaw" initials="A. L." surname="Shaw">
              <organization>HP Labs</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="18" month="December" year="2023"/>
            <abstract>
              <t>   The Platform Security Architecture (PSA) is a family of hardware and
   firmware security specifications, as well as open-source reference
   implementations, to help device makers and chip manufacturers build
   best-practice security into products.  Devices that are PSA compliant
   can produce attestation tokens as described in this memo, which are
   the basis for many different protocols, including secure provisioning
   and network access control.  This document specifies the PSA
   attestation token structure and semantics.

   The PSA attestation token is a profiled Entity Attestation Token
   (EAT).  This specification describes what claims are used in an
   attestation token generated by PSA compliant systems, how these
   claims get serialized to the wire, and how they are cryptographically
   protected.

   This document is produced through the Independent RFC Stream and was
   not subject to the IETF's approval process.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tschofenig-rats-psa-token-20"/>
        </reference>
        <reference anchor="TPM20" target="https://trustedcomputinggroup.org/resource/tpm-library-specification/">
          <front>
            <title>Trusted Platform Module Library Specification, Family 2.0, Level 00, Revision 01.59</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2019" month="November"/>
          </front>
        </reference>
        <reference anchor="CSBR" target="https://cabforum.org/wp-content/uploads/Baseline-Requirements-for-the-Issuance-and-Management-of-Code-Signing.v3.3.pdf">
          <front>
            <title>Baseline Requirements for Code-Signing Certificates, v.3.3</title>
            <author>
              <organization>CA/Browser Forum</organization>
            </author>
            <date year="2023" month="June"/>
          </front>
        </reference>
        <reference anchor="TCGDICE1.1" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Attestation-Architecture-Version-1.1-Revision-18_pub.pdf">
          <front>
            <title>DICE Attestation Architecture</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2024" month="January"/>
          </front>
        </reference>
        <reference anchor="PKCS11" target="http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html">
          <front>
            <title>PKCS #11 Cryptographic Token Interface Base Specification Version 2.40</title>
            <author>
              <organization>OASIS</organization>
            </author>
            <date year="2015" month="April"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-rats-tpm-based-network-device-attest">
          <front>
            <title>TPM-based Network Device Remote Integrity Verification</title>
            <author fullname="Guy Fedorkow" initials="G." surname="Fedorkow">
              <organization>Juniper Networks, Inc.</organization>
            </author>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Jessica Fitzgerald-McKay" initials="J." surname="Fitzgerald-McKay">
              <organization>National Security Agency</organization>
            </author>
            <date day="22" month="March" year="2022"/>
            <abstract>
              <t>   This document describes a workflow for remote attestation of the
   integrity of firmware and software installed on network devices that
   contain Trusted Platform Modules [TPM1.2], [TPM2.0], as defined by
   the Trusted Computing Group (TCG)), or equivalent hardware
   implementations that include the protected capabilities, as provided
   by TPMs.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-tpm-based-network-device-attest-14"/>
        </reference>
      </references>
    </references>
    <?line 868?>

<section anchor="examples">
      <name>Examples</name>
      <t>This section provides two non-normative examples for embedding Evidence
in CSRs. The first example embeds Evidence produced by a TPM in the CSR.
The second example conveys an Arm Platform Security Architecture token,
which provides claims about the used hardware and software platform,
into the CSR.</t>
      <t>At the time of writing, the authors are not aware of registered OIDs for these evidence formats, and so we leave the OIDs as TBD1 / TBD2.</t>
      <section anchor="tpm-v20-evidence-in-csr">
        <name>TPM V2.0 Evidence in CSR</name>
        <t>The following example illustrates a CSR with a signed TPM Quote based on
<xref target="TPM20"/>. The Platform Configuration Registers (PCRs) are fixed-size
registers in a TPM that record measurements of software and configuration
information and are therefore used to capture the system state. The digests
stored in these registers are then digitally signed with an attestation
key known to the hardware.</t>
        <t>Note: The information conveyed in the value field of the EvidenceStatement
structure may contain more information than the signed TPM Quote structure
defined in the TPM v2.0 specification <xref target="TPM20"/>, such as plaintext PCR values,
the up-time, the event log, etc. The detailed structure of such
payload is, however, not defined in this document and may be subject to
future standardization work in supplementary documents.</t>
        <figure anchor="fig-example-tpm">
          <name>CSR with TPM V2.0</name>
          <artwork><![CDATA[
Certification Request:
    Data:
        Version: 1 (0x0)
        Subject: CN = server.example.com
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:b9:7c:02:a1:1f:9c:f3:f4:c4:55:3a:d9:3e:26:
                    e8:e5:11:63:84:36:5f:93:a6:99:7d:d7:43:23:0a:
                    4f:c0:a8:40:46:7e:8d:b2:1a:38:19:ff:6a:a7:38:
                    16:06:1e:12:9f:d1:d5:58:55:e6:be:6d:bb:e1:fb:
                    f7:70:a7:5c:c9
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        Attributes:
            EvidenceStatement
               type: TBD2 (identifying use of TPM V2.0)
               value:
                    80:02:00:00:01:99:00:00:00:00:00:00:01:86:00:7e
                    ff:54:43:47:80:18:00:22:00:0b:76:71:0f:61:80:95
                    8d:89:32:38:a6:cc:40:43:02:4a:da:26:d5:ea:11:71
                    99:d7:a5:59:a4:18:54:1e:7b:86:00:0d:30:2e:66:6e
                    6a:37:66:63:39:31:76:62:74:00:00:00:00:00:00:36
                    5b:bc:0b:71:4f:d8:84:90:09:01:42:82:48:a6:46:53
                    98:96:00:00:00:01:00:0b:03:0f:00:00:00:20:49:ce
                    66:9a:aa:7e:52:ff:93:0e:dd:9f:27:97:88:eb:75:cb
                    ad:53:22:e5:ad:2c:9d:44:1e:dd:65:48:6b:88:00:14
                    00:0b:01:00:15:a4:95:8a:0e:af:04:36:be:35:f7:27
                    85:bd:7f:87:46:74:18:e3:67:2f:32:f2:bf:b2:e7:af
                    a1:1b:f5:ca:1a:eb:83:8f:2f:36:71:cd:7c:18:ab:50
                    3d:e6:6e:ab:2e:78:a7:e4:6d:cf:1f:03:e6:46:74:28
                    a7:6c:d6:1e:44:3f:88:89:36:9a:a3:f0:9a:45:07:7e
                    01:5e:4c:97:7d:3f:e2:f7:15:59:96:5f:0e:9a:1c:b3
                    a0:6b:4a:77:a5:c0:e0:93:53:cb:b7:50:59:3d:23:ee
                    5c:31:00:48:6c:0b:1a:b8:04:a4:14:05:a6:63:bc:36
                    aa:7f:b9:aa:1f:19:9e:ee:49:48:08:e1:3a:d6:af:5f
                    d5:eb:96:28:bf:41:3c:89:7a:05:4b:b7:32:a2:fc:e7
                    f6:ad:c7:98:a6:98:99:f6:e9:a4:30:d4:7f:5e:b3:cb
                    d7:cc:76:90:ef:2e:cc:4f:7d:94:ab:33:8c:9d:35:5d
                    d7:57:0b:3c:87:9c:63:89:61:d9:5c:a0:b7:5c:c4:75
                    21:ae:dc:c9:7c:e3:18:a2:b3:f8:15:27:ff:a9:28:2f
                    cb:9b:17:fe:96:04:53:c4:19:0e:bf:51:0e:9d:1c:83
                    49:7e:51:64:03:a1:40:f1:72:8b:74:e3:16:79:af:f1
                    14:a8:5e:44:00:00:01:00:00
    Signature Algorithm: ecdsa-with-SHA256
    Signature Value:
        30:45:02:21:00:93:fd:81:03:75:d1:7d:ab:53:6c:a5:19:a7:
        68:3d:d6:e2:39:14:d6:9e:47:24:38:b5:76:db:18:a6:ca:c4:
        8a:02:20:36:be:3d:71:93:5d:05:c3:ac:fa:a8:f3:e5:46:db:
        57:f9:23:ee:93:47:6d:d6:d3:4f:c2:b7:cc:0d:89:71:fe
]]></artwork>
        </figure>
      </section>
      <section anchor="platform-security-architecture-attestation-token-in-csr">
        <name>Platform Security Architecture Attestation Token in CSR</name>
        <t>The example shown in <xref target="fig-example-psa"/> illustrates how the Arm
Platform Security Architecture (PSA) Attestation Token
is conveyed in a CSR. The content of the Evidence in this example is re-used
from <xref target="I-D.tschofenig-rats-psa-token"/> and contains an Entity Attestation
Token (EAT) digitally signed with an attestation private key.</t>
        <figure anchor="fig-example-psa">
          <name>CSR with embedded PSA Attestation Token</name>
          <artwork><![CDATA[
Certification Request:
    Data:
        Version: 1 (0x0)
        Subject: CN = server.example.com
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:b9:7c:02:a1:1f:9c:f3:f4:c4:55:3a:d9:3e:26:
                    e8:e5:11:63:84:36:5f:93:a6:99:7d:d7:43:23:0a:
                    4f:c0:a8:40:46:7e:8d:b2:1a:38:19:ff:6a:a7:38:
                    16:06:1e:12:9f:d1:d5:58:55:e6:be:6d:bb:e1:fb:
                    f7:70:a7:5c:c9
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        Attributes:
            EvidenceStatement
               type: TBD1 (referring to the PSA Attestation Token)
               value: d2:84:43:a1:01:26:a0:59:01:3b:aa:19:01:09:78:
                      18:68:74:74:70:3a:2f:2f:61:72:6d:2e:63:6f:6d:
                      2f:70:73:61:2f:32:2e:30:2e:30:19:09:5a:1a:7f:
                      ff:ff:ff:19:09:5b:19:30:00:19:09:5c:58:20:00:
                      00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:
                      00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:
                      00:19:09:5d:48:00:00:00:00:00:00:00:00:19:09:
                      5e:73:31:32:33:34:35:36:37:38:39:30:31:32:33:
                      2d:31:32:33:34:35:19:09:5f:81:a2:02:58:20:03:
                      03:03:03:03:03:03:03:03:03:03:03:03:03:03:03:
                      03:03:03:03:03:03:03:03:03:03:03:03:03:03:03:
                      03:05:58:20:04:04:04:04:04:04:04:04:04:04:04:
                      04:04:04:04:04:04:04:04:04:04:04:04:04:04:04:
                      04:04:04:04:04:04:0a:58:20:01:01:01:01:01:01:
                      01:01:01:01:01:01:01:01:01:01:01:01:01:01:01:
                      01:01:01:01:01:01:01:01:01:01:01:19:01:00:58:
                      21:01:02:02:02:02:02:02:02:02:02:02:02:02:02:
                      02:02:02:02:02:02:02:02:02:02:02:02:02:02:02:
                      02:02:02:02:19:09:60:78:2e:68:74:74:70:73:3a:
                      2f:2f:76:65:72:61:69:73:6f:6e:2e:65:78:61:6d:
                      70:6c:65:2f:76:31:2f:63:68:61:6c:6c:65:6e:67:
                      65:2d:72:65:73:70:6f:6e:73:65:58:40:56:f5:0d:
                      13:1f:a8:39:79:ae:06:4e:76:e7:0d:c7:5c:07:0b:
                      6d:99:1a:ec:08:ad:f9:f4:1c:ab:7f:1b:7e:2c:47:
                      f6:7d:ac:a8:bb:49:e3:11:9b:7b:ae:77:ae:c6:c8:
                      91:62:71:3e:0c:c6:d0:e7:32:78:31:e6:7f:32:84:
                      1a
    Signature Algorithm: ecdsa-with-SHA256
    Signature Value:
        30:45:02:21:00:93:fd:81:03:75:d1:7d:ab:53:6c:a5:19:a7:
        68:3d:d6:e2:39:14:d6:9e:47:24:38:b5:76:db:18:a6:ca:c4:
        8a:02:20:36:be:3d:71:93:5d:05:c3:ac:fa:a8:f3:e5:46:db:
        57:f9:23:ee:93:47:6d:d6:d3:4f:c2:b7:cc:0d:89:71:fe
]]></artwork>
        </figure>
        <t>The decoded Evidence is shown in Appendix A of
<xref target="I-D.tschofenig-rats-psa-token"/>, the shown Evidence provides the following
information to an RA/CA:</t>
        <ul spacing="normal">
          <li>
            <t>Boot seed,</t>
          </li>
          <li>
            <t>Firmware measurements,</t>
          </li>
          <li>
            <t>Hardware security certification reference,</t>
          </li>
          <li>
            <t>Identification of the immutable root of trust implementation, and</t>
          </li>
          <li>
            <t>Lifecycle state information.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="asn1-module">
      <name>ASN.1 Module</name>
      <artwork><![CDATA[
CSR-ATTESTATION-2023
           {iso(1) identified-organization(3) dod(6) internet(1) security(5)
       mechanisms(5) pkix(7) id-mod(0) id-mod-pkix-attest-01(TBDMOD)}

DEFINITIONS IMPLICIT TAGS ::= BEGIN

EXPORTS ALL;

IMPORTS

Certificate, id-pkix
 FROM PKIX1Explicit-2009
     {iso(1) identified-organization(3) dod(6) internet(1) security(5)
     mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-explicit-02(51)}


EXTENSION, ATTRIBUTE, AttributeSet{}, SingleAttribute{}
    FROM PKIX-CommonTypes-2009 -- from [RFC5912]
    { iso(1) identified-organization(3) dod(6) internet(1) security(5)
      mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57) }

id-aa
FROM SecureMimeMessageV3dot1
    { iso(1) member-body(2) us(840) rsadsi(113549)
        pkcs(1) pkcs-9(9) smime(16) modules(0) msg-v3dot1(21) }

GeneralName
  FROM PKIX1Implicit-2009
      {iso(1) identified-organization(3) dod(6) internet(1) security(5)
      mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-implicit-02(59)}
  ;
  

-- Branch for attestation statement types
id-ata OBJECT IDENTIFIER ::= { id-pkix (TBD1) }


CertificateAlternatives ::=
   CHOICE {
      cert          [0] Certificate,
      typedCert     [1] TypedCert,
      typedFlatCert [2] TypedFlatCert,
      ...
   }

TYPED-CERT ::= TYPE-IDENTIFIER

TypedCert ::= SEQUENCE {
      certType     TYPED-CERT.&id({TypedCertSet}),
      content     TYPED-CERT.&Type ({TypedCertSet}{@certType})
  }

TypedCertSet TYPED-CERT ::= {
   ... -- None defined in this document --
  }

TypedFlatCert ::= SEQUENCE {
    certType OBJECT IDENTIFIER,
    certBody OCTET STRING
}

EVIDENCE-STATEMENT ::= TYPE-IDENTIFIER

EvidenceStatementSet EVIDENCE-STATEMENT ::= {
   ... -- None defined in this document --
}

EvidenceHint ::= CHOICE {
     rfc822Name [0] IA5String,
     dNSName    [1] IA5String,
     uri        [2] IA5String,
     text       [3] UTF8String
}

EvidenceStatements ::= SEQUENCE SIZE (1..MAX) OF EvidenceStatement

EvidenceStatement ::= SEQUENCE {
   type   EVIDENCE-STATEMENT.&id({EvidenceStatementSet}),
   stmt   EVIDENCE-STATEMENT.&Type({EvidenceStatementSet}{@type}),
   hint   EvidenceHint OPTIONAL
}

id-aa-evidence OBJECT IDENTIFIER ::= { id-aa TBDAA }

-- For PKCS#10
attr-evidence ATTRIBUTE ::= {
  TYPE EvidenceBundles
  IDENTIFIED BY id-aa-evidence
}


-- For CRMF
ext-evidence EXTENSION ::= {
  SYNTAX EvidenceBundles
  IDENTIFIED BY id-aa-evidence
}

EvidenceBundles ::= SEQUENCE SIZE (1..MAX) OF EvidenceBundle

EvidenceBundle ::= SEQUENCE
{
  evidence EvidenceStatements,
  certs SEQUENCE SIZE (1..MAX) OF CertificateAlternatives OPTIONAL
}


END
]]></artwork>
      <section anchor="tcg-dice-conceptualmessagewrapper-in-csr">
        <name>TCG DICE ConceptualMessageWrapper in CSR</name>
        <t>This section gives an example of extending the ASN.1 module above to carry an existing ASN.1-based evidence statement. The example used is the Trusted Computing Group DICE Attestation Conceptual Message Wrapper, as defined in <xref target="TCGDICE1.1"/>.</t>
        <artwork><![CDATA[
tcgDiceEvidenceStatementES EVIDENCE-STATEMENT ::=
  { ConceptualMessageWrapper IDENTIFIED BY tcg-dice-conceptual-message-wrapper }

-- where ConceptualMessageWrapper and tcg-dice-conceptual-message-wrapper 
-- are defined in DICE-Attestation-Architecture-Version-1.1-Revision-17_1August2023.pdf

EvidenceStatementSet EVIDENCE-STATEMENT ::= {
  tcgDiceEvidenceStatementES, ...
}

]]></artwork>
      </section>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This specification is the work of a design team created by the chairs of the
LAMPS working group. The following persons, in no specific order,
contributed to the work: Richard Kettlewell, Chris Trufan, Bruno Couillard,
Jean-Pierre Fiset, Sander Temme, Jethro Beekman, Zsolt Rózsahegyi, Ferenc
Pető, Mike Agrenius Kushner, Tomas Gustavsson, Dieter Bong, Christopher Meyer,
Michael StJohns, Carl Wallace, Michael Ricardson, Tomofumi Okubo, Olivier
Couillard, John Gray, Eric Amador, Johnson Darren, Herman Slatman, Tiru Reddy,
Thomas Fossati, Corey Bonnel, Argenius Kushner, James Hagborg, Monty Wiseman,
Ned Smith.</t>
      <t>We would like to specifically thank Mike StJohns for his work on an earlier
version of this draft.</t>
      <t>Finally, we would like to thank Andreas Kretschmer for his feedback based
on his implementation experience, and Daniel Migault and Russ Housley for
their review comments.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
NUtixuyzEtKOZn0lAVeV9YG3K4IEHqj0IFoAz2650Ga1FTV/GYhaXbpo+JL2
VxiMCExswq9X03Qq6i9ZM4D7nd6GephaMQPIv7s4M30yfFc62XW091vYXEsn
sd0uahRMchtKavZpq+lUpucY06Uuf2cVwsYoNZUTUwbPCdfshC6Lzi1zVUbs
bL20QdQrNCwF/yadlQmNVdSz08uvNoi/0NiAmTp9i/o9/C1aXDbLQ0BGbNGl
FEdETAm5fRJ54XSPm6xM5Wu3GZN3rMb4sdisw0+yT8wiz3tHp61YwYUnXKpH
RLQRLrxxySS54psu8rV9iXVeZqYss84glM4tzOI5U0iKWZF6HCCrkDV8MGqg
DDf249Yj3Vo2FdLzUsuUT2wEKTCFW79HBAltWU7Ov0fh1v4emSadP/jAmOqn
37oUFobtL10C4Q86KIGiF92c3Z6PHviybzRqaeyEpJ6Pd3fD/XAPBcKwWvir
3DJt7mrfv28aOn78iNxk+rs1qD3tsWyric61YfvIaU2OMp39MFZDQpLm6rHg
zUkriPRJ5cbcQiZdtpRS1xrxtJWmeYThDU7JR+a7JH9w5e5OTZHozAlSVi9u
m6eTTiWD3qLRNnTptdKoGL3Z15VKcayVWN+g9YGxx5OmIpHXzUH78J16/IG5
XHiLmLHWxKcmx5dTmh1G4GUnjpCwbboIrLDUQRNE0a0JDE91Cx9ZV2JTy8NW
w2oKb6MVhy7V2szQE3yR8t2BV6cbl3Svb0hVAJ4xK9bO5UUsbQJK1USKmjlL
icPPb0WhnBZFDa4nceMGi/TqRihRkqqFeDjdYq0aAAH3ZlhyJKEDA7/DF2sh
toec6e0V/NjeXuGmFXOB3F7Mi3yI6nylsMtn/AFSkm9ZLqqtQWuDDjwDVlcK
cw213WeTk2o7rcjQIaPvaGKHfevK0/bqOFS69mdORWq3ukzGJOVmYMhtrzWF
223R4PYVgXbvJzrXQWCIvOq2FO0Wi5fgWHerUkKxYirQJ806vGnoIc3cmGj0
6hC/e6davS8qVcLekKSt/vMxB4OMMbgKH7FoQTjT42Yhpc8ZPSovw4O1rCzv
63HEnah0LbcHK2z9qbcsFmiA0wX7vvQrv/rVZP0LLPo+V0/dIkdceEPwYlOS
yw75ubly9MnJvDnbBUTdn6feyObxP9k//hR6PzTStACUkR9C8dNz8Q62W0Bk
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
c3t77TrGuxDaMZM5TAAFSbinsCYy47fZGCN2uM3W0Lp1pBDVsOcT2IpkwZEy
TBoA2SSksRMfJpufpPJOAsV4HU8+YAU/wVJI1JLRArNkDPPncIplwUImU440
97U4djxmP9EY6sZ2grHpNnZBXImOg0BMwvyQZcbRWpobx3+3aPDzE1k0pJV3
LBoJXZKa3auAmMIEqZIKlo1Z4NykniyR3Z39EE5QIfuTBoGERORpNwaqI61u
pC5opXQggQAXcrhSzfOiQLkTlQ7oD3PHzoud4YuvO1c1/CZHtj0MBpsKWX5t
lWyxWMnN9RKvNDXTOyF9XIQZht9mM5XcJ3Nd2tjrCRoETfMaSf7UxktPtTqX
JN5nVYFmf5mp4JUOi/I6znVEZ3OXzKYi3TzYkmvquaox2ux4c9/qkU2yEH0Y
oo7a5uGWroq3ub3VXx9vU6rsbREuvDh9efbqDGu8DM/O33x7dnJ2FV5Nvrrk
6orPT786exUEp7978/ri6jKcfPvtz4KAhuGvwK1QOzBV3ILw5cXrcy7cNj79
QepJ0u63tdL+E+37M3Y9RrqiLGN7Z3N/jE0HtsL4oCln7jThuVT1e8Jqacht
P33/kV9u9zc84URZ7sDCW0RhTzah/6CLn/6RH3gf/kSH/Rm7lqXxjg/RmUgK
wQe8dnYwqHMylHS9lN/upkU99te6ABsph7jLhC7Hq2rzaI9eUVZxWmWb4/Hu
/t5xY8ws3yUVnsJ/h8ebx7T6Bc2/OaY9yUWqCgtEVZtbftnmDjdMCuQ6+Rzd
SwIHtOOzRQd1fjKa+SzkMTVRGZTHW0CBn9H/uHr9c9yyuWmX/m5ue/7ILlLB
f5LSz5+s6PuJor0/oljvX1Ck96ctzmtm+2vUov1b6Dv194ZEf8sNif6m23r8
R/T1+M/fmCU4ffVCV51+wjXJuDpaU8tMi2ZTyawJMzjJjNc8q38dmO8NpPYW
rFMuGpmBt17h+ObeGY/TVwLt5p12UW50Q67gi15/pa/1ntj6C1+h655sxrU9
1hdp4xs6XrNGt2KbjgUEdXL9IktU5zxOL9cwvAC6zFpw+uhFkw/TLOGeSnr8
UFdL4yJ8eELIR9f6Wjct5+4+YjJMBQvG2TYXE3QgNnSjP0Md4hgSTIYXSkpO
DceH/3U8WV3TCcC6GC3T2eeLhPVwHbCg/xiY0uiTBBmAc5VeL0xdxU5/UY0V
nI7G17zkghMx9Hihi/vaRHd0WinN7ZDg28n5m0t+EEjErRtNJyeT44n7h0XO
11/RespW6eSmKANuNiN6uq38gOmi8CJDa4c0/EahtAPugg3Ck5syQwnM1Swm
M+95uaIJT4pVNp/TyEHwaxXnwzeZKkv0bqhUTbZAzIWSr9QCKYC/VvVNWYTP
lXq3wAz/VBXzOrz4v//7z1V8o67vs0H4ko3Q4I2q/99/H4Tn2Tuixmv6KFtV
4TcrXBcj1L8qFoT9X9ERxrdVBZPzRaaQzf+8QNYtL7Mulrg7fa7usc1z7EbN
w8v618UNoHESl/Pw+3iOBH+8R76mTaMeBGakdxSz1SILX79bTYtB+Hqe3aIg
e7PfEFMR5cb3g/C0JJBOFnFalPI5rhW9iFHFcBB+rcjuzcNLUnp421dZuQov
VJreDwgdeC8viwqFgWldRanusY9cEcAn5XVr67/mbPev4+spKfG0cDq++/B7
AjZmDl7RKV4usvpG+rVKb0k0DefLBgbp5tw9Oc7fCXw1TFghB3IKHvI9MUVQ
wqZvhZCamzllPMNt8pcZ394aIDHZf5nMP8lTXLEKvykVHCELOhDzlplSKbcJ
YvYZ0OQ9rYIV6gNn7JVgLvECTbaJF2bXMSoF4KOLVUXwwIUNJSX7CYUzW/sY
lzIll/P/A4XQkIUyzAAA

-->

</rfc>
