<?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-05" 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-05"/>
    <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="13"/>
    <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 proprietary 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 cannot 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 synchronizing 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 implementers.</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 free form <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-circuit 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) }
  ;
  

-- 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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
qumRX1nck5GnfMydXXbWua4RC0Y6J/LB1Sg83WLkVUb1zWlI90Nr5K078hb/
tymNX8NmpI8U7lvNC8zID33472zLHSmlSW2S7RvZIeOt/jlbKGKx92lnZOun
81ln5Inmx58eaa4FfMTIR7/d/Nw+YuSo94j0SJf9hh8cFuesws4JPOdJfvnB
O0+HK3zZfjsd60t9D9KWw1w6q/SPynYLXrPvzs+H4EF+0EzstxlutR856+mh
1oAE2NbF5o2PPXKT/ahVE3XXLM9tENsq0g44SiVBKO/GAXM5qwleqRzmiGRd
XbXmd21e7ZoItLBma01njtmr2HEzoeJrZMnInTeXIcr6Wf3QHzhvcS7KbMtC
o1vaFmRCJMFjhCJ7xMQ31mTP8hPSzFOTvF6PdBoObadhbSFAxRwFL7Ud2dwz
I4qhrvptfKCclgIvUCCOdnMdtpSlGH21NheRr9OpA44ftxVIey+zJNbFuU6+
E1HPjge7kqaHalOe19gJWkO19YE63hT0XtiEVBOzg+bCWu55KqmSnE8TuPAR
O7w/cVaaekPb5dBAjLxFdH0qA1w4mtX13FwPaFbjXc+NdtxJHUsv1ebm4u5F
63LzrWBpX+dir/2gThQPmq1dFtbZUqkmh8Smt5d8C6e0ZrW58YFc7yieGx7T
kxqPS/UsoNjbYjp+czCAJ9O6n3kb55PFdXJjTBd76QkTgrFqTUdrBypv9K9h
Who3klNB6cKjdTdF5P31tAom9qLSN3IVqheV4n1IRHvqQsa7BslYou7tDgGX
otg0O9tK3cZYYbubO6mJXvPknnOHzZUpUhybBwXfiXd9U6M+wbl1gilqEnqX
O4v23XtzdPDwzdFB5vbZ5Rs2xe+ur4c1Zl3A7twmmG5vmfYXInRoL38xV2Y3
l/gNArMP1+TL5GINfXueTkqWPo3i8wLv4Gwc1jjn98OGUdOeTcNzuXj7NZA1
MCgDYpvrEl14SfV1t+bGUpML7dE0GkMHOrLj29buRRYCdP9JMI95nS24wDdw
fZqC8fLOZhW4aZZrSLy7BtsvNAnKXAkCZyYHEvR1N5wX1twYH3eD7prt+Dfw
GWbft/1WSxVkjpexdWsEnlVr6VFuoWndB2Pcl62bXErV7lOSqiWSibTpJ6nU
4bqrPsIf7FWKxkntuv67jVUzvun64dtDnjwJX5rbBBy543a69koqtGdpfu+1
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
KOmATyic2VbCKHGUxMj/D/fkZ8GCywAA

-->

</rfc>
