<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.24 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc rfcedstyle="yes"?>
<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>

<rfc ipr="pre5378Trust200902" docName="draft-fossati-tls-attestation-01" category="std" consensus="true">
  <front>
    <title abbrev="Attestation in TLS/DTLS">Using Attestation in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>

    <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="August" day="26"/>

    <area>Security</area>
    <workgroup>TLS</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>Various attestation technologies have been developed and formats have been standardized.
Examples include the Entity Attestation Token (EAT) and Trusted Platform Modules (TPMs).
Once attestation information has been produced on a device it needs to be communicated
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 attestation information in the 
TLS handshake.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<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. 
One format of encoding evidence is standardized with the Entity Attestation 
Token (EAT) <xref target="I-D.ietf-rats-eat"/> but there are other formats, such as 
attestation produced by Trusted Platform Modules (TPMs) <xref target="TPM1.2"/> <xref target="TPM2.0"/>.</t>

<t>This specification defines how to convey attestation information in the 
TLS handshake with different encodings being supported. This specification
standardizes two attestation formats – EAT and TPM-based attestation.</t>

<t>Note: This initial version of the specification focuses on EAT-based attestation.
Future versions will also define TPM-based attestation.</t>

</section>
<section anchor="conventions-and-terminology" title="Conventions and Terminology">

<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>

<t>The following terms are used in this document:</t>

<t><list style="symbols">
  <t>Root of Trust (RoT): A set of software and/or hardware components that need 
to be trusted to act as a security foundation required for accomplishing the
security goals. In our case, the RoT is expected to offer the functionality 
for attesting to the state of the platform.</t>
  <t>Attestation Key (AK): Cryptographic key belonging to the RoT that is only used
 to sign attestation tokens.</t>
  <t>Platform Attestation Key (PAK): An AK used specifically for signing attestation 
tokens relating to the state of the platform.</t>
  <t>Key Attestation Key (KAK): An AK used specifically for signing KATs. In some 
systems only a single AK is used. In that case the AK is used as a PAK and a KAK.</t>
  <t>TLS Identity Key (TIK): The KIK consists of a private and a public key. The private key is used in the CertificateVerify message during the TLS handshake. The public key is included in the Key Attestation Token.</t>
  <t>Attestation Token (AT): A collection of claims that a RoT assembles (and signs) with the purpose of informing - in a verifiable way - Relying Parties about the identity and state of the platform. Essentially a type of “Evidence” as per the RATS architecture terminology.</t>
  <t>Platform Attestation Token (PAT): An AT containing claims relating to the state of the software running on the platform. The process of generating a PAT typically involves gathering data during measured boot.</t>
  <t>Key Attestation Token (KAT): An AT containing a claim with a proof-of-possession (PoP) key. The KAT may also contain other claims, such as those indicating its validity. The KAT is signed by the KAK. The attestation 
service part of the RoT conceptually acts as a local certification authority since the KAT behaves like a certificate.</t>
  <t>Combined Attestation Bundle (CAB): A structure used to bundle a KAT and a PAT together for transport in the TLS handshake. If the KAT already includes a PAT, in form of a nested token, then it already corresponds to a CAB.</t>
</list></t>

</section>
<section anchor="overview" title="Overview">

<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>To simplify the description in this section we focus on the use case where the 
client is the attester and the server is the relying party. Hence, only the
client_attestation_type extension is discussed. The verifier is not shown in 
the diagrams. The described mechanism allows the roles to be reversed.</t>

<t>As typical with new features in TLS, the client indicates support for the new 
extension in the ClientHello. The client_attestation_type extension lists the
supported attestation formats. The server, if it supports the extension and one of the
attestation formats, it confirms the use of the feature.</t>

<t>Note: The newly introduced extension also allows nonces to be exchanged. Those
nonces are used for guaranteeing freshness of the generated attestation tokens.</t>

<t>When the attestation extension is successfully negotiated, the content of the
Certificate message is replaced with attestation information described in this
document.</t>

<t>A peer has to demonstrate possession of the private key via the CertificateVerify
message. While attestation information is signed by the attester, it typically
does not contain a public key (for example via a proof-of-possession key claim
<xref target="RFC8747"/>).</t>

<t>The attestation service on a device, which creates the attestation information, 
is unaware of the TLS exchange and the attestation service does not directly 
sign externally provided data, as it would be required to compute the CertificateVerify message.</t>

<t>Hence, the following steps happen:</t>

<t>The client generates the TIK, which are referred here as skT and pkT, for example
using the following API call:</t>

<figure><artwork><![CDATA[
key_id = GenerateKeyPair(alg_id)
]]></artwork></figure>

<t>The private key would be created and stored by the crypto hardware supported by
the device (rather than the TLS client in software).</t>

<t>Next, the attestation service needs to be triggered to create a Platform
Attestation Token (PAT) and the Key Attestation Token (KAT). The Key Attestation 
Token (KAT) includes a claim containing the
public key of the TIK (pkT). The KAT is then signed with the Key Attestation
Key (KAK).</t>

<t>To ensure freshness of the PAT and the KAT a nonce is provided by the relying 
party / verifier. Here is the symbolic API call to request a KAT and a PAT, which 
are concatinated together as the CAB.</t>

<figure><artwork><![CDATA[
cab = createCAB(key_id, nonce)
]]></artwork></figure>

<t>Once the Certificate message containing the CAB has been sent, the CertificateVerify
has to be created and it requires access to the private key. The signature operation
uses the private key of the TIK (skT).</t>

<t>The recipient of the Certificate and the CertificateVerify messages first extracts 
the PAT and the KAT from the Certificate message. The PAT and the KAT need to be 
conveyed to the verification service, whereby the following checks are made:</t>

<t><list style="symbols">
  <t>The signature protecting the PAT passes verification when using available trust anchor(s).</t>
  <t>The PAT has not been replayed, which can be checked by comparing the nonce included
in one of the claims and matching it against the nonce provided to the attester.</t>
  <t>The claims in the PAT are matched against stored reference values.</t>
  <t>The signature protecting the KAT passes verification.</t>
  <t>The claims in the KAT are validated, if needed.</t>
</list></t>

<t>Once all these steps are completed, the verifier produces the attestation result and
includes (if needed) the TIK public key.</t>

<t>In the subsections we will look at how the two message pattern fit align with the 
TLS exchange.</t>

<section anchor="attestation-within-the-passport-model" title="Attestation within the Passport Model">

<t>The passport model is described in Section 5.1 of <xref target="I-D.ietf-rats-architecture"/>. A key feature 
of this model is that the attester interacts with the verification service before initiating 
the TLS exchange. It sends evidence to the verification service, which then returns the 
attestation result (including the TIK public key).</t>

<t>The example exchange in <xref target="_figure-passport-model"/> shows how a client
provides attestation to the server by utilizing EAT tokens <xref target="I-D.ietf-rats-eat"/>.
With the ClientHello the TLS client needs to indicate that it supports the EAT-based
attestation format. The TLS server acknowledges support for this attestation type in
the EncryptedExtensions message. </t>

<t>In the Certificate message the TLS client transmits the attestation result to the TLS 
server, in form a CAB (i.e. a concatinated PAT and KAT).</t>

<t>The TLS client then creates the CertificateVerify message by asking the crypto 
service to sign the TLS handshake message transcript with the TIK private key. 
The TLS server then verifies this message by utilizing the TIK public key.</t>

<figure title="Example Exchange with the Passport Model." anchor="_figure-passport-model"><artwork><![CDATA[
    Client                                           Server

Key  ^ ClientHello
Exch | + client_attestation_type(eat)
     |
     |
     v                         -------->
                                                  ServerHello ^ KeyExch
                                        {EncryptedExtensions} ^ Server
                               + client_attestation_type(eat) |
                                         {CertificateRequest} v Params
                                                {Certificate} ^
                                          {CertificateVerify} | Auth
                                                   {Finished} v
                               <--------  [Application Data*]
     ^ {Certificate}
Auth | {CertificateVerify}
     v {Finished}              -------->
       [Application Data]      <------->  [Application Data]
]]></artwork></figure>

</section>
<section anchor="attestation-within-the-background-check-model" title="Attestation within the Background Check Model">

<t>The background check model is described in Section 5.2 of <xref target="I-D.ietf-rats-architecture"/>.</t>

<t>The message exchange of the background check model differs from the passport 
model because the TLS server needs to provide a nonce in the ServerHello to the 
TLS client so that the attestation service can feed the nonce into the generation
of the PAT. The TLS server, when receiving the CAB, will have to contact the 
verification service.</t>

<figure title="Example Exchange with the Background Check Model." anchor="_figure-background-check-model"><artwork><![CDATA[
       Client                                           Server

Key  ^ ClientHello
Exch | + client_attestation_type(eat)
     |
     |
     v                         -------->
                                                  ServerHello  ^ Key
                                 client_attestation_type(eat)  | Exch
                                                      + nonce  v
                                        {EncryptedExtensions}  ^  Server
                                         {CertificateRequest}  v  Params
                                                {Certificate}  ^
                                          {CertificateVerify}  | Auth
                                                   {Finished}  v
                               <--------  [Application Data*]
     ^ {Certificate}
Auth | {CertificateVerify}
     v {Finished}              -------->
       [Application Data]      <------->  [Application Data]
]]></artwork></figure>

</section>
</section>
<section anchor="tls-attestation-type-extension" title="TLS Attestation Type Extension">

<t>This document defines a new extension to carry the attestation types.
The extension is conceptually similiar to the ‘server_certificate_type’
and the ‘server_certificate_type’ defined by <xref target="RFC7250"/>.</t>

<figure title="AttestationTypeExtension Structure." anchor="_figure-attestation-type"><artwork><![CDATA[
   struct {
           select(ClientOrServerExtension) {
               case client:
                 CertificateType client_attestation_types<1..2^8-1>;
                 opaque nonce<0..2^16-1>;
                 
               case server:
                 CertificateType client_attestation_type;
                 opaque nonce<0..2^16-1>;                 
           }
   } ClientAttestationTypeExtension;

   struct {
           select(ClientOrServerExtension) {
               case client:
                 CertificateType server_attestation_types<1..2^8-1>;
                 opaque nonce<0..2^16-1>;                 

               case server:
                 CertificateType server_attestation_type;
                 opaque nonce<0..2^16-1>;                                  
           }
   } ServerAttestationTypeExtension;
]]></artwork></figure>

<t>The Certificate payload is used as a container, as shown in 
<xref target="_figure-certificate"/>.  The shown Certificate structure is
an adaptation of <xref target="RFC8446"/>.</t>

<figure title="Certificate Message." anchor="_figure-certificate"><artwork><![CDATA[
      struct {
          select (certificate_type) {
              case RawPublicKey:
                /* From RFC 7250 ASN.1_subjectPublicKeyInfo */
                opaque ASN1_subjectPublicKeyInfo<1..2^24-1>;

                /* attestation type defined in this document */
              case EAT:
                opaque cab<1..2^24-1>;
              
                /* attestation type defined in this document */
              case TPM:
                opaque tpmStmtFormat<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>To simplify parsing of an EAT-based attestation payload,
the PAT and the KAT are typed.</t>

</section>
<section anchor="behavior" title="TLS Client and Server Handshake Behavior">

<t>This specification extends the ClientHello and the EncryptedExtensions
   messages, according to <xref target="RFC8446"/>.</t>

<t>The high-level message exchange in <xref target="_figure-overview"/> shows the
   client_attestation_type and server_attestation_type extensions added
   to the ClientHello and the EncryptedExtensions messages.</t>

<figure title="Attestation Message Overview." anchor="_figure-overview"><artwork><![CDATA[
       Client                                           Server

Key  ^ ClientHello
Exch | + key_share*
     | + signature_algorithms*
     | + psk_key_exchange_modes*
     | + pre_shared_key*
     | + client_attestation_type
     v + server_attestation_type
     -------->
                                                  ServerHello  ^ Key
                                                 + key_share*  | Exch
                                            + pre_shared_key*  v
                                        {EncryptedExtensions}  ^  Server
                                    + client_attestation_type  |
                                    + server_attestation_type                                        
                                        {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" title="Client Hello">

<t>In order to indicate the support of attestation types, clients include
   the client_attestation_type and/or the server_attestation_type
   extensions in the ClientHello.</t>

<t>The client_attestation_type extension in the ClientHello indicates
   the attestation types the client is able to provide to the server,
   when requested using a CertificateRequest message.</t>

<t>The server_attestation_type extension in the ClientHello indicates
   the types of attestation types the client is able to process when 
   provided by the server in a subsequent Certificate payload.</t>

<t>The client_attestation_type and server_attestation_type extensions
   sent in the ClientHello each carry a list of supported attestation
   types, sorted by client preference.  When the client supports only
   one attestation type, it is a list containing a single element.</t>

<t>The TLS client MUST omit attestation types from the
   client_attestation_type extension in the ClientHello if it is not
   equipped with the corresponding attestation functionality, or if 
   it is not configured to use it with the given TLS
   server.  If the client has no attestation types to send in
   the ClientHello it MUST omit the client_attestation_type extension 
   in the ClientHello.</t>

<t>The TLS client MUST omit attestation types from the
   server_attestation_type extension in the ClientHello if it is not
   equipped with the attestation verification functionality.  If the 
   client has no attestation types to send in the ClientHello it
   MUST omit the entire server_attestation_type extension from the
   ClientHello.</t>

</section>
<section anchor="server-hello" title="Server Hello">

<t>If the server receives a ClientHello that contains the
   client_attestation_type extension and/or the server_attestation_type
   extension, then three outcomes are possible:</t>

<t><list style="symbols">
  <t>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.</t>
  <t>The server supports the extension defined in this document, but
 it does not have any attestation type in common with the client.
 Then, the server terminates the session with a fatal alert of
 type “unsupported_certificate”.</t>
  <t>The server supports the extensions defined in this document and
 has at least one attestation type in common with the client.  In
 this case, the processing rules described below are followed.</t>
</list></t>

<t>The client_attestation_type extension in the ClientHello indicates
   the attestation types the client is able to provide to the server,
   when requested using a certificate_request message.  If the TLS
   server wants to request a certificate from the client (via the
   certificate_request message), it MUST include the
   client_attestation_type extension in the EncryptedExtensions.  This
   client_attestation_type extension in the EncryptedExtensions then indicates
   the content the client is requested to provide in a
   subsequent Certificate payload.  The value conveyed in the
   client_attestation_type extension MUST be selected from one of the
   values provided in the client_attestation_type extension sent in the
   client hello.  The server MUST also include a certificate_request
   payload in the EncryptedExtensions message.</t>

<t>If the server does not send a certificate_request payload (for
   example, because client authentication happens at the application
   layer or no client authentication is required) or none of the
   attestation types supported by the client (as indicated in the
   client_attestation_type extension in the ClientHello) match the
   server-supported attestation types, then the client_attestation_type
   payload in the ServerHello MUST be omitted.</t>

<t>The server_attestation_type extension in the ClientHello indicates
   the types of attestation types the client is able to process when provided
   by the server in a subsequent Certificate message. With the
   server_attestation_type extension in the EncryptedExtensions, the TLS server
   indicates the attestation type carried in the Certificate payload.
   Note that only a single value is permitted in the 
   server_attestation_type extension when carried in the EncryptedExtensions
   message.</t>

</section>
</section>
<section anchor="tpm-attestation" title="TPM Attestation">

<t>The Trusted Platform Module (TPM) <xref target="TPM2.0"/> is one type of hardware RoT. TPMs offer the ability to produce both key and platform attestation tokens.</t>

<section anchor="platform-attestation" title="Platform Attestation">

<t>Platform Configuration Registers (PCRs) represent the core mechanism in TPMs for measuring and conveying information about the platform state via remote attestation. While specifications exist for assigning individual PCRs to specific software components, the choice of which combination of PCRs to include for any attestation procedure (and which hashing algorithm to use) is left to the parties involved. The agreement over and the configuration of the PCR selection falls outside the scope of this specification and is thus expected to occur out-of-band.</t>

<t>The attestation evidence is produced through the TPM2_Quote operation. The evidence along with all other relevant metadata is transmitted in a format derived from the <xref target="WebAuthn"/> Attestation Statements. This format and the workflows around it are defined below.</t>

<section anchor="tpm-platform-attestation-statement-format" title="TPM Platform Attestation Statement Format">

<t>The TPM Platform Attestation Statement is a modified version of the TPM Attestation Statement Format, which covers key attestation tokens.</t>

<figure title="TPM Platform Attestation Statement Format" anchor="_figure-tpm-plat-attest-stmt"><artwork><![CDATA[
    tpmPlatStmtFormat = {
                          ver: "2.0",
                          (
                              alg: COSEAlgorithmIdentifier,
                              x5c: [ pakCert: bytes, * (caCert: bytes) ]
                          )
                          sig: bytes,
                          attestInfo: bytes,
                        }
]]></artwork></figure>

<t><list style="symbols">
  <t><spanx style="emph">ver</spanx>: The version of the TPM specification to which the signature conforms.</t>
  <t><spanx style="emph">alg</spanx>: A COSEAlgorithmIdentifier containing the identifier of the algorithm used to generate the attestation signature.</t>
  <t><spanx style="emph">x5c</spanx>: A certificate for the PAK, followed by its certificate chain. The contents of the array SHOULD follow the same requirements as the <spanx style="emph">x5chain</spanx> header parameter defined in Section 2 of <xref target="I-D.ietf-cose-x509"/>, with the sole difference that a CBOR array is also used when only <spanx style="emph">pakCert</spanx> is present.
  <list style="symbols">
      <t><spanx style="emph">pakCert</spanx>: The PAK certificate used for the attestation.</t>
    </list></t>
  <t><spanx style="emph">sig</spanx>: The attestation signature, in the form of a TPMT_SIGNATURE structure as specified in Part 2, Section 11.3.4 of <xref target="TPM2.0"/>.</t>
  <t><spanx style="emph">attestInfo</spanx>: The TPMS_ATTEST structure over which the above signature was computed, as specified in Part 2, Section 10.12.8 of <xref target="TPM2.0"/>.</t>
</list></t>

</section>
<section anchor="signing-procedure" title="Signing Procedure">

<t>Generate a signature using the operation specified in Part 3, Section 18.4 of <xref target="TPM2.0"/>, using the PAK as the signing key, the out-of-band agreed-upon PCR selection. Freshness of the attestation is given by the nonce provided by the relying party. The nonce is included as qualified data to the TPM2_Quote operation, concatenated with an identifier of the platform being attested, as shown below:</t>

<figure><artwork><![CDATA[
  _extraData_ = _platformUuid_ || _relyingPartyNonce_
]]></artwork></figure>

<t>The platform identifier is a 16-bytes long UUID, with the remaining data representing the nonce. The UUID is intended to help the verifier link the platform with its expected reference values.</t>

<t>Set the <spanx style="emph">attestInfo</spanx> field to the quoted PCR selection produced by the operation, and <spanx style="emph">sig</spanx> to the signature generated above.</t>

</section>
<section anchor="verification-procedure" title="Verification Procedure">

<t>The inputs to the verification procedure are as follows:</t>

<t><list style="symbols">
  <t>an attestation statement in the format described above</t>
  <t>the nonce sent to the attester</t>
  <t>a database of reference values for various platforms</t>
</list></t>

<t>The steps for verifying the attestation:</t>

<t><list style="symbols">
  <t>Verify that the attestation token is a valid CBOR structure conforming to the CTAP2 canonical CBOR encoding form defined in Section 6 of <xref target="CTAP2"/>, and perform CBOR decoding on it to extract the contained fields.</t>
  <t>Verify that <spanx style="emph">alg</spanx> describes a valid, accepted signing algorithm.</t>
  <t>Verify that <spanx style="emph">x5c</spanx> is present and follows the requirements laid out for <spanx style="emph">x5chain</spanx> in <xref target="I-D.ietf-cose-x509"/>.</t>
  <t>Verify the <spanx style="emph">sig</spanx> is a valid signature over <spanx style="emph">attestInfo</spanx> using the attestation public key in <spanx style="emph">pakCert</spanx> with the algorithm specified in <spanx style="emph">alg</spanx>.</t>
  <t>Verify that <spanx style="emph">pakCert</spanx> meets the requirements in Section 8.3.1 of <xref target="WebAuthn"/>.</t>
  <t>Verify that <spanx style="emph">attestInfo</spanx> is valid:  <list style="symbols">
      <t>Verify that <spanx style="emph">magic</spanx> is set to TPM_GENERATED_VALUE.</t>
      <t>Verify that <spanx style="emph">type</spanx> is set to TPM_ST_ATTEST_QUOTE.</t>
      <t>Verify that <spanx style="emph">attested</spanx> contains a TPMS_QUOTE_INFO structure as specified in Part 2, Section 10.12.4 of <xref target="TPM2.0"/>.</t>
      <t>Extract <spanx style="emph">extraData</spanx> and parse it assuming the format defined above to obtain platform UUID and the nonce. Verify that the nonce is correct.</t>
      <t>Verify that the platform UUID obtained earlier is valid and represents a platform found in the database.</t>
      <t>Retrieve the reference values defined for this platform. Compute the digest of the concatenation of all relevant PCRs using the hash algorithm defined in <spanx style="emph">alg</spanx>. The PCRs are concatenated as described in “Selecting Multiple PCR” (Part 1, Section 17.5 of <xref target="TPM2.0"/>). Verify that this digest is equal to <spanx style="emph">pcrDigest</spanx> in <spanx style="emph">attested</spanx> and that the hash algorithm defined in <spanx style="emph">pcrSelect</spanx> is aligned with the one in <spanx style="emph">alg</spanx>.</t>
      <t>Note that the remaining fields in the “Standard Attestation Structure” (Part 1, Section 31.2 of <xref target="TPM2.0"/>), i.e., <spanx style="emph">qualifiedSigner</spanx>, <spanx style="emph">clockInfo</spanx> and <spanx style="emph">firmwareVersion</spanx> are ignored. These fields MAY be used as an input to risk engines.</t>
    </list></t>
  <t>If successful, return implementation-specific values representing attestation type AttCA and attestation trust path <spanx style="emph">x5c</spanx>.</t>
</list></t>

</section>
</section>
<section anchor="key-attestation" title="Key Attestation">

<t>Attesting to the provenance and properties of a key is possible through a TPM if the key resides on the TPM. The TPM 2.0 key attestation mechanism used in this specification is TPM2_Certify. The workflow for generating the evidence and assessing them, as well as the format used to transport them, follows closely the TPM Attestation Statement defined in Section 8.3 of <xref target="WebAuthn"/>, with one modification:</t>

<t><list style="symbols">
  <t>For both signing and verification, <spanx style="emph">attToBeSigned</spanx> is unnecessary and therefore its hash is replaced with the nonce coming from the relying party as the qualifying data when signing, and as the expected <spanx style="emph">extraData</spanx> value during verification.</t>
</list></t>

<t>The WebAuthn specification <xref target="WebAuthn"/> uses the term AIK to refer to the signing key. In this specification we use the term KAK instead. The credential (i.e., attested) key is in our case the TIK.</t>

</section>
</section>
<section anchor="sec-cons" title="Security Considerations">

<t>TBD.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>TBD: Create new registry for attestation types.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<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>




    </references>

    <references title='Informative References'>





<reference anchor='RFC8747' target='https://www.rfc-editor.org/info/rfc8747'>
<front>
<title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
<author fullname='M. Jones' initials='M.' surname='Jones'><organization/></author>
<author fullname='L. Seitz' initials='L.' surname='Seitz'><organization/></author>
<author fullname='G. Selander' initials='G.' surname='Selander'><organization/></author>
<author fullname='S. Erdtman' initials='S.' surname='Erdtman'><organization/></author>
<author fullname='H. Tschofenig' initials='H.' surname='Tschofenig'><organization/></author>
<date month='March' year='2020'/>
<abstract><t>This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key is also sometimes described as being the holder-of-key. This specification provides equivalent functionality to &quot;Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)&quot; (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t></abstract>
</front>
<seriesInfo name='RFC' value='8747'/>
<seriesInfo name='DOI' value='10.17487/RFC8747'/>
</reference>



<reference anchor='RFC7250' target='https://www.rfc-editor.org/info/rfc7250'>
<front>
<title>Using Raw Public Keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
<author fullname='P. Wouters' initials='P.' role='editor' surname='Wouters'><organization/></author>
<author fullname='H. Tschofenig' initials='H.' role='editor' surname='Tschofenig'><organization/></author>
<author fullname='J. Gilmore' initials='J.' surname='Gilmore'><organization/></author>
<author fullname='S. Weiler' initials='S.' surname='Weiler'><organization/></author>
<author fullname='T. Kivinen' initials='T.' surname='Kivinen'><organization/></author>
<date month='June' year='2014'/>
<abstract><t>This document specifies a new certificate type and two TLS extensions for exchanging raw public keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS).  The new certificate type allows raw public keys to be used for authentication.</t></abstract>
</front>
<seriesInfo name='RFC' value='7250'/>
<seriesInfo name='DOI' value='10.17487/RFC7250'/>
</reference>


<reference anchor='I-D.ietf-rats-architecture'>
   <front>
      <title>Remote Attestation Procedures Architecture</title>
      <author fullname='Henk Birkholz'>
	 <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname='Dave Thaler'>
	 <organization>Microsoft</organization>
      </author>
      <author fullname='Michael Richardson'>
	 <organization>Sandelman Software Works</organization>
      </author>
      <author fullname='Ned Smith'>
	 <organization>Intel Corporation</organization>
      </author>
      <author fullname='Wei Pan'>
	 <organization>Huawei Technologies</organization>
      </author>
      <date day='16' month='August' 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-21'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-rats-architecture-21.txt' type='TXT'/>
</reference>


<reference anchor='I-D.ietf-rats-eat'>
   <front>
      <title>The Entity Attestation Token (EAT)</title>
      <author fullname='Laurence Lundblade'>
	 <organization>Security Theory LLC</organization>
      </author>
      <author fullname='Giridhar Mandyam'>
	 <organization>Qualcomm Technologies Inc.</organization>
      </author>
      <author fullname='Jeremy O&#39;Donoghue'>
	 <organization>Qualcomm Technologies Inc.</organization>
      </author>
      <date day='10' month='July' 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 phone, 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.  To a large degree, all this document
   does is extend CWT and JWT.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-rats-eat-14'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-rats-eat-14.txt' type='TXT'/>
</reference>


<reference anchor='I-D.ietf-cose-x509'>
   <front>
      <title>CBOR Object Signing and Encryption (COSE): Header parameters for carrying and referencing X.509 certificates</title>
      <author fullname='Jim Schaad'>
	 <organization>August Cellars</organization>
      </author>
      <date day='14' month='December' year='2020'/>
      <abstract>
	 <t>   The CBOR Signing And Encrypted Message (COSE) structure uses
   references to keys in general.  For some algorithms, additional
   properties are defined which carry parameters relating to keys as
   needed.  The COSE Key structure is used for transporting keys outside
   of COSE messages.  This document extends the way that keys can be
   identified and transported by providing attributes that refer to or
   contain X.509 certificates.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-cose-x509-08'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-cose-x509-08.txt' type='TXT'/>
</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="WebAuthn" target="https://www.w3.org/TR/webauthn/">
  <front>
    <title>Web Authentication: An API for accessing Public Key Credentials, Level 2</title>
    <author >
      <organization>World Wide Web Consortium</organization>
    </author>
    <date year="2021" month="April"/>
  </front>
</reference>
<reference anchor="CTAP2" target="https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html">
  <front>
    <title>Client to Authenticator Protocol</title>
    <author >
      <organization>World Wide Web Consortium</organization>
    </author>
    <date year="2019" month="January"/>
  </front>
</reference>


    </references>


<section anchor="history" title="History">

<t>RFC EDITOR: PLEASE REMOVE THE THIS SECTION</t>

<t><list style="symbols">
  <t>Initial version</t>
</list></t>

</section>
<section anchor="working-group-information" title="Working Group Information">

<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:
H4sIAKB6CGMAA+1de3PbRpL/H59iSv5jJS9JPfJcbTa1iizHOlm2VqKTS21t
WENgSOIEAgwGlMx1dJ8lnyWf7Po1gwEIynScrdu6OpVTkQhMT093T/ev59Hs
9/tRlVaZOVZvbJpP1UlVGVvpKi1yleZqWOrcLoqyUi/1ypTqxsTLMq1Wanf4
8mZP6TxRz3Slp6WeP/LuM3w50uNxae6O17p4ebOPL0RJEed6DpwkpZ5U/Ulh
LbzUrzLb13WT/sFhFOvKTItydaxslURRuiiP1aI0n33yxZfDcmmro4ODPx0c
Rbo0+tizEd0X5e20LJaLY+wzujUr+CQ5Vud5ZcrcVP1n2G8UQUd5MtJZkQMv
K2OjRXocKVVOYpPYapXJp0pVRRz8muaJySv3gQU5lGZi/d+reePPqkxj/3Jc
zOfQ1j9N8yzN627M26qfpbbqA5FxkcFr/eLpH+EJSGyuFwvQm3s30stqVpTA
bx/+op80hwYvBmpo41kxMXk6dU9Y2i90nhvb8bgopzpP/0lSB62Vc/UynaeV
SdwLZq7T7FjNiMCg8gT+qsv5AMYUtbkYDtRz1mqTheGsmGvbfrZt/9x6IK03
dn41UC+Ke10mzb6v9DJrPdi2Y2w64KYbez0fqMt0prPY6Ga/50W+rNaebds1
tR641ht7/2Ggnhk7W4BBm2b3PxRTeLD+dFsGuP3At69ZiPKinEP7O4Oz5vr5
6dHh4Z/k1y8//fTz4yjNJ61Xvvzi0y/k1y+OPjvAX8/7zwapqSb9UlfgAMp4
BlzE1bI060+NrhofxoU1/befHVC3w6vLw8HRMfFf6XJqYNrNqmphj/f3K/QW
JgG+F8sKphG5hwHIYL80tliWsdmvFvM+DDnv24WJ00kak2j2mRx7TuhBXcIr
6iZ8Rb00dyZTR+o7U1r8G7joqWtzl/Jfh58TDT9h6cerDxUBlJk/deoYVN8i
h/RSAk7wGPoFyaijg8NDHurR4OCjhpql41KXq8dGKzxdZbpCParLIllmBuyE
WjaF0FPP9TzNVmoHGNvpiUwODgJBHBwOPvvT7yGKV8WdmY8h8IA0kOD3ZnwC
FPNuedzf3w/uPyEBDK/3780Ye2+OdAcoKCQBvlnGA1MiVydX5wpGrnQcG0tR
82o5ztJYXZiVOi0NxoFUZ9YN92jn/cP7viizRH2fJgb5hlHmGEHS5TwY4Mmi
TIHawRHq+nR4crXBqidpUugsS3UeGxogKtPSx/070EN/Yfsoo4PDTw740zhL
ged+VfR1Pdyi7C/KAiJbka01G8yqedaQ1SmRgEAYSgyEdCUkficZ/IfOl2hl
pOOo3+8rPYZgqmMI3N/pMi2WVgVoAYJnPMuLrJimEONm+s6osTG5SlAxxQLs
CSEMu6PwOWEA8OvpP00yiM7e6vkiAwJpHmdLYA8GqM5giABuQjQzLG6h7e7Z
yZCh0YapYgE9XV3avUH0GjTUYNe7Rvh9BiGRmAEtJEsAHwo+1Mh6Cq3SSuUG
AAlKfGwIQixzlDm4avhIq9JkK7TNhS6rFYT/WWob5M3bGCL31Ki5XkFfiwX0
pCuVpJOJKVGVGaI4bEPDjZwtoGzi20EUEcWGn0BO70B9oAI1NbkBjKPugXox
AS54pmwarOsFkBkCisTO9K0ZsIbnaZJkBiLLE4VgjaSBjaKoASUtUQAWcFaq
8Urdz1LwjRqGyqoSOVplkEkS/biAIJxW1mSTqJrB8HVeAJWSpaZiaLy0BmVs
7nS2BOlSJ+RMAT1WM8Bp0BkMkFpzRwMFijViVfgM+ioSHL3vGCUXmJi6T6vZ
JquKQrN6924t9D08qDGMAtmGEcF/PAIx6p6yS5SCBWwYEPU2BXJ6j5lCnxxD
oSP6FXzBw0O3ASRmghJRs+IehRYX+R34xA9SOsuiNkMnPJwMKEO7XGCSAfNS
rTMQBVIFe7gvGn27eQ42BcLkKXp12R9ri46gfhHG9qqoCJjSpEnRnas7ieOk
bNMa+KSIwVAsTlEg3UXy+RLBi6NiYZhZpiBKFCK0jaw8QU94h6aFzYhpU85T
8mor1IJRkMsoTGas2rl8czOEQEv/V69e0+/XZ397c3599gx/v3lx8vKl/8W9
cfPi9ZuX8DyS3+qWp68vL89ePePG8KlqfXR58gP8D7naeX01PH/96uTlDis2
tZjSLTGzIbNkR5VitgXJGhocGCU4i7hMx/AHtAH4pxAtgpkJbhQ7w8mUZcU9
6h+azy0RXFpuhl0p19Ux+Ax1XRQ08ciy1e51MdyD8KmsoU9tManukQBwvQ8h
agb2Qn8jOIKsDzIxns7oYFXEfAt+wlFAsEHWNdCTDHdSLMHqyBBK89MyBQzg
EAKQhNxtRpzPTOSbTCFE2wH4MwXgCxyNNT0yK+AVvYN5C+Yl/RU4FejhZJmT
59MZkoioC7IVIl+wXVbopcRIFzKl0ZM2nApCld2TCxDLablaVAVk8Atwl2RJ
YwiN+TQgiTyRQFI0cEBzKPkIn9p0mjfjLfoqGBf25/3JWsdX1DNCqQvWop9M
WbYiySHhdryImDhGNr3diLGztc4vtu784mTIKrLFHNyUXYEFzEUEoH14BXAv
UAGxICF6leSE6iRu6odsMTBwmisaaF8Qi+j7zhOJUMTf8Bz5Q6O/OL9AF2oh
96cYo8Ftp3c4WKaxYNgJOhvQ++4pKtF1Kz721ACSIm9lIB9JJys1h8ClIfwn
YI9snKoZfJmk70KlHv94qm35UqRaszWJXyc8CQFCZIasGIcUZzqdy3TTZGgA
FADGU/jBUaIuIAb5ALlYlgtI77AthxJkvo8MafStMEYNjQl2gB8QDHQF0RwB
IMd7JJM6kVMfnQakzoATQvKk7mq1oHd2ziSI76BKFzIzr0+GNyrMUslPiZMe
bJwNIporlg2Y5BAVXkEyiWyLcB61d+/MymVOjYq8NYxhgIqgEQEzpof2OMSB
ie2n+V2R3YGcphohBL4CXk07E5kbbZfo2sbgXjvnlwznons4mgfEukRbLopJ
H/6BPi0mUgVKorjaqw0aCBE8pTAplATesGxqdAN5hcXoklBEht4A1SnAbGmS
VgE1BAxgUQx8yIRhHtLThqexpiSUjTDQSRqNE3iIzaJask3E0AVN66wAAarY
zzGkwakOmhg4ithIZ0PwrphmWJWlgHV00IjgLua34xT5C+X6DYQXMOrd05Nv
OJBBNGIrozmOEYrf0NQFewfSbQGZoaBBCGFugVamb2u+n088kzorjU5WbsKz
6xr2sCHZMDkjAHocoUDpFLxyzEpc07goSwPd5ZyjaAXMDwjEv75D6Zp7juzX
Zg5YqzHcK7RWMDr0ATix9pozq42Bw4cPD5HDoIj+cNJa9hUwHzW7nXmRmMyq
OnrKUkWES2MZmwXmKyQqepkkih+PIfXBlZM86cczE9/yYzYguxxbdmyWQuh9
BEE80yJrB2gR/NMnaRkyZRHnYDxFuDBhHhgbLWqojMYrrvPeMOR00x2zFIo6
95QGEKzmrN4lRjxUMAU3FrRx+FMet9LFF8hpj0Md4hamNQrkNSKHaN5WEJIl
/0pSCyxZhuZG3DF3AWmVspAV0EgiFghtG1h+t8aBc4N5aWrnYEkgROGuwIDA
SKw0iKExL49OrPNe7FRyc68mkBKR6fDeAqMqJwp2D/BQsgieF/ACtoyCwUjU
pGYvDDDCbL5fDBkFa4J6LlHpykHEZEgFMK0mOHOkAY+4poj6AlQqbijqINbD
1uCaJmk5t94cxG2JPIKchkZL7r5yWWDQG7pakXyO3s6J3a0XkHLB10by1CNx
FOV0qcHJVIYytQloYVbnx8aFnpZEBDJG0ffoQaqWK24YGDh7DGOTJbrf3EwL
iM5ATnQM8QGVLHIKEI/HOikGU5iTsUu5N2WmjbSkkcqg1UHUNyWtz1SYvc1h
+lY4LhVEMocmAkh2l+puLBYJfwP1/SzNNq8IrQUvN6fJAHwcB14NzzgXMkOo
qHZRUYaXtIin7lCMr1KQjSgbwyX6h4c9ScdCDl2sDFanerL2EkMowNnWVmow
KHC7CFVzTSBGpIaBya9POX/V1acfaQI5V1yBVUSUkqDVlDlFaVmTSgjK9DBe
g6zui2WWsDORdI1WK3Bp2TyOl0EA4hurRloKalhYWUc7ZiGJ03FWz2IAdO+k
Q6jNQFTA/nn1BhR8y/F7cQvhNtBUtLQOpted4ko0qhw6/G/4wT3NUZqov6hv
pU8AaFc6LXd1NoUHe/xW1M4VvDRYX4mA4qKsLS2mLLFOlWvnNl6xO+dlyd2S
oCMC+hpjeO/r0eoeZoivQEu9jaoNVzerMp1OjVMTMYmIRCButAFRe8t5BKYK
MjTdS274RoiBGL8GkBYdTTC1nPlC3rYLCtxr4E4CSDJ/fTrT6jnyGSrjAXB9
iHjWPOmVoDyP19hXYzfe3kVzLrBHvKS578MyBvnSuPjPe8swDmdTKGqcHcBa
G1Y6A4540SQnxK0ZCwre1EwVMZ8S44z1GCyTtQef77Kx9phzZ5qvHVTuct9N
wSPxepEcU7XeBvcqnrpl4OAGZPZb2cpxCVYwNyROg9YoiqpiQckTaIqW+9ou
PjQAiwbAkw18U7pI6+DUGJ3T40aXA1A1LUELMF1KyjmiLhOYlMV8k+R4FO0W
tLzFcol4pZb/rjx2ixtTssfgUuyq9kKEhBkIzHViaAWuKTXcO0DgKopDRhBg
w8ga/dzjDGE/p+90mlEmTwtvwHcM2dQubpr0/WBQr+j8yQAosK8QDEjsAQeE
GkfmeDagf9d+sUMmjKxo0KmLAGa53BvlBYEqnnFKqfQUDNBWAQU/30RyLiY7
RoWQIErSAQkKaKIhCj3xthQOKEnA7QZjB+8T5UW3KGHSdfV+Ib1TXszICaAn
2gHBad6Owqk/M9ZISHMLo5nxSMsDe7+j0nbiMKeWGWotibz73PVd7flJEq5g
RdE5cxkmUveGF8qzorjF7SnaWMAdGEjunFtYYM8loGHKPjH8e/cahUgCu3jy
pOHo8UWnGZfxXWJKJ0GymQWmrfXqG0nGPhscotk8npcOIG9HFyF4XEVkaEDS
06ZFsEaq5hJEW4+oa2KCnUMcNLJTQbYRtWEUpPcVOskk2P56z1zHWURBqzTA
cc5ajjrUvMs69suIDcU6H+gQp8d1IMB37ybpFITRd4LukzAeHihX5G0kLfAh
qjcXG8lDmMvCJF9WaZb+E1k5o/UPWjHu3DUbRN87oQZ5Xhu0eBjickdZCW+l
a37TpyM/Y++LNIVNHd/mxX1mkulaJpq2hofJZZqTNs9yAmEmOXMpkfX+/ddf
/OzpCpytMdFC0DytNs7bqhZD5HNUWfqhhRxQ+QBMSjejvwswBKxY62GvaEph
RrB5TRr0qO2tsyfBnn5Rzu07rC1h1ePFAdLaST1xyCrDwB61tEL8iWuzMjVr
fmq76vBdgnCU+vUXsSX87WP+3RBPEeHBX3/5MbTQ6AxmkPpZ/XHTasQuiHgv
cqR+7vjtbise+vLzdbQ931sOjKfajwh/cTQf1cG7jonxALRFhB9I7nGpqp8/
UhbvAqO/ZnT9oO5wg0LP7e8m57AXEMXH0n23NlMfwP7wnM/vaRkgnOcQwSzA
IhDJh1L+ylkr/P73k8UicwENzyc//Ycn92NTOBGOAgbTMcRgtgSMdfXdOVHW
mPjHGq9fd77GvuTdsXrSGRz5xNVfduRQkjpz8dR7uiaSGew8RI/hnm/8krY6
pSXtAP/Uy90qWO5+BAcdbYODmLbzrR4PCPDe0Cevn9s6zfHYLOIXxibWS1vH
OvHqPn4LfKhTZR5+6I8k7EVB0LJFG5Y1kRdmGRPKo4KUQui4nTZIFuu0vQ0G
epz1QIZo0rsgs+0x7qUjaZVsfsXMR9QF2FwMCizw/yPRFgNjzePAYIC/gfyj
0QJGqj46vnX++6MYG0jwXxA8URy//vLbAmjrX2fAY73/S4MeDOFfEfZQo//S
wPcbFPp/OPS191u3DYHdQY1C4RNyvo3lYEyyvPnLuUZ/dM1tJ2vaI6y3o9Ap
67JcrYUG2nMeSM4bbF41zg7YdA75hC5dzPkDR4NRcByA/MgfIrdit/EN4ZCW
uGirBq9Q0ME5SUrkuIB6549b42cGT+Hssjd/XfJc90LYa76MP7S7zN7uuP1M
hbkciXODW7RfHQ4GRz9+2T/8+s/rRIqFBgfBnu2rA3zx8PPuNzuZYwH9duY+
gKNHGXrAPx4kUAaGhn17Cf85+l/SjJjR76OZdTl8nGY2MPcxHK2zGPwuqmIZ
b1ZV2y2F9xFpiUYc0iYK6sYd2CEXNGwt0yz0Kit00jwqKJsdiBBxW9CfnfBr
ZoEjQFTN68T0Wki7PiqUWvAlSid6IY6KoLrcymr4C9VpmGyXarftgNYtknR+
re/5WgzgqnXN7z9VzxHJ45Ff9Ffq5ObV4HBkl+P/gk58w/N8Uqin+2vNRfvQ
qLsNG/PRp2TNXZ2vLbI5J9o+T7zeO43u7GS4PijhKtbjRv+bze/34mZ4dbmR
m2oxv6nm1XNaityeL6L7n3KHrnuYYAcj3FTfQPQh/KOeCj4m2g4X/xDa7lle
lSuvvg6LDBhxBik7liM6DPK24i7aTq3dR4MCHuDhZo0RNThb9wgBBecMwll4
Keu0NPuDY14LXdJ2F56n23BzwHmHXueuHx2sB4tJBg7ZSNaHL7Fbwxu+sj76
DZ49TItSvXsyll8fSL4dVzlIT4ldWx93vXckDkjJ7Vn26PB7mci51aajUeyt
Zul01s/ojtzaakC4O1DIgUG/L4Db7mijG05j0fGF7kgSmB+4Qt74cxhsy1H6
ITY9phP89j9hZq02JNa4SQ66K81T7gY/85uBI51N8YjpbG6Dxwt7O8JmTpQj
xMyNF6Al0UzwveDBBnnyC3fYc7dQ+YU6FfgAGTREwaLnZeEPJxIKC8dDifeH
EWhJBga9NYHuRBrG4tS8HQebTFr9vCWBTXa/5c/2413P658+oJW4textCXXQ
Q0I/bk9gPYFFApKnfyAbRK9Oed9vAHXyrbpyb3rnx9boNmfeTx/cZAuZCH/W
ZllHst1g7OuuV9bil3OxHUjWBS9/bpvT6CfO4bHHQnbwMlOZmLK1XepPi1GY
a2fKPbF5f7uEPPJs81lbubVVb/t2+qPAz3cc5vUhaItzzWut62PEjtW1QTUO
HeO9k8yEa9CNXeseUpFFYJpHEP/lEIxan2TBOUQZwnsj3VZD8CflP2AsdGaK
OEcq7YNn7nw5HgulIx3AP5DoSHzer47tIjpl1HLSsD1go+lMEC7YaDqkTTcB
u45ok0TYMq074ujGv/AHdCDh8ueV3V6BOxCAp+aRCh4naouTjuqm1jHRuB4j
N8ogz5KTxiKVYD+CrnUWczzpsqYntzXyGDR63CgmwlxeVDSHflqmi0V4XLG+
1NG+nNe4mtgDP4DUkIinyCfUp0s5xol7NWmwPz9N7wyd2Gctoq5BxueTUMJ8
4KvLRAs624JHJcSeG+MK5faYa6mlQ5w/4jd+g0p+2zx9r0rCThsbQw2N1KKs
rWMbcXbIEgk0xYm35MptHFEojqZYIZy4bKUOJ5PQj/AOGS3ENo/raD+L3psY
NC5VfEgQketN1aw0RhXLKi7mcvUBT8yn4BKPieV+6JLr0+ku/lWNNeFWku8C
ur9poPg+KS4d++vBXhj1iawNiRj+oJG4G49BQNy0ujDoGMOGSymbSPSwFoHr
HszDi4A2MnW+6jreRNUriuDYHutv4OgAO3lj+Hy30h8kclcW5GLhBBAOXq03
hDgcEeprZ5l7nx+upO9sP/TN4qPjjtIbTi0wzMxojDQdceCRYaPePddN9UvQ
RedbUomGeh+erpyRSfLJXLNFWP03QTkdCzj1yWXnBhqRQd1ruqUfHlEPl2D8
KQHhblfu3pBz2NzbXs/HiqDUywfF047ZOOD1lY8lwy5oTSvu2lNTF7WQA4Ug
FCMZPo7G2GboALLy58KZr+3GQAIcG1kxxqthqI7gDhtmOHS+uQaNaQilHiMe
ALwwlPEdvXD6Ehd0nc3pstPSCLq6BfjNwm/A7mZkqt28oRsSXQbmesDLVxxZ
aOuy54+tyDh0o9yU3CciV0IzsM7jkAhV6EGoBUG8u71YAt5w2uMXG0pYn9Hh
vZ7GBMJ7U2J6H2YM655lj0+/N3FRv/u6pADxqgm1O4N1S4nhkpIzSEQsVegY
/x1yJzcFkNr2qVN9ZVCixwdBzA4L77VOTjECdvdlu/w/pVNpZ42JOrMDKnjv
lHFas3IGe5iUiiiwYnxFoK3GQtJr8fD4qjQvkl9dNq5c8TngDVXtsATSXlD2
iEugGF8Nwl+Iuy7waNfVpQ3KtehxSoVaWON4U0KNC9AWXgOgO36us87rsACJ
u2pGRJH/9FQSKm54baYp3hqwavfq9Nru4Y0YSNZ8bMAbAvXlarwdjdzisXMu
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
K3AAAA==

-->

</rfc>

