<?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.19 (Ruby 3.0.2) -->
<?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-08" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <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-08"/>
    <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="2024" month="October" day="21"/>
    <area>Security</area>
    <workgroup>TLS</workgroup>
    <keyword>attestation</keyword>
    <keyword>RATS</keyword>
    <keyword>TLS</keyword>
    <abstract>
      <?line 142?>

<t>The TLS handshake protocol allows authentication of one or both peers using static, long-term credentials.
In some cases, it is also desirable to ensure that the peer runtime environment is in a secure state.
Such an assurance can be achieved using attestation which is a process by which an entity produces evidence about itself that another party can use to appraise whether that entity is found in a secure state.
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.
This enables an entity capable of producing attestation evidence, such as a confidential workload running in a Trusted Execution Environment (TEE), 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.
These extensions have been designed to allow the peers to use any attestation technology, in any remote attestation topology, and mutually.</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 151?>

<section anchor="introduction">
      <name>Introduction</name>
      <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>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"/>.
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.</t>
      <t>This document does not specify any 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.</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>"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>
    <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.</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>In TLS a client has to demonstrate possession of the private key via the
CertificateVerify message, when client-based authentication is requested. The
attestation payload must 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>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.</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. Instead of the certificate's private key, we use
the TIK identity key. This key is attested, with attestation being carried
by 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:</t>
        <ul spacing="normal">
          <li>
            <t>The format and the lifetime of TIK (e.g. an ephemeral, per session TIK vs.
a long lived one).</t>
          </li>
          <li>
            <t>How the key is attested using a structure carried by the
Certificate message.</t>
          </li>
          <li>
            <t>How proof of possession is performed.</t>
          </li>
        </ul>
      </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 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-results">
        <name>TLS Server Authenticating Using 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 also 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>
      <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"/>.</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"/>.</t>
        <t>In this use-case the nonce negotiated by the two peers is not used directly as
an input to the attestation evidence generation mechanism. Instead, it is used
in the derivation steps for a channel binder.</t>
        <section anchor="channel-binding">
          <name>Channel binding</name>
          <t>As described in <xref target="usage-variants"/>, this authentication mechanism is meant
primarily for carrying platform attestation evidence to provide more context to
the relying party. This evidence must be cryptographically bound to the TLS
handshake to prevent relay attacks. A channel binder value plays this role,
allowing a TLS handshake and a remote attestation session to be linked together
in a way that is verifiable by the relying party.</t>
          <t>Creation of the channel binder relies on a new TLS exporter, the Handshake
Exporter. The Handshake Exporter, in turn, uses a new secret value
(handshake_exporter_secret) derived as part of the key schedule.
handshake_exporter_secret is derived from Handshake Secret using Derive-Secret,
with "h exp master" as the label and a handshake context stretching from
ClientHello to ServerHello. This derivation step is shown in
<xref target="_figure-handshake-exporter-secret"/>.</t>
          <figure anchor="_figure-handshake-exporter-secret">
            <name>Derivation of the Handshake Exporter Secret for use in the associated exporter.</name>
            <artwork><![CDATA[
                  [...]
                    |
                    v
     (EC)DHE --> HKDF-Extract = Handshake Secret
                    |
                  [...]
                    |
                    +-----> Derive-Secret(., "h exp master",
                    |                     ClientHello...ServerHello)
                    |              = handshake_exporter_secret
                    v
               Derive-Secret(., "derived", "")
                    |
                    v
                  [...]
]]></artwork>
          </figure>
          <t>The Handshake Secret is used to generate the TLS Handshake Exporter value as
defined in <xref target="_figure-handshake-exporter"/>. This exporter becomes available after
the ServerHello message, and must be offered by implementation as a separate API
(i.e., TLS-Handshake-Exporter) to the TLS-Exporter and TLS-Early-Exporter.</t>
          <figure anchor="_figure-handshake-exporter">
            <name>Definition of the TLS Handshake Exporter.</name>
            <artwork><![CDATA[
TLS-Handshake-Exporter(label, context_value, key_length) =
       HKDF-Expand-Label(
              Derive-Secret(handshake_exporter_secret, label, ""),
              "exporter", Hash(context_value), key_length)
]]></artwork>
          </figure>
          <t>Using this new exporter, the channel binder is then defined as a call to
TLS-Handshake-Exporter with "attestation-binder" as the label, and the nonce
negotiated between attester and relying party as context. This is shown in
<xref target="_figure-channel-binder"/>, where nonce-seed is the negotiated nonce.</t>
          <figure anchor="_figure-channel-binder">
            <name>Usage of TLS Handshake Exporter for channel binding.</name>
            <artwork><![CDATA[
channel_binder = TLS-Handshake-Exporter("attestation-binder", nonce-seed, nonce-size)
      = HKDF-Expand-Label(Derive-Secret(handshake_exporter_secret, "attestation-binder", ""),
                      "exporter", Hash(nonce-seed), nonce-size)
]]></artwork>
          </figure>
          <t>channel_binder must be computed by both peers: the attester must use it as a
challenge value when generating attestation evidence; the relying party must
verify its correct inclusion in the evidence it received during the handshake.
Both parties must adjust the size of channel_binder to the length advertised by
the attester.</t>
        </section>
      </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>
    </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 certificate_request 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 certificate_request
message.</t>
          <t>If the server does not send a certificate_request 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>
        <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 it 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 certificate_request 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 certificate_request message.</t>
          <t>If the server does not send a certificate_request 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="background-check-model-examples">
      <name>Background-Check Model Examples</name>
      <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>
    <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>Intel</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <date day="20" month="October" year="2024"/>
            <abstract>
              <t>   This document defines the RATS conceptual message wrapper (CMW)
   format, a type of encapsulation format that can be used for any RATS
   messages, such as Evidence, Attestation Results, Endorsements, and
   Reference Values.  Additionally, the document describes a collection
   type that enables the aggregation of one or more CMWs into a single
   message.

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

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

Discussion Venues

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bft-rats-kat-04"/>
        </reference>
        <reference anchor="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="Dave Thaler" initials="D." surname="Thaler">
              <organization>Microsoft</organization>
            </author>
            <date day="5" month="September" year="2024"/>
            <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-06"/>
        </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="18" month="October" year="2024"/>
            <abstract>
              <t>   This specification defines a mechanism for the selective disclosure
   of individual elements of a JSON-encoded 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-13"/>
        </reference>
        <reference anchor="I-D.ietf-rats-ar4si">
          <front>
            <title>Attestation Results for Secure Interactions</title>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Hardjono" initials="T." surname="Hardjono">
              <organization>MIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Vincent Scarlata" initials="V." surname="Scarlata">
              <organization>Intel</organization>
            </author>
            <date day="2" month="September" year="2024"/>
            <abstract>
              <t>   This document defines reusable Attestation Result information
   elements.  When these elements are offered to Relying Parties as
   Evidence, different aspects of Attester trustworthiness can be
   evaluated.  Additionally, where the Relying Party is interfacing with
   a heterogeneous mix of Attesting Environment and Verifier types,
   consistent policies can be applied to subsequent information exchange
   between each Attester and the Relying Party.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-ar4si-07"/>
        </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="I-D.acme-device-attest">
          <front>
            <title>Automated Certificate Management Environment (ACME) Device Attestation Extension</title>
            <author fullname="Brandon Weeks" initials="B." surname="Weeks">
              <organization>Google</organization>
            </author>
            <date day="25" month="August" year="2024"/>
            <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-03"/>
        </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 1183?>

<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 signalling via existing methods, e.g. using a policy OID in
the end-entity certificate.</t>
            </li>
            <li>
              <t>Implicit signalling, 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>
    <section anchor="history">
      <name>History</name>
      <t>RFC EDITOR: PLEASE REMOVE THIS SECTION</t>
      <section anchor="draft-fossati-tls-attestation-02">
        <name>draft-fossati-tls-attestation-02</name>
        <ul spacing="normal">
          <li>
            <t>Focus on the background check model</t>
          </li>
          <li>
            <t>Added examples</t>
          </li>
          <li>
            <t>Updated introduction</t>
          </li>
          <li>
            <t>Moved attestation format-specific content to related drafts.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-fossati-tls-attestation-01">
        <name>draft-fossati-tls-attestation-01</name>
        <ul spacing="normal">
          <li>
            <t>Added details about TPM attestation</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-fossati-tls-attestation-00">
        <name>draft-fossati-tls-attestation-00</name>
        <ul spacing="normal">
          <li>
            <t>Initial version</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="working-group-information">
      <name>Working Group Information</name>
      <t>The discussion list for the IETF TLS working group is located at the e-mail
address <eref target="mailto:tls@ietf.org">tls@ietf.org</eref>. Information on the group and information on how to
subscribe to the list is at <eref target="https://www1.ietf.org/mailman/listinfo/tls">https://www1.ietf.org/mailman/listinfo/tls</eref></t>
      <t>Archives of the list can be found at:
<eref target="https://www.ietf.org/mail-archive/web/tls/current/index.html">https://www.ietf.org/mail-archive/web/tls/current/index.html</eref></t>
    </section>
  </back>
  <!-- ##markdown-source:
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
/wBLyyzfN+wAAA==

-->

</rfc>
