<?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.1 (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-12" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Remote Attestation with CSRs">Use of Remote Attestation with Certification Signing Requests</title>

    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road – Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization>Siemens</organization>
      <address>
        <email>Hannes.Tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="M." surname="Wiseman" fullname="Monty Wiseman">
      <organization>Beyond Identity</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>monty.wiseman@beyondidentity.com</email>
      </address>
    </author>
    <author initials="N." surname="Smith" fullname="Ned Smith">
      <organization>Intel Corporation</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>ned.smith@intel.com</email>
      </address>
    </author>

    <date year="2024" month="October" day="12"/>

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

    <abstract>


<?line 107?>

<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 in Certificate Signing Requests (CSRs) such as PKCS#10 or Certificate Request Message Format (CRMF) payloads which provides an elegant and automatable mechanism for transporting Evidence to a Certification Authority.</t>

<t>Including Evidence 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. These Evidence Claims can include information about the hardware component's manufacturer, the version of installed or running firmware, the version of software installed or running in layers above the firmware, or the presence of hardware components providing specific protection capabilities or shielded locations (e.g., to protect keys).</t>



    </abstract>

    <note 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 116?>

<section anchor="introduction"><name>Introduction</name>

<t>When requesting a certificate from a Certification Authority (CA), a PKI end entity may wish to include Evidence of the security properties of its environments in which the private keys are stored in that request.
This Evidence can be appraised by authoritative entities, such as a Registration Authority (RA) or a CA, or associated trusted Verifiers as part of validating an incoming certificate request against given certificate policies. Regulatory bodies are beginning to require proof of hardware residency for certain classifications of cryptographic keys. At the time of writing, the most notable example is the Code-Signing Baseline Requirements <xref target="CSBR"/> document maintained by the CA/Browser Forum, which requires compliant CAs to "ensure that a Subscriber’s Private Key is generated, stored,
and used in a secure environment that has controls to prevent theft or misuse".</t>

<t>This specification defines an attribute and an extension that allow for conveyance of Evidence in Certificate Signing Requests (CSRs) such as PKCS#10 <xref target="RFC2986"/> or Certificate Request Message Format (CRMF) <xref target="RFC4211"/> payloads which provides an elegant and automatable mechanism for transporting Evidence to a Certification Authority and meeting requirements such as those in the CA/B Forum's <xref target="CSBR"/>.</t>

<t>As outlined in the RATS Architecture <xref target="RFC9334"/>, an Attester (typically
a device) produces a signed collection of Claims that constitute Evidence about its running environment(s).
While the term "attestation" is not defined in RFC 9334, it was later defined in <xref target="I-D.ietf-rats-tpm-based-network-device-attest"/>, it refers to the activity of producing and appraising remote attestation Evidence.
A Relying Party may consult an Attestation Result produced by a Verifier that has appraised the Evidence in making policy decisions about the trustworthiness of the
Target Environment being assessed via appraisal of Evidence. <xref target="architecture"/> provides the basis to illustrate in this document how the various roles
in the RATS architecture map to a certificate requester and a CA/RA.</t>

<t>At the time of writing, several standard and several proprietary 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 via CSRs while making minimal assumptions about content or format of the transported Evidence and (2) the conveyance of sets of certificates used for validation of Evidence.
The certificates typically contain one or more certification paths
rooted in a device 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. Evidence can be 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) will be capable of parsing it. A set of EvidenceStatements may be grouped together along with the set of CertificateChoices needed to validate them to form a EvidenceBundle. One or more EvidenceBundles may be placed into the id-aa-evidence CSR Attribute (or CRMF Extension).</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.</t>

<t>With these attributes, additional
information information is available to an RA or CA, which may be used
to decide whether to issue a certificate and what certificate profile
to apply. The scope of this document is, however,
limited to the conveyance of Evidence within CSR. The exact format of the
Evidence being conveyed is defined in various standard and proprietary
specifications.</t>

</section>
<section anchor="conventions-and-definitions"><name>Conventions and Definitions</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

<t>This document re-uses the terms defined in <xref target="RFC9334"/> related to remote
attestation. Readers of this document are assumed to be familiar with
the following terms: Evidence, Claim, Attestation Results (AR), Attester,
Verifier, Target Environment, Attesting Environment, 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 Signing Request"
would have been correct, the mistake was unnoticed. In the meanwhile
CSR is an abbreviation used beyond PKCS#10. Hence, it is equally
applicable to other protocols that use a different syntax and
even a different encoding, in particular this document also
considers 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>

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

<t><xref target="fig-arch"/> shows the high-level communication pattern of the RATS
background check model where the Attester transmits the Evidence in the
CSR to the RA and the CA, which is subsequently forwarded to the Verifier.
The Verifier appraises the received Evidence and computes an Attestation
Result, which is then processed by the RA/CA prior to the certificate
issuance.</t>

<t>In addition to the background check model, the RATS architecture also
specifies the passport model and combinations. See Section 5.2 of
<xref target="RFC9334"/> for a description of the passport model. The passport model
requires the Attester to transmit Evidence to the Verifier directly in order
to obtain the Attestation Result, which is then forwarded to the Relying
Party. This specification utilizes the background check model since CSRs are
often used as one-shot messages where no direct real-time interaction
between the Attester and the Verifier is possible.</t>

<t>Note that the Verifier is a logical role that may be included in the
RA/CA product. In this case, the Relying Party role and Verifier role collapse into a
single entity. The Verifier functionality can, however,
also be kept separate from the RA functionality, such as a utility or
library provided by the device manufacturer. For example,
security concerns may require parsers of Evidence formats to be logically
or physically separated from the core RA and CA functionality. The interface
by which the Relying Party passes Evidence to the Verifier and receives back
Attestation Results may be proprietary or standardized, but in any case is
out-of-scope for this document.</t>

<t>The diagram below shows an example data flow where Evidence is included in a
CSR. The CSR is parsed by the Registration Authority (RA) component of a
Certification Authority which extracts the Evidence and forwards it to a
trusted Verifier. The RA receives back an Attestation Result which it uses
to decide whether this Evidence meets its policy for certificate issuance
and if it does then the certificate request is forwarded to the Certification
Authority for issuance. This diagram overlays PKI entities with RATS roles in
parentheses.</t>

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

<t>As discussed in RFC 9334, different security and privacy aspects need to be
considered. For example, Evidence may need to be protected against replay and
Section 10 of RFC 9334 lists approach for offering freshness. There are also
concerns about the exposure of persistent identifiers by utilizing attestation
technology, which are discussed in Section 11 of RFC 9334. Finally, the keying
material used by the Attester needs to be protected against unauthorized access,
and against signing arbitrary content that originated from outside the device.
This aspect is described in Section 12 of RFC 9334. Most of these aspects are,
however, outside the scope of this specification but relevant for use with a
given attestation technology. The focus of this specification is on the
transport of Evidence from the Attester to the Relying Party via existing
CSR messages.</t>

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

<section anchor="interaction-with-an-hsm"><name>Interaction with an HSM</name>

<t>This specification is 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.</t>

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

<t>Cases where the CSR is generated externally may require extra round-trips of communication
between the CSR generator and the Attesting Environment, first to obtain
the necessary Evidence about the subject key, and then to use
the subject key to sign the CSR; for example, 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="encoding-strategy"><name>Encoding Strategy</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 or more
EvidenceBundle structures. Each EvidenceBundle contains one or more
EvidenceStatement structures as well as one or more
CertificateChoices which enable to carry various format of
certificates.</t>

<figure title="Information Model for CSR Evidence Conveyance." anchor="fig-info-model"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="488" viewBox="0 0 488 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,32 L 8,96" fill="none" stroke="black"/>
<path d="M 8,240 L 8,272" fill="none" stroke="black"/>
<path d="M 80,96 L 80,240" fill="none" stroke="black"/>
<path d="M 160,144 L 160,240" fill="none" stroke="black"/>
<path d="M 168,32 L 168,96" fill="none" stroke="black"/>
<path d="M 176,240 L 176,272" fill="none" stroke="black"/>
<path d="M 272,128 L 272,208" fill="none" stroke="black"/>
<path d="M 272,240 L 272,336" fill="none" stroke="black"/>
<path d="M 432,240 L 432,336" fill="none" stroke="black"/>
<path d="M 480,128 L 480,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 272,128 L 480,128" fill="none" stroke="black"/>
<path d="M 160,144 L 272,144" fill="none" stroke="black"/>
<path d="M 272,160 L 480,160" fill="none" stroke="black"/>
<path d="M 272,208 L 480,208" fill="none" stroke="black"/>
<path d="M 8,240 L 176,240" fill="none" stroke="black"/>
<path d="M 272,240 L 432,240" fill="none" stroke="black"/>
<path d="M 176,256 L 272,256" fill="none" stroke="black"/>
<path d="M 8,272 L 176,272" fill="none" stroke="black"/>
<path d="M 272,272 L 432,272" fill="none" stroke="black"/>
<path d="M 272,336 L 432,336" fill="none" stroke="black"/>
<g class="text">
<text x="48" y="52">PKCS#10</text>
<text x="120" y="52">Attribute</text>
<text x="76" y="68">or</text>
<text x="36" y="84">CRMF</text>
<text x="96" y="84">Extension</text>
<text x="172" y="132">(1</text>
<text x="196" y="132">or</text>
<text x="232" y="132">more)</text>
<text x="356" y="148">CertificateChoices</text>
<text x="328" y="180">Certificate</text>
<text x="388" y="180">OR</text>
<text x="372" y="196">OtherCertificateFormat</text>
<text x="28" y="212">(1</text>
<text x="52" y="212">or</text>
<text x="48" y="228">more)</text>
<text x="204" y="228">(1</text>
<text x="228" y="228">or</text>
<text x="224" y="244">more)</text>
<text x="84" y="260">EvidenceBundle</text>
<text x="352" y="260">EvidenceStatement</text>
<text x="300" y="292">Type</text>
<text x="320" y="308">Statement</text>
<text x="300" y="324">Hint</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
 +-------------------+
 | PKCS#10 Attribute |
 |       or          |
 | CRMF Extension    |
 +--------+----------+
          |
          |          (1 or more)  +-------------------------+
          |         +-------------+ CertificateChoices      |
          |         |             +-------------------------+
          |         |             | Certificate OR          |
          |         |             | OtherCertificateFormat  |
   (1 or  |         |             +-------------------------+
    more) |         |    (1 or
 +--------+---------+-+   more)   +-------------------+
 |  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 parent EvidenceBundle structure to build a certification
path to validate any EvidenceStatement found in an EvidenceBundle. That is, certificates
needed for validating EvidenceStatements are found in the same EvidenceBundle.</t>

<t>The following use cases are supported, as described in the sub-sections below.</t>

<section anchor="case-1-single-evidence-bundle"><name>Case 1 - Single Evidence Bundle</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.
As a result, a single 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: Single Evidence Bundle." 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-single-evidence-bundle-with-certificate-chain"><name>Case 2 - Single Evidence Bundle with Certificate Chain</name>

<t>A single Attester, which shares Evidence together with a certificate chain.
The CSR conveys a single EvidenceBundle with a single EvidenceStatement
and a single CertificateChoices structure. <xref target="fig-single-attester-with-path"/>
shows this use case.</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-multiple-evidence-bundles-each-with-complete-certificate-chains"><name>Case 3 - Multiple Evidence Bundles each with 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 EvidenceBundle structures, each carrying
an EvidenceStatement and the corresponding CertificateChoices structure with the
certification chain as provided by each Attester, are included in the CSR.
This may result in certificates being duplicated across multiple EvidenceBundles.
This approach does not require any processing capabilities
by a Lead Attester since the information is merely forwarded. <xref target="fig-multiple-attesters"/>
shows this use case.</t>

<figure title="Case 3: Multiple Evidence Bundles 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="224" width="336" viewBox="0 0 336 224" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,32 L 8,192" fill="none" stroke="black"/>
<path d="M 216,32 L 216,192" fill="none" stroke="black"/>
<path d="M 8,32 L 216,32" fill="none" stroke="black"/>
<path d="M 8,112 L 216,112" fill="none" stroke="black"/>
<path d="M 8,192 L 216,192" fill="none" stroke="black"/>
<path d="M 216,112 L 236,152" fill="none" stroke="black"/>
<path d="M 216,32 L 236,72" fill="none" stroke="black"/>
<path d="M 216,112 L 236,72" fill="none" stroke="black"/>
<path d="M 216,192 L 236,152" fill="none" stroke="black"/>
<g class="text">
<text x="84" y="52">EvidenceBundle</text>
<text x="160" y="52">(1)</text>
<text x="112" y="68">.........................</text>
<text x="276" y="68">Provided</text>
<text x="324" y="68">by</text>
<text x="88" y="84">EvidenceStatement</text>
<text x="276" y="84">Attester</text>
<text x="320" y="84">1</text>
<text x="92" y="100">CertificateChoices</text>
<text x="84" y="132">EvidenceBundle</text>
<text x="160" y="132">(2)</text>
<text x="112" y="148">.........................</text>
<text x="276" y="148">Provided</text>
<text x="324" y="148">by</text>
<text x="88" y="164">EvidenceStatement</text>
<text x="276" y="164">Attester</text>
<text x="320" y="164">2</text>
<text x="92" y="180">CertificateChoices</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
  +-------------------------+
  |  EvidenceBundle (1)     |\
  +.........................+ \ Provided by
  | EvidenceStatement       | / Attester 1
  | CertificateChoices      |/
  +-------------------------+
  |  EvidenceBundle (2)     |\
  +.........................+ \ Provided by
  | EvidenceStatement       | / Attester 2
  | CertificateChoices      |/
  +-------------------------+
]]></artwork></artset></figure>

</section>
</section>
</section>
<section anchor="asn1-elements"><name>ASN.1 Elements</name>

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

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

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

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

</section>
<section anchor="sec-evidenceAttr"><name>Evidence Attribute and Extension</name>

<t>By definition, attributes within a PKCS#10 CSR are
typed as ATTRIBUTE and within a CRMF CSR are typed as EXTENSION.
This attribute definition contains one or more
Evidence bundles of type <spanx style="verb">EvidenceBundle</spanx> where each contain
one or more Evidence statements of a type <spanx style="verb">EvidenceStatement</spanx> along with
an optional certification path.
This structure allows for grouping Evidence statements that share a
certification path.</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 are used to construct
or parse EvidenceStatements. Evidence Statements are typically
defined in other IETF standards, other standards bodies,
or vendor proprietary formats along with corresponding OIDs that identify them.</t>

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

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

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

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

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

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

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

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

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

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

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

<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>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">evidence</spanx>, if required. The set of certificates should contain
the certificate that contains the public key needed to directly validate the
<spanx style="verb">evidence</spanx>. Additional certificates may be provided, for example, to chain the
Evidence signer key back to an agreed upon trust anchor. No order is implied, it is
up to the Attester and its Verifier to agree on both the order and format
of certificates contained in <spanx style="verb">certs</spanx>.</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>

<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>s 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, and <bcp14>SHOULD NOT</bcp14> place multiple copies of <spanx style="verb">EvidenceBundle</spanx> into an <spanx style="verb">AttributeSet</spanx>. In a CRMF CSR, implementers <bcp14>SHOULD NOT</bcp14> place multiple copies of <spanx style="verb">ext-evidence</spanx> and <bcp14>SHOULD NOT</bcp14> place multiple copies of <spanx style="verb">EvidenceBundle</spanx> into an <spanx style="verb">ExtensionSet</spanx>.</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><list style="symbols">
  <t>Decimal: IANA Assigned - <strong>Replace TBDMOD</strong></t>
  <t>Description: CSR-ATTESTATION-2023 - id-mod-pkix-attest-01</t>
  <t>References: This Document</t>
</list></t>

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

<t><list style="symbols">
  <t>Evidence Statement
  <list style="symbols">
      <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>
    </list></t>
</list></t>

</section>
<section anchor="smi-security-for-pkix-evidence-statement-formats-registry"><name>"SMI Security for PKIX Evidence Statement Formats" Registry</name>

<t>IANA is asked to create a registry for Evidence Statement Formats within
the SMI-numbers registry, allocating an assignment from id-pkix ("SMI
Security for PKIX" Registry) for the purpose.</t>

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

<t>Columns:</t>

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

</section>
<section anchor="attestation-evidence-oid-registry"><name>Attestation Evidence OID Registry</name>

<t>IANA is asked to create a registry that helps developers to find
OID/Evidence mappings.</t>

<t>Registration requests are evaluated using the criteria described in
the registration template below after a three-week review period on
the [[TBD]] mailing list, with the advice of one or more Designated
Experts <xref target="RFC8126"/>.  However, to allow for the allocation of values
prior to publication, the Designated Experts may approve registration
once they are satisfied that such a specification will be published.</t>

<t>Registration requests sent to the mailing list for review should use
an appropriate subject (e.g., "Request to register attestation
evidence: example").</t>

<t>IANA must only accept registry updates from the Designated Experts
and should direct all requests for registration to the review mailing
list.</t>

<section anchor="registration-template"><name>Registration Template</name>

<t>The registry has the following columns:</t>

<t><list style="symbols">
  <t>OID: The OID number, which has already been allocated. IANA does
not allocate OID numbers for use with this registry.</t>
  <t>Description: Brief description of the use of the Evidence and the
registration of the OID.</t>
  <t>Reference(s): Reference to the document or documents that register
the OID for use with a specific attestation technology, preferably
including URIs that can be used to retrieve copies of the documents.
An indication of the relevant sections may also be included but is not
required.</t>
  <t>Change Controller: For Standards Track RFCs, list the "IESG".  For
others, give the name of the responsible party. In most cases the
third party requesting registration in this registry will also be the
party that registered the OID.</t>
</list></t>

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

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

<texttable title="Initial Contents of the Attestation Evidence OID Registry" anchor="tab-ae-reg">
      <ttcol align='left'>OID</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference(s)</ttcol>
      <ttcol align='left'>Change Controller</ttcol>
      <c>2 23 133 5 4 1</c>
      <c>tcg-dice-TcbInfo</c>
      <c><xref target="TCGDICE1.1"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 3</c>
      <c>tcg-dice-endorsement-manifest-uri</c>
      <c><xref target="TCGDICE1.1"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 4</c>
      <c>tcg-dice-Ueid</c>
      <c><xref target="TCGDICE1.1"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 5</c>
      <c>tcg-dice-MultiTcbInfo</c>
      <c><xref target="TCGDICE1.1"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 6</c>
      <c>tcg-dice-UCCS-evidence</c>
      <c><xref target="TCGDICE1.1"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 7</c>
      <c>tcg-dice-manifest-evidence</c>
      <c><xref target="TCGDICE1.1"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 8</c>
      <c>tcg-dice-MultiTcbInfoComp</c>
      <c><xref target="TCGDICE1.1"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 9</c>
      <c>tcg-dice-conceptual-message-wrapper</c>
      <c><xref target="TCGDICE1.1"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 11</c>
      <c>tcg-dice-TcbFreshness</c>
      <c><xref target="TCGDICE1.1"/></c>
      <c>TCG</c>
      <c>2 23 133 20 1</c>
      <c>tcg-attest-tpm-certify</c>
      <c>Private Registry</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>A PKCS#10 or CRMF Certification Request message typically consists of a
distinguished name, a public key, and optionally a set of attributes,
collectively signed by the entity requesting certification.
In general usage, the private key used to sign the CSR <bcp14>MUST</bcp14> be different from the
Attesting Key utilized to sign Evidence about the Target
Environment, though exceptions <bcp14>MAY</bcp14> be made where CSRs and Evidence are involved in
bootstrapping the Attesting Key.
To demonstrate that the private
key applied to sign the CSR is generated, and stored in a secure
environment that has controls to prevent theft or misuse (including
being non-exportable / non-recoverable), the Attesting Environment
has to collect claims about this secure environment (or Target
Environment, as shown in <xref target="fig-attester"/>).</t>

<t><xref target="fig-attester"/> shows the interaction inside an Attester. The
Attesting Environment, which is provisioned with an Attestation Key,
retrieves claims about the Target Environment. The Target
Environment offers key generation, storage and usage, which it
makes available to services. The Attesting Environment collects
these claims about the Target Environment and signs them and
exports Evidence for use in remote attestation via a CSR.</t>

<figure 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 anchor="freshness"><name>Freshness</name>

<t>Evidence generated by an Attester generally needs to be fresh to provide
value to the Verifier since the configuration on the device may change
over time. Section 10 of <xref target="RFC9334"/> discusses different approaches for
providing freshness, including a nonce-based approach, the use of timestamps
and an epoch-based technique.  The use of nonces requires that nonce to be provided by
the Relying Party in some protocol step prior to Evidence and CSR generation,
and the use of timestamps requires synchronized clocks which cannot be
guaranteed in all operating environments. Epochs also require an out-of-band
communication channel.
This document only specifies how to carry existing Evidence formats inside a CSR,
and so issues of synchronizing freshness data is left to be handled, for example,
via certificate management protocols.
Developers, operators, and designers of protocols, which embed
Evidence-carrying-CSRs, <bcp14>MUST</bcp14> consider what notion of freshness is
appropriate and available in-context; thus the issue of freshness is
left up to the discretion of protocol designers and implementers.</t>

<t>In the case of Hardware Security Modules (HSM), the definition of "fresh" is somewhat ambiguous in the context
of CSRs, especially considering that non-automated certificate enrollments
are often asynchronous, and considering the common practice of re-using the
same CSR for multiple certificate renewals across the lifetime of a key.
"Freshness" typically implies both asserting that the data was generated
at a certain point-in-time, as well as providing non-replayability.
Certain use cases may have special properties impacting the freshness
requirements. For example, HSMs are typically designed to not allow downgrade
of private key storage properties; for example if a given key was asserted at
time T to have been generated inside the hardware boundary and to be
non-exportable, then it can be assumed that those properties of that key
will continue to hold into the future.</t>

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

<t>This document specifies an Extension for carrying Evidence in a CRMF Certificate Signing Request (CSR), but it is intentionally <bcp14>NOT RECOMMENDED</bcp14> for a CA to copy the ext-evidence extension into the published certificate.
The reason for this is that certificates are considered public information and the Evidence might contain detailed information about hardware and patch levels of the device on which the private key resides.
The certificate requester has consented to sharing this detailed device information with the CA but might not consent to having these details published.
These privacy considerations are beyond the scope of this document and may require additional signaling mechanisms in the CSR to prevent unintended publication of sensitive information, so we leave it as "<bcp14>NOT RECOMMENDED</bcp14>". Often, the correct layer at which to address this is either in certificate profiles, a Certificate Practice Statement (CPS), or in the protocol or application that carries the CSR to the RA/CA where a flag can be added indicating whether the RA/CA should consider the evidence to be public or private.</t>

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

<t>The <spanx style="verb">EvidenceStatement</spanx> includes both a <spanx style="verb">type</spanx> OID and a free form <spanx style="verb">hint</spanx> field with which the Attester can provide information to the Relying Party about which Verifier to invoke to parse a given piece of Evidence.
Care should be taken when processing these data since at the time they are used, they are not yet verified. In fact, they are protected by the CSR signature but not by the signature from the Attester and so could be maliciously replaced in some cases.
The authors' intent is that the <spanx style="verb">type</spanx> OID and <spanx style="verb">hint</spanx> will allow an RP to select between Verifier with which it has pre-established trust relationships, such as Verifier libraries that have been compiled in to the RP application.
As an example, the <spanx style="verb">hint</spanx> may take the form of an FQDN to uniquely identify a Verifier implementation, but the RP <bcp14>MUST NOT</bcp14> blindly make network calls to unknown domain names and trust the results.
Implementers should also be cautious around <spanx style="verb">type</spanx> OID or <spanx style="verb">hint</spanx> values that cause a short-circuit in the verification logic, such as <spanx style="verb">None</spanx>, <spanx style="verb">Null</spanx>, <spanx style="verb">Debug</spanx>, empty CMW contents, or similar values that could cause the Evidence to appear to be valid when in fact it was not properly checked.</t>

</section>
<section anchor="additional-security-considerations"><name>Additional security considerations</name>

<t>In addition to the security considerations listed here, implementers should be familiar with the security considerations of the specifications on this this depends: PKCS#10 <xref target="RFC2986"/>, CRMF <xref target="RFC4211"/>, as well as general security concepts relating to evidence and remote attestation; many of these concepts are discussed in the Remote ATtestation prodedureS (RATS) Architecture <xref target="RFC9334"/> sections 6 Roles and Entities, 7 Trust Model, 9 Freshness, 11 Privacy Considerations, and 12 Security Considerations. Implementers should also be aware of any security considerations relating to the specific evidence format being carried within the CSR.</t>

</section>
</section>


  </middle>

  <back>


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



<reference anchor="RFC9334">
  <front>
    <title>Remote ATtestation procedureS (RATS) Architecture</title>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="D. Thaler" initials="D." surname="Thaler"/>
    <author fullname="M. Richardson" initials="M." surname="Richardson"/>
    <author fullname="N. Smith" initials="N." surname="Smith"/>
    <author fullname="W. Pan" initials="W." surname="Pan"/>
    <date month="January" year="2023"/>
    <abstract>
      <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9334"/>
  <seriesInfo name="DOI" value="10.17487/RFC9334"/>
</reference>

<reference anchor="RFC6268">
  <front>
    <title>Additional New ASN.1 Modules for the Cryptographic Message Syntax (CMS) and the Public Key Infrastructure Using X.509 (PKIX)</title>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <author fullname="S. Turner" initials="S." surname="Turner"/>
    <date month="July" year="2011"/>
    <abstract>
      <t>The Cryptographic Message Syntax (CMS) format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates some auxiliary ASN.1 modules to conform to the 2008 version of ASN.1; the 1988 ASN.1 modules remain the normative version. There are no bits- on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6268"/>
  <seriesInfo name="DOI" value="10.17487/RFC6268"/>
</reference>

<reference anchor="RFC5912">
  <front>
    <title>New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)</title>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="June" year="2010"/>
    <abstract>
      <t>The Public Key Infrastructure using X.509 (PKIX) certificate format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5912"/>
  <seriesInfo name="DOI" value="10.17487/RFC5912"/>
</reference>

<reference anchor="RFC4211">
  <front>
    <title>Internet X.509 Public Key Infrastructure Certificate Request Message Format (CRMF)</title>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="September" year="2005"/>
    <abstract>
      <t>This document describes the Certificate Request Message Format (CRMF) syntax and semantics. This syntax is used to convey a request for a certificate to a Certification Authority (CA), possibly via a Registration Authority (RA), for the purposes of X.509 certificate production. The request will typically include a public key and the associated registration information. This document does not define a certificate request protocol. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4211"/>
  <seriesInfo name="DOI" value="10.17487/RFC4211"/>
</reference>

<reference anchor="RFC2986">
  <front>
    <title>PKCS #10: Certification Request Syntax Specification Version 1.7</title>
    <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
    <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
    <date month="November" year="2000"/>
    <abstract>
      <t>This memo represents a republication of PKCS #10 v1.7 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process. The body of this document, except for the security considerations section, is taken directly from the PKCS #9 v2.0 or the PKCS #10 v1.7 document. This memo provides information for the Internet community.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2986"/>
  <seriesInfo name="DOI" value="10.17487/RFC2986"/>
</reference>

<reference anchor="RFC5280">
  <front>
    <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
    <author fullname="D. Cooper" initials="D." surname="Cooper"/>
    <author fullname="S. Santesson" initials="S." surname="Santesson"/>
    <author fullname="S. Farrell" initials="S." surname="Farrell"/>
    <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
    <author fullname="R. Housley" initials="R." surname="Housley"/>
    <author fullname="W. Polk" initials="W." surname="Polk"/>
    <date month="May" year="2008"/>
    <abstract>
      <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5280"/>
  <seriesInfo name="DOI" value="10.17487/RFC5280"/>
</reference>

<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>

<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>

<reference anchor="RFC5911">
  <front>
    <title>New ASN.1 Modules for Cryptographic Message Syntax (CMS) and S/MIME</title>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="June" year="2010"/>
    <abstract>
      <t>The Cryptographic Message Syntax (CMS) format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5911"/>
  <seriesInfo name="DOI" value="10.17487/RFC5911"/>
</reference>




    </references>

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



<reference anchor="RFC8126">
  <front>
    <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
    <author fullname="M. Cotton" initials="M." surname="Cotton"/>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <author fullname="T. Narten" initials="T." surname="Narten"/>
    <date month="June" year="2017"/>
    <abstract>
      <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
      <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
      <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="26"/>
  <seriesInfo name="RFC" value="8126"/>
  <seriesInfo name="DOI" value="10.17487/RFC8126"/>
</reference>


<reference anchor="I-D.ietf-rats-msg-wrap">
   <front>
      <title>RATS Conceptual Messages Wrapper (CMW)</title>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Ned Smith" initials="N." surname="Smith">
         <organization>Intel</organization>
      </author>
      <author fullname="Thomas Fossati" initials="T." surname="Fossati">
         <organization>Linaro</organization>
      </author>
      <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
      <date day="2" month="September" year="2024"/>
      <abstract>
	 <t>   This document defines the RATS conceptual message wrapper (CMW)
   format, a type of encapsulation format that can be used for any RATS
   messages, such as Evidence, Attestation Results, Endorsements, and
   Reference Values.  Additionally, the document describes a collection
   type that enables the aggregation of one or more CMWs into a single
   message.

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

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-08"/>
   
</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>
      <date day="3" month="September" 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-04"/>
   
</reference>

<reference anchor="RFC7030">
  <front>
    <title>Enrollment over Secure Transport</title>
    <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
    <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
    <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
    <date month="October" year="2013"/>
    <abstract>
      <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7030"/>
  <seriesInfo name="DOI" value="10.17487/RFC7030"/>
</reference>


<reference anchor="I-D.tschofenig-rats-psa-token">
   <front>
      <title>Arm&#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="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="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>




    </references>


<?line 811?>

<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 used which is the TPM2_Certify and the TPM2_ReadPublic commands.</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-----
MIINnjCCDIgCAQAwcjELMAkGA1UEBhMCQVUxDDAKBgNVBAgMA1FMRDERMA8GA1UE
BwwIQnJpc2JhbmUxGzAZBgNVBAoMEmlldGYtMTE5LWhhY2thdGhvbjEWMBQGA1UE
CwwNaWV0Zi1jc3ItdGVzdDENMAsGA1UEAwwEa2V5MTCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBALHs46qywIKk3JpICeppzL7laofTNESwwzov2RNKHp3J
CmpnpvK9pn1RycQGxEnCK+hyFUjgezMo656zjPsMlNs2Cb2KLj7W2oP75x8cb/k8
aLbok+4qnnUd+6wvZKOvNuprj/AWeXuebsq6U5R0wFN0yHU1dEzzMpK3DhpDoq61
fRWDy2KSxlt3Vs9YtKYr54+u9DSLEYMmwx/gOEThXy1hQ3hMaJsgBZlCI2vI8NG2
rEGZdyuHyQJhjKVKwsY6MgUoslKpKhkEZIolPKbSDeRHtvrJOtjwSFo3zfuFm03Q
/m3xEPn//i0icKwPNm5hVsyS02ZU7FCQuytgJpVW2s8CAwEAAaCCCucwDwYJKoZI
hvcNAQkOMQIwADCCCtIGCyqGSIb3DQEJEAI7MYIKwTCCCr0wggq5MIIC2jCCAtYG
BWeBBRQBMIICsgSBkf9UQ0eAFwAiAAt4r6q4eL+MRkZVMf4zVfg3vCBxjkAv7lB8
ZnNxaHQNbgAEAP9VqgAAAAAAACLaAAAAAAAAAAABIBUBEwAVSCIAIgALGGteNQ9z
gSzgw5UUDHgJOG0UpLZVbstlorgYM1dGRI4AIgALqYkehoHN34Yg7HNO/HOG7/UN
bNOVPKp1fg4MTz0DbKAEggEAOFmcmbvoqJL3CRKvCdyEGuIL44kJKPrfLevba85c
OTf5m2G+4W57HR8w5gYHozrTVhbx6oUla9rAb3fxC6ViqwMdPqdkFeNtzIc/TB2U
hh0yW5gp6GRK5No+JDJ6OKVoqvy2mBZLnUbvTOoGyeYZnuVqK62wL2cKDv0ARRjs
QwRBWClo7n3UYs8/0ycXFnYtBzPpSjRMMW79bzG3JsFQLtj/pFzTpBu9fzu88Ylo
wm6HmvwdMyTw3Hq4ou2+hcjl1/NVu5EThfiwTsllDpRuGgzp42L1nJHNlLW9KGYQ
eyGesvtoX9JTTYG0r72rXA9VMw7OSsmHhRWXL0TJmdUccwSCARYAAQALAAYAcgAA
ABAAEAgAAAAAAAEAsezjqrLAgqTcmkgJ6mnMvuVqh9M0RLDDOi/ZE0oenckKamem
8r2mfVHJxAbEScIr6HIVSOB7MyjrnrOM+wyU2zYJvYouPtbag/vnHxxv+TxotuiT
7iqedR37rC9ko6826muP8BZ5e55uyrpTlHTAU3TIdTV0TPMykrcOGkOirrV9FYPL
YpLGW3dWz1i0pivnj670NIsRgybDH+A4ROFfLWFDeExomyAFmUIja8jw0basQZl3
K4fJAmGMpUrCxjoyBSiyUqkqGQRkiiU8ptIN5Ee2+sk62PBIWjfN+4WbTdD+bfEQ
+f/+LSJwrA82bmFWzJLTZlTsUJC7K2AmlVbazwwXdHBtdmVyaWZpZXIuZXhhbXBs
ZS5jb20wggfXMIIEYDCCA0igAwIBAgIUJ65JvgeACRrqSqGBIEY5mH7SiHUwDQYJ
KoZIhvcNAQELBQAwdDELMAkGA1UEBhMCQVUxDDAKBgNVBAgMA1FMRDERMA8GA1UE
BwwIQnJpc2JhbmUxGzAZBgNVBAoMEmlldGYtMTE5LWhhY2thdGhvbjEWMBQGA1UE
CwwNaWV0Zi1jc3ItdGVzdDEPMA0GA1UEAwwGcm9vdENBMB4XDTI0MDcwNzAxMDMx
OVoXDTI0MDgwNjAxMDMxOVowcDELMAkGA1UEBhMCQVUxDDAKBgNVBAgMA1FMRDER
MA8GA1UEBwwIQnJpc2JhbmUxGzAZBgNVBAoMEmlldGYtMTE5LWhhY2thdGhvbjEW
MBQGA1UECwwNaWV0Zi1jc3ItdGVzdDELMAkGA1UEAwwCYWswggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQCSMnAsx2LBunwXqcOL0zHHWKctsL2EovzKAZev
9452fqmDpJqcud3m3JLTHBsgBElIniaCuwUutixde1aPRrBHRyqmkrX2j/+SDEX3
iG5nu5Qy6Rp7fZ1DEUPjZhYV2/9TJx/zyEg5BWGj18RhI0zd5Ol60GG6PuS3i2Ob
mVk5vP5fbUgLSAfbkDbERaHeCMW3UK4jU7C3rlT4uvbUREBWQCms6z5CllRGEfA1
VboppYeYIitwC0kRM3mZeMDlNDwCd07wQGoDXFpvDJREKBgkdMucYfdIc5dZIp7H
4bdtZrhyIO9wNq2F5YLyCTYbuWGCvnReJa7FKHcUvr4/4BVpAgMBAAGjge0wgeow
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
-----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>
<section anchor="asn1-module"><name>ASN.1 Module</name>

<figure><artwork><![CDATA[
CSR-ATTESTATION-2023
  { iso(1) identified-organization(3) dod(6) internet(1) security(5)
  mechanisms(5) pkix(7) id-mod(0) id-mod-pkix-attest-01(TBDMOD) }

CsrAttestation DEFINITIONS IMPLICIT TAGS ::= BEGIN

EXPORTS ALL;

IMPORTS

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

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

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

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

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

EVIDENCE-STATEMENT ::= TYPE-IDENTIFIER

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

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

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
}

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

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
        // EvidenceBundles ::= SEQUENCE SIZE (1..MAX) OF EvidenceBundle
        30 77
          // EvidenceBundle ::= SEQUENCE
          30 75
            // EvidenceStatements ::= SEQUENCE SIZE (1..MAX) OF EvidenceStatement
            30 73
              // EvidenceStatement ::= SEQUENCE
              30 71
                // type: OBJECT IDENTIFIER tcg-dice-TcbInfo (2.23.133.5.4.1)
                06 06 67 81 05 05 04 01
                // stmt: SEQUENCE
                30 4E
                  // CONTEXT_SPECIFIC | version (02)
                  // version = ABCDEF123456
                  82 0C 41 42 43 44 45 46 31 32 33 34 35 36
                  // CONTEXT_SPECIFIC | svn (03)
                  // svn = 4
                  83 01 04
                  // CONTEXT_SPECIFIC | CONSTRUCTED | fwids (06)
                  A6 2F
                  // SEQUENCE
                  30 2D
                    // OBJECT IDENTIFIER SHA256
                    06 09 60 86 48 01 65 03 04 02 01
                    // OCTET STRING
                    // fwid = 0x0000....00
                    04 20 00 00 00 00 00 00 00 00
                    00 00 00 00 00 00 00 00
                    00 00 00 00 00 00 00 00
                    00 00 00 00 00 00 00 00
                  // CONTEXT_SPECIFIC | vendorInfo (08)
                  // vendor info = 0x00000000
                  88 04 00 00 00 00
                  // CONTEXT_SPECIFIC | type (09)
                  // type = 0x00000000
                  89 04 00 00 00 00
                // hint: UTF8STRING "DiceTcbInfo.example.com"
                0C 17 44 69 63 65 54 63 62 49 6e 66 6f
                2e 65 78 61 6d 70 6c 65 2e 63 6f 6d

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

</section>
</section>
<section anchor="acknowledgments"><name>Acknowledgments</name>

<t>This specification is the work of a design team created by the chairs of the
LAMPS working group. The following persons, in no specific order,
contributed to the work: Richard Kettlewell, Chris Trufan, Bruno Couillard,
Jean-Pierre Fiset, Sander Temme, Jethro Beekman, Zsolt Rózsahegyi, Ferenc
Pető, Mike Agrenius Kushner, Tomas Gustavsson, Dieter Bong, Christopher Meyer,
Michael StJohns, Carl Wallace, Michael Richardson, Tomofumi Okubo, Olivier
Couillard, John Gray, Eric Amador, Johnson Darren, Herman Slatman, Tiru Reddy,
Corey Bonnell, Argenius Kushner, James Hagborg, A.J. Stein, John Kemp, Ned
Smith.</t>

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

<t>We would also like to specifically thank Monty Wiseman for providing the
appendix showing how to carry a TPM 2.0 Attestation, and to Corey Bonnell for helping with the hackathon scripts to bundle it into a CSR.</t>

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

</section>


  </back>

<!-- ##markdown-source:
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
8Foe9I+nZc286jvTo/zLYnE3PCpu1k+X1+v2auk+HxsP1qeV1fdeineFTnrT
aKe353eZYf3trbW8zNUmy5rzUsxoo85DbZu97L7O/Ny9d/LoXz66hfzR6qTW
vao/tuab1+Pxdb03+bTNTG5zk5Z54Y0rT7NqM7tulttnWc2tnz0Nt6vz7e3F
5Pny/nLjPRZb4zvHm10uLyfT+lPTmd1c9rs1q3Pur92La/950204ubfRqjFP
526143nutX6zOD620/bgcnPTnhcm9962m84+3ZUa1dvV1h9fLO8fsl65amzq
hmFWq9XVYFPbsNPQ2HFMr1u3zQ2eRNVvnlW3L2fdZj9Xu61f1I1mqfXYvNzA
MVbd9GY8fikA8FWzAHyG/3imVR6sSqVzW8GH3rhbmY5O7m7TltHYGLZh+Hm3
+JK3ro5anenTfWuUf7sfjXPrauX1eWqsS7NKWXtatF/N89t2f2zUjZuT+5ex
wX6qV6YR/FSalbtKfWPcd6tNozk2rs7OfKt9e/Kmjbtv403h7q52Pr64Pkvf
La+e7vueP3Pc8WMrMzzrNPP0wcvj1Jo45+1c/nFcOm9fH59fn5WO79pav319
f3O5zIzG+VbvLV3rXxp1gEbjujEfzPtr5+XiKlftXK6rw239bNW8yuenF5c3
7ujKWvfNcmGgXfdGhXn27Cj/UCidd8qbwvjx3Hlze/eT/mvRuZuZJ67Rz41e
q8V7+2XTGt68DKcNq+2/NQfHvUr2TptM0tuHwnhZPOtcFtrO0UXtonh9ee+8
rLfZeeXpanHXX/eunbOt9fi0WN2/XBazm6vs4LK2ThudzrOn3W46lYfqzCkt
cnePXvk4vR18aiwe/crbzbL73Gm1Hkon/bez3IXXuL3yn4+XjbfesrI6Gb2t
yuXHmaNt5sXz+XozbG17m9z5S95ZZY8mg+dZ5rh9vyoADI/sTc+bzWrLzups
/LbMZ68yi4vz9uzq4eTy7PFWs7Znlrf2nU8nF73e41naLWXdT8bJfWtTuu56
8/NJ5+HTVbp3MR/eDQabbtXoPBqAua4M49EAhs/QjIoBACAOv2541tvzi3tl
jF96g/l0fFGcL1prWPvkpJXuXNVq1/bxUz3tAHqdXgInP9fKbnY+uj+/eDX6
9e6g6RbPm/fd60qptX12F+5162izvcu+PV6sH53Vjd83x8frxfnr6/qo9+r4
K7unlewXa9jJldzqydQplrPF+eqmXHkqWIXCausue7PznnGX6zWHvfs0MN/b
qTu4Ppte2657f9J4vLnSHpdXZw+54cNbxk4v7fXiuVhKt5teZ7zt186PjHzn
ujG6emjUrPqrM98ajfld89ksP2/SfdO7fZrltMv86MKYn7WWd2719dnZVrr2
9u5l+nJ225na9l156TfbhbqVPfKmxexNpfnwPGoD1PV7w9pRf1S/1Y5Gx0dX
3YuNa5Sz/Xnj4e3iqvc063l3F9XSZdaYz+775ttm82l4XvGH8/ut+fC0fPrU
XD19mkz6nyqe9tQtPPezeM9Hn+BK1x8RO6ftsbFpAh1p3l0UCxfrsWVUO+5L
9+WsAi0K8/NS1z6/IxSvKTj+ClD8BmjCfwzKdNMy0oIynQ3mJ+thvV1pVfKf
ar1mulUbbNpvxmur1nrVru8d/nC8aT+zh/BsM/jBpWhiLX90KZpYy56lyFnA
UqqPDx6cVt3G5VW7DHNrgLorxu2dYeSbldrGwAaXhgNHeFvtthaG95q9As5l
8+llcH2Vfjs/f7gc+N5Vtu6s3y6NJ2utneQL2dHLvLa8eBmshrl5DgDpvALk
qz5rLmyzutrcrXz7dWhlzJuOWznvbF/mU/dT9vn4qFurf8pp9llhsSrcboud
ZWn0lKnV726enyaP99njk97F6/Hbtj4uVB7OnjPlzqSZfhsWrmfF9NlZ8WbV
zdnZ6742v58W1jeFUf9ufNU1Rv1prV/vmOdWtfWQu7vMP9+Vqjl31suv1v27
Tr3ycFude8W3QnU265zVR0ZGu+87y+Wj9di0/U01Pe20cvMnq1WbtWub6jBd
2tyeObVPjeW6dtGpwxlOh63V4HE0bA4Kw6fmsnSu5ftD/8mdbJvXJ5v2S7ZR
eLzaVnuP/dXDWXW96FgXZqlxeT64W7v543zlfgkgADjsDLgPuD+Ws9HGT8QL
DZsboItv1cr0spFfnj/+8J34dwek2DsxnnRuS+4oW6s7j9riuXXxeL1861SP
epl+1R8/Gy0c+bwDax2V68azYXCWb1jb3EJHzfNxzbilNl28jT3jvDK+X4xv
75rGmzGkF7f5emOM7Gx1mN249xf37sn6qlF7K4xfxu7bC2BpyS9qCjKpEY9o
nGXWb9PbVqvaX55fbtNP7VXh5P767e66XPRuMq/H5dZq2+tevrZHObdc14bd
x/O1505as+rxfG3nrpbbc/O2Pi6WvG71+Pnxpvi6cV9e0qv69YVz5uZsu1bz
Hcecto6ct6o51m7609tNbvr8uL5ZPb/dfcra59Zz6er8pl++Pbvv1vNPk8tL
fzK6rfpHZf/k6KlTLdwVNy+1K2Nw3ej2tPvN9XjhPjderGrDfz67fLDeOs66
0zybX87rlufYZ0bu/unmeVSuHI1XJ8Ph1WjZ3oyOR+WzOtyPjWYZZ7nS9mni
titHJa927oxupp1Po3z6LZOrb6djp1+vF+Z3x/anC2v6kJ46y+Js2J2b0+an
p/Ltk6tdPvVrbxeTi8p41Jlf3zRrl1a/084cXQ+8l7vqnVkbnTUqzgbwRHuN
nNz9pnl3d13MnYxfL88u8m9a9aH2MkjfrqcnDxv3cYed/y6q1+Jw/e8Bay0O
1/8esNbicH17tovq4VnsUrT3yNaPLEV7j2z9yFI0SbaazUrz2YC7On2ZTO2z
k00aUHu9YRjXIEuVDXxfHV/C78BHZY9yt9k0oKn7kVZxnxzvtXIy8e/qxcmZ
mc/PssNr81Pl5cp1Pq3yx/Zx7rntlx4yvQdr4frX3fvJ69a1Rtu3l4fZ2UJb
Vi6fjlu+UbZvsuvK2139fNmq3RTmg+XTeFKczu32dtkfZyq91bM3ufNrT5va
0LO90avzdrvMvWW09OVj7yo3T9/fPT11z6f987fH8tXFeHTTmZzkrNXZ/XS4
uZxt3KeVfZ45ecq5xnUPZKh08/ksve1P+5rTOr5vVUZF4LOvl60Ld+gNt7n1
/Dpj3nYrx+2b59pZ4W3+3LDG2ebyzmp+ely0+81lJ78BiayX32jdZv21mzvJ
1p6GT4Pnm0m1MnfylfFRb9W+cIardiO3bpaKRuOk1S12THteHt/dFV4710fV
jHVtDXvaW/52MGoPjtqbJmA6o6JSXiS81Q0jvIAFH4on/eW8NNgev9xvn/z6
5vz+zdfuBrfT4qX92joez1sXrdbItF8Li3w9bd/7l4t6Y2HYrw/dee1ocb3x
jla2NS5OW/NMelm9f7kr9m3tfta5bde3F6/386Pzt+yn7nbQLJYfjsuLi864
VIRz23TNq+bzuHpVa79ln0b10fbk+PXq4dIfDTtnvub7Df/ePn7IlAfbNED4
a82+fWhdvh493Hx6WUyr2ZvM1dHscVRs+vntwJwXq9lPvc1gvHpdvs7s9Vwz
BrUn6y5d7Q+yHafQ6hcb/svkuXb3UHkq3hSe08126frxpdkouI/3o7WzPndr
A+cy/3p1WTtudLM3WvOqOLbOM/6gaM5md8eVt74/uchdXD4aD8tVI9scOM7g
uXBtXaWntdmR+3hsVqbFHsixLxvjoXzf15DqhHf9muB9cNV7uK6tT3Kdsvdc
z7XHz9uVvT05HwF1bzuv7u3V22Z16Te1xk3npTLc3nx6HDcmx9N25bL7NN9a
x95N96mdrl60B9cn91lj+VaePi+N2WI+GmW8eqP09Pr6OsldtzXPOG5kXzZv
rVFtdXl9nj1aZbLOsP+2uH86t62j29eniXHkrqsPI9ftj67P2qXVNl04ruR9
Gy7H5Fzb3Hfz7Ua2lL9zzU3WGZf9s+Jjz7gxz85et/eD6Sg3XuS2VzeLEVzL
q8nTWW/dGjScVjlvD+ZO9l4zH2qbs6fHk/zVpOdZmeerO8uu2PPb4+ZR+cXI
vN12P13WOo/O8LFY68yH6fzipnR7NnSr82nJnB9vtE3++bmwLD80tsOnvN8w
bkcb4/KxkK/cza/WlfZxujHNVY42z28XK+fq9s9/Zsqperu2XzXFHUso0l41
mPUwpwePL2Lmpe8kATmAHg7juvC0UBQoFjLzvcHEGVkLe8zKmS09M0lJRL59
C+fyFhUK/HDJTZ5IglXiUmOU2JAHdaN3mOJj9Uc+G2Rq+pitmMePRcKiNSXg
x9Lh+x19rwgVIrUl3wpNDSuj0kZM+/rdVWrM2aEvq8PvRNtDL317IaL0tOhr
ny30EhYqFPFiUnHtbqCdJpMYYTVnoTCndMgsA6gw6jM7+e7eieyNwuMfBk9C
xyzUDq0OCdJCu2zSjvbli0gaXUhlcLzdLhPBLrC0ApRlitVeg0N5txpnb6IU
FBDa4Z05hWuLhlzWUuEEEEw3jPYhKnlEtX+OAita8IwqrcRY0qSx6Uj+FhQQ
OoJPmG1N1LvFtVaDtcpPpCUrmuehV6nt6ZiZ4mDtx7j2SMd0w3GzWFJwOybw
MfkXSokCu6VeA010KHaNrBnBqRbjz1TnhRdEXg7MDly57gRnhe/CBx3yo2bl
hrCKQLLvWubU44kRWeVmc8gz4YoK9N4hN5yidfADzODDKe3N5OMwW87nc0Ym
nckWjXShXE0bubRRKGfTlZNMJZ3LZE+y2exJKVfNZvL1fLbSyGVqxTLf2VLW
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

-->

</rfc>

