<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.5 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-csr-attestation-07" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.2 -->
  <front>
    <title abbrev="Remote Attestation with CSRs">Use of Remote Attestation with Certificate Signing Requests</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-csr-attestation-07"/>
    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road – Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization>Siemens</organization>
      <address>
        <email>Hannes.Tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <date year="2024" month="March" day="01"/>
    <keyword>PKI</keyword>
    <keyword>PKCS#10</keyword>
    <keyword>CRMF</keyword>
    <keyword>Attestation</keyword>
    <keyword>Evidence</keyword>
    <keyword>Certificate Signing Requests</keyword>
    <abstract>
      <?line 91?>

<t>A PKI end entity requesting a certificate from a Certification Authority (CA) may wish to offer believable claims about the protections afforded to the corresponding private key, such as whether the private key resides on a hardware security module or the protection capabilities provided by the hardware.</t>
      <t>This document defines a new PKCS#10 attribute attr-evidence and CRMF extension ext-evidence that allows placing any Evidence data, in any pre-existing format, along with any certificates needed to validate it, into a PKCS#10 or CRMF CSR.</t>
      <t>Including Evidence along with a CSR can help to improve the assessment of the security posture for the private key, and the trustworthiness properties of the submitted key to the requested certificate profile. These Evidence Claims can include information about the hardware component's manufacturer, the version of installed or running firmware, the version of software installed or running in layers above the firmware, or the presence of hardware components providing specific protection capabilities or shielded locations (e.g., to protect keys).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://lamps-wg.github.io/csr-attestation/draft-ounsworth-csr-attestation.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-lamps-csr-attestation/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/lamps-wg/csr-attestation"/>.</t>
    </note>
  </front>
  <middle>
    <?line 100?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>When requesting a certificate from a Certification Authority (CA), a PKI end entity may wish to include Evidence of the security properties of its environments in which the private keys are stored in that request.
This Evidence can be appraised by authoritative entities, such as a Registration Authority (RA) or a CA, or associated trusted Verifiers as part of validating an incoming certificate request against given certificate policies. Regulatory bodies are beginning to require proof-of-hardware residency for certain classifications of cryptographic keys. At the time of writing, the most notable example is the Code-Signing Baseline Requirements <xref target="CSBR"/> document maintained by the CA/Browser Forum, which requires compliant CAs to "ensure that a Subscriber’s Private Key is generated, stored,
and used in a secure environment that has controls to prevent theft or misuse".</t>
      <t>This specification defines an attribute and an extension that allow for conveyance of Evidence in Certificate Signing Requests (CSRs) in either PKCS#10 <xref target="RFC2986"/> or Certificate Request Message Format (CRMF) <xref target="RFC4211"/> payloads which provides an elegant and automatable mechanism for meeting requirements such as those in the CA/B Forum's <xref target="CSBR"/>.</t>
      <t>As outlined in the RATS Architecture <xref target="RFC9334"/>, an Attester (typically
a device) produces a signed collection of Claims that constitutes Evidence about its running environment.
While the term "attestation" is not defined in RFC 9334, it was later defined in <xref target="I-D.ietf-rats-tpm-based-network-device-attest"/>, it refers to the activity of producing and appraising remote attestation Evidence.
A Relying Party may consult an Attestation Result produced by a Verifier that has appraised the Evidence in making policy decisions about the trustworthiness of the
Target Environment being assessed via appraisal of Evidence. <xref target="architecture"/> provides the basis to illustrate in this document how the various roles
in the RATS architecture map to a certificate requester and a CA/RA.</t>
      <t>At the time of writing, several standard and several proprietary attestation technologies
are in use.
This specification thereby is intended to be as technology-agnostic as it is feasible with respect to implemented remote attestation technologies. Instead, it focuses on (1) the conveyance of Evidence via CSRs while making minimal assumptions about content or format of the transported Evidence and (2) the conveyance of sets of certificates used for validation of Evidence.
The certificates typically contain one or more certification paths
rooted in a device manufacture trust anchor and the leaf certificate being
on the device in question; the latter is the Attestation Key that signs the Evidence statement.</t>
      <t>This document specifies a CSR Attribute (or Extension for Certificate Request Message Format (CRMF) CSRs) for carrying Evidence. Evidence can be placed into an EvidenceStatement along with an OID to identify its type and optionally a hint to the Relying Party about how to verify it. A set of EvidenceStatements may be grouped together along with the set of CertificateAlternatives needed to validate them to form a EvidenceBundle. One or more EvidenceBundles may be placed into the id-aa-evidence CSR Attribute (or CRFM Extension).</t>
      <t>A CSR may contain one or more Evidence payloads, for example Evidence
asserting the storage properties of a private key as well Evidence
asserting firmware version and other general properties
of the device, or Evidence signed using different cryptographic
algorithms.</t>
      <t>With these attributes, additional
information information is available to an RA or CA which may be used
to decide whether to issue a certificate and what certificate profile
to apply. The scope of this document is, however,
limited to the conveyance of Evidence within CSR. The exact format of the
Evidence being conveyed is defined in various standard and proprietary
specifications.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document re-uses the terms defined in <xref target="RFC9334"/> related to remote
attestation. Readers of this document are assumed to be familiar with
the following terms: Evidence, Claim, Attestation Results (AR), Attester,
Verifier, Target Environment, Attesting Environment, and Relying Party (RP).</t>
      <t>The term "Certification Request" message is defined in <xref target="RFC2986"/>.
Specifications, such as <xref target="RFC7030"/>, later introduced the term
"Certificate Signing Request (CSR)" to refer to the Certification
Request message. While the term "Certification Signing Request"
would have been correct, the mistake was unnoticed. In the meanwhile
CSR is an abbreviation used beyond PKCS#10. Hence, it is equally
applicable to other protocols that use a different syntax and
even a different encoding, in particular this document also
considers Certificate Request Message Format (CRMF) <xref target="RFC4211"/>
to be "CSRs". We use the terms "CSR" and Certificate Request
message interchangeably.</t>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t><xref target="fig-arch"/> shows the high-level communication pattern of the RATS
background check model where the Attester transmits the Evidence in the
CSR to the RA and the CA, which is subsequently forwarded to the Verifier.
The Verifier appraises the received Evidence and computes an Attestation
Result, which is then processed by the RA/CA prior to the certificate
issuance.</t>
      <t>In addition to the background check model the RATS architecture also
specifies the passport model and combinations. See Section 5.2 of
<xref target="RFC9334"/> for a description of the passport model. The passport model
requires the Attester to transmit Evidence to the Verifier directly in order
to obtain the Attestation Result, which is then forwarded to the Relying
Party. This specification utilizes the background model since CSRs are
often used as one-shot messages where no direct real-time interaction
between the Attester and the Verifier is possible.</t>
      <t>Note that the Verifier is a logical role that may be included in the
RA/CA product. In this case the Relying Party and Verifier collapse into a
single entity. The Verifier functionality can, however,
also be kept separate from the RA/CA functionality, such as a utility or
library provided by the device manufacturer. For example,
security concerns may require parsers of Evidence formats to be logically
or physically separated from the core CA functionality. The interface
by which the Relying Party passes Evidence to the Verifier and receives back
Attestation Results may be proprietary or standardized, but in any case is
out-of-scope for this document.</t>
      <figure anchor="fig-arch">
        <name>Architecture with Background Check Model.</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="536" viewBox="0 0 536 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,176 L 8,240" fill="none" stroke="black"/>
              <path d="M 112,176 L 112,240" fill="none" stroke="black"/>
              <path d="M 240,32 L 240,96" fill="none" stroke="black"/>
              <path d="M 240,176 L 240,240" fill="none" stroke="black"/>
              <path d="M 280,104 L 280,192" fill="none" stroke="black"/>
              <path d="M 312,96 L 312,168" fill="none" stroke="black"/>
              <path d="M 352,32 L 352,96" fill="none" stroke="black"/>
              <path d="M 368,176 L 368,240" fill="none" stroke="black"/>
              <path d="M 240,32 L 352,32" fill="none" stroke="black"/>
              <path d="M 240,96 L 352,96" fill="none" stroke="black"/>
              <path d="M 8,176 L 112,176" fill="none" stroke="black"/>
              <path d="M 240,176 L 272,176" fill="none" stroke="black"/>
              <path d="M 288,176 L 368,176" fill="none" stroke="black"/>
              <path d="M 112,192 L 232,192" fill="none" stroke="black"/>
              <path d="M 248,192 L 280,192" fill="none" stroke="black"/>
              <path d="M 8,240 L 112,240" fill="none" stroke="black"/>
              <path d="M 240,240 L 368,240" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="320,168 308,162.4 308,173.6 " fill="black" transform="rotate(90,312,168)"/>
              <polygon class="arrowhead" points="288,104 276,98.4 276,109.6 " fill="black" transform="rotate(270,280,104)"/>
              <polygon class="arrowhead" points="240,192 228,186.4 228,197.6 " fill="black" transform="rotate(0,232,192)"/>
              <g class="text">
                <text x="392" y="52">Compare</text>
                <text x="460" y="52">Evidence</text>
                <text x="300" y="68">Verifier</text>
                <text x="392" y="68">against</text>
                <text x="388" y="84">policy</text>
                <text x="236" y="132">Evidence</text>
                <text x="368" y="132">Attestation</text>
                <text x="348" y="148">Result</text>
                <text x="408" y="196">Compare</text>
                <text x="488" y="196">Attestation</text>
                <text x="60" y="212">Attester</text>
                <text x="172" y="212">Evidence</text>
                <text x="280" y="212">Relying</text>
                <text x="404" y="212">Result</text>
                <text x="464" y="212">against</text>
                <text x="40" y="228">(/w</text>
                <text x="76" y="228">HSM)</text>
                <text x="148" y="228">in</text>
                <text x="176" y="228">CSR</text>
                <text x="272" y="228">Party</text>
                <text x="328" y="228">(RA/CA)</text>
                <text x="404" y="228">policy</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
                              .-------------.
                              |             | Compare Evidence
                              |   Verifier  | against
                              |             | policy
                              '--------+----'
                                   ^   |
                          Evidence |   | Attestation
                                   |   | Result
                                   |   v
 .------------.               .----|----------.
 |            +-------------->|----'          | Compare Attestation
 |  Attester  |   Evidence    | Relying       | Result against
 |  (/w HSM)  |   in CSR      | Party (RA/CA) | policy
 '------------'               '---------------'
]]></artwork>
        </artset>
      </figure>
      <t>As discussed in RFC 9334, different security and privacy aspects need to be
considered. For example, Evidence may need to be protected against replay and
Section 10 of RFC 9334 lists approach for offering freshness. There are also
concerns about the exposure of persistent identifiers by utilizing attestation
technology, which are discussed in Section 11 of RFC 9334. Finally, the keying
material used by the Attester needs to be protected against unauthorized access,
and against signing arbitrary content that originated from outside the device.
This aspect is described in Section 12 of RFC 9334. Most of these aspects are,
however, outside the scope of this specification but relevant for use with a
given attestation technology. The focus of this specification is on the
transport of Evidence from the Attester to the Relying Party via existing
CSR messages.</t>
    </section>
    <section anchor="information-model">
      <name>Information Model</name>
      <section anchor="interaction-with-an-hsm">
        <name>Interaction with an HSM</name>
        <t>This specification is intended to be applicable both in cases where the CSR
is constructed internally or externally to the attesting environment, from the
point of view of the calling application.</t>
        <t>Cases where the CSR is generated internally to the attesting environment
are straightforward: the HSM generates and embeds the Evidence and the corresponding
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, consider a CSR generated by
a popular crypto library about a subject key stored on a PKCS#11 <xref target="PKCS11"/> device.</t>
        <t>As an example, assuming that the HSM is, or contains, the attesting environment, and
some cryptographic library is assembling a CSR by interacting with the HSM over some
network protocol, then the interaction would conceptually be:</t>
        <figure anchor="fig-csr-client-p11">
          <name>Example interaction between CSR generator and HSM.</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="384" viewBox="0 0 384 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,176 L 8,208" fill="none" stroke="black"/>
                <path d="M 160,32 L 160,80" fill="none" stroke="black"/>
                <path d="M 184,176 L 184,208" fill="none" stroke="black"/>
                <path d="M 200,88 L 200,304" fill="none" stroke="black"/>
                <path d="M 240,32 L 240,80" fill="none" stroke="black"/>
                <path d="M 328,32 L 328,80" fill="none" stroke="black"/>
                <path d="M 352,88 L 352,304" fill="none" stroke="black"/>
                <path d="M 376,32 L 376,80" fill="none" stroke="black"/>
                <path d="M 160,32 L 240,32" fill="none" stroke="black"/>
                <path d="M 328,32 L 376,32" fill="none" stroke="black"/>
                <path d="M 160,80 L 240,80" fill="none" stroke="black"/>
                <path d="M 328,80 L 376,80" fill="none" stroke="black"/>
                <path d="M 208,128 L 344,128" fill="none" stroke="black"/>
                <path d="M 208,160 L 344,160" fill="none" stroke="black"/>
                <path d="M 8,176 L 184,176" fill="none" stroke="black"/>
                <path d="M 8,208 L 184,208" fill="none" stroke="black"/>
                <path d="M 208,256 L 344,256" fill="none" stroke="black"/>
                <path d="M 208,288 L 344,288" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="352,256 340,250.4 340,261.6 " fill="black" transform="rotate(0,344,256)"/>
                <polygon class="arrowhead" points="352,128 340,122.4 340,133.6 " fill="black" transform="rotate(0,344,128)"/>
                <polygon class="arrowhead" points="216,288 204,282.4 204,293.6 " fill="black" transform="rotate(180,208,288)"/>
                <polygon class="arrowhead" points="216,160 204,154.4 204,165.6 " fill="black" transform="rotate(180,208,160)"/>
                <g class="text">
                  <text x="196" y="52">Crypto</text>
                  <text x="352" y="52">HSM</text>
                  <text x="200" y="68">Library</text>
                  <text x="264" y="116">getEvidence()</text>
                  <text x="32" y="196">CSR</text>
                  <text x="56" y="196">=</text>
                  <text x="120" y="196">assembleCSR()</text>
                  <text x="192" y="196">-</text>
                  <text x="248" y="244">sign(CSR)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                   +---------+          +-----+
                   | Crypto  |          | HSM |
                   | Library |          |     |
                   +---------+          +-----+
                        |                  |
                        | getEvidence()    |
                        |----------------->|
                        |                  |
                        |<-----------------|
+---------------------+ |                  |
| CSR = assembleCSR() |-|                  |
+---------------------+ |                  |
                        |                  |
                        | sign(CSR)        |
                        |----------------->|
                        |                  |
                        |<-----------------|
                        |                  |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="implementation-strategies">
        <name>Implementation Strategies</name>
        <t>To support a number of different use cases for the transmission of
Evidence in a CSR (together with certification paths) the structure
shown in <xref target="fig-info-model"/> is used.</t>
        <t>On a high-level, the structure can be explained as follows:
A PKCS#10 attribute or a CRMF extension contains one or more
EvidenceBundle structures. Each EvidenceBundle contains one or more
EvidenceStatement structures as well as one or more
CertificateAlternatives which enable to carry various format of
certificates.</t>
        <figure anchor="fig-info-model">
          <name>Information Model for CSR Evidence Conveyance.</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="488" viewBox="0 0 488 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
                <path d="M 8,256 L 8,288" fill="none" stroke="black"/>
                <path d="M 80,96 L 80,256" fill="none" stroke="black"/>
                <path d="M 160,144 L 160,256" fill="none" stroke="black"/>
                <path d="M 176,32 L 176,96" fill="none" stroke="black"/>
                <path d="M 176,256 L 176,288" fill="none" stroke="black"/>
                <path d="M 272,128 L 272,224" fill="none" stroke="black"/>
                <path d="M 272,256 L 272,336" fill="none" stroke="black"/>
                <path d="M 432,256 L 432,336" fill="none" stroke="black"/>
                <path d="M 480,128 L 480,224" fill="none" stroke="black"/>
                <path d="M 8,32 L 176,32" fill="none" stroke="black"/>
                <path d="M 8,96 L 176,96" fill="none" stroke="black"/>
                <path d="M 272,128 L 480,128" fill="none" stroke="black"/>
                <path d="M 160,144 L 272,144" fill="none" stroke="black"/>
                <path d="M 272,160 L 480,160" fill="none" stroke="black"/>
                <path d="M 272,224 L 480,224" fill="none" stroke="black"/>
                <path d="M 8,256 L 176,256" fill="none" stroke="black"/>
                <path d="M 272,256 L 432,256" fill="none" stroke="black"/>
                <path d="M 176,272 L 272,272" fill="none" stroke="black"/>
                <path d="M 8,288 L 176,288" fill="none" stroke="black"/>
                <path d="M 272,288 L 432,288" fill="none" stroke="black"/>
                <path d="M 272,336 L 432,336" fill="none" stroke="black"/>
                <g class="text">
                  <text x="56" y="52">PKCS#10</text>
                  <text x="100" y="52">or</text>
                  <text x="132" y="52">CRMF</text>
                  <text x="64" y="68">Attribute</text>
                  <text x="116" y="68">or</text>
                  <text x="64" y="84">Extension</text>
                  <text x="180" y="132">(1</text>
                  <text x="204" y="132">or</text>
                  <text x="240" y="132">more)</text>
                  <text x="376" y="148">CertificateAlternatives</text>
                  <text x="328" y="180">Certificate</text>
                  <text x="388" y="180">OR</text>
                  <text x="320" y="196">TypedCert</text>
                  <text x="388" y="196">OR</text>
                  <text x="336" y="212">TypedFlatCert</text>
                  <text x="28" y="228">(1</text>
                  <text x="52" y="228">or</text>
                  <text x="48" y="244">more)</text>
                  <text x="220" y="244">(1</text>
                  <text x="244" y="244">or</text>
                  <text x="240" y="260">more)</text>
                  <text x="84" y="276">EvidenceBundle</text>
                  <text x="352" y="276">EvidenceStatement</text>
                  <text x="300" y="308">Type</text>
                  <text x="320" y="324">Statement</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
 +--------------------+
 |  PKCS#10 or CRMF   |
 |  Attribute or      |
 |  Extension         |
 +--------+-----------+
          |
          |           (1 or more) +-------------------------+
          |         +-------------+ CertificateAlternatives |
          |         |             +-------------------------+
          |         |             | Certificate OR          |
          |         |             | TypedCert   OR          |
          |         |             | TypedFlatCert           |
   (1 or  |         |             +-------------------------+
    more) |         |      (1 or
 +--------+---------+-+     more) +-------------------+
 |  EvidenceBundle    +-----------+ EvidenceStatement |
 +--------------------+           +-------------------+
                                  | Type              |
                                  | Statement         |
                                  +-------------------+
]]></artwork>
          </artset>
        </figure>
        <t>The following use cases are supported:</t>
        <t>Single Attester, which only distributes Evidence without any certification paths,
i.e. the Verifier is assumed to be in possession of the certification paths already
or there is no certification paths because the Verifier directly trusts the Attester key.
As a result a single EvidenceBundle is included
in a CSR that contains a single EvidenceStatement without the CertificateAlternatives
structure. <xref target="fig-single-attester"/> shows this use case.</t>
        <figure anchor="fig-single-attester">
          <name>Use Case 1: Single Attester without Certification Path.</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="184" viewBox="0 0 184 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
                <path d="M 176,32 L 176,96" fill="none" stroke="black"/>
                <path d="M 8,32 L 176,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 176,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 176,96" fill="none" stroke="black"/>
                <g class="text">
                  <text x="84" y="52">EvidenceBundle</text>
                  <text x="88" y="84">EvidenceStatement</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
  +--------------------+
  |  EvidenceBundle    |
  +--------------------+
  | EvidenceStatement  |
  +--------------------+
]]></artwork>
          </artset>
        </figure>
        <t>A single Attester, which shares Evidence together with a certification path.
The CSR conveys a single EvidenceBundle with a single EvidenceStatement
and a single CertificateAlternatives structure. <xref target="fig-single-attester-with-path"/> shows
this use case.</t>
        <figure anchor="fig-single-attester-with-path">
          <name>Use Case 2: Single Attester with Certification Path.</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="144" width="224" viewBox="0 0 224 144" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,32 L 8,112" fill="none" stroke="black"/>
                <path d="M 216,32 L 216,112" fill="none" stroke="black"/>
                <path d="M 8,32 L 216,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 216,64" fill="none" stroke="black"/>
                <path d="M 8,112 L 216,112" fill="none" stroke="black"/>
                <g class="text">
                  <text x="84" y="52">EvidenceBundle</text>
                  <text x="88" y="84">EvidenceStatement</text>
                  <text x="112" y="100">CertificateAlternatives</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
 +-------------------------+
 |  EvidenceBundle         |
 +-------------------------+
 | EvidenceStatement       |
 | CertificateAlternatives |
 +-------------------------+
]]></artwork>
          </artset>
        </figure>
        <t>In a Composite Device, which contains multiple Attesters, a collection of Evidence
statements is obtained. Imagine that each Attester returns its Evidence together with a
certification path. As a result, multiple EvidenceBundle structures, each carrying
an EvidenceStatement and the corresponding CertificateAlternative structure with the
certification path as provided by each Attester, are included in the CSR.
This may result in certificates being duplicated across multiple EvidenceBundles.
This approach does not require any processing capabilities
by a lead Attester since the information is merely forwarded. <xref target="fig-multiple-attesters"/>
shows this use case.</t>
        <figure anchor="fig-multiple-attesters">
          <name>Use Case 3: Multiple Attesters in Composite Device.</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="224" width="336" viewBox="0 0 336 224" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,32 L 8,192" fill="none" stroke="black"/>
                <path d="M 216,32 L 216,192" fill="none" stroke="black"/>
                <path d="M 8,32 L 216,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 216,64" fill="none" stroke="black"/>
                <path d="M 8,112 L 216,112" fill="none" stroke="black"/>
                <path d="M 8,144 L 216,144" fill="none" stroke="black"/>
                <path d="M 8,192 L 216,192" fill="none" stroke="black"/>
                <path d="M 216,112 L 236,152" fill="none" stroke="black"/>
                <path d="M 216,32 L 236,72" fill="none" stroke="black"/>
                <path d="M 216,112 L 236,72" fill="none" stroke="black"/>
                <path d="M 216,192 L 236,152" fill="none" stroke="black"/>
                <g class="text">
                  <text x="84" y="52">EvidenceBundle</text>
                  <text x="160" y="52">(1)</text>
                  <text x="276" y="68">Provided</text>
                  <text x="324" y="68">by</text>
                  <text x="88" y="84">EvidenceStatement</text>
                  <text x="276" y="84">Attester</text>
                  <text x="320" y="84">1</text>
                  <text x="112" y="100">CertificateAlternatives</text>
                  <text x="84" y="132">EvidenceBundle</text>
                  <text x="160" y="132">(2)</text>
                  <text x="276" y="148">Provided</text>
                  <text x="324" y="148">by</text>
                  <text x="88" y="164">EvidenceStatement</text>
                  <text x="276" y="164">Attester</text>
                  <text x="320" y="164">2</text>
                  <text x="112" y="180">CertificateAlternatives</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
  +-------------------------+
  |  EvidenceBundle (1)     |\
  +-------------------------+ \ Provided by
  | EvidenceStatement       | / Attester 1
  | CertificateAlternatives |/
  +-------------------------+
  |  EvidenceBundle (2)     |\
  +-------------------------+ \ Provided by
  | EvidenceStatement       | / Attester 2
  | CertificateAlternatives |/
  +-------------------------+
]]></artwork>
          </artset>
        </figure>
        <t>In the last scenario, we also assume a Composite Device with additional processing
capabilities of the Leader Attester, which parses the certification path provided by
all Attesters in the device and removes redundant certificate information. The
benefit of this approach is the reduced transmission overhead. There are several
implementation strategies and we show two in <xref target="fig-multiple-attesters-optimized"/>.</t>
        <figure anchor="fig-multiple-attesters-optimized">
          <name>Use Case 4: Multiple Attesters in Composite Device (with Optimization).</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="544" width="472" viewBox="0 0 472 544" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 16,320 L 16,528" fill="none" stroke="black"/>
                <path d="M 144,64 L 144,144" fill="none" stroke="black"/>
                <path d="M 144,176 L 144,256" fill="none" stroke="black"/>
                <path d="M 264,320 L 264,528" fill="none" stroke="black"/>
                <path d="M 352,64 L 352,144" fill="none" stroke="black"/>
                <path d="M 352,176 L 352,256" fill="none" stroke="black"/>
                <path d="M 144,64 L 352,64" fill="none" stroke="black"/>
                <path d="M 144,96 L 352,96" fill="none" stroke="black"/>
                <path d="M 112,128 L 136,128" fill="none" stroke="black"/>
                <path d="M 144,144 L 352,144" fill="none" stroke="black"/>
                <path d="M 144,176 L 352,176" fill="none" stroke="black"/>
                <path d="M 144,208 L 352,208" fill="none" stroke="black"/>
                <path d="M 112,240 L 136,240" fill="none" stroke="black"/>
                <path d="M 144,256 L 352,256" fill="none" stroke="black"/>
                <path d="M 16,320 L 264,320" fill="none" stroke="black"/>
                <path d="M 16,352 L 264,352" fill="none" stroke="black"/>
                <path d="M 16,528 L 264,528" fill="none" stroke="black"/>
                <path d="M 352,176 L 372,216" fill="none" stroke="black"/>
                <path d="M 352,64 L 372,104" fill="none" stroke="black"/>
                <path d="M 352,144 L 372,104" fill="none" stroke="black"/>
                <path d="M 352,256 L 372,216" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="144,240 132,234.4 132,245.6 " fill="black" transform="rotate(0,136,240)"/>
                <polygon class="arrowhead" points="144,128 132,122.4 132,133.6 " fill="black" transform="rotate(0,136,128)"/>
                <g class="text">
                  <text x="60" y="36">Implementation</text>
                  <text x="156" y="36">strategy</text>
                  <text x="212" y="36">(4a)</text>
                  <text x="220" y="84">EvidenceBundle</text>
                  <text x="296" y="84">(1)</text>
                  <text x="72" y="100">Certification</text>
                  <text x="412" y="100">Provided</text>
                  <text x="460" y="100">by</text>
                  <text x="36" y="116">Path</text>
                  <text x="64" y="116">+</text>
                  <text x="224" y="116">EvidenceStatement</text>
                  <text x="412" y="116">Attester</text>
                  <text x="456" y="116">1</text>
                  <text x="60" y="132">End-Entity</text>
                  <text x="248" y="132">CertificateAlternatives</text>
                  <text x="64" y="148">Certificate</text>
                  <text x="228" y="164">....</text>
                  <text x="220" y="196">EvidenceBundle</text>
                  <text x="296" y="196">(n)</text>
                  <text x="412" y="212">Provided</text>
                  <text x="460" y="212">by</text>
                  <text x="60" y="228">End-Entity</text>
                  <text x="224" y="228">EvidenceStatement</text>
                  <text x="412" y="228">Attester</text>
                  <text x="456" y="228">n</text>
                  <text x="64" y="244">Certificate</text>
                  <text x="248" y="244">CertificateAlternatives</text>
                  <text x="60" y="292">Implementation</text>
                  <text x="156" y="292">strategy</text>
                  <text x="212" y="292">(4b)</text>
                  <text x="92" y="340">EvidenceBundle</text>
                  <text x="96" y="372">EvidenceStatement</text>
                  <text x="184" y="372">(1)</text>
                  <text x="96" y="388">...</text>
                  <text x="96" y="404">EvidenceStatement</text>
                  <text x="184" y="404">(n)</text>
                  <text x="120" y="420">CertificateAlternatives</text>
                  <text x="224" y="420">{</text>
                  <text x="56" y="436">End</text>
                  <text x="100" y="436">Entity</text>
                  <text x="176" y="436">Certificate</text>
                  <text x="240" y="436">(1)</text>
                  <text x="96" y="452">...</text>
                  <text x="56" y="468">End</text>
                  <text x="100" y="468">Entity</text>
                  <text x="176" y="468">Certificate</text>
                  <text x="240" y="468">(n)</text>
                  <text x="84" y="484">&lt;Remainder</text>
                  <text x="140" y="484">of</text>
                  <text x="168" y="484">the</text>
                  <text x="104" y="500">Certification</text>
                  <text x="184" y="500">Path&gt;</text>
                  <text x="32" y="516">}</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
Implementation strategy (4a)

                 +-------------------------+
                 |  EvidenceBundle (1)     |\
  Certification  +-------------------------+ \ Provided by
  Path +         | EvidenceStatement       | / Attester 1
  End-Entity --->| CertificateAlternatives |/
  Certificate    +-------------------------+
                          ....
                 +-------------------------+
                 |  EvidenceBundle (n)     |\
                 +-------------------------+ \ Provided by
  End-Entity     | EvidenceStatement       | / Attester n
  Certificate--->| CertificateAlternatives |/
                 +-------------------------+

Implementation strategy (4b)

 +------------------------------+
 |  EvidenceBundle              |
 +------------------------------+
 | EvidenceStatement (1)        |
 |        ...                   |
 | EvidenceStatement (n)        |
 | CertificateAlternatives {    |
 |   End Entity Certificate (1) |
 |        ...                   |
 |   End Entity Certificate (n) |
 |   <Remainder of the          |
 |    Certification Path>       |
 | }                            |
 +------------------------------+
]]></artwork>
          </artset>
        </figure>
        <t>In implementation strategy (4a) we assume that each Attester is provisioned with
a unique end-entity certificate. Hence, the certification path will at least differ
with respect to the end-entity certificates.
The Lead Attester will therefore create multiple EvidenceBundle structures, each
will carry an EvidenceStatement followed by a certification path in
the CertificateAlternative structures containing most likely only the end-entity
certificate. The shared certification path is carried in the first entry of the
EvidenceBundle sequence to allow path validation to take place immediately after
processing the first structure. This implementation strategy may
place extra burden on the Relying Party to parse EvidenceBundles and
reconstruct certification path if the Verifier requires each
EvidenceStatement to be accompanied with a complete certification path.</t>
        <t>Implementation strategy (4b), as an alternative, requires the Lead Attester
to merge all certification paths into a single EvidenceBundle containing a single
de-duplicated sequence of CertificateAlternatives structures. This means that each
EvidenceBundle is self-contained and any EvidenceStatement can be verified using
only the sequence of CertificateAlternatives in its bundle, but Verifiers will have
to do proper certification path building since the sequence of CertificateAlternatives
is now a cert bag and not a certification path. This implementation strategy may
place extra burden on the Attester in order to allow the Relying Party
to treat the Evidence and Certificates as opaque content. It also may place
extra burden on the Verifier since this implementation strategy requires it to be able to
perform X.509 path building over a bag of certificates that may be out of
order or contain extraneous certificates.</t>
        <t>Note: This specification does not mandate optimizing certification path since
there is a trade-off between the Attester implementation complexity and the
transmission overhead.</t>
      </section>
    </section>
    <section anchor="asn1-elements">
      <name>ASN.1 Elements</name>
      <section anchor="object-identifiers">
        <name>Object Identifiers</name>
        <t>We reference <tt>id-pkix</tt> and <tt>id-aa</tt>, both defined in <xref target="RFC5912"/>.</t>
        <t>We define:</t>
        <artwork><![CDATA[
-- Arc for Evidence types
id-ata OBJECT IDENTIFIER ::= { id-pkix (TBD1) }
]]></artwork>
      </section>
      <section anchor="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 <tt>EvidenceBundle</tt> which each contain
one or more Evidence statements of a type <tt>EvidenceStatement</tt> along with
an optional certification path.
This structure allows for grouping Evidence statements that share a
certification path.</t>
        <artwork><![CDATA[
EVIDENCE-STATEMENT ::= TYPE-IDENTIFIER

EvidenceStatementSet EVIDENCE-STATEMENT ::= {
   ... -- None defined in this document --
}
]]></artwork>
        <t>This is a mapping and ASN.1 Types for Evidence Statements to the OIDs
that identify them. These mappings are are used to construct
or parse EvidenceStatements. These would typically be Evidence Statement
formats defined in other IETF standards, defined by other standards bodies,
or vendor proprietary formats along with the OIDs that identify them.</t>
        <t>This list is left empty in this document. However, implementers should
populate it with the formats that they wish to support.</t>
        <artwork><![CDATA[
EvidenceHint ::= CHOICE {
     rfc822Name [0] IA5String,
     dNSName    [1] IA5String,
     uri        [2] IA5String,
     text       [3] UTF8String
}

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

EvidenceStatement ::= SEQUENCE {
   type   EVIDENCE-STATEMENT.&id({EvidenceStatementSet}),
   stmt   EVIDENCE-STATEMENT.&Type({EvidenceStatementSet}{@type}),
   hint   EvidenceHint OPTIONAL
}
]]></artwork>
        <t>The type is on OID indicating the format of the data contained in stmt.</t>
        <t>The hint is intended for an Attester to indicate to the Relying Party (RP)
which Verifier should be invoked to parse this statement. In many cases,
the type OID will already uniquely indicate which Verifier to invoke;
for example because the OID indicates a proprietary Evidence format for
which the RP has corresponding proprietary Verifier. However,
in some cases it may still be ambiguous, or the type may indicate
another layer of conceptual message wrapping in which case it is helpful
to the RP to bring this hint outside of the statement.
It is assumed that the RP must be pre-configured with a list of trusted
Verifiers and that the contents of this hint can be used to look up
the correct Verifier. Under no circumstances must the RP be tricked into
contacting an unknown and untrusted Verifier since the returned Attestation
Result must not be relied on. The format and contents of the hint are out of
scope of this document.</t>
        <artwork><![CDATA[
EvidenceBundles ::= SEQUENCE SIZE (1..MAX) OF EvidenceBundle

EvidenceBundle ::= SEQUENCE
{
  evidence EvidenceStatements,
  certs SEQUENCE SIZE (1..MAX) OF CertificateAlternatives OPTIONAL
}

id-aa-evidence OBJECT IDENTIFIER ::= { id-aa TBDAA }

-- For PKCS#10
attr-evidence ATTRIBUTE ::= {
  TYPE EvidenceBundles
  IDENTIFIED BY id-aa-evidence
}

-- For CRMF
ext-evidence EXTENSION ::= {
  SYNTAX EvidenceBundles
  IDENTIFIED BY id-aa-evidence
}
]]></artwork>
        <t>The Extension variant is intended only for use within CRMF CSRs and <bcp14>MUST NOT</bcp14> be used within X.509 certificates due to the privacy implications of publishing Evidence about the end entity's hardware environment. See <xref target="security-considerations"/> for more discussion.</t>
        <t>The <tt>certs</tt> contains a set of certificates that
may be needed to validate the contents of an Evidence statement
contained in <tt>evidence</tt>. The set of certificates should contain
the object that contains the public key needed to directly validate the
<tt>evidence</tt>. The remaining elements should chain that data back to
an agreed upon trust anchor used for attestation. No order is implied, it is
up to the Attester and its Verifier to agree on both the order and format
of certificates contained in <tt>certs</tt>.</t>
        <t>A CSR <bcp14>MAY</bcp14> contain one or more instances of <tt>attr-evidence</tt> or <tt>ext-evidence</tt>.
This means that the <tt>SEQUENCE OF EvidenceBundle</tt> is redundant with the
ability to carry multiple <tt>attr-evidence</tt> or <tt>ext-evidence</tt> at the CSR level;
either mechanism <bcp14>MAY</bcp14> be used for carrying multiple Evidence bundles.</t>
      </section>
      <section anchor="certificatealternatives">
        <name>CertificateAlternatives</name>
        <t>This is an ASN.1 CHOICE construct used to represent an encoding of a
broad variety of certificate types.</t>
        <artwork><![CDATA[
CertificateAlternatives ::=
   CHOICE {
      cert          [0] Certificate,
      typedCert     [1] TypedCert,
      typedFlatCert [2] TypedFlatCert,
      ...
   }
]]></artwork>
        <t>"Certificate" is a standard X.509 certificate that <bcp14>MUST</bcp14> be compliant
with RFC 5280.  Enforcement of this constraint is left to the relying
parties.</t>
        <t>"TypedCert" is an ASN.1 construct that has the characteristics of a
certificate, but is not encoded as an X.509 certificate.  The
certType Field (below) indicates how to interpret the certBody field.  While
it is possible to carry any type of data in this structure, it's
intended the content field include data for at least one public key
formatted as a SubjectPublicKeyInfo (see <xref target="RFC5912"/>).</t>
        <artwork><![CDATA[
TYPED-CERT ::= TYPE-IDENTIFIER

CertType ::= TYPED-CERT.&id

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

TypedCertSet TYPED-CERT ::= {
   ... -- None defined in this document --
      }
]]></artwork>
        <t>"TypedFlatCert" is a certificate that does not have a valid ASN.1
encoding.
These are often compact or implicit certificates used by smart cards.
certType indicates the format of the data in the
certBody field, and ideally refers to a published specification.</t>
        <artwork><![CDATA[
TypedFlatCert ::= SEQUENCE {
    certType OBJECT IDENTIFIER,
    certBody OCTET STRING
}
]]></artwork>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to open two new registries, allocate a value
from the "SMI Security for PKIX Module Identifier" registry for the
included ASN.1 module, and allocate values from "SMI Security for
S/MIME Attributes" to identify two Attributes defined within.</t>
      <section anchor="module-registration-smi-security-for-pkix-module-identifier">
        <name>Module Registration - SMI Security for PKIX Module Identifier</name>
        <ul spacing="normal">
          <li>
            <t>Decimal: IANA Assigned - <strong>Replace TBDMOD</strong></t>
          </li>
          <li>
            <t>Description: CSR-ATTESTATION-2023 - id-mod-pkix-attest-01</t>
          </li>
          <li>
            <t>References: This Document</t>
          </li>
        </ul>
      </section>
      <section anchor="object-identifier-registrations-smi-security-for-smime-attributes">
        <name>Object Identifier Registrations - SMI Security for S/MIME Attributes</name>
        <ul spacing="normal">
          <li>
            <t>Evidence Statement
            </t>
            <ul spacing="normal">
              <li>
                <t>Decimal: IANA Assigned - Replace <strong>TBDAA</strong></t>
              </li>
              <li>
                <t>Description: id-aa-evidence</t>
              </li>
              <li>
                <t>References: This Document</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="smi-security-for-pkix-evidence-statement-formats-registry">
        <name>"SMI Security for PKIX Evidence Statement Formats" Registry</name>
        <t>IANA is asked to create a registry for Evidence Statement Formats within
the SMI-numbers registry, allocating an assignment from id-pkix ("SMI
Security for PKIX" Registry) for the purpose.</t>
        <ul spacing="normal">
          <li>
            <t>Decimal: IANA Assigned - <strong>replace TBD1</strong></t>
          </li>
          <li>
            <t>Description: id-ata</t>
          </li>
          <li>
            <t>References: This document</t>
          </li>
          <li>
            <t>Initial contents: None</t>
          </li>
          <li>
            <t>Registration Regime: Specification Required.
Document must specify an EVIDENCE-STATEMENT definition to which this
Object Identifier shall be bound.</t>
          </li>
        </ul>
        <t>Columns:</t>
        <ul spacing="normal">
          <li>
            <t>Decimal: The subcomponent under id-ata</t>
          </li>
          <li>
            <t>Description: Begins with id-ata</t>
          </li>
          <li>
            <t>References: RFC or other document</t>
          </li>
        </ul>
      </section>
      <section anchor="attestation-evidence-oid-registry">
        <name>Attestation Evidence OID Registry</name>
        <t>IANA is asked to create a registry that helps developers to find
OID/Evidence mappings.</t>
        <t>Registration requests are evaluated using the criteria described in
the registration template below after a three-week review period on
the [[TBD]] mailing list, with the advice of one or more Designated
Experts <xref target="RFC8126"/>.  However, to allow for the allocation of values
prior to publication, the Designated Experts may approve registration
once they are satisfied that such a specification will be published.</t>
        <t>Registration requests sent to the mailing list for review should use
an appropriate subject (e.g., "Request to register attestation
evidence: example").</t>
        <t>IANA must only accept registry updates from the Designated Experts
and should direct all requests for registration to the review mailing
list.</t>
        <section anchor="registration-template">
          <name>Registration Template</name>
          <t>The registry has the following columns:</t>
          <ul spacing="normal">
            <li>
              <t>OID: The OID number, which has already been allocated. IANA does
not allocate OID numbers for use with this registry.</t>
            </li>
            <li>
              <t>Description: Brief description of the use of the Evidence and the
registration of the OID.</t>
            </li>
            <li>
              <t>Reference(s): Reference to the document or documents that register
the OID for use with a specific attestation technology, preferably
including URIs that can be used to retrieve copies of the documents.
An indication of the relevant sections may also be included but is not
required.</t>
            </li>
            <li>
              <t>Change Controller: For Standards Track RFCs, list the "IESG".  For
others, give the name of the responsible party. In most cases the
third party requesting registration in this registry will also be the
party that registered the OID.</t>
            </li>
          </ul>
        </section>
        <section anchor="initial-registry-contents">
          <name>Initial Registry Contents</name>
          <t>The initial registry contents is shown in the table below. It lists one
entry for the Conceptual Message Wrapper (CMW) <xref target="I-D.ietf-rats-msg-wrap"/>.</t>
          <table anchor="tab-ae-reg">
            <name>Initial Contents of the Attestation Evidence OID Registry</name>
            <thead>
              <tr>
                <th align="left">OID</th>
                <th align="left">Description</th>
                <th align="left">Reference(s)</th>
                <th align="left">Change Controller</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">2 23 133 5 4 9</td>
                <td align="left">Conceptual Message Wrapper</td>
                <td align="left">
                  <xref target="TCGDICE1.1"/></td>
                <td align="left">TCG</td>
              </tr>
            </tbody>
          </table>
          <t>EDNOTE: This is currently under debate with our contacts at TCG about which OID they want used for the initial registry.</t>
          <t>The current registry values can be retrieved from the IANA online website.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>A PKCS#10 or CRMF Certification Request message typically consists of a
distinguished name, a public key, and optionally a set of attributes,
collectively signed by the entity requesting certification.
In general usage, the private key used to sign the CSR <bcp14>MUST</bcp14> be different from the
Attesting Key utilized to sign Evidence about the Target
Environment, though exceptions <bcp14>MAY</bcp14> be made where CSRs and Evidence are involved in
bootstrapping the Attesting Key.
To demonstrate that the private
key applied to sign the CSR is generated, and stored in a secure
environment that has controls to prevent theft or misuse (including
being non-exportable / non-recoverable), the Attesting Environment
has to collect claims about this secure environment (or Target
Environment, as shown in <xref target="fig-attester"/>).</t>
      <t><xref target="fig-attester"/> shows the interaction inside an Attester. The
Attesting Environment, which is provisioned with an Attestation Key,
retrieves claims about the Target Environment. The Target
Environment offers key generation, storage and usage, which it
makes available to services. The Attesting Environment collects
these claims about the Target Environment and signs them and
exports Evidence for use in remote attestation via a CSR.</t>
      <figure anchor="fig-attester">
        <name>Interaction between Attesting and Target Environment</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="576" width="328" viewBox="0 0 328 576" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,240 L 8,544" fill="none" stroke="black"/>
              <path d="M 40,80 L 40,144" fill="none" stroke="black"/>
              <path d="M 48,288 L 48,352" fill="none" stroke="black"/>
              <path d="M 96,152 L 96,280" fill="none" stroke="black"/>
              <path d="M 120,152 L 120,280" fill="none" stroke="black"/>
              <path d="M 120,448 L 120,512" fill="none" stroke="black"/>
              <path d="M 152,32 L 152,80" fill="none" stroke="black"/>
              <path d="M 168,352 L 168,440" fill="none" stroke="black"/>
              <path d="M 200,152 L 200,280" fill="none" stroke="black"/>
              <path d="M 232,448 L 232,512" fill="none" stroke="black"/>
              <path d="M 240,280 L 240,352" fill="none" stroke="black"/>
              <path d="M 264,80 L 264,144" fill="none" stroke="black"/>
              <path d="M 304,240 L 304,472" fill="none" stroke="black"/>
              <path d="M 304,488 L 304,544" fill="none" stroke="black"/>
              <path d="M 320,112 L 320,480" fill="none" stroke="black"/>
              <path d="M 40,80 L 264,80" fill="none" stroke="black"/>
              <path d="M 272,112 L 320,112" fill="none" stroke="black"/>
              <path d="M 40,144 L 264,144" fill="none" stroke="black"/>
              <path d="M 8,240 L 88,240" fill="none" stroke="black"/>
              <path d="M 128,240 L 192,240" fill="none" stroke="black"/>
              <path d="M 208,240 L 304,240" fill="none" stroke="black"/>
              <path d="M 48,288 L 240,288" fill="none" stroke="black"/>
              <path d="M 48,352 L 240,352" fill="none" stroke="black"/>
              <path d="M 120,448 L 232,448" fill="none" stroke="black"/>
              <path d="M 72,480 L 112,480" fill="none" stroke="black"/>
              <path d="M 232,480 L 320,480" fill="none" stroke="black"/>
              <path d="M 120,512 L 232,512" fill="none" stroke="black"/>
              <path d="M 8,544 L 304,544" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="280,112 268,106.4 268,117.6 " fill="black" transform="rotate(180,272,112)"/>
              <polygon class="arrowhead" points="208,280 196,274.4 196,285.6 " fill="black" transform="rotate(90,200,280)"/>
              <polygon class="arrowhead" points="208,152 196,146.4 196,157.6 " fill="black" transform="rotate(270,200,152)"/>
              <polygon class="arrowhead" points="176,440 164,434.4 164,445.6 " fill="black" transform="rotate(90,168,440)"/>
              <polygon class="arrowhead" points="160,32 148,26.4 148,37.6 " fill="black" transform="rotate(270,152,32)"/>
              <polygon class="arrowhead" points="128,152 116,146.4 116,157.6 " fill="black" transform="rotate(270,120,152)"/>
              <polygon class="arrowhead" points="120,480 108,474.4 108,485.6 " fill="black" transform="rotate(0,112,480)"/>
              <polygon class="arrowhead" points="104,280 92,274.4 92,285.6 " fill="black" transform="rotate(90,96,280)"/>
              <g class="text">
                <text x="168" y="52">CSR</text>
                <text x="204" y="52">with</text>
                <text x="188" y="68">Evidence</text>
                <text x="112" y="116">CSR</text>
                <text x="160" y="116">Library</text>
                <text x="32" y="180">Private</text>
                <text x="156" y="180">Public</text>
                <text x="248" y="180">Signature</text>
                <text x="16" y="196">Key</text>
                <text x="144" y="196">Key</text>
                <text x="248" y="196">Operation</text>
                <text x="44" y="212">Generation</text>
                <text x="156" y="212">Export</text>
                <text x="108" y="244">--</text>
                <text x="268" y="260">Attester</text>
                <text x="256" y="276">(HSM)</text>
                <text x="84" y="308">Target</text>
                <text x="160" y="308">Environment</text>
                <text x="80" y="324">(with</text>
                <text x="120" y="324">key</text>
                <text x="184" y="324">generation,</text>
                <text x="88" y="340">storage</text>
                <text x="136" y="340">and</text>
                <text x="180" y="340">usage)</text>
                <text x="128" y="388">Collect</text>
                <text x="132" y="404">Claims</text>
                <text x="56" y="468">Attestation</text>
                <text x="168" y="468">Attesting</text>
                <text x="48" y="484">Key</text>
                <text x="176" y="484">Environment</text>
                <text x="172" y="500">(Firmware)</text>
                <text x="268" y="500">Evidence</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
                   ^
                   |CSR with
                   |Evidence
     .-------------+-------------.
     |                           |
     |       CSR Library         |<-----+
     |                           |      |
     '---------------------------'      |
            |  ^         ^              |
 Private    |  | Public  | Signature    |
 Key        |  | Key     | Operation    |
 Generation |  | Export  |              |
            |  |         |              |
 .----------|--|---------|------------. |
 |          |  |         |    Attester| |
 |          v  |         v    (HSM)   | |
 |    .-----------------------.       | |
 |    | Target Environment    |       | |
 |    | (with key generation, |       | |
 |    | storage and usage)    |       | |
 |    '--------------+--------'       | |
 |                   |                | |
 |           Collect |                | |
 |            Claims |                | |
 |                   |                | |
 |                   v                | |
 |             .-------------.        | |
 |Attestation  | Attesting   |        | |
 |   Key ----->| Environment +----------+
 |             | (Firmware)  |Evidence|
 |             '-------------'        |
 |                                    |
 '------------------------------------'
]]></artwork>
        </artset>
      </figure>
      <t><xref target="fig-attester"/> places the CSR library outside the Attester, which
is a valid architecture for certificate enrollment.
The CSR library may also be located
inside the trusted computing base. Regardless of the placement
of the CSR library, an Attesting Environment <bcp14>MUST</bcp14> be able to collect
claims about the Target Environment such that statements about
the storage of the keying material can be made.
For the Verifier, the provided Evidence must allow
an assessment to be made whether the key used to sign the CSR
is stored in a secure location and cannot be exported.</t>
      <t>Evidence communicated in the attributes and structures defined
in this document are meant to be used in a CSR. It is up to
the Verifier and to the Relying Party (RA/CA) to place as much or
as little trust in this information as dictated by policies.</t>
      <t>This document defines the transport of Evidence of different formats
in a CSR. Some of these encoding formats are based on standards
while others are proprietary formats. A Verifier will need to understand
these formats for matching the received claim values against policies.</t>
      <t>Policies drive the processing of Evidence at the Verifier: the Verifier's
Appraisal Policy for Evidence will often be based on specifications by the manufacturer
of a hardware security module, a regulatory agency, or specified by an
oversight body, such as the CA Browser Forum. The Code-Signing Baseline
Requirements <xref target="CSBR"/> document
is an example of such a policy that has
been published by the CA Browser Forum and specifies certain properties,
such as non-exportability, which must be enabled for storing
publicly-trusted code-signing keys. Other
policies influence the decision making at the Relying Party when
evaluating the Attestation Result. The Relying Party is ultimately
responsible for making a decision of what information in the Attestation
Result it will accept. The presence of the attributes defined in this
specification provide the Relying Party with additional assurance about
an Attester. Policies used at the Verifier and the Relying Party are
implementation dependent and out of scope for this document. Whether to
require the use of Evidence in a CSR is out-of-scope for this document.</t>
      <section anchor="freshness">
        <name>Freshness</name>
        <t>Evidence generated by an Attester generally needs to be fresh to provide
value to the Verifier since the configuration on the device may change
over time. Section 10 of <xref target="RFC9334"/> discusses different approaches for
providing freshness, including a nonce-based approach, the use of timestamps
and an epoch-based technique.  The use of nonces requires that nonce to be provided by
the Relying Party in some protocol step prior to Evidence and CSR generation,
and the use of timestamps requires synchronized clocks which cannot be
guaranteed in all operating environments. Epochs also require (unidirectional)
communication prior to Evidence and CSR generation.
This document only specifies how to carry existing Evidence formats inside a CSR,
and so issues of synchronizing freshness data is left to be handled, for example,
via certificate management protocols.
Developers, operators, and designers of protocols, which embed
Evidence-carrying-CSRs, <bcp14>MUST</bcp14> consider what notion of freshness is
appropriate and available in-context; thus the issue of freshness is
left up to the discretion of protocol designers and implementers.</t>
        <t>In the case of Hardware Security Modules (HSM), the definition of "fresh" is somewhat ambiguous in the context
of CSRs, especially considering that non-automated certificate enrollments
are often asynchronous, and considering the common practice of re-using the
same CSR for multiple certificate renewals across the lifetime of a key.
"Freshness" typically implies both asserting that the data was generated
at a certain point-in-time, as well as providing non-replayability.
Certain use cases may have special properties impacting the freshness
requirements. For example, HSMs are typically designed to not allow downgrade
of private key storage properties; for example if a given key was asserted at
time T to have been generated inside the hardware boundary and to be
non-exportable, then it can be assumed that those properties of that key
will continue to hold into the future.</t>
      </section>
      <section anchor="publishing-evidence-in-an-x509-extension">
        <name>Publishing evidence in an X.509 extension</name>
        <t>This document specifies and Extension for carrying Evidence in a CRMF Certificate Signing Request (CSR), but it is intentionally <bcp14>NOT RECOMMENDED</bcp14> for a CA to copy the ext-evidence or ext-evidenceCerts extensions into the published certificate.
The reason for this is that certificates are considered public information and the Evidence might contain detailed information about hardware and patch levels of the device on which the private key resides.
The certificate requester has consented to sharing this detailed device information with the CA but might not consent to having these details published.
These privacy considerations are beyond the scope of this document and may require additional signaling mechanisms in the CSR to prevent unintended publication of sensitive information, so we leave it as "<bcp14>NOT RECOMMENDED</bcp14>".</t>
      </section>
      <section anchor="type-oid-and-verifier-hint">
        <name>Type OID and verifier hint</name>
        <t>The <tt>EvidenceStatement</tt> includes both a <tt>type</tt> OID and a free form <tt>hint</tt> field with which the Attester can provide information to the Relying Party about which Verifier to invoke to parse a given piece of Evidence.
Care should be taken when processing these data since at the time they are used, they are not yet verified. In fact, they are protected by the CSR signature but not by the signature from the Attester and so could be maliciously replaced in some cases.
The authors' intent is that the <tt>type</tt> OID and <tt>hint</tt> will allow an RP to select between Verifier with which it has pre-established trust relationships, such as Verifier libraries that have been compiled in to the RP application.
As an example, the <tt>hint</tt> may take the form of an FQDN to uniquely identify a Verifier implementation, but the RP <bcp14>MUST NOT</bcp14> blindly make network calls to unknown domain names and trust the results.
Implementers should also be cautious around <tt>type</tt> OID or <tt>hint</tt> values that cause a short-circuit in the verification logic, such as <tt>None</tt>, <tt>Null</tt>, <tt>Debug</tt>, empty CMW contents, or similar values that could cause the Evidence to appear to be valid when in fact it was not properly checked.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="RFC5912">
          <front>
            <title>New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>The Public Key Infrastructure using X.509 (PKIX) certificate format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5912"/>
          <seriesInfo name="DOI" value="10.17487/RFC5912"/>
        </reference>
        <reference anchor="RFC4211">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate Request Message Format (CRMF)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This document describes the Certificate Request Message Format (CRMF) syntax and semantics. This syntax is used to convey a request for a certificate to a Certification Authority (CA), possibly via a Registration Authority (RA), for the purposes of X.509 certificate production. The request will typically include a public key and the associated registration information. This document does not define a certificate request protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4211"/>
          <seriesInfo name="DOI" value="10.17487/RFC4211"/>
        </reference>
        <reference anchor="RFC2986">
          <front>
            <title>PKCS #10: Certification Request Syntax Specification Version 1.7</title>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <date month="November" year="2000"/>
            <abstract>
              <t>This memo represents a republication of PKCS #10 v1.7 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process. The body of this document, except for the security considerations section, is taken directly from the PKCS #9 v2.0 or the PKCS #10 v1.7 document. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2986"/>
          <seriesInfo name="DOI" value="10.17487/RFC2986"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="I-D.ietf-rats-msg-wrap">
          <front>
            <title>RATS Conceptual Messages Wrapper (CMW)</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <date day="27" month="February" 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.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-04"/>
        </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="10" month="February" year="2024"/>
            <abstract>
              <t>   This document defines an evidence format for key attestation based on
   the Entity Attestation Token (EAT) format.

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-02"/>
        </reference>
        <reference anchor="RFC7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
        <reference anchor="I-D.tschofenig-rats-psa-token">
          <front>
            <title>Arm's Platform Security Architecture (PSA) Attestation Token</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Simon Frost" initials="S." surname="Frost">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Mathias Brossard" initials="M." surname="Brossard">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Adrian L. Shaw" initials="A. L." surname="Shaw">
              <organization>HP Labs</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="21" month="February" 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'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-22"/>
        </reference>
        <reference anchor="TPM20" target="https://trustedcomputinggroup.org/resource/tpm-library-specification/">
          <front>
            <title>Trusted Platform Module Library Specification, Family 2.0, Level 00, Revision 01.59</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2019" month="November"/>
          </front>
        </reference>
        <reference anchor="CSBR" target="https://cabforum.org/wp-content/uploads/Baseline-Requirements-for-the-Issuance-and-Management-of-Code-Signing.v3.3.pdf">
          <front>
            <title>Baseline Requirements for Code-Signing Certificates, v.3.3</title>
            <author>
              <organization>CA/Browser Forum</organization>
            </author>
            <date year="2023" month="June"/>
          </front>
        </reference>
        <reference anchor="TCGDICE1.1" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Attestation-Architecture-Version-1.1-Revision-18_pub.pdf">
          <front>
            <title>DICE Attestation Architecture</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2024" month="January"/>
          </front>
        </reference>
        <reference anchor="PKCS11" target="http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html">
          <front>
            <title>PKCS #11 Cryptographic Token Interface Base Specification Version 2.40</title>
            <author>
              <organization>OASIS</organization>
            </author>
            <date year="2015" month="April"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-rats-tpm-based-network-device-attest">
          <front>
            <title>TPM-based Network Device Remote Integrity Verification</title>
            <author fullname="Guy Fedorkow" initials="G." surname="Fedorkow">
              <organization>Juniper Networks, Inc.</organization>
            </author>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Jessica Fitzgerald-McKay" initials="J." surname="Fitzgerald-McKay">
              <organization>National Security Agency</organization>
            </author>
            <date day="22" month="March" year="2022"/>
            <abstract>
              <t>   This document describes a workflow for remote attestation of the
   integrity of firmware and software installed on network devices that
   contain Trusted Platform Modules [TPM1.2], [TPM2.0], as defined by
   the Trusted Computing Group (TCG)), or equivalent hardware
   implementations that include the protected capabilities, as provided
   by TPMs.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-tpm-based-network-device-attest-14"/>
        </reference>
      </references>
    </references>
    <?line 867?>

<section anchor="examples">
      <name>Examples</name>
      <t>This section provides two non-normative examples for embedding Evidence
in CSRs. The first example embeds Evidence produced by a TPM in the CSR.
The second example conveys an Arm Platform Security Architecture token,
which provides claims about the used hardware and software platform,
into the CSR.</t>
      <t>At the time of writing, the authors are not aware of registered OIDs for
these evidence formats, and so we leave the OIDs as TBD1 / TBD2.</t>
      <section anchor="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>
        <artwork><![CDATA[
EvidenceStatementSet EVIDENCE-STATEMENT ::= {
  --- TPM 2.0
  { Tcg-attest-certify IDENTIFIED BY tcg-attest-certify },
  ...,

  --- PSA
  { OCTET STRING IDENTIFIED BY { 1 3 6 1 5 5 7 1 99 } }
}
]]></artwork>
      </section>
      <section anchor="tpm-v20-evidence-in-csr">
        <name>TPM V2.0 Evidence in CSR</name>
        <t>This section describes TPM2 key attestation for use in a CSR.</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>
          <t>id-tcg OBJECT IDENTIFIER ::= { 2 23 133 }</t>
          <t>id-tcg-kp-AIKCertificate OBJECT IDENTIFIER ::= { id-tcg 8 3 }</t>
          <t>id-tcg-attest OBJECT IDENTIFIER ::= { id-tcg TBD }</t>
          <t>id-tcg-attest-certify OBJECT IDENTIFIER ::= { id-tcg-attest 1 }</t>
        </section>
        <section anchor="appdx-tcg-attest-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-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>
          <artwork><![CDATA[
Tcg-attest-certify ::= SEQUENCE {
  tcg-attest-certify-tpm2b_attest       TPM2B_ATTEST,
  tcg-attest-certify-tpmt_signature     TPMT_SIGNATURE,
  tcg-attest-certify-tpm2b_public   [0] TPM2B_PUBLIC OPTIONAL,
  tcg-kp-AIKCertificate             [1] OCTET STRING OPTIONAL
}
]]></artwork>
          <t>The tcg-kp-AIKCertificate field contains the AIK Certificate in RFC 5280 format.</t>
        </section>
        <section anchor="introduction-to-tpm2-concepts">
          <name>Introduction to TPM2 concepts</name>
          <t>The definitions in the following sections are defined by the TPM2 and various TCG defined
specification including the TPM2 set of specifications. Those familiar with
TPM2 concepts may skip to <xref target="appdx-tcg-attest-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>
          <ul spacing="normal">
            <li>
              <t>a structure that is a sized buffer where the size of the buffer is contained in a 16-bit, unsigned value.</t>
            </li>
            <li>
              <t>The first parameter is the size in octets of the second parameter. The second parameter may be any type.</t>
            </li>
          </ul>
          <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>
            <artwork><![CDATA[
     Name ≔ nameAlg || HnameAlg (handle→publicArea)
     nameAlg is a TCG defined 16 bit algorithm identifier
]]></artwork>
            <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>
            <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>
            <t>where for a key object the attested field is</t>
            <artwork><![CDATA[
     typedef struct {
          TPM2B_NAME name;
          TPM2B_NAME qualifiedName;
     } TPMS_CERTIFY_INFO;
]]></artwork>
          </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>
            <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>
            <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>
            <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>
            <ul spacing="normal">
              <li>
                <t>authPolicy is the Policy Digest needed to authorize use of the object.</t>
              </li>
              <li>
                <t>Parameters are the object type specific public information about the key.
                </t>
                <ul spacing="normal">
                  <li>
                    <t>For key objects, this would be the key's public parameters.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>unique is the identifier for parameters</t>
              </li>
            </ul>
            <t>The size of the TPMT_PUBLIC is provided by the following structure:</t>
            <artwork><![CDATA[
     typedef struct {
          UINT16     size;
          TPMT_PUBLIC publicArea;
     } TPM2B_PUBLIC;
]]></artwork>
          </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>
            <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>
          </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>
            <ul spacing="normal">
              <li>
                <t>TPM2 handle for Key (the key to be attested to)</t>
              </li>
              <li>
                <t>TPM2 handle for the AK (see <xref target="attestation-key"/>)</t>
              </li>
            </ul>
            <t>It produces the following output:</t>
            <ul spacing="normal">
              <li>
                <t>TPM2B_ATTEST in binary format</t>
              </li>
              <li>
                <t>TPMT_SIGNATURE in binary format</t>
              </li>
            </ul>
            <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>
            <ul spacing="normal">
              <li>
                <t>TPM2 handle for Key (the key to be attested to)</t>
              </li>
            </ul>
            <t>It produces the following output:</t>
            <ul spacing="normal">
              <li>
                <t>TPM2B_PUBLIC in binary format</t>
              </li>
            </ul>
          </section>
          <section anchor="verifier-processing">
            <name>Verifier Processing</name>
            <t>The Verifier has to perform the following steps once it receives the Evidence:</t>
            <ul spacing="normal">
              <li>
                <t>Verify the TPM2B_ATTEST using the TPMT_SIGNATURE.</t>
              </li>
              <li>
                <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>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="appdx-tpm-example">
          <name>Example Structures</name>
          <t>TODO -- a full CSR would be great.</t>
        </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>
        <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>
        <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>
        <artwork><![CDATA[
{
  "kat":
    h'd28443A10126A058C0A30A5820B91B03129222973C214E42BF31D68
      72A3EF2DBDDA401FBD1F725D48D6BF9C8171909C4A40102200121
      5820F0FFFA7BA35E76E44CA1F5446D327C8382A5A40E5F29745DF
      948346C7C88A5D32258207CB4C4873CBB6F097562F61D5280768C
      D2CFE35FBA97E997280DBAAAE3AF92FE08A101A40102200121582
      0D7CC072DE2205BDC1537A543D53C60A6ACB62ECCD890C7FA27C9
      E354089BBE13225820F95E1D4B851A2CC80FFF87D8E23F22AFB72
      5D535E515D020731E79A3B4E47120584056F50D131FA83979AE06
      4E76E70DC75C070B6D991AEC08ADF9F41CAB7F1B7E2C47F67DACA
      8BB49E3119B7BAE77AEC6C89162713E0CC6D0E7327831E67F3284
      1A',
  "pat":
    h'd28443A10126A05824A10A58205CA3750DAF829C30C20797EDDB794
      9B1FD028C5408F2DD8650AD732327E3FB645840F9F41CAB7F1B7E
      2C47F67DACA8BB49E3119B7BAE77AEC6C89162713E0CC6D0E7327
      831E67F32841A56F50D131FA83979AE064E76E70DC75C070B6D99
      1AEC08AD'
}
]]></artwork>
      </section>
    </section>
    <section anchor="asn1-module">
      <name>ASN.1 Module</name>
      <artwork><![CDATA[
CSR-ATTESTATION-2023
           {iso(1) identified-organization(3) dod(6) internet(1) security(5)
       mechanisms(5) pkix(7) id-mod(0) id-mod-pkix-attest-01(TBDMOD)}

DEFINITIONS IMPLICIT TAGS ::= BEGIN

EXPORTS ALL;

IMPORTS

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


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

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

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


CertificateAlternatives ::=
   CHOICE {
      cert          [0] Certificate,
      typedCert     [1] TypedCert,
      typedFlatCert [2] TypedFlatCert,
      ...
   }

TYPED-CERT ::= TYPE-IDENTIFIER

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

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

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

EVIDENCE-STATEMENT ::= TYPE-IDENTIFIER

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

EvidenceHint ::= CHOICE {
     rfc822Name [0] IA5String,
     dNSName    [1] IA5String,
     uri        [2] IA5String,
     text       [3] UTF8String
}

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

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

id-aa-evidence OBJECT IDENTIFIER ::= { id-aa TBDAA }

-- For PKCS#10
attr-evidence ATTRIBUTE ::= {
  TYPE EvidenceBundles
  IDENTIFIED BY id-aa-evidence
}


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

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

EvidenceBundle ::= SEQUENCE
{
  evidence EvidenceStatements,
  certs SEQUENCE SIZE (1..MAX) OF CertificateAlternatives OPTIONAL
}


END
]]></artwork>
      <section anchor="tcg-dice-conceptualmessagewrapper-in-csr">
        <name>TCG DICE ConceptualMessageWrapper in CSR</name>
        <t>This section gives an example of extending the ASN.1 module above to carry an existing ASN.1-based evidence statement. The example used is the Trusted Computing Group DICE Attestation Conceptual Message Wrapper, as defined in <xref target="TCGDICE1.1"/>.</t>
        <artwork><![CDATA[
tcgDiceEvidenceStatementES EVIDENCE-STATEMENT ::=
  { ConceptualMessageWrapper IDENTIFIED BY tcg-dice-conceptual-message-wrapper }

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

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

]]></artwork>
      </section>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This specification is the work of a design team created by the chairs of the
LAMPS working group. The following persons, in no specific order,
contributed to the work: Richard Kettlewell, Chris Trufan, Bruno Couillard,
Jean-Pierre Fiset, Sander Temme, Jethro Beekman, Zsolt Rózsahegyi, Ferenc
Pető, Mike Agrenius Kushner, Tomas Gustavsson, Dieter Bong, Christopher Meyer,
Michael StJohns, Carl Wallace, Michael Richardson, Tomofumi Okubo, Olivier
Couillard, John Gray, Eric Amador, Johnson Darren, Herman Slatman, Tiru Reddy,
Corey Bonnel, Argenius Kushner, James Hagborg, Monty Wiseman,
Ned Smith.</t>
      <t>We would like to specifically thank Mike StJohns for his work on an earlier
version of this draft.</t>
      <t>We would also like to specifically thank Monty Wiseman for providing the
appendix showing how to carry a TPM 2.0 Attestation.</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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
gSu0xFvfN4lqRAMmYR85pslY5JXGJGwsDJmoX+O5BFJgIXCpsQMXx1Jbhbri
S2BQJzRQwKTCeuF+HDIPoWpSK+rE3dadr2JBQCuJcS9vrcJJB/p/YbT8JhTT
DGcFf4jym10rU37zQrIN6VqMZU4VqRbFtcWFDmrOPcs1WQOEXlZIlIe9Droj
n/0+dxFxTTtUrIlGUJMvs+2rUPpksqKLCJVRuTeh5o/OiUY5FIdIrNbRB2nu
eHuS++SLF8Zr0rG/WAcDxwgIUD7rn2He8pBtCpSBR4sg13gQ2KMcHZFc5LtC
z0XHuSb6mqvjOvSwUddFrjzHP8ytVwBLnk6iJL7mDHuLPGySq+Tjox/qrBM4
FH7qRPGz40Rlrr2Ph1wfdK+Au+KxhpOCB7kJCwzmFFtsyQFHOcYzQKrulbZh
Bycl5xdCBgGFck20lPmJCdVXV6mYcRiaVN0VFyXoZRgn2l6tyq8LXugbWKip
WKP3p6bdObRTJrgCs/JqaZGiRdkcrC9IvnOqsNMRLFp7DoM3oWMpwgEb3aAy
xRlPOlUPDzqmdqfVxvGqXTYsFNgXi/ySOTUdbMqTmRivppFXoIN2qTInP0ek
J/7VF4pSAaaSwQrqP5arQrEsJPmiTO4kbFhTOy9wfr73/vKTLuHnKJcdmoSm
CISeBYL3qfmt7Ct3ddT/yiDocnOIAHqFACoNYvw/OLA6rvE0AAkY3UoBpO5Z
UbpDDVqimHbrd+s3PpDkFdq3EUMoj84u7IbiOx8bPMUlp2zCTAzNIRCxmxxD
dCSrAWbF1SVqJN14viE6DhR512AGa4cEn+nLcWd/e3ur295sd3a7mzv7vc3u
1mZ3Z7+zeXTQPtrcancOOp3Owd5Wr9PeHmx3jo632v3dfYHuXqe7NTju9I/6
/e72Zvv4qN8+3uvs9Lf3+7tHxwe9/fZe+2DzoLeNbzc7nU0Ypi3f4hjHm8fH
x929o+7WzmBvd7C93eu2j3e2t3f7W5293v7Wfqe7A58Odo5hCts7/WP59mB7
f2t7twdN9rs70LaDne31jrZ72/sw1aOj3ePNg72d3c7xbruPLjl7u/s9+bbf
6R0PtnaOj7oHe4ODgz142z/qdruDre7xQed4sLmP0HAnDJ3Lt5v9vV5vc6/T
H8CrnaN+r72ztdfd2d7q72z1dje7u93e0W5n0Ov19w82e3vHXVjFgXwLY25v
7h8cHQ3aMuHjg51Bu799tL/T7nZ6vX0Exv5ef3/Q2TrudLrHR3t63B3of2ew
097pb8I6t9qDvYPu1hHsx14b5rG/vbmze7yz2W9vtY+7+1sH8HawuSvfbiNk
9zb7vb0dmPrm0W7/4KDdHfRgnf3jg+Ptdq97tHfcPtobdHrbe8e7e/1uryvf
7h8dbR8MttrtgyPYpMHeHny329s/aO929tpbg81eb7e/OdiDzdqHSe3uHW8B
Osm37e5L9MtaWzyBbZ1t+J2wbafX3dqDJXSP9zsHva3NHqwT9qffP9o70D0e
HLWPAQD7PQQkYF1/f3dns9uH4WECg63jo91thIW/KPnWWdvzF6WhYNfW7tZB
ug7EBgoM6Ze2VAf7QHEIthRMqqkQ4dKvhzhP19uOim/cTLPrMIn/SLfc+tZG
ME7H67sbnC0yiQpsrXPErO+YUi82ZA8eBli7YH1vQypRrG9u1NekWOfKFhvA
TPUHxyfvTnCOl8HJ6TmwZydXwVX39SU5Dx4NXp+8U2rwu/Ozi6vLoPv27Q/A
RJ/SX8qtCtXQlRNUcHxxdkrFEtqDz1zDBVa/KdD7C637G1bdxqBhnsZmZ32n
jYtWpqhfw1YQdEpfX0bFA9zkl0C2Z5F5+vBIg5v1NXsUrk5Vj2mJyJTSZfF7
KTj0B/rgIfgLbfY3rJqnRive2wh07UVFcyduNzqN55EkS/7t1jgt2v5c5xhX
lDUxpdB6ZwPkjXU4hxtBlofjPF5vt4H0Hdh6Q4ubUY5f4b/Ng/UDmP0c+l9v
w5o4n1GOE0Ru55YGW+9Q6fIgQH0rVV88wswx03LtOpvB7BcWR1f/TmqXfbUk
1VeqTv2CalN/RpWpv2x1Kd3bv0QxpX8LhdP/f0Xtf8sVtf9Nl6X916hL+++/
sLAavOtr4xw5nGC6f6cqgNxzuiZAbYDVNfXqh8NFJgSUtNdOvTM0UNx6lQ9t
eAe1kzRXZvFOvXPXastO0mIWEktZz+QUfZ2lywUvxlOjrix3QO4wnnLKrX0g
6gFVjK778Siq7MfgcgXBo0C3leCsxs6N4xHVBJf2TakAQJoO/IKPj+SvX9Ut
6aGf0RlFsGYeDcYVNx2INV29XlOcAJsAk+ZFxGnUm+29j+3u8hp2AFn11mI8
+fYrYTVcG3TRPyojMIzQAjaLxtdzXRikEiEqWEFx++Rdyzl7gKCHc63w1zYE
LBWcadco9bZ7en5JHyISXSMS6UrkWv+MHr5pQind0EpoXEGoqm+DiiUz02uy
mWJ3h8FFjLVJMSwB05VieqNG0JtmMdZwWU7CpAF83BI67KXLeDaDlg31myhM
mudxlGVYfDTHANLLkCpgXEVzzJP0m6iYZmlwFEU3c+zh7/J0VgQX/+d//TEP
p9H1fdwIjsmxW51Hxf/9L43gNL6B03gNj+JlHrxZYgYkQP2rdA7Y/xq2MLzN
czRV9GNyRz9KMYycplmkC3SAPo3ucZmnuJpoFlwWv0mnCI1emM2CD+EMY7tw
HH4ti6YuYZB0spzHwdnNcpg2grNZfIvOw3bBAfYFRze8bwSDDGDanYfjNOPn
mCqnH2JpjkbwU5TBeoNL4Hpo3VdxtgwuovH4vgHdZdE9TjyJAMLd7Lq01t9Q
woafwushSBIwU9iv++ADQBd7Uu9g2y7ncTGFE/8hEu34LOa0JK7XI7owJzcM
UAECceDs1oOIR3rpCMCCi9RhG8YcnoWTwh2DgjKeGsidJ/v9mMxYiLl4ooHg
fibNGD70stWFJtDYOdsw/HFMCZAaGNnvr5VH7SZjzFIUvMki1GDPhbhcTQlh
jtMcy4dpI2WcBZMoGlOxbaLhCs+in4QS7SFZjGecg5X6IJUBnpzG1yGq/vDR
xTKH/cEcKGwTVty1FNdCexfXW/p/xnODPwjgAAA=

-->

</rfc>
