<?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.17 (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-11" 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="September" day="18"/>

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

    <abstract>


<?line 112?>

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

<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="352" width="488" viewBox="0 0 488 352" 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,320" fill="none" stroke="black"/>
<path d="M 432,240 L 432,320" 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,320 L 432,320" 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="180" y="132">(1</text>
<text x="204" y="132">or</text>
<text x="240" 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="220" y="228">(1</text>
<text x="244" y="228">or</text>
<text x="240" 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>
</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         |
                                  +-------------------+
]]></artwork></artset></figure>

<t>A conformant implementation of an entity parsing the CSR structures <bcp14>MUST</bcp14> be prepared
to parse certificates found in the corresponding EvidenceBundle structure to build
a certification path to validate the EvidenceStatement found in the same EvidenceBundle.
Hence, certificates need 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,64 L 176,64" fill="none" stroke="black"/>
<path d="M 8,96 L 176,96" fill="none" stroke="black"/>
<g class="text">
<text x="84" y="52">EvidenceBundle</text>
<text x="88" y="84">EvidenceStatement</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
  +--------------------+
  |  EvidenceBundle    |
  +--------------------+
  | EvidenceStatement  |
  +--------------------+
]]></artwork></artset></figure>

</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,64 L 216,64" fill="none" stroke="black"/>
<path d="M 8,112 L 216,112" fill="none" stroke="black"/>
<g class="text">
<text x="84" y="52">EvidenceBundle</text>
<text x="88" y="84">EvidenceStatement</text>
<text x="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 CertificateAlternative 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,64 L 216,64" fill="none" stroke="black"/>
<path d="M 8,112 L 216,112" fill="none" stroke="black"/>
<path d="M 8,144 L 216,144" fill="none" stroke="black"/>
<path d="M 8,192 L 216,192" fill="none" stroke="black"/>
<path d="M 216,112 L 236,152" fill="none" stroke="black"/>
<path d="M 216,32 L 236,72" fill="none" stroke="black"/>
<path d="M 216,112 L 236,72" fill="none" stroke="black"/>
<path d="M 216,192 L 236,152" fill="none" stroke="black"/>
<g class="text">
<text x="84" y="52">EvidenceBundle</text>
<text x="160" y="52">(1)</text>
<text x="276" y="68">Provided</text>
<text x="324" y="68">by</text>
<text x="88" y="84">EvidenceStatement</text>
<text x="276" y="84">Attester</text>
<text x="320" y="84">1</text>
<text x="92" y="100">CertificateChoices</text>
<text x="84" y="132">EvidenceBundle</text>
<text x="160" y="132">(2)</text>
<text x="276" y="148">Provided</text>
<text x="324" y="148">by</text>
<text x="88" y="164">EvidenceStatement</text>
<text x="276" y="164">Attester</text>
<text x="320" y="164">2</text>
<text x="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 anchor="case-4-multiple-evidence-bundles-with-certificate-transmission-optimization"><name>Case 4 - Multiple Evidence Bundles with Certificate Transmission Optimization</name>

<t>In the last use case, a Composite Device with additional processing
capabilities of the Lead Attester parses the certificate chain provided by
all Attesters in the device and removes duplicate certificates. The
benefit of this approach is the reduced transmission payload size. There are several
implementation strategies and we show two in the sub-sections below.</t>

<t>Note: This specification does not support this optimization.</t>

</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 Statement formats 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[
EvidenceStatements ::= SEQUENCE SIZE (1..MAX) OF EvidenceStatement

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>The Attester <bcp14>MAY</bcp14> populate the hint with the name of a Verifier software package
which will be capable of parsing the data contained in <spanx style="verb">EvidenceStatement.stmt</spanx>;
this is to help the Relying Party select the correct Verifier without requiring
the Relying Party to perform any parsing of the data in <spanx style="verb">EvidenceStatement.stmt</spanx>.
The type OID, which identifies the format of the data found in the Evidence statement,
typically suffices for a Relying Party to select the correct
Verifier (software) to invoke. However, in some cases the Relying Party
may have more than one Verifier capable of parsing a given type OID -- for
example if the OID indicates a wrapper format such as DICE
ConceptualMessageWrapper that can contain further proprietary data.
A design goal of this specification is to enable Relying Parties to
select an appropriate Verifier (software) without the need to perform any
parsing of the <spanx style="verb">EvidenceStatement.stmt</spanx> data.
To help with this, the Attester <bcp14>MAY</bcp14> populate the hint with a name of a
software package that will be capable of parsing this data.
The hint <bcp14>SHOULD</bcp14> contain a value that is unique
to this Verifier, for example,  a fully qualified domain name (FQDN), a uniform
resource name (URN) <xref target="RFC8141"/>, or a registered value corresponding to this
Evidence format.
In a typical usage scenario, the RP is pre-configured with a list of trusted
Verifiers and the corresponding hint values can be used to look up appropriate Verifier.
Tricking an RP into interacting with an unknown and untrusted Verifier has to be avoided
as the retrieved Attestation Result must be reliable.</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 indicates the Verifier software
"tpmverifier.example.com" can be invoked for parsing it.</t>

<figure><artwork><![CDATA[
EvidenceBundles ::= SEQUENCE SIZE (1..MAX) OF EvidenceBundle

EvidenceBundle ::= SEQUENCE {
   evidence EvidenceStatements,
   certs SEQUENCE SIZE (1..MAX) OF CertificateChoices OPTIONAL
      -- CertificateChoices MUST only contain certificate or other
}
]]></artwork></figure>

<t>The CertificateChoices structure defined in <xref target="RFC6268"></xref> allows for carrying certificates in the default X.509 [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 EvidenceBundles
  COUNTS MAX 1
  IDENTIFIED BY id-aa-evidence
}

-- For CRMF
ext-evidence EXTENSION ::= {
  SYNTAX EvidenceBundles
  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"></xref>], 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">EvidenceBundles</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">EvidenceBundles</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 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>DiceTcbInfo</c>
      <c><xref target="TCGDICE1.1"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 5</c>
      <c>DiceMultiTcbInfo</c>
      <c><xref target="TCGDICE1.1"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 6</c>
      <c>DiceUccsEvidence</c>
      <c><xref target="TCGDICE1.1"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 7</c>
      <c>DiceManifestEvidence</c>
      <c><xref target="TCGDICE1.1"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 8</c>
      <c>DiceTcbInfoComp</c>
      <c><xref target="TCGDICE1.1"/></c>
      <c>TCG</c>
      <c>2 23 133 5 4 9</c>
      <c>DiceConceptualMessageWrapper</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>
</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"></xref>, CRMF [4211], 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"></xref> 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="ASN1-2002" >
  <front>
    <title>ITU-T Recommendation X.680, X.681, X.682, and X.683</title>
    <author >
      <organization>ITU-T</organization>
    </author>
    <date year="2002"/>
  </front>
</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="RFC8141">
  <front>
    <title>Uniform Resource Names (URNs)</title>
    <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
    <author fullname="J. Klensin" initials="J." surname="Klensin"/>
    <date month="April" year="2017"/>
    <abstract>
      <t>A Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that is assigned under the "urn" URI scheme and a particular URN namespace, with the intent that the URN will be a persistent, location-independent resource identifier. With regard to URN syntax, this document defines the canonical syntax for URNs (in a way that is consistent with URI syntax), specifies methods for determining URN-equivalence, and discusses URI conformance. With regard to URN namespaces, this document specifies a method for defining a URN namespace and associating it with a namespace identifier, and it describes procedures for registering namespace identifiers with the Internet Assigned Numbers Authority (IANA). This document obsoletes both RFCs 2141 and 3406.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8141"/>
  <seriesInfo name="DOI" value="10.17487/RFC8141"/>
</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="24" month="June" 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-23"/>
   
</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 817?>

<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"></xref>, 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 {
      EvidenceBundles {
        EvidenceBundle {
          EvidenceStatements {
            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>Features of this specification that are not demonstrated by this example are:</t>

<t><list style="symbols">
  <t>An EvidenceBundle containing multiple EvidenceStatements that share a certificate chain.</t>
  <t>Multiple EvidenceBundles that each have their own certificate chain.</t>
</list></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[
EvidenceBundles
 +
 |
 +-> EvidenceBundle
      +
      |
      +->  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)}

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


CertificateAlternatives ::=
   CHOICE {
      cert              Certificate,
                           -- Using the Certificate ASN.1
                           -- structure as defined in RFC 5280.
      typedCert     [0] TypedCert,
      typedFlatCert [1] TypedFlatCert,
      ...
   }

TYPED-CERT ::= TYPE-IDENTIFIER

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

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

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

EVIDENCE-STATEMENT ::= TYPE-IDENTIFIER

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

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

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 EvidenceBundles
  COUNTS MAX 1
  IDENTIFIED BY id-aa-evidence
}


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

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

EvidenceBundle ::= SEQUENCE {
   evidence EvidenceStatements,
   certs SEQUENCE SIZE (1..MAX) OF CertificateChoices OPTIONAL
      -- CertificateChoices MUST only contain certificate or other
}


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

<section anchor="tcg-dice-conceptualmessagewrapper-in-csr"><name>TCG DICE ConceptualMessageWrapper in CSR</name>

<t>This section gives an example of extending the ASN.1 module above to carry an existing ASN.1-based evidence statement.
The example used is the Trusted Computing Group DICE Attestation Conceptual Message Wrapper, as defined in <xref target="TCGDICE1.1"/>.</t>

<figure><artwork><![CDATA[
tcgDiceEvidenceStatementES EVIDENCE-STATEMENT ::=
  { ConceptualMessageWrapper IDENTIFIED BY tcg-dice-conceptual-message-wrapper }

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

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

]]></artwork></figure>

</section>
<section anchor="tcg-dice-conceptualmessagewrapper-in-csr-1"><name>TCG DICE ConceptualMessageWrapper in CSR</name>

<t>This section gives an example of extending the ASN.1 module above to carry an existing ASN.1-based evidence statement.
The example used is the Trusted Computing Group 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 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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
AfGDcBj5wDWCAn3JY98H0s3Rni4sVEZ5oQkl/6rcaJRDcYhFoHUMbylbqIzV
YJYv5uMZ9Y6Sxj9u+aK6I0E6Qy/k/mAHqbwVFZ2acQZ5imDv9ksONAtgBZU8
Coy3jNQqEwxntHZfwIhGPDFUDjWmsLH6OqZB5D3jf0/3uBEkIm3RMeBU/ydZ
8LC3nHP0/xsqgP8aaY6hDKf63pKGodbflL++qeOyooLhWZtTtahd6NXAVF6p
fWrR39i/+F/pcReUwOMmR+6OpkILOVNx/nFkcZks1txCScuJaSRo5pWRpUgm
0Tc5/FAZyarnCnIassBhq5iarCxwhGvdk5KPQH2IdBb0pG/7/n5YbddQPzGt
WGCKtBv/sWivUE1a5hgSZLByueAh3PBEtVddPZdQnNN7paXxUxHnA0+RpIFM
bM1GzOUpUuA3XN9M1O0VjshmTLoiChBT4YSxtVTm06NSU+TmLBzjA6zJq91+
3nsxPu/sTXRH+CnteiUSpzhA/ttciBRAIe8uVsArCgsMtaRCBetk4grV1XMd
UJNAfuDJRmJ8JLG8Q5hFCYLJPDWZlUJMwlU33zPmhl3INK3x7nXUpQc8SbnB
neYXUbnwzJKe1I1FFPlyCAlV5IpBwtzDnWSK3e3H42tFvxZ4nz4l4wWFzfnk
SI7a6ZhuCGtRsr1K/azZ1pkdp1k1enW9g75SQFbxR2s1m+3Fc7Vaa46rxq2x
GTzXr1rG9MzI3NUrk1b19v7utVYzLivj9n3FGLeMTKPVqdU7LaNMbbTKZtO8
XVwsB9mLSX9+93r2Zjyxxk6rPp/NhmePfqtXL1w9TCaPWX8yPJus+8/1h1bl
lnVQ3Wza5sN9+snOPA9yTX94dv82rNXbLcOjBsZmUzez94VWr1o1us1N7fbx
4tJ5ak7Wg7ZxW69olVujNh7Xb4waNLh1qvB7xbg69/LFl+2meTnNXSybVWu5
fLsqzUxn1GvXu5vNm7POdtqX58vchVadLxfL9eXJcpHpbAe3Z6/1RfXyaLJt
3D2PrbeWUywU355vvNas7WWr/ezl1XPpIevclAqv5UH/eFrWzKu+Mz3KvywW
d8Oj4mb9dHm9bq+W7vOx8WB9Wll976V4V+ikN412ent+lxnW395ay8tcbbKs
OS/FjDbqPNS22cvu68zP3Xsnj/7lo1vIH61Oat2r+mNrvnk9Hl/Xe5NP28zk
NjdpmRfeuPI0qzaz62a5fZbV3PrZ03C7Ot/eXkyeL+8vN95jsTW+c7zZ5fJy
Mq0/NZ3ZzWW/W7M65/7avbj2nzfdhpN7G60a83TuVjue517rN4vjYzttDy43
N+15YXLvbbvp7NNdqVG9XW398cXy/iHrlavGpm4YZrVaXQ02tQ07DY0dx/S6
ddvc4ElU/eZZdfty1m32c7Xb+kXdaJZaj83LDRxj1U1vxuOXAgBfNQvAZ/iP
Z1rlwapUOrcVfOiNu5Xp6OTuNm0ZjY1hG4afd4sveevqqNWZPt23Rvm3+9E4
t65WXp+nxro0q5S1p0X71Ty/bffHRt24Obl/GRvsp3plGsFPpVm5q9Q3xn23
2jSaY+Pq7My32rcnb9q4+zbeFO7uaufji+uz9N3y6um+7/kzxx0/tjLDs04z
Tx+8PE6tiXPezuUfx6Xz9vXx+fVZ6fiurfXb1/c3l8vMaJxv9d7Stf6lUQdo
NK4b88G8v3ZeLq5y1c7lujrc1s9Wzat8fnpxeeOOrqx13ywXBtp1b1SYZ8+O
8g+F0nmnvCmMH8+dN7d3P+m/Fp27mXniGv3c6LVavLdfNq3hzctw2rDa/ltz
cNyrZO+0ySS9fSiMl8WzzmWh7Rxd1C6K15f3zst6m51Xnq4Wd/1179o521qP
T4vV/ctlMbu5yg4ua+u00ek8e9rtplN5qM6c0iJ39+iVj9PbwafG4tGvvN0s
u8+dVuuhdNJ/O8tdeI3bK//5eNl46y0rq5PR26pcfpw52mZePJ+vN8PWtrfJ
nb/knVX2aDJ4nmWO2/erAsDwyN70vNmstuyszsZvy3z2KrO4OG/Prh5OLs8e
bzVre2Z5a9/5dHLR6z2epd1S1v1knNy3NqXrrjc/n3QePl2lexfz4d1gsOlW
jc6jAZjryjAeDWA/Dc2oGAAA4vDrhme9Pb+4V8b4pTeYT8cXxfmitYa1T05a
6c5VrXZtHz/V0w6g2ukliCBzrexm56P784tXo1/vDppu8bx5372ulFrbZ3fh
XreONtu77NvjxfrRWd34fXN8vF6cv76uj3qvjr+ye1rJfrGGnVzJrZ5MnWI5
W5yvbsqVp4JVKKy27rI3O+8Zd7lec9i7T4PUsJ26g+uz6bXtuvcnjcebK+1x
eXX2kBs+vGXs9NJeL56LpXS76XXG237t/MjId64bo6uHRs2qvzrzrdGY3zWf
zfLzJt03vdunWU67zI8ujPlZa3nnVl+fnW2la2/vXqYvZ7edqW3flZd+s12o
W9kjb1rM3lSaD8+jNkBdvzesHfVH9VvtaHR8dNW92LhGOdufNx7eLq56T7Oe
d3dRLV1mjfnsvm++bTafhucVfzi/35oPT8unT83V06fJpP+p4mlP3cJzP4v3
fPQJrnT9EbFz2h4bmybQkebdRbFwsR5bRrXjvnRfzirQojA/L3Xt8ztC8ZqC
468AxW+AJvz7oEw3LSMtKNPZYH6yHtbblVYl/6nWa6ZbtcGm/Wa8tmqtV+36
3uEPx5v2M3sIzzaDH1yKJtbyR5eiibXsWYqcBSyl+vjgwWnVbVxetcswtwao
u2Lc3hlGvlmpbQxscGk4cIS31W5rYXiv2SvgTzafXgbXV+m38/OHy4HvXWXr
zvrt0niy1tpJvpAdvcxry4uXwWqYm+cAkM4rQL7qs+bCNqurzd3Kt1+HVsa8
6biV8872ZT51P2Wfj4+6tfqnnGafFRarwu222FmWRk+ZWv3u5vlp8nifPT7p
Xbwev23r40Ll4ew5U+5Mmum3YeF6VkyfnRVvVt2cnb3ua/P7aWF9Uxj178ZX
XWPUn9b69Y55blVbD7m7y/zzXamac2e9/Grdv+vUKw+31blXfCtUZ7POWX1k
ZLT7vrNcPlqPTdvfVNPTTis3f7JatVm7tqkO06XN7ZlT+9RYrmsXnTqc4XTY
Wg0eR8PmoDB8ai5L51q+P/Sf3Mm2eX2yab9kG4XHq22199hfPZxV14uOdWGW
Gpfng7u1mz/OV+6XAAKAw86A+4D7YzkbbfxEvNCwuQG6+FatTC8b+eX54w/f
if/mgBR7J8aTzm3JHWVrdedRWzy3Lh6vl2+d6lEv06/642ejhSOfd2Cto3Ld
eDYMzvINa5tb6Kh5Pq4Zt9Smi7exZ5xXxveL8e1d03gzhvTiNl9vjJGdrQ6z
G/f+4t49WV81am+F8cvYfXsBLC35RU1BJjXiEY2zzPptettqVfvL88tt+qm9
KpzcX7/dXZeL3k3m9bjcWm173cvX9ijnluvasPt4vvbcSWtWPZ6v7dzVcntu
3tbHxZLXrR4/P94UXzfuy0t6Vb++cM7cnG3Xar7jmNPWkfNWNcfaTX96u8lN
nx/XN6vnt7tPWfvcei5dnd/0y7dn9916/mlyeelPRrdV/6jsnxw9daqFu+Lm
pXZlDK4b3Z52v7keL9znxotVbfjPZ5cP1lvHWXeaZ/PLed3yHPvMyN0/3TyP
ypWj8epkOLwaLdub0fGofFaH+7HRLOMsV9o+Tdx25ajk1c6d0c2082mUT79l
cvXtdOz06/XC/O7Y/nRhTR/SU2dZnA27c3Pa/PRUvn1ytcunfu3tYnJRGY86
8+ubZu3S6nfamaPrgfdyV70za6OzRsXZAJ5or5GTu9807+6ui7mT8evl2UX+
Tas+1F4G6dv19ORh4z7usPPfRfVaHK7/PWCtxeH63wPWWhyub892UT08i12K
9h7Z+pGlaO+RrR9ZiibJVrNZaT4bcFenL5OpfXaySQNqrzcM4xpkqbKB76vj
S/gd+KjsUe42mwY0dT/SKu6T471WTib+Xb04OTPz+Vl2eG1+qrxcuc6nVf7Y
Ps49t/3SQ6b3YC1c/7p7P3ndutZo+/byMDtbaMvK5dNxyzfK9k12XXm7q58v
W7WbwnywfBpPitO53d4u++NMpbd69iZ3fu1pUxt6tjd6dd5ul7m3jJa+fOxd
5ebp+7unp+75tH/+9li+uhiPbjqTk5y1OrufDjeXs437tLLPMydPOde47oEM
lW4+n6W3/Wlfc1rH963KqAh89vWydeEOveE2t55fZ8zbbuW4ffNcOyu8zZ8b
1jjbXN5ZzU+Pi3a/uezkNyCR9fIbrdusv3ZzJ9na0/Bp8HwzqVbmTr4yPuqt
2hfOcNVu5NbNUtFonLS6xY5pz8vju7vCa+f6qJqxrq1hT3vL3w5G7cFRe9ME
TGdUVMqLhLe6YYQXsOBD8aS/nJcG2+OX++2TX9+c37/52t3gdlq8tF9bx+N5
66LVGpn2a2GRr6fte/9yUW8sDPv1oTuvHS2uN97RyrbGxWlrnkkvq/cvd8W+
rd3POrft+vbi9X5+dP6W/dTdDprF8sNxeXHRGZeKcG6brnnVfB5Xr2rtt+zT
qD7anhy/Xj1c+qNh58zXfL/h39vHD5nyYJsGCH+t2bcPrcvXo4ebTy+LaTV7
k7k6mj2Oik0/vx2Y82I1+6m3GYxXr8vXmb2ea8ag9mTdpav9QbbjFFr9YsN/
mTzX7h4qT8WbwnO62S5dP740GwX38X60dtbnbm3gXOZfry5rx41u9kZrXhXH
1nnGHxTN2ezuuPLW9ycXuYvLR+NhuWpkmwPHGTwXrq2r9LQ2O3Ifj83KtNgD
OfZlYzyU7/saUp3wrl8TvA+ueg/XtfVJrlP2nuu59vh5u7K3J+cjoO5t59W9
vXrbrC79pta46bxUhtubT4/jxuR42q5cdp/mW+vYu+k+tdPVi/bg+uQ+ayzf
ytPnpTFbzEejjFdvlJ5eX18nueu25hnHjezL5q01qq0ur8+zR6tM1hn23xb3
T+e2dXT7+jQxjtx19WHkuv3R9Vm7tNqmC8eVvG/D5Zica5v7br7dyJbyd665
yTrjsn9WfOwZN+bZ2ev2fjAd5caL3PbqZjGCa3k1eTrrrVuDhtMq5+3B3Mne
a+ZDbXP29HiSv5r0PCvzfHVn2RV7fnvcPCq/GJm32+6ny1rn0Rk+Fmud+TCd
X9yUbs+GbnU+LZnz4422yT8/F5blh8Z2+JT3G8btaGNcPhbylbv51brSPk43
prnK0eb57WLlXN3+5S9MOVVv1/arprhHDCUIUC19PUxFwgOjmF3sO7lLDqCH
w7guPC0UvIrlCX1vMHFG1sIesyKFS89MUu6Tb9/CmcdFPQU/XKyS579gdcPU
4Co25EHd6B2m+Fj9kc8GmZo+5lbmgW+RaG5NiVSydPh+R8ssYpxIWcq3QlPj
4agQE9NmfneVGvPS6Mu66jtJAqCXvr0QwYVa9LXPFnoJCxXqfzGpuHY30E6T
KZewDrJQ01PyZpavVHgjMAP/7t6JXJMiVAEGT0LHLEYQbR0J0n27bNKO9uWL
SHFdSGVwvN0uE8EusGwIlBOLVYqDQ3m3mGVvopQ/ECrnnTmFq3KGfO1S4bwV
XAOs6VjZBf6b/GtEOcwNV7x8kyxlhA13ldAhq9hR6K9wDST8nBkBRQlZ3IRq
sAmhT+Vv0dwVvUrtO4Mw6yFs0DFuUGQQQgO4oyzPuR0T1pn8K6V7gS1V74om
OhRbS4aW4OiL8Qev81oSIucIJjyuXHeCA8V3YWgIeYmzCkpYGCHZdy1z6vFc
j6wwsjnkyX1FgXfvkJuF0ZD5AWbw4ZT2Z/JxmC3n8zkjk85ki0a6UK6mjVza
KJSz6cpJppLOZbIn2Wz2pJSrZjP5ej5baeQytWKZ724pa+TqjWytAsxmPp1p
VGqZRilbqOXLtWKlcVItZ0qZk/RJNY9v09lsGobJ8G9xjEa60WgYpYqRK9RL
xXo+XwVOtZDPF2u5bKlazpWzRgE+rRcaMIV8odbg357ky7l8sQpNykYB2max
s1K1kq/myzDVSqXYSJ+UCsVso5ipYVaCUrFc5d/WstVGPVdoVIyTUv3kpARv
axXU4eWAico26uky7oY6Yeicf5uularVdAmETXhVqNSqmUKuZBTyuVohVy2m
jaJRrRSz9Wq1Vj5JV0sNA1ZxIizsuUI+XT6pVOoZPuHGSaGeqeUr5ULGyFar
ZdyMcqlWrmdzjWzWaFRKYtwC9F+oFzKFWhrWmcvUSydGrgLnUcrAPMr5dKHY
KKRrmVymYZRzJ/C2ni7yb/O4s6V0rVoqwNTTlWLt5CRj1KuwzlrjpJHPVI1K
qZGplOrZar7UKJZqRtXg35YrlfxJPZfJnFTgkOqlEnxXrJZPMsVsCWS5dLVa
rKXrJTisMkyqWGrkAJz4txnjI9rGPyzfgbZsHn4naCtUjVwJlmA0ytmTai5d
hXXC+dRqldKJ6PGkkmnABpSruJEAdbVysZA2ajA8TKCea1SKedyL8KL4t8ra
fnxRYheCtWWMuJ2O22K5C2ynP8o4fh5wzhKmS2eNJHNDMTDoP5lNZ3Mq/vpi
e85BRvGnHiYdd2wu7Deicge5Q33oDA+KhywDxcLysbVITndQOBSdBcl14aG+
nNqvByXsNjmHz9PityS+EP4Y6cwB4NbWde3wm6bV6o1mu4lz7OrN1s1Vs9rs
6T3jrEv5EcgKqGn1TzfXnV5XN66uftY0aIZ/aZrqM4ED4SCa3uhct/Sby+an
TP0VYydsH1af5rv3D1r371h1BlN8s2mksweFDC5amXh14mCVSI1mXcW4C2cM
9HhiD3jp3u524ZuvsIRMWvui8+nPMY2em8T6NwfZQ33lHQCUHuquZ4KweZDJ
AGI4OdSW04GHrfHf5MnBCSxkbs+tgwwsjxXd8ZTJDuYebdRBoXyIKWHqn3r1
dhcOJqEDJHWalbtePaHL2KSu5X8BbqMLpGVmyadfmBOKPINklRLgY2Zf1rue
TDKChhkZCyeZ7K/0gVzZ3wuQv+Nk2NToVEq0YnJkYidBHLnVgt3ix3CfGzp+
JjzXHzsFceV+8DSQI1vTYAfZzCG586ADPmZu1CtYbGbC/LgUljRwlmB5yHAd
vvlemiBcvo63kEYIAaQxw+01fXK+gw9w/tXz6yZPUoI/aLjXQz97vZciP7CG
wAtZTfdDGOw7XwaRjWYoJaHIE8RjclgARFXM8Zf0r5RYmp4k1CYNYO+p2S8Z
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
taGEAFQKV/t/AVvs0hxpDQEA

-->

</rfc>

