<?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.21 (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-20" 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>
        <postal>
          <country>Germany</country>
        </postal>
        <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></organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>mwiseman32@acm.org</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="July" day="07"/>

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

    <abstract>


<?line 119?>

<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 128?>

<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 Registration Authority (RA) and the Certification Authority (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.
The RA and CA are depicted as separate entities with the RA
consuming the Attestation Results and deciding whether or not to forward
the certificate request to the CA.
In some deployments they are co-located roles.
In other deployments, the RA uses a proprietary interface into the CA.
In either case,
communication between RA and CA is out-of-scope, they can be conceptualized
as a single Relying Party entity for the purposes of this specification.
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="304" width="512" viewBox="0 0 512 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,176 L 8,272" fill="none" stroke="black"/>
<path d="M 112,176 L 112,272" fill="none" stroke="black"/>
<path d="M 216,32 L 216,96" fill="none" stroke="black"/>
<path d="M 216,176 L 216,272" fill="none" stroke="black"/>
<path d="M 256,104 L 256,192" fill="none" stroke="black"/>
<path d="M 320,96 L 320,168" fill="none" stroke="black"/>
<path d="M 360,32 L 360,96" fill="none" stroke="black"/>
<path d="M 360,176 L 360,272" fill="none" stroke="black"/>
<path d="M 448,176 L 448,272" fill="none" stroke="black"/>
<path d="M 496,176 L 496,272" 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 360,176" fill="none" stroke="black"/>
<path d="M 448,176 L 496,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 368,192 L 440,192" fill="none" stroke="black"/>
<path d="M 8,272 L 112,272" fill="none" stroke="black"/>
<path d="M 216,272 L 360,272" fill="none" stroke="black"/>
<path d="M 448,272 L 496,272" fill="none" stroke="black"/>
<polygon class="arrowhead" points="448,192 436,186.4 436,197.6 " fill="black" transform="rotate(0,440,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="468" 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="316" y="228">RA</text>
<text x="60" y="260">(Attester)</text>
<text x="260" y="260">(Relying</text>
<text x="324" y="260">Party)</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
                            .-----------------.
                            |                 | Compare Evidence
                            |    (Verifier)   | against Appraisal
                            |                 | Policy
                            '------------+----'
                                 ^       |
                        Evidence |       | Attestation
                                 |       | Result
                                 |       v
  .------------.            .----|------------.          .-----.
  |            +----------->|----'            |--------->|     |
  | End        | Evidence   | Registration    |          | CA  |
  | Entity     | in CSR     | Authority RA    |          |     |
  |            |            |                 |          |     |
  | (Attester) |            | (Relying Party) |          |     |
  '------------'            '-----------------'          '-----'
]]></artwork></artset></figure>

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

<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,176" 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 72,160" fill="none" stroke="black"/>
<path d="M 88,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 80,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="112,176 100,170.4 100,181.6 " fill="black" transform="rotate(0,104,176)"/>
<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="324" y="196">RA</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="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>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
   Evidence               .-----------------.
   +--------------------->|                 | Compare Evidence
   |                      |   (Verifier)    | against Appraisal
   |     +----------------|                 | Policy
   |     |                '-----------------'
   |     | Attestation
   |     | Result
   |     v
.--------|---.             .-----------------.              .------.
|        +-->+------------>| Registration    |------------->|      |
| End        | Attestation | Authority RA    |              |  CA  |
| Entity     | Result in   |                 |              |      |
| (Attester) | CSR         | (Relying Party) |              |      |
'------------'             '-----------------'              '------'
]]></artwork></artset></figure>

<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>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>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,104 L 80,232" fill="none" stroke="black"/>
<path d="M 152,144 L 152,232" 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 264,128 L 264,208" fill="none" stroke="black"/>
<path d="M 320,240 L 320,336" fill="none" stroke="black"/>
<path d="M 472,128 L 472,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 264,128 L 472,128" fill="none" stroke="black"/>
<path d="M 152,144 L 256,144" fill="none" stroke="black"/>
<path d="M 264,160 L 472,160" fill="none" stroke="black"/>
<path d="M 264,208 L 472,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 184,256 L 312,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"/>
<polygon class="arrowhead" points="320,256 308,250.4 308,261.6 " fill="black" transform="rotate(0,312,256)"/>
<polygon class="arrowhead" points="264,144 252,138.4 252,149.6 " fill="black" transform="rotate(0,256,144)"/>
<polygon class="arrowhead" points="192,256 180,250.4 180,261.6 " fill="black" transform="rotate(180,184,256)"/>
<polygon class="arrowhead" points="160,232 148,226.4 148,237.6 " fill="black" transform="rotate(90,152,232)"/>
<polygon class="arrowhead" points="88,232 76,226.4 76,237.6 " fill="black" transform="rotate(90,80,232)"/>
<polygon class="arrowhead" points="88,104 76,98.4 76,109.6 " fill="black" transform="rotate(270,80,104)"/>
<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="228" y="132">1..n</text>
<text x="348" y="148">CertificateChoices</text>
<text x="320" y="180">Certificate</text>
<text x="380" y="180">OR</text>
<text x="364" y="196">OtherCertificateFormat</text>
<text x="56" y="212">1</text>
<text x="136" y="228">1</text>
<text x="192" y="244">1</text>
<text x="284" y="244">1..n</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..n  +-------------------------+
          |        +------------>| CertificateChoices      |
          |        |             +-------------------------+
          |        |             | Certificate OR          |
          |        |             | OtherCertificateFormat  |
       1  |        |             +-------------------------+
          v      1 v
 +--------------------+ 1         1..n  +-------------------+
 |  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,104 L 80,232" fill="none" stroke="black"/>
<path d="M 160,144 L 160,232" 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 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"/>
<polygon class="arrowhead" points="280,144 268,138.4 268,149.6 " fill="black" transform="rotate(0,272,144)"/>
<polygon class="arrowhead" points="168,232 156,226.4 156,237.6 " fill="black" transform="rotate(90,160,232)"/>
<polygon class="arrowhead" points="88,232 76,226.4 76,237.6 " fill="black" transform="rotate(90,80,232)"/>
<polygon class="arrowhead" points="88,104 76,98.4 76,109.6 " fill="black" transform="rotate(270,80,104)"/>
<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="236" y="132">1..n</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..n   | AttestationResult |
         |         +------------->+-------------------+
         |         |              | Type              |
         |         |              | Result            |
         |         |              |                   |
      1  |         |              +-------------------+
         v       1 v
+-------------------------+
| AttestationResultBundle |
+-------------------------+
]]></artwork></artset></figure>

<t>A Relying Party receiving a CSR containing an Attestation Result <bcp14>MUST</bcp14> use the Type information
to parse the content. The Attestation Result encoding <bcp14>MUST</bcp14> provide information for the Relying
Party to determine the Verifier, who created and protected the Attestation Result against modifications.</t>

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

</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   IA5String 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 to select an appropriate Verifier
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 server name which
uniquely identifies a Verifier. Server names are ASCII strings that
contain a hostname and optional port, where the port is implied to be
"443" if missing.  The names use the format of the authority portion
of a URI as defined in Section 3.2 of <xref target="RFC3986"/>. The names <bcp14>MUST NOT</bcp14>
include a "userinfo" portion of an authority.  For example, a valid
server name might be "verifier.example.com" or
"verifier.example.com:8443", but not "verifier@example.com".</t>

<t>Relying Parties <bcp14>SHOULD NOT</bcp14> connect to a host name provided in the hint,
especially if the verifier has no previous trust relationship with that
host name, instead this <bcp14>SHOULD</bcp14> be used only as a lookup string for
determining between a list of Verifiers that the Relying Party is
pre-configured to use.</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. The Relying Party is also configured with a trust
anchor for each Verifier, which allows the Verifier to validate the signature
protecting the Attestation Result. Tricking a 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-aa 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 OID depicted in <xref target="code-ar-oid"/> as an additional CSR Attribute (PKCS#10) or Extension (CRMF) to carry Attestation Results in a CSR.</t>

<figure title="New OID for PKIX Attestation Result Formats" anchor="code-ar-oid"><artwork><![CDATA[
-- OID for Attestation Result types
id-aa-ar OBJECT IDENTIFIER ::= { id-aa (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[
-- 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>
<section anchor="implementation-considerations"><name>Implementation Considerations</name>

<section anchor="is-the-csr-constructed-inside-or-outside-the-attester"><name>Is the CSR constructed inside or outside the Attester?</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 anchor="sec-impl-ar"><name>Separation of RA and CA roles with respect to Attestation Results</name>

<t>As described in <xref target="architecture"/>, CSRs <bcp14>MAY</bcp14> contain either Evidence or Attestation Results (AR),
and also the Registration Authority (RA) and Certification Authority (CA) <bcp14>MAY</bcp14> be conceptualized as
a single Relying Party entity, or as separate entities. There are some implications here worth discussion.</t>

<t>In many cases, the Evidence contained within a CSR is intended to be consumed by the RA and not
to be placed into the issued certificate.
In some RA / CA architectures, it <bcp14>MAY</bcp14> be appropriate for the RA to "consume" the Evidence
and remove it from the CSR, re-signing the CSR with an RA signing key. A CRMF CSR also allows the RA
to indicate that it verified the CSR without the need to re-signing the CSR.</t>

<t>In any case where the RA and CA roles are separated, and Evidence is evaluated and consumed by the RA,
the RA does at least implicitly produce Attestation Results as defined in the RATS Architecture <xref target="RFC9334"></xref>.
For example, the decision to reject the Evidence and fail back to the client, or to accept the Evidence and
forward a request to the CA could be viewed as a boolean Attestation Result.
Similarly, if acceptance or rejection of the Evidence controls the presence or absence of a certain policy OID
or other extension in the issued certificate, this could also be viewed as an Attestation Result.</t>

<t>Alternatively, the RA <bcp14>MAY</bcp14> place explicit Attestation Results into its request to the CA; either for consumption
by the CA or for inclusion in the issued certificate.
The exact mechanisms for doing this are out-of-scope for this document, but are areas for implementation
consideration and potential future standardization work.</t>

</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>IANA is asked to register the following within the registry id-mod
SMI Security for PKIX Module Identifier (1.3.6.1.5.5.7.0).</t>

<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>IANA is asked to register the following within the registry id-aa
SMI Security for S/MIME Attributes (1.2.840.113549.1.9.16.2).</t>

<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 - - <strong>Replace TBD2</strong></t>
  <t>Description: id-aa-ar</t>
  <t>References: This 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 that may be encountered in the wild, as well as
a link to their specification document.
This registry should follow the rules for
"Specification Required" as laid out in <xref target="RFC5226"/>.</t>

<t>Registration requests should be formatted as per
the registration template below, and receive 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: The entity that controls the listed data format.
For data formats specified in Standards Track RFCs, list the "IESG".
For others, give the name of the responsible party.
This does not necessarily have to be a standards body, for example
in the case of proprietary data formats the Reference may be to a company or a
publicly-available reference implementation.  In most cases the
third party requesting registration in this registry will also be the
party that registered the OID. As the intention is for this registry to be a
helpful reference, rather than a normative list, a fair amount of
discretion is left to the Designated Expert.</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 PKCS#10 or CRMF Certificate Signing Request (CSR), but it is intentionally <bcp14>NOT RECOMMENDED</bcp14> for a CA to copy the attr-evidence for PKCS#10 or ext-evidence extension for CRMF 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 <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. 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>, 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="RFC3986">
  <front>
    <title>Uniform Resource Identifier (URI): Generic Syntax</title>
    <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
    <author fullname="R. Fielding" initials="R." surname="Fielding"/>
    <author fullname="L. Masinter" initials="L." surname="Masinter"/>
    <date month="January" year="2005"/>
    <abstract>
      <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="66"/>
  <seriesInfo name="RFC" value="3986"/>
  <seriesInfo name="DOI" value="10.17487/RFC3986"/>
</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="RFC5226">
  <front>
    <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
    <author fullname="T. Narten" initials="T." surname="Narten"/>
    <author fullname="H. Alvestrand" initials="H." surname="Alvestrand"/>
    <date month="May" year="2008"/>
    <abstract>
      <t>Many protocols make use of identifiers consisting of constants and other well-known values. Even after a protocol has been defined and deployment has begun, new values may need to be assigned (e.g., for a new option type in DHCP, or a new encryption or authentication transform for IPsec). To ensure that such quantities have consistent values and interpretations across all implementations, their assignment must be administered by a central authority. For IETF protocols, that role is provided by the Internet Assigned Numbers Authority (IANA).</t>
      <t>In order for IANA to manage a given namespace prudently, it needs guidelines describing the conditions under which new values can be assigned or when modifications to existing values can be made. If IANA is expected to play a role in the management of a namespace, IANA must be given clear and concise instructions describing that role. This document discusses issues that should be considered in formulating a policy for assigning values to a namespace and provides guidelines for authors on the specific text that must be included in documents that place demands on IANA.</t>
      <t>This document obsoletes RFC 2434. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5226"/>
  <seriesInfo name="DOI" value="10.17487/RFC5226"/>
</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="3" month="July" year="2025"/>
      <abstract>
	 <t>   The Remote Attestation Procedures architecture (RFC 9334) defines
   several types of conceptual messages, such as Evidence, Attestation
   Results, Endorsements, and Reference Values.  These messages can
   appear in different formats and be transported via various protocols.

   This document introduces the Conceptual Message Wrapper (CMW) that
   provides a common structure to encapsulate these messages.  It
   defines a dedicated CBOR tag, corresponding JSON Web Token (JWT) and
   CBOR Web Token (CWT) claims, and an X.509 extension.

   This allows CMWs to be used in CBOR-based protocols, web APIs using
   JWTs and CWTs, and PKIX artifacts like X.509 certificates.
   Additionally, the draft defines a media type and a CoAP content
   format to transport CMWs over protocols like HTTP, MIME, and CoAP.

   The goal is to improve the interoperability and flexibility of remote
   attestation protocols.  By introducing a shared message format like
   the CMW, we can consistently support different attestation message
   types, evolve message serialization formats without breaking
   compatibility, and avoid having to redefine how messages are handled
   in each protocol.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-16"/>
   
</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="3" month="March" year="2025"/>
      <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-07"/>
   
</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="7" month="July" year="2025"/>
      <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-04"/>
   
</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="3" month="March" year="2025"/>
      <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-01"/>
   
</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="6" month="February" year="2025"/>
      <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.

   This document also defines two serialisations of the proposed
   information model, utilising CBOR and JSON.

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




    </references>

</references>


<?line 1004?>

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

<figure><artwork><![CDATA[
EvidenceBundle
   +
   |
   + Evidences
   |
   +---->  EvidenceStatement
        +
        |
        +-> type: OID for CCA Platform Attestation Toekn
        |         1 3 6 1 5 5 7 1 TBD
        |
        +-> stmt: CCA Platform Token
]]></artwork></figure>

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

<figure><artwork><![CDATA[
(long lines wrapped for readability)

/ 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'c9cdc457ebe981d563b19b5a8e0e3cbef5b944d58e278c9c6779f
            77beb65bbd5’
   / arm-platform-lifecycle / 2395: h'3000' /secured/
   / arm-platform-sw-components / 2399: [ {1:"ROTFMC", 2:h'903a36d3a
            0a511ecac4548fee8601af54247c110ce220f680a0b274441729105’,
            5:h'd4cf61e472d18c8e926ce0d44496674792587c88706e8a123b294
            c000895d9ea’},
      {1:"ROTFW", 2:h'59d4116525e974b5b62ffd7c4ffcbaa0b98e08263403aeb
            6638797132d2af959’, 5:h'd4cf61e472d18c8e926ce0d4449667479
            2587c88706e8a123b294c000895d9ea’} ]
   /arm-platform-id/ 256: h’ 946338159d767f9f37098a00a60f133b6d57886f
            c656f5f9eed13760b4893fa1’
   /arm-platform-implementation-id/ 2396: h’0000000000000000000000000
            000000000000000000000000000000000000001’
}

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

61( 18( [
    h'a10126',  / protected headers  /
    {}, / empty unprotected headers / 
    h’a419010978237461673a61726d2e636f6d2c323032333a6363615f706c746
    66f726d23312e392e300a580020c9cdc457ebe981d563b19b5a8e0e3cbef5b9
    44d58e278c9c6779f77beb65bbd519095b42300019095f82a30166524f54464
    d4302580020903a36d3a0a511ecac4548fee8601af54247c110ce220f680a0b
    27444172910505580020d4cf61e472d18c8e926ce0d44496674792587c88706
    e8a123b294c000895d9eaae0165524f5446575800200259d4116525e974b5b6
    2ffd7c4ffcbaa0b98e08263403aeb6638797132d2af95905580020d4cf61e47
    2d18c8e926ce0d44496674792587c88706e8a123b294c000895d9ea19010078
    20946338159d767f9f37098a00a60f133b6d57886fc656f5f9eed13760b4893
    fa11a095c582000000000000000000000000000000000000000000000000000
    00000000000001' /payload/
    h'cbbfa929cb9b846cb5527d7ef9b7657256412a5f22a6e1a8d3a0c71145022
    100db4b1b97913b1cd9d6e11c1fadbc0869882ba6644b9db09d221f198e3286
    654b' /signature/
] ) )

/Untagged serialized token/
h'8443a10126a0590141a419010978237461673a61726d2e636f6d2c323032333a
6363615f706c74666f726d23312e392e300a580020c9cdc457ebe981d563b19b5a
8e0e3cbef5b944d58e278c9c6779f77beb65bbd519095b42300019095f82a30166
524f54464d4302580020903a36d3a0a511ecac4548fee8601af54247c110ce220f
680a0b27444172910505580020d4cf61e472d18c8e926ce0d44496674792587c88
706e8a123b294c000895d9eaae0165524f5446575800200259d4116525e974b5b6
2ffd7c4ffcbaa0b98e08263403aeb6638797132d2af95905580020d4cf61e472d1
8c8e926ce0d44496674792587c88706e8a123b294c000895d9ea19010078209463
38159d767f9f37098a00a60f133b6d57886fc656f5f9eed13760b4893fa11a095c
582000000000000000000000000000000000000000000000000000000000000000
015840cbbfa929cb9b846cb5527d7ef9b7657256412a5f22a6e1a8d3a0c7114502
2100db4b1b97913b1cd9d6e11c1fadbc0869882ba6644b9db09d221f198e3286654b'
]]></artwork></figure>

<t>Realm evidence can be included in a CMW bundle, similar to the PSA token.
In this case, the CSR is constructed as follows:</t>

<figure><artwork><![CDATA[
EvidenceBundle
   +
   |
   + Evidences
   |
   +---->  EvidenceStatement
        +
        |
        +-> type: OID for CMW Collection
        |         1 3 6 1 5 5 7 1 TBD
        |
        +-> stmt: Realm Token/Platform Token CMW Collection or
                         Realm Claim Set/Platform Token CMW Collection
]]></artwork></figure>

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

<figure><artwork><![CDATA[
CSR-ATTESTATION-2025
  { 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 -- from [RFC5912]
{ 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) }
  ;

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   IA5String OPTIONAL
}

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

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

-- Arc for Attestation Result types
id-aa-ar OBJECT IDENTIFIER ::= { id-aa (TBD2) }

-- 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[
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[
﻿// 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
        // 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: IA5String "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 8c 30 82 00 88 06 0b 2a 86 48 86 f7 0d
01 09 10 02 3b 30 79 31 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 16 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 directly, participated in design team meetings, or provided review of the document.</t>

<t>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, Carl Wallace, Michael Richardson, Tomofumi Okubo, Olivier
Couillard, John Gray, Eric Amador, Darren Johnson, Herman Slatman, Tiru Reddy, James Hagborg, A.J. Stein, John Kemp, Daniel Migault and Russ Housley.</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.</t>

</section>


  </back>

<!-- ##markdown-source:
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
HGeHq9p+/ez8qdLo+/t3Kz/zsO/fdS13/Ox669vF62x+9nrWPc2/Nqal3Xq/
dFQ+LZwOjemyd1bKXz90rFx2WLw6us1PnofXi/I40767ymer3vng9eK+PC2d
dvPP1VrR7+4PF/nZ28n1cyF7e3Fr9ILV9dJ6OM3eZSfriXeXubano8HB+RRW
cjW0bi/KpebLy6T58DaaPC+L1f37zGh+fRrcPRSP7d3R0lgUzpoHb6tS/+V6
6d48PvRPqvP+5G5t3z/Nnh6ai6eH0aj7UA2e2sXnbi4D13wwgSvdsBFDZ4+H
hrVqAr1o3g4eCl6vBN3ddtdvB9m7+fVlcZizctcX1xE0Dlj8vIoE6I0JkPGz
FGgbATJ+lgIlEaCjutU2FAXKMwXqTSrLfuOyelEtPNQ7zcxFx1pfdJqri07v
9WLsiWeN9UWdnxnwEEf7QwRVX47xZwiq/s5QBLVuteRyqmI5j/cBHFvDvbAy
x7X2l+N2s5uvAy21rm8tq9Cs1lfWyoAGZ5YHR3ldf3g+2n04yq6C9er0tegA
Mc5eZzv1ct95+vL6cv14/HRR6czud/3l0fP0pt+uX5XLF4Z73rp67N00T693
ncHJ0itnvYPmeWmauc102hP76iA/tC9qL61zPwcTnFVPjl8G7e5lrps9WARV
/9roPV4f7XqVy9ticz7fD0ov0+V4dOm2ui3n/qY6nF9ePTjuy/pk3Xt87j0N
veP+/m19eXXj3pxmZm1/YbSrdaedfc0svE6wdGaZ0/ZN9dY9G5X7pXrmJH9b
mzw9vd1dvd1V29mn/btx3s6ftJ5vh561fGhW3xbGy2i/WD3rX7dHxdHgZvrg
FpcH49Nj37s/ul8GJ3dHuatzr1XLeXbTP3/K397ZmeJZYXXX2V+ddd1My+jd
OItBo+KfHdSWk5OGdfvgZnvB7vN6+jR4tAHWhheAzI6fhwNrNXTgMj0V8Dj7
zVW7On6uVY2Xg6PS7ORFXY4/CkzGn+XO5Dsjfjm23Y3h6KY4u9p9fT0Legel
2Xnry5XbfGrfGoXBcPZWty7ww5MbWO+g3LCeLevCCmit9dV1A3DGybDOrN9J
G2bQsU6qw7vp8Pq2aVhvVp9eXBcaR/DkpHA9eF32JlfDymsuu7i+L/YGx+vB
a/eil4RY6gbxhLX809tBdXeRPdkt5WrHmef94GB8c/Ww/3i1X796HhWbzXnl
pN86te97xXHQrS2HJ+1GvXS5v2ssvdqgdjMoNW9zrVFxN/elslu5LFo37vTh
auIHV0+X6/Ob8vL+pZsr7Y/GlVbHzZyvS/X56cX89rRzY7x9Keb7T73SS79T
v3ycXU27za49bbfu8+P2ebGRBSavvFp3gtn+8vps7jx2BpOgfraqjB5OYEyn
bTi3s6fJWe+kPXoYd+uNRrezeDw/vYDzOJtc1CZXz83hqd9+2M+WVw3PGnq5
6t3z89tqMPJ6ufb59Nrouy/LywPPPmg4mbfHG7c5eZhdlHqLhl8rl59bfubL
4vYGjqM8CK775dHj8c3ty/6Bd3Xx8NYcPJ0Fxtv++s26vS6WMruTl34/5x7d
jb90atcV5xaQyWUW2bqH6+atY3f2g17bP2ktDtpvX54L7vHtuHVSMM56q3fx
/o9A2/gR3v8RaBs/wvs/QvuGhvdXraMNvI/P3l2O8UfIWNJyjD9CxpKWY9B6
ms1q89mCO/uiOHc4jSPLaoEMVbbwfW14Br83rNerVv3oYPH82u3X7xcPU+Nt
/OXtsdkq+LPrM298Njjrto5ua9WD9nPfKj68Wf55p/14Vs8Dn/BlUlpMj14m
J7XcyfyL5X8pPg+XRu86N3g7dS6Pu73F+vSxvbIr96fPp8UvjwfDh8bj7nEp
OBo+FZ+cxv3x9e7bsz9dnI72r+bj0Wlu/6a0Mub9WjlXt27P7dfp0XOrffAw
OZjdVss39lNj/nRwshpc3T48Dp2zSvPmOFfrNoLy84tXve747bNZf1YzMpP1
qe+3M1de56g2rs++HGSfndLienh70K00rdYAsLT3ULzsP/YGX157V71RYfWl
+zLunwXPtX23ZLxe9JxJeTTt5u9vl9akG5xfZZuZo9fytJtZDPc7uUa9eFuZ
X1UfumdDp17K2be588rxZbC7njUq1pvR7VQPeqsmYDyrGqfCtRVTYcCGR/Dy
OLjKvp59KdwUum/d++l14Sx3smv4j5du+bZx/fZ6eVB1rUu3slsedc9PBq8H
w6On8dvu9evqbn1y4F1PL/3g7q5+99x4PCnsr5fr0mW/9WrcufOjwZfW42pt
XzpnRe/hNTsuevOW3erOV2/V0s3d9WV77M7eGnf3hZur4HTyul8+Kq0vz+f9
oeddGbeZ67fb9pd6zzs7yx80Cq18UC6+DtaX40b/NLc87Z3uPz29Fq+vx9PR
ZWdQ7N6P/fxt5fWg7nQd60tg7K6WQJT79uXbYnxSfbDPml+A23+tXO4+5nLL
593lqnzcKpyXT6b9+tXFqN/Yr82zo+x6PZwcFJ8PRoZdm1zf3HbO3p4LlS8H
94XLk+OSe+XYu6Xu8OJL6bhwfuNV6u2jxuDivvVy7dzdtq+u3E5gW/YIiY8R
3fUWwXvWvnqcTsrBonYDV7pWemn1W8/Lu6vcbm528ho0i8vp+WAwOBoG9qWx
9lpvldL8oGtNrh+urmuN3nPt+umLtQaQvW52qt1BseWt/Mta67z8eHNuHy1y
sGflk92H09vmbaZpPLaD/En5dj1wHr3iXf3stDa+3W/12m/Hw+PJwWnltH7t
ntwuGkf+l+6ska3Y7bf57MFvnFQeH6/KJcsAQbWyfJ2dB07On4EY89Kb7d7t
1irF8tlpw3u87lUag+flRf78y/nkbVaaLde39niZy1a7rZVzVr4zmo93Z6X+
85fd89rkcXW66p/5rcf7iV9fn5SvdidOeXo1f6lU+73l/W7wnPuy2PeAEj02
zgtn1hdr6RrV+2LnDQSV4fVocmGP3WD/tHD/mL/OzJeti4eb6+un2qSVuyxc
Df/1X1kx1bisb1dLyVB4TCCgG8s6mKpExBaxaekHuU0+Qg+fkroIjEgEKKai
nQe9kTdwpu6QC6fNAjtFuVG+f49mHZe1FNiaJmx8fZkfg4uG6fFJPOTHhtX5
JMuzdQdzHuTFnmPiZBE7FouJNrRgH8eE7zd0vTJMiFSWYisMPaSMijCx5vWH
qzTY0aHrquJQ8SwC0EvXncoIPSP+es4LPYOFSiV8Ygy4aHcF7QyVdmnkjGdS
WU5Jhjl/qTTohymDo3snEzJKb38YPAUdc5gdWhz2SAPt86Q9I0xMVExT4qLN
LvfCXeB0CRf3MvMMHsq79ek7I630gdQMb8wpLAE2j7urpaN5LVgvjLYhKs5E
VYp2Qwta+IxqwiRY0ZShaVf9FpY62oVP2K6G5gtKgQlrrYVrVZ8oK1Y8fUWn
Wt/SMZvhYO37uPZYx3TDcbM4P7mbEPSY+o0yvcBu6dfAkB3KXSNLRiy3VcIV
EyUiZLoRzG1cbd2EZ4Xvogcd8aHmwkhY7yDV9R37JRC5Djn5q92XpWBnC3/m
BU7wSRhN0TK4AzPYOaS9GX3o58qFQt7KZrK5AytTLNcyVj5jFcu5TLWSrWby
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
Sf8BcMnJUj9XAQA=

-->

</rfc>

