<?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.6.17 (Ruby 2.6.8) -->
<?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-02" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.10 -->
  <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-02"/>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization>Arm Limited</organization>
      <address>
        <email>hannes.tschofenig@arm.com</email>
      </address>
    </author>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>Arm Limited</organization>
      <address>
        <email>Thomas.Fossati@arm.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>
    <date year="2022" month="October" day="24"/>
    <area>Security</area>
    <workgroup>TLS</workgroup>
    <keyword>attestation</keyword>
    <keyword>RATS</keyword>
    <keyword>TLS</keyword>
    <abstract>
      <t>Attestation is the process by which an entity produces evidence about itself
that another party can use to evaluate the trustworthiness of that entity.</t>
      <t>In use cases that require the use of remote attestation, such as confidential computing
or device onboarding, an attester has to convey evidence or attestation results to 
a relying party. This information exchange may happen at different layers in the 
protocol stack.</t>
      <t>This specification provides a generic way of passing evidence and attestation results
in the TLS handshake. Functionality-wise this is accomplished with the help of key
attestation.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The Remote ATtestation ProcedureS (RATS) architecture defines two basic types 
of topological patterns to communicate between an attester, a relying party, and
a verifier, namely the background-check model and the passport model. These two 
models are fundamentally different and require a different treatment when 
incorporated into the TLS handshake. For better readability to use different 
extensions for these two models.</t>
      <t>The two models can be summarized as follows:</t>
      <ul spacing="normal">
        <li>In the background check model, the attester conveys evidence to the relying party,
which then forwards the evidence to the verifier for appraisal; the verifier 
computes the attestation result and sends it back to the relying party.</li>
        <li>In the passport model, the attester transmits evidence to the  verifier 
directly and receives attestation results, which are then relayed to the
relying party. This specification supports both patterns.</li>
      </ul>
      <t>Several formats for encoding evidence are available, such as 
- the Entity Attestation Token (EAT) <xref target="I-D.ietf-rats-eat"/>, 
- the Trusted Platform Modules (TPMs) <xref target="TPM1.2"/> <xref target="TPM2.0"/>,
- the Android Key Attestation, and
- Apple Key Attestation.</t>
      <t>Like-wise, there are different encodings available for attestation results.
One such encoding, AR4SI <xref target="I-D.ietf-rats-ar4si"/> is being standardized by the RATS 
working group.</t>
      <t>This version of the specification defines how to support the background check model
in  the TLS handshake, such that the details about the attestation technology are
agnostic to the TLS handshake itself. Later versions of the specification will 
support the passport model as well.</t>
      <t>To give the peer information that the handshake signing key is properly secured, 
the associated evidence has to be verified by that peer.
Hence, attestation evidence about the security state of the signing key is needed, which
is typically associated with evidence about the overall platform state. The platform 
attestation service ensures that the key attestation service has not been tampered with.
The platform attestation service issues the Platform Attestation Token (PAT) and the
key attestation service issues the Key Attestation Token (KAT). The security of the 
protocol critically depends on the verifiable binding between these two logically separate
units of evidence.</t>
      <t>This document does not define how different attestation technologies are encoded.
This has either already been done is done accomplished by companion specifications.</t>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 <xref target="RFC2119"/>.</t>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>The Remote Attestation Procedures (RATS) architecture <xref target="I-D.ietf-rats-architecture"/>
defines two types of interaction models for attestation, namely the passport model
and the background check model. The subsections below explain the difference in their 
interactions.</t>
      <t>As typical with new features in TLS, the client indicates support for the new 
extension in the ClientHello. The newly introduced extensions allow evidence
and nonces to be exchanged. The nonces are used for guaranteeing freshness of
the exchanged evidence.</t>
      <t>When the evidence extension is successfully negotiated, the content of the
Certificate message contains a payload that is encoded based on the wrapper defined 
in <xref target="I-D.ftbs-rats-msg-wrap"/>.</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 a key attestation token, which associates a private key with the
attestation information. An example of a key attestation token format utilizing 
the EAT-format can be found in <xref target="I-D.bft-rats-kat"/>.</t>
      <t>The recipient extracts evidence from the Certificate message and relays it to the 
verifier to obtain attestation results. Subsequently, the attested key is used
to verify the CertificateVerify message.</t>
    </section>
    <section anchor="use-of-evidence-with-the-background-check-model">
      <name>Use of Evidence with the Background Check Model</name>
      <t>The background check model is described in Section 5.2 of 
<xref target="I-D.ietf-rats-architecture"/> and allows the following modes
of operation when used with TLS, namely</t>
      <ul spacing="normal">
        <li>TLS client is the attester,</li>
        <li>TLS server is the attester, and</li>
        <li>TLS client and server mutually attest each other.</li>
      </ul>
      <t>We will show the message exchanges of the three cases in
sub-sections below.</t>
      <section anchor="tls-client-as-attester">
        <name>TLS Client as Attester</name>
        <t>In this use case the TLS client, as the attester, is challenged by the TLS
server to provide evidence. The TLS client is the attester and the the TLS
server acts as a relying party. The TLS server needs to provide a nonce
in the EncryptedExtensions 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-as-attester">
        <name>TLS Server as Attester</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 ensured that the confidential computing platform is
genuine.</t>
        <figure anchor="_figure-background-check-model2">
          <name>TLS Client Providing Evidence to TLS Server.</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>
    <section anchor="evidence-extension-background-check-model">
      <name>Evidence Extension (Background Check Model)</name>
      <t>This document defines two new extensions, the evidence_request and 
the evidence_proposal, for use with the background check model.</t>
      <t>The EvidenceType structure encodes either a media type or as a
content format. The media type is a string-based identifier 
while the content format uses a number. The former is more 
flexible and does not necessarily require a registration 
through IANA while the latter is more efficient over-the-wire.</t>
      <figure anchor="_figure-attestation-type">
        <name>TLS Structure for Evidence.</name>
        <artwork><![CDATA[
   enum { NUMERIC(0), STRING(1) } encodingType;

   struct {
        encodingType type;
        select (encodingType) {
            case NUMERIC:
              uint16 content_format;
            case STRING:
               opaque media_type<0..2^16-1>;
        };
   } EvidenceType;
      
   struct {
           select(ClientOrServerExtension) {
               case client:
                 EvidenceType supported_evidence_types<1..2^8-1>;
                 opaque nonce<0..2^8-1>;
                 
               case server:
                 EvidenceType selected_evidence_type;
           }
   } evidenceRequestTypeExtension;

   struct {
           select(ClientOrServerExtension) {
               case client:
                 EvidenceType supported_evidence_types<1..2^8-1>;

               case server:
                 EvidenceType selected_evidence_type;
                 opaque nonce<0..2^8-1>;
           }
   } evidenceProposalTypeExtension;
]]></artwork>
      </figure>
      <t>The Certificate payload is used as a container, as shown in 
<xref target="_figure-certificate"/>, and follows the model of <xref target="RFC8446"/>.</t>
      <figure anchor="_figure-certificate">
        <name>Certificate Message.</name>
        <artwork><![CDATA[
      struct {
          select (certificate_type) {
              case RawPublicKey:
                /* From RFC 7250 ASN.1_subjectPublicKeyInfo */
                opaque ASN1_subjectPublicKeyInfo<1..2^24-1>;

                /* payload used to convey evidence */
              case attestation:
                opaque evidence<1..2^24-1>;
              
              case X509:
                opaque cert_data<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.ftbs-rats-msg-wrap"/>.</t>
    </section>
    <section anchor="behavior">
      <name>TLS Client and Server Handshake Behavior</name>
      <t>The high-level message exchange in <xref target="_figure-overview"/> shows the
evidence_proposal and evidence_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
     v + evidence_request
     -------->
                                                  ServerHello  ^ Key
                                                 + key_share*  | Exch
                                            + pre_shared_key*  v
                                        {EncryptedExtensions}  ^  Server
                                          + evidence_proposal  |
                                           + evidence_request  |                                     
                                        {CertificateRequest*}  v  Params
                                               {Certificate*}  ^
                                         {CertificateVerify*}  | Auth
                                                   {Finished}  v
                               <--------  [Application Data*]
     ^ {Certificate*}
Auth | {CertificateVerify*}
     v {Finished}              -------->
       [Application Data]      <------->  [Application Data]
]]></artwork>
      </figure>
      <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 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 indicates
the types of 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 MUST 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 cient is not configured to use the proposed evidence type 
with the given server.  If the client has no evidenence types 
to send in the ClientHello it MUST omit the evidence_proposal
extension in the ClientHello.</t>
        <t>The client MUST 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 MUST 
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>The server does not support the extension defined in this
document.  In this case, the server returns the EncryptedExtensions
without the extensions defined in this document.</li>
          <li>The server supports the extension 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".</li>
          <li>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.</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 MUST include the
client_attestation_type 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 MUST be selected from one of the
values provided in the evidence_proposal extension sent in the
ClientHello.  The server MUST 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 MUST 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 MUST contain 
a single value selected from the evidence_request extension in 
the ClientHello.</t>
      </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, etc.</t>
        <t>In such scenarios, the users (e.g., the party providing the data input
for the computation, the consumer of the computed results, the party
providing a proprietary ML model used in the computation) have two
goals:</t>
        <ul spacing="normal">
          <li>Identifying the workload they are interacting with,</li>
          <li>Making sure that the platform on which the workload executes is a
Trusted Execution Environment (TEE) with the expected features.</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 kinds of evidence 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 the local API to
request the attestation.  The returned evidence binds the identity key
with the platform identity and security state.  The server
then signs the handshake transcript with the (attested) identity key,
and sends the attestation evidence together with the signature over to
the client.</t>
        <t>The client forwards the attestation evidence to the verifier using the
previously established session, obtains the attestation result and
checks 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">
                <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,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 208,544 L 400,544" fill="none" stroke="black"/>
                <path d="M 400,624 L 520,624" fill="none" stroke="black"/>
                <path d="M 408,656 L 528,656" fill="none" stroke="black"/>
                <path d="M 400,688 L 520,688" fill="none" stroke="black"/>
                <path d="M 408,720 L 528,720" 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,688 516,682.4 516,693.6 " fill="black" transform="rotate(0,520,688)"/>
                <polygon class="arrowhead" points="528,624 516,618.4 516,629.6 " fill="black" transform="rotate(0,520,624)"/>
                <polygon class="arrowhead" points="416,720 404,714.4 404,725.6 " fill="black" transform="rotate(180,408,720)"/>
                <polygon class="arrowhead" points="416,656 404,650.4 404,661.6 " fill="black" transform="rotate(180,408,656)"/>
                <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,544 204,538.4 204,549.6 " fill="black" transform="rotate(180,208,544)"/>
                <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="256" y="436">ServerHello</text>
                  <text x="240" y="452">{...}</text>
                  <text x="288" y="468">EncryptedExtensions</text>
                  <text x="240" y="484">{...}</text>
                  <text x="288" y="500">evidence_request(</text>
                  <text x="264" y="516">type(a)</text>
                  <text x="224" y="532">)</text>
                  <text x="456" y="564">attest_key(</text>
                  <text x="452" y="580">nonce,</text>
                  <text x="440" y="596">TIK</text>
                  <text x="416" y="612">)</text>
                  <text x="444" y="644">CAB(KAT,</text>
                  <text x="500" y="644">PAT)</text>
                  <text x="460" y="676">sign(TIK,hs)</text>
                  <text x="456" y="708">sig</text>
                  <text x="292" y="740">Certificate(KAT,PAT)</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)        |               |    |
|  |                    |  )                     |               |    |
|  |                    +----------------------->|               |    |
|  |                    | ServerHello            |               |    |
|  |                    |  {...}                 |               |    |
|  |                    | EncryptedExtensions    |               |    |
|  |                    |  {...}                 |               |    |
|  |                    |  evidence_request(     |               |    |
|  |                    |    type(a)             |               |    |
|  |                    |  )                     |               |    |
|  |                    |<-----------------------+               |    |
|  |                    |                        | attest_key(   |    |
|  |                    |                        |   nonce,      |    |
|  |                    |                        |   TIK         |    |
|  |                    |                        | )             |    |
|  |                    |                        +-------------->|    |
|  |                    |                        | CAB(KAT, PAT) |    |
|  |                    |                        |<--------------+    |
|  |                    |                        | sign(TIK,hs)  |    |
|  |                    |                        +-------------->|    |
|  |                    |                        |     sig       |    |
|  |                    |                        |<--------------+    |
|  |                    | Certificate(KAT,PAT)   |               |    |
|  |                    | 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 example, an IoT is onboarded to a cloud service provider (or to a
network operator). In this scenario there is typically no a-priori
relationship between the device and the cloud service provider that 
will remote manage the device.</t>
        <t>In such scenario, the cloud service provider wants to make sure
that the device runs the correct version of firmware, has not been 
rooted, is 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
with the workload and platform identity and security state.  The client
then signs the handshake transcript 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 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="1136" width="576" viewBox="0 0 576 1136" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
                <path d="M 8,112 L 8,1072" fill="none" stroke="black"/>
                <path d="M 32,80 L 32,112" fill="none" stroke="black"/>
                <path d="M 32,144 L 32,1072" 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,1120" 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,1120" 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,1072" fill="none" stroke="black"/>
                <path d="M 568,48 L 568,80" fill="none" stroke="black"/>
                <path d="M 568,160 L 568,1056" 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,576 L 168,576" fill="none" stroke="black"/>
                <path d="M 32,608 L 160,608" fill="none" stroke="black"/>
                <path d="M 40,640 L 168,640" fill="none" stroke="black"/>
                <path d="M 32,672 L 160,672" fill="none" stroke="black"/>
                <path d="M 168,720 L 360,720" fill="none" stroke="black"/>
                <path d="M 368,832 L 520,832" fill="none" stroke="black"/>
                <path d="M 376,896 L 528,896" fill="none" stroke="black"/>
                <path d="M 368,912 L 392,912" fill="none" stroke="black"/>
                <path d="M 376,944 L 392,944" fill="none" stroke="black"/>
                <path d="M 368,960 L 392,960" fill="none" stroke="black"/>
                <path d="M 376,992 L 392,992" fill="none" stroke="black"/>
                <path d="M 8,1072 L 552,1072" fill="none" stroke="black"/>
                <path d="M 176,1104 L 360,1104" 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,912 C 400.83064,912 408,919.16936 408,928" fill="none" stroke="black"/>
                <path d="M 392,944 C 400.83064,944 408,936.83064 408,928" fill="none" stroke="black"/>
                <path d="M 392,960 C 400.83064,960 408,967.16936 408,976" fill="none" stroke="black"/>
                <path d="M 392,992 C 400.83064,992 408,984.83064 408,976" fill="none" stroke="black"/>
                <path d="M 552,1072 C 560.83064,1072 568,1064.83064 568,1056" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="528,832 516,826.4 516,837.6 " fill="black" transform="rotate(0,520,832)"/>
                <polygon class="arrowhead" points="528,304 516,298.4 516,309.6 " fill="black" transform="rotate(0,520,304)"/>
                <polygon class="arrowhead" points="384,992 372,986.4 372,997.6 " fill="black" transform="rotate(180,376,992)"/>
                <polygon class="arrowhead" points="384,944 372,938.4 372,949.6 " fill="black" transform="rotate(180,376,944)"/>
                <polygon class="arrowhead" points="384,896 372,890.4 372,901.6 " fill="black" transform="rotate(180,376,896)"/>
                <polygon class="arrowhead" points="384,416 372,410.4 372,421.6 " fill="black" transform="rotate(180,376,416)"/>
                <polygon class="arrowhead" points="368,1104 356,1098.4 356,1109.6 " fill="black" transform="rotate(0,360,1104)"/>
                <polygon class="arrowhead" points="368,720 356,714.4 356,725.6 " fill="black" transform="rotate(0,360,720)"/>
                <polygon class="arrowhead" points="368,256 356,250.4 356,261.6 " fill="black" transform="rotate(0,360,256)"/>
                <polygon class="arrowhead" points="184,1104 172,1098.4 172,1109.6 " fill="black" transform="rotate(180,176,1104)"/>
                <polygon class="arrowhead" points="184,544 172,538.4 172,549.6 " fill="black" transform="rotate(180,176,544)"/>
                <polygon class="arrowhead" points="168,672 156,666.4 156,677.6 " fill="black" transform="rotate(0,160,672)"/>
                <polygon class="arrowhead" points="168,608 156,602.4 156,613.6 " fill="black" transform="rotate(0,160,608)"/>
                <polygon class="arrowhead" points="48,640 36,634.4 36,645.6 " fill="black" transform="rotate(180,40,640)"/>
                <polygon class="arrowhead" points="48,576 36,570.4 36,581.6 " fill="black" transform="rotate(180,40,576)"/>
                <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="96" y="516">attest_key(</text>
                  <text x="248" y="516">CertificateVerify</text>
                  <text x="92" y="532">nonce,</text>
                  <text x="212" y="532">Finished</text>
                  <text x="80" y="548">TIK</text>
                  <text x="56" y="564">)</text>
                  <text x="84" y="596">CAB(KAT,</text>
                  <text x="140" y="596">PAT)</text>
                  <text x="100" y="628">sign(TIK,hs)</text>
                  <text x="96" y="660">sig</text>
                  <text x="260" y="676">Certificate(KAT,PAT)</text>
                  <text x="268" y="692">CertificateVerify(sig)</text>
                  <text x="212" y="708">Finished</text>
                  <text x="396" y="756">POST</text>
                  <text x="456" y="756">/76839A9E</text>
                  <text x="400" y="772">Body:</text>
                  <text x="432" y="772">{</text>
                  <text x="428" y="788">type(a),</text>
                  <text x="408" y="804">CAB</text>
                  <text x="384" y="820">}</text>
                  <text x="400" y="852">Body:</text>
                  <text x="432" y="852">{</text>
                  <text x="432" y="868">att-result:</text>
                  <text x="500" y="868">AR{}</text>
                  <text x="384" y="884">}</text>
                  <text x="444" y="932">verify</text>
                  <text x="492" y="932">AR{}</text>
                  <text x="444" y="980">verify</text>
                  <text x="488" y="980">sig</text>
                  <text x="248" y="1092">application</text>
                  <text x="316" y="1092">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            |                   |    |
|  |  attest_key(   | CertificateVerify      |                   |    |
|  |    nonce,      | Finished               |                   |    |
|  |    TIK         |<-----------------------+                   |    |
|  |  )             |                        |                   |    |
|  |<---------------+                        |                   |    |
|  |  CAB(KAT, PAT) |                        |                   |    |
|  +--------------->|                        |                   |    |
|  |  sign(TIK,hs)  |                        |                   |    |
|  |<---------------+                        |                   |    |
|  |      sig       |                        |                   |    |
|  +--------------->| Certificate(KAT,PAT)   |                   |    |
|  |                | 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="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="tls-extensions">
        <name>TLS Extensions</name>
        <t>IANA is asked to allocate two new TLS extensions, evidence_request
and evidence_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 entry:</t>
        <ul spacing="normal">
          <li>Value: TBD</li>
          <li>Description: unsupported_evidence</li>
          <li>DTLS-OK: Y</li>
          <li>Reference: [This document]</li>
          <li>Comment:</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>Value: TBD2</li>
          <li>Description: Attestation</li>
          <li>Reference: [This document]</li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <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.ftbs-rats-msg-wrap" target="https://www.ietf.org/archive/id/draft-ftbs-rats-msg-wrap-01.txt">
          <front>
            <title>RATS Conceptual Messages Wrapper</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>arm</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>arm</organization>
            </author>
            <date day="20" month="October" year="2022"/>
            <abstract>
              <t>   This document defines two encapsulation formats for RATS conceptual
   messages (i.e., evidence, attestation results, endorsements and
   reference values.)

   The first format uses a CBOR or JSON array with two members: one for
   the type, another for the value.  The other format wraps the value in
   a CBOR byte string and prepends a CBOR tag to convey the type
   information.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ftbs-rats-msg-wrap-01"/>
        </reference>
        <reference anchor="I-D.bft-rats-kat" target="https://www.ietf.org/archive/id/draft-bft-rats-kat-00.txt">
          <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>arm</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>arm</organization>
            </author>
            <date day="21" month="October" year="2022"/>
            <abstract>
              <t>   This document defines an evidence format for key attestation based on
   the Entity Attestation Token (EAT) format.

Discussion Venues

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bft-rats-kat-00"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.ietf-rats-eat" target="https://www.ietf.org/archive/id/draft-ietf-rats-eat-17.txt">
          <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>Qualcomm Technologies Inc.</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="22" month="October" year="2022"/>
            <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 how much
   it wishes to trust 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-17"/>
        </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="I-D.ietf-rats-architecture" target="https://www.ietf.org/archive/id/draft-ietf-rats-architecture-22.txt">
          <front>
            <title>Remote Attestation Procedures Architecture</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel Corporation</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="28" month="September" year="2022"/>
            <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.
   An attempt is made to provide for a model that is neutral toward
   processor architectures, the content of claims, and protocols.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-architecture-22"/>
        </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 abbrev="IANA">Internet Assigned Numbers Authority</organization>
            </author>
            <date day="15" month="November" year="2005"/>
          </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 abbrev="IANA">Internet Assigned Numbers Authority</organization>
            </author>
            <date day="23" month="August" year="2005"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-rats-ar4si" target="https://www.ietf.org/archive/id/draft-ietf-rats-ar4si-03.txt">
          <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>Arm Limited</organization>
            </author>
            <author fullname="Vincent Scarlata" initials="V." surname="Scarlata">
              <organization>Intel</organization>
            </author>
            <date day="6" month="September" year="2022"/>
            <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-03"/>
        </reference>
      </references>
    </references>
    <section anchor="history">
      <name>History</name>
      <t>RFC EDITOR: PLEASE REMOVE THE THIS SECTION</t>
      <section anchor="draft-fossati-tls-attestation-02">
        <name>draft-fossati-tls-attestation-02</name>
        <ul spacing="normal">
          <li>Focus on the background check model</li>
          <li>Added examples</li>
          <li>Updated introduction</li>
          <li>Moved attestation format-specific content to related drafts.</li>
        </ul>
      </section>
      <section anchor="draft-fossati-tls-attestation-01">
        <name>draft-fossati-tls-attestation-01</name>
        <ul spacing="normal">
          <li>Added details about TPM attestation</li>
        </ul>
      </section>
      <section anchor="draft-fossati-tls-attestation-00">
        <name>draft-fossati-tls-attestation-00</name>
        <ul spacing="normal">
          <li>Initial version</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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
c9h4BNuWxPgdKBgMoBDERfcyG2RIUX6nYjTnBnsbLfja6aFnpIcuSU3R9Lt1
FJkqXztfK13FP++f4BhsvVJV4Q/amxICap+KC4XQKwwcoKunPUxkUNIChDCp
LaVbcVuL8mEUmL9txBCBfozuBzqbzcdq6+EBULtLajyd13PlwlFzLgXwLcXR
0JH9QSq/tyIffuLW3Ggh6yzXk1KaoFmag588jEK1juAePSIsnmksKm29cPfJ
LpS1tLE3664rnHvYPJwWNAYkskySNtSbFUxZ6akBy+hAlVOVJNarSWlDKQ1Q
JA2iagZrHDjdDl3kyh9YKA1vwl3neVwuZsDb585ieDsTjVRVOF/Xkxlm3EsU
6pGUClOC7+IwFI9T/KRXpj13PSutEtVGH+fkt+6phZ+IG6ljkjUQoRHH2Fdq
LlUuIzKJNZpJSmnOA1z2UJfRKo/QSjaVUys8igjquCuzxjutlUZVtstE19QW
DcQmzoo5QhuVAizHXLk+GCsdS1CHsCFQgdmqx0dpOb2lOAIMr0LHFLodzzUB
E1ELtZK4UkoJqR0o4qmCXGr3ZPgN+ldAv9JrhisyR1cadCOxByP2AC8dNa0z
4f8LH/b7b9z800Li/bLLv2tCjTHchvz+28++L8POQYb5e/6pxeItbjyLSmQW
D3wKWvgtbFNL+Tj4GTeH5GO9Fdm4gK3KZFq5FjcbYRfpz1O2+Yw2nDJNkaYM
U7cpk40//rQ5EAlptT2U8HPzoFnedeiOJU3w99/0Km8zvdaa4yw55XGqHSe6
T6roAABtDuDOs+RvlPO11OzzwXjCH4Mo9lDIdy33Y0lCcQb+5Ifk5N9/u/sG
9B3ujoko28J+YuQL/v4HRh6NosQilMc/WXA/hyRiOA/gho5pevIdoNb+1yna
LSR+auH6tLOZ0o53p/wRqWcZNTMhEXlrxyoZ++97npdxRZYYjcm5F/vGBkpq
+ntLZj2Ta23unWdyr2PifJDKPvEdkIai56zhMljXwksEglnNWuNoV6XhgLBB
w036Z9j0zU16dy5U23UmTB4E4zbvaF+ZYpALY1bz4TSta5tTsM5taNgZeT9u
c38Iq1SqfSkGDRPnSK3AxMYE04ppS40uy5/BGuvNqFKm752C/Zd1/v9jnTUP
8IdbZ/t5/8Dl/JfJXk+ef5nsbUz2ya4m+5F7aEWO73dHeA5aaQ4v1o1BXxfA
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
72GaJ/KX/qSeZjDK/wEHRCYWm4oAAA==

-->

</rfc>
