<?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.24 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-fossati-tls-exported-attestation-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="Application Layer Attestation">Remote Attestation with Exported Authenticators</title>
    <seriesInfo name="Internet-Draft" value="draft-fossati-tls-exported-attestation-00"/>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>Linaro</organization>
      <address>
        <email>thomas.fossati@linaro.org</email>
      </address>
    </author>
    <author initials="M. U." surname="Sardar" fullname="Muhammad Usama Sardar">
      <organization>TU Dresden</organization>
      <address>
        <email>muhammad_usama.sardar@tu-dresden.de</email>
      </address>
    </author>
    <author initials="Y." surname="Sheffer" fullname="Yaron Sheffer">
      <organization>Intuit</organization>
      <address>
        <email>yaronf.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization abbrev="H-BRS">University of Applied Sciences Bonn-Rhein-Sieg</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>Hannes.Tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="I." surname="Mihalcea" fullname="Ionut Mihalcea">
      <organization>Arm Limited</organization>
      <address>
        <email>ionut.mihalcea@arm.com</email>
      </address>
    </author>
    <date year="2025" month="March" day="03"/>
    <keyword>Attestation</keyword>
    <keyword>TLS</keyword>
    <keyword>Key Attestation</keyword>
    <keyword>Exported Authenticators</keyword>
    <abstract>
      <?line 63?>

<t>This specification defines a method for two parties in a communication interaction to exchange Evidence and Attestation Results using exported authenticators, as defined in RFC 9261. This approach falls into the category of post-handshake attestation by exchanging payloads in the application layer protocol while binding the remote attestation to the underlying communication channel. This document supports both the passport and background check models from the RATS architecture.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://hannestschofenig.github.io/exported-attestation/draft-fossati-tls-exported-attestation.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-fossati-tls-exported-attestation/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        tls Working Group mailing list (<eref target="mailto:tls@ietf.org"/>),
        which is archived at <eref target="https://datatracker.ietf.org/wg/tls/about/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/https://github.com/hannestschofenig/exported-attestation"/>.</t>
    </note>
  </front>
  <middle>
    <?line 67?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>There is a growing need to demonstrate to a remote party that cryptographic keys are stored in a secure element, the device is in a known good state, secure boot has been enabled, and that low-level software and firmware have not been tampered with. Remote attestation provides this capability.</t>
      <t>More technically, an Attester produces a signed collection of Claims that constitute Evidence about its running environment(s). A Relying Party may consult an Attestation Result produced by a Verifier that has appraised the Evidence to make policy decisions regarding the trustworthiness of the Target Environment being assessed. This is, in essence, what RFC 9334 <xref target="RFC9334"/> defines.</t>
      <t>At the time of writing, several standard and proprietary remote attestation technologies are in use. This specification aims to remain as technology-agnostic as possible concerning implemented remote attestation technologies. As a result, this document focuses on the conveyance of Evidence and Attestation Results as part of the payloads defined by Exported Authenticators. The end-entity certificate is associated with key material that serves as an Attestation Key, which acts as Evidence originating from the Attester.</t>
      <t>This document builds upon three foundational specifications:</t>
      <ul spacing="normal">
        <li>
          <t>RATS (Remote Attestation Procedures) Architecture <xref target="RFC9334"/>: RFC 9334 defines how remote attestation systems establish trust between parties by exchanging Evidence and Attestation Results. These interactions can follow different models, such as the passport or the background check model, depending on the order of data flow in the system.</t>
        </li>
        <li>
          <t>TLS Exported Authenticators <xref target="RFC9261"/>: RFC 9261 offers bi-directional, post-handshake authentication. Once a TLS connection is established, both peers can send an authenticator request message at any point after the handshake. This message from the server and the client uses the CertificateRequest and the ClientCertificateRequest messages, respectively. The peer receiving the authenticator request message can respond with an Authenticator consisting of Certificate, CertificateVerify, and Finished messages. These messages can then be validated by the other peer.</t>
        </li>
        <li>
          <t>RATS Conceptual Messages Wrapper (CMW) <xref target="I-D.ietf-rats-msg-wrap"/>: CMW provides a convenient encapsulation of Evidence and Attestation Result payloads thereby provide an abstraction of the utilized attestation technology. This specification reuses exported authenticators to carry Evidence and/or Attestation Results wrapped via the CMW. While exported authenticators traditionally deal with certificates, in this document, we use them for key attestation. Consequently, this mechanism applies specifically to remote attestation technologies that offer key attestation, though the encoding format is not restricted to X.509 certificates.</t>
        </li>
      </ul>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, NOT RECOMMENDED, MAY, and OPTIONAL 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>
      <t>The reader is assumed to be familiar with the vocabulary and concepts defined in RFC 9334 and RFC 9261.</t>
      <t>We use the term REMOTE_ATTESTATION payload to refer to the opaque token generated by the TLS Exported Authenticator implementation. The content is opaque to the application layer protocol but, of course, not to the TLS Exported Authenticator implementation.</t>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t>Designers of application layer protocols need to define payload formats for conveying exported authenticators that contain remote Evidence. They must also provide mechanisms to inform both communication partners of their ability to exchange Evidence and Attestation Results via this specification. This capability can be specified in a profile of this document or dynamically negotiated during protocol exchanges. A future version of this specification will provide more details.</t>
      <t>The Exported Authenticator API defined in RFC 9261 accepts a request, a set of certificates, and supporting information as input. The output is an opaque token that serves as the REMOTE_ATTESTATION payload. Upon receipt of a REMOTE_ATTESTATION payload, an endpoint that supports "secondary certificates" MUST take the following steps to validate the contained token:</t>
      <ul spacing="normal">
        <li>
          <t>Use the get context API to retrieve the certificate_request_context that was used to generate the authenticator (if any). Since the certificate_request_context for spontaneous server certificates is chosen by the server, its usage is implementation-dependent (see <xref section="5" sectionFormat="of" target="RFC9261"/> for more details).</t>
        </li>
        <li>
          <t>Use the validate API to confirm the authenticator's validity with respect to the generated request (if any). If validation fails, this SHOULD be treated as a connection error. Upon successful validation, the endpoint can conduct further checks to ensure the certificate's acceptability.</t>
        </li>
      </ul>
      <t>In the following examples, the server possesses an identity certificate, while the client is not authenticated during the initial TLS exchange.</t>
      <t><xref target="fig-passport"/> shows the passport model while <xref target="fig-background"/> illustrates the background-check model.
For a specific instantiation of this passport model see the integration of the attested CSR <xref target="I-D.ietf-lamps-csr-attestation"/> into the CMP protocol <xref target="I-D.ietf-lamps-attestation-freshness"/>.</t>
      <figure anchor="fig-passport">
        <name>Passport Model with Client as Attester</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="416" width="488" viewBox="0 0 488 416" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 24,48 L 24,400" fill="none" stroke="black"/>
              <path d="M 224,48 L 224,208" fill="none" stroke="black"/>
              <path d="M 224,312 L 224,400" fill="none" stroke="black"/>
              <path d="M 432,48 L 432,400" fill="none" stroke="black"/>
              <path d="M 32,96 L 216,96" fill="none" stroke="black"/>
              <path d="M 32,192 L 216,192" fill="none" stroke="black"/>
              <path d="M 32,256 L 424,256" fill="none" stroke="black"/>
              <path d="M 32,304 L 424,304" fill="none" stroke="black"/>
              <path d="M 32,384 L 216,384" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="432,256 420,250.4 420,261.6" fill="black" transform="rotate(0,424,256)"/>
              <polygon class="arrowhead" points="224,384 212,378.4 212,389.6" fill="black" transform="rotate(0,216,384)"/>
              <polygon class="arrowhead" points="224,96 212,90.4 212,101.6" fill="black" transform="rotate(0,216,96)"/>
              <polygon class="arrowhead" points="40,304 28,298.4 28,309.6" fill="black" transform="rotate(180,32,304)"/>
              <polygon class="arrowhead" points="40,256 28,250.4 28,261.6" fill="black" transform="rotate(180,32,256)"/>
              <polygon class="arrowhead" points="40,192 28,186.4 28,197.6" fill="black" transform="rotate(180,32,192)"/>
              <polygon class="arrowhead" points="40,96 28,90.4 28,101.6" fill="black" transform="rotate(180,32,96)"/>
              <g class="text">
                <text x="28" y="36">Client</text>
                <text x="228" y="36">Server</text>
                <text x="440" y="36">CA/Verifier</text>
                <text x="72" y="68">Regular</text>
                <text x="120" y="68">TLS</text>
                <text x="176" y="68">Handshake</text>
                <text x="108" y="84">(Server-only</text>
                <text x="184" y="84">auth)</text>
                <text x="56" y="132">...</text>
                <text x="92" y="132">time</text>
                <text x="140" y="132">passes</text>
                <text x="184" y="132">...</text>
                <text x="88" y="164">Authenticator</text>
                <text x="176" y="164">Request</text>
                <text x="124" y="180">(ClientCertificateReq)</text>
                <text x="120" y="228">Certificate</text>
                <text x="212" y="228">Management</text>
                <text x="292" y="228">Protocol</text>
                <text x="356" y="228">(+CSR)</text>
                <text x="120" y="244">(Evidence</text>
                <text x="204" y="244">requested)</text>
                <text x="224" y="276">|</text>
                <text x="120" y="292">Certificate</text>
                <text x="192" y="292">(with</text>
                <text x="264" y="292">Attestation</text>
                <text x="344" y="292">Result)</text>
                <text x="68" y="340">Exported</text>
                <text x="160" y="340">Authenticator</text>
                <text x="100" y="356">(Authenticator</text>
                <text x="180" y="356">with</text>
                <text x="96" y="372">Attestation</text>
                <text x="176" y="372">Result)</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
Client                   Server                  CA/Verifier
  |                        |                         |
  |  Regular TLS Handshake |                         |
  |    (Server-only auth)  |                         |
  |<---------------------->|                         |
  |                        |                         |
  |  ... time passes ...   |                         |
  |                        |                         |
  | Authenticator Request  |                         |
  | (ClientCertificateReq) |                         |
  |<-----------------------|                         |
  |                        |                         |
  |      Certificate Management Protocol (+CSR)      |
  |       (Evidence requested)                       |
  |<------------------------------------------------>|
  |                        |                         |
  |      Certificate (with Attestation Result)       |
  |<-------------------------------------------------|
  |                        |                         |
  | Exported Authenticator |                         |
  |  (Authenticator with   |                         |
  |   Attestation Result)  |                         |
  |----------------------->|                         |
  |                        |                         |
]]></artwork>
        </artset>
      </figure>
      <t><xref target="fig-background"/> shows an example using the background-check model.</t>
      <figure anchor="fig-background">
        <name>Background Check Model with a Separate Client-Side Attester</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="416" width="568" viewBox="0 0 568 416" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 24,48 L 24,400" fill="none" stroke="black"/>
              <path d="M 184,112 L 184,128" fill="none" stroke="black"/>
              <path d="M 184,168 L 184,256" fill="none" stroke="black"/>
              <path d="M 184,312 L 184,400" fill="none" stroke="black"/>
              <path d="M 384,48 L 384,128" fill="none" stroke="black"/>
              <path d="M 384,160 L 384,400" fill="none" stroke="black"/>
              <path d="M 536,48 L 536,400" fill="none" stroke="black"/>
              <path d="M 32,80 L 376,80" fill="none" stroke="black"/>
              <path d="M 32,160 L 376,160" fill="none" stroke="black"/>
              <path d="M 32,208 L 176,208" fill="none" stroke="black"/>
              <path d="M 32,256 L 176,256" fill="none" stroke="black"/>
              <path d="M 32,304 L 376,304" fill="none" stroke="black"/>
              <path d="M 392,336 L 528,336" fill="none" stroke="black"/>
              <path d="M 392,384 L 528,384" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="536,336 524,330.4 524,341.6" fill="black" transform="rotate(0,528,336)"/>
              <polygon class="arrowhead" points="400,384 388,378.4 388,389.6" fill="black" transform="rotate(180,392,384)"/>
              <polygon class="arrowhead" points="384,304 372,298.4 372,309.6" fill="black" transform="rotate(0,376,304)"/>
              <polygon class="arrowhead" points="384,80 372,74.4 372,85.6" fill="black" transform="rotate(0,376,80)"/>
              <polygon class="arrowhead" points="184,208 172,202.4 172,213.6" fill="black" transform="rotate(0,176,208)"/>
              <polygon class="arrowhead" points="40,256 28,250.4 28,261.6" fill="black" transform="rotate(180,32,256)"/>
              <polygon class="arrowhead" points="40,160 28,154.4 28,165.6" fill="black" transform="rotate(180,32,160)"/>
              <polygon class="arrowhead" points="40,80 28,74.4 28,85.6" fill="black" transform="rotate(180,32,80)"/>
              <g class="text">
                <text x="28" y="36">Client</text>
                <text x="196" y="36">Attester</text>
                <text x="388" y="36">Server</text>
                <text x="532" y="36">Verifier</text>
                <text x="184" y="52">|</text>
                <text x="72" y="68">Regular</text>
                <text x="120" y="68">TLS</text>
                <text x="176" y="68">Handshake</text>
                <text x="268" y="68">(Server-only</text>
                <text x="344" y="68">auth)</text>
                <text x="184" y="100">|</text>
                <text x="64" y="116">...</text>
                <text x="100" y="116">time</text>
                <text x="148" y="116">passes</text>
                <text x="196" y="116">..</text>
                <text x="88" y="148">Authenticator</text>
                <text x="176" y="148">Request</text>
                <text x="276" y="148">(ClientCertReq),</text>
                <text x="368" y="148">Nonce</text>
                <text x="64" y="196">Request</text>
                <text x="132" y="196">Evidence</text>
                <text x="48" y="228">Key</text>
                <text x="112" y="228">Attestation</text>
                <text x="44" y="244">as</text>
                <text x="92" y="244">Evidence</text>
                <text x="76" y="276">Exported</text>
                <text x="168" y="276">Authenticator</text>
                <text x="100" y="292">(Authenticator</text>
                <text x="180" y="292">with</text>
                <text x="240" y="292">Evidence)</text>
                <text x="412" y="324">Send</text>
                <text x="468" y="324">Evidence</text>
                <text x="440" y="356">Attestation</text>
                <text x="420" y="372">Result</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
Client              Attester                 Server           Verifier
  |                   |                        |                  |
  |  Regular TLS Handshake (Server-only auth)  |                  |
  |<------------------------------------------>|                  |
  |                   |                        |                  |
  |   ... time passes ...                      |                  |
  |                   |                        |                  |
  | Authenticator Request (ClientCertReq), Nonce                  |
  |<-------------------------------------------|                  |
  |                   |                        |                  |
  | Request Evidence  |                        |                  |
  |------------------>|                        |                  |
  | Key Attestation   |                        |                  |
  | as Evidence       |                        |                  |
  |<------------------|                        |                  |
  |  Exported Authenticator                    |                  |
  |  (Authenticator with Evidence)             |                  |
  |------------------------------------------->|                  |
  |                   |                        | Send Evidence    |
  |                   |                        |----------------->|
  |                   |                        | Attestation      |
  |                   |                        | Result           |
  |                   |                        |<-----------------|
  |                   |                        |                  |
]]></artwork>
        </artset>
      </figure>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document inherits the security considerations of RFC 9261 and RFC 9334. The integrity of the exported authenticators must be guaranteed, and any failure in validating Evidence SHOULD be treated as a fatal error in the communication channel. Additionally, in order to benefit from remote attestation, it is recommended that Evidence MUST be protected using dedicated attestation keys chaining back to a trust anchor. This trust anchor will typically be provided by the hardware manufacturer.</t>
      <section anchor="using-the-tls-connection">
        <name>Using the TLS Connection</name>
        <t>Remote attestation in this document occurs within the context of a TLS handshake, and the TLS connection
remains valid after this process. Care must be taken when handling this TLS connection, as both the client
and server must agree that remote attestation was successfully completed before exchanging data with the
attested party.</t>
        <t>Session resumption presents special challenges since it happens at the TLS level, which is not aware of the
application-level Authenticator. The application (or the modified TLS library) must ensure that a resumed
session has already completed remote attestation before the session can be used normally, and race conditions are possible.</t>
      </section>
      <section anchor="evidence-freshness">
        <name>Evidence Freshness</name>
        <t>The evidence presented in this protocol is valid only at the time it is generated and presented. To ensure that
the attested peer remains in a secure state, remote attestation must be re-initiated
periodically. With the current protocol, this requires a new post-handshake authentication protocol run to be started.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TBD: Request a new entry in the "TLS Certificate Types" to carry a CMW.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-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="RFC9261">
          <front>
            <title>Exported Authenticators in TLS</title>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document describes a mechanism that builds on Transport Layer Security (TLS) or Datagram Transport Layer Security (DTLS) and enables peers to provide proof of ownership of an identity, such as an X.509 certificate. This proof can be exported by one peer, transmitted out of band to the other peer, and verified by the receiving peer.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9261"/>
          <seriesInfo name="DOI" value="10.17487/RFC9261"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="I-D.ietf-rats-msg-wrap">
          <front>
            <title>RATS Conceptual Messages Wrapper (CMW)</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <author fullname="Dionna Glaze" initials="D." surname="Glaze">
              <organization>Google LLC</organization>
            </author>
            <date day="28" month="February" year="2025"/>
            <abstract>
              <t>   This document defines a conceptual message wrapper (CMW) format - an
   encapsulation method applicable to any RATS conceptual message, such
   as Evidence, Attestation Results, Endorsements, and Reference Values.
   It also describes a collection type that aggregates one or more CMWs
   into a single message.

   In addition, this document specifies a corresponding CBOR tag, JSON
   Web Tokens (JWT) and CBOR Web Tokens (CWT) claims, and an X.509
   extension.  These mechanisms enable the embedding of enveloped
   conceptual messages into CBOR-based protocols, web APIs, and PKIX
   protocols.  Moreover, a Media Type and a CoAP Content-Format are
   defined for transporting CMWs over HTTP, MIME, CoAP, and other
   Internet protocols.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-12"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-lamps-csr-attestation">
          <front>
            <title>Use of Remote Attestation with Certification Signing Requests</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>Siemens</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Monty Wiseman" initials="M." surname="Wiseman">
              <organization>Beyond Identity</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel Corporation</organization>
            </author>
            <date day="2" month="March" year="2025"/>
            <abstract>
              <t>   A PKI end entity requesting a certificate from a Certification
   Authority (CA) may wish to offer trustworthy claims about the
   platform generating the certification request and the environment
   associated with the corresponding private key, such as whether the
   private key resides on a hardware security module.

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

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

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

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

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

<section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>We would like to thank Chris Patton for his proposal to explore RFC 9261 for attested TLS.
We would also like to thank Paul Howard and Yogesh Deshpande for their input.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
