<?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.35 (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-09" 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-09"/>
    <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@ietf.contact</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="2024" month="March" day="04"/>
    <area>Security</area>
    <workgroup>RATS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 123?>

<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>
    <?line 129?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Remote ATtestation procedureS (RATS, <xref target="RFC9334"/>) 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="RFC9334"/>.
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>
      <ol spacing="normal" type="1">
        <li>prevent inconsistencies in descriptions of interaction models in other documents (due to text cloning and evolution over time), and to</li>
        <li>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.</li>
      </ol>
      <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="RFC9334"/>:
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.
<?line -6?>
      </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="RFC9334"/>.
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="RFC9334"/> 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="RFC9334"/> 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="RFC9334"/> 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="RFC9334"/>. 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="RFC9334"/>). 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>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="416" width="584" viewBox="0 0 584 416" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
              <path d="M 48,64 L 48,80" fill="none" stroke="black"/>
              <path d="M 48,144 L 48,192" fill="none" stroke="black"/>
              <path d="M 48,224 L 48,240" fill="none" stroke="black"/>
              <path d="M 48,272 L 48,320" fill="none" stroke="black"/>
              <path d="M 48,352 L 48,400" fill="none" stroke="black"/>
              <path d="M 96,32 L 96,64" fill="none" stroke="black"/>
              <path d="M 488,32 L 488,64" fill="none" stroke="black"/>
              <path d="M 536,64 L 536,80" fill="none" stroke="black"/>
              <path d="M 536,112 L 536,320" fill="none" stroke="black"/>
              <path d="M 536,384 L 536,400" fill="none" stroke="black"/>
              <path d="M 576,32 L 576,64" fill="none" stroke="black"/>
              <path d="M 8,32 L 96,32" fill="none" stroke="black"/>
              <path d="M 488,32 L 576,32" fill="none" stroke="black"/>
              <path d="M 8,64 L 96,64" fill="none" stroke="black"/>
              <path d="M 488,64 L 576,64" fill="none" stroke="black"/>
              <path d="M 8,94 L 136,94" fill="none" stroke="black"/>
              <path d="M 8,98 L 136,98" fill="none" stroke="black"/>
              <path d="M 432,94 L 576,94" fill="none" stroke="black"/>
              <path d="M 432,98 L 576,98" fill="none" stroke="black"/>
              <path d="M 56,176 L 80,176" fill="none" stroke="black"/>
              <path d="M 224,304 L 528,304" fill="none" stroke="black"/>
              <path d="M 8,334 L 208,334" fill="none" stroke="black"/>
              <path d="M 8,338 L 208,338" fill="none" stroke="black"/>
              <path d="M 376,334 L 576,334" fill="none" stroke="black"/>
              <path d="M 376,338 L 576,338" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="536,304 524,298.4 524,309.6 " fill="black" transform="rotate(0,528,304)"/>
              <polygon class="arrowhead" points="64,176 52,170.4 52,181.6 " fill="black" transform="rotate(180,56,176)"/>
              <g class="text">
                <text x="52" y="52">Attester</text>
                <text x="532" y="52">Verifier</text>
                <text x="176" y="100">[Evidence</text>
                <text x="260" y="100">Generation</text>
                <text x="320" y="100">and</text>
                <text x="384" y="100">Conveyance]</text>
                <text x="48" y="116">|</text>
                <text x="164" y="132">generateClaims(attestingEnvironment)</text>
                <text x="68" y="148">=&gt;</text>
                <text x="112" y="148">claims,</text>
                <text x="184" y="148">eventLogs</text>
                <text x="196" y="180">requestAttestation(handle,</text>
                <text x="352" y="180">authSecIDs,</text>
                <text x="464" y="180">claimSelection)</text>
                <text x="104" y="212">collectClaims(claims,</text>
                <text x="256" y="212">claimSelection)</text>
                <text x="68" y="228">=&gt;</text>
                <text x="144" y="228">collectedClaims</text>
                <text x="116" y="260">generateEvidence(handle,</text>
                <text x="264" y="260">authSecIDs,</text>
                <text x="380" y="260">collectedClaims)</text>
                <text x="68" y="276">=&gt;</text>
                <text x="116" y="276">evidence</text>
                <text x="96" y="308">evidence,</text>
                <text x="176" y="308">eventLogs</text>
                <text x="248" y="340">[Evidence</text>
                <text x="332" y="340">Appraisal]</text>
                <text x="536" y="356">|</text>
                <text x="284" y="372">appraiseEvidence(evidence,</text>
                <text x="436" y="372">eventLogs,</text>
                <text x="524" y="372">refValues)</text>
                <text x="432" y="388">attestationResult</text>
                <text x="516" y="388">&lt;=</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
.----------.                                                .----------.
| Attester |                                                | Verifier |
'----+-----'                                                '-----+----'
     |                                                            |
=================[Evidence Generation and Conveyance]===================
     |                                                            |
  generateClaims(attestingEnvironment)                            |
     | => claims, eventLogs                                       |
     |                                                            |
     |<--- requestAttestation(handle, authSecIDs, claimSelection) |
     |                                                            |
  collectClaims(claims, claimSelection)                           |
     | => collectedClaims                                         |
     |                                                            |
  generateEvidence(handle, authSecIDs, collectedClaims)           |
     | => evidence                                                |
     |                                                            |
     | evidence, eventLogs -------------------------------------->|
     |                                                            |
==========================[Evidence Appraisal]==========================
     |                                                            |
     |                appraiseEvidence(evidence, eventLogs, refValues)
     |                                       attestationResult <= |
     |                                                            |
]]></artwork>
        </artset>
        <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 between the Attester, Verifier, and Relying Party undergoing Remote Attestation Procedure, using these models.</t>
          <section anchor="passport-model">
            <name>Passport Model</name>
            <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>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="608" width="584" viewBox="0 0 584 608" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                  <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
                  <path d="M 48,64 L 48,80" fill="none" stroke="black"/>
                  <path d="M 48,144 L 48,208" fill="none" stroke="black"/>
                  <path d="M 48,240 L 48,256" fill="none" stroke="black"/>
                  <path d="M 48,304 L 48,352" fill="none" stroke="black"/>
                  <path d="M 48,384 L 48,512" fill="none" stroke="black"/>
                  <path d="M 48,544 L 48,592" fill="none" stroke="black"/>
                  <path d="M 96,32 L 96,64" fill="none" stroke="black"/>
                  <path d="M 312,32 L 312,64" fill="none" stroke="black"/>
                  <path d="M 360,64 L 360,80" fill="none" stroke="black"/>
                  <path d="M 360,112 L 360,160" fill="none" stroke="black"/>
                  <path d="M 360,208 L 360,352" fill="none" stroke="black"/>
                  <path d="M 360,416 L 360,488" fill="none" stroke="black"/>
                  <path d="M 360,544 L 360,592" fill="none" stroke="black"/>
                  <path d="M 400,32 L 400,64" fill="none" stroke="black"/>
                  <path d="M 440,32 L 440,64" fill="none" stroke="black"/>
                  <path d="M 504,64 L 504,80" fill="none" stroke="black"/>
                  <path d="M 504,112 L 504,352" fill="none" stroke="black"/>
                  <path d="M 504,384 L 504,512" fill="none" stroke="black"/>
                  <path d="M 568,32 L 568,64" fill="none" stroke="black"/>
                  <path d="M 8,32 L 96,32" fill="none" stroke="black"/>
                  <path d="M 312,32 L 400,32" fill="none" stroke="black"/>
                  <path d="M 440,32 L 568,32" fill="none" stroke="black"/>
                  <path d="M 8,64 L 96,64" fill="none" stroke="black"/>
                  <path d="M 312,64 L 400,64" fill="none" stroke="black"/>
                  <path d="M 440,64 L 568,64" fill="none" stroke="black"/>
                  <path d="M 8,94 L 136,94" fill="none" stroke="black"/>
                  <path d="M 8,98 L 136,98" fill="none" stroke="black"/>
                  <path d="M 432,94 L 576,94" fill="none" stroke="black"/>
                  <path d="M 432,98 L 576,98" fill="none" stroke="black"/>
                  <path d="M 56,176 L 224,176" fill="none" stroke="black"/>
                  <path d="M 240,336 L 352,336" fill="none" stroke="black"/>
                  <path d="M 8,366 L 208,366" fill="none" stroke="black"/>
                  <path d="M 8,370 L 208,370" fill="none" stroke="black"/>
                  <path d="M 376,366 L 576,366" fill="none" stroke="black"/>
                  <path d="M 376,370 L 576,370" fill="none" stroke="black"/>
                  <path d="M 56,464 L 200,464" fill="none" stroke="black"/>
                  <path d="M 304,496 L 496,496" fill="none" stroke="black"/>
                  <path d="M 8,526 L 160,526" fill="none" stroke="black"/>
                  <path d="M 8,530 L 160,530" fill="none" stroke="black"/>
                  <path d="M 416,526 L 576,526" fill="none" stroke="black"/>
                  <path d="M 416,530 L 576,530" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="504,496 492,490.4 492,501.6 " fill="black" transform="rotate(0,496,496)"/>
                  <polygon class="arrowhead" points="360,336 348,330.4 348,341.6 " fill="black" transform="rotate(0,352,336)"/>
                  <polygon class="arrowhead" points="64,464 52,458.4 52,469.6 " fill="black" transform="rotate(180,56,464)"/>
                  <polygon class="arrowhead" points="64,176 52,170.4 52,181.6 " fill="black" transform="rotate(180,56,176)"/>
                  <g class="text">
                    <text x="52" y="52">Attester</text>
                    <text x="356" y="52">Verifier</text>
                    <text x="480" y="52">Relying</text>
                    <text x="536" y="52">Party</text>
                    <text x="176" y="100">[Evidence</text>
                    <text x="260" y="100">Generation</text>
                    <text x="320" y="100">and</text>
                    <text x="384" y="100">Conveyance]</text>
                    <text x="48" y="116">|</text>
                    <text x="164" y="132">generateClaims(attestingEnvironment)</text>
                    <text x="68" y="148">=&gt;</text>
                    <text x="112" y="148">claims,</text>
                    <text x="184" y="148">eventLogs</text>
                    <text x="340" y="180">requestAttestation(handle,</text>
                    <text x="312" y="196">authSecIDs,</text>
                    <text x="424" y="196">claimSelection)</text>
                    <text x="104" y="228">collectClaims(claims,</text>
                    <text x="256" y="228">claimSelection)</text>
                    <text x="68" y="244">=&gt;</text>
                    <text x="144" y="244">collectedClaims</text>
                    <text x="116" y="276">generateEvidence(handle,</text>
                    <text x="88" y="292">authSecIDs,</text>
                    <text x="204" y="292">collectedClaims)</text>
                    <text x="68" y="308">=&gt;</text>
                    <text x="116" y="308">evidence</text>
                    <text x="100" y="340">{evidence,</text>
                    <text x="188" y="340">eventLogs}</text>
                    <text x="248" y="372">[Evidence</text>
                    <text x="332" y="372">Appraisal]</text>
                    <text x="360" y="388">|</text>
                    <text x="356" y="404">appraiseEvidence(evidence,</text>
                    <text x="320" y="420">eventLogs</text>
                    <text x="412" y="420">refValues)</text>
                    <text x="256" y="436">attestationResult</text>
                    <text x="340" y="436">&lt;=</text>
                    <text x="280" y="468">attestationResult</text>
                    <text x="100" y="500">{evidence,</text>
                    <text x="220" y="500">attestationResult}</text>
                    <text x="360" y="516">|</text>
                    <text x="212" y="532">[Attestation</text>
                    <text x="292" y="532">Result</text>
                    <text x="368" y="532">Generation]</text>
                    <text x="504" y="548">|</text>
                    <text x="484" y="564">appraiseResult(policy,</text>
                    <text x="492" y="580">attestationResult)</text>
                    <text x="504" y="596">|</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
.----------.                          .----------.    .---------------.
| Attester |                          | Verifier |    | Relying Party |
'----+-----'                          '-----+----'    '-------+-------'
     |                                      |                 |
=================[Evidence Generation and Conveyance]===================
     |                                      |                 |
  generateClaims(attestingEnvironment)      |                 |
     | => claims, eventLogs                 |                 |
     |                                      |                 |
     |<--------------------- requestAttestation(handle,       |
     |                           authSecIDs, claimSelection)  |
     |                                      |                 |
  collectClaims(claims, claimSelection)     |                 |
     | => collectedClaims                   |                 |
     |                                      |                 |
  generateEvidence(handle,                  |                 |
     authSecIDs, collectedClaims)           |                 |
     | => evidence                          |                 |
     |                                      |                 |
     | {evidence, eventLogs} -------------->|                 |
     |                                      |                 |
==========================[Evidence Appraisal]==========================
     |                                      |                 |
     |                         appraiseEvidence(evidence,     |
     |                             eventLogs, refValues)      |
     |                 attestationResult <= |                 |
     |                                      |                 |
     |<------------------ attestationResult |                 |
     |                                      |                 |
     | {evidence, attestationResult} ------------------------>|
     |                                      |                 |
====================[Attestation Result Generation]=====================
     |                                      |                 |
     |                                      |    appraiseResult(policy,
     |                                      |       attestationResult)
     |                                      |                 |
]]></artwork>
            </artset>
          </section>
          <section anchor="background-check-model">
            <name>Background-Check Model</name>
            <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>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="656" width="584" viewBox="0 0 584 656" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                  <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
                  <path d="M 48,64 L 48,80" fill="none" stroke="black"/>
                  <path d="M 48,112 L 48,160" fill="none" stroke="black"/>
                  <path d="M 48,192 L 48,208" fill="none" stroke="black"/>
                  <path d="M 48,256 L 48,272" fill="none" stroke="black"/>
                  <path d="M 48,320 L 48,368" fill="none" stroke="black"/>
                  <path d="M 48,400 L 48,560" fill="none" stroke="black"/>
                  <path d="M 48,592 L 48,640" fill="none" stroke="black"/>
                  <path d="M 96,32 L 96,64" fill="none" stroke="black"/>
                  <path d="M 272,32 L 272,64" fill="none" stroke="black"/>
                  <path d="M 336,64 L 336,80" fill="none" stroke="black"/>
                  <path d="M 336,160 L 336,368" fill="none" stroke="black"/>
                  <path d="M 336,400 L 336,560" fill="none" stroke="black"/>
                  <path d="M 400,32 L 400,64" fill="none" stroke="black"/>
                  <path d="M 480,32 L 480,64" fill="none" stroke="black"/>
                  <path d="M 528,64 L 528,80" fill="none" stroke="black"/>
                  <path d="M 528,112 L 528,368" fill="none" stroke="black"/>
                  <path d="M 528,400 L 528,448" fill="none" stroke="black"/>
                  <path d="M 528,496 L 528,560" fill="none" stroke="black"/>
                  <path d="M 528,592 L 528,640" fill="none" stroke="black"/>
                  <path d="M 568,32 L 568,64" fill="none" stroke="black"/>
                  <path d="M 568,464 L 568,472" fill="none" stroke="black"/>
                  <path d="M 8,32 L 96,32" fill="none" stroke="black"/>
                  <path d="M 272,32 L 400,32" fill="none" stroke="black"/>
                  <path d="M 480,32 L 568,32" fill="none" stroke="black"/>
                  <path d="M 8,64 L 96,64" fill="none" stroke="black"/>
                  <path d="M 272,64 L 400,64" fill="none" stroke="black"/>
                  <path d="M 480,64 L 568,64" fill="none" stroke="black"/>
                  <path d="M 8,94 L 136,94" fill="none" stroke="black"/>
                  <path d="M 8,98 L 136,98" fill="none" stroke="black"/>
                  <path d="M 432,94 L 576,94" fill="none" stroke="black"/>
                  <path d="M 432,98 L 576,98" fill="none" stroke="black"/>
                  <path d="M 56,128 L 224,128" fill="none" stroke="black"/>
                  <path d="M 240,352 L 328,352" fill="none" stroke="black"/>
                  <path d="M 8,382 L 208,382" fill="none" stroke="black"/>
                  <path d="M 8,386 L 208,386" fill="none" stroke="black"/>
                  <path d="M 376,382 L 576,382" fill="none" stroke="black"/>
                  <path d="M 376,386 L 576,386" fill="none" stroke="black"/>
                  <path d="M 448,432 L 520,432" fill="none" stroke="black"/>
                  <path d="M 344,528 L 424,528" fill="none" stroke="black"/>
                  <path d="M 8,574 L 160,574" fill="none" stroke="black"/>
                  <path d="M 8,578 L 160,578" fill="none" stroke="black"/>
                  <path d="M 416,574 L 576,574" fill="none" stroke="black"/>
                  <path d="M 416,578 L 576,578" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="528,432 516,426.4 516,437.6 " fill="black" transform="rotate(0,520,432)"/>
                  <polygon class="arrowhead" points="352,528 340,522.4 340,533.6 " fill="black" transform="rotate(180,344,528)"/>
                  <polygon class="arrowhead" points="336,352 324,346.4 324,357.6 " fill="black" transform="rotate(0,328,352)"/>
                  <polygon class="arrowhead" points="64,128 52,122.4 52,133.6 " fill="black" transform="rotate(180,56,128)"/>
                  <g class="text">
                    <text x="52" y="52">Attester</text>
                    <text x="312" y="52">Relying</text>
                    <text x="368" y="52">Party</text>
                    <text x="524" y="52">Verifier</text>
                    <text x="176" y="100">[Evidence</text>
                    <text x="260" y="100">Generation</text>
                    <text x="320" y="100">and</text>
                    <text x="384" y="100">Conveyance]</text>
                    <text x="336" y="116">|</text>
                    <text x="340" y="132">requestAttestation(handle,</text>
                    <text x="312" y="148">authSecIDs,</text>
                    <text x="424" y="148">claimSelection)</text>
                    <text x="164" y="180">generateClaims(attestingEnvironment)</text>
                    <text x="68" y="196">=&gt;</text>
                    <text x="116" y="196">{claims,</text>
                    <text x="196" y="196">eventLogs}</text>
                    <text x="104" y="228">collectClaims(claims,</text>
                    <text x="104" y="244">claimSelection)</text>
                    <text x="68" y="260">=&gt;</text>
                    <text x="144" y="260">collectedClaims</text>
                    <text x="116" y="292">generateEvidence(handle,</text>
                    <text x="88" y="308">authSecIDs,</text>
                    <text x="204" y="308">collectedClaims)</text>
                    <text x="68" y="324">=&gt;</text>
                    <text x="116" y="324">evidence</text>
                    <text x="100" y="356">{evidence,</text>
                    <text x="188" y="356">eventLogs}</text>
                    <text x="248" y="388">[Evidence</text>
                    <text x="332" y="388">Appraisal]</text>
                    <text x="380" y="420">{handle,</text>
                    <text x="456" y="420">evidence,</text>
                    <text x="396" y="436">eventLogs}</text>
                    <text x="464" y="468">appraiseEvidence(evidence</text>
                    <text x="444" y="484">eventLogs,</text>
                    <text x="532" y="484">refValues)</text>
                    <text x="424" y="500">attestationResult</text>
                    <text x="508" y="500">&lt;=</text>
                    <text x="476" y="532">{evidence,</text>
                    <text x="444" y="548">attestationResult}</text>
                    <text x="212" y="580">[Attestation</text>
                    <text x="292" y="580">Result</text>
                    <text x="368" y="580">Generation]</text>
                    <text x="336" y="596">|</text>
                    <text x="332" y="612">appraiseResult(policy,</text>
                    <text x="332" y="628">attestationResult)</text>
                    <text x="336" y="644">|</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
.----------.                     .---------------.         .----------.
| Attester |                     | Relying Party |         | Verifier |
'----+-----'                     '-------+-------'         '-----+----'
     |                                   |                       |
=================[Evidence Generation and Conveyance]===================
     |                                   |                       |
     |<--------------------- requestAttestation(handle,          |
     |                           authSecIDs, claimSelection)     |
     |                                   |                       |
  generateClaims(attestingEnvironment)   |                       |
     | => {claims, eventLogs}            |                       |
     |                                   |                       |
  collectClaims(claims,                  |                       |
     claimSelection)                     |                       |
     | => collectedClaims                |                       |
     |                                   |                       |
  generateEvidence(handle,               |                       |
     authSecIDs, collectedClaims)        |                       |
     | => evidence                       |                       |
     |                                   |                       |
     | {evidence, eventLogs} ----------->|                       |
     |                                   |                       |
==========================[Evidence Appraisal]==========================
     |                                   |                       |
     |                                   | {handle, evidence,    |
     |                                   |  eventLogs} --------->|
     |                                   |                       |
     |                                   |   appraiseEvidence(evidence,
     |                                   |        eventLogs, refValues)
     |                                   |  attestationResult <= |
     |                                   |                       |
     |                                   |<---------- {evidence, |
     |                                   |    attestationResult} |
     |                                   |                       |
====================[Attestation Result Generation]=====================
     |                                   |                       |
     |                        appraiseResult(policy,             |
     |                          attestationResult)               |
     |                                   |                       |
]]></artwork>
            </artset>
          </section>
        </section>
      </section>
      <section anchor="uni-directional-remote-attestation">
        <name>Uni-Directional Remote Attestation</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="944" width="584" viewBox="0 0 584 944" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
              <path d="M 8,576 L 8,896" fill="none" stroke="black"/>
              <path d="M 48,64 L 48,80" fill="none" stroke="black"/>
              <path d="M 48,112 L 48,208" fill="none" stroke="black"/>
              <path d="M 48,272 L 48,288" fill="none" stroke="black"/>
              <path d="M 48,320 L 48,336" fill="none" stroke="black"/>
              <path d="M 48,368 L 48,416" fill="none" stroke="black"/>
              <path d="M 48,448 L 48,512" fill="none" stroke="black"/>
              <path d="M 48,640 L 48,656" fill="none" stroke="black"/>
              <path d="M 48,688 L 48,704" fill="none" stroke="black"/>
              <path d="M 48,736 L 48,784" fill="none" stroke="black"/>
              <path d="M 48,816 L 48,904" fill="none" stroke="black"/>
              <path d="M 96,32 L 96,64" fill="none" stroke="black"/>
              <path d="M 288,32 L 288,64" fill="none" stroke="black"/>
              <path d="M 368,64 L 368,80" fill="none" stroke="black"/>
              <path d="M 368,128 L 368,176" fill="none" stroke="black"/>
              <path d="M 456,32 L 456,64" fill="none" stroke="black"/>
              <path d="M 488,32 L 488,64" fill="none" stroke="black"/>
              <path d="M 536,64 L 536,80" fill="none" stroke="black"/>
              <path d="M 536,112 L 536,208" fill="none" stroke="black"/>
              <path d="M 536,240 L 536,416" fill="none" stroke="black"/>
              <path d="M 536,608 L 536,784" fill="none" stroke="black"/>
              <path d="M 536,880 L 536,904" fill="none" stroke="black"/>
              <path d="M 560,480 L 560,488" fill="none" stroke="black"/>
              <path d="M 560,848 L 560,856" fill="none" stroke="black"/>
              <path d="M 576,32 L 576,64" fill="none" stroke="black"/>
              <path d="M 576,576 L 576,896" fill="none" stroke="black"/>
              <path d="M 8,32 L 96,32" fill="none" stroke="black"/>
              <path d="M 288,32 L 456,32" fill="none" stroke="black"/>
              <path d="M 488,32 L 576,32" fill="none" stroke="black"/>
              <path d="M 8,64 L 96,64" fill="none" stroke="black"/>
              <path d="M 288,64 L 456,64" fill="none" stroke="black"/>
              <path d="M 488,64 L 576,64" fill="none" stroke="black"/>
              <path d="M 8,94 L 208,94" fill="none" stroke="black"/>
              <path d="M 8,98 L 208,98" fill="none" stroke="black"/>
              <path d="M 368,94 L 576,94" fill="none" stroke="black"/>
              <path d="M 368,98 L 576,98" fill="none" stroke="black"/>
              <path d="M 56,160 L 280,160" fill="none" stroke="black"/>
              <path d="M 456,160 L 528,160" fill="none" stroke="black"/>
              <path d="M 8,222 L 136,222" fill="none" stroke="black"/>
              <path d="M 8,226 L 136,226" fill="none" stroke="black"/>
              <path d="M 432,222 L 576,222" fill="none" stroke="black"/>
              <path d="M 432,226 L 576,226" fill="none" stroke="black"/>
              <path d="M 240,400 L 528,400" fill="none" stroke="black"/>
              <path d="M 8,430 L 208,430" fill="none" stroke="black"/>
              <path d="M 8,434 L 208,434" fill="none" stroke="black"/>
              <path d="M 376,430 L 576,430" fill="none" stroke="black"/>
              <path d="M 376,434 L 576,434" fill="none" stroke="black"/>
              <path d="M 24,560 L 80,560" fill="none" stroke="black"/>
              <path d="M 136,560 L 560,560" fill="none" stroke="black"/>
              <path d="M 24,590 L 120,590" fill="none" stroke="black"/>
              <path d="M 24,594 L 120,594" fill="none" stroke="black"/>
              <path d="M 464,590 L 560,590" fill="none" stroke="black"/>
              <path d="M 464,594 L 560,594" fill="none" stroke="black"/>
              <path d="M 280,768 L 528,768" fill="none" stroke="black"/>
              <path d="M 24,798 L 184,798" fill="none" stroke="black"/>
              <path d="M 24,802 L 184,802" fill="none" stroke="black"/>
              <path d="M 400,798 L 560,798" fill="none" stroke="black"/>
              <path d="M 400,802 L 560,802" fill="none" stroke="black"/>
              <path d="M 24,912 L 560,912" fill="none" stroke="black"/>
              <path d="M 24,560 C 15.16936,560 8,567.16936 8,576" fill="none" stroke="black"/>
              <path d="M 560,560 C 568.83064,560 576,567.16936 576,576" fill="none" stroke="black"/>
              <path d="M 24,912 C 15.16936,912 8,904.83064 8,896" fill="none" stroke="black"/>
              <path d="M 560,912 C 568.83064,912 576,904.83064 576,896" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="536,768 524,762.4 524,773.6 " fill="black" transform="rotate(0,528,768)"/>
              <polygon class="arrowhead" points="536,400 524,394.4 524,405.6 " fill="black" transform="rotate(0,528,400)"/>
              <polygon class="arrowhead" points="536,160 524,154.4 524,165.6 " fill="black" transform="rotate(0,528,160)"/>
              <polygon class="arrowhead" points="64,160 52,154.4 52,165.6 " fill="black" transform="rotate(180,56,160)"/>
              <g class="text">
                <text x="52" y="52">Attester</text>
                <text x="324" y="52">Handle</text>
                <text x="400" y="52">Distributor</text>
                <text x="532" y="52">Verifier</text>
                <text x="240" y="100">[Handle</text>
                <text x="320" y="100">Generation]</text>
                <text x="404" y="116">generateHandle()</text>
                <text x="388" y="132">=&gt;</text>
                <text x="428" y="132">handle</text>
                <text x="324" y="164">{handle}</text>
                <text x="412" y="164">{handle}</text>
                <text x="368" y="196">x</text>
                <text x="176" y="228">[Evidence</text>
                <text x="260" y="228">Generation</text>
                <text x="320" y="228">and</text>
                <text x="384" y="228">Conveyance]</text>
                <text x="48" y="244">|</text>
                <text x="164" y="260">generateClaims(attestingEnvironment)</text>
                <text x="68" y="276">=&gt;</text>
                <text x="112" y="276">claims,</text>
                <text x="184" y="276">eventLogs</text>
                <text x="104" y="308">collectClaims(claims,</text>
                <text x="256" y="308">claimSelection)</text>
                <text x="68" y="324">=&gt;</text>
                <text x="144" y="324">collectedClaims</text>
                <text x="116" y="356">generateEvidence(handle,</text>
                <text x="264" y="356">authSecIDs,</text>
                <text x="380" y="356">collectedClaims)</text>
                <text x="68" y="372">=&gt;</text>
                <text x="116" y="372">evidence</text>
                <text x="100" y="404">{evidence,</text>
                <text x="188" y="404">eventLogs}</text>
                <text x="248" y="436">[Evidence</text>
                <text x="332" y="436">Appraisal]</text>
                <text x="536" y="452">|</text>
                <text x="460" y="468">appraiseEvidence(evidence,</text>
                <text x="520" y="484">eventLogs</text>
                <text x="524" y="500">refValues)</text>
                <text x="432" y="516">attestationResult</text>
                <text x="516" y="516">&lt;=</text>
                <text x="536" y="516">|</text>
                <text x="48" y="532">~</text>
                <text x="536" y="532">~</text>
                <text x="48" y="548">|</text>
                <text x="536" y="548">|</text>
                <text x="108" y="564">[loop]</text>
                <text x="48" y="580">|</text>
                <text x="536" y="580">|</text>
                <text x="148" y="596">[Delta</text>
                <text x="212" y="596">Evidence</text>
                <text x="292" y="596">Generation</text>
                <text x="352" y="596">and</text>
                <text x="416" y="596">Conveyance]</text>
                <text x="48" y="612">|</text>
                <text x="164" y="628">generateClaims(attestingEnvironment)</text>
                <text x="68" y="644">=&gt;</text>
                <text x="132" y="644">claimsDelta,</text>
                <text x="244" y="644">eventLogsDelta</text>
                <text x="124" y="676">collectClaims(claimsDelta,</text>
                <text x="296" y="676">claimSelection)</text>
                <text x="68" y="692">=&gt;</text>
                <text x="164" y="692">collectedClaimsDelta</text>
                <text x="116" y="724">generateEvidence(handle,</text>
                <text x="264" y="724">authSecIDs,</text>
                <text x="400" y="724">collectedClaimsDelta)</text>
                <text x="68" y="740">=&gt;</text>
                <text x="116" y="740">evidence</text>
                <text x="100" y="772">{evidence,</text>
                <text x="208" y="772">eventLogsDelta}</text>
                <text x="212" y="804">[Delta</text>
                <text x="276" y="804">Evidence</text>
                <text x="356" y="804">Appraisal]</text>
                <text x="536" y="820">|</text>
                <text x="460" y="836">appraiseEvidence(evidence,</text>
                <text x="500" y="852">eventLogsDelta</text>
                <text x="524" y="868">refValues)</text>
                <text x="432" y="884">attestationResult</text>
                <text x="516" y="884">&lt;=</text>
                <text x="48" y="932">|</text>
                <text x="536" y="932">|</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
.----------.                       .--------------------.   .----------.
| Attester |                       | Handle Distributor |   | Verifier |
'----+-----'                       '---------+----------'   '-----+----'
     |                                       |                    |
==========================[Handle Generation]===========================
     |                                    generateHandle()        |
     |                                       | => handle          |
     |                                       |                    |
     |<---------------------------- {handle} | {handle} --------->|
     |                                       |                    |
     |                                       x                    |
     |                                                            |
=================[Evidence Generation and Conveyance]===================
     |                                                            |
  generateClaims(attestingEnvironment)                            |
     | => claims, eventLogs                                       |
     |                                                            |
  collectClaims(claims, claimSelection)                           |
     | => collectedClaims                                         |
     |                                                            |
  generateEvidence(handle, authSecIDs, collectedClaims)           |
     | => evidence                                                |
     |                                                            |
     | {evidence, eventLogs} ------------------------------------>|
     |                                                            |
==========================[Evidence Appraisal]==========================
     |                                                            |
     |                                      appraiseEvidence(evidence,
     |                                                      eventLogs,
     |                                                      refValues)
     |                                       attestationResult <= |
     ~                                                            ~
     |                                                            |
 .--------[loop]------------------------------------------------------.
|    |                                                            |    |
| =============[Delta Evidence Generation and Conveyance]============= |
|    |                                                            |    |
| generateClaims(attestingEnvironment)                            |    |
|    | => claimsDelta, eventLogsDelta                             |    |
|    |                                                            |    |
| collectClaims(claimsDelta, claimSelection)                      |    |
|    | => collectedClaimsDelta                                    |    |
|    |                                                            |    |
| generateEvidence(handle, authSecIDs, collectedClaimsDelta)      |    |
|    | => evidence                                                |    |
|    |                                                            |    |
|    | {evidence, eventLogsDelta} ------------------------------->|    |
|    |                                                            |    |
| =====================[Delta Evidence Appraisal]===================== |
|    |                                                            |    |
|    |                                      appraiseEvidence(evidence, |
|    |                                                 eventLogsDelta, |
|    |                                                      refValues) |
|    |                                       attestationResult <= |    |
|    |                                                            |    |
 '--------------------------------------------------------------------'
     |                                                            |
]]></artwork>
        </artset>
        <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 Log 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>
        <t>Streaming Remote Attestation serves as the foundational concept for both the observer pattern (<xref target="ISIS"/>) and the publish-subscribe pattern (<xref target="DesignPatterns"/>).
It entails establishing subscription states to enable continuous remote attestation.
The observer pattern directly connects observers to subjects without a broker, while the publish-subscribe pattern involves a central broker for message distribution.
In the following Subsections, streaming remote attestation without a broker (observer pattern) as well as with a broker (publish-subscribe pattern) are illustrated.</t>
        <section anchor="streaming-remote-attestation-without-a-broker">
          <name>Streaming Remote Attestation without a Broker</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="944" width="584" viewBox="0 0 584 944" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
                <path d="M 8,576 L 8,896" fill="none" stroke="black"/>
                <path d="M 48,64 L 48,80" fill="none" stroke="black"/>
                <path d="M 48,112 L 48,208" fill="none" stroke="black"/>
                <path d="M 48,272 L 48,288" fill="none" stroke="black"/>
                <path d="M 48,320 L 48,336" fill="none" stroke="black"/>
                <path d="M 48,368 L 48,384" fill="none" stroke="black"/>
                <path d="M 48,416 L 48,512" fill="none" stroke="black"/>
                <path d="M 48,640 L 48,656" fill="none" stroke="black"/>
                <path d="M 48,688 L 48,704" fill="none" stroke="black"/>
                <path d="M 48,736 L 48,752" fill="none" stroke="black"/>
                <path d="M 48,784 L 48,904" fill="none" stroke="black"/>
                <path d="M 96,32 L 96,64" fill="none" stroke="black"/>
                <path d="M 488,32 L 488,64" fill="none" stroke="black"/>
                <path d="M 536,64 L 536,80" fill="none" stroke="black"/>
                <path d="M 536,144 L 536,208" fill="none" stroke="black"/>
                <path d="M 536,240 L 536,384" fill="none" stroke="black"/>
                <path d="M 536,416 L 536,448" fill="none" stroke="black"/>
                <path d="M 536,608 L 536,752" fill="none" stroke="black"/>
                <path d="M 536,784 L 536,816" fill="none" stroke="black"/>
                <path d="M 536,880 L 536,904" fill="none" stroke="black"/>
                <path d="M 560,480 L 560,488" fill="none" stroke="black"/>
                <path d="M 560,848 L 560,856" fill="none" stroke="black"/>
                <path d="M 576,32 L 576,64" fill="none" stroke="black"/>
                <path d="M 576,576 L 576,896" fill="none" stroke="black"/>
                <path d="M 8,32 L 96,32" fill="none" stroke="black"/>
                <path d="M 488,32 L 576,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 96,64" fill="none" stroke="black"/>
                <path d="M 488,64 L 576,64" fill="none" stroke="black"/>
                <path d="M 8,94 L 208,94" fill="none" stroke="black"/>
                <path d="M 8,98 L 208,98" fill="none" stroke="black"/>
                <path d="M 368,94 L 576,94" fill="none" stroke="black"/>
                <path d="M 368,98 L 576,98" fill="none" stroke="black"/>
                <path d="M 56,176 L 152,176" fill="none" stroke="black"/>
                <path d="M 136,192 L 528,192" fill="none" stroke="black"/>
                <path d="M 8,222 L 136,222" fill="none" stroke="black"/>
                <path d="M 8,226 L 136,226" fill="none" stroke="black"/>
                <path d="M 432,222 L 576,222" fill="none" stroke="black"/>
                <path d="M 432,226 L 576,226" fill="none" stroke="black"/>
                <path d="M 8,398 L 208,398" fill="none" stroke="black"/>
                <path d="M 8,402 L 208,402" fill="none" stroke="black"/>
                <path d="M 376,398 L 576,398" fill="none" stroke="black"/>
                <path d="M 376,402 L 576,402" fill="none" stroke="black"/>
                <path d="M 304,432 L 528,432" fill="none" stroke="black"/>
                <path d="M 24,560 L 80,560" fill="none" stroke="black"/>
                <path d="M 136,560 L 560,560" fill="none" stroke="black"/>
                <path d="M 24,590 L 120,590" fill="none" stroke="black"/>
                <path d="M 24,594 L 120,594" fill="none" stroke="black"/>
                <path d="M 464,590 L 560,590" fill="none" stroke="black"/>
                <path d="M 464,594 L 560,594" fill="none" stroke="black"/>
                <path d="M 24,766 L 184,766" fill="none" stroke="black"/>
                <path d="M 24,770 L 184,770" fill="none" stroke="black"/>
                <path d="M 400,766 L 560,766" fill="none" stroke="black"/>
                <path d="M 400,770 L 560,770" fill="none" stroke="black"/>
                <path d="M 280,800 L 528,800" fill="none" stroke="black"/>
                <path d="M 24,912 L 560,912" fill="none" stroke="black"/>
                <path d="M 24,560 C 15.16936,560 8,567.16936 8,576" fill="none" stroke="black"/>
                <path d="M 560,560 C 568.83064,560 576,567.16936 576,576" fill="none" stroke="black"/>
                <path d="M 24,912 C 15.16936,912 8,904.83064 8,896" fill="none" stroke="black"/>
                <path d="M 560,912 C 568.83064,912 576,904.83064 576,896" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="536,800 524,794.4 524,805.6 " fill="black" transform="rotate(0,528,800)"/>
                <polygon class="arrowhead" points="536,432 524,426.4 524,437.6 " fill="black" transform="rotate(0,528,432)"/>
                <polygon class="arrowhead" points="536,192 524,186.4 524,197.6 " fill="black" transform="rotate(0,528,192)"/>
                <polygon class="arrowhead" points="64,176 52,170.4 52,181.6 " fill="black" transform="rotate(180,56,176)"/>
                <g class="text">
                  <text x="52" y="52">Attester</text>
                  <text x="532" y="52">Verifier</text>
                  <text x="240" y="100">[Handle</text>
                  <text x="320" y="100">Generation]</text>
                  <text x="536" y="116">|</text>
                  <text x="500" y="132">generateHandle()</text>
                  <text x="492" y="148">handle&lt;=</text>
                  <text x="232" y="180">subscribe(handle,</text>
                  <text x="352" y="180">authSecIDs,</text>
                  <text x="464" y="180">claimSelection)</text>
                  <text x="92" y="196">{handle}</text>
                  <text x="176" y="228">[Evidence</text>
                  <text x="260" y="228">Generation</text>
                  <text x="320" y="228">and</text>
                  <text x="384" y="228">Conveyance]</text>
                  <text x="48" y="244">|</text>
                  <text x="164" y="260">generateClaims(attestingEnvironment)</text>
                  <text x="68" y="276">=&gt;</text>
                  <text x="112" y="276">claims,</text>
                  <text x="184" y="276">eventLogs</text>
                  <text x="104" y="308">collectClaims(claims,</text>
                  <text x="256" y="308">claimSelection)</text>
                  <text x="68" y="324">=&gt;</text>
                  <text x="144" y="324">collectedClaims</text>
                  <text x="116" y="356">generateEvidence(handle,</text>
                  <text x="264" y="356">authSecIDs,</text>
                  <text x="380" y="356">collectedClaims)</text>
                  <text x="68" y="372">=&gt;</text>
                  <text x="116" y="372">evidence</text>
                  <text x="248" y="404">[Evidence</text>
                  <text x="332" y="404">Appraisal]</text>
                  <text x="92" y="436">{handle,</text>
                  <text x="168" y="436">evidence,</text>
                  <text x="252" y="436">eventLogs}</text>
                  <text x="460" y="468">appraiseEvidence(evidence,</text>
                  <text x="520" y="484">eventLogs</text>
                  <text x="524" y="500">refValues)</text>
                  <text x="432" y="516">attestationResult</text>
                  <text x="516" y="516">&lt;=</text>
                  <text x="536" y="516">|</text>
                  <text x="48" y="532">~</text>
                  <text x="536" y="532">~</text>
                  <text x="48" y="548">|</text>
                  <text x="536" y="548">|</text>
                  <text x="108" y="564">[loop]</text>
                  <text x="48" y="580">|</text>
                  <text x="536" y="580">|</text>
                  <text x="148" y="596">[Delta</text>
                  <text x="212" y="596">Evidence</text>
                  <text x="292" y="596">Generation</text>
                  <text x="352" y="596">and</text>
                  <text x="416" y="596">Conveyance]</text>
                  <text x="48" y="612">|</text>
                  <text x="164" y="628">generateClaims(attestingEnvironment)</text>
                  <text x="68" y="644">=&gt;</text>
                  <text x="132" y="644">claimsDelta,</text>
                  <text x="244" y="644">eventLogsDelta</text>
                  <text x="124" y="676">collectClaims(claimsDelta,</text>
                  <text x="296" y="676">claimSelection)</text>
                  <text x="68" y="692">=&gt;</text>
                  <text x="164" y="692">collectedClaimsDelta</text>
                  <text x="116" y="724">generateEvidence(handle,</text>
                  <text x="264" y="724">authSecIDs,</text>
                  <text x="400" y="724">collectedClaimsDelta)</text>
                  <text x="68" y="740">=&gt;</text>
                  <text x="116" y="740">evidence</text>
                  <text x="212" y="772">[Delta</text>
                  <text x="276" y="772">Evidence</text>
                  <text x="356" y="772">Appraisal]</text>
                  <text x="100" y="804">{evidence,</text>
                  <text x="208" y="804">eventLogsDelta}</text>
                  <text x="460" y="836">appraiseEvidence(evidence,</text>
                  <text x="500" y="852">eventLogsDelta</text>
                  <text x="524" y="868">refValues)</text>
                  <text x="432" y="884">attestationResult</text>
                  <text x="516" y="884">&lt;=</text>
                  <text x="48" y="932">|</text>
                  <text x="536" y="932">|</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
.----------.                                                .----------.
| Attester |                                                | Verifier |
'----+-----'                                                '-----+----'
     |                                                            |
==========================[Handle Generation]===========================
     |                                                            |
     |                                                generateHandle()
     |                                                   handle<= |
     |                                                            |
     |<------------ subscribe(handle, authSecIDs, claimSelection) |
     | {handle} ------------------------------------------------->|
     |                                                            |
=================[Evidence Generation and Conveyance]===================
     |                                                            |
  generateClaims(attestingEnvironment)                            |
     | => claims, eventLogs                                       |
     |                                                            |
  collectClaims(claims, claimSelection)                           |
     | => collectedClaims                                         |
     |                                                            |
  generateEvidence(handle, authSecIDs, collectedClaims)           |
     | => evidence                                                |
     |                                                            |
==========================[Evidence Appraisal]==========================
     |                                                            |
     | {handle, evidence, eventLogs} ---------------------------->|
     |                                                            |
     |                                      appraiseEvidence(evidence,
     |                                                      eventLogs,
     |                                                      refValues)
     |                                       attestationResult <= |
     ~                                                            ~
     |                                                            |
 .--------[loop]------------------------------------------------------.
|    |                                                            |    |
| =============[Delta Evidence Generation and Conveyance]============= |
|    |                                                            |    |
| generateClaims(attestingEnvironment)                            |    |
|    | => claimsDelta, eventLogsDelta                             |    |
|    |                                                            |    |
| collectClaims(claimsDelta, claimSelection)                      |    |
|    | => collectedClaimsDelta                                    |    |
|    |                                                            |    |
| generateEvidence(handle, authSecIDs, collectedClaimsDelta)      |    |
|    | => evidence                                                |    |
|    |                                                            |    |
| =====================[Delta Evidence Appraisal]===================== |
|    |                                                            |    |
|    | {evidence, eventLogsDelta} ------------------------------->|    |
|    |                                                            |    |
|    |                                      appraiseEvidence(evidence, |
|    |                                                 eventLogsDelta, |
|    |                                                      refValues) |
|    |                                       attestationResult <= |    |
|    |                                                            |    |
 '--------------------------------------------------------------------'
     |                                                            |
]]></artwork>
          </artset>
          <t>The observer pattern is employed in scenarios where message delivery does not involve a central broker.
Instead, an observer directly subscribes to observed resources via a dedicated mechanism.
Consequently, these dedicated mechanisms contain information about the observer and are responsible for maintaining 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 Handles required for Evidence generation.
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 mandatory in this model, the model is also limited to bi-lateral subscription relationships, in which each Verifier has to create and provide Handles individually.
Handles provided by a specific subscribing Verifier MUST be used in Evidence generation for that specific Verifier.
The streaming model without a broker uses the same information elements as the Challenge/Response and the Uni-Directional model.
Methods to detect excessive time drift that would render Handles stale and mandate a fresh Handles to be conveyed via another subscribe operation are out-of-scope of this document.</t>
        </section>
        <section anchor="streaming-remote-attestation-with-a-broker">
          <name>Streaming Remote Attestation with a Broker</name>
          <t>The publish-subscribe messaging pattern is widely used for communication in different areas.
Unlike the <em>Streaming Remote Attestation without a Broker</em> interaction model, Attesters do not (need to) be aware of corresponding Verifiers.
In scenarios with large numbers of Attesters and Verifiers, the publish-subscribe pattern may reduce interdependencies and improve scalability.</t>
          <t>With publish-subscribe, clients typically <em>connect</em> to (or <em>register</em> with) a publish-subscribe server (PubSub server or Broker).
Clients may <em>publish</em> data in the form of a <em>message</em> under a certain <em>topic</em>.
<em>Subscribers</em> to that topic get <em>notified</em> whenever a message arrives under a topic, and the appropriate message is forwarded to them.
Depending on the particular  publish-subscribe model and implementation, clients can be either publishers or subscribers or both.</t>
          <t>In the following sections, the interaction models <em>Challenge/Response Remote Attestation over Publish-Subscribe</em> and <em>Uni-Directional Remote Attestation over Publish-Subscribe</em> are described.
There are different phases that both models go through:</t>
          <ol spacing="normal" type="1">
            <li>Handle Generation</li>
            <li>Evidence Generation and Conveyance</li>
            <li>Evidence Appraisal</li>
            <li>Attestation Result Generation</li>
          </ol>
          <t>The models only differ in the handle generation phase.
From a remote attestations procedure's point of view Evidence Generation, Conveyance, and Appraisal, as well as Attestation Result Generation are identical in both models.</t>
          <section anchor="handle-generation-for-challengeresponse-remote-attestation-over-publish-subscribe">
            <name>Handle Generation for Challenge/Response Remote Attestation over Publish-Subscribe</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="224" width="584" viewBox="0 0 584 224" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                  <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
                  <path d="M 48,64 L 48,80" fill="none" stroke="black"/>
                  <path d="M 48,144 L 48,192" fill="none" stroke="black"/>
                  <path d="M 96,32 L 96,64" fill="none" stroke="black"/>
                  <path d="M 248,32 L 248,64" fill="none" stroke="black"/>
                  <path d="M 312,64 L 312,80" fill="none" stroke="black"/>
                  <path d="M 312,112 L 312,160" fill="none" stroke="black"/>
                  <path d="M 376,32 L 376,64" fill="none" stroke="black"/>
                  <path d="M 488,32 L 488,64" fill="none" stroke="black"/>
                  <path d="M 536,64 L 536,80" fill="none" stroke="black"/>
                  <path d="M 536,112 L 536,128" fill="none" stroke="black"/>
                  <path d="M 536,176 L 536,192" fill="none" stroke="black"/>
                  <path d="M 560,144 L 560,152" fill="none" stroke="black"/>
                  <path d="M 576,32 L 576,64" fill="none" stroke="black"/>
                  <path d="M 8,32 L 96,32" fill="none" stroke="black"/>
                  <path d="M 248,32 L 376,32" fill="none" stroke="black"/>
                  <path d="M 488,32 L 576,32" fill="none" stroke="black"/>
                  <path d="M 8,64 L 96,64" fill="none" stroke="black"/>
                  <path d="M 248,64 L 376,64" fill="none" stroke="black"/>
                  <path d="M 488,64 L 576,64" fill="none" stroke="black"/>
                  <path d="M 8,94 L 208,94" fill="none" stroke="black"/>
                  <path d="M 8,98 L 208,98" fill="none" stroke="black"/>
                  <path d="M 368,94 L 576,94" fill="none" stroke="black"/>
                  <path d="M 368,98 L 576,98" fill="none" stroke="black"/>
                  <path d="M 176,128 L 304,128" fill="none" stroke="black"/>
                  <path d="M 320,144 L 416,144" fill="none" stroke="black"/>
                  <path d="M 56,176 L 208,176" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="328,144 316,138.4 316,149.6 " fill="black" transform="rotate(180,320,144)"/>
                  <polygon class="arrowhead" points="312,128 300,122.4 300,133.6 " fill="black" transform="rotate(0,304,128)"/>
                  <polygon class="arrowhead" points="64,176 52,170.4 52,181.6 " fill="black" transform="rotate(180,56,176)"/>
                  <g class="text">
                    <text x="52" y="52">Attester</text>
                    <text x="284" y="52">PubSub</text>
                    <text x="340" y="52">Server</text>
                    <text x="532" y="52">Verifier</text>
                    <text x="240" y="100">[Handle</text>
                    <text x="320" y="100">Generation]</text>
                    <text x="48" y="116">|</text>
                    <text x="96" y="132">sub(topic=AttReq)</text>
                    <text x="492" y="148">pub(topic=AttReq</text>
                    <text x="536" y="164">handle)</text>
                    <text x="300" y="180">notify(topic=AttReq,</text>
                    <text x="416" y="180">handle)</text>
                    <text x="312" y="196">|</text>
                    <text x="48" y="212">~</text>
                    <text x="312" y="212">~</text>
                    <text x="536" y="212">~</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
.----------.                  .---------------.             .----------.
| Attester |                  | PubSub Server |             | Verifier |
'----+-----'                  '-------+-------'             '-----+----'
     |                                |                           |
==========================[Handle Generation]===========================
     |                                |                           |
   sub(topic=AttReq) ---------------->|                           |
     |                                |<------------ pub(topic=AttReq,
     |                                |                        handle)
     |<------------------- notify(topic=AttReq, handle)           |
     |                                |                           |
     ~                                ~                           ~
]]></artwork>
            </artset>
            <t>The <em>Challenge/Response Remote Attestation over Publish-Subscribe</em> interaction model uses the same information elements as the <em>Challenge/Response Remote Attestation</em> interaction model.
Handles are provided by a Verifier on a per-request basis.
In the sequence diagram above, an Attester subscribes to the "AttReq" (= Attestation Request) topic on the PubSub server.
The Verifier publishes a Handle to the "AttReq" topic, which the PubSub server forwards to the Attester by notifying it.</t>
          </section>
          <section anchor="handle-generation-for-uni-directional-remote-attestation-over-publish-subscribe">
            <name>Handle Generation for Uni-Directional Remote Attestation over Publish-Subscribe</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="432" width="584" viewBox="0 0 584 432" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                  <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
                  <path d="M 48,64 L 48,96" fill="none" stroke="black"/>
                  <path d="M 48,128 L 48,144" fill="none" stroke="black"/>
                  <path d="M 48,176 L 48,400" fill="none" stroke="black"/>
                  <path d="M 96,32 L 96,64" fill="none" stroke="black"/>
                  <path d="M 120,32 L 120,80" fill="none" stroke="black"/>
                  <path d="M 176,80 L 176,96" fill="none" stroke="black"/>
                  <path d="M 176,128 L 176,152" fill="none" stroke="black"/>
                  <path d="M 176,168 L 176,224" fill="none" stroke="black"/>
                  <path d="M 176,256 L 176,272" fill="none" stroke="black"/>
                  <path d="M 232,32 L 232,80" fill="none" stroke="black"/>
                  <path d="M 272,32 L 272,64" fill="none" stroke="black"/>
                  <path d="M 336,64 L 336,96" fill="none" stroke="black"/>
                  <path d="M 336,128 L 336,336" fill="none" stroke="black"/>
                  <path d="M 400,32 L 400,64" fill="none" stroke="black"/>
                  <path d="M 488,32 L 488,64" fill="none" stroke="black"/>
                  <path d="M 536,64 L 536,96" fill="none" stroke="black"/>
                  <path d="M 536,128 L 536,176" fill="none" stroke="black"/>
                  <path d="M 536,208 L 536,400" fill="none" stroke="black"/>
                  <path d="M 576,32 L 576,64" fill="none" stroke="black"/>
                  <path d="M 8,32 L 96,32" fill="none" stroke="black"/>
                  <path d="M 120,32 L 232,32" fill="none" stroke="black"/>
                  <path d="M 272,32 L 400,32" fill="none" stroke="black"/>
                  <path d="M 488,32 L 576,32" fill="none" stroke="black"/>
                  <path d="M 8,64 L 96,64" fill="none" stroke="black"/>
                  <path d="M 272,64 L 400,64" fill="none" stroke="black"/>
                  <path d="M 488,64 L 576,64" fill="none" stroke="black"/>
                  <path d="M 120,80 L 232,80" fill="none" stroke="black"/>
                  <path d="M 8,110 L 208,110" fill="none" stroke="black"/>
                  <path d="M 8,114 L 208,114" fill="none" stroke="black"/>
                  <path d="M 368,110 L 576,110" fill="none" stroke="black"/>
                  <path d="M 368,114 L 576,114" fill="none" stroke="black"/>
                  <path d="M 176,160 L 328,160" fill="none" stroke="black"/>
                  <path d="M 344,192 L 416,192" fill="none" stroke="black"/>
                  <path d="M 256,304 L 328,304" fill="none" stroke="black"/>
                  <path d="M 56,352 L 224,352" fill="none" stroke="black"/>
                  <path d="M 472,384 L 528,384" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="536,384 524,378.4 524,389.6 " fill="black" transform="rotate(0,528,384)"/>
                  <polygon class="arrowhead" points="352,192 340,186.4 340,197.6 " fill="black" transform="rotate(180,344,192)"/>
                  <polygon class="arrowhead" points="336,304 324,298.4 324,309.6 " fill="black" transform="rotate(0,328,304)"/>
                  <polygon class="arrowhead" points="336,160 324,154.4 324,165.6 " fill="black" transform="rotate(0,328,160)"/>
                  <polygon class="arrowhead" points="64,352 52,346.4 52,357.6 " fill="black" transform="rotate(180,56,352)"/>
                  <g class="text">
                    <text x="52" y="52">Attester</text>
                    <text x="172" y="52">Handle</text>
                    <text x="308" y="52">PubSub</text>
                    <text x="364" y="52">Server</text>
                    <text x="532" y="52">Verifier</text>
                    <text x="176" y="68">Distributor</text>
                    <text x="240" y="116">[Handle</text>
                    <text x="320" y="116">Generation]</text>
                    <text x="96" y="164">sub(topic=Handle)</text>
                    <text x="496" y="196">sub(topic=Handle)</text>
                    <text x="204" y="244">generateHandle()</text>
                    <text x="196" y="260">=&gt;</text>
                    <text x="236" y="260">handle</text>
                    <text x="224" y="292">pub(topic=Handle,</text>
                    <text x="176" y="308">|</text>
                    <text x="216" y="308">handle)</text>
                    <text x="176" y="324">x</text>
                    <text x="316" y="356">notify(topic=Handle,</text>
                    <text x="432" y="356">handle)</text>
                    <text x="336" y="372">|</text>
                    <text x="316" y="388">notify(topic=Handle,</text>
                    <text x="432" y="388">handle)</text>
                    <text x="336" y="404">|</text>
                    <text x="48" y="420">~</text>
                    <text x="336" y="420">~</text>
                    <text x="536" y="420">~</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
.----------.  .-------------.    .---------------.          .----------.
| Attester |  |   Handle    |    | PubSub Server |          | Verifier |
'----+-----'  | Distributor |    '-------+-------'          '-----+----'
     |        '------+------'            |                        |
     |               |                   |                        |
==========================[Handle Generation]===========================
     |               |                   |                        |
     |               |                   |                        |
   sub(topic=Handle) ------------------->|                        |
     |               |                   |                        |
     |               |                   |<--------- sub(topic=Handle)
     |               |                   |                        |
     |               |                   |                        |
     |           generateHandle()        |                        |
     |               | => handle         |                        |
     |               |                   |                        |
     |             pub(topic=Handle,     |                        |
     |               | handle) --------->|                        |
     |               x                   |                        |
     |                                   |                        |
     |<--------------------- notify(topic=Handle, handle)         |
     |                                   |                        |
     |                       notify(topic=Handle, handle) ------->|
     |                                   |                        |
     ~                                   ~                        ~
]]></artwork>
            </artset>
            <t>The <em>Uni-Directional Remote Attestation over Publish-Subscribe</em> model uses the same information elements as the Uni-Directional Remote Attestation model.
Accordingly, Handles are created by a 3rd party, the Handle Distributor.
In the sequence diagram above, both an Attester and a Verifier subscribe to the topic "Handle" on the PubSub server.
When the Handle Distributor generates and publishes a Handle to the "Handle" topic on the PubSub server, the PubSub server notifies the subscribers, Attester and Verifier, and forwards ("notify") the Handle to them during Handle Generation.</t>
          </section>
          <section anchor="evidence-generation-and-appraisal">
            <name>Evidence Generation and Appraisal</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="752" width="584" viewBox="0 0 584 752" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                  <path d="M 8,64 L 8,96" fill="none" stroke="black"/>
                  <path d="M 8,176 L 8,688" fill="none" stroke="black"/>
                  <path d="M 48,48 L 48,64" fill="none" stroke="black"/>
                  <path d="M 48,96 L 48,152" fill="none" stroke="black"/>
                  <path d="M 48,240 L 48,256" fill="none" stroke="black"/>
                  <path d="M 48,288 L 48,304" fill="none" stroke="black"/>
                  <path d="M 48,336 L 48,368" fill="none" stroke="black"/>
                  <path d="M 48,400 L 48,480" fill="none" stroke="black"/>
                  <path d="M 48,512 L 48,608" fill="none" stroke="black"/>
                  <path d="M 48,640 L 48,696" fill="none" stroke="black"/>
                  <path d="M 96,64 L 96,96" fill="none" stroke="black"/>
                  <path d="M 272,64 L 272,96" fill="none" stroke="black"/>
                  <path d="M 336,48 L 336,64" fill="none" stroke="black"/>
                  <path d="M 336,96 L 336,152" fill="none" stroke="black"/>
                  <path d="M 336,208 L 336,416" fill="none" stroke="black"/>
                  <path d="M 336,448 L 336,480" fill="none" stroke="black"/>
                  <path d="M 336,512 L 336,608" fill="none" stroke="black"/>
                  <path d="M 336,640 L 336,696" fill="none" stroke="black"/>
                  <path d="M 400,64 L 400,96" fill="none" stroke="black"/>
                  <path d="M 488,64 L 488,96" fill="none" stroke="black"/>
                  <path d="M 536,48 L 536,64" fill="none" stroke="black"/>
                  <path d="M 536,96 L 536,112" fill="none" stroke="black"/>
                  <path d="M 536,208 L 536,480" fill="none" stroke="black"/>
                  <path d="M 536,592 L 536,608" fill="none" stroke="black"/>
                  <path d="M 560,560 L 560,568" fill="none" stroke="black"/>
                  <path d="M 560,656 L 560,664" fill="none" stroke="black"/>
                  <path d="M 576,64 L 576,96" fill="none" stroke="black"/>
                  <path d="M 576,176 L 576,688" fill="none" stroke="black"/>
                  <path d="M 8,64 L 96,64" fill="none" stroke="black"/>
                  <path d="M 272,64 L 400,64" fill="none" stroke="black"/>
                  <path d="M 488,64 L 576,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 96,96" fill="none" stroke="black"/>
                  <path d="M 272,96 L 400,96" fill="none" stroke="black"/>
                  <path d="M 488,96 L 576,96" fill="none" stroke="black"/>
                  <path d="M 344,128 L 424,128" fill="none" stroke="black"/>
                  <path d="M 24,160 L 80,160" fill="none" stroke="black"/>
                  <path d="M 136,160 L 560,160" fill="none" stroke="black"/>
                  <path d="M 24,190 L 136,190" fill="none" stroke="black"/>
                  <path d="M 24,194 L 136,194" fill="none" stroke="black"/>
                  <path d="M 432,190 L 560,190" fill="none" stroke="black"/>
                  <path d="M 432,194 L 560,194" fill="none" stroke="black"/>
                  <path d="M 232,400 L 328,400" fill="none" stroke="black"/>
                  <path d="M 448,464 L 528,464" fill="none" stroke="black"/>
                  <path d="M 24,494 L 208,494" fill="none" stroke="black"/>
                  <path d="M 24,498 L 208,498" fill="none" stroke="black"/>
                  <path d="M 376,494 L 560,494" fill="none" stroke="black"/>
                  <path d="M 376,498 L 560,498" fill="none" stroke="black"/>
                  <path d="M 24,622 L 160,622" fill="none" stroke="black"/>
                  <path d="M 24,626 L 160,626" fill="none" stroke="black"/>
                  <path d="M 416,622 L 560,622" fill="none" stroke="black"/>
                  <path d="M 416,626 L 560,626" fill="none" stroke="black"/>
                  <path d="M 344,656 L 416,656" fill="none" stroke="black"/>
                  <path d="M 24,704 L 560,704" fill="none" stroke="black"/>
                  <path d="M 24,160 C 15.16936,160 8,167.16936 8,176" fill="none" stroke="black"/>
                  <path d="M 560,160 C 568.83064,160 576,167.16936 576,176" fill="none" stroke="black"/>
                  <path d="M 24,704 C 15.16936,704 8,696.83064 8,688" fill="none" stroke="black"/>
                  <path d="M 560,704 C 568.83064,704 576,696.83064 576,688" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="536,464 524,458.4 524,469.6 " fill="black" transform="rotate(0,528,464)"/>
                  <polygon class="arrowhead" points="352,656 340,650.4 340,661.6 " fill="black" transform="rotate(180,344,656)"/>
                  <polygon class="arrowhead" points="352,128 340,122.4 340,133.6 " fill="black" transform="rotate(180,344,128)"/>
                  <polygon class="arrowhead" points="336,400 324,394.4 324,405.6 " fill="black" transform="rotate(0,328,400)"/>
                  <g class="text">
                    <text x="48" y="36">~</text>
                    <text x="336" y="36">~</text>
                    <text x="536" y="36">~</text>
                    <text x="52" y="84">Attester</text>
                    <text x="308" y="84">PubSub</text>
                    <text x="364" y="84">Server</text>
                    <text x="532" y="84">Verifier</text>
                    <text x="500" y="132">sub(topic=AttEv)</text>
                    <text x="536" y="148">|</text>
                    <text x="108" y="164">[loop]</text>
                    <text x="48" y="180">|</text>
                    <text x="336" y="180">|</text>
                    <text x="536" y="180">|</text>
                    <text x="176" y="196">[Evidence</text>
                    <text x="260" y="196">Generation</text>
                    <text x="320" y="196">and</text>
                    <text x="384" y="196">Conveyance]</text>
                    <text x="48" y="212">|</text>
                    <text x="164" y="228">generateClaims(attestingEnvironment)</text>
                    <text x="68" y="244">=&gt;</text>
                    <text x="112" y="244">claims,</text>
                    <text x="184" y="244">eventLogs</text>
                    <text x="104" y="276">collectClaims(claims,</text>
                    <text x="256" y="276">claimSelection)</text>
                    <text x="68" y="292">=&gt;</text>
                    <text x="144" y="292">collectedClaims</text>
                    <text x="116" y="324">generateEvidence(handle,</text>
                    <text x="264" y="324">authSecIDs,</text>
                    <text x="220" y="340">collectedClaims)</text>
                    <text x="68" y="356">=&gt;</text>
                    <text x="116" y="356">evidence</text>
                    <text x="92" y="388">pub(topic=AttEv,</text>
                    <text x="96" y="404">evidence,</text>
                    <text x="180" y="404">eventLogs)</text>
                    <text x="376" y="436">notify(topic=AttEv,</text>
                    <text x="392" y="452">evidence,</text>
                    <text x="396" y="468">eventLogs)</text>
                    <text x="248" y="500">[Evidence</text>
                    <text x="332" y="500">Appraisal]</text>
                    <text x="536" y="516">|</text>
                    <text x="496" y="532">appraiseEvidence(</text>
                    <text x="528" y="548">evidence,</text>
                    <text x="520" y="564">eventLogs</text>
                    <text x="524" y="580">refValues)</text>
                    <text x="432" y="596">attestationResult</text>
                    <text x="516" y="596">&lt;=</text>
                    <text x="212" y="628">[Attestation</text>
                    <text x="292" y="628">Result</text>
                    <text x="368" y="628">Generation]</text>
                    <text x="536" y="644">|</text>
                    <text x="492" y="660">pub(topic=AttRes</text>
                    <text x="492" y="676">attestationResult)</text>
                    <text x="536" y="692">|</text>
                    <text x="48" y="724">|</text>
                    <text x="336" y="724">|</text>
                    <text x="536" y="724">|</text>
                    <text x="48" y="740">~</text>
                    <text x="336" y="740">~</text>
                    <text x="536" y="740">~</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
     ~                                   ~                        ~
     |                                   |                        |
.----+-----.                     .-------+-------.          .-----+----.
| Attester |                     | PubSub Server |          | Verifier |
'----+-----'                     '-------+-------'          '-----+----'
     |                                   |                        |
     |                                   |<---------- sub(topic=AttEv)
     |                                   |                        |
 .--------[loop]------------------------------------------------------.
|    |                                   |                        |    |
| ===============[Evidence Generation and Conveyance]================= |
|    |                                   |                        |    |
| generateClaims(attestingEnvironment)   |                        |    |
|    | => claims, eventLogs              |                        |    |
|    |                                   |                        |    |
| collectClaims(claims, claimSelection)  |                        |    |
|    | => collectedClaims                |                        |    |
|    |                                   |                        |    |
| generateEvidence(handle, authSecIDs,   |                        |    |
|    |             collectedClaims)      |                        |    |
|    | => evidence                       |                        |    |
|    |                                   |                        |    |
|  pub(topic=AttEv,                      |                        |    |
|    | evidence, eventLogs) ------------>|                        |    |
|    |                                   |                        |    |
|    |                               notify(topic=AttEv,          |    |
|    |                                   |  evidence,             |    |
|    |                                   |  eventLogs) ---------->|    |
|    |                                   |                        |    |
| ========================[Evidence Appraisal]======================== |
|    |                                   |                        |    |
|    |                                   |           appraiseEvidence( |
|    |                                   |                   evidence, |
|    |                                   |                  eventLogs, |
|    |                                   |                  refValues) |
|    |                                   |   attestationResult <= |    |
|    |                                   |                        |    |
| ==================[Attestation Result Generation]=================== |
|    |                                   |                        |    |
|    |                                   |<--------- pub(topic=AttRes, |
|    |                                   |          attestationResult) |
|    |                                   |                        |    |
 '--------------------------------------------------------------------'
     |                                   |                        |
     ~                                   ~                        ~
]]></artwork>
            </artset>
            <t>Exactly as in the Challenge/Response and Uni-Directional interaction models, there is an Evidence Generation-Appraisal loop, in which the Attester generates Evidence and the Verifier appraises it.
In the Publish-Subscribe model above, the Attester publishes Evidence to the topic "AttEv" (= Attestation Evidence) on the PubSub server, to which a Verifier subscribed before.
The PubSub server notifies Verifiers, accordingly, by forwarding the attestation Evidence.
Although the above diagram depicts only full attestation Evidence and Event Logs, later attestations may use "deltas' for Evidence and Event Logs.
Verifiers appraise the Evidence and publish the Attestation Result to topic "AttRes" (= Attestation Result) on the PubSub server.</t>
          </section>
          <section anchor="attestation-result-generation">
            <name>Attestation Result Generation</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="384" width="584" viewBox="0 0 584 384" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                  <path d="M 8,64 L 8,96" fill="none" stroke="black"/>
                  <path d="M 8,224 L 8,320" fill="none" stroke="black"/>
                  <path d="M 48,48 L 48,64" fill="none" stroke="black"/>
                  <path d="M 48,96 L 48,112" fill="none" stroke="black"/>
                  <path d="M 48,144 L 48,200" fill="none" stroke="black"/>
                  <path d="M 48,216 L 48,328" fill="none" stroke="black"/>
                  <path d="M 96,64 L 96,96" fill="none" stroke="black"/>
                  <path d="M 112,64 L 112,96" fill="none" stroke="black"/>
                  <path d="M 136,48 L 136,64" fill="none" stroke="black"/>
                  <path d="M 136,96 L 136,112" fill="none" stroke="black"/>
                  <path d="M 136,216 L 136,328" fill="none" stroke="black"/>
                  <path d="M 240,64 L 240,96" fill="none" stroke="black"/>
                  <path d="M 272,64 L 272,96" fill="none" stroke="black"/>
                  <path d="M 336,48 L 336,64" fill="none" stroke="black"/>
                  <path d="M 336,96 L 336,112" fill="none" stroke="black"/>
                  <path d="M 336,144 L 336,200" fill="none" stroke="black"/>
                  <path d="M 336,216 L 336,272" fill="none" stroke="black"/>
                  <path d="M 336,304 L 336,328" fill="none" stroke="black"/>
                  <path d="M 400,64 L 400,96" fill="none" stroke="black"/>
                  <path d="M 488,64 L 488,96" fill="none" stroke="black"/>
                  <path d="M 536,48 L 536,64" fill="none" stroke="black"/>
                  <path d="M 536,96 L 536,112" fill="none" stroke="black"/>
                  <path d="M 536,144 L 536,200" fill="none" stroke="black"/>
                  <path d="M 536,272 L 536,328" fill="none" stroke="black"/>
                  <path d="M 560,240 L 560,248" fill="none" stroke="black"/>
                  <path d="M 576,64 L 576,96" fill="none" stroke="black"/>
                  <path d="M 576,224 L 576,320" fill="none" stroke="black"/>
                  <path d="M 8,64 L 96,64" fill="none" stroke="black"/>
                  <path d="M 112,64 L 240,64" fill="none" stroke="black"/>
                  <path d="M 272,64 L 400,64" fill="none" stroke="black"/>
                  <path d="M 488,64 L 576,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 96,96" fill="none" stroke="black"/>
                  <path d="M 112,96 L 240,96" fill="none" stroke="black"/>
                  <path d="M 272,96 L 400,96" fill="none" stroke="black"/>
                  <path d="M 488,96 L 576,96" fill="none" stroke="black"/>
                  <path d="M 8,126 L 160,126" fill="none" stroke="black"/>
                  <path d="M 8,130 L 160,130" fill="none" stroke="black"/>
                  <path d="M 416,126 L 576,126" fill="none" stroke="black"/>
                  <path d="M 416,130 L 576,130" fill="none" stroke="black"/>
                  <path d="M 192,176 L 328,176" fill="none" stroke="black"/>
                  <path d="M 24,208 L 80,208" fill="none" stroke="black"/>
                  <path d="M 136,208 L 560,208" fill="none" stroke="black"/>
                  <path d="M 344,240 L 416,240" fill="none" stroke="black"/>
                  <path d="M 144,288 L 280,288" fill="none" stroke="black"/>
                  <path d="M 24,336 L 560,336" fill="none" stroke="black"/>
                  <path d="M 24,208 C 15.16936,208 8,215.16936 8,224" fill="none" stroke="black"/>
                  <path d="M 560,208 C 568.83064,208 576,215.16936 576,224" fill="none" stroke="black"/>
                  <path d="M 24,336 C 15.16936,336 8,328.83064 8,320" fill="none" stroke="black"/>
                  <path d="M 560,336 C 568.83064,336 576,328.83064 576,320" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="352,240 340,234.4 340,245.6 " fill="black" transform="rotate(180,344,240)"/>
                  <polygon class="arrowhead" points="336,176 324,170.4 324,181.6 " fill="black" transform="rotate(0,328,176)"/>
                  <polygon class="arrowhead" points="152,288 140,282.4 140,293.6 " fill="black" transform="rotate(180,144,288)"/>
                  <g class="text">
                    <text x="48" y="36">~</text>
                    <text x="136" y="36">~</text>
                    <text x="336" y="36">~</text>
                    <text x="536" y="36">~</text>
                    <text x="52" y="84">Attester</text>
                    <text x="152" y="84">Relying</text>
                    <text x="208" y="84">Party</text>
                    <text x="308" y="84">PubSub</text>
                    <text x="364" y="84">Server</text>
                    <text x="532" y="84">Verifier</text>
                    <text x="212" y="132">[Attestation</text>
                    <text x="292" y="132">Result</text>
                    <text x="368" y="132">Generation]</text>
                    <text x="136" y="148">|</text>
                    <text x="160" y="164">sub(topic=AttRes)</text>
                    <text x="152" y="180">handle)</text>
                    <text x="136" y="196">|</text>
                    <text x="108" y="212">[loop]</text>
                    <text x="536" y="228">|</text>
                    <text x="492" y="244">pub(topic=AttRes</text>
                    <text x="492" y="260">attestationResult)</text>
                    <text x="368" y="292">notify(topic=AttRes</text>
                    <text x="420" y="308">attestationResult)</text>
                    <text x="48" y="356">|</text>
                    <text x="136" y="356">|</text>
                    <text x="336" y="356">|</text>
                    <text x="536" y="356">|</text>
                    <text x="48" y="372">~</text>
                    <text x="136" y="372">~</text>
                    <text x="336" y="372">~</text>
                    <text x="536" y="372">~</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
     ~          ~                        ~                        ~
     |          |                        |                        |
.----+-----. .--+------------.   .-------+-------.          .-----+----.
| Attester | | Relying Party |   | PubSub Server |          | Verifier |
'----+-----' '--+------------'   '-------+-------'          '-----+----'
     |          |                        |                        |
====================[Attestation Result Generation]=====================
     |          |                        |                        |
     |     sub(topic=AttRes)             |                        |
     |         handle) ----------------->|                        |
     |          |                        |                        |
 .--------[loop]------------------------------------------------------.
|    |          |                        |                        |    |
|    |          |                        |<--------- pub(topic=AttRes, |
|    |          |                        |          attestationResult) |
|    |          |                        |                        |    |
|    |          |<----------------- notify(topic=AttRes           |    |
|    |          |                        | attestationResult)     |    |
|    |          |                        |                        |    |
 '--------------------------------------------------------------------'
     |          |                        |                        |
     ~          ~                        ~                        ~
]]></artwork>
            </artset>
            <t>Attestation Result Generation is the same for both publish-subscribe models,<em>Challenge/Response Remote Attestation over Publish-Subscribe</em> and <em>Uni-Directional Remote Attestation over Publish-Subscribe</em>.
Relying Parties subscribe to topic <tt>AttRes</tt> (= Attestation Result) on the PubSub server.
The PubSub server forwards Attestation Results to the Relying Parties as soon as they are published to topic <tt>AttRes</tt>.</t>
          </section>
          <section anchor="publishsubscribe-topics">
            <name>Publish/Subscribe Topics</name>
            <t>Many publish-subscribe models provide hierarchical organization of topics.
This way, subscribers can subscribe to either all attestations (topic <tt>AttRes</tt>), or, for example, to topic <tt>AttRes/DbServers/Germany</tt> to receive only attestations from database servers in Germany.
Further, it may be required to distinguish between uni-directional and challenge-response attestation evidence.
<!--For this purpose a wildcard subscription may be useful, for example `AttRes/DbServers/Germany/\*\*/uni` (to receive only uni-directional attestation evidence) or `AttRes/DbServers/Germany/\*\*/cr` (to receive only challenge-response attestation Evidence).-->
            </t>
          </section>
        </section>
      </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: <eref target="https://github.com/fraunhofer-sit/charra">https://github.com/fraunhofer-sit/charra</eref></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 ('6194b3b') 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 project resources (code and data) for Linux-based operating systems are maintained on GitHub at <eref target="https://github.com/tpm2-software/tpm2-tss/">https://github.com/tpm2-software/tpm2-tss/</eref>.</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"/>
            <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"/>
            <author fullname="P. Cain" initials="P." surname="Cain"/>
            <author fullname="D. Pinkas" initials="D." surname="Pinkas"/>
            <author fullname="R. Zuccherato" initials="R." surname="Zuccherato"/>
            <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"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <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"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <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"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <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"/>
            <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"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <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"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <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>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <seriesInfo name="DOI" value="10.17487/RFC9334"/>
            <seriesInfo name="RFC" value="9334"/>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <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>
        <reference anchor="TNC">
          <front>
            <title>TCG Trusted Network Communications TNC Architecture for Interoperability</title>
            <seriesInfo name="Specification" value="Version 2.0 Revision 13"/>
            <author initials="" surname="TCG" fullname="Trusted Computing Group">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="MQTT">
          <front>
            <title>Message Queuing Telemetry Transport (MQTT) Version 5.0 Committee Specification 02</title>
            <seriesInfo name="Specification" value="Version 5.0"/>
            <author initials="" surname="OASIS" fullname="Organization for the Advancement of Structured Information Standards">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="DesignPatterns">
          <front>
            <title>Design Patterns - Elements of Reusable Object-Oriented Software</title>
            <seriesInfo name="Publisher" value="Addison-Wesley"/>
            <author initials="E." surname="Gamma" fullname="Erich Gamma">
              <organization/>
            </author>
            <author initials="R." surname="Helm" fullname="Richard Helm">
              <organization/>
            </author>
            <author initials="R." surname="Johnson" fullname="Ralph Johnson">
              <organization/>
            </author>
            <author initials="J." surname="Vlissides" fullname="John Vlissides">
              <organization/>
            </author>
            <date year="1994"/>
          </front>
        </reference>
        <reference anchor="ISIS">
          <front>
            <title>Exploiting Virtual Synchrony in Distributed Systems</title>
            <seriesInfo name="DOI" value="10.1145/41457.37515"/>
            <author initials="K." surname="Birman" fullname="Ken Paul Birman">
              <organization/>
            </author>
            <author initials="T." surname="Joseph" fullname="Thomas A. Joseph">
              <organization/>
            </author>
            <date year="1987"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 903?>

<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 communication protocol used is CoAP.
Both the request 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">
charra-bodies = charra-attestation-request / charra-attestation-response

charra-attestation-request = [
    hello: bool,    ; if true, the TPM 2.0 AK Cert shall be conveyed
    key-id: bytes,  ; the key ID to use for signing
    nonce: bytes,   ; a (random) nonce, providing freshness and/or recentness
    pcr-selections: [ * pcr-selection ]
]

pcr-selection = [
    tcg-hash-alg-id: uint .size 2,  ; TPM2_ALG_ID
    pcrs: [
        pcr: uint .size 2
    ]
]

charra-attestation-response = [
    attestation-data: bytes,  ; TPMS_ATTEST.quoted
    tpm2-signature: bytes,
    ? ak-cert: bytes,         ; TPM2 attestation key certificate (AK Cert)
]
</sourcecode>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAEVC5mUAA+1963obx7HgfzxFH/qHCAYAdY1jbuwTiKQkJqLEkJCdbE6+
ZAA0gDkazCBzIYXIyrPss+yTbV36OtMDAhRlZ3fN70ssADPd1dXVda/qfr/f
KeMykUfiUs5kLtOJFGdpKfNoUsZZKs6zqUwKMctyeGCZlVIMy1IWZUS/XuTZ
RE6rXBadaDzO5TUMc3p23plmkzRawqDTPJqV/ViWs34elUU/15P0YztJf0mT
9B9+07mZwwjD0ZX4Icvfx+lcvMyzatWB+dLp36IkS2HMMq9kJ17l9K+ifPzw
4TcPH3eiXEZH4kpOqjwu1533N0e8jlSW/ROEojOJyiMRp7Oss4qPOkKU2eRI
rAF0IYosLwG0wnxeL+3HTlSViyw/6vThbfju1UA8j/P3iyz5JzzK63wl0/fu
t1kOC3mRR1W6yGDF4upsBN9qHDV+kMsoTo7EAkYZjNUov0OsDSZZWgKWECaA
UMIKLhcSwCjzqCik+PoZ/DIB9B2JB79++vibZw/wMyDgSJxE+RLwNi3piSot
c/jypcyXUbrWSzkfiNPJe5mYdZzHk0UkE/Pt3dax5FEGEkf5XRGXg5l5cjCV
X2gxPwzERZSapfwgY/WZFvGqim7gm5GcLNIsyeYxbbQC+CZOkjhaDlZRCg/9
bkHPAu6XeuzTgfg+i0sz+GkeT/Q3NPxxXEwycbUuSrksHBTR93YieQ3v/G6C
X9LwnTSDNZTxtUSKvHxx/PjRo2/UP588+vWjIzG6GvLHZ49/8/BI/OkZnBL6
/PXDp9/A+M/fXqrPj589hs9vhxf8+TePvn6KIz0/vnj88NkRPfLN08fqx18/
gsGOT05e8+dvnjx5yiev08Ej4gB11j8Z2ANcrpb9cVTIaR8O1g0c0v5UXsdw
niNiCzDG2ffqJU3I6sVqCudz9O4El3MyHOLQcAaZ95zEuZyUYphm6XqZVYXL
ZOg5fQTx33ZLnsMuAIUl9LXdmjSW/k/qjd8PxDE8kgL2F94rv4/S2i/qjdfw
BhxK7+HX8T+q1H5dyBxICXF2pB4bHp8fie/UB8E8Uk6BmRUim4lyIcWjR+UC
HwNSTjXTBW56nC1XFbAsAcwOPyyrNJ4QDgrL2HjQVTQHUB49edx/9PQZfTeN
SvgGmOFTZG1VDngtPBzvjfhLMUwSguKHaC1OspsUzjGcqClN1BOn03gG+9kj
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
PvKc+4ps6r4fM0pMb0YJeiwAX8toTebbBITlNb+1lFGqTuo0nqNOLNBwjchN
Q9b9sNUDYh9UAxfrJQZE4kmPT1pElsur8+Exseoo8Pvp8cnVEDA+rABFyJ05
DoELHdU8oe5iPaVNrzbSYwzEC1Jigbmsqhydkj3/DSWrIzspTFXCSZ9pm9YY
1D7mQL0CVh9P4tJ9GaHbCpcWCB+fPbX7RpdXlCGi6TRmD7Rx6gKHkCuWfYH9
ZC4cURCUpRC8inp4CofIhRGmzdcrJTzAznHMWqsq1NWoTuf7OEJMtfze86iQ
TDDtnyysUs+uThylaQEjZ5jhy2NJC2Fbmpnk2PUDkw+9+b7CCQh9ZKapvAlD
iuwB3UtzOqcKRnrG+FkAvzOWqWEwrYoAhl4CdlvBTAmIOqDjDTohxW8REUeC
j2CekLaIFIYKG+xaEPABnH/mIJatAPdDmkH0qGh0pKLRN4CMKRq3Hz+qn1DB
G5YMKYi592KclWW2bNFM3WPTUKlZIMIUhTbbLrOMJQtp0WL/Mht1kdNbklCg
aqII0QSCCy8WSK3sRYMh2KxOCzgWvPLIsfH4rBSOrx3BV2xVxxBilP5j5Thq
WRH71hwLrMiqnCRilPoMhJkFm+d+GCYMRG5NW9chRn4BUGriFJFB04NMlTlF
nOxIvl2NViMZjcq/rwwBNXDOpg5y2NUKzh9QeZyaEbok3N7oVBRxkUtCH9qv
LdIt3ULAiWtkC0GdQYW5emEP3sqd3xFbAk7UhFxCuAyMrJNWYkwCbdE05zyq
yxK0pnJZkkhBUgz9aEXIdRQnjPMPoMsXgCPAISo2aQsj8a2wgRZcvnBSBqsO
+Ci7EPYyCI0612Nl5yut2sgbtCu0G4XHU3YHKT3WgiIwNq7WWCcoO+QMvQ/k
skB1iqiMdgGls17NmTJsGJuWxHX4SqlUc9jRBaHRvLkEs1mpKZpSDbJwmTJt
EBWhCY8Woo58WeHR61uil0cHc8KBgSplLx4onANNCfVFifPhn5WUD+ONhTTy
+DYyAV1Y700Lj6nTy1lppgUgY+Bvxnrs6V/c/Y3EP2We9d+n2Q2wkzkhD8bc
/59/uOiaF7S7KxJzzIyxagipDbEzZQ7IyZbxP2Hwk+EQ7TCtNHz8CF+QPyCk
sVgMGWoIPdVUzViFtWxGWz60DEaPM3IvPKxyQuMeoxKTgY67WihPmONhNRJV
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

-->

</rfc>
