<?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.39 (Ruby 3.2.3) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-fossati-tls-attestation-10" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Attestation in TLS/DTLS">Using Attestation in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
    <seriesInfo name="Internet-Draft" value="draft-fossati-tls-attestation-10"/>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization/>
      <address>
        <email>hannes.tschofenig@gmx.net</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="P." surname="Howard" fullname="Paul Howard">
      <organization>Arm Limited</organization>
      <address>
        <email>Paul.Howard@arm.com</email>
      </address>
    </author>
    <author initials="I." surname="Mihalcea" fullname="Ionut Mihalcea">
      <organization>Arm Limited</organization>
      <address>
        <email>Ionut.Mihalcea@arm.com</email>
      </address>
    </author>
    <author initials="Y." surname="Deshpande" fullname="Yogesh Deshpande">
      <organization>Arm Limited</organization>
      <address>
        <email>Yogesh.Deshpande@arm.com</email>
      </address>
    </author>
    <author initials="A." surname="Niemi" fullname="Arto Niemi">
      <organization>Huawei</organization>
      <address>
        <email>arto.niemi@huawei.com</email>
      </address>
    </author>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>Linaro</organization>
      <address>
        <email>thomas.fossati@linaro.org</email>
      </address>
    </author>
    <date year="2026" month="July" day="23"/>
    <area>Security</area>
    <workgroup>TLS</workgroup>
    <keyword>attestation</keyword>
    <keyword>RATS</keyword>
    <keyword>TLS</keyword>
    <abstract>
      <?line 144?>

<t>This draft has been withdrawn.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-fossati-tls-attestation/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/yaronf/draft-tls-attestation"/>.</t>
    </note>
  </front>
  <middle>
    <?line 148?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This draft has been withdrawn.</t>
      <t>Attestation <xref target="RFC9334"/> is the process by which an entity produces evidence about itself that another party can use to evaluate the trustworthiness of that entity.
This document describes a series of protocol extensions to the TLS 1.3 handshake that enables the binding of the TLS authentication key to a remote attestation session.
As a result, a peer can use "attestation credentials", consisting of compound platform evidence and key attestation, to authenticate itself to its peer during the setup of the TLS channel.
This enables an attester, such as a confidential workload running in a Trusted Execution Environment (TEE) <xref target="I-D.ietf-teep-architecture"/>, or an IoT device that is trying to authenticate itself to a network access point, to present a more comprehensive set of security metrics to its peer.
This, in turn, allows for the implementation of authorization policies at the relying parties that are based on stronger security signals.</t>
      <t>Given the variety of deployed and emerging attestation technologies (e.g., <xref target="TPM1.2"/>, <xref target="TPM2.0"/>, <xref target="I-D.ietf-rats-eat"/>) these extensions have been explicitly designed to be agnostic of the attestation formats.
This is achieved by reusing the generic encapsulation defined in <xref target="I-D.ietf-rats-msg-wrap"/> for transporting evidence and attestation result payloads in the TLS Certificate message.</t>
      <t>This specification provides both one-way (server-only) and mutual (client and server) authentication using attestation credentials, and allows the attestation topologies at each peer to be independent of each other.
The proposed design supports both background-check and passport topologies, as described in Sections <xref target="RFC9334" section="5.2" sectionFormat="bare"/> and <xref target="RFC9334" section="5.1" sectionFormat="bare"/> of <xref target="RFC9334"/>.
This is detailed in <xref target="evidence-extensions"/> and <xref target="attestation-results-extensions"/>.</t>
      <t>In addition, the design supports two ways of identifying the peer: a mode that combines normal X.509 certificate authentication with platform attestation, as well as an attestation-only mode.</t>
      <t>This document does not mandate any particular attestation technology.
Companion documents are expected to define specific attestation mechanisms.</t>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>The reader is assumed to be familiar with the vocabulary and concepts defined in
<xref section="4" sectionFormat="of" target="RFC9334"/>, and those in <xref section="2" sectionFormat="of" target="I-D.bft-rats-kat"/>.</t>
      <t>The following terms are used in this document:</t>
      <dl newline="true">
        <dt>TLS Identity Key (TIK):</dt>
        <dd>
          <t>A cryptographic key used by one of the peers to authenticate itself during the
TLS handshake. The protocol's security is critically dependent on the provenance, lifetime and
protection properties of the TIK, see <xref target="tik"/> for details.</t>
        </dd>
        <dt>TIK-C, TIK-S:</dt>
        <dd>
          <t>The TIK that identifies the client or the server, respectively.</t>
        </dd>
        <dt>TIK-C-ID, TIK-S-ID:</dt>
        <dd>
          <t>An identifier for TIK-C or respectively, TIK-S. This may be a fingerprint 
(cryptographic hash) of the public key, but other implementations are possible.</t>
        </dd>
      </dl>
      <t>The term "remote attestation credentials", or "attestation credentials", is used
to refer to both attestation evidence and attestation results, when no
distinction needs to be made between them.</t>
      <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?>

</section>
    <section anchor="overview">
      <name>Overview</name>
      <t>The basic functional goal is to link the authenticated key exchange of TLS with an interleaved remote attestation session in such a way that the key used to sign the handshake can be proven to be residing within the boundaries of an attested TEE.
The requirement is that the attester can provide evidence containing the security status of both the signing key and the platform that is hosting it.
The associated security goal is to obtain such binding so that no replay, relay or splicing from an adversary is possible.</t>
      <t>Throughout the document, we will assume the conceptual attester model described in <xref section="3" sectionFormat="of" target="I-D.bft-rats-kat"/>, where TEE attestation is provided by a Platform Attestation Token (PAT) signed by the attester's "attesting environment".
Among other security metrics, the PAT contains evidence about the integrity of a "Key Attestation Service" executing within the TEE which issues a Key Attestation Token (KAT) for the TLS handshake signing key (TIK) as described in <xref target="handshake-overview"/>.</t>
      <t>The protocol's security relies on the verifiable binding between these two logically separate units of evidence.</t>
      <section anchor="authentication-vs-attestation">
        <name>Authentication vs. Attestation</name>
        <t>As noted, the protocol supports either combined platform attestation with X.509 certificate authentication, or attestation only.</t>
        <t>Attestation when used alone is vulnerable to identity spoofing attacks, in particular when zero-day attacks exist for a class of hardware. (TODO: reference). Therefore it needs to be combined with traditional authentication, which in the case of TLS takes the form of CA-signed certificates.</t>
        <t>We RECOMMEND that regular applications only use the combined mode, which provides the full security guarantees of an authenticated TLS handshake (for the peer/peers being authenticated) as
well as guarantees of platform integrity.</t>
        <t>The attestation-only mode is included in this document for specialized use cases, including initial
provisioning of the TLS stack. In these cases, additional security controls <bcp14>SHOULD</bcp14> be provided,
such as hardware-enforced time limitations, or use of platform-level APIs in the case of cloud infrastructure.</t>
      </section>
      <section anchor="tik">
        <name>TLS Identity Key (TIK)</name>
        <t>A central property of this protocol is that it binds a peer's identity key, the TIK, to the TLS handshake.
This applies to the client's identity (TIK-C), the server's identity (TIK-S) or both.</t>
        <t>In the standard mode that combines attestation with certificate authentication, the TIK <bcp14>MUST</bcp14> be
the X.509 certificate's end entity key. The TIK is maintained and protected by the TEE, and this fact
is attested.</t>
        <t>In the attestation-only mode, the TIK is generated and maintained by the TEE and <bcp14>MUST</bcp14> be used only for TLS handshakes.
We RECOMMEND that the TIK be persistent within the TEE. When this is the case,
the TIK may be used by (specialized) applications to provide continuity of identity between TLS sessions with the same peer.</t>
      </section>
    </section>
    <section anchor="attestation-extensions">
      <name>Attestation Extensions</name>
      <t>As typical with new features in TLS, the client indicates support for the new
extension in the ClientHello message. The newly introduced extensions allow
remote attestation credentials and nonces to be exchanged. The nonces are used
for guaranteeing freshness of the exchanged evidence when the background check
model is in use. Nonces are not used in the passport model, because the expectation
of freshness is more relaxed and is only governed by the lifetime of the signed
attestation results.</t>
      <t>When either the Evidence or the Attestation Results extension is successfully
negotiated, the content of the corresponding Certificate message contains a
payload that is encoded based on the wrapper defined in <xref target="I-D.ietf-rats-msg-wrap"/>.
Both JSON and CBOR serializations are allowed in CMW, with the emitter choosing which serialization to use.</t>
      <t>The attestation payload <bcp14>MUST</bcp14> contain assertions relating to the client's TLS
Identity Key (TIK-C), which associate the private key with the attestation
information. These assertions may come in the form of a Key Attestation Token
(KAT), or of specific claims in an attestation result document. An example of a
KAT format utilizing the EAT format can be found in <xref target="I-D.bft-rats-kat"/>.</t>
      <t>The relying party can obtain and appraise the remote attestation results either
directly from the Certificate message (in the passport model), or by relaying
the evidence from the Certificate message to the verifier and receiving the
attestation results. Subsequently, the attested key is used to verify the
CertificateVerify message.</t>
      <t>When using the passport model, the remote attestation results obtained by the
attester from its trusted verifiers can be cached and used for any number of
subsequent TLS handshakes, as long as the freshness policy requirements are
satisfied.</t>
      <t>In TLS a client has to demonstrate possession of the private key via the
CertificateVerify message, when client-based authentication is requested.
This behavior remains unchanged in the current protocol, with the CertificateVerify
message proving possession of the TIK.</t>
      <t>This protocol supports both monolithic and split implementations. In a monolithic
implementation, the TLS stack is completely embedded within the TEE. In a split
implementation, the TLS stack is located outside the TEE, but any private keys
(and in particular, the TIK) only exist within the TEE. In order to support
both options, only the TIK's identity and its public component are ever
passed between the Client or Server TLS stack and its Attestation Service.
While the two types of implementations offer identical functionality,
their security properties often differ, see <xref target="sec-guarantees"/> for more details.</t>
    </section>
    <section anchor="use-of-remote-attestation-credentials-in-the-tls-handshake">
      <name>Use of Remote Attestation Credentials in the TLS Handshake</name>
      <t>For both the passport model (described in section 5.1 of <xref target="RFC9334"/>) and
background check model (described in Section 5.2 of <xref target="RFC9334"/>) the following
modes of operation are allowed when used with TLS, namely:</t>
      <ul spacing="normal">
        <li>
          <t>TLS client is the attester,</t>
        </li>
        <li>
          <t>TLS server is the attester, and</t>
        </li>
        <li>
          <t>TLS client and server mutually attest towards each other.</t>
        </li>
      </ul>
      <t>We will show the message exchanges of the first two cases in sub-sections below.
Mutual authentication via attestation combines these two (non-interfering)
flows, including cases where one of the peers uses the passport model for its
attestation, and the other uses the background check model.</t>
      <section anchor="handshake-overview">
        <name>Handshake Overview</name>
        <t>The handshake defined here is analogous to certificate-based authentication in a regular TLS handshake.
We use the TLS Identity Key (TIK) which is either a stand-alone key or is identical
to the certificate's private key (see <xref target="tik"/>).
This key is attested, with attestation being carried
in the Certificate message. Following that, the peer being attested proves possession of the private key using the CertificateVerify message.</t>
        <t>Depending on the use case, the protocol supports peer authentication
using attestation only, or using both attestation and a regular public
key certificate.</t>
        <t>The current version of the document assumes the KAT/PAT construct of 
<xref target="I-D.bft-rats-kat"/>. Not all platforms support this model, and a document
that defines private key attestation for use in TLS Attestation as defined here, must specify
how the key is attested using a structure carried by the
Certificate message.</t>
      </section>
      <section anchor="tls-client-authenticating-using-evidence">
        <name>TLS Client Authenticating Using Evidence</name>
        <t>In this use case, the TLS server (acting as a relying party) challenges the TLS
client (as the attester) to provide evidence. The TLS server needs to provide a
nonce in the EncryptedExtensions message to the TLS client so that the
attestation service can feed the nonce into the generation of the evidence. The
TLS server, when receiving the evidence, will have to contact the verifier
(which is not shown in the diagram).</t>
        <t>An example of this flow can be found in device onboarding where the 
client initiates the communication with cloud infrastructure to 
get credentials, firmware and other configuration data provisioned
to the device. For the server to consider the device genuine it needs
to present evidence.</t>
        <figure anchor="_figure-background-check-model1">
          <name>TLS Client Providing Evidence to TLS Server.</name>
          <artwork><![CDATA[
       Client                                           Server

Key  ^ ClientHello
Exch | + evidence_proposal
     | + key_share*
     | + signature_algorithms*
     v                         -------->
                                                  ServerHello  ^ Key
                                                 + key_share*  | Exch
                                                               v
                                        {EncryptedExtensions}  ^  Server
                                          + evidence_proposal  |  Params
                                                      (nonce)  |
                                         {CertificateRequest}  v  
                                                {Certificate}  ^
                                          {CertificateVerify}  | Auth
                                                   {Finished}  v
                               <--------  [Application Data*]
     ^ {Certificate}
Auth | {CertificateVerify}
     v {Finished}              -------->
       [Application Data]      <------->  [Application Data]
]]></artwork>
        </figure>
      </section>
      <section anchor="tls-server-authenticating-using-evidence">
        <name>TLS Server Authenticating Using Evidence</name>
        <t>In this use case the TLS client challenges the TLS server to present evidence. 
The TLS server acts as an attester while the TLS client is the relying party. 
The TLS client, when receiving the evidence, will have to contact the verifier 
(which is not shown in the diagram).</t>
        <t>An example of this flow can be found in confidential computing where 
a compute workload is only submitted to the server infrastructure 
once the client/user is assured that the confidential computing platform is
genuine.</t>
        <figure anchor="_figure-background-check-model2">
          <name>TLS Server Providing Evidence to TLS Client.</name>
          <artwork><![CDATA[
       Client                                           Server

Key  ^ ClientHello
Exch | + evidence_request
     |   (nonce)
     | + key_share*
     | + signature_algorithms*
     v                         -------->
                                                  ServerHello  ^ Key
                                                 + key_share*  | Exch
                                                               v
                                        {EncryptedExtensions}  ^  Server
                                          + evidence_request   |  Params
                                                               |
                                         {CertificateRequest}  v  
                                                {Certificate}  ^
                                          {CertificateVerify}  | Auth
                                                   {Finished}  v
                               <--------  [Application Data*]
     ^ {Certificate}
Auth | {CertificateVerify}
     v {Finished}              -------->
       [Application Data]      <------->  [Application Data]
]]></artwork>
        </figure>
      </section>
      <section anchor="tls-client-authenticating-using-attestation-results">
        <name>TLS Client Authenticating Using Attestation Results</name>
        <t>In this use case the TLS client, as the attester, provides attestation results
to the TLS server. The TLS client is the attester and the TLS server acts as
a relying party. Prior to delivering its Certificate message, the client must
contact the verifier (not shown in the diagram) to receive the attestation
results that it will use as credentials.</t>
        <figure anchor="_figure-passport-model1">
          <name>TLS Client Providing Results to TLS Server.</name>
          <artwork><![CDATA[
       Client                                           Server

Key  ^ ClientHello
Exch | + results_proposal
     | + key_share*
     | + signature_algorithms*
     v                         -------->
                                                  ServerHello  ^ Key
                                                 + key_share*  | Exch
                                                               v
                                        {EncryptedExtensions}  ^  Server
                                           + results_proposal  |  Params
                                         {CertificateRequest}  v  
                                                {Certificate}  ^
                                          {CertificateVerify}  | Auth
                                                   {Finished}  v
                               <--------  [Application Data*]
     ^ {Certificate}
Auth | {CertificateVerify}
     v {Finished}              -------->
       [Application Data]      <------->  [Application Data]
]]></artwork>
        </figure>
      </section>
      <section anchor="tls-server-authenticating-using-attestation-results">
        <name>TLS Server Authenticating Using Attestation Results</name>
        <t>In this use case the TLS client, as the relying party, requests attestation
results from the TLS server. Prior to delivering its Certificate message, the
server must contact the verifier (not shown in the diagram) to receive the
attestation results that it will use as credentials.</t>
        <figure anchor="_figure-passport-model2">
          <name>TLS Server Providing Attestation Results to TLS Client.</name>
          <artwork><![CDATA[
       Client                                           Server

Key  ^ ClientHello
Exch | + results_request
     | + key_share*
     | + signature_algorithms*
     v                         -------->
                                                  ServerHello  ^ Key
                                                 + key_share*  | Exch
                                                               v
                                        {EncryptedExtensions}  ^  Server
                                           + results_request   |  Params
                                                               |
                                         {CertificateRequest}  v  
                                                {Certificate}  ^
                                          {CertificateVerify}  | Auth
                                                   {Finished}  v
                               <--------  [Application Data*]
     ^ {Certificate}
Auth | {CertificateVerify}
     v {Finished}              -------->
       [Application Data]      <------->  [Application Data]
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="evidence-extensions">
      <name>Evidence Extensions (Background Check Model)</name>
      <t>The EvidenceType structure contains an indicator for the type of credential
expected in the Certificate message. The credential can either contain
attestation evidence alone, or an X.509 certificate alongside attestation
evidence.</t>
      <figure anchor="_figure-extension-evidence">
        <name>TLS Extension Structure for Evidence.</name>
        <artwork><![CDATA[
    enum { CONTENT_FORMAT(0), MEDIA_TYPE(1) } typeEncoding;
    enum { ATTESTATION(0), CERT_ATTESTATION(1) } credentialKind;

    struct {
        credentialKind credential_kind;
        typeEncoding type_encoding;
        select (EvidenceType.type_encoding) {
            case CONTENT_FORMAT:
                uint16 content_format;
            case MEDIA_TYPE:
                opaque media_type<0..2^16-1>;
        };
    } EvidenceType;

    struct {
        select(Handshake.msg_type) {
            case client_hello:
                EvidenceType supported_evidence_types<1..2^8-1>;
                opaque nonce<8..2^8-1>;
            case server_hello:
                EvidenceType selected_evidence_type;
        }
    } evidenceRequestTypeExtension;

    struct {
        select(Handshake.msg_type) {
            case client_hello:
                EvidenceType supported_evidence_types<1..2^8-1>;
            case server_hello:
                EvidenceType selected_evidence_type;
                opaque nonce<8..2^8-1>;
        }
    } evidenceProposalTypeExtension;
]]></artwork>
      </figure>
      <t>Values for media_type are defined in <xref target="iana-media-types"/>.
Values for content_format are defined in <xref target="iana-content-formats"/>.</t>
      <section anchor="attest-only">
        <name>Attestation-only</name>
        <t>When the chosen evidence type indicates the sole use of attestation for
authentication, the Certificate payload is used as a container for
attestation evidence, as shown in <xref target="_figure-attest-only"/>, and follows the
model of <xref target="RFC8446"/>.</t>
        <figure anchor="_figure-attest-only">
          <name>Certificate Message when using only attestation.</name>
          <artwork><![CDATA[
    struct {
        select (certificate_type) {
            case RawPublicKey:
                /* From RFC 7250 ASN.1_subjectPublicKeyInfo */
                opaque ASN1_subjectPublicKeyInfo<1..2^24-1>;

              case X509:
                opaque cert_data<1..2^24-1>;

              case attestation:
                  /* payload used to convey evidence */
                  opaque evidence<1..2^24-1>;
          };
          Extension extensions<0..2^16-1>;
      } CertificateEntry;

      struct {
          opaque certificate_request_context<0..2^8-1>;
          CertificateEntry certificate_list<0..2^24-1>;
      } Certificate;
]]></artwork>
        </figure>
        <t>The encoding of the evidence structure is defined in <xref target="I-D.ietf-rats-msg-wrap"/>.
When using the Key Attestation Token defined in <xref target="I-D.bft-rats-kat"/>, the evidence
structure consists of the KAT and PAT bundle defined there, and the CMW collection <bcp14>MUST NOT</bcp14> contain
any other elements.</t>
      </section>
      <section anchor="pkix-attest">
        <name>Attestation Alongside X.509 Certificates</name>
        <t>When the chosen evidence type indicates usage of both attestation and PKIX,
the X.509 certificate will serve as the main payload in the Certificate
message, while the attestation evidence will be carried in the
CertificateEntry extension, as shown in <xref target="_figure-cert-attest"/>.</t>
        <figure anchor="_figure-cert-attest">
          <name>Certificate Message when using PKIX and attestation.</name>
          <artwork><![CDATA[
    struct {
        select (certificate_type) {
            case RawPublicKey:
                /* From RFC 7250 ASN.1_subjectPublicKeyInfo */
                opaque ASN1_subjectPublicKeyInfo<1..2^24-1>;
              
            case X509:
                /* X.509 certificate conveyed as usual */
                opaque cert_data<1..2^24-1>;
        };

        /* attestation evidence conveyed as an extension, see below */
        Extension extensions<0..2^16-1>;
      } CertificateEntry;

    struct {
        opaque certificate_request_context<0..2^8-1>;
        CertificateEntry certificate_list<0..2^24-1>;
    } Certificate;

    struct {
        ExtensionType extension_type;
        /* payload used to convey evidence */
        opaque extension_data<0..2^16-1>;
    } Extension;

    enum {
        /* other extension types defined in the IANA TLS 
           ExtensionType Value registry */

        /* variant used to identify attestation evidence */
        attestation_evidence(60),
        (65535)
    } ExtensionType;
]]></artwork>
        </figure>
        <t>The encoding of the evidence structure is defined in <xref target="I-D.ietf-rats-msg-wrap"/>.
When using the Key Attestation Token defined in <xref target="I-D.bft-rats-kat"/>, the evidence
structure consists of the KAT and PAT bundle defined there, and the CMW collection <bcp14>MUST NOT</bcp14> contain
any other elements.</t>
      </section>
    </section>
    <section anchor="attestation-results-extensions">
      <name>Attestation Results Extensions (Passport Model)</name>
      <figure anchor="_figure-extension-results">
        <name>TLS Extension Structure for Attestation Results.</name>
        <artwork><![CDATA[
    struct {
        opaque verifier_identity<0..2^16-1>;
    } VerifierIdentityType;
      
    struct {
        select(Handshake.msg_type) {
            case client_hello:
                VerifierIdentityType trusted_verifiers<1..2^8-1>;
                 
            case server_hello:
                VerifierIdentityType selected_verifier;
        }
    } resultsRequestTypeExtension;

    struct {
        select(Handshake.msg_type) {
            case client_hello:
                VerifierIdentityType trusted_verifiers<1..2^8-1>;

            case server_hello:
                VerifierIdentityType selected_verifier;
        }
    } resultsProposalTypeExtension;
]]></artwork>
      </figure>
      <t>In the Passport model, both attestation results and an indication of key attestation are
sent in a CMW structure within the Certificate message. The exact contents of this structure is
TBD.</t>
    </section>
    <section anchor="behavior">
      <name>TLS Client and Server Handshake Behavior</name>
      <t>The high-level message exchange in <xref target="_figure-overview"/> shows the
evidence_proposal, evidence_request, results_proposal, and results_request
extensions added to the ClientHello and the EncryptedExtensions messages.</t>
      <figure anchor="_figure-overview">
        <name>Attestation Message Overview.</name>
        <artwork><![CDATA[
       Client                                           Server

Key  ^ ClientHello
Exch | + key_share*
     | + signature_algorithms*
     | + psk_key_exchange_modes*
     | + pre_shared_key*
     | + evidence_proposal*
     | + evidence_request*
     | + results_proposal*
     v + results_request*
     -------->
                                                  ServerHello  ^ Key
                                                 + key_share*  | Exch
                                            + pre_shared_key*  v
                                        {EncryptedExtensions}  ^  Server
                                         + evidence_proposal*  |
                                          + evidence_request*  |
                                          + results_proposal*  |
                                           + results_request*  |
                                        {CertificateRequest*}  v  Params
                                               {Certificate*}  ^
                                         {CertificateVerify*}  | Auth
                                                   {Finished}  v
                               <--------  [Application Data*]
     ^ {Certificate*}
Auth | {CertificateVerify*}
     v {Finished}              -------->
       [Application Data]      <------->  [Application Data]
]]></artwork>
      </figure>
      <section anchor="background-check-model">
        <name>Background Check Model</name>
        <section anchor="client-hello">
          <name>Client Hello</name>
          <t>To indicate the support for passing evidence in TLS following the 
background check model, clients include the evidence_proposal 
and/or the evidence_request extensions in the ClientHello.</t>
          <t>The evidence_proposal extension in the ClientHello message indicates
the evidence types the client is able to provide to the server,
when requested using a CertificateRequest message.</t>
          <t>The evidence_request extension in the ClientHello message indicates
the evidence types the client challenges the server to 
provide in a subsequent Certificate payload.</t>
          <t>The evidence_proposal and evidence_request extensions sent in
the ClientHello each carry a list of supported evidence types,
sorted by preference.  When the client supports only one evidence
type, it is a list containing a single element.</t>
          <t>The client <bcp14>MUST</bcp14> omit evidence types from the evidence_proposal 
extension in the ClientHello if it cannot respond to a request
from the server to present a proposed evidence type, or if 
the client is not configured to use the proposed evidence type 
with the given server.  If the client has no evidence types 
to send in the ClientHello it <bcp14>MUST</bcp14> omit the evidence_proposal
extension in the ClientHello.</t>
          <t>The client <bcp14>MUST</bcp14> omit evidence types from the evidence_request
extension in the ClientHello if it is not able to pass the 
indicated verification type to a verifier.  If the client does 
not act as a relying party with regards to evidence processing
(as defined in the RATS architecture) then the client <bcp14>MUST</bcp14> 
omit the evidence_request extension from the ClientHello.</t>
        </section>
        <section anchor="server-hello">
          <name>Server Hello</name>
          <t>If the server receives a ClientHello that contains the
evidence_proposal extension and/or the evidence_request
extension, then three outcomes are possible:</t>
          <ul spacing="normal">
            <li>
              <t>The server does not support the extensions defined in this
document.  In this case, the server returns the EncryptedExtensions
without the extensions defined in this document.</t>
            </li>
            <li>
              <t>The server supports the extensions defined in this document, but
it does not have any evidence type in common with the client.
Then, the server terminates the session with a fatal alert of
type "unsupported_evidence".</t>
            </li>
            <li>
              <t>The server supports the extensions defined in this document and
has at least one evidence type in common with the client.  In
this case, the processing rules described below are followed.</t>
            </li>
          </ul>
          <t>The evidence_proposal extension in the ClientHello indicates
the evidence types the client is able to provide to the server,
when challenged using a CertificateRequest message.  If the
server wants to request evidence from the client, it <bcp14>MUST</bcp14> include the
evidence_proposal extension in the EncryptedExtensions. This
evidence_proposal extension in the EncryptedExtensions then indicates
what evidence format the client is requested to provide in a
subsequent Certificate message.  The value conveyed in the
evidence_proposal extension by the server <bcp14>MUST</bcp14> be selected from one of the
values provided in the evidence_proposal extension sent in the
ClientHello.  The server <bcp14>MUST</bcp14> also send a CertificateRequest
message.</t>
          <t>If the server does not send a CertificateRequest message or none 
of the evidence types supported by the client (as indicated in the
evidence_proposal extension in the ClientHello) match the
server-supported evidence types, then the evidence_proposal
extension in the ServerHello <bcp14>MUST</bcp14> be omitted.</t>
          <t>The evidence_request extension in the ClientHello indicates what
types of evidence the client can challenge the server to return
in a subsequent Certificate message. With the evidence_request 
extension in the EncryptedExtensions, the server indicates the 
evidence type carried in the Certificate message sent by the server.
The evidence type in the evidence_request extension <bcp14>MUST</bcp14> contain 
a single value selected from the evidence_request extension in 
the ClientHello.</t>
        </section>
      </section>
      <section anchor="passport-model">
        <name>Passport Model</name>
        <t>The <tt>results_proposal</tt> and <tt>results_request</tt> extensions are used to negotiate
the protocol defined in this document, and in particular the verifier identities supported by each peer. These
extensions are included in the ClientHello and ServerHello messages.</t>
        <section anchor="client-hello-1">
          <name>Client Hello</name>
          <t>To indicate the support for passing attestation results in TLS following the
passport model, clients include the results_proposal and/or the results_request
extensions in the ClientHello message.</t>
          <t>The results_proposal extension in the ClientHello message indicates the verifier
identities from which the client can relay attestation results, when requested using a
CertificateRequest message.</t>
          <t>The results_request extension in the ClientHello message indicates the verifier
identities from which the client expects the server to provide attestation
results in a subsequent Certificate payload.</t>
          <t>The results_proposal and results_request extensions sent in the ClientHello each
carry a list of supported verifier identities, sorted by preference.  When the
client supports only one verifier, it is a list containing a single element.</t>
          <t>The client <bcp14>MUST</bcp14> omit verifier identities from the results_proposal extension in
the ClientHello if it cannot respond to a request from the server to present
attestation results from a proposed verifier, or if the client is not configured
to relay the results from the proposed verifier with the given server. If the
client has no verifier identities to send in the ClientHello it <bcp14>MUST</bcp14> omit the
results_proposal extension in the ClientHello.</t>
          <t>The client <bcp14>MUST</bcp14> omit verifier identities from the results_request extension in
the ClientHello if it is not configured to trust attestation results issued by
said verifiers. If the client does not act as a relying party with regards to
the processing of attestation results (as defined in the RATS architecture) then
the client <bcp14>MUST</bcp14> omit the results_request extension from the ClientHello.</t>
        </section>
        <section anchor="server-hello-1">
          <name>Server Hello</name>
          <t>If the server receives a ClientHello that contains the results_proposal
extension and/or the results_request extension, then three outcomes are
possible:</t>
          <ul spacing="normal">
            <li>
              <t>The server does not support the extensions defined in this document.  In this
case, the server returns the EncryptedExtensions without the extensions
defined in this document.</t>
            </li>
            <li>
              <t>The server supports the extensions defined in this document, but it does not
have any trusted verifiers in common with the client. Then, the server
terminates the session with a fatal alert of type "unsupported_verifiers".</t>
            </li>
            <li>
              <t>The server supports the extensions defined in this document and has at least
one trusted verifier in common with the client.  In this case, the processing
rules described below are followed.</t>
            </li>
          </ul>
          <t>The results_proposal extension in the ClientHello indicates the verifier
identities from which the client is able to provide attestation results to the
server, when challenged using a CertificateRequest message.  If the server
wants to request evidence from the client, it <bcp14>MUST</bcp14> include the results_proposal
extension in the EncryptedExtensions. This results_proposal extension in the
EncryptedExtensions then indicates what verifier the client is requested to
provide attestation results from in a subsequent Certificate message.  The value
conveyed in the results_proposal extension by the server <bcp14>MUST</bcp14> be selected from
one of the values provided in the results_proposal extension sent in the
ClientHello.  The server <bcp14>MUST</bcp14> also send a CertificateRequest message.</t>
          <t>If the server does not send a CertificateRequest message or none of the
verifier identities proposed by the client (as indicated in the results_proposal
extension in the ClientHello) match the server-trusted verifiers, then the
results_proposal extension in the ServerHello <bcp14>MUST</bcp14> be omitted.</t>
          <t>The results_request extension in the ClientHello indicates what verifiers the
client trusts as issuers of attestation results for the server. With the
results_request extension in the EncryptedExtensions, the server indicates the
identity of the verifier who issued the attestation results carried in the
Certificate message sent by the server. The verifier identity in the
results_request extension <bcp14>MUST</bcp14> contain a single value selected from the
results_request extension in the ClientHello.</t>
        </section>
      </section>
    </section>
    <section anchor="example-use-cases">
      <name>Example Use Cases</name>
      <t>This section includes specific usage scenarios of attested TLS. Both scenarios
are based on the background-check validation model.</t>
      <section anchor="cloud-confidential-computing">
        <name>Cloud Confidential Computing</name>
        <t>In this example, a confidential workload is executed on computational
resources hosted at a cloud service provider.  This is a typical
scenario for secure, privacy-preserving multiparty computation,
including anti-money laundering, drug development in healthcare, contact
tracing in pandemic times, Machine Learning (ML) model training, etc.</t>
        <t>In such scenarios, the users (e.g., the party providing the data input for the
computation, the party consuming the computed results, or the party
providing a proprietary ML model used in the computation) have two goals:</t>
        <ul spacing="normal">
          <li>
            <t>Identifying the workload they are interacting with,</t>
          </li>
          <li>
            <t>Making sure that the platform on which the workload executes is a
Trusted Execution Environment (TEE) with the expected features.</t>
          </li>
        </ul>
        <t>A convenient arrangement is to verify that the two requirements are met
at the same time that the secure channel is established.</t>
        <t>The protocol flow, alongside all the involved actors, is captured in
<xref target="_figure-cc-example"/> where the TLS client is the user (the relying
party) while the TLS server is co-located with the TEE-hosted
confidential workload (the attester).</t>
        <t>The flow starts with the client initiating a verification session with a
trusted verifier.  The verifier returns the evidence types it
understands and a nonce that will be used to challenge the attester.</t>
        <t>The client starts the TLS handshake with the server by supplying the
attestation-related parameters it has obtained from the verifier.  If
the server supports one of the offered evidence types, it will echo it
in the specular extension and proceed by invoking a local API
(represented by <tt>attest_key(...)</tt> in the figure below) to request
attestation using the nonce supplied by the verifier.  The returned
evidence binds the identity key (TIK-S) with the platform identity and
security state, packaged into a CAB.  The server then signs a transcript
hash with the (attested) identity key, and sends the attestation
evidence and the signature in the Certificate and the CertificateVerify
messages respectively. The transcript hash, denoted <tt>hs</tt> in the figure
below, follows the <tt>Transcript-Hash</tt> definition from <xref section="4.4.1" sectionFormat="of" target="RFC8446"/>.</t>
        <t>The client forwards the attestation evidence to the verifier using the
previously established session, obtains the attestation result (AR) and
checks whether it is acceptable according to its local policy.  If so,
it proceeds and verifies the handshake signature using the corresponding
public key (for example, using the PoP key in the KAT evidence
<xref target="I-D.bft-rats-kat"/>).</t>
        <t>The attestation evidence verification combined with the verification of
the CertificateVerify signature provide confirmation that the presented
cryptographic identity is bound to the workload and platform identity,
and that the workload and platform are trustworthy.  Therefore, after
the handshake is finalized, the client can trust the workload on the
other side of the established secure channel to provide the required
confidential computing properties.</t>
        <figure anchor="_figure-cc-example">
          <name>Example Exchange with Server as Attester.</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1168" width="576" viewBox="0 0 576 1168" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,48 L 8,80" fill="none" stroke="black"/>
                <path d="M 8,272 L 8,1088" fill="none" stroke="black"/>
                <path d="M 32,80 L 32,272" fill="none" stroke="black"/>
                <path d="M 32,304 L 32,1104" fill="none" stroke="black"/>
                <path d="M 96,48 L 96,80" fill="none" stroke="black"/>
                <path d="M 136,288 L 136,304" fill="none" stroke="black"/>
                <path d="M 168,48 L 168,80" fill="none" stroke="black"/>
                <path d="M 200,80 L 200,1152" fill="none" stroke="black"/>
                <path d="M 240,48 L 240,80" fill="none" stroke="black"/>
                <path d="M 280,368 L 280,376" fill="none" stroke="black"/>
                <path d="M 368,32 L 368,80" fill="none" stroke="black"/>
                <path d="M 400,80 L 400,1152" fill="none" stroke="black"/>
                <path d="M 448,40 L 448,72" fill="none" stroke="black"/>
                <path d="M 528,80 L 528,672" fill="none" stroke="black"/>
                <path d="M 528,704 L 528,1104" fill="none" stroke="black"/>
                <path d="M 568,32 L 568,80" fill="none" stroke="black"/>
                <path d="M 568,320 L 568,1088" fill="none" stroke="black"/>
                <path d="M 368,32 L 568,32" fill="none" stroke="black"/>
                <path d="M 8,48 L 96,48" fill="none" stroke="black"/>
                <path d="M 168,48 L 240,48" fill="none" stroke="black"/>
                <path d="M 8,80 L 96,80" fill="none" stroke="black"/>
                <path d="M 168,80 L 240,80" fill="none" stroke="black"/>
                <path d="M 368,80 L 568,80" fill="none" stroke="black"/>
                <path d="M 40,128 L 200,128" fill="none" stroke="black"/>
                <path d="M 32,240 L 192,240" fill="none" stroke="black"/>
                <path d="M 8,272 L 120,272" fill="none" stroke="black"/>
                <path d="M 8,304 L 552,304" fill="none" stroke="black"/>
                <path d="M 200,416 L 392,416" fill="none" stroke="black"/>
                <path d="M 400,496 L 520,496" fill="none" stroke="black"/>
                <path d="M 408,528 L 528,528" fill="none" stroke="black"/>
                <path d="M 208,672 L 400,672" fill="none" stroke="black"/>
                <path d="M 400,704 L 520,704" fill="none" stroke="black"/>
                <path d="M 408,736 L 528,736" fill="none" stroke="black"/>
                <path d="M 208,784 L 400,784" fill="none" stroke="black"/>
                <path d="M 40,880 L 200,880" fill="none" stroke="black"/>
                <path d="M 32,944 L 192,944" fill="none" stroke="black"/>
                <path d="M 200,960 L 224,960" fill="none" stroke="black"/>
                <path d="M 208,992 L 224,992" fill="none" stroke="black"/>
                <path d="M 200,1008 L 224,1008" fill="none" stroke="black"/>
                <path d="M 208,1040 L 224,1040" fill="none" stroke="black"/>
                <path d="M 200,1072 L 392,1072" fill="none" stroke="black"/>
                <path d="M 24,1104 L 552,1104" fill="none" stroke="black"/>
                <path d="M 208,1136 L 392,1136" fill="none" stroke="black"/>
                <path d="M 120,272 C 128.83064,272 136,279.16936 136,288" fill="none" stroke="black"/>
                <path d="M 552,304 C 560.83064,304 568,311.16936 568,320" fill="none" stroke="black"/>
                <path d="M 224,960 C 232.83064,960 240,967.16936 240,976" fill="none" stroke="black"/>
                <path d="M 224,992 C 232.83064,992 240,984.83064 240,976" fill="none" stroke="black"/>
                <path d="M 224,1008 C 232.83064,1008 240,1015.16936 240,1024" fill="none" stroke="black"/>
                <path d="M 224,1040 C 232.83064,1040 240,1032.83064 240,1024" fill="none" stroke="black"/>
                <path d="M 24,1104 C 15.16936,1104 8,1096.83064 8,1088" fill="none" stroke="black"/>
                <path d="M 552,1104 C 560.83064,1104 568,1096.83064 568,1088" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="528,704 516,698.4 516,709.6" fill="black" transform="rotate(0,520,704)"/>
                <polygon class="arrowhead" points="528,496 516,490.4 516,501.6" fill="black" transform="rotate(0,520,496)"/>
                <polygon class="arrowhead" points="416,736 404,730.4 404,741.6" fill="black" transform="rotate(180,408,736)"/>
                <polygon class="arrowhead" points="416,528 404,522.4 404,533.6" fill="black" transform="rotate(180,408,528)"/>
                <polygon class="arrowhead" points="400,1136 388,1130.4 388,1141.6" fill="black" transform="rotate(0,392,1136)"/>
                <polygon class="arrowhead" points="400,1072 388,1066.4 388,1077.6" fill="black" transform="rotate(0,392,1072)"/>
                <polygon class="arrowhead" points="400,416 388,410.4 388,421.6" fill="black" transform="rotate(0,392,416)"/>
                <polygon class="arrowhead" points="216,1136 204,1130.4 204,1141.6" fill="black" transform="rotate(180,208,1136)"/>
                <polygon class="arrowhead" points="216,1040 204,1034.4 204,1045.6" fill="black" transform="rotate(180,208,1040)"/>
                <polygon class="arrowhead" points="216,992 204,986.4 204,997.6" fill="black" transform="rotate(180,208,992)"/>
                <polygon class="arrowhead" points="216,784 204,778.4 204,789.6" fill="black" transform="rotate(180,208,784)"/>
                <polygon class="arrowhead" points="216,672 204,666.4 204,677.6" fill="black" transform="rotate(180,208,672)"/>
                <polygon class="arrowhead" points="200,944 188,938.4 188,949.6" fill="black" transform="rotate(0,192,944)"/>
                <polygon class="arrowhead" points="200,240 188,234.4 188,245.6" fill="black" transform="rotate(0,192,240)"/>
                <polygon class="arrowhead" points="48,880 36,874.4 36,885.6" fill="black" transform="rotate(180,40,880)"/>
                <polygon class="arrowhead" points="48,128 36,122.4 36,133.6" fill="black" transform="rotate(180,40,128)"/>
                <g class="text">
                  <text x="404" y="52">Server</text>
                  <text x="512" y="52">Attestation</text>
                  <text x="52" y="68">Verifier</text>
                  <text x="204" y="68">Client</text>
                  <text x="496" y="68">Service</text>
                  <text x="68" y="116">POST</text>
                  <text x="136" y="116">/newSession</text>
                  <text x="56" y="148">201</text>
                  <text x="104" y="148">Created</text>
                  <text x="80" y="164">Location:</text>
                  <text x="156" y="164">/76839A9</text>
                  <text x="64" y="180">Body:</text>
                  <text x="96" y="180">{</text>
                  <text x="84" y="196">nonce,</text>
                  <text x="124" y="212">supp-media-types</text>
                  <text x="48" y="228">}</text>
                  <text x="32" y="292">TLS</text>
                  <text x="88" y="292">handshake</text>
                  <text x="256" y="324">ClientHello</text>
                  <text x="240" y="340">{...}</text>
                  <text x="288" y="356">evidence_request(</text>
                  <text x="256" y="372">nonce</text>
                  <text x="284" y="388">types(a,b,c)</text>
                  <text x="224" y="404">)</text>
                  <text x="456" y="436">attest_key(</text>
                  <text x="452" y="452">nonce,</text>
                  <text x="460" y="468">TIK-S-ID</text>
                  <text x="416" y="484">)</text>
                  <text x="444" y="516">CAB(KAT,</text>
                  <text x="500" y="516">PAT)</text>
                  <text x="256" y="548">ServerHello</text>
                  <text x="240" y="564">{...}</text>
                  <text x="288" y="580">EncryptedExtensions</text>
                  <text x="240" y="596">{...}</text>
                  <text x="288" y="612">evidence_request(</text>
                  <text x="264" y="628">type(a)</text>
                  <text x="224" y="644">)</text>
                  <text x="292" y="660">Certificate(KAT,PAT)</text>
                  <text x="472" y="692">sign(TIK-S-ID,hs)</text>
                  <text x="456" y="724">sig</text>
                  <text x="300" y="756">CertificateVerify(sig)</text>
                  <text x="244" y="772">Finished</text>
                  <text x="60" y="804">POST</text>
                  <text x="120" y="804">/76839A9E</text>
                  <text x="64" y="820">Body:</text>
                  <text x="96" y="820">{</text>
                  <text x="92" y="836">type(a),</text>
                  <text x="72" y="852">CAB</text>
                  <text x="48" y="868">}</text>
                  <text x="64" y="900">Body:</text>
                  <text x="96" y="900">{</text>
                  <text x="104" y="916">att-result:</text>
                  <text x="172" y="916">AR{}</text>
                  <text x="48" y="932">}</text>
                  <text x="276" y="980">verify</text>
                  <text x="324" y="980">AR{}</text>
                  <text x="276" y="1028">verify</text>
                  <text x="320" y="1028">sig</text>
                  <text x="292" y="1060">Finished</text>
                  <text x="280" y="1124">application</text>
                  <text x="348" y="1124">data</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                                             .------------------------.
.----------.        .--------.               | Server  |  Attestation |
| Verifier |        | Client |               |         |  Service     |
'--+-------'        '---+----'               '---+---------------+----'
   |                    |                        |               |
   |  POST /newSession  |                        |               |
   |<-------------------+                        |               |
   | 201 Created        |                        |               |
   | Location: /76839A9 |                        |               |
   | Body: {            |                        |               |
   |   nonce,           |                        |               |
   |   supp-media-types |                        |               |
   | }                  |                        |               |
   +------------------->|                        |               |
   |                    |                        |               |
.--+-----------.        |                        |               |
| TLS handshake |       |                        |               |
+--+------------+-------+------------------------+---------------+---.
|  |                    | ClientHello            |               |    |
|  |                    |  {...}                 |               |    |
|  |                    |  evidence_request(     |               |    |
|  |                    |    nonce,              |               |    |
|  |                    |    types(a,b,c)        |               |    |
|  |                    |  )                     |               |    |
|  |                    +----------------------->|               |    |
|  |                    |                        | attest_key(   |    |
|  |                    |                        |   nonce,      |    |
|  |                    |                        |   TIK-S-ID    |    |
|  |                    |                        | )             |    |
|  |                    |                        +-------------->|    |
|  |                    |                        | CAB(KAT, PAT) |    |
|  |                    |                        |<--------------+    |
|  |                    | ServerHello            |               |    |
|  |                    |  {...}                 |               |    |
|  |                    | EncryptedExtensions    |               |    |
|  |                    |  {...}                 |               |    |
|  |                    |  evidence_request(     |               |    |
|  |                    |    type(a)             |               |    |
|  |                    |  )                     |               |    |
|  |                    | Certificate(KAT,PAT)   |               |    |
|  |                    |<-----------------------+               |    |
|  |                    |                        |sign(TIK-S-ID,hs)   |
|  |                    |                        +-------------->|    |
|  |                    |                        |     sig       |    |
|  |                    |                        |<--------------+    |
|  |                    | CertificateVerify(sig) |               |    |
|  |                    | Finished               |               |    |
|  |                    |<-----------------------+               |    |
|  | POST /76839A9E     |                        |               |    |
|  | Body: {            |                        |               |    |
|  |   type(a),         |                        |               |    |
|  |   CAB              |                        |               |    |
|  | }                  |                        |               |    |
|  |<-------------------+                        |               |    |
|  | Body: {            |                        |               |    |
|  |   att-result: AR{} |                        |               |    |
|  | }                  |                        |               |    |
|  +------------------->|                        |               |    |
|  |                    +---.                    |               |    |
|  |                    |    | verify AR{}       |               |    |
|  |                    |<--'                    |               |    |
|  |                    +---.                    |               |    |
|  |                    |    | verify sig        |               |    |
|  |                    |<--'                    |               |    |
|  |                    |       Finished         |               |    |
|  |                    +----------------------->|               |    |
|  |                    |                        |               |    |
 '-+--------------------+------------------------+---------------+---'
                        |    application data    |
                        |<---------------------->|
                        |                        |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="iot-device-onboarding">
        <name>IoT Device Onboarding</name>
        <t>In this scenario, an IoT device is connected to a remote device management entity, which could be a cloud service provider or a network operator.
We assume that, initially, the remote device management entity does not trust the device.</t>
        <t>The device management entity's responsibility is to guarantee that the device is running the intended software version, has not been tampered with, and is not being emulated or cloned.</t>
        <t>The protocol flow is shown in <xref target="_figure-iot-example"/> where the client 
is the attester while the server is the relying party.</t>
        <t>The flow starts with the client initiating a TLS exchange with the TLS
server operated by the cloud service provider. The client indicates
what evidence types it supports.</t>
        <t>The server obtains a nonce from the verifier, in real-time or from a
reserved nonce range, and returns it to the client alongside the
selected evidence type. Since the evidence will be returned in the
Certificate message the server has to request mutual authentication
via the CertificateRequest message.</t>
        <t>The client, when receiving the EncryptedExtension with the
evidence_proposal, will proceed by invoking a local API to request the
attestation.  The returned evidence binds the identity key (TIK-C) with
the workload and platform identity and security state, packaged into a
CAB.  The client then signs a transcript hash of the handshake context
and the client's Certificate message  with the (attested) identity key,
and sends the evidence together with the signature over to the server.</t>
        <t>The server forwards the attestation evidence to the verifier, obtains 
the attestation result and checks that it is acceptable according to its 
local policy. The evidence verification combined with the verification of
the CertificateVerify signature provide confirmation that the presented
cryptographic identity is bound to the platform identity, and that the 
platform is trustworthy.</t>
        <t>If successful, the server proceeds with the application layer protocol 
exchange. If, for some reason, the attestation result is not satisfactory
the TLS server will terminate the exchange.</t>
        <figure anchor="_figure-iot-example">
          <name>Example Exchange with Client as Attester.</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1152" width="576" viewBox="0 0 576 1152" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
                <path d="M 8,112 L 8,1088" fill="none" stroke="black"/>
                <path d="M 32,80 L 32,112" fill="none" stroke="black"/>
                <path d="M 32,144 L 32,1088" fill="none" stroke="black"/>
                <path d="M 136,40 L 136,72" fill="none" stroke="black"/>
                <path d="M 136,128 L 136,144" fill="none" stroke="black"/>
                <path d="M 168,80 L 168,664" fill="none" stroke="black"/>
                <path d="M 168,680 L 168,1136" fill="none" stroke="black"/>
                <path d="M 224,32 L 224,80" fill="none" stroke="black"/>
                <path d="M 328,48 L 328,80" fill="none" stroke="black"/>
                <path d="M 368,80 L 368,1136" fill="none" stroke="black"/>
                <path d="M 400,48 L 400,80" fill="none" stroke="black"/>
                <path d="M 440,368 L 440,376" fill="none" stroke="black"/>
                <path d="M 480,48 L 480,80" fill="none" stroke="black"/>
                <path d="M 528,80 L 528,1088" fill="none" stroke="black"/>
                <path d="M 568,48 L 568,80" fill="none" stroke="black"/>
                <path d="M 568,160 L 568,1072" fill="none" stroke="black"/>
                <path d="M 8,32 L 224,32" fill="none" stroke="black"/>
                <path d="M 328,48 L 400,48" fill="none" stroke="black"/>
                <path d="M 480,48 L 568,48" fill="none" stroke="black"/>
                <path d="M 8,80 L 224,80" fill="none" stroke="black"/>
                <path d="M 328,80 L 400,80" fill="none" stroke="black"/>
                <path d="M 480,80 L 568,80" fill="none" stroke="black"/>
                <path d="M 8,112 L 120,112" fill="none" stroke="black"/>
                <path d="M 8,144 L 552,144" fill="none" stroke="black"/>
                <path d="M 168,256 L 360,256" fill="none" stroke="black"/>
                <path d="M 368,304 L 520,304" fill="none" stroke="black"/>
                <path d="M 376,416 L 528,416" fill="none" stroke="black"/>
                <path d="M 176,544 L 368,544" fill="none" stroke="black"/>
                <path d="M 40,592 L 168,592" fill="none" stroke="black"/>
                <path d="M 32,640 L 160,640" fill="none" stroke="black"/>
                <path d="M 168,656 L 360,656" fill="none" stroke="black"/>
                <path d="M 40,688 L 168,688" fill="none" stroke="black"/>
                <path d="M 32,720 L 160,720" fill="none" stroke="black"/>
                <path d="M 168,736 L 360,736" fill="none" stroke="black"/>
                <path d="M 368,848 L 520,848" fill="none" stroke="black"/>
                <path d="M 376,912 L 528,912" fill="none" stroke="black"/>
                <path d="M 368,928 L 392,928" fill="none" stroke="black"/>
                <path d="M 376,960 L 392,960" fill="none" stroke="black"/>
                <path d="M 368,976 L 392,976" fill="none" stroke="black"/>
                <path d="M 376,1008 L 392,1008" fill="none" stroke="black"/>
                <path d="M 8,1088 L 552,1088" fill="none" stroke="black"/>
                <path d="M 176,1120 L 360,1120" fill="none" stroke="black"/>
                <path d="M 120,112 C 128.83064,112 136,119.16936 136,128" fill="none" stroke="black"/>
                <path d="M 552,144 C 560.83064,144 568,151.16936 568,160" fill="none" stroke="black"/>
                <path d="M 392,928 C 400.83064,928 408,935.16936 408,944" fill="none" stroke="black"/>
                <path d="M 392,960 C 400.83064,960 408,952.83064 408,944" fill="none" stroke="black"/>
                <path d="M 392,976 C 400.83064,976 408,983.16936 408,992" fill="none" stroke="black"/>
                <path d="M 392,1008 C 400.83064,1008 408,1000.83064 408,992" fill="none" stroke="black"/>
                <path d="M 552,1088 C 560.83064,1088 568,1080.83064 568,1072" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="528,848 516,842.4 516,853.6" fill="black" transform="rotate(0,520,848)"/>
                <polygon class="arrowhead" points="528,304 516,298.4 516,309.6" fill="black" transform="rotate(0,520,304)"/>
                <polygon class="arrowhead" points="384,1008 372,1002.4 372,1013.6" fill="black" transform="rotate(180,376,1008)"/>
                <polygon class="arrowhead" points="384,960 372,954.4 372,965.6" fill="black" transform="rotate(180,376,960)"/>
                <polygon class="arrowhead" points="384,912 372,906.4 372,917.6" fill="black" transform="rotate(180,376,912)"/>
                <polygon class="arrowhead" points="384,416 372,410.4 372,421.6" fill="black" transform="rotate(180,376,416)"/>
                <polygon class="arrowhead" points="368,1120 356,1114.4 356,1125.6" fill="black" transform="rotate(0,360,1120)"/>
                <polygon class="arrowhead" points="368,736 356,730.4 356,741.6" fill="black" transform="rotate(0,360,736)"/>
                <polygon class="arrowhead" points="368,656 356,650.4 356,661.6" fill="black" transform="rotate(0,360,656)"/>
                <polygon class="arrowhead" points="368,256 356,250.4 356,261.6" fill="black" transform="rotate(0,360,256)"/>
                <polygon class="arrowhead" points="184,1120 172,1114.4 172,1125.6" fill="black" transform="rotate(180,176,1120)"/>
                <polygon class="arrowhead" points="184,544 172,538.4 172,549.6" fill="black" transform="rotate(180,176,544)"/>
                <path class="jump" d="M 168,680 C 174,680 174,664 168,664" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="168,720 156,714.4 156,725.6" fill="black" transform="rotate(0,160,720)"/>
                <polygon class="arrowhead" points="168,640 156,634.4 156,645.6" fill="black" transform="rotate(0,160,640)"/>
                <polygon class="arrowhead" points="48,688 36,682.4 36,693.6" fill="black" transform="rotate(180,40,688)"/>
                <polygon class="arrowhead" points="48,592 36,586.4 36,597.6" fill="black" transform="rotate(180,40,592)"/>
                <g class="text">
                  <text x="64" y="52">Attestation</text>
                  <text x="180" y="52">Client</text>
                  <text x="48" y="68">Service</text>
                  <text x="364" y="68">Server</text>
                  <text x="524" y="68">Verifier</text>
                  <text x="32" y="132">TLS</text>
                  <text x="88" y="132">handshake</text>
                  <text x="224" y="180">ClientHello</text>
                  <text x="208" y="196">{...}</text>
                  <text x="260" y="212">evidence_proposal(</text>
                  <text x="252" y="228">types(a,b,c)</text>
                  <text x="192" y="244">)</text>
                  <text x="224" y="292">ServerHello</text>
                  <text x="396" y="292">POST</text>
                  <text x="464" y="292">/newSession</text>
                  <text x="208" y="308">{...}</text>
                  <text x="392" y="324">201</text>
                  <text x="440" y="324">Created</text>
                  <text x="416" y="340">Location:</text>
                  <text x="484" y="340">/76839</text>
                  <text x="400" y="356">Body:</text>
                  <text x="432" y="356">{</text>
                  <text x="416" y="372">nonce</text>
                  <text x="256" y="388">EncryptedExtensions</text>
                  <text x="444" y="388">types(a,b,c)</text>
                  <text x="208" y="404">{...}</text>
                  <text x="384" y="404">}</text>
                  <text x="260" y="420">evidence_proposal(</text>
                  <text x="228" y="436">nonce,</text>
                  <text x="232" y="452">type(a)</text>
                  <text x="192" y="468">)</text>
                  <text x="252" y="484">CertificateRequest</text>
                  <text x="224" y="500">Certificate</text>
                  <text x="248" y="516">CertificateVerify</text>
                  <text x="96" y="532">attest_key(</text>
                  <text x="212" y="532">Finished</text>
                  <text x="92" y="548">nonce,</text>
                  <text x="100" y="564">TIK-C-ID</text>
                  <text x="56" y="580">)</text>
                  <text x="84" y="628">CAB(KAT,</text>
                  <text x="140" y="628">PAT)</text>
                  <text x="260" y="644">Certificate(KAT,PAT)</text>
                  <text x="100" y="676">sign(TIK-C-ID,hs</text>
                  <text x="96" y="708">sig</text>
                  <text x="268" y="708">CertificateVerify(sig)</text>
                  <text x="212" y="724">Finished</text>
                  <text x="396" y="772">POST</text>
                  <text x="456" y="772">/76839A9E</text>
                  <text x="400" y="788">Body:</text>
                  <text x="432" y="788">{</text>
                  <text x="428" y="804">type(a),</text>
                  <text x="408" y="820">CAB</text>
                  <text x="384" y="836">}</text>
                  <text x="400" y="868">Body:</text>
                  <text x="432" y="868">{</text>
                  <text x="432" y="884">att-result:</text>
                  <text x="500" y="884">AR{}</text>
                  <text x="384" y="900">}</text>
                  <text x="444" y="948">verify</text>
                  <text x="492" y="948">AR{}</text>
                  <text x="444" y="996">verify</text>
                  <text x="488" y="996">sig</text>
                  <text x="248" y="1108">application</text>
                  <text x="316" y="1108">data</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
.--------------------------.
| Attestation   |  Client  |            .--------.         .----------.
| Service       |          |            | Server |         | Verifier |
'--+----------------+------'            '----+---'         '-----+----'
   |                |                        |                   |
.--+-----------.    |                        |                   |
| TLS handshake |   |                        |                   |
+--+------------+---+------------------------+-------------------+---.
|  |                |                        |                   |    |
|  |                | ClientHello            |                   |    |
|  |                |  {...}                 |                   |    |
|  |                |  evidence_proposal(    |                   |    |
|  |                |    types(a,b,c)        |                   |    |
|  |                |  )                     |                   |    |
|  |                +----------------------->|                   |    |
|  |                |                        |                   |    |
|  +                | ServerHello            | POST /newSession  |    |
|  |                |  {...}                 +------------------>|    |
|  |                |                        | 201 Created       |    |
|  |                |                        | Location: /76839  |    |
|  |                |                        | Body: {           |    |
|  |                |                        |   nonce,          |    |
|  |                | EncryptedExtensions    |   types(a,b,c)    |    |
|  |                |  {...}                 | }                 |    |
|  |                |  evidence_proposal(    |<------------------+    |
|  |                |    nonce,              |                   |    |
|  |                |    type(a)             |                   |    |
|  |                |  )                     |                   |    |
|  |                | CertificateRequest     |                   |    |
|  |                | Certificate            |                   |    |
|  |                | CertificateVerify      |                   |    |
|  |  attest_key(   | Finished               |                   |    |
|  |    nonce,      |<-----------------------+                   |    |
|  |    TIK-C-ID    |                        |                   |    |
|  |  )             |                        |                   |    |
|  |<---------------+                        |                   |    |
|  |                |                        |                   |    |
|  |  CAB(KAT, PAT) |                        |                   |    |
|  +--------------->| Certificate(KAT,PAT)   |                   |    |
|  |                +----------------------->|                   |    |
|  |sign(TIK-C-ID,hs)                        |                   |    |
|  |<---------------+                        |                   |    |
|  |      sig       | CertificateVerify(sig) |                   |    |
|  +--------------->| Finished               |                   |    |
|  |                +----------------------->|                   |    |
|  |                |                        |                   |    |
|  |                |                        | POST /76839A9E    |    |
|  |                |                        | Body: {           |    |
|  |                |                        |   type(a),        |    |
|  |                |                        |   CAB             |    |
|  |                |                        | }                 |    |
|  |                |                        +------------------>|    |
|  |                |                        | Body: {           |    |
|  |                |                        |  att-result: AR{} |    |
|  |                |                        | }                 |    |
|  |                |                        |<------------------+    |
|  |                |                        +---.               |    |
|  |                |                        |    | verify AR{}  |    |
|  |                |                        |<--'               |    |
|  |                |                        +---.               |    |
|  |                |                        |    | verify sig   |    |
|  |                |                        |<--'               |    |
|  |                |                        |                   |    |
|  |                |                        |                   |    |
|  |                |                        |                   |    |
|  |                |                        |                   |    |
'--+----------------+------------------------+-------------------+---'
                    |    application data    |
                    |<---------------------->|
                    |                        |
]]></artwork>
          </artset>
        </figure>
      </section>
    </section>
    <section anchor="sec-cons">
      <name>Security Considerations</name>
      <t>TBD.</t>
      <section anchor="sec-guarantees">
        <name>Security Guarantees</name>
        <t>We note that as a pure cryptographic protocol, attested TLS as-is only guarantees that the Identity Key is known by the TEE. A number of additional guarantees must be provided by the platform and/or the TLS stack,
and the overall security level depends on their existence and quality of assurance:</t>
        <ul spacing="normal">
          <li>
            <t>The Identity Key is generated by the TEE.</t>
          </li>
          <li>
            <t>The Identity Key is never exported or leaked outside the TEE.</t>
          </li>
          <li>
            <t>The TLS protocol, whether implemented by the TEE or outside the TEE, is implemented correctly and (for example) does not leak any session key material.</t>
          </li>
        </ul>
        <t>These properties may be explicitly promised ("attested") by the platform, or they can be assured in other ways such as by providing source code, reproducible builds, formal verification etc. The exact mechanisms are out of scope of this document.</t>
      </section>
    </section>
    <section anchor="priv-cons">
      <name>Privacy Considerations</name>
      <t>In this section, we are assuming that the Attester is a TLS client, representing an individual person.
We are concerned about the potential leakage of privacy sensitive information about that person, such as the correlation of different connections initiated by them.</t>
      <t>In background-check mode, the Verifier not only has access to detailed information about the Attester's TCB through Evidence, but it also knows the exact time and the party with whom the secure channel establishment is attempted (i.e., the RP).
The privacy implications are similar to online OCSP <xref target="RFC6960"/>.
While the RP may trust the Verifier not to disclose any information it receives, the same cannot be assumed for the Attester, which generally has no prior relationship with the Verifier.
Some ways to address this include:</t>
      <ul spacing="normal">
        <li>
          <t>Client-side redaction of privacy-sensitive evidence claims,</t>
        </li>
        <li>
          <t>Using selective disclosure (e.g., SD-JWT <xref target="I-D.ietf-oauth-selective-disclosure-jwt"/> with EAT <xref target="I-D.ietf-rats-eat"/>),</t>
        </li>
        <li>
          <t>Co-locating the Verifier role with the RP,</t>
        </li>
        <li>
          <t>Utilizing privacy-preserving attestation schemes (e.g., DAA <xref target="I-D.ietf-rats-daa"/>), or</t>
        </li>
        <li>
          <t>Utilizing Attesters manufactured with group identities (e.g., <xref target="FIDO-REQS"/>).</t>
        </li>
      </ul>
      <t>The latter two also have the property of hiding the peer's identity from the RP.</t>
      <t>Note that the equivalent of OCSP "stapling" involves using a passport topology where the Verifier's involvement is unrelated to the TLS session.</t>
      <t>Due to the inherent asymmetry of the TLS protocol, if the Attester acts as the TLS server, a malicious TLS client could potentially retrieve sensitive information from attestation evidence without the client's trustworthiness first being established by the server.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="tls-extensions">
        <name>TLS Extensions</name>
        <t>IANA is asked to allocate four new TLS extensions, evidence_request,
evidence_proposal, results_request, results_proposal, from the "TLS
ExtensionType Values" subregistry of the "Transport Layer Security (TLS)
Extensions" registry <xref target="TLS-Ext-Registry"/>.  These extensions are used in the
ClientHello and the EncryptedExtensions messages. The values carried in these
extensions are taken from TBD.</t>
      </section>
      <section anchor="tls-alerts">
        <name>TLS Alerts</name>
        <t>IANA is requested to allocate a value in the "TLS Alerts"
subregistry of the "Transport Layer Security (TLS) Parameters" registry
<xref target="TLS-Param-Registry"/> and populate it with the following entries:</t>
        <ul spacing="normal">
          <li>
            <t>Value: TBD1</t>
          </li>
          <li>
            <t>Description: unsupported_evidence</t>
          </li>
          <li>
            <t>DTLS-OK: Y</t>
          </li>
          <li>
            <t>Reference: [This document]</t>
          </li>
          <li>
            <t>Comment:</t>
          </li>
          <li>
            <t>Value: TBD2</t>
          </li>
          <li>
            <t>Description: unsupported_verifiers</t>
          </li>
          <li>
            <t>DTLS-OK: Y</t>
          </li>
          <li>
            <t>Reference: [This document]</t>
          </li>
          <li>
            <t>Comment:</t>
          </li>
        </ul>
      </section>
      <section anchor="tls-certificate-types">
        <name>TLS Certificate Types</name>
        <t>IANA is requested to allocate a new value in the "TLS Certificate Types"
subregistry of the "Transport Layer Security (TLS) Extensions"
registry <xref target="TLS-Ext-Registry"/>, as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Value: TBD2</t>
          </li>
          <li>
            <t>Description: Attestation</t>
          </li>
          <li>
            <t>Reference: [This document]</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </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>Independent</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="11" month="December" year="2025"/>
            <abstract>
              <t>   The Conceptual Messages introduced by the RATS architecture (RFC
   9334) are protocol-agnostic data units that are conveyed between RATS
   roles during remote attestation procedures.  Conceptual Messages
   describe the meaning and function of such data units within RATS data
   flows without specifying a wire format, encoding, transport
   mechanism, or processing details.  The initial set of Conceptual
   Messages is defined in Section 8 of RFC 9334 and includes Evidence,
   Attestation Results, Endorsements, Reference Values, and Appraisal
   Policies.

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

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

   The goal is to improve the interoperability and flexibility of remote
   attestation protocols.  Introducing a shared message format such as
   CMW enables consistent support for different attestation message
   types, evolving message serialization formats without breaking
   compatibility, and avoiding the need to redefine how messages are
   handled within each protocol.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-23"/>
        </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="RFC6960">
          <front>
            <title>X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP</title>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="M. Myers" initials="M." surname="Myers"/>
            <author fullname="R. Ankney" initials="R." surname="Ankney"/>
            <author fullname="A. Malpani" initials="A." surname="Malpani"/>
            <author fullname="S. Galperin" initials="S." surname="Galperin"/>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document specifies a protocol useful in determining the current status of a digital certificate without requiring Certificate Revocation Lists (CRLs). Additional mechanisms addressing PKIX operational requirements are specified in separate documents. This document obsoletes RFCs 2560 and 6277. It also updates RFC 5912.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6960"/>
          <seriesInfo name="DOI" value="10.17487/RFC6960"/>
        </reference>
        <reference anchor="I-D.bft-rats-kat">
          <front>
            <title>An EAT-based Key Attestation Token</title>
            <author fullname="Mathias Brossard" initials="M." surname="Brossard">
              <organization>arm</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         </author>
            <author fullname="Ionuț Mihalcea" initials="I." surname="Mihalcea">
         </author>
            <date day="17" month="October" year="2025"/>
            <abstract>
              <t>   This document defines an evidence format for key attestation based on
   the Entity Attestation Token (EAT).

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the Remote ATtestation
   ProcedureS Working Group mailing list (rats@ietf.org), which is
   archived at https://mailarchive.ietf.org/arch/browse/rats/.

   Source for this draft and an issue tracker can be found at
   https://github.com/thomas-fossati/draft-kat.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bft-rats-kat-06"/>
        </reference>
        <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="I-D.ietf-rats-eat">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <author fullname="Giridhar Mandyam" initials="G." surname="Mandyam">
              <organization>Mediatek USA</organization>
            </author>
            <author fullname="Jeremy O'Donoghue" initials="J." surname="O'Donoghue">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Carl Wallace" initials="C." surname="Wallace">
              <organization>Red Hound Software, Inc.</organization>
            </author>
            <date day="6" month="September" year="2024"/>
            <abstract>
              <t>   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a smartphone, IoT device, network equipment or such.  This claims set
   is used by a relying party, server or service to determine the type
   and degree of trust placed in the entity.

   An EAT is either a CBOR Web Token (CWT) or JSON Web Token (JWT) with
   attestation-oriented claims.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-31"/>
        </reference>
        <reference anchor="I-D.ietf-rats-daa">
          <front>
            <title>Direct Anonymous Attestation for the Remote Attestation Procedures Architecture</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Christopher Newton" initials="C." surname="Newton">
              <organization>University of Surrey</organization>
            </author>
            <author fullname="Liqun Chen" initials="L." surname="Chen">
              <organization>University of Surrey</organization>
            </author>
            <author fullname="Thanassis Giannetsos" initials="T." surname="Giannetsos">
              <organization>Ubitech</organization>
            </author>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Microsoft</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   This document maps the concept of Direct Anonymous Attestation (DAA)
   to the Remote Attestation Procedures (RATS) Architecture.  The
   protocol entity DAA Issuer is introduced and its mapping with
   existing RATS roles in DAA protocol steps is specified.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-daa-09"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-selective-disclosure-jwt">
          <front>
            <title>Selective Disclosure for JWTs (SD-JWT)</title>
            <author fullname="Daniel Fett" initials="D." surname="Fett">
              <organization>Authlete</organization>
            </author>
            <author fullname="Kristina Yasuda" initials="K." surname="Yasuda">
              <organization>Keio University</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date day="29" month="May" year="2025"/>
            <abstract>
              <t>   This specification defines a mechanism for the selective disclosure
   of individual elements of a JSON data structure used as the payload
   of a JSON Web Signature (JWS).  The primary use case is the selective
   disclosure of JSON Web Token (JWT) claims.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-selective-disclosure-jwt-22"/>
        </reference>
        <reference anchor="I-D.ietf-teep-architecture">
          <front>
            <title>Trusted Execution Environment Provisioning (TEEP) Architecture</title>
            <author fullname="Mingliang Pei" initials="M." surname="Pei">
              <organization>Broadcom</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Dave Wheeler" initials="D. M." surname="Wheeler">
              <organization>Amazon</organization>
            </author>
            <date day="24" month="October" year="2022"/>
            <abstract>
              <t>A Trusted Execution Environment (TEE) is an environment that enforces the following: any code within the environment cannot be tampered with, and any data used by such code cannot be read or tampered with by any code outside the environment.  This architecture document discusses the motivation for designing and standardizing a protocol for managing the lifecycle of Trusted Applications running inside such a TEE.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-teep-architecture-19"/>
        </reference>
        <reference anchor="TPM1.2" target="https://trustedcomputinggroup.org/resource/tpm-main-specification/">
          <front>
            <title>TPM Main Specification Level 2 Version 1.2, Revision 116</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2011" month="March"/>
          </front>
        </reference>
        <reference anchor="TPM2.0" 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="TLS-Ext-Registry" target="https://www.iana.org/assignments/tls-extensiontype-values">
          <front>
            <title>Transport Layer Security (TLS) Extensions</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="TLS-Param-Registry" target="https://www.iana.org/assignments/tls-parameters">
          <front>
            <title>Transport Layer Security (TLS) Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="iana-media-types" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="iana-content-formats" target="https://www.iana.org/assignments/core-parameters">
          <front>
            <title>CoAP Content-Formats</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="I-D.acme-device-attest">
          <front>
            <title>Automated Certificate Management Environment (ACME) Device Attestation Extension</title>
            <author fullname="Brandon Weeks" initials="B." surname="Weeks">
         </author>
            <author fullname="Ganesh Mallaya" initials="G." surname="Mallaya">
         </author>
            <author fullname="Sven Rajala" initials="S." surname="Rajala">
         </author>
            <date day="7" month="December" year="2025"/>
            <abstract>
              <t>   This document specifies new identifiers and a challenge for the
   Automated Certificate Management Environment (ACME) protocol which
   allows validating the identity of a device using attestation.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-acme-device-attest-08"/>
        </reference>
        <reference anchor="FIDO-REQS" target="https://fidoalliance.org/specs/fido-security-requirements/">
          <front>
            <title>FIDO Authenticator Security Requirements</title>
            <author>
              <organization/>
            </author>
            <date year="2021" month="November"/>
          </front>
        </reference>
        <reference anchor="RA-TLS" target="https://arxiv.org/abs/1801.05863">
          <front>
            <title>Integrating Remote Attestation with Transport Layer Security</title>
            <author initials="T." surname="Knauth" fullname="Thomas Knauth">
              <organization/>
            </author>
            <author initials="M." surname="Steiner" fullname="Michael Steiner">
              <organization/>
            </author>
            <author initials="S." surname="Chakrabarti" fullname="Somnath Chakrabarti">
              <organization/>
            </author>
            <author initials="L." surname="Lei" fullname="Li Lei">
              <organization/>
            </author>
            <author initials="C." surname="Xing" fullname="Cedric Xing">
              <organization/>
            </author>
            <author initials="M." surname="Vij" fullname="Mona Vij">
              <organization/>
            </author>
            <date year="2018" month="January"/>
          </front>
        </reference>
        <reference anchor="DICE-Layering" target="https://trustedcomputinggroup.org/resource/dice-layering-architecture/">
          <front>
            <title>DICE Layering Architecture Version 1.00 Revision 0.19</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2020" month="July"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1176?>

<section anchor="usage-variants">
      <name>Design Rationale: X.509 and Attestation Usage Variants</name>
      <t>The inclusion of attestation results and evidence as part of the TLS
handshake offers the relying party information about the state of the
system and its cryptographic keys, but lacks the means to specify a stable
endpoint identifier. While it is possible to solve this problem by
including an identifier as part of the attestation result, some use cases
require the use of a public key infrastructure (PKI). It is therefore
important to consider the possible approaches for conveying X.509
certificates and attestation within a single handshake.</t>
      <t>In general, the following combinations of X.509 and attestation usage are
possible:</t>
      <ol spacing="normal" type="1"><li>
          <t>X.509 certificates only: In this case no attestation is exchanged in the
 TLS handshake. Authentication relies on PKI alone, i.e. TLS with X.509
 certificates.</t>
        </li>
        <li>
          <t>X.509 certificates containing attestation extension: The X.509
 certificates in the Certificate message carry attestation as part of
 the X.509 certificate extensions. Several proposals exist that enable
 this functionality:
          </t>
          <ul spacing="normal">
            <li>
              <t>Custom X.509 extension:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Attester-issued certificates (e.g., RA-TLS <xref target="RA-TLS"/>): The
attester acts as a certification authority (CA) and includes the
attestation evidence within an X.509 extension.</t>
                </li>
                <li>
                  <t>DICE defines extensions that include attestation information in
the "Embedded CA" certificates (See Section 8.1.1.1 of <xref target="DICE-Layering"/>).</t>
                </li>
                <li>
                  <t>Third party CA-issued certificates (e.g., ACME Device Attestation
<xref target="I-D.acme-device-attest"/>): Remote attestation is performed between
the third party CA and the attester prior to certificate issuance,
after which the CA adds an extension indicating that the certificate
key has fulfilled some verification policy.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Explicit signaling via existing methods, e.g. using a policy OID in
the end-entity certificate.</t>
            </li>
            <li>
              <t>Implicit signaling, e.g. via the issuer name.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>X.509 certificates alongside a PAT: This use case assumes that a keypair
 with a corresponding certificate already exists and that the owner
 wishes to continue using it. As a consequence, there is no
 cryptographic linkage between the certificate and the PAT. This
 approach is described in <xref target="pkix-attest"/>.</t>
        </li>
        <li>
          <t>X.509 certificates alongside the PAT and KAT: The addition of key
 attestation implies that the TLS identity key must have been generated
 and stored securely by the attested platform. Unlike in variant (3),
 the certificate, the KAT, and the PAT must be cryptographically linked.
 This variant is currently not addressed in this document.</t>
        </li>
        <li>
          <t>Combined PAT/KAT: With this variant the attestation token carries
 information pertaining to both platform and key. No X.509 certificate
 is transmitted during the handshake. This approach is currently not
 addressed in this document.</t>
        </li>
        <li>
          <t>PAT alongside KAT: This variant is similar to (5) with the exception
 that the key and the platform attestations are stored in separate
 tokens, cryptographically linked together. This approach is covered by
 this document in <xref target="attest-only"/>. A possible instantiation of the KAT
 is described in <xref target="I-D.bft-rats-kat"/>.</t>
        </li>
      </ol>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1963bbxrXw/3mK+eQfoRIStmwnTdScnCqS0ijxRZWUpFld
rTMkhyJqEGABUDIr+zxLn6VPdvZlrgBIkbLS9PSLmlVLAOa2Z8++z96DwUDU
aZ3pffldleaX8qCudVWrOi1ymebyolR5NS/KWj5TS13Kcz1alGm9lL2LZ+e7
UuVjeaRqdVmq2Zpvj/BjoYbDUl/tt4Z4dv4QPxDjYpSrGcxkXKpJPZgUVQUf
DeqsGijfZLD3SFSL4SytKvirXs6hwcnxxVdipGp9WZTLfVnVYyHSebkv63JR
1Y8fPfrs0WOhSq323aTEdVG+viyLxXwfZyBe6yU8Ge/LP8lgsL48O7g47+MX
8s9CwNN8/EplRQ6DLnUl5um+kLKcjPS4qpeZeSplXYyCX9N8rPPaPqgAQqWe
VO7v5Sz6sy7Tkft4VMxm0Na9TfMszf0w+k09yNKqHkAnwyKDzwbFhx/BG4Dl
TM3nsKP8rbjS+ULjZC/TeroYwlNVFvnkIcO6AWMh1KKeFiV8P4Am9JPm0PvX
ibyoRtNiovP00r7hTfta5bmuOl7rmUqzfTml90nt3v/ucvYmyXUtmoP8mMjz
qZ5MdBmP8CPOuPmqKC9Vnv6dpg2IkNeLtG6MzCtNUl1PYEx4lABUW6OeJvLr
4lqV43jQU7XIGi/iIQ/KmXyWztJajxvjYtOEm/5OlbPOUU8S+TydqmykVTzu
SZEv6ta7TYem1oltvXJ0gPSRrqZzwGrdgHVxCS/abzedALdPXPuVUzhI5ItU
z9J4+IOyLuLn8cBfL9S1ThtjKmiU5Njod1N63zngRSK/YsoSD3kxLWaqar6L
h32W5oBLjWFrapgYcvW7jL5JoKEQeVHO4NkVHbyzrw4f7+19Zn799OnTT6Bt
Vu09gQcngyPCz0Gp6mowqy4H16UCyjSaXYs0nzS6+eSzTx7ty2JUzU3TIRxh
avlaAeWwv/HHnz158tQ8U+Vo2hpMuyaamsRvx0qZt/Bb+LZACjGodKZHOLPB
OK1GWVEtSj346zX0WI3x37BFrfWcpgDoMqrhQ1i+fQTfXZw+30se7xNwa1Ve
auhkWtfzav/hQyLjegzbOV/UQNOIbiOIH5a6KhblSD+s57MB7Ec+qOZ6lE7S
EW3ZQ+6OGRyMIJ/DJ/I8/EQ+01c6k4/l97pEjiJhFkD29VXKf+19Qn04gkg/
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
NL3md+2nbbu66341vYZr+1njvWji+d3O6Yqzu+057VDS11ig6cEm3tPb57OZ
F+T2fu7lvL/tUgfet5/7mo8R3Tbrp+mk3dDK3zGfyEm7qZW/ox/SRkInbdfP
rfO5HU026ae5jI2t4a353P75Zv10OHu376dJvb/Y2Kt3y7ruygedr+7Q++ru
sK573q/QWbehFy3upwPOdz9f4c8vLG9s00/bd/dL8+Wm7+6u/TR9d3frZ1u+
3P1zf/LYvcG523X3C8HnLnJL10+XO+vO56vhprvruprurLviz/2viwnoL7mu
fz96+LP3s8ZO03EGVjzr9uzRCJt79bb06K1ebMubF7hp1rvzbO2JhjtPYNYU
Y8E+RI/VGB0qpHTdPKj0CItUUiFiLmMRfP17682yXzr3Fn7/A16Nqo2nizLL
zOlCQWQTtRbIfnShGD4fpCafku/TG0Rt1RKqEwQfvs7Rd2UcQBfHx4k8kPli
NkSnzQRLVaR8+TfsbIYOvaH26QlMc38Nw6d6IXtmrUav+84KjyZxRSXhDDC4
PMdYz8m0zlcsUrwNk8Kq7P2ovy1UZq6go1sS5jLCZDAfkrW6uapLnceuLVzZ
im9zfUV1q0w6K5h3ptVr/G1RWy9S2B5X5GHv7hIh1szcDTnTBntrdENXPMOv
6UrQqM7YIxLeA9r1TlScEqV5sbcl0eMygxWWqcrYo1Dp4OoIvFviFsGy4JSl
2Du8nKV487G3YxFmZ7e5dfY28ZIuwAzZBcx3UU21pmu1rPjWMyDmMLzVzJfD
YT1jjVVR4MV4McKcPXK4SLNx1ed8olnsM8Cb1EE9mJnGc5dWM76Ciyl2MNvY
qJhrVyImyKjzQJ7y9fH2+cN75fYAOu8631WDbeOqtOTgZveaOR/2fPPFdX+9
lldE3gm+f06uUFg5+voA6FWRs8uci2aNNPnM1NDmCJoXtbnpg1tpSimaq+/o
U6pSvLYHnXLOVbqZaRrDzHiAvoO7u0qWufI845Sugua1jRMwKfvIIeyQcsa3
1ltJBWa0aditM9Uj2hEZoUw85ChBr8tY1yrNCCPaU/Xw+6CSF4dfwiMY5XLq
qgS7HEaUhQSJj80KhJtPvl9LJoIkWtdTl10tulnlLl3Zm92I2DM0f8lemmhz
+/7sdDcxjnsGN54+g36MZVU6SyktZIErxtv/Lw/PT7HGWjGq5lxkzTroz07p
bPmohghgCKC0GmVFxVmZQiCltcuj1feXyk1WuaGNthi7rB4WlDaSg4laZnYk
x1tlWPLIIkE1TefeY2VnlYhz9EbRqUWX6nhc0kZSbgbOVkFUlDncgCgVnHc1
snhl0zN4HPXFGTOVzqo+tP6O7iuyqx0/MTDAvTJpEM6PBt/8cIEgrcaDv17X
GBaBcz0+oId0gVHTBUbs79DcSbeebwfjEisyu0WendLgdZqlf+erc61UEqHr
rQJcx3xiZkpHBwdu6LFSODRQv6hDuwVIT/MF+ukWNmJE4vmZhzltTLc3N1+d
HL0cnB3/4dxfx8xwHiWlGSDM52QLU0eyia9NfXYITDsKR8j5PV3AxNkp9PjC
CQd0dv62gGVneASgE8LcHVgy4Hh+uWMzDFQuNZRLEFoX8yIrLpdBfIqFMw7N
7ezJWuT2DrvxvLKjkpgRzOho4RzVaT5lOqSq5WymsYajcczHnNOkOXQEV404
503sBcVUJcAzgIcViypMd8BxTY6swqkoYawUmPkKcsoBJd1lZH0uNxci4J3F
QA8qvCZaVi40KLjs2cjDCxyJalzG7IiEv6hyGzyi75BoVa9NTFfGiRiAAiyA
nOhrE8LjM/S0qo91xX00stp0VShz6ITl5ERH/c1qBxNhuSKcZgN36Do4Ic8z
8oI7ebYH/ez6jqC5a3tzA+8G8GpwZh4BQZWcUrczxW87i9VmldF8Zq5m1qF2
7t5aYVVMAoMTzhHYB5jgLtibKNm52x9lMgqZS9k7vuWO2B5sXDWKskJ4sAkG
G70KAMexNMWcQtM4y4OhhT4LMEAN1s4ZXGgz93GNe/DXkeZwGfJvdZUSwG9w
2Jff7ssf4Y8zm7t1X/7pIhS9/gwvD4sZ/toY5/G6cVy6qzsOZHYp9HYgzm6w
YXia2pvW6uhO+xegvViL9lR+2uRX4ESWDcDJGHRB5Aa9XAMlAQoxiXVIgaCT
9DKXZyZxE3zOdZwRecJokO8o8Ol7LqmLMjNlqxqYGruVKaFIYkJlxIFV5SJ9
LouKJLeA5gsfHkHpSjpCG1cIkxQVZtPIVUvY1hnHaWJesUgZBnWoYtkyUxz4
hIFdKufstZSMC7MXE90GYpCP50WKjI0THFGyERbxOFjKZhul1sgGWWACAgoP
Z5gaNkxFFXTTXH4bXH0OD8JSQSPKIGbyAdDn+BSBLIPMEACaUvmqmL3Tb092
E3liE/5wdgMBMi3gJ1ZG5nrPxHyM5mHWouYwfwUyECeO4+yFuAJCDhHUqK6a
dYptQU+XUc1tKesTRjTtNygRh4sZQRvW5bEwzgeDWNhI8rqXtGuPs1ljP8rs
iXJw2BklMGPTjeMkaPyJwnQSqo/nozMRGVPqHqs0UwAp1rRKsFIptCMay0DC
rsIZJeJx50TDfNWhyGEpxT4xq+4+16X+N2m4wzKsDuGoo9p2GxVt10HmzXNN
9hdppYGKDS0sT+qcDgj3hMkxFvmIiQiQu30uIgwEGUQj4Jw8jl+TMccNnEw3
MLkBo9UZMfnsYICwvbnhX0BUJpiYPlRTKlRBJ7Rs2MCCafDhwa5J8W+S79WN
bjrEPcTlvLmAxC3g6OTw2KSnrUIZheMpTfbTCO1CPS83/RDvOJ4NNRV8PTzY
aQDiXGN6Sda0Pk328H94Sm5ucPgBsRpAIFIi7MSA6pdjQzMPD9bB9+Dw+bG9
aBDyEe6JU8eo0UwPOIre1DKnbTjj0P7GsQI1BddImXLra63DVdbRtJy45naR
NVWkTAFS4uTRimcrsFN+liA5HHY0phQ7UWJGrkkc2myCTk1XSDdRSZ4sskma
ZXQZYNYIVjXRrgalj42hjENVUXWSGLJNR4NSEmrAN7RhIXS9LkV9yJcnR/Gu
A4MZGM0tmJwd62TWHMt0a4PEOe2nzEEqTMSTTgITpJJDH/4+Z1u0XMXYEgzC
KoTHXKVc5dUkdI4yEUX7orJSq/GS117F8bTFda5tN9WUk8MjrUvzhU1zlNZA
XivOMMmZdEdsWuIa9nnBBC9i3wADsokZzGruqkMoWKkpd0QIYxgaduvzONM9
jPnr9I1D6UQ8vQWGpm8a51uGpnbGb1P8WjQJCpmRQts60rMoJJ4M5aTq040T
Z5XmrjCYvC5KlzAIVFijTDqDvjXLJvK7PEtfk/BqpDPZe7LbdyQ/WBczYQru
CMDmjPYR4ElvRuDj5RZik4hFdgRksYsSdXn4ihLds/WoM7n5xwnK6RwdDuM9
JDCahLRBn02hqC5QEWN1jXc1JKVoGjFsFBCN6pWHTgYEciJfFO3N5Z4qviLA
2XrleFFa80ogCdCKQ0yKlsw7tWbZnySMOA6VvnWHMQBjYGDsfRxlrsSgfEuW
HSJRqXVrBnXr9VAzVktGnhRTKGJiQbNqgigQqlUb7a4rdK0dfTNc+8CJAC4r
Ox0snsUABTFU4w+8eJnmmHeRrh/xmTFoaLeicULbqcsS8b9sSyUBKOoAAA==

-->

</rfc>
