<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.22 (Ruby 2.5.1) -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-reference-interaction-models-07" category="info" 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-07"/>
    <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="2023" month="March" day="10"/>
    <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">
      <name>Introduction</name>
      <t>Remote ATtestation procedureS (RATS, <xref target="I-D.ietf-rats-architecture"/>) 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"/>.
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">
      <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"/>:
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"/>.</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"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <section anchor="disambiguation">
        <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"/>.
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"/> and the definition of Attestation as described in <xref target="I-D.ietf-rats-tpm-based-network-device-attest"/>.</t>
      </section>
    </section>
    <section anchor="scope-and-intent">
      <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"/> 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">
      <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">
        <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"/> 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"/>.
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">
      <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"/>.</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"/>), 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">
      <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"/>. 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"/>). 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">
      <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">
        <name>Challenge/Response Remote Attestation</name>
        <artwork><![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"/>.</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">
          <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><![CDATA[
.----------.                          .----------.    .---------------.
| Attester |                          | Verifier |    | Relying Party |
'----------'                          '----------'    '---------------'
     |                                      |                 |
  generateClaims(attestingEnvironment)      |                 |
     | => claims, eventLogs                 |                 |
     |                                      |                 |
     | <------- requestAttestation(handle,  |                 |
     |         authSecIDs, claimSelection)  |                 |
     |                                      |                 |
  collectClaims(claims, claimSelection)     |                 |
     | => collectedClaims                   |                 |
     |                                      |                 |
  generateEvidence(handle,                  |                 |
     authSecIDs, collectedClaims)           |                 |
     | => evidence                          |                 |
     |                                      |                 |
     | evidence, eventLogs ---------------> |                 |
     |                                      |                 |
     |                appraiseEvidence(evidence,              |
     |                   eventLogs, refValues)                |
     |                 attestationResult <= |                 |
     |                                      |                 |
     | <----------------- attestationResult |                 |
     |                                      |                 |
     | evidence, attestationResult -------------------------> |
     |                                      |                 |
     |                                      |  appraiseResult(evidence,
     |                                      |      attestationResult)
     |                                      |                 |
]]></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 relays the message and optionally checks its signature against a policed trust anchor store. Upon receiving the Evidence, the Relying Party initiates a session with the Verifier. Once the session is established, it forwards the received Evidence to the Verifier. 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><![CDATA[
.----------.                     .---------------.         .----------.
| Attester |                     | Relying Party |         | Verifier |
'----------'                     '---------------'         '----------'
     |                                   |                       |
  generateClaims(attestingEnvironment)   |                       |
     | => claims, eventLogs              |                       |
     |                                   |                       |
     | <----- requestAttestation(handle, |                       |
     |       authSecIDs, claimSelection) |                       |
     |                                   |                       |
  collectClaims(claims,                  |                       |
     claimSelection)                     |                       |
     | => collectedClaims                |                       |
     |                                   |                       |
  generateEvidence(handle,               |                       |
     authSecIDs, collectedClaims)        |                       |
     | => evidence                       |                       |
     |                                   |                       |
     | evidence, eventLogs ------------> |                       |
     |                                   |                       |
     |                                   | (handle, evidence,    |
     |                                   |  eventLogs) --------> |
     |                                   |                       |
     |                                   |   appraiseEvidence(evidence,
     |                                   |        eventLogs, refValues)
     |                                   |  attestationResult <= |
     |                                   |                       |
     |                                   | <--------- (evidence, |
     |                                   |    attestationResult) |
     |                                   |                       |
     |               appraiseResult(evidence,                    |
     |                    attestationResult)                     |
     |                                   |                       |
]]></artwork>
        </section>
      </section>
      <section anchor="uni-directional-remote-attestation">
        <name>Uni-Directional Remote Attestation</name>
        <artwork><![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"/>, 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"/>).
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">
        <name>Streaming Remote Attestation</name>
        <artwork><![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">
      <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">
        <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">
        <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">
        <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">
      <name>Implementation Status</name>
      <t>Note to RFC Editor: Please remove this section as well as references to <xref target="BCP205"/> 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"/>.
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"/>,
"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">
        <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">
        <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">
        <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">
        <name>Maturity</name>
        <t>The code's level of maturity is considered to be "prototype".</t>
      </section>
      <section anchor="coverage-and-version-compatibility">
        <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"/> of this document.</t>
      </section>
      <section anchor="license">
        <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">
        <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"/> (http://coap.technology/) and the Concise Binary Object Representation <xref target="RFC7049"/> (https://cbor.io/).</t>
      </section>
      <section anchor="contact">
        <name>Contact</name>
        <t>Michael Eckel (michael.eckel@sit.fraunhofer.de)</t>
      </section>
    </section>
    <section anchor="security-and-privacy-considerations">
      <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">
      <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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-rats-architecture-22"/>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel Corporation</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="28" month="September" year="2022"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state.  This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims.  It provides 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">
          <front>
            <title>TPM-based Network Device Remote Integrity Verification</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-rats-tpm-based-network-device-attest-14"/>
            <author fullname="Guy Fedorkow" initials="G." surname="Fedorkow">
              <organization>Juniper Networks, Inc.</organization>
            </author>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Jessica Fitzgerald-McKay" initials="J." surname="Fitzgerald-McKay">
              <organization>National Security Agency</organization>
            </author>
            <date day="22" month="March" year="2022"/>
            <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)), or equivalent hardware
   implementations that include the protected capabilities, as provided
   by TPMs.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.birkholz-rats-tuda">
          <front>
            <title>Time-Based Uni-Directional Attestation</title>
            <seriesInfo name="Internet-Draft" value="draft-birkholz-rats-tuda-07"/>
            <author fullname="Andreas Fuchs" initials="A." surname="Fuchs">
              <organization>Fraunhofer Institute for Secure Information Technology</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer Institute for Secure Information Technology</organization>
            </author>
            <author fullname="Ira McDonald" initials="I." surname="McDonald">
              <organization>High North Inc</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="10" month="July" 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">
      <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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
ymtleGTnvqcz6/8GdyBP3NumAAA=

-->

</rfc>
