<?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.5 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-reference-interaction-models-05" category="info" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.46.0 -->
  <front>
    <title abbrev="REIM">Reference Interaction Models for Remote Attestation Procedures</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-reference-interaction-models-05"/>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="M." surname="Eckel" fullname="Michael Eckel">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>michael.eckel@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="W." surname="Pan" fullname="Wei Pan">
      <organization>Huawei Technologies</organization>
      <address>
        <email>william.panwei@huawei.com</email>
      </address>
    </author>
    <author initials="E." surname="Voit" fullname="Eric Voit">
      <organization abbrev="Cisco">Cisco Systems</organization>
      <address>
        <email>evoit@cisco.com</email>
      </address>
    </author>
    <date year="2022" month="January" day="26"/>
    <area>Security</area>
    <workgroup>RATS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document describes interaction models for remote attestation procedures (RATS).
Three conveying mechanisms -- Challenge/Response, Uni-Directional, and Streaming Remote Attestation  -- are illustrated and defined.
Analogously, a general overview about the information elements typically used by corresponding conveyance protocols are highlighted.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>Remote ATtestation procedureS (RATS, <xref target="I-D.ietf-rats-architecture" format="default"/>) are workflows composed of roles and interactions, in which Verifiers create Attestation Results about the trustworthiness of an Attester's system component characteristics.
The Verifier's assessment in the form of Attestation Results is created based on Attestation Policies and Evidence -- trustable and tamper-evident Claims Sets about an Attester's system component characteristics -- generated by an Attester.
The roles <em>Attester</em> and <em>Verifier</em>, as well as the Conceptual Messages <em>Evidence</em> and <em>Attestation Results</em> are concepts defined by the RATS Architecture <xref target="I-D.ietf-rats-architecture" format="default"/>.
This document defines interaction models that can be used in specific RATS-related solution documents.
The primary focus of this document is the conveyance of attestation Evidence. The reference models defined can also be applied to the conveyance of other Conceptual Messages in RATS.
Specific goals of this document are to:</t>
      <t>1.) prevent inconsistencies in descriptions of interaction models in other documents (due to text cloning and evolution over time), and to
2.) enable to highlight an exact delta/divergence between the core set of characteristics captured here in this document and variants of these interaction models used in other specifications or solutions.</t>
      <t>In summary, this document enables the specification and design of trustworthy and privacy preserving conveyance methods for attestation Evidence from an Attester to a Verifier.
While the conveyance of other Conceptual Messages is out-of-scope the methods described can also be applied to the conveyance of, for example, Endorsements or Attestation Results.</t>
    </section>
    <section anchor="terminology" numbered="true" toc="default">
      <name>Terminology</name>
      <t>This document uses the following set of terms, roles, and concepts as defined in <xref target="I-D.ietf-rats-architecture" format="default"/>:
Attester, Verifier, Relying Party, Conceptual Message, Evidence, Endorsement, Attestation Result, Appraisal Policy, Attesting Environment, Target Environment</t>
      <t>A PKIX Certificate is an X.509v3 format certificate as specified by <xref target="RFC5280" format="default"/>.</t>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP&nbsp;14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <section anchor="disambiguation" numbered="true" toc="default">
        <name>Disambiguation</name>
        <t>The term "Remote Attestation" is a common expression and often associated or connoted with certain properties.
The term "Remote" in this context does not necessarily refer to a remote entity in the scope of network topologies or the Internet.
It rather refers to decoupled systems or entities that exchange the payload of the Conceptual Message type called Evidence <xref target="I-D.ietf-rats-architecture" format="default"/>.
This conveyance can also be "Local", if the Verifier role is part of the same entity as the Attester role, e.g., separate system components of the same Composite Device (a single RATS entity).
Even if an entity takes on two or more different roles, the functions they provide typically reside in isolated environments that are components of the same entity. Examples of such isolated environments include: a Trusted Execution Environment (TEE), Baseboard Management Controllers (BMCs), as well as other physical or logical protected/isolated/shielded Computing Environments (e.g. embedded Secure Elements (eSE) or Trusted Platform Modules (TPM)). Readers of this document should be familiar with the concept of Layered Attestation as described in Section 3.1 Two Types of Environments of an Attester in <xref target="I-D.ietf-rats-architecture" format="default"/> and the definition of Attestation as described in <xref target="I-D.ietf-rats-tpm-based-network-device-attest" format="default"/>.</t>
      </section>
    </section>
    <section anchor="scope-and-intent" numbered="true" toc="default">
      <name>Scope and Intent</name>
      <t>This document focuses on generic interaction models between Attesters and Verifiers in order to convey Evidence.
Complementary procedures, functions, or services that are required for a complete semantic binding of the concepts defined in <xref target="I-D.ietf-rats-architecture" format="default"/> are out-of-scope of this document.
Examples include: identity establishment, key distribution and enrollment, time synchronization, as well as certificate revocation.</t>
      <t>Furthermore, any processes and duties that go beyond carrying out remote attestation procedures are out-of-scope.</t>
      <t>For instance, using the results of a remote attestation procedure that are created by the Verifier, e.g., how to triggering remediation actions or recovery processes, as well as such remediation actions and recovery processes themselves, are also out-of-scope.</t>
      <t>The interaction models illustrated in this document are intended to provide a stable basis and reference for other solutions documents inside or outside the IETF.
Solution documents of any kind can reference the interaction models in order to avoid text clones and to avoid the danger of subtle discrepancies.
Analogously, deviations from the generic model descriptions in this document can be illustrated in solutions documents to highlight distinct contributions.</t>
    </section>
    <section anchor="essential-requirements" numbered="true" toc="default">
      <name>Essential Requirements</name>
      <t>In order to ensure appropriate conveyance of Evidence, there exist essential requirements which MUST be fulfilled:</t>
      <dl>
        <dt>
Integrity:  </dt>
        <dd>
          <t>Information provided by an Attester MUST be integral. This may be achieved by means of a digital signature over Attestation Evidence. The signature may be symmetric, such as an HMAC, or asymmetric, such as ECDSA.</t>
        </dd>
        <dt>
Authentication:  </dt>
        <dd>
          <t>The information provided by the Attester MUST be authentic. For that purpose, the Attester should authenticate itself to the Verifier. This may be an implicit authentication by means of a digital signature over the Attestation Evidence, which does not require additional protocol steps, or may be achieved by using a confidential channel by means of encryption.</t>
        </dd>
      </dl>
      <section anchor="endorsement-of-attesting-environments" numbered="true" toc="default">
        <name>Endorsement of Attesting Environments</name>
        <t>Via its Attesting Environments, an Attester only generates Evidence about its Target Environments.
After being appraised to be trustworthy, a Target Environment may become a new Attesting Environment in charge of generating Evidence for further Target Environments.
<xref target="I-D.ietf-rats-architecture" format="default"/> explains this as Layered Attestation.
Layered Attestation has to start with an initial Attesting Environment. In essence, there cannot be turtles all the way down <xref target="turtles" format="default"/>.
At this rock bottom of Layered Attestation, the Attesting Environments are always called Roots of Trust (RoT).
An Attester cannot generate Evidence about its own RoTs by design.
As a consequence, a Verifier requires trustable statements about this subset of Attesting Environments from a different source than the Attester itself.
The corresponding trustable statements are called Endorsements and originate from external, trustable entities that take on the role of an Endorser (e.g., supply chain entities).</t>
      </section>
    </section>
    <section anchor="normative-prerequisites" numbered="true" toc="default">
      <name>Normative Prerequisites</name>
      <t>In order to ensure an appropriate conveyance of Evidence via interaction models in general, the following set of prerequisites MUST be in place to support the implementation of interaction models:</t>
      <dl>
        <dt>
Authentication Secret:  </dt>
        <dd>
          <t>An Authentication Secret MUST be available exclusively to an Attesting Environment of an Attester.</t>
        </dd>
        <dt/>
        <dd>
          <t>The Attester MUST protect Claims with that Authentication Secret, thereby proving the authenticity of the Claims included in Evidence.
The Authentication Secret MUST be established before RATS can take place.</t>
        </dd>
        <dt>
Attester Identity:  </dt>
        <dd>
          <t>A statement about a distinguishable Attester made by an Endorser.</t>
        </dd>
        <dt/>
        <dd>
          <t>The provenance of Evidence with respect to a distinguishable Attesting Environment MUST be correct and unambiguous.</t>
        </dd>
        <dt/>
        <dd>
          <t>An Attester Identity MAY be an Authentication Secret which is available exclusively to one of the Attesting Environments of an Attester. It MAY be a unique identity, MAY be included in a zero-knowledge proof (ZKP), MAY be part of a group signature, or it MAY be a randomized DAA credential <xref target="DAA" format="default"/>.</t>
        </dd>
        <dt>
Attestation Evidence Authenticity:  </dt>
        <dd>
          <t>Attestation Evidence MUST be authentic.</t>
        </dd>
        <dt/>
        <dd>
          <t>In order to provide proofs of authenticity, Attestation Evidence SHOULD be cryptographically associated with an identity document (e.g., a PKIX certificate or trusted key material, or a randomized DAA credential <xref target="DAA" format="default"/>), or SHOULD include a correct, unambiguous and stable reference to an accessible identity document.</t>
        </dd>
        <dt>
Evidence Freshness:  </dt>
        <dd>
          <t>Evidence MUST include an indicator about its freshness that can be understood by a Verifier. Analogously, interaction models MUST support the conveyance of proofs of freshness in a way that is useful to Verifiers and their appraisal procedures.</t>
        </dd>
        <dt>
Evidence Protection:  </dt>
        <dd>
          <t>Evidence MUST be a set of well-formatted and well-protected Claims that an Attester can create and convey to a Verifier in a tamper-evident manner.</t>
        </dd>
      </dl>
    </section>
    <section anchor="generic-information-elements" numbered="true" toc="default">
      <name>Generic Information Elements</name>
      <t>This section defines the information elements that are vital to all kinds interaction models.
Varying from solution to solution, generic information elements can be either included in the scope of protocol messages (instantiating Conceptual Messages) or can be included in additional protocol parameters or payload.
Ultimately, the following information elements are required by any kind of scalable remote attestation procedure using one or more of the interaction models provided.</t>
      <dl>
        <dt>
Authentication Secret IDs ('authSecIDs'):  </dt>
        <dd>
          <t><em>mandatory</em></t>
        </dd>
        <dt/>
        <dd>
          <t>A statement representing an identifier list that MUST be associated with corresponding Authentication Secrets used to protect Claims included in Evidence.</t>
        </dd>
        <dt/>
        <dd>
          <t>Each distinguishable Attesting Environment has access to a protected capability that provides an Authentication Secret associated with that Attesting Environment. Consequently, an Authentication Secret ID can also identify an Attesting Environment.</t>
        </dd>
        <dt>
Handle ('handle'):  </dt>
        <dd>
          <t><em>mandatory</em></t>
        </dd>
        <dt/>
        <dd>
          <t>A statement that is intended to uniquely distinguish received Evidence and/or determine the freshness of Evidence.</t>
        </dd>
        <dt/>
        <dd>
          <t>A Verifier can also use a Handle as an indicator for authenticity or attestation provenance, as only Attesters and Verifiers that are intended to exchange Evidence should have knowledge of the corresponding Handles. Examples include Nonces or signed timestamps.</t>
        </dd>
        <dt>
Claims ('claims'):  </dt>
        <dd>
          <t><em>mandatory</em></t>
        </dd>
        <dt/>
        <dd>
          <t>Claims are assertions that represent characteristics of an Attester's Target Environment.</t>
        </dd>
        <dt/>
        <dd>
          <t>Claims are part of a Conceptual Message and are, for example, used to appraise the integrity of Attesters via Verifiers. The other information elements in this section can be expressed as Claims in any type of Conceptional Messages.</t>
        </dd>
        <dt>
Event Logs ('eventLogs'):  </dt>
        <dd>
          <t><em>optional</em></t>
        </dd>
        <dt/>
        <dd>
          <t>Event Logs accompany Claims by providing event trails of security-critical events in a system. The primary purpose of Event Logs is to support Claim reproducibility by providing information on how Claims originated.</t>
        </dd>
        <dt>
Reference Values ('refValues')  </dt>
        <dd>
          <t><em>mandatory</em></t>
        </dd>
        <dt/>
        <dd>
          <t>Reference Values as defined in <xref target="I-D.ietf-rats-architecture" format="default"/>. This specific type of Claims is used to appraise Claims incorporated in Evidence. For example, Reference Values MAY be Reference Integrity Measurements (RIM) or assertions that are implicitly trusted because they are signed by a trusted authority (see Endorsements in <xref target="I-D.ietf-rats-architecture" format="default"/>). Reference Values typically represent (trusted) Claim sets about an Attester's intended platform operational state.</t>
        </dd>
        <dt>
Claim Selection ('claimSelection'):  </dt>
        <dd>
          <t><em>optional</em></t>
        </dd>
        <dt/>
        <dd>
          <t>A (sub-)set of Claims which can be created by an Attester.</t>
        </dd>
        <dt/>
        <dd>
          <t>Claim Selections act as filters to specify the exact set of Claims to be included in Evidence. In a remote attestation process, a Verifier sends a Claim Selection, among other elements, to an Attester. An Attester MAY decide whether or not to provide all requested Claims from a Claim Selection to the Verifier.</t>
        </dd>
        <dt>
Collected Claims ('collectedClaims'):  </dt>
        <dd>
          <t><em>mandatory</em></t>
        </dd>
        <dt/>
        <dd>
          <t>Collected Claims represent a (sub-)set of Claims created by an Attester.</t>
        </dd>
        <dt/>
        <dd>
          <t>Collected Claims are gathered based on the Claims selected in the Claim Selection. If a Verifier does not provide a Claim Selection, then all available Claims on the Attester are part of the Collected Claims.</t>
        </dd>
        <dt>
Evidence ('evidence'):  </dt>
        <dd>
          <t><em>mandatory</em></t>
        </dd>
        <dt/>
        <dd>
          <t>A set of Claims that consists of a list of Authentication Secret IDs that each identifies an Authentication Secret in a single Attesting Environment, the Attester Identity, Claims, and a Handle. Attestation Evidence MUST cryptographically bind all of these information elements. Evidence MUST be protected via an Authentication Secret. The Authentication Secret MUST be trusted by the Verifier as authoritative.</t>
        </dd>
        <dt>
Attestation Result ('attestationResult'):  </dt>
        <dd>
          <t><em>mandatory</em></t>
        </dd>
        <dt/>
        <dd>
          <t>An Attestation Result is produced by the Verifier as the output of the appraisal of Evidence. Attestation Results include condensed assertions about integrity or other characteristics of the corresponding Attester that are processible by Relying Parties.</t>
        </dd>
      </dl>
    </section>
    <section anchor="interaction-models" numbered="true" toc="default">
      <name>Interaction Models</name>
      <t>The following subsections introduce and illustrate the interaction models:</t>
      <ol spacing="normal" type="1">
        <li>Challenge/Response Remote Attestation</li>
        <li>Uni-Directional Remote Attestation</li>
        <li>Streaming Remote Attestation</li>
      </ol>
      <t>Each section starts with a sequence diagram illustrating the interactions between Attester and Verifier.
While the presented interaction models focus on the conveyance of Evidence, the intention of this document is in support of future work that applies the presented models to the conveyance of other Conceptual Messages, namely Attestation Results, Endorsements, Reference Values, or Appraisal Policies.</t>
      <t>All interaction models have a strong focus on the use of a handle to incorporate a type of proof of freshness and to prevent replay attacks.
The way these handles are processed is the most prominent difference between the three interaction models.</t>
      <section anchor="challengeresponse-remote-attestation" numbered="true" toc="default">
        <name>Challenge/Response Remote Attestation</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
.----------.                                                .----------.
| Attester |                                                | Verifier |
'----------'                                                '----------'
     |                                                            |
  generateClaims(attestingEnvironment)                            |
     | => claims, eventLogs                                       |
     |                                                            |
     | <-- requestAttestation(handle, authSecIDs, claimSelection) |
     |                                                            |
  collectClaims(claims, claimSelection)                           |
     | => collectedClaims                                         |
     |                                                            |
  generateEvidence(handle, authSecIDs, collectedClaims)           |
     | => evidence                                                |
     |                                                            |
     | evidence, eventLogs -------------------------------------> |
     |                                                            |
     |                appraiseEvidence(evidence, eventLogs, refValues)
     |                                       attestationResult <= |
     |                                                            |
]]></artwork>
        <t>The Attester boots up and thereby produces claims about its boot state and its operational state. Event Logs accompany the produced claims by providing an event trail of security-critical events in a system. Claims are produced by all attesting Environments of an Attester system.</t>
        <t>The Challenge/Response remote attestation procedure is initiated by the Verifier by sending a remote attestation request to the Attester. A request includes a Handle, a list of Authentication Secret IDs, and a Claim Selection.</t>
        <t>In the Challenge/Response model, the handle is composed of qualifying data in the form of a practically infeasible to guess nonce, such as a cryptographically strong random number.
The Verifier-generated nonce is intended to guarantee Evidence freshness and to prevent replay attacks.</t>
        <t>The list of Authentication Secret IDs selects the attestation keys with which the Attester is requested to sign the Attestation Evidence.
Each selected key is uniquely associated with an Attesting Environment of the Attester.
As a result, a single Authentication Secret ID identifies a single Attesting Environment.
Correspondingly, a particular set of Evidence originating from a particular Attesting Environment in a composite device can be requested via multiple Authentication Secret IDs.
Methods to acquire Authentication Secret IDs or mappings between Attesting Environments to Authentication Secret IDs are out-of-scope of this document.</t>
        <t>The Attester collects Claims based on the Claim Selection. With the Claim Selection the Verifier defines the set of Claims it requires.
Correspondingly, collected Claims can be a subset of the produced Claims. This could be all available Claims, depending on the Claim Selection.
If the Claim Selection is omitted, then by default all Claims that are known and available on the Attester MUST be used to create corresponding Evidence.
For example, when performing a boot integrity evaluation, a Verifier may only be requesting a particular subset of claims about the Attester, such as Evidence about BIOS/UEFI and firmware that the Attester booted up, and not include information about all currently running software.</t>
        <t>With the Handle, the Authentication Secret IDs, and the collected Claims, the Attester produces signed Evidence. That is, it digitally signs the Handle and the collected Claims with a cryptographic secret identified by the Authentication Secret ID. This is done once per Attesting Environment which is identified by the particular Authentication Secret ID. The Attester communicates the signed Evidence as well as all accompanying Event Logs back to the Verifier.</t>
        <t>While it is crucial that Claims, the Handle, and the Attester Identity information (i.e., the Authentication Secret) MUST be cryptographically bound to the signature of Evidence, they MAY be presented obfuscated, encrypted, or cryptographically blinded. For further reference see section <xref target="security-and-privacy-considerations" format="default"/>.</t>
        <t>As soon as the Verifier receives the Evidence and the Event Logs, it appraises the Evidence. For this purpose, it validates the signature, the Attester Identity, and the Handle, and then appraises the Claims.
Appraisal procedures are application-specific and can be conducted via comparison of the Claims with corresponding Reference Values, such as Reference Integrity Measurements.
The final output of the Verifier are Attestation Results. Attestation Results constitute new Claim Sets about the properties and characteristics of an Attester, which enables Relying Parties, for example, to assess an Attester's trustworthiness.</t>
        <section anchor="models-and-example-sequences-of-challengeresponse-remote-attestation" numbered="true" toc="default">
          <name>Models and example sequences of Challenge/Response Remote Attestation</name>
          <t>According to the RATS Architecture, two reference models for Challenge/Response Attestation have been proposed. This section highlights the information flows bewteen the Attester, Verifier and Relying Party undergoing Remote Attestation Procedure, using these models.</t>
          <ol spacing="normal" type="1">
            <li>Passport Model</li>
          </ol>
          <t>The passport model is so named because of its resemblance to how nations issue passports to their citizens. In this model, the attestation sequence is a
two step procedure. In the first step, an Attester conveys Evidence to a Verifier which compares the Evidence against its appraisal policy.  The Verifier
then gives back an Attestation Result to the Attester, which simply caches it. In the second step, the Attester presents the Attestation Result (and possibly additional Claims/evidence) to a Relying Party, which then compares this information against its own appraisal policy to establish the trustworthiness of the Attester.</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
.----------.                                                .----------.                            .----------.
| Attester |                                                | Verifier |                            | R. P.    |
'----------'                                                '----------'                            '----------'
     |                                                            |                                      |
  generateClaims(attestingEnvironment)                            |                                      |
     | => claims, eventLogs                                       |                                      |
     |                                                            |                                      |
     | <-- requestAttestation(handle, authSecIDs, claimSelection) |                                      |
     |                                                            |                                      |
  collectClaims(claims, claimSelection)                           |                                      |
     | => collectedClaims                                         |                                      |
     |                                                            |                                      |
  generateEvidence(handle, authSecIDs, collectedClaims)           |                                      |
     | => evidence                                                |                                      |
     |                                                            |                                      |
     | evidence, eventLogs -------------------------------------> |                                      |
     |                                                            |                                      |
     |                appraiseEvidence(evidence, eventLogs, refValues)                                   |
     |                                                            |                                      |
     |   attestationResults <-----------------------------------  |                                      |
     |                                                            |                                      |
     | attestationResults(evidence, results) ----------------------------------------------------------> |      |                                                            |                                      |
     |                                                            |                                      |      |                                                            |                                      | appraiseResult()
     |                                                            |                                      |
]]></artwork>
          <ol spacing="normal" type="1">
            <li>BackGround Check Model</li>
          </ol>
          <t>The background-check model is so named because of the resemblance of how employers and volunteer organizations perform background checks. In this model, the attestation sequence is initiated by a Relying Party. The Attester conveys Evidence to the Relying Party, which does not process its payload, but realys the message and optionally check its signature against a policed trust anchor store. Upon receiving the evidence the Relying Party initiates a session with the Verifier. Once session is established, it forwards the received Evidence to the Verfier. The Verifier, appraises the received Evidence according to its appraisal policy for Evidence and returns a corresponding Attestation Result to the Relying Party. The Relying Party then checks the Attestation Result against its own appraisal policy to conclude attestation.</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
.----------.                                                 .----------.                            .----------.
| Attester |                                                 | R. P.    |                            | Verifier |
'----------'                                                 '----------'                            '----------'
     |                                                            |                                      |
  generateClaims(attestingEnvironment)                            |                                      |
     | => claims, eventLogs                                       |                                      |
     |                                                            |                                      |
     | <-- requestAttestation(handle, authSecIDs, claimSelection) |                                      |
     |                                                            |                                      |
  collectClaims(claims, claimSelection)                           |                                      |
     | => collectedClaims                                         |                                      |
     |                                                            |                                      |
  generateEvidence(handle, authSecIDs, collectedClaims)           |                                      |
     | => evidence                                                |                                      |
     |                                                            |                                      |
     | evidence, eventLogs -------------------------------------> |                                      |
     |                                                            |                                      |
     |                                                            | handle, evidence, eventLogs -------> |
     |                                                            |                                      |appraiseEvidenc()
     |                                                            |                                      |
     |                                                            |  attestationResults <--------------- |
     |                                                            |   (evidence, results)                |
     |                                                            |                                      |
     |                       appraiseResults(evidence, results)   |                                      |
     |                                                            |                                      |
]]></artwork>
        </section>
      </section>
      <section anchor="uni-directional-remote-attestation" numbered="true" toc="default">
        <name>Uni-Directional Remote Attestation</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
.----------.                       .--------------------.   .----------.
| Attester |                       | Handle Distributor |   | Verifier |
'----------'                       '--------------------'   '----------'
     |                                       |                    |
     |                                    generateHandle()        |
     |                                       | => handle          |
     |                                       |                    |
     | <----------------------------- handle | handle ----------> |
     |                                       |                    |
  generateClaims(attestingEnvironment)       x                    |
     | => claims, eventLogs                                       |
     |                                                            |
  collectClaims(claims, claimSelection)                           |
     | => collectedClaims                                         |
     |                                                            |
  generateEvidence(handle, authSecIDs, collectedClaims)           |
     | => evidence                                                |
     |                                                            |
     | evidence, eventLogs -------------------------------------> |
     |                                                            |
     |                appraiseEvidence(evidence, eventLogs, refValues)
     |                                       attestationResult <= |
     ~                                                            ~
     |                                                            |
**********[loop]********************************************************
*    |                                                            |    *
* generateClaims(attestingEnvironment)                            |    *
*    | => claimsDelta, eventLogsDelta                             |    *
*    |                                                            |    *
* collectClaims(claimsDelta, claimSelection)                      |    *
*    | => collectedClaimsDelta                                    |    *
*    |                                                            |    *
* generateEvidence(handle, authSecIDs, collectedClaimsDelta)      |    *
*    | => evidence                                                |    *
*    |                                                            |    *
*    | evidence, eventLogsDelta --------------------------------> |    *
*    |                                                            |    *
*    |           appraiseEvidence(evidence, eventLogsDelta, refValues) *
*    |                                       attestationResult <= |    *
*    |                                                            |    *
************************************************************************
     |                                                            |
]]></artwork>
        <t>Uni-Directional Remote Attestation procedures can be initiated both by the Attester and by the Verifier.
Initiation by the Attester can result in unsolicited pushes of Evidence to the Verifier.
Initiation by the Verifier always results in solicited pushes to the Verifier.</t>
        <t>The Uni-Directional model uses the same information elements as the Challenge/Response model.
In the sequence diagram above, the Attester initiates the conveyance of Evidence (comparable with a RESTful POST operation or the emission of a beacon).
While a request of Evidence from the Verifier would result in a sequence diagram more similar to the Challenge/Response model (comparable with a RESTful GET operation). The specific manner how Handles are created and used always remains as the distinguishing quality of this model.</t>
        <t>In the Uni-Directional model, handles are composed of cryptographically signed trusted timestamps as shown in <xref target="I-D.birkholz-rats-tuda" format="default"/>, potentially including other qualifying data.
The Handles are created by an external 3rd entity -- the Handle Distributor -- which includes a trustworthy source of time, and takes on the role of a Time Stamping Authority (TSA, as initially defined in <xref target="RFC3161" format="default"/>).
Timestamps created from local clocks (absolute clocks using a global timescale, as well as relative clocks, such as tick-counters) of Attesters and Verifiers MUST be cryptographically bound to fresh Handles received from the Handle Distributor.
This binding provides a proof of synchronization that MUST be included in all produced Evidence.
Correspondingly, conveyed Evidence in this model provides a proof that it was fresh at a certain point in time.</t>
        <t>While periodically pushing Evidence to the Verifier, the Attester only needs to generate and convey evidence generated from Claim values that have changed and new Event Logs entries since the previous conveyance. These updates reflecting the differences are called "delta" in the sequence diagram above.</t>
        <t>Effectively, the Uni-Directional model allows for a series of Evidence to be pushed to multiple Verifiers simultaneously.
Methods to detect excessive time drift that would mandate a fresh Handle to be received by the Handle Distributor as well as timing of Handle distribution are out-of-scope of this document.</t>
      </section>
      <section anchor="streaming-remote-attestation" numbered="true" toc="default">
        <name>Streaming Remote Attestation</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
.----------.                                                .----------.
| Attester |                                                | Verifier |
'----------'                                                '----------'
     |                                                            |
  generateClaims(attestingEnvironment)                            |
     | => claims, eventLogs                                       |
     |                                                            |
     | <----------- subscribe(handle, authSecIDs, claimSelection) |
     | subscriptionResult --------------------------------------> |
     |                                                            |
  collectClaims(claims, claimSelection)                           |
     | => collectedClaims                                         |
     |                                                            |
  generateEvidence(handle, authSecIDs, collectedClaims)           |
     | => evidence                                                |
     |                                                            |
     | evidence, eventLogs -------------------------------------> |
     |                                                            |
     |                appraiseEvidence(evidence, eventLogs, refValues)
     |                                       attestationResult <= |
     ~                                                            ~
     |                                                            |
**********[loop]********************************************************
*    |                                                            |    *
* generateClaims(attestingEnvironment)                            |    *
*    | => claimsDelta, eventLogsDelta                             |    *
*    |                                                            |    *
* collectClaims(claimsDelta, claimSelection)                      |    *
*    | => collectedClaimsDelta                                    |    *
*    |                                                            |    *
* generateEvidence(handle, authSecIDs, collectedClaimsDelta)      |    *
*    | => evidence                                                |    *
*    |                                                            |    *
*    | evidence, eventLogsDelta --------------------------------> |    *
*    |                                                            |    *
*    |           appraiseEvidence(evidence, eventLogsDelta, refValues) *
*    |                                       attestationResult <= |    *
*    |                                                            |    *
************************************************************************
     |                                                            |
]]></artwork>
        <t>Streaming Remote Attestation procedures require the setup of subscription state.
Setting up subscription state between a Verifier and an Attester is conducted via a subscribe operation.
The subscribe operation is used to convey required Handles for producing Evidence.
Effectively, this allows for a series of Evidence to be pushed to a Verifier, similar to the Uni-Directional model.
While a Handle Distributor is not required in this model, it is also limited to bi-lateral subscription relationships in which each Verifier has to create and provide its individual Handle.
Handles provided by a specific subscribing Verifier MUST be used in Evidence generation for that specific Verifier.
The Streaming model uses the same information elements as the Challenge/Response and the Uni-Directional model.
Methods to detect excessive time drift that would mandate a refreshed Handle to be conveyed via another subscribe operation are out-of-scope of this document.</t>
      </section>
    </section>
    <section anchor="additional-application-specific-requirements" numbered="true" toc="default">
      <name>Additional Application-Specific Requirements</name>
      <t>Depending on the use cases covered, there can be additional requirements. An exemplary subset is illustrated in this section.</t>
      <section anchor="confidentiality" numbered="true" toc="default">
        <name>Confidentiality</name>
        <t>Confidentiality of exchanged attestation information may be desirable. This requirement usually is present when communication takes place over insecure channels, such as the public Internet. In such cases, TLS may be used as a suitable communication protocol which provides confidentiality protection. In private networks, such as carrier management networks, it must be evaluated whether or not the transport medium is considered confidential.</t>
      </section>
      <section anchor="mutual-authentication" numbered="true" toc="default">
        <name>Mutual Authentication</name>
        <t>In particular use cases, mutual authentication may be desirable in such a way that a Verifier also needs to prove its identity to the Attester, instead of only the Attester proving its identity to the Verifier.</t>
      </section>
      <section anchor="hardware-enforcementsupport" numbered="true" toc="default">
        <name>Hardware-Enforcement/Support</name>
        <t>Depending on given usage scenarios, hardware support for secure storage of cryptographic keys, crypto accelerators, as well as protected or isolated execution environments can be mandatory requirements. Well-known technologies in support of these requirements are roots of trusts, such as Hardware Security Modules (HSM), Physically Unclonable Functions (PUFs), Shielded Secrets, or Trusted Executions Environments (TEEs).</t>
      </section>
    </section>
    <section anchor="implementation-status" numbered="true" toc="default">
      <name>Implementation Status</name>
      <t>Note to RFC Editor: Please remove this section as well as references to <xref target="BCP205" format="default"/> before AUTH48.</t>
      <t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in <xref target="BCP205" format="default"/>.
The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs.
Please note that the listing of any individual implementation here does not imply endorsement by the IETF.
Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a catalog of available implementations or their features.
Readers are advised to note that other implementations may exist.</t>
      <t>According to <xref target="BCP205" format="default"/>,
"this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.
It is up to the individual working groups to use this information as they see fit".</t>
      <section anchor="implementer" numbered="true" toc="default">
        <name>Implementer</name>
        <t>The open-source implementation was initiated and is maintained by the Fraunhofer Institute for Secure Information Technology - SIT.</t>
      </section>
      <section anchor="implementation-name" numbered="true" toc="default">
        <name>Implementation Name</name>
        <t>The open-source implementation is named "CHAllenge-Response based Remote Attestation" or in short: CHARRA.</t>
      </section>
      <section anchor="implementation-url" numbered="true" toc="default">
        <name>Implementation URL</name>
        <t>The open-source implementation project resource can be located via: https://github.com/Fraunhofer-SIT/charra</t>
      </section>
      <section anchor="maturity" numbered="true" toc="default">
        <name>Maturity</name>
        <t>The code's level of maturity is considered to be "prototype".</t>
      </section>
      <section anchor="coverage-and-version-compatibility" numbered="true" toc="default">
        <name>Coverage and Version Compatibility</name>
        <t>The current version ('1bcb469') implements a challenge/response interaction model and is aligned with the exemplary specification of the CoAP FETCH bodies defined in Section <xref target="coap-fetch-bodies" format="default"/> of this document.</t>
      </section>
      <section anchor="license" numbered="true" toc="default">
        <name>License</name>
        <t>The CHARRA project and all corresponding code and data maintained on GitHub are provided under the BSD 3-Clause "New" or "Revised" license.</t>
      </section>
      <section anchor="implementation-dependencies" numbered="true" toc="default">
        <name>Implementation Dependencies</name>
        <t>The implementation requires the use of the official Trusted Computing Group (TCG) open-source Trusted Software Stack (TSS) for the Trusted Platform Module (TPM) 2.0. The corresponding code and data is also maintained on GitHub and the project resources can be located via: https://github.com/tpm2-software/tpm2-tss/</t>
        <t>The implementation uses the Constrained Application Protocol <xref target="RFC7252" format="default"/> (http://coap.technology/) and the Concise Binary Object Representation <xref target="RFC7049" format="default"/> (https://cbor.io/).</t>
      </section>
      <section anchor="contact" numbered="true" toc="default">
        <name>Contact</name>
        <t>Michael Eckel (michael.eckel@sit.fraunhofer.de)</t>
      </section>
    </section>
    <section anchor="security-and-privacy-considerations" numbered="true" toc="default">
      <name>Security and Privacy Considerations</name>
      <t>In a remote attestation procedure the Verifier or the Attester MAY want to cryptographically blind several attributes. For instance, information can be part of the signature after applying a one-way function (e. g. a hash function).</t>
      <t>There is also a possibility to scramble the Nonce or Attester Identity with other information that is known to both the Verifier and Attester. A prominent example is the IP address of the Attester that usually is known by the Attester itself as well as the Verifier. This extra information can be used to scramble the Nonce in order to counter certain types of relay attacks.</t>
    </section>
    <section anchor="acknowledgments" numbered="true" toc="default">
      <name>Acknowledgments</name>
      <t>Olaf Bergmann, Michael Richardson, and Ned Smith</t>
    </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>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <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>
        </reference>
        <reference anchor="RFC3161" target="https://www.rfc-editor.org/info/rfc3161">
          <front>
            <title>Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)</title>
            <seriesInfo name="DOI" value="10.17487/RFC3161"/>
            <seriesInfo name="RFC" value="3161"/>
            <author fullname="C. Adams" initials="C." surname="Adams">
              <organization/>
            </author>
            <author fullname="P. Cain" initials="P." surname="Cain">
              <organization/>
            </author>
            <author fullname="D. Pinkas" initials="D." surname="Pinkas">
              <organization/>
            </author>
            <author fullname="R. Zuccherato" initials="R." surname="Zuccherato">
              <organization/>
            </author>
            <date month="August" year="2001"/>
            <abstract>
              <t>This document describes the format of a request sent to a Time Stamping Authority (TSA) and of the response that is returned.  It also establishes several security-relevant requirements for TSA operation, with regards to processing requests to generate responses.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC5280" target="https://www.rfc-editor.org/info/rfc5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <seriesInfo name="DOI" value="10.17487/RFC5280"/>
            <seriesInfo name="RFC" value="5280"/>
            <author fullname="D. Cooper" initials="D." surname="Cooper">
              <organization/>
            </author>
            <author fullname="S. Santesson" initials="S." surname="Santesson">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="W. Polk" initials="W." surname="Polk">
              <organization/>
            </author>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet.  An overview of this approach and model is provided as an introduction.  The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms.  Standard certificate extensions are described and two Internet-specific extensions are defined.  A set of required certificate extensions is specified.  The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions.  An algorithm for X.509 certification path validation is described.  An ASN.1 module and examples are provided in the appendices.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC7049" target="https://www.rfc-editor.org/info/rfc7049">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7049"/>
            <seriesInfo name="RFC" value="7049"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <date month="October" year="2013"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation.  These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC7252" target="https://www.rfc-editor.org/info/rfc7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7252"/>
            <seriesInfo name="RFC" value="7252"/>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks.  The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s.  The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types.  CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="BCP205" target="https://www.rfc-editor.org/info/rfc7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <seriesInfo name="DOI" value="10.17487/RFC7942"/>
            <seriesInfo name="RFC" value="7942"/>
            <seriesInfo name="BCP" value="205"/>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer">
              <organization/>
            </author>
            <author fullname="A. Farrel" initials="A." surname="Farrel">
              <organization/>
            </author>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section.  This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory.  Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications.  This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8610" target="https://www.rfc-editor.org/info/rfc8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <seriesInfo name="DOI" value="10.17487/RFC8610"/>
            <seriesInfo name="RFC" value="8610"/>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz">
              <organization/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049).  Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.ietf-rats-architecture" target="https://www.ietf.org/archive/id/draft-ietf-rats-architecture-14.txt">
          <front>
            <title>Remote Attestation Procedures Architecture</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-rats-architecture-14"/>
            <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="9" month="December" year="2021"/>
            <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>
        </reference>
        <reference anchor="I-D.ietf-rats-tpm-based-network-device-attest" target="https://www.ietf.org/archive/id/draft-ietf-rats-tpm-based-network-device-attest-10.txt">
          <front>
            <title>TPM-based Network Device Remote Integrity Verification</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-rats-tpm-based-network-device-attest-10"/>
            <author fullname="Guy Fedorkow">
              <organization>Juniper Networks, Inc.</organization>
            </author>
            <author fullname="Eric Voit">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Jessica Fitzgerald-McKay">
              <organization>National Security Agency</organization>
            </author>
            <date day="30" month="December" year="2021"/>
            <abstract>
              <t>   This document describes a workflow for remote attestation of the
   integrity of firmware and software installed on network devices that
   contain Trusted Platform Modules [TPM1.2], [TPM2.0], as defined by
   the Trusted Computing Group (TCG).

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.birkholz-rats-tuda" target="https://www.ietf.org/archive/id/draft-birkholz-rats-tuda-06.txt">
          <front>
            <title>Time-Based Uni-Directional Attestation</title>
            <seriesInfo name="Internet-Draft" value="draft-birkholz-rats-tuda-06"/>
            <author fullname="Andreas Fuchs">
              <organization>Fraunhofer Institute for Secure Information Technology</organization>
            </author>
            <author fullname="Henk Birkholz">
              <organization>Fraunhofer Institute for Secure Information Technology</organization>
            </author>
            <author fullname="Ira E McDonald">
              <organization>High North Inc</organization>
            </author>
            <author fullname="Carsten Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="12" month="January" year="2022"/>
            <abstract>
              <t>   This document defines the method and bindings used to convey Evidence
   via Time-based Uni-Directional Attestation (TUDA) in Remote
   ATtestation procedureS (RATS).  TUDA does not require a challenge-
   response handshake and thereby does not rely on the conveyance of a
   nonce to prove freshness of remote attestation Evidence.  TUDA
   enables the creation of Secure Audit Logs that can constitute
   believable Evidence about both current and past operational states of
   an Attester.  In TUDA, RATS entities require access to a Handle
   Distributor to which a trustable and synchronized time-source is
   available.  The Handle Distributor takes on the role of a Time Stamp
   Authority (TSA) to distribute Handles incorporating Time Stamp Tokens
   (TST) to the RATS entities.  RATS require an Attesting Environment
   that generates believable Evidence.  While a TPM is used as the
   corresponding root of trust in this specification, any other type of
   root of trust can be used with TUDA.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="DAA">
          <front>
            <title>Direct Anonymous Attestation</title>
            <seriesInfo name="page" value="132-145"/>
            <seriesInfo name="ACM" value="Proceedings of the 11th ACM conference on Computer and Communications Security "/>
            <author initials="E." surname="Brickell" fullname="Ernie Brickell">
              <organization/>
            </author>
            <author initials="J." surname="Camenisch" fullname="Jan Camenisch">
              <organization/>
            </author>
            <author initials="L." surname="Chen" fullname="Liqun Chen">
              <organization/>
            </author>
            <date year="2004"/>
          </front>
        </reference>
        <reference anchor="turtles">
          <front>
            <title>Turtles All the Way Down: Foundation, Edifice, and Ruin in Faulkner and McCarthy</title>
            <seriesInfo name="DOI" value="10.1353/fau.2010.0002"/>
            <seriesInfo name="The Faulkner Journal" value="25.2"/>
            <author initials="R." surname="Rudnicki" fullname="Robert Rudnicki">
              <organization/>
            </author>
            <date year="2010"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="coap-fetch-bodies" numbered="true" toc="default">
      <name>CDDL Specification for a simple CoAP Challenge/Response Interaction</name>
      <t>The following CDDL specification is an exemplary proof-of-concept to illustrate a potential implementation of the Challenge/Response Interaction Model. The transfer protocol used is CoAP using the FETCH operation. The actual resource operated on can be empty. Both the Challenge Message and the Response Message are exchanged via the FETCH operation and corresponding FETCH Request and FETCH Response body.</t>
      <t>In this example, evidence is created via the root-of-trust for reporting primitive operation "quote" that is provided by a TPM 2.0.</t>
      <sourcecode type="CDDL">
RAIM-Bodies = CoAP-FETCH-Body / CoAP-FETCH-Response-Body

CoAP-FETCH-Body = [ hello: bool, ; if true, the AK-Cert is conveyed
                    nonce: bytes,
                    pcr-selection: [ + [ tcg-hash-alg-id: uint .size 2, ; TPM2_ALG_ID
                                         [ + pcr: uint .size 1 ],
                                       ]
                                   ],
                  ]

CoAP-FETCH-Response-Body = [ attestation-evidence: TPMS_ATTEST-quote,
                             tpm-native-signature: bytes,
                             ? ak-cert: bytes, ; attestation key certificate
                           ]

TPMS_ATTEST-quote = [ qualifiediSigner: uint .size 2, ;TPM2B_NAME
                      TPMS_CLOCK_INFO,
                      firmwareVersion: uint .size 8
                      quote-responses: [ * [ pcr: uint .size 1,
                                             + [ pcr-value: bytes,
                                                 ? hash-alg-id: uint .size 2,
                                               ],
                                           ],
                                         ? pcr-digest: bytes,
                                       ],
                    ]

TPMS_CLOCK_INFO = [ clock: uint .size 8,
                    resetCounter: uint .size 4,
                    restartCounter: uint .size 4,
                    save: bool,
                  ]
</sourcecode>
    </section>
  </back>
  <!-- ##markdown-source:
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
o5A3ytDI1nNPPuv/BpkwffELrAAA

-->

</rfc>
