<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.22 (Ruby 3.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-ietf-lamps-csr-attestation-15" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Remote Attestation with CSRs">Use of Remote Attestation with Certification Signing Requests</title>

    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road – Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="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>
    <author initials="M." surname="Wiseman" fullname="Monty Wiseman">
      <organization>Beyond Identity</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>monty.wiseman@beyondidentity.com</email>
      </address>
    </author>
    <author initials="N." surname="Smith" fullname="Ned Smith">
      <organization>Intel Corporation</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>ned.smith@intel.com</email>
      </address>
    </author>

    <date year="2025" month="January" day="30"/>

    
    
    <keyword>PKI</keyword> <keyword>PKCS#10</keyword> <keyword>CRMF</keyword> <keyword>Attestation</keyword> <keyword>Evidence</keyword> <keyword>Certificate Signing Requests</keyword>

    <abstract>


<?line 116?>

<t>A PKI end entity requesting a certificate from a Certification Authority (CA) may wish to offer trustworthy claims about the platform generating the certification request and the environment associated with the corresponding private key, such as whether the private key resides on a hardware security module.</t>

<t>This specification defines an attribute and an extension that allow for conveyance of Evidence and
Attestation Results in Certificate Signing Requests (CSRs), such as PKCS#10 or Certificate Request Message Format (CRMF) payloads. This provides an elegant and automatable mechanism for transporting Evidence to a Certification Authority.</t>

<t>Including Evidence and Attestation Results along with a CSR can help to improve the assessment of the security posture for the private key, and can help the Certification Authority to assess whether it satisfies the requested certificate profile.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://lamps-wg.github.io/csr-attestation/draft-ietf-lamps-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 125?>

<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 or Attestation Results of the security properties of its environments in which the private keys are stored in that request.</t>

<t>Evidence are appraised by Verifiers, which typically produces Attestation Results that serve as input for validating incoming certificate requests against specified certificate policies.
Verifiers are associated with Registration Authorities (RAs) or CAs and function as logical entities responsible for processing Evidence and producing Attestation Results.
As remote attestation technology matures, it is natural for a Certification Authority to want proof that the requesting entity is in a state that matches the certificate profile.
At the time of writing, the most notable example is the Code-Signing Baseline Requirements (CSBR) document maintained by the CA/Browser Forum <xref target="CSBR"/>, 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", which is a natural fit to enforce via remote attestation.</t>

<t>This specification defines an attribute and an extension that allow for conveyance of Evidence and Attestation Results in Certificate Signing Requests (CSRs), such as PKCS#10 <xref target="RFC2986"/> or Certificate Request Message Format (CRMF) <xref target="RFC4211"/> payloads.
This CSR extension satisfies CA/B Forum's CSBR <xref target="CSBR"/> requirements for key protection assurance.</t>

<t>As outlined in the IETF RATS architecture <xref target="RFC9334"/>, an Attester (typically a device) produces a signed collection of Claims that constitute Evidence about its running environment(s).
The term "attestation" is not explicitly defined in RFC 9334 but was later clarified in <xref target="I-D.ietf-rats-tpm-based-network-device-attest"/>.
It refers to the process of generating and evaluating remote attestation Evidence.</t>

<t>After the Verifier appraises the Evidence, it generates a new structure called an Attestation Result.
A Relying Party utilizes Attestation Results to inform risk or policy-based decisions that consider trustworthiness of the attested entity.
This document relies on <xref target="architecture"/> as the foundation for how the various roles within the RATS architecture correspond to a certificate requester and a CA/RA.</t>

<t>The IETF RATS architecture <xref target="RFC9334"/> defines two communication patterns: the <em>background-check model</em> and the <em>passport model</em>.
In the background-check model, the Relying Party receives Evidence in the CSR from the Attester and must interact with a Verifier service directly to obtain Attestation Results.
In contrast, the passport model requires the Attester to first interact with the Verifier service to obtain an Attestation Result token that is then relayed to the Relying Party.
This specification defines both communication patterns.</t>

<t>Several standard and proprietary remote 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. Hence, this specification focuses on (1) the conveyance of Evidence and Attestation Results via CSRs while making minimal assumptions about content or format of the transported payload and (2) the conveyance of sets of certificates used for validation of Evidence.</t>

<t>The certificates typically contain one or more certification paths rooted in a device manufacturer trust anchor and the end entity certificate being on the device in question. The end entity certificate is associated with key material that takes on the role of an Attestation Key and is used as Evidence originating from the Attester.</t>

<t>This document specifies a CSR Attribute (or Extension for Certificate Request Message Format (CRMF) CSRs) for carrying Evidence and Attestation Results.</t>

<t><list style="symbols">
  <t>Evidence is placed into an EvidenceStatement along with an OID to identify its type and optionally a hint to the Relying Party about which Verifier (software package, a microservice or some other service) will be capable of parsing it. A set of EvidenceStatement structures may be grouped together along with the set of CertificateChoice structures needed to validate them to form a EvidenceBundle.</t>
  <t>Attestation Results are carried in the AttestationResult along with an OID to identify its type. A set of AttestationResult structures may be grouped together to form an AttestationResultBundle.</t>
</list></t>

<t>A CSR may contain one or more Evidence payloads. For example Evidence
asserting the storage properties of a private key, Evidence
asserting firmware version and other general properties
of the device, or Evidence signed using different cryptographic
algorithms. Like-wise a CSR may also contain one or more Attestation Result payloads.</t>

<t>With these attributes, additional
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 and Attestation Results within CSR. The exact format of the
Evidence and Attestation Results 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 Result (AR), Attester,
Verifier, Target Environment, Attesting Environment, Composite Device,
Lead Attester, Attestation Key, 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 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 messages in the Certificate Request Message Format (CRMF) <xref target="RFC4211"/>
to be "CSRs". In this document, the terms "CSR" and Certificate Request
message are used interchangeably.</t>

<t>The term Hardware Security Modules (HSM) is used generically to refer to the
combination of hardware and software designed to protect keys from unauthorized
access. Other commonly used terms include Secure Element and Trusted Execution
Environment.</t>

</section>
<section anchor="architecture"><name>Architecture</name>

<t><xref target="fig-arch-background"/> 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
defines the passport model, as described in <xref section="5.2" sectionFormat="of" target="RFC9334"/>.
In the passport model, the Attester transmits Evidence directly to the
Verifier to obtain an Attestation Result, which is subsequently forwarded
to the Relying Party.</t>

<t>The choice of model depends on various factors. For instance, the
background-check model is preferred when direct real-time interaction
between the Attester and the Verifier is not feasible.</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 role and Verifier role collapse into a
single physical entity. The Verifier functionality can, however,
also be kept separate from the RA functionality. For example,
security concerns may require parsers of Evidence formats to be logically
or physically separated from the core RA and CA functionality.</t>

<t>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. Like-wise, the interface between the Attester
and the Verifier used in the passport model is also out-of-scope for this
document.</t>

<t><xref target="fig-arch-background"/> shows an example data flow where Evidence is included in a
CSR in the background-check model. The CSR is parsed by the RA component of a
CA, which extracts the Evidence and forwards it to a
trusted Verifier. The RA receives back an Attestation Result, which it uses
to decide whether this Evidence meets its policy for certificate issuance
and if it does then the certificate request is forwarded to the CA for issuance.
This diagram overlays PKI entities with RATS roles in parentheses.</t>

<figure title="Example data flow demonstrating the architecture with Background Check Model." anchor="fig-arch-background"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="552" viewBox="0 0 552 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,176 L 8,256" fill="none" stroke="black"/>
<path d="M 112,176 L 112,256" fill="none" stroke="black"/>
<path d="M 216,32 L 216,96" fill="none" stroke="black"/>
<path d="M 216,176 L 216,256" fill="none" stroke="black"/>
<path d="M 256,104 L 256,192" fill="none" stroke="black"/>
<path d="M 320,96 L 320,192" fill="none" stroke="black"/>
<path d="M 360,32 L 360,96" fill="none" stroke="black"/>
<path d="M 360,176 L 360,256" fill="none" stroke="black"/>
<path d="M 496,176 L 496,256" fill="none" stroke="black"/>
<path d="M 544,176 L 544,256" fill="none" stroke="black"/>
<path d="M 216,32 L 360,32" fill="none" stroke="black"/>
<path d="M 216,96 L 360,96" fill="none" stroke="black"/>
<path d="M 8,176 L 112,176" fill="none" stroke="black"/>
<path d="M 216,176 L 248,176" fill="none" stroke="black"/>
<path d="M 264,176 L 312,176" fill="none" stroke="black"/>
<path d="M 328,176 L 360,176" fill="none" stroke="black"/>
<path d="M 496,176 L 544,176" fill="none" stroke="black"/>
<path d="M 112,192 L 208,192" fill="none" stroke="black"/>
<path d="M 224,192 L 256,192" fill="none" stroke="black"/>
<path d="M 320,192 L 352,192" fill="none" stroke="black"/>
<path d="M 368,192 L 488,192" fill="none" stroke="black"/>
<path d="M 8,256 L 112,256" fill="none" stroke="black"/>
<path d="M 216,256 L 360,256" fill="none" stroke="black"/>
<path d="M 496,256 L 544,256" fill="none" stroke="black"/>
<polygon class="arrowhead" points="496,192 484,186.4 484,197.6 " fill="black" transform="rotate(0,488,192)"/>
<polygon class="arrowhead" points="360,192 348,186.4 348,197.6 " fill="black" transform="rotate(0,352,192)"/>
<polygon class="arrowhead" points="328,168 316,162.4 316,173.6 " fill="black" transform="rotate(90,320,168)"/>
<polygon class="arrowhead" points="264,104 252,98.4 252,109.6 " fill="black" transform="rotate(270,256,104)"/>
<polygon class="arrowhead" points="216,192 204,186.4 204,197.6 " fill="black" transform="rotate(0,208,192)"/>
<g class="text">
<text x="400" y="52">Compare</text>
<text x="468" y="52">Evidence</text>
<text x="292" y="68">(Verifier)</text>
<text x="400" y="68">against</text>
<text x="472" y="68">Appraisal</text>
<text x="396" y="84">Policy</text>
<text x="212" y="132">Evidence</text>
<text x="376" y="132">Attestation</text>
<text x="356" y="148">Result</text>
<text x="32" y="212">End</text>
<text x="156" y="212">Evidence</text>
<text x="276" y="212">Registration</text>
<text x="416" y="212">Attestation</text>
<text x="516" y="212">CA</text>
<text x="44" y="228">Entity</text>
<text x="132" y="228">in</text>
<text x="160" y="228">CSR</text>
<text x="264" y="228">Authority</text>
<text x="324" y="228">(RA)</text>
<text x="396" y="228">Result</text>
<text x="436" y="228">in</text>
<text x="516" y="228">(RP)</text>
<text x="60" y="244">(Attester)</text>
<text x="260" y="244">(Relying</text>
<text x="324" y="244">Party)</text>
<text x="384" y="244">CSR</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
                          .-----------------.
                          |                 | Compare Evidence
                          |    (Verifier)   | against Appraisal
                          |                 | Policy
                          '------------+----'
                               ^       |
                      Evidence |       | Attestation
                               |       | Result
                               |       v
.------------.            .----|-------|----.                .-----.
|            +----------->|----'       '--->|--------------->|     |
| End        | Evidence   | Registration    | Attestation    | CA  |
| Entity     | in CSR     | Authority (RA)  | Result in      |(RP) |
| (Attester) |            | (Relying Party) | CSR            |     |
'------------'            '-----------------'                '-----'
]]></artwork></artset></figure>

<t><xref target="fig-arch-passport"/> illustrates the passport model, where the
Attester first communicates with the Verifier to obtain the Attestation
Result, which is subsequently included in the CSR.</t>

<figure title="Example data flow demonstrating the architecture with Passport Model." anchor="fig-arch-passport"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="256" width="552" viewBox="0 0 552 256" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,160 L 8,240" fill="none" stroke="black"/>
<path d="M 32,48 L 32,152" fill="none" stroke="black"/>
<path d="M 80,80 L 80,152" fill="none" stroke="black"/>
<path d="M 112,160 L 112,240" fill="none" stroke="black"/>
<path d="M 216,32 L 216,96" fill="none" stroke="black"/>
<path d="M 224,160 L 224,240" fill="none" stroke="black"/>
<path d="M 360,32 L 360,96" fill="none" stroke="black"/>
<path d="M 368,160 L 368,240" fill="none" stroke="black"/>
<path d="M 488,160 L 488,240" fill="none" stroke="black"/>
<path d="M 544,160 L 544,240" fill="none" stroke="black"/>
<path d="M 216,32 L 360,32" fill="none" stroke="black"/>
<path d="M 32,48 L 208,48" fill="none" stroke="black"/>
<path d="M 80,80 L 208,80" fill="none" stroke="black"/>
<path d="M 216,96 L 360,96" fill="none" stroke="black"/>
<path d="M 8,160 L 112,160" fill="none" stroke="black"/>
<path d="M 224,160 L 368,160" fill="none" stroke="black"/>
<path d="M 488,160 L 544,160" fill="none" stroke="black"/>
<path d="M 112,176 L 216,176" fill="none" stroke="black"/>
<path d="M 376,176 L 480,176" fill="none" stroke="black"/>
<path d="M 8,240 L 112,240" fill="none" stroke="black"/>
<path d="M 224,240 L 368,240" fill="none" stroke="black"/>
<path d="M 488,240 L 544,240" fill="none" stroke="black"/>
<polygon class="arrowhead" points="488,176 476,170.4 476,181.6 " fill="black" transform="rotate(0,480,176)"/>
<polygon class="arrowhead" points="224,176 212,170.4 212,181.6 " fill="black" transform="rotate(0,216,176)"/>
<polygon class="arrowhead" points="216,48 204,42.4 204,53.6 " fill="black" transform="rotate(0,208,48)"/>
<polygon class="arrowhead" points="88,152 76,146.4 76,157.6 " fill="black" transform="rotate(90,80,152)"/>
<g class="text">
<text x="60" y="36">Evidence</text>
<text x="400" y="52">Compare</text>
<text x="468" y="52">Evidence</text>
<text x="284" y="68">(Verifier)</text>
<text x="400" y="68">against</text>
<text x="472" y="68">Appraisal</text>
<text x="396" y="84">Policy</text>
<text x="136" y="116">Attestation</text>
<text x="116" y="132">Result</text>
<text x="284" y="180">Registration</text>
<text x="32" y="196">End</text>
<text x="168" y="196">Attestation</text>
<text x="272" y="196">Authority</text>
<text x="424" y="196">Attestation</text>
<text x="516" y="196">CA</text>
<text x="44" y="212">Entity</text>
<text x="148" y="212">Result</text>
<text x="188" y="212">in</text>
<text x="404" y="212">Result</text>
<text x="444" y="212">in</text>
<text x="516" y="212">(RP)</text>
<text x="60" y="228">(Attester)</text>
<text x="136" y="228">CSR</text>
<text x="268" y="228">(Relying</text>
<text x="332" y="228">Party)</text>
<text x="392" y="228">CSR</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
   Evidence               .-----------------.
   +--------------------->|                 | Compare Evidence
   |                      |   (Verifier)    | against Appraisal
   |     +----------------|                 | Policy
   |     |                '-----------------'
   |     | Attestation
   |     | Result
   |     v
.------------.             .-----------------.              .------.
|            +------------>| Registration    |------------->|      |
| End        | Attestation | Authority       | Attestation  |  CA  |
| Entity     | Result in   |                 | Result in    | (RP) |
| (Attester) | CSR         | (Relying Party) | CSR          |      |
'------------'             '-----------------'              '------'
]]></artwork></artset></figure>

<t>RFC 9334 <xref target="RFC9334"/> discusses different security and privacy aspects that need to be
considered when developing and deploying a remote attestation solution. For example,
Evidence may need to be protected against replay and <xref section="10" sectionFormat="of" target="RFC9334"/> lists
approach for offering freshness. There are also concerns about the exposure of
persistent identifiers by utilizing attestation technology, which are discussed in
<xref section="11" sectionFormat="of" target="RFC9334"/>. 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 <xref section="12" sectionFormat="of" target="RFC9334"/>.
Most of these aspects are, however, outside the scope of this specification but relevant
for use with a given attestation technology.</t>

<t>The focus of this specification is on the transport of Evidence and Attesation Results
from the Attester to the Relying Party via existing CSR messages.</t>

</section>
<section anchor="information-model"><name>Information Model</name>

<section anchor="model-for-evidence-in-csr"><name>Model for Evidence in CSR</name>

<t>To support a number of different use cases for the transmission of
Evidence and certificate chains in a CSR the structure
shown in <xref target="fig-info-model"/> is used.</t>

<t>On a high-level, the structure is composed as follows:
A PKCS#10 attribute or a CRMF extension contains one
EvidenceBundle structure. The EvidenceBundle contains one or more
EvidenceStatement structures as well as one or more
CertificateChoices which enable to carry various format of
certificates.</t>

<t>Note: Since an extension must only be included once in a certificate
see <xref section="4.2" sectionFormat="of" target="RFC5280"/>, this PKCS#10 attribute
or the CRMF extension <bcp14>MUST</bcp14> only be included once in a CSR.</t>

<figure title="Information Model for CSR Evidence Conveyance." anchor="fig-info-model"><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">
<path d="M 8,32 L 8,96" fill="none" stroke="black"/>
<path d="M 8,240 L 8,272" fill="none" stroke="black"/>
<path d="M 80,96 L 80,240" fill="none" stroke="black"/>
<path d="M 160,144 L 160,240" fill="none" stroke="black"/>
<path d="M 168,32 L 168,96" fill="none" stroke="black"/>
<path d="M 176,240 L 176,272" fill="none" stroke="black"/>
<path d="M 272,128 L 272,208" fill="none" stroke="black"/>
<path d="M 320,240 L 320,336" fill="none" stroke="black"/>
<path d="M 480,128 L 480,208" fill="none" stroke="black"/>
<path d="M 480,240 L 480,336" fill="none" stroke="black"/>
<path d="M 8,32 L 168,32" fill="none" stroke="black"/>
<path d="M 8,96 L 168,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,208 L 480,208" fill="none" stroke="black"/>
<path d="M 8,240 L 176,240" fill="none" stroke="black"/>
<path d="M 320,240 L 480,240" fill="none" stroke="black"/>
<path d="M 176,256 L 320,256" fill="none" stroke="black"/>
<path d="M 8,272 L 176,272" fill="none" stroke="black"/>
<path d="M 320,272 L 480,272" fill="none" stroke="black"/>
<path d="M 320,336 L 480,336" fill="none" stroke="black"/>
<circle cx="248" cy="128" r="6" class="closeddot" fill="black"/>
<circle cx="296" cy="240" r="6" class="closeddot" fill="black"/>
<g class="text">
<text x="48" y="52">PKCS#10</text>
<text x="120" y="52">Attribute</text>
<text x="76" y="68">or</text>
<text x="36" y="84">CRMF</text>
<text x="96" y="84">Extension</text>
<text x="56" y="116">1</text>
<text x="232" y="132">1..</text>
<text x="356" y="148">CertificateChoices</text>
<text x="328" y="180">Certificate</text>
<text x="388" y="180">OR</text>
<text x="372" y="196">OtherCertificateFormat</text>
<text x="56" y="212">1</text>
<text x="144" y="228">1</text>
<text x="192" y="244">1</text>
<text x="280" y="244">1..</text>
<text x="84" y="260">EvidenceBundle</text>
<text x="400" y="260">EvidenceStatement</text>
<text x="348" y="292">Type</text>
<text x="368" y="308">Statement</text>
<text x="348" y="324">Hint</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
 +-------------------+
 | PKCS#10 Attribute |
 |       or          |
 | CRMF Extension    |
 +--------+----------+
       1  |
          |                 1..*  +-------------------------+
          |         +-------------+ CertificateChoices      |
          |         |             +-------------------------+
          |         |             | Certificate OR          |
          |         |             | OtherCertificateFormat  |
       1  |         |             +-------------------------+
          |       1 |
 +--------+---------+-+ 1         1..*  +-------------------+
 |  EvidenceBundle    +-----------------+ EvidenceStatement |
 +--------------------+                 +-------------------+
                                        | Type              |
                                        | Statement         |
                                        | Hint              |
                                        +-------------------+
]]></artwork></artset></figure>

<t>A conformant implementation of an entity processing the CSR structures <bcp14>MUST</bcp14> be prepared
to use certificates found in the EvidenceBundle structure to build a certification
path to validate any EvidenceStatement.
The following use cases are supported, as described in the sub-sections below.</t>

<section anchor="case-1-evidence-bundle-without-certificate-chain"><name>Case 1 - Evidence Bundle without Certificate Chain</name>

<t>A single Attester, which only distributes Evidence without an attached certificate chain.
In the use case, the Verifier is assumed to be in possession of the certificate chain already
or the Verifier directly trusts the Attestation Key and therefore no certificate chain needs
to be conveyed in the CSR.</t>

<t>As a result, one EvidenceBundle is included in a CSR that contains a single EvidenceStatement
without the CertificateChoices structure. <xref target="fig-single-attester"/> shows this use case.</t>

<figure title="Case 1: Evidence Bundle without Certificate Chain." anchor="fig-single-attester"><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">
<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,96 L 176,96" fill="none" stroke="black"/>
<g class="text">
<text x="84" y="52">EvidenceBundle</text>
<text x="92" y="68">....................</text>
<text x="88" y="84">EvidenceStatement</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
  +--------------------+
  |  EvidenceBundle    |
  +....................+
  | EvidenceStatement  |
  +--------------------+
]]></artwork></artset></figure>

</section>
<section anchor="case-2-evidence-bundle-with-certificate-chain"><name>Case 2 - Evidence Bundle with Certificate Chain</name>

<t>A single Attester, which shares Evidence together with a certificate chain, is
shown in <xref target="fig-single-attester-with-path"/>. The CSR conveys an EvidenceBundle
with a single EvidenceStatement and a CertificateChoices structure.</t>

<figure title="Case 2: Single Evidence Bundle with Certificate Chain." anchor="fig-single-attester-with-path"><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">
<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,112 L 216,112" fill="none" stroke="black"/>
<g class="text">
<text x="84" y="52">EvidenceBundle</text>
<text x="112" y="68">.........................</text>
<text x="88" y="84">EvidenceStatement</text>
<text x="92" y="100">CertificateChoices</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
 +-------------------------+
 |  EvidenceBundle         |
 +.........................+
 | EvidenceStatement       |
 | CertificateChoices      |
 +-------------------------+
]]></artwork></artset></figure>

</section>
<section anchor="case-3-evidence-bundles-with-multiple-evidence-statements-and-complete-certificate-chains"><name>Case 3 - Evidence Bundles with Multiple Evidence Statements and Complete Certificate Chains</name>

<t>In a Composite Device, which contains multiple Attesters, a collection of Evidence
statements is obtained. In this use case, each Attester returns its Evidence together with a
certificate chain. As a result, multiple EvidenceStatement structures and the corresponding CertificateChoices structure with the
certification chains as provided by the Attester, are included in the CSR.
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 title="Case 3: Multiple Evidence Structures each with Complete Certificate Chains." anchor="fig-multiple-attesters"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="160" width="560" viewBox="0 0 560 160" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,32 L 8,128" fill="none" stroke="black"/>
<path d="M 216,32 L 216,128" fill="none" stroke="black"/>
<path d="M 8,32 L 216,32" fill="none" stroke="black"/>
<path d="M 8,128 L 216,128" fill="none" stroke="black"/>
<g class="text">
<text x="84" y="52">EvidenceBundle</text>
<text x="112" y="68">.........................</text>
<text x="88" y="84">EvidenceStatement</text>
<text x="176" y="84">(1)</text>
<text x="260" y="84">Provided</text>
<text x="308" y="84">by</text>
<text x="356" y="84">Attester</text>
<text x="400" y="84">1</text>
<text x="88" y="100">EvidenceStatement</text>
<text x="176" y="100">(2)</text>
<text x="260" y="100">Provided</text>
<text x="308" y="100">by</text>
<text x="356" y="100">Attester</text>
<text x="400" y="100">2</text>
<text x="92" y="116">CertificateChoices</text>
<text x="276" y="116">Certificates</text>
<text x="364" y="116">provided</text>
<text x="412" y="116">by</text>
<text x="460" y="116">Attester</text>
<text x="504" y="116">1</text>
<text x="528" y="116">and</text>
<text x="552" y="116">2</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
  +-------------------------+
  |  EvidenceBundle         |
  +.........................+
  | EvidenceStatement (1)   | Provided by Attester 1
  | EvidenceStatement (2)   | Provided by Attester 2
  | CertificateChoices      | Certificates provided by Attester 1 and 2
  +-------------------------+
]]></artwork></artset></figure>

</section>
</section>
<section anchor="model-for-attestation-result-in-csr"><name>Model for Attestation Result in CSR</name>

<t><xref target="fig-info-model-ar"/> illustrates the information model for transmitting
Attestation Results as a PKCS#10 attribute or a CRMF extension. This
structure includes a single AttestationResultBundle, which in turn comprises
one or more AttestationResult structures.</t>

<figure title="Information Model for CSR Attestation Result Conveyance." anchor="fig-info-model-ar"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="448" viewBox="0 0 448 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,32 L 8,96" fill="none" stroke="black"/>
<path d="M 8,240 L 8,272" fill="none" stroke="black"/>
<path d="M 80,96 L 80,240" fill="none" stroke="black"/>
<path d="M 160,144 L 160,240" fill="none" stroke="black"/>
<path d="M 168,32 L 168,96" fill="none" stroke="black"/>
<path d="M 216,240 L 216,272" fill="none" stroke="black"/>
<path d="M 280,112 L 280,208" fill="none" stroke="black"/>
<path d="M 440,112 L 440,208" fill="none" stroke="black"/>
<path d="M 8,32 L 168,32" fill="none" stroke="black"/>
<path d="M 8,96 L 168,96" fill="none" stroke="black"/>
<path d="M 280,112 L 440,112" fill="none" stroke="black"/>
<path d="M 160,144 L 264,144" fill="none" stroke="black"/>
<path d="M 280,144 L 440,144" fill="none" stroke="black"/>
<path d="M 280,208 L 440,208" fill="none" stroke="black"/>
<path d="M 8,240 L 216,240" fill="none" stroke="black"/>
<path d="M 8,272 L 216,272" fill="none" stroke="black"/>
<circle cx="248" cy="128" r="6" class="closeddot" fill="black"/>
<g class="text">
<text x="48" y="52">PKCS#10</text>
<text x="120" y="52">Attribute</text>
<text x="76" y="68">or</text>
<text x="36" y="84">CRMF</text>
<text x="96" y="84">Extension</text>
<text x="56" y="116">1</text>
<text x="232" y="132">1..</text>
<text x="360" y="132">AttestationResult</text>
<text x="308" y="164">Type</text>
<text x="316" y="180">Result</text>
<text x="56" y="212">1</text>
<text x="144" y="228">1</text>
<text x="112" y="260">AttestationResultBundle</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
+-------------------+
| PKCS#10 Attribute |
|       or          |
| CRMF Extension    |
+--------+----------+
      1  |                        +-------------------+
         |                 1..*   + AttestationResult |
         |         +------------- +-------------------+
         |         |              | Type              |
         |         |              | Result            |
         |         |              |                   |
      1  |         |              +-------------------+
         |       1 |
+--------+---------+------+
| AttestationResultBundle |
+-------------------------+
]]></artwork></artset></figure>

</section>
</section>
<section anchor="asn1-elements-for-evidence-in-csr"><name>ASN.1 Elements for Evidence in CSR</name>

<section anchor="object-identifiers"><name>Object Identifiers</name>

<t>This document references <spanx style="verb">id-pkix</spanx> and <spanx style="verb">id-aa</spanx>, both defined in <xref target="RFC5911"/> and <xref target="RFC5912"/>.</t>

<t>This document defines the arc depicted in <xref target="code-ata-arc"/>.</t>

<figure title="New OID Arc for PKIX Evidence Statement Formats" anchor="code-ata-arc"><artwork><![CDATA[
-- Arc for Evidence types
id-ata OBJECT IDENTIFIER ::= { id-aa (TBD1) }
]]></artwork></figure>

</section>
<section anchor="sec-evidenceAttr"><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
Evidence bundle of type <spanx style="verb">EvidenceBundle</spanx> containing
one or more Evidence statements of a type <spanx style="verb">EvidenceStatement</spanx> along with
optional certificates for certification path building.
This structure enables different Evidence statements to share a
certification path without duplicating it in the attribute.</t>

<figure title="Definition of EvidenceStatementSet" anchor="code-EvidenceStatementSet"><artwork><![CDATA[
EVIDENCE-STATEMENT ::= TYPE-IDENTIFIER

EvidenceStatementSet EVIDENCE-STATEMENT ::= {
   ... -- None defined in this document --
}
]]></artwork></figure>

<t>The expression illustrated in <xref target="code-EvidenceStatementSet"/> maps ASN.1 Types
for Evidence Statements to the OIDs
that identify them. These mappings are used to construct
or parse EvidenceStatements. Evidence Statements are typically
defined in other IETF standards, other standards bodies,
or vendor proprietary formats along with corresponding OIDs that identify them.</t>

<t>This list is left unconstrained in this document. However, implementers can
populate it with the formats that they wish to support.</t>

<figure title="Definition of EvidenceStatement" anchor="code-EvidenceStatement"><artwork><![CDATA[
EvidenceStatement ::= SEQUENCE {
   type   EVIDENCE-STATEMENT.&id({EvidenceStatementSet}),
   stmt   EVIDENCE-STATEMENT.&Type({EvidenceStatementSet}{@type}),
   hint   UTF8String OPTIONAL
}
]]></artwork></figure>

<t>In <xref target="code-EvidenceStatement"/>, type is an OID that indicates the format of the value of stmt.</t>

<t>Based on the responsibilities of the different roles in the RATS architecture,
Relying Parties need to relay Evidence to Verifiers for evaluation and obtain
an Attestation Result in return. Ideally, the Relying Party should select a Verifier
based on the received Evidence without requiring the Relying Party to inspect the
Evidence itself. This "routing" decision is simple when there is only a single
Verifier configured for use by a Relying Party but gets more complex when there
are different Verifiers available and each of them capable of parsing only certain
Evidence formats.</t>

<t>In some cases, the EvidenceStatement.type OID will be sufficient information
for the Relying Party to correctly route it to an appropriate Verifier,
however since the type OID only identifies the general data format, it is possible
that multiple Verifiers are registered against the same type OID in which case the
Relying Party will either require additional parsing of the evidence statement, or
the Attester will be required to provide additional information.</t>

<t>To simplify the task for the Relying Party an optional field, the hint, is available
in the EvidenceStatement structure, as shown in <xref target="code-EvidenceStatement"/>. An
Attester <bcp14>MAY</bcp14> include the hint to the EvidenceStatement and it <bcp14>MAY</bcp14> be processed
by the Relying Party. The Relying Party <bcp14>MAY</bcp14> decide not to trust the information
embedded in the hint or policy <bcp14>MAY</bcp14> override any information provided by the Attester
via this hint.</t>

<t>When the Attester populates the hint, it <bcp14>MUST</bcp14> contain a fully qualified domain
name (FQDN) which uniquely identifies a Verifier.
The problem of mapping hint FQDNs to Verifiers, and the problem of FQDN collision
is out of scope for this specification; it is assumed that Attester and Verifier
makers can manage this appropriately on their own FQDN trees, however if this
becomes problematic then a public registry may be needed.</t>

<t>In a typical usage scenario, the Relying Party is pre-configured with
a list of trusted Verifiers and the corresponding hint values can be used to look
up appropriate Verifier. Tricking an Relying Party into interacting with an unknown
and untrusted Verifier must be avoided.</t>

<t>Usage of the hint field can be seen in the TPM2_attest example in
<xref target="appdx-tpm2"/> where the type OID indicates the OID
id-TcgAttestCertify and the corresponding hint identifies the Verifier as
"tpmverifier.example.com".</t>

<figure><artwork><![CDATA[
EvidenceBundle ::= SEQUENCE {
   evidences SEQUENCE SIZE (1..MAX) OF EvidenceStatement,
   certs SEQUENCE SIZE (1..MAX) OF CertificateChoices OPTIONAL
      -- CertificateChoices MUST only contain certificate or other,
      -- see Section 10.2.2 of [RFC5652]
}
]]></artwork></figure>

<t>The CertificateChoices structure defined in <xref target="RFC6268"/> allows for carrying certificates in the default X.509 <xref target="RFC5280"/> format, or in other non-X.509 certificate formats. CertificateChoices <bcp14>MUST</bcp14> only contain certificate or other. CertificateChoices <bcp14>MUST NOT</bcp14> contain extendedCertificate, v1AttrCert, or v2AttrCert. Note that for non-ASN.1 certificate formats, the CertificateChoices <bcp14>MUST</bcp14> use <spanx style="verb">other [3]</spanx> with an <spanx style="verb">OtherCertificateFormat.Type</spanx> of <spanx style="verb">OCTET STRING</spanx>, and then can carry any binary data.</t>

<t>The <spanx style="verb">certs</spanx> field contains a set of certificates that
is intended to validate the contents of an Evidence statement
contained in <spanx style="verb">evidences</spanx>, if required. For each Evidnece statement the set of certificates should contain
the certificate that contains the public key needed to directly validate the
Evidence statement. Additional certificates may be provided, for example, to chain the
Evidence signer key back to an agreed upon trust anchor. No specific order of the certificates in <spanx style="verb">certs</spanx> <bcp14>SHOULD</bcp14> be expected because certificates contained in <spanx style="verb">certs</spanx> may be needed to validate different Evidence statements.</t>

<t>This specification places no restriction on mixing certificate types within the <spanx style="verb">certs</spanx> field. For example a non-X.509 Evidence signer certificate <bcp14>MAY</bcp14> chain to a trust anchor via a chain of X.509 certificates. It is up to the Attester and its Verifier to agree on supported certificate formats.</t>

<figure title="Definitions of CSR attribute and extension" anchor="code-extensions"><artwork><![CDATA[
id-aa-evidence OBJECT IDENTIFIER ::= { id-ata 59 }

-- For PKCS#10
attr-evidence ATTRIBUTE ::= {
  TYPE EvidenceBundle
  COUNTS MAX 1
  IDENTIFIED BY id-aa-evidence
}

-- For CRMF
ext-evidence EXTENSION ::= {
  SYNTAX EvidenceBundle
  IDENTIFIED BY id-aa-evidence
}
]]></artwork></figure>

<t>The Extension variant illustrated in <xref target="code-extensions"/> is intended only for use within CRMF CSRs and is <bcp14>NOT RECOMMENDED</bcp14> to be used within X.509 certificates due to the privacy implications of publishing Evidence about the end entity's hardware environment. See <xref target="sec-con-publishing-x509"/> for more discussion.</t>

<t>By the nature of the PKIX ASN.1 classes <xref target="RFC5912"/>, there are multiple ways to convey multiple Evidence statements: by including multiple copies of <spanx style="verb">attr-evidence</spanx> or <spanx style="verb">ext-evidence</spanx>, multiple values within the attribute or extension, and finally, by including multiple <spanx style="verb">EvidenceStatement</spanx> structures within an <spanx style="verb">EvidenceBundle</spanx>. The latter is the preferred way to carry multiple Evidence statements. Implementations <bcp14>MUST NOT</bcp14> place multiple copies of <spanx style="verb">attr-evidence</spanx> into a PKCS#10 CSR due to the <spanx style="verb">COUNTS MAX 1</spanx> declaration. In a CRMF CSR, implementers <bcp14>SHOULD NOT</bcp14> place multiple copies of <spanx style="verb">ext-evidence</spanx>.</t>

</section>
</section>
<section anchor="asn1-elements-for-attestation-result-in-csr"><name>ASN.1 Elements for Attestation Result in CSR</name>

<section anchor="object-identifiers-1"><name>Object Identifiers</name>

<t>This document defines the arc depicted in <xref target="code-ar-arc"/>.</t>

<figure title="New OID Arc for PKIX Attestation Result Formats" anchor="code-ar-arc"><artwork><![CDATA[
-- Arc for Attestation Result types
id-aa-ar OBJECT IDENTIFIER ::= { id-ata (TBD2) }
]]></artwork></figure>

</section>
<section anchor="sec-arAttr"><name>Attestation Result 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 AttestationResultBundle structure.</t>

<figure title="Definition of AttestationResultSet" anchor="code-AttestationResultSet"><artwork><![CDATA[
ATTESTATION-RESULT ::= TYPE-IDENTIFIER

AttestationResultSet ATTESTATION-RESULT ::= {
   ... -- None defined in this document --
}
]]></artwork></figure>

<t>The expression illustrated in <xref target="code-AttestationResultSet"/>
maps ASN.1 Types for Attestation Result to the OIDs that identify them. These
mappings are used to construct or parse AttestationResults. Attestation Results
are defined in other IETF standards (see <xref target="I-D.ietf-rats-ar4si"/>),
other standards bodies, or vendor proprietary formats along with corresponding
OIDs that identify them.</t>

<t>This list is left unconstrained in this document. However, implementers can
populate it with the formats that they wish to support.</t>

<figure title="Definition of AttestationResult" anchor="code-AttestationResult"><artwork><![CDATA[
AttestationResult ::= SEQUENCE {
   type   ATTESTATION-RESULT.&id({AttestationResultSet}),
   stmt   ATTESTATION-RESULT.&Type({AttestationResultSet}{@type}),
}
]]></artwork></figure>

<t>In <xref target="code-AttestationResult"/>, type is an OID that indicates the format of the
value of stmt.</t>

<figure><artwork><![CDATA[
AttestationResultBundle ::= SEQUENCE SIZE (1..MAX) OF AttestationResult
]]></artwork></figure>

<figure title="Definitions of CSR attribute and extension" anchor="code-extensions-ar"><artwork><![CDATA[
id-aa-ar OBJECT IDENTIFIER ::= { id-ata 60 }

-- For PKCS#10
attr-ar ATTRIBUTE ::= {
  TYPE AttestationResultBundle
  COUNTS MAX 1
  IDENTIFIED BY id-aa-ar
}

-- For CRMF
ext-ar EXTENSION ::= {
  SYNTAX AttestationResultBundle
  IDENTIFIED BY id-aa-ar
}
]]></artwork></figure>

</section>
<section anchor="implementation-considerations"><name>Implementation Considerations</name>

<t>This specification is applicable both in cases where a CSR
is constructed internally or externally to the Attesting Environment, from the
point of view of the calling application. This section is particularly
applicable to the background check model.</t>

<t>Cases where the CSR is generated internally to the Attesting Environment
are straightforward: the Hardware Security Model (HSM) generates and embeds
the Evidence and the corresponding certification paths when constructing the CSR.</t>

<t>Cases where the CSR is generated externally may require extra 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, 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 title="Example interaction between CSR generator and HSM." anchor="fig-csr-client-p11"><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">
<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>
<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>

<t><list style="symbols">
  <t>Decimal: IANA Assigned - <strong>Replace TBDMOD</strong></t>
  <t>Description: CSR-ATTESTATION-2023 - id-mod-pkix-attest-01</t>
  <t>References: This Document</t>
</list></t>

</section>
<section anchor="object-identifier-registrations-smi-security-for-smime-attributes"><name>Object Identifier Registrations - SMI Security for S/MIME Attributes</name>

<t><list style="symbols">
  <t>Evidence Statement</t>
  <t>Decimal: IANA Assigned - This was early-allocated as <spanx style="verb">59</spanx> so that we could generate the sample data.</t>
  <t>Description: id-aa-evidence</t>
  <t>References: This Document</t>
  <t>Attestation Result</t>
  <t>Decimal: IANA Assigned - This was early-allocated as <spanx style="verb">60</spanx> so that we could generate the sample data.</t>
  <t>Description: id-aa-ar</t>
  <t>References: This Document</t>
</list></t>

</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>

<t><list style="symbols">
  <t>Decimal: IANA Assigned - <strong>replace TBD1</strong></t>
  <t>Description: id-ata</t>
  <t>References: This document</t>
  <t>Initial contents: None</t>
  <t>Registration Regime: Specification Required.
Document must specify an EVIDENCE-STATEMENT or ATTESTATION-RESULT
definition to which this Object Identifier shall be bound.</t>
</list></t>

<t>Columns:</t>

<t><list style="symbols">
  <t>Decimal: The subcomponent under id-ata</t>
  <t>Description: Begins with id-ata</t>
  <t>References: RFC or other document</t>
</list></t>

</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>

<t><list style="symbols">
  <t>OID: The OID number, which has already been allocated. IANA does
not allocate OID numbers for use with this registry.</t>
  <t>Description: Brief description of the use of the Evidence and the
registration of the OID.</t>
  <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>
  <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>
</list></t>

</section>
<section anchor="initial-registry-contents"><name>Initial Registry Contents</name>

<t>The initial registry contents is shown in the table below.
It lists entries for several evidence encoding OIDs including an entry for the Conceptual Message Wrapper (CMW) <xref target="I-D.ietf-rats-msg-wrap"/>.</t>

<texttable title="Initial Contents of the Attestation Evidence OID Registry" anchor="tab-ae-reg">
      <ttcol align='left'>OID</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference(s)</ttcol>
      <ttcol align='left'>Change Controller</ttcol>
      <c>2 23 133 5 4 1</c>
      <c>tcg-dice-TcbInfo</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 3</c>
      <c>tcg-dice-endorsement-manifest-uri</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 4</c>
      <c>tcg-dice-Ueid</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 5</c>
      <c>tcg-dice-MultiTcbInfo</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 6</c>
      <c>tcg-dice-UCCS-evidence</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 7</c>
      <c>tcg-dice-manifest-evidence</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 8</c>
      <c>tcg-dice-MultiTcbInfoComp</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 9</c>
      <c>tcg-dice-conceptual-message-wrapper</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 11</c>
      <c>tcg-dice-TcbFreshness</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>2 23 133 20 1</c>
      <c>tcg-attest-tpm-certify</c>
      <c><xref target="TCGRegistry"/></c>
      <c>TCG</c>
      <c>1 3 6 1 5 5 7 1 35</c>
      <c>id-pe-cmw</c>
      <c><xref target="I-D.ietf-rats-msg-wrap"/></c>
      <c>IETF</c>
</texttable>

<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>In the RATS architecture, when Evidence or an Attestation Result is presented to a Relying Party (RP), the RP may learn detailed information about the Attester unless that information has been redacted or encrypted. Consequently, a certain amount of trust must be placed in the RP, which raises potential privacy concerns because an RP could be used to track devices. This observation is noted in Section 11 of <xref target="RFC9334"/>.</t>

<t>Typically, the RPs considered in the RATS architecture are application services that use remote attestation, rather than RAs or CAs. Devices inherently place significant trust in RA/CA infrastructure elements, and therefore any additional information revealed through remote attestation to such entities is generally less concerning than disclosure to application services. The problem of copying Evidence by CAs into an X.509 certificate is discussed in <xref target="sec-con-publishing-x509"/>.</t>

<t>These privacy risks can be mitigated using several approaches, including:</t>

<t><list style="symbols">
  <t>Shared Attestation Keys: A manufacturer of devices may provision all devices with the same attestation key(s), or share a common attestation key across devices of the same product family. This approach anonymizes individual devices by making them indistinguishable from others using the same key(s). However, it also means losing the ability to revoke a single attestation key if a specific device is compromised. Care must be taken to avoid embedding uniquely identifying information in the Evidence, as that would reduce the privacy benefits of using remote attestation.</t>
  <t>Per-Use Attestation Keys: Devices may be designed to dynamically generate distinct attestation keys (and request the corresponding certificates) for each use case, device, or session. This is analogous to the Privacy CA model, in which a device is initially provisioned with an attestation key and certificate; then, in conjunction with a privacy-preserving CA, it can obtain unique keys and certificates as needed. This strategy reduces the potential for tracking while maintaining strong security assurances. This is the model described in this document.</t>
  <t>Anonymous Attestation Mechanisms: Direct anonymous attestation (DAA) or similar cryptographic methods can be employed to generate blinded attestation signatures. In these schemes, the verifier can validate the attestation using a root key but does not gain a global correlation handle. Thus, repeated use of the same attestation key cannot be exploited to track devices. <xref target="I-D.ietf-rats-daa"/> extends the RATS architecture with such a DAA scheme, significantly enhancing privacy.</t>
</list></t>

<section anchor="background-check-model-security-considerations"><name>Background Check Model 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.</t>

<t>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 title="Interaction between Attesting and Target Environment" anchor="fig-attester"><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">
<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>
<section anchor="freshness-for-the-background-check-model"><name>Freshness for the Background Check Model</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. <xref section="10" sectionFormat="of" 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 an out-of-band
communication channel.
This document leaves the exchange of nonces and other freshness data to
certificate management protocols, see <xref target="I-D.ietf-lamps-attestation-freshness"/>.
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>

<t>Note: Freshness is also a concern for remote attestation in the passport model; however, the protocol between the Attester and the Verifier lies outside the scope of this specification.</t>

</section>
<section anchor="sec-con-publishing-x509"><name>Publishing Evidence in an X.509 Extension</name>

<t>This document specifies an 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 extension 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>". Often, the correct layer at which to address this is either in certificate profiles, a Certificate Practice Statement (CPS), or in the protocol or application that carries the CSR to the RA/CA where a flag can be added indicating whether the RA/CA should consider the evidence to be public or private.</t>

</section>
<section anchor="type-oid-and-verifier-hint"><name>Type OID and verifier hint</name>

<t>The <spanx style="verb">EvidenceStatement</spanx> includes both a <spanx style="verb">type</spanx> OID and a free form <spanx style="verb">hint</spanx> 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 <spanx style="verb">type</spanx> OID and <spanx style="verb">hint</spanx> 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 <spanx style="verb">hint</spanx> 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 <spanx style="verb">type</spanx> OID or <spanx style="verb">hint</spanx> values that cause a short-circuit in the verification logic, such as <spanx style="verb">None</spanx>, <spanx style="verb">Null</spanx>, <spanx style="verb">Debug</spanx>, 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 anchor="additional-security-considerations"><name>Additional Security Considerations</name>

<t>In addition to the security considerations listed here, implementers should be familiar with the security considerations of the specifications on this this depends: PKCS#10 <xref target="RFC2986"/>, CRMF <xref target="RFC4211"/>, as well as general security concepts relating to remote attestation; many of these concepts are discussed in <xref section="6" sectionFormat="of" target="RFC9334"/>, <xref section="7" sectionFormat="of" target="RFC9334"/>, <xref section="9" sectionFormat="of" target="RFC9334"/>, <xref section="11" sectionFormat="of" target="RFC9334"/>, and <xref section="12" sectionFormat="of" target="RFC9334"/>. Implementers should also be aware of any security considerations relating to the specific Evidence and Attestation Result formats being carried within the CSR.</t>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<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="RFC6268">
  <front>
    <title>Additional New ASN.1 Modules for the Cryptographic Message Syntax (CMS) and the Public Key Infrastructure Using X.509 (PKIX)</title>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <author fullname="S. Turner" initials="S." surname="Turner"/>
    <date month="July" year="2011"/>
    <abstract>
      <t>The Cryptographic Message Syntax (CMS) 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 some auxiliary ASN.1 modules to conform to the 2008 version of ASN.1; the 1988 ASN.1 modules remain the normative version. 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="6268"/>
  <seriesInfo name="DOI" value="10.17487/RFC6268"/>
</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="RFC5280">
  <front>
    <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
    <author fullname="D. Cooper" initials="D." surname="Cooper"/>
    <author fullname="S. Santesson" initials="S." surname="Santesson"/>
    <author fullname="S. Farrell" initials="S." surname="Farrell"/>
    <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
    <author fullname="R. Housley" initials="R." surname="Housley"/>
    <author fullname="W. Polk" initials="W." surname="Polk"/>
    <date month="May" year="2008"/>
    <abstract>
      <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5280"/>
  <seriesInfo name="DOI" value="10.17487/RFC5280"/>
</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>

<reference anchor="RFC5911">
  <front>
    <title>New ASN.1 Modules for Cryptographic Message Syntax (CMS) and S/MIME</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 Cryptographic Message Syntax (CMS) 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="5911"/>
  <seriesInfo name="DOI" value="10.17487/RFC5911"/>
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">



<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">
         <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
      </author>
      <author fullname="Dionna Glaze" initials="D." surname="Glaze">
         <organization>Google LLC</organization>
      </author>
      <date day="15" month="November" year="2024"/>
      <abstract>
	 <t>   This document defines the RATS conceptual message wrapper (CMW)
   format, a type of encapsulation format that can be used for any RATS
   messages, such as Evidence, Attestation Results, Endorsements, and
   Reference Values.  Additionally, the document describes a collection
   type that enables the aggregation of one or more CMWs into a single
   message.

   This document also defines corresponding CBOR tag, JSON Web Tokens
   (JWT) and CBOR Web Tokens (CWT) claims, as well as an X.509
   extension.  These allow embedding the wrapped conceptual messages
   into CBOR-based protocols, web APIs, and PKIX protocols.  In
   addition, a Media Type and a CoAP Content-Format are defined for
   transporting CMWs in HTTP, MIME, CoAP and other Internet protocols.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-11"/>
   
</reference>


<reference anchor="I-D.bft-rats-kat">
   <front>
      <title>An EAT-based Key Attestation Token</title>
      <author fullname="Mathias Brossard" initials="M." surname="Brossard">
         <organization>arm</organization>
      </author>
      <author fullname="Thomas Fossati" initials="T." surname="Fossati">
         <organization>Linaro</organization>
      </author>
      <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         </author>
      <date day="21" month="November" year="2024"/>
      <abstract>
	 <t>   This document defines an evidence format for key attestation based on
   the Entity Attestation Token (EAT).

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the Remote ATtestation
   ProcedureS Working Group mailing list (rats@ietf.org), which is
   archived at https://mailarchive.ietf.org/arch/browse/rats/.

   Source for this draft and an issue tracker can be found at
   https://github.com/thomas-fossati/draft-kat.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-bft-rats-kat-05"/>
   
</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.ietf-rats-daa">
   <front>
      <title>Direct Anonymous Attestation for the Remote Attestation Procedures Architecture</title>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Christopher Newton" initials="C." surname="Newton">
         <organization>University of Surrey</organization>
      </author>
      <author fullname="Liqun Chen" initials="L." surname="Chen">
         <organization>University of Surrey</organization>
      </author>
      <author fullname="Dave Thaler" initials="D." surname="Thaler">
         <organization>Microsoft</organization>
      </author>
      <date day="5" month="September" year="2024"/>
      <abstract>
	 <t>   This document maps the concept of Direct Anonymous Attestation (DAA)
   to the Remote Attestation Procedures (RATS) Architecture.  The
   protocol entity DAA Issuer is introduced and its mapping with
   existing RATS roles in DAA protocol steps is specified.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-rats-daa-06"/>
   
</reference>


<reference anchor="I-D.ietf-lamps-attestation-freshness">
   <front>
      <title>Nonce-based Freshness for Remote Attestation in Certificate Signing Requests (CSRs) for the Certification Management Protocol (CMP) and for Enrollment over Secure Transport (EST)</title>
      <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         <organization>Siemens</organization>
      </author>
      <author fullname="Hendrik Brockhaus" initials="H." surname="Brockhaus">
         <organization>Siemens</organization>
      </author>
      <date day="5" month="November" year="2024"/>
      <abstract>
	 <t>   When an end entity includes attestation Evidence in a Certificate
   Signing Request (CSR), it may be necessary to demonstrate the
   freshness of the provided Evidence.  Current attestation technology
   commonly achieves this using nonces.

   This document outlines the process through which nonces are supplied
   to the end entity by an RA/CA for inclusion in Evidence, leveraging
   the Certificate Management Protocol (CMP) and Enrollment over Secure
   Transport (EST)

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-attestation-freshness-03"/>
   
</reference>


<reference anchor="I-D.tschofenig-rats-psa-token">
   <front>
      <title>Arm&#x27;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="23" month="September" year="2024"/>
      <abstract>
	 <t>   The Arm 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 profile of the 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 informational document is published as an independent submission
   to improve interoperability with Arm&#x27;s architecture.  It is not a
   standard nor a product of the IETF.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-tschofenig-rats-psa-token-24"/>
   
</reference>


<reference anchor="I-D.ffm-rats-cca-token">
   <front>
      <title>Arm&#x27;s Confidential Compute Architecture Reference Attestation Token</title>
      <author fullname="Simon Frost" initials="S." surname="Frost">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Thomas Fossati" initials="T." surname="Fossati">
         <organization>Linaro</organization>
      </author>
      <author fullname="Giridhar Mandyam" initials="G." surname="Mandyam">
         <organization>Mediatek Inc</organization>
      </author>
      <date day="4" month="July" year="2024"/>
      <abstract>
	 <t>   The Arm Confidential Compute Architecture (CCA) is series of hardware
   and software innovations that enhance Arm’s support for Confidential
   Computing for large, compute-intensive workloads.  Devices that
   implement CCA can produce attestation tokens as described in this
   memo, which are the basis for trustworthiness assessment of the
   Confidential Compute environment.  This document specifies the CCA
   attestation token structure and semantics.

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

   This informational document is published as an independent submission
   to improve interoperability with Arm&#x27;s architecture.  It is not a
   standard nor a product of the IETF.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ffm-rats-cca-token-00"/>
   
</reference>


<reference anchor="TPM20" target="https://trustedcomputinggroup.org/resource/tpm-library-specification/">
  <front>
    <title>Trusted Platform Module Library Specification, Family 2.0</title>
    <author >
      <organization>Trusted Computing Group</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="CSBR" target="https://cabforum.org/uploads/Baseline-Requirements-for-the-Issuance-and-Management-of-Code-Signing.v3.7.pdf">
  <front>
    <title>Baseline Requirements for Code-Signing Certificates, v.3.7</title>
    <author >
      <organization>CA/Browser Forum</organization>
    </author>
    <date year="2024" month="February"/>
  </front>
</reference>
<reference anchor="TCGRegistry" target="https://trustedcomputinggroup.org/resource/tcg-oid-registry/">
  <front>
    <title>TCG OID Registry</title>
    <author >
      <organization>Trusted Computing Group</organization>
    </author>
    <date year="2024" month="October"/>
  </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="SampleData" target="https://github.com/lamps-wg/csr-attestation-examples">
  <front>
    <title>CSR Attestation Sample Data</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </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>


<reference anchor="I-D.ietf-rats-ar4si">
   <front>
      <title>Attestation Results for Secure Interactions</title>
      <author fullname="Eric Voit" initials="E." surname="Voit">
         <organization>Cisco Systems</organization>
      </author>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Thomas Hardjono" initials="T." surname="Hardjono">
         <organization>MIT</organization>
      </author>
      <author fullname="Thomas Fossati" initials="T." surname="Fossati">
         <organization>Linaro</organization>
      </author>
      <author fullname="Vincent Scarlata" initials="V." surname="Scarlata">
         <organization>Intel</organization>
      </author>
      <date day="2" month="September" year="2024"/>
      <abstract>
	 <t>   This document defines reusable Attestation Result information
   elements.  When these elements are offered to Relying Parties as
   Evidence, different aspects of Attester trustworthiness can be
   evaluated.  Additionally, where the Relying Party is interfacing with
   a heterogeneous mix of Attesting Environment and Verifier types,
   consistent policies can be applied to subsequent information exchange
   between each Attester and the Relying Party.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-rats-ar4si-07"/>
   
</reference>




    </references>

</references>


<?line 974?>

<section anchor="examples"><name>Examples</name>

<t>This section provides several examples and sample data 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>After publication of this document, additional examples and sample data will
be collected at the following GitHub repository <xref target="SampleData"/>:</t>

<t>https://github.com/lamps-wg/csr-attestation-examples</t>

<section anchor="extending-evidencestatementset"><name>Extending EvidenceStatementSet</name>

<t>As defined in <xref target="sec-evidenceAttr"/>, EvidenceStatementSet acts as a way to provide an ASN.1 compiler or
runtime parser with a list of OBJECT IDENTIFIERs that are known to represent EvidenceStatements
-- and are expected to appear in an EvidenceStatement.type field, along with
the ASN.1 type that should be used to parse the data in the associated EvidenceStatement.stmt field.
Essentially this is a mapping of OIDs to data structures. Implementers are expected to populate it
with mappings for the Evidence types that their application will be handling.</t>

<t>This specification aims to be agnostic about the type of data being carried, and therefore
does not specify any mandatory-to-implement Evidence types.</t>

<t>As an example of how to populate EvidenceStatementSet, implementing the TPM 2.0 and PSA Evidence types
given below would result in the following EvidenceStatementSet definition:</t>

<figure><artwork><![CDATA[
EvidenceStatementSet EVIDENCE-STATEMENT ::= {
  --- TPM 2.0
  { Tcg-attest-tpm-certify IDENTIFIED BY tcg-attest-tpm-certify },
  ...,

  --- PSA
  { OCTET STRING IDENTIFIED BY { 1 3 6 1 5 5 7 1 99 } }
}
]]></artwork></figure>

</section>
<section anchor="appdx-tpm2"><name>TPM V2.0 Evidence in CSR</name>

<t>This section describes TPM2 key attestation for use in a CSR.</t>

<t>This is a complete and canonical example that can be used to test parsers implemented against this specification. Readers who wish the sample data may skip to <xref target="appdx-tpm-example"/>; the following sections explain the TPM-specific data structures needed to fully parse the contents of the evidence statement.</t>

<section anchor="tcg-key-attestation-certify"><name>TCG Key Attestation Certify</name>

<t>There are several ways in TPM2 to provide proof of a key's properties.
(i.e., key attestation). This description uses the simplest and most generally
expected to be used, which is the TPM2_Certify and the TPM2_ReadPublic commands.</t>

<t>This example does not describe how platform attestation augments key attestation.
The properties of the key (such as the name of the key, the key usage) in this example
do not change during the lifetime of the key.</t>

</section>
<section anchor="tcg-oids"><name>TCG OIDs</name>

<t>The OIDs in this section are defined by TCG
TCG has a registered arc of 2.23.133</t>

<figure><artwork><![CDATA[
tcg OBJECT IDENTIFIER ::= { 2 23 133 }

tcg-kp-AIKCertificate OBJECT IDENTIFIER ::= { id-tcg 8 3 }

tcg-attest OBJECT IDENTIFIER ::= { tcg 20 }

tcg-attest-tpm-certify OBJECT IDENTIFIER ::= { tcg-attest 1 }
]]></artwork></figure>
<t>The tcg-kp-AIKCertificate OID in extendedKeyUsage identifies an AK Certificate in RFC 5280 format defined by TCG. This
certificate would be a certificate in the EvidenceBundle defined in <xref target="sec-evidenceAttr"/>. (Note: The abbreviation AIK was used in
TPM 1.2 specification. TPM 2.0 specifications use the abbreviation AK. The abbreviations are interchangeable.)</t>

</section>
<section anchor="appdx-tcg-attest-tpm-certify"><name>TPM2 AttestationStatement</name>

<t>The EvidenceStatement structure contains a sequence of two fields:
a type and a stmt. The 'type' field contains the OID of the Evidence format and it is
set to tcg-attest-tpm-certify. The content of the structure shown below is placed into
the stmt, which is a concatenation of existing TPM2 structures. These structures
will be explained in the rest of this section.</t>

<figure><artwork><![CDATA[
Tcg-csr-tpm-certify ::= SEQUENCE {
  tpmSAttest       OCTET STRING,
  signature        OCTET STRING,
  tpmTPublic       OCTET STRING OPTIONAL
}
]]></artwork></figure>

</section>
<section anchor="introduction-to-tpm2-concepts"><name>Introduction to TPM2 concepts</name>

<t>The definitions in the following sections are specified by the Trusted Computing Group (TCG). TCG specification including the TPM2 set of specifications <xref target="TPM20"/>, specifically Part 2 defines the TPM 2.0 structures.
Those familiar with TPM2 concepts may skip to <xref target="appdx-tcg-attest-tpm-certify"/> which defines an ASN.1 structure
specific for bundling a TPM attestation into an EvidenceStatement, and <xref target="appdx-tpm-example"/> which provides the example.
For those unfamiliar with TPM2 concepts this section provides only the minimum information to understand TPM2
Attestation in CSR and is not a complete description of the technology in general.</t>

</section>
<section anchor="tcg-objects-and-key-attestation"><name>TCG Objects and Key Attestation</name>

<t>This provides a brief explanation of the relevant TPM2 commands and data
structures needed to understand TPM2 Attestation used in this RFC.
NOTE: The TPM2 specification used in this explanation is version 1.59,
section number cited are based on that version. Note also that the TPM2
specification comprises four documents: Part 1: Architecture; Part 2: Structures;
Part 3: Commands; Part 4: Supporting Routines.</t>

<t>Note about convention:
All structures starting with TPM2B_ are:</t>

<t><list style="symbols">
  <t>a structure that is a sized buffer where the size of the buffer is contained in a 16-bit, unsigned value.</t>
  <t>The first parameter is the size in octets of the second parameter. The second parameter may be any type.</t>
</list></t>

<t>A full explanation of the TPM structures is outside the scope of this document. As a
simplification references to TPM2B_ structures will simply use the enclosed
TPMT_ structure by the same name following the '_'.</t>

<section anchor="tpm2-object-names"><name>TPM2 Object Names</name>

<t>All TPM2 Objects (e.g., keys are key objects which is the focus of this specification).
A TPM2 object name is persistent across the object's life cycle whether the TPM2
object is transient or persistent.</t>

<t>A TPM2 Object name is a concatenation of a hash algorithm identifier and a hash of
the TPM2 Object's TPMT_PUBLIC.</t>

<figure><artwork><![CDATA[
     Name ≔ nameAlg || HnameAlg (handle→publicArea)
     nameAlg is a TCG defined 16 bit algorithm identifier
]]></artwork></figure>

<t>publicArea is the TPMT_PUBLIC structure for that TPM2 Object.</t>

<t>The size of the Name field can be derived by examining the nameAlg value, which defines
the hashing algorithm and the resulting size.</t>

<t>The Name field is returned in the TPM2B_ATTEST data field.</t>

<figure><artwork><![CDATA[
     typedef struct {
          TPM_GENERATED magic;
          TPMI_ST_ATTEST type;
          TPM2B_NAME qualifiedSigner;
          TPM2B_DATA extraData;
          TPMS_CLOCK_INFO clockInfo;
          UINT64 firmwareVersion;
          TPMU_ATTEST attested;
     } TPMS_ATTEST;
]]></artwork></figure>

<t>where for a key object the attested field is</t>

<figure><artwork><![CDATA[
     typedef struct {
          TPM2B_NAME name;
          TPM2B_NAME qualifiedName;
     } TPMS_CERTIFY_INFO;
]]></artwork></figure>

</section>
<section anchor="tpm2-public-structure"><name>TPM2 Public Structure</name>

<t>Any TPM2 Object has an associated TPM2 Public structure defined
as TPMT_PUBLIC. This is defined below as a 'C' structure. While there
are many types of TPM2 Objects each with its own specific TPMT_PUBLIC
structure (handled by the use of 'unions') this document will specifically
define TPMT_PUBLIC for a TPM2 key object.</t>

<figure><artwork><![CDATA[
     typedef struct {
          TPMI_ALG_PUBLIC type;
          TPMI_ALG_HASH nameAlg;
          TPMA_OBJECT objectAttributes;
          TPM2B_DIGEST authPolicy;
          TPMU_PUBLIC_PARMS parameters;
          TPMU_PUBLIC_ID unique;
     } TPMT_PUBLIC;
]]></artwork></figure>

<t>Where:
* type and nameAlg are 16 bit TCG defined algorithms.
* objectAttributes is a 32 bit field defining properties of the object, as shown below</t>

<figure><artwork><![CDATA[
     typedef struct TPMA_OBJECT {
          unsigned Reserved_bit_at_0 : 1;
          unsigned fixedTPM : 1;
          unsigned stClear : 1;
          unsigned Reserved_bit_at_3 : 1;
          unsigned fixedParent : 1;
          unsigned sensitiveDataOrigin : 1;
          unsigned userWithAuth : 1;
          unsigned adminWithPolicy : 1;
          unsigned Reserved_bits_at_8 : 2;
          unsigned noDA : 1;
          unsigned encryptedDuplication : 1;
          unsigned Reserved_bits_at_12 : 4;
          unsigned restricted : 1;
          unsigned decrypt : 1;
          unsigned sign : 1;
          unsigned x509sign : 1;
          unsigned Reserved_bits_at_20 : 12;
     } TPMA_OBJECT;
]]></artwork></figure>

<t><list style="symbols">
  <t>authPolicy is the Policy Digest needed to authorize use of the object.</t>
  <t>Parameters are the object type specific public information about the key.
  <list style="symbols">
      <t>For key objects, this would be the key's public parameters.</t>
    </list></t>
  <t>unique is the identifier for parameters</t>
</list></t>

<t>The size of the TPMT_PUBLIC is provided by the following structure:</t>

<figure><artwork><![CDATA[
     typedef struct {
          UINT16     size;
          TPMT_PUBLIC publicArea;
     } TPM2B_PUBLIC;
]]></artwork></figure>

</section>
<section anchor="tpm2-signatures"><name>TPM2 Signatures</name>

<t>TPM2 signatures use a union where the first field (16 bits) identifies
the signature scheme. The example below shows an RSA signature where
TPMT_SIGNATURE-&gt;sigAlg will indicate to use TPMS_SIGNATURE_RSA
as the signature.</t>

<figure><artwork><![CDATA[
     typedef struct {
          TPMI_ALG_SIG_SCHEME sigAlg;
          TPMU_SIGNATURE signature;
     } TPMT_SIGNATURE;

     typedef struct {
          TPMI_ALG_HASH hash;
          TPM2B_PUBLIC_KEY_RSA sig;
     } TPMS_SIGNATURE_RSA;
]]></artwork></figure>

</section>
<section anchor="attestation-key"><name>Attestation Key</name>

<t>The uniquely identifying TPM2 key is the Endorsement Key (the EK). As this is a privacy
sensitive key, the EK is not directly used to attest to any TPM2 asset. Instead,
the EK is used by an Attestation CA to create an Attestation Key (the AK). The AK is
assumed trusted by the Verifier and is assume to be loaded in the TPM during the execution
of the process described in the subsequent sections. The description of how to create the AK is outside
the scope of this document.</t>

</section>
<section anchor="attester-processing"><name>Attester Processing</name>

<t>The only signed component is the TPM2B_ATTEST structure, which returns
only the (key's) Name and the signature computed over the Name but no detailed information
about the key. As the Name is comprised of public information, the Name can
be calculated by the Verifier but only if the Verify knows all the public
information about the Key.</t>

<t>The Attester's processing steps are as follows:</t>

<t>Using the TPM2 command TPM2_Certify obtain the TPM2B_ATTEST and TPMT_SIGNATURE structures
from the TPM2. The signing key for TPMT_SIGNATURE is an Attention Key (or AK), which is
assumed to be available to the TPM2 upfront. More details are provided in <xref target="attestation-key"/></t>

<t>The TPM2 command TPM2_Certify takes the following input:</t>

<t><list style="symbols">
  <t>TPM2 handle for Key (the key to be attested to)</t>
  <t>TPM2 handle for the AK (see <xref target="attestation-key"/>)</t>
</list></t>

<t>It produces the following output:</t>

<t><list style="symbols">
  <t>TPM2B_ATTEST in binary format</t>
  <t>TPMT_SIGNATURE in binary format</t>
</list></t>

<t>Then, using the TPM2 command TPM2_ReadPublic obtain the Keys TPM2B_PUBLIC structure.
While the Key's public information can be obtained by the Verifier in a number
ways, such as storing it from when the Key was created, this may be impractical
in many situations. As TPM2 provided a command to obtain this information, this
specification will include it in the TPM2 Attestation CSR extension.</t>

<t>The TPM2 command TPM2_ReadPublic takes the following input:</t>

<t><list style="symbols">
  <t>TPM2 handle for Key (the key to be attested to)</t>
</list></t>

<t>It produces the following output:</t>

<t><list style="symbols">
  <t>TPM2B_PUBLIC in binary format</t>
</list></t>

</section>
<section anchor="verifier-processing"><name>Verifier Processing</name>

<t>The Verifier has to perform the following steps once it receives the Evidence:</t>

<t><list style="symbols">
  <t>Verify the TPM2B_ATTEST using the TPMT_SIGNATURE.</t>
  <t>Use the Key's "expected" Name from the provided TPM2B_PUBLIC structure.
If Key's "expected" Name equals TPM2B_ATTEST-&gt;attestationData then returned TPM2B_PUBLIC is the verified.</t>
</list></t>

</section>
</section>
<section anchor="appdx-tpm-example"><name>Sample CSR</name>

<t>This CSR demonstrates a certification request for a key stored in a TPM using the following structure:</t>

<figure><artwork><![CDATA[
CSR {
  attributes {
    id-aa-evidence {
      EvidenceBundle {
        Evidences {
          EvidenceStatement {
            type: tcg-attest-tpm-certify,
            stmt: <TcgAttestTpmCertify_data>
            hint: "tpmverifier.example.com"
          }
        },
        certs {
          akCertificate,
          caCertificate
        }
      }
    }
  }
}
]]></artwork></figure>

<t>Note that this example demonstrates most of the features of this specification:</t>

<t><list style="symbols">
  <t>The data type is identified by the OID id-TcgCsrCertify contained in the <spanx style="verb">EvidenceStatement.type</spanx> field.</t>
  <t>The signed evidence is carried in the <spanx style="verb">EvidenceStatement.stmt</spanx> field.</t>
  <t>The <spanx style="verb">EvidenceStatement.hint</spanx> provides information to the Relying Party about which Verifier (software) will be able to correctly parse this data. Note that the <spanx style="verb">type</spanx> OID indicates the format of the data, but that may itself be a wrapper format that contains further data in a proprietary format. In this example, the hint says that software from the package <spanx style="verb">"tpmverifier.example.com"</spanx> will be able to parse this data.</t>
  <t>The evidence statement is accompanied by a certificate chain in the <spanx style="verb">EvidenceBundle.certs</spanx> field which can be used to verify the signature on the evidence statement. How the Verifier establishes trust in the provided certificates is outside the scope of this specification.</t>
</list></t>

<t>This example does not demonstrate an EvidenceBundle that contains multiple EvidenceStatements sharing a certificate chain.</t>

<figure><artwork><![CDATA[
-----BEGIN CERTIFICATE REQUEST-----
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
k6F7pHkwdzELMAkGA1UEBhMCWloxETAPBgNVBAgMCFByb3ZpbmNlMREwDwYDVQQH
DAhMb2NhbGl0eTETMBEGA1UECgwKaWV0Zi1sYW1wczEXMBUGA1UECwwOaWV0Zi1s
YW1wcy1jc3IxFDASBgNVBAMMC3Rlc3Qtcm9vdENBghR5pP+xxKsc67pLOqPiIZSU
4fgpzDAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDAQBgNVHSUECTAHBgVngQUI
AzAdBgNVHQ4EFgQUH4QfxvcmPg9x21uQW5cfGyfxbMcwDQYJKoZIhvcNAQELBQAD
ggEBAC3Zz6B+u1H+72CG0j/s6lRPX/YP/DPjh5IIt9HdOJaWc5lsbCvgHSED7N/+
voCfCRf7IU2Oh5+2q9+9N5ARinXPmrsPZNyLR8vWkb27/hl9OTi0Ly7DtJMtUJTR
zq53dZc7kdTDNYpPnbIbanSOW3lSL5E173C8wyTsp/vQKteYTfmsDKw9hXHIU2eS
eUpZmKcHShXlbDEEbTuYLJMDASKmMCmPjIgJrSX/18wEoAgo2BVjjzwfhoc2SLnQ
dikvN6oa6Ee0zYRiImXpM7cuErC88jOr0quURA1U8fsQd8hYGRUk/6oPMXzIfZKs
z/yzAUQ570+mkdd2iFVlqTCQ9eUwggN1MIICXQIUeaT/scSrHOu6Szqj4iGUlOH4
KcwwDQYJKoZIhvcNAQELBQAwdzELMAkGA1UEBhMCWloxETAPBgNVBAgMCFByb3Zp
bmNlMREwDwYDVQQHDAhMb2NhbGl0eTETMBEGA1UECgwKaWV0Zi1sYW1wczEXMBUG
A1UECwwOaWV0Zi1sYW1wcy1jc3IxFDASBgNVBAMMC3Rlc3Qtcm9vdENBMB4XDTI0
MTAyMTIwMTcwOFoXDTI0MTEyMDIwMTcwOFowdzELMAkGA1UEBhMCWloxETAPBgNV
BAgMCFByb3ZpbmNlMREwDwYDVQQHDAhMb2NhbGl0eTETMBEGA1UECgwKaWV0Zi1s
YW1wczEXMBUGA1UECwwOaWV0Zi1sYW1wcy1jc3IxFDASBgNVBAMMC3Rlc3Qtcm9v
dENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxPODF6ujxbdDWuXn
zlqzYIO4rpQKolKfKbOFUCB6SjdA5XzArLTSYKD3ZXhqm7unFkmHC2HtqArq5jgv
cQ2fzJeNGbcuyJYSwa9WJjJ5qY6gXEY+G7sFgZ5ZeEWGQ+zjrnuJh/PtlhJ2/R7w
tdC82DAULaxnFjOS6Xm6pUB8RaZEtZ6HwfPUXYgeK9IRG2CbEs8jkoBQTrSKpdpC
0myJrrS0PoTFClDpq61je7uQgU6b9IAOfXi1oX5NdYcfqxcPch4wqbkldKsjC/i7
xMcem8hnb3WUvAmbsLP1I0Fx8nb0ug/T2ED5U9tPBXbKgeD72aU2L9GNs+ypE9Az
bTB6cwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBFBMAGsP1xKq4R4bzbWnQ4K2H+
rYNi8UEQzxN6BiANi9+8hbLHfx6gFZlz+QxwVyH6oQnNrsVVDVjEYH4/yvy7NdOx
VitFfqOYwyaNeK5oXx1l5otOaObtwzB7RVQNSlipzEVW4RPsJmx/8F7yNLtdgooP
U0QzUSqDcoKK36E4O3s85xfyNlEdJ2vJcJ/ZZx5QQlnhNTf5bWlr3U9x6DebeAqs
+wvvepdaNzulHBXaKIqAgSx9N+Y22vj+vw8GO4L8HndDPMhdE/Ct1h1yygm65j6h
aCmQRUTKzj49q6W4NHG7iPea+7bgMq7G4LRo9DSFEfMWOkQeVUSPPiTsaAahMAsG
CSqGSIb3DQEBCwOCAQEA1aPYnm8suCRwMTC7kOdOjvVP2+2pHxsI5vnLfffFgsaN
yoOz97t6bAmQXPQCEcjCQZqAynuJQITBbf5OowrNCOL8YRLaFu2zUS8H+XJUIU0I
YSs3H8UyfeYo5VDKJClU/OcSzGgGm6J9JDQiHUuEFrqbpE19aSztpXrEH9YYP87A
NyW9vxpLse2rpE4akcp+V+C958KJEoYQc9EfjvM3LqLmzp7pvyUalv21BbOweK8V
IYVK7djq+LCmYwJwdKrOYWmrDyH8P+me8nPtk9BdcvW+sj2qu/opZmYEL4KAqAvi
BW5TzPFUgQhmMalis/J4WY3Q0tvOMXRQQZCmO2N4Pg==
-----END CERTIFICATE REQUEST-----
]]></artwork></figure>

</section>
</section>
<section anchor="psa-attestation-token-in-csr"><name>PSA Attestation Token in CSR</name>

<t>The Platform Security Architecture (PSA) Attestation Token is
defined in <xref target="I-D.tschofenig-rats-psa-token"/> and specifies
claims to be included in an Entity Attestation
Token (EAT). <xref target="I-D.bft-rats-kat"/> defines key attestation
based on the EAT format. In this section the platform
attestation offered by <xref target="I-D.tschofenig-rats-psa-token"/>
is combined with key attestation by binding the
key attestation token (KAT) to the platform attestation token (PAT)
with the help of the nonce. For details see <xref target="I-D.bft-rats-kat"/>.
The resulting KAT-PAT bundle is, according to
<xref section="5.1" sectionFormat="of" target="I-D.bft-rats-kat"/>, combined in a CMW collection
<xref target="I-D.ietf-rats-msg-wrap"/>.</t>

<t>The encoding of this KAT-PAT bundle is shown in the example below.</t>

<figure><artwork><![CDATA[
EvidenceBundle
   +
   |
   + Evidences
   |
   +---->  EvidenceStatement
        +
        |
        +-> type: OID for CMW Collection
        |         1 3 6 1 5 5 7 1 TBD
        |
        +-> stmt: KAT/PAT CMW Collection
]]></artwork></figure>

<t>The value in EvidenceStatement-&gt;stmt is based on the
KAT/PAT example from <xref section="6" sectionFormat="of" target="I-D.bft-rats-kat"/> and
the result of CBOR encoding the CMW collection shown below
(with line-breaks added for readability purposes):</t>

<figure><artwork><![CDATA[
{
  "kat":
    h'd28443A10126A058C0A30A5820B91B03129222973C214E42BF31D68
      72A3EF2DBDDA401FBD1F725D48D6BF9C8171909C4A40102200121
      5820F0FFFA7BA35E76E44CA1F5446D327C8382A5A40E5F29745DF
      948346C7C88A5D32258207CB4C4873CBB6F097562F61D5280768C
      D2CFE35FBA97E997280DBAAAE3AF92FE08A101A40102200121582
      0D7CC072DE2205BDC1537A543D53C60A6ACB62ECCD890C7FA27C9
      E354089BBE13225820F95E1D4B851A2CC80FFF87D8E23F22AFB72
      5D535E515D020731E79A3B4E47120584056F50D131FA83979AE06
      4E76E70DC75C070B6D991AEC08ADF9F41CAB7F1B7E2C47F67DACA
      8BB49E3119B7BAE77AEC6C89162713E0CC6D0E7327831E67F3284
      1A',
  "pat":
    h'd28443A10126A05824A10A58205CA3750DAF829C30C20797EDDB794
      9B1FD028C5408F2DD8650AD732327E3FB645840F9F41CAB7F1B7E
      2C47F67DACA8BB49E3119B7BAE77AEC6C89162713E0CC6D0E7327
      831E67F32841A56F50D131FA83979AE064E76E70DC75C070B6D99
      1AEC08AD'
}
]]></artwork></figure>

</section>
<section anchor="confidential-compute-architecture-cca-platform-token-in-csr"><name>Confidential Compute Architecture (CCA) Platform Token in CSR</name>

<t>The Confidential Compute Architecture (CCA) Platform Token is described in
<xref target="I-D.ffm-rats-cca-token"/> and is also based on the EAT format.  Although the
full CCA attestation is composed of Realm and Platform Evidence, for the purposes
of this example only the Platform token is provided.
~~~
EvidenceBundle
   +
   |
   + Evidences
   |
   +----&gt;  EvidenceStatement
        +
        |
        +-&gt; type: OID for CCA Platform Attestation Toekn
        |         1 3 6 1 5 5 7 1 TBD
        |
        +-&gt; stmt: CCA Platform Token
~~~
Although the CCA Platform Token follows the EAT/CMW format, it is untagged.
This is because the encoding can be discerned in the CSR based on the OID alone.
The untagged token based on a sample claim set is provided below:
~~~
=============== NOTE: '' line wrapping per RFC 8792 ================</t>

<t>/ Sample Platform Claims Set in CDDL                          /
{
   / cca-platform-profile / 265:"tag:arm.com,2023:cca_platform#1.0.0"
   / arm-platform-challenge, SHA-256 calculation of ‘RAK’ / 10: h' \
    c9cdc457ebe981d563b19b5a8e0e3cbef5b944d58e278c9c6779f77beb65bbd5’
   / arm-platform-lifecycle / 2395: h'3000' /secured/
   / arm-platform-sw-components / 2399: [ {1:"ROTFMC", 2:h'\
903a36d3a0a511ecac4548fee8601af54247c110ce220f680a0b274441729105’, 5\
:h'd4cf61e472d18c8e926ce0d44496674792587c88706e8a123b294c000895d9ea’\
                                                                   },
      {1:"ROTFW", 2:h'\
59d4116525e974b5b62ffd7c4ffcbaa0b98e08263403aeb6638797132d2af959’, 5\
:h'd4cf61e472d18c8e926ce0d44496674792587c88706e8a123b294c000895d9ea’\
                                                                  } ]
   /arm-platform-id/ 256: h’ \
    946338159d767f9f37098a00a60f133b6d57886fc656f5f9eed13760b4893fa1’
   /arm-platform-implementation-id/ 2396: h’\
    0000000000000000000000000000000000000000000000000000000000000001’
}</t>

<t>/ This is a full CWT-formatted token. The payload is a sample
/ Platform Claim Set. The main structure                       /
/ visible is that of the COSE_Sign1.                          /</t>

<t>61( 18( [
    h'a10126',  / protected headers  /
    {}, / empty unprotected headers / 
    h’\
a419010978237461673a61726d2e636f6d2c323032333a6363615f706c74666f726d\
23312e392e300a580020c9cdc457ebe981d563b19b5a8e0e3cbef5b944d58e278c9c\
                                 6779f77beb65bbd519095b42300019095f82
      \
a30166524f54464d4302580020903a36d3a0a511ecac4548fee8601af54247c110ce\
220f680a0b27444172910505580020d4cf61e472d18c8e926ce0d44496674792587c\
                                 88706e8a123b294c000895d9eaae0165524f
      \
5446575800200259d4116525e974b5b62ffd7c4ffcbaa0b98e08263403aeb6638797\
132d2af95905580020d4cf61e472d18c8e926ce0d44496674792587c88706e8a123b\
                                 294c000895d9ea1901007820946338159d76
      \
7f9f37098a00a60f133b6d57886fc656f5f9eed13760b4893fa11a095c5820000000\
0000000000000000000000000000000000000000000000000000000001' /payload/
    h'\
cbbfa929cb9b846cb5527d7ef9b7657256412a5f22a6e1a8d3a0c71145022100db4b\
1b97913b1cd9d6e11c1fadbc0869882ba6644b9db09d221f198e3286654b' /\
                                                           signature/
] ) )</t>

<t>/Untagged serialized token/
h'\
8443a10126a0590141a419010978237461673a61726d2e636f6d2c323032333a6363\
615f706c74666f726d23312e392e300a580020c9cdc457ebe981d563b19b5a8e0e3c\
               bef5b944d58e278c9c6779f77beb65bbd519095b42300019095f82
  \
a30166524f54464d4302580020903a36d3a0a511ecac4548fee8601af54247c110ce\
220f680a0b27444172910505580020d4cf61e472d18c8e926ce0d44496674792587c\
               88706e8a123b294c000895d9eaae0165524f5446575800200259d4
  \
116525e974b5b62ffd7c4ffcbaa0b98e08263403aeb6638797132d2af95905580020\
d4cf61e472d18c8e926ce0d44496674792587c88706e8a123b294c000895d9ea1901\
               007820946338159d767f9f37098a00a60f133b6d57886fc656f5f9
  \
eed13760b4893fa11a095c5820000000000000000000000000000000000000000000\
00000000000000000000015840cbbfa929cb9b846cb5527d7ef9b7657256412a5f22\
               a6e1a8d3a0c71145022100db4b1b97913b1cd9d6e11c1fadbc0869
  882ba6644b9db09d221f198e3286654b'
~~~
Realm evidence can be included in a CMW bundle, similar to the PSA token.
In this case, the CSR is constructed as follows:
~~~
EvidenceBundle
   +
   |
   + Evidences
   |
   +----&gt;  EvidenceStatement
        +
        |
        +-&gt; type: OID for CMW Collection
        |         1 3 6 1 5 5 7 1 TBD
        |
        +-&gt; stmt: Realm Token/Platform Token CMW Collection or
                         Realm Claim Set/Platform Token CMW Collection
~~~</t>

</section>
</section>
<section anchor="asn1-module"><name>ASN.1 Module</name>

<figure><artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

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) }

CsrAttestation 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) }

CertificateChoices
  FROM CryptographicMessageSyntax-2010
    { iso(1) member-body(2) us(840) rsadsi(113549)
    pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) }

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-aa (TBD1) }

EVIDENCE-STATEMENT ::= TYPE-IDENTIFIER

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

ATTESTATION-RESULT ::= TYPE-IDENTIFIER

AttestationResultSet ATTESTATION-RESULT ::= {
   ... -- None defined in this document --
}

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

AttestationResult ::= SEQUENCE {
   type   ATTESTATION-RESULT.&id({AttestationResultSet}),
   stmt   ATTESTATION-RESULT.&Type({AttestationResultSet}{@type}),
}

-- Arc for Evidence types
id-aa-evidence OBJECT IDENTIFIER ::= { id-ata 59 }

-- Arc for Attestation Result types
id-aa-ar OBJECT IDENTIFIER ::= { id-ata 60 }

-- For PKCS#10 (Evidence)
attr-evidence ATTRIBUTE ::= {
  TYPE EvidenceBundle
  COUNTS MAX 1
  IDENTIFIED BY id-aa-evidence
}

-- For CRMF (Evidence)
ext-evidence EXTENSION ::= {
  SYNTAX EvidenceBundle
  IDENTIFIED BY id-aa-evidence
}

-- For PKCS#10 (Attestation Result)
attr-ar ATTRIBUTE ::= {
  TYPE AttestationResultBundle
  COUNTS MAX 1
  IDENTIFIED BY id-aa-ar
}

-- For CRMF (Attestation Result)
ext-ar EXTENSION ::= {
  SYNTAX AttestationResultBundle
  IDENTIFIED BY id-aa-ar
}

EvidenceBundle ::= SEQUENCE {
   evidences SEQUENCE SIZE (1..MAX) OF EvidenceStatement,
   certs SEQUENCE SIZE (1..MAX) OF CertificateChoices OPTIONAL
      -- CertificateChoices MUST NOT contain the depreciated
      -- certificate structures or attribute certificates,
      -- see Section 10.2.2 of [RFC5652]
}

AttestationResultBundle ::= SEQUENCE SIZE (1..MAX) OF \
                                                    AttestationResult

END
]]></artwork></figure>

<section anchor="tcg-dice-example-in-asn1"><name>TCG DICE Example in ASN.1</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>

<figure><artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

CsrAttestationDiceExample DEFINITIONS IMPLICIT TAGS ::= BEGIN

IMPORTS 

tcg-dice-conceptual-message-wrapper FROM TcgDiceAttestation
DiceConceptualMessageWrapper FROM TcgDiceAttestation
tcg-dice-TcbInfo FROM TcgDiceAttestation
DiceTcbInfo FROM TcgDiceAttestation
EvidenceStatementSet FROM CsrAttestation
;

tcgDiceCmwEvidenceStatementES EVIDENCE-STATEMENT ::= { 
  DiceConceptualMessageWrapper IDENTIFIED BY tcg-dice-conceptual-\
                                                    message-wrapper }

tcgDiceTcbInfoEvidenceStatementES EVIDENCE-STATEMENT ::= {
  DiceTcbInfo IDENTIFIED BY tcg-dice-TcbInfo }
-- where ConceptualMessageWrapper, tcg-dice-conceptual-message-\
                           wrapper, DiceTcbInfo, and tcg-dice-TcbInfo
-- are defined in DICE-Attestation-Architecture-Version-1.1-Revision\
                                                     -18_6Jan2024.pdf

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

TcgDiceAttestation DEFINITIONS AUTOMATIC TAGS ::= BEGIN

EXPORTS ALL;

tcg OBJECT IDENTIFIER ::= { 2 23 133 }
tcg-dice OBJECT IDENTIFIER ::= { tcg platformClass(5) dice(4) }
tcg-dice-TcbInfo OBJECT IDENTIFIER ::= { tcg-dice tcbinfo(1) }
tcg-dice-endorsement-manifest-uri OBJECT IDENTIFIER ::= { tcg-dice \
                                                    manifest-uri(3) }
tcg-dice-Ueid OBJECT IDENTIFIER ::= { tcg-dice ueid(4) }
tcg-dice-MultiTcbInfo OBJECT IDENTIFIER ::= {tcg-dice multitcbinfo(5\
                                                                  ) }
tcg-dice-UCCS-evidence OBJECT IDENTIFIER ::= {tcg-dice uccs-evidence\
                                                                (6) }
tcg-dice-manifest-evidence OBJECT IDENTIFIER ::= {tcg-dice manifest-\
                                                       evidience(7) }
tcg-dice-MultiTcbInfoComp OBJECT IDENTIFIER ::= {tcg-dice \
                                                multitcbinfocomp(8) }
tcg-dice-conceptual-message-wrapper OBJECT IDENTIFIER ::= { tcg-\
                                                        dice cmw(9) }
tcg-dice-TcbFreshness OBJECT IDENTIFIER ::= { tcg-dice tcb-freshness\
                                                               (11) }

DiceConceptualMessageWrapper ::= SEQUENCE {
  cmw OCTET STRING
}

DiceTcbInfo ::= SEQUENCE {
  vendor [0] IMPLICIT UTF8String OPTIONAL,
  model [1] IMPLICIT UTF8String OPTIONAL,
  version [2] IMPLICIT UTF8String OPTIONAL,
  svn [3] IMPLICIT INTEGER OPTIONAL,
  layer [4] IMPLICIT INTEGER OPTIONAL,
  index [5] IMPLICIT INTEGER OPTIONAL,
  fwids [6] IMPLICIT FWIDLIST OPTIONAL,
  flags [7] IMPLICIT OperationalFlags OPTIONAL,
  vendorInfo [8] IMPLICIT OCTET STRING OPTIONAL,
  type [9] IMPLICIT OCTET STRING OPTIONAL,
  flagsMask [10]IMPLICIT OperationalFlagsMask OPTIONAL,
  integrityRegisters [11] IMPLICIT IrList OPTIONAL
}

FWIDLIST ::= SEQUENCE SIZE (1..MAX) OF FWID
  FWID ::= SEQUENCE {
  hashAlg OBJECT IDENTIFIER,
  digest OCTET STRING
}

OperationalFlags ::= BIT STRING {
  notConfigured (0),
  notSecure (1),
  recovery (2),
  debug (3),
  notReplayProtected (4),
  notIntegrityProtected (5),
  notRuntimeMeasured (6),
  notImmutable (7),
  notTcb (8),
  fixedWidth (31)
}

OperationalFlagsMask ::= BIT STRING {
  notConfigured (0),
  notSecure (1),
  recovery (2),
  debug (3),
  notReplayProtected (4),
  notIntegrityProtected (5),
  notRuntimeMeasured (6),
  notImmutable (7),
  notTcb (8),
  fixedWidth (31)
}

IrList ::= SEQUENCE SIZE (1..MAX) OF IntegrityRegister

IntegrityRegister ::= SEQUENCE {
  registerName IA5String OPTIONAL,
  registerNum INTEGER OPTIONAL,
  hashAlg OBJECT IDENTIFIER,
  digest OCTET STRING
}

EndorsementManifestURI ::= SEQUENCE {
  emUri UTF8String
}

TcgUeid ::= SEQUENCE {
  ueid OCTET STRING
}

DiceTcbInfoSeq ::= SEQUENCE SIZE (1..MAX) OF DiceTcbInfo

DiceTcbInfoComp ::= SEQUENCE SIZE (1..MAX) OF TcbInfoComp

TcbInfoComp ::= SEQUENCE {
  commonFields [0] IMPLICIT DiceTcbInfo,
  evidenceValues [1] IMPLICIT DiceTcbInfoSeq
}

UccsEvidence ::= SEQUENCE {
  uccs OCTET STRING
} 

Manifest ::= SEQUENCE {
  format ManifestFormat,
  manifest OCTET STRING
}

ManifestFormat ::= ENUMERATED {
  swid-xml    (0),
  coswid-cbor (1),
  coswid-json (2),
  tagged-cbor (3)
}

DiceTcbFreshness ::= SEQUENCE {
  nonce OCTET STRING
}
END
]]></artwork></figure>

</section>
<section anchor="tcg-dice-tcbinfo-example-in-csr"><name>TCG DICE TcbInfo Example 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 DiceTcbInfo, as defined in <xref target="TCGDICE1.1"/>.</t>

<figure><artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

﻿// SET of CSR Attributes
A0 82 00 8E
  // CSR attributes
  30 82 00 8A
    // OBJECT IDENTIFIER id-aa-evidence (1 2 840 113549 1 9 16 2 59)
    06 0B 2A 86 48 86 F7 0D 01 09 10 02 3B
      // SET -- This attribute
      31 79
        // EvidenceBundles ::= SEQUENCE SIZE (1..MAX) OF \
                                                       EvidenceBundle
        30 77
          // EvidenceBundle ::= SEQUENCE
          30 75
            // EvidenceStatements ::= SEQUENCE SIZE (1..MAX) OF \
                                                    EvidenceStatement
            30 73
              // EvidenceStatement ::= SEQUENCE
              30 71
                // type: OBJECT IDENTIFIER tcg-dice-TcbInfo (2.23.\
                                                           133.5.4.1)
                06 06 67 81 05 05 04 01
                // stmt: SEQUENCE
                30 4E
                  // CONTEXT_SPECIFIC | version (02)
                  // version = ABCDEF123456
                  82 0C 41 42 43 44 45 46 31 32 33 34 35 36
                  // CONTEXT_SPECIFIC | svn (03)
                  // svn = 4
                  83 01 04
                  // CONTEXT_SPECIFIC | CONSTRUCTED | fwids (06)
                  A6 2F
                  // SEQUENCE
                  30 2D
                    // OBJECT IDENTIFIER SHA256
                    06 09 60 86 48 01 65 03 04 02 01
                    // OCTET STRING
                    // fwid = 0x0000....00
                    04 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
                  // CONTEXT_SPECIFIC | vendorInfo (08)
                  // vendor info = 0x00000000
                  88 04 00 00 00 00
                  // CONTEXT_SPECIFIC | type (09)
                  // type = 0x00000000
                  89 04 00 00 00 00
                // hint: UTF8STRING "DiceTcbInfo.example.com"
                0C 17 44 69 63 65 54 63 62 49 6e 66 6f
                2e 65 78 61 6d 70 6c 65 2e 63 6f 6d

// BER only
A0 82 00 8E 30 82 00 8A 06 0B 2A 86 48 86 F7 0D 
01 09 10 02 3B 30 7B 31 79 30 77 30 75 30 73 30 
71 06 06 67 81 05 05 04 01 30 4E 82 0C 41 42 43 
44 45 46 31 32 33 34 35 36 83 01 04 A6 2F 30 2D 
06 09 60 86 48 01 65 03 04 02 01 04 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 88 04 00 
00 00 00 89 04 00 00 00 00 0C 17 44 69 63 65 54 
63 62 49 6e 66 6f 2e 65 78 61 6d 70 6c 65 2e 63 
6f 6d
]]></artwork></figure>

</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 Richardson, Tomofumi Okubo, Olivier
Couillard, John Gray, Eric Amador, Johnson Darren, Herman Slatman, Tiru Reddy,
Corey Bonnell, Argenius Kushner, James Hagborg, A.J. Stein, John Kemp, Ned
Smith.</t>

<t>We would like to specifically thank Mike StJohns for his work on an earlier
version of this draft.</t>

<t>We would also like to specifically thank Giri Mandyam for providing the
appendix illustrating the confidential computing scenario, and to Corey
Bonnell for helping with the hackathon scripts to bundle it into a CSR.</t>

<t>Finally, we would like to thank Andreas Kretschmer, Hendrik Brockhaus,
David von Oheimb, and Thomas Fossati for their feedback based on implementation
experience, and Daniel Migault and Russ Housley for their review comments.</t>

</section>


  </back>

<!-- ##markdown-source:
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
n61rHvH8vP5wM+7lr+d27q543qnXrXZr1bh+PDn1nlqjZe/CsK6btdq11RgO
m1dWAxpce3X4vWZd7N8sg6OLQT53X5q3rNvC9dPw8CqoVvyrZcHpl6+ntap9
um/svlYWu9kvI7dzMbuo5yZO5jC4bjaWHe/m8mj08jp33cE8d3N6Zd/d5Ebr
w0xxPh89XzSmg4Z9/mX5Ylxc5Ar+5K2zuHtq5i/fKqW39n1z9+wl/zS4P765
vOsWnzrnzf27y6f+47m1XK3d3ODm2N7P9k6rh/ulrHG/as0eC1/Ox2eB3W0H
7cm6X7k52d0f5p3XQd2pP56U8/VFNXOYWV3MHy87r3cXRa/QPFue9JvjTrVq
XNv1fKVzuDzZXd9XC6vrhZ3bL5zNS73XTGv34q5xeHx23jxbHa77d/2nYPbl
sN88mhUedt1idfTcKFjGYePqcn1ycuIeVgpPXnn3epCdt7q39e7h3e7NZOl1
y4u6exlULvNPzbPCS91aNS3Lrtfri+ZqOPT7Rm0YfBm9uEfVVaZWv7Hql29H
9XqwwpctALJ67hlOZv54VLt3arWb6xo+C4bt2sugenudcWAGK8u1rKD8ZHnn
u7PLh+Wi0c73nh7u20cPs9O35mCar+/b96PcW2t8Mem3ltdW07qq3n0ZWvBT
qxolbznBXy9WFj1p1W5rzZV11663rNbQOrsJrhbN7v38ytrtPbjHd2+lt/6k
1BhcPj5UFr5/Y9wvz+4tr/lyXzmnD+4u1vf3R93bydnyYbrY7ze9ldfvdPtf
Tk/G/sh+bHXccW724JU9rwkAZxmj6eru2DtrFvK1wd3ae7v8Mn2t3g2Cfrt8
W3i6vCrM2pnC0h8c1c+c4fND8/j5tXe+vs03eifzfjlYGs+r4n7rdXr2cNbY
v3+wnOxx8aF76TuXw8c75/nt/DJbalzd1+5yk/LZ5e1yuWoHrZvR8Yl9Vlzd
vg4WxtmTd/9Yup2Vr3eHh/PG0jse3PinQdc5v/Eu7wEuxrfeS+Zq9LTK3BSe
rteHfq+w79f86ku7ejebzA1rN986Xzztf1k8+/bVl259/22avWzmMrvW3D29
LZ1VX05u52PneVC56Y3up4XBwC0shqeFRflmeX7dNvbHR9Pd4lG2Nbi7fiwW
3fPT/vjYrk7Xby/T6+vaozc7zJ1c7QbTeT33NCgVW3Zwv26WL+4vg+t2d+0b
pf3L9tlw6FwMisPbStu/GbzZ1rBdt24eLcBQZ5b1aPXwzGsWAAAdvoW/5atH
u6vH7L4xeOp+yQxrnVFtYt3uvuXXwe7+qJif13vHWc/fLx+vy+X7L0cn57mX
zJn9VL6+f7WuL6uXo2bBPuoc5YzTk12Acq86uzu2j1sPnUkud3SeuexXLrz1
l93rTL7rLroXl8W7l06vfPXmX5w8dgqLTn9cfew3i3dLYzw+X3Wqt8Vxdriq
7zdOz56qzb6/f7fyMw/7/l3XcsfPrre+XbzO5qevp92T/GtzWt5t9MuHlZPC
ydCYLnun5fz1Q8fKZYfFq8Pb/OR5eL2ojDPtu6t8tuadDV7P7yvT8kk3/1yr
F/3u/nCRn70dXz8Xsrfnt0YvWF0vrYeT7F12sp54d5lrezoalM6msJKroXV7
Xim3Xl4mrYe30eR5Wazt32dG8+uT4O6heGTvjpbGonDaKr2tyv2X66V7vXro
H9fm/cnd2r5/mj09tBZPD6NR96EWPLWLz91cBq75YAJXumkjhs4eDQ1r1QJ6
0bodPBS8Xhm6u+2u30rZu/n1RXGYs3LX59cRNA5Y/KyGBOiNCZDxsxRoGwEy
fpYCJRGgw4bVNhQFyjMF6k2qy37zonZeKzw0Oq3Mecdan3daq/NO7/V87Iln
zfV5g58Z8BBH+10EVV+O8UcIqv7OUAS1YV3K5dTEch7vAzi2pntuZY7q7S9H
7VY33wBaal3fWlahVWusrJUBDU4tD47yuvHwfLj7cJhdBevVyWvRAWKcvc52
GpW+8/Tl9eX68ejpvNqZ3e/6y8Pn6U2/3biqVM4N9+zy6rF30zq53nUGx0uv
kvVKrbPyNHOb6bQn9lUpP7TP6y+XZ34OJjirHR+9DNrdi1w3W1oENf/a6D1e
H+561YvbYms+3w/KL9PleHThXnYvnfub2nB+cfXguC/r43Xv8bn3NPSO+vu3
jeXVjXtzkpm1/YXRrjWcdvY1s/A6wdKZZU7aN7Vb93RU6ZcbmeP8bX3y9PR2
d/V2V2tnn/bvxnk7f3z5fDv0rOVDq/a2MF5G+8Xaaf+6PSqOBjfTB7e4LI1P
jnzv/vB+GRzfHeauzrzLes6zW/7ZU/72zs4UTwuru87+6rTrZi6N3o2zGDSr
/mmpvpwcN63bBzfbC3af19OnwaMNsDY8B2R29DwcWKuhA5fpqYDH2W+t2rXx
c71mvJQOy7PjF3U5fi8wGX+UO5PvjPjl2HY3hqOb4uxq9/X1NOiVyrOzyy9X
buupfWsUBsPZW8M6xw+Pb2C9g0rTerascyugtTZW103AGcfDBrN+x22YQcc6
rg3vpsPr25ZhvVl9enFdaB7Ck+PC9eB12ZtcDauvuezi+r7YGxytB6/d814S
YmkYxBPW809vpdruInu8W87VjzLP+0FpfHP1sP94td+4eh4VW6159bh/eWLf
94rjoFtfDo/bzUb5Yn/XWHr1Qf1mUG7d5i5Hxd3cl+pu9aJo3bjTh6uJH1w9
XazPbirL+5durrw/GlcvO27mbF1uzE/O57cnnRvj7Usx33/qlV/6ncbF4+xq
2m117Wn78j4/bp8Vm1lg8iqrdSeY7S+vT+fOY2cwCRqnq+ro4RjGdNqGczt7
mpz2jtujh3G30Wx2O4vHs5NzOI/TyXl9cvXcGp747Yf9bGXV9Kyhl6vdPT+/
rQYjr5drn02vjb77srwoeXap6WTeHm/c1uRhdl7uLZp+vVJ5vvQzXxa3N3Ac
lUFw3a+MHo9ubl/2S97V+cNba/B0Ghhv++s36/a6WM7sTl76/Zx7eDf+0qlf
V51bQCYXWWTrHq5bt47d2Q96bf/4clFqv315LrhHt+PL44Jx2lu9i/d/BNrG
j/D+j0Db+BHe/xHaNzS8v7o83MD7+Ozd5Ri/h4wlLcf4PWQsaTkGrafVqrWe
LbizL4pzh9M4tKxLkKEqFr6vD0/h96b1enXZOCwtnl+7/cb94mFqvI2/vD22
Lgv+7PrUG58OTruXh7f1Wqn93LeKD2+Wf9ZpP5428sAnfJmUF9PDl8lxPXc8
/2L5X4rPw6XRu84N3k6ci6Nub7E+eWyv7Or9yfNJ8ctjafjQfNw9KgeHw6fi
k9O8P7refXv2p4uT0f7VfDw6ye3flFfGvF+v5BrW7Zn9Oj18vmyXHial2W2t
cmM/NedPpePV4Or24XHonFZbN0e5ercZVJ5fvNp1x2+fzvqzupGZrE98v525
8jqH9XFj9qWUfXbKi+vhbalbbVmXA8DS3kPxov/YG3x57V31RoXVl+7LuH8a
PNf33bLxet5zJpXRtJu/v11ak25wdpVtZQ5fK9NuZjHc7+SajeJtdX5Ve+ie
Dp1GOWff5s6qRxfB7nrWrFpvRrdTK/VWLcB4Vi1OhesrpsKADQ/h5VFwlX09
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

-->

</rfc>

