<?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.7.19 (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-15" category="info" submissionType="IETF" 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-15"/>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="M." surname="Eckel" fullname="Michael Eckel">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>michael.eckel@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="W." surname="Pan" fullname="Wei Pan">
      <organization>Huawei Technologies</organization>
      <address>
        <email>william.panwei@huawei.com</email>
      </address>
    </author>
    <author initials="E." surname="Voit" fullname="Eric Voit">
      <organization abbrev="Cisco">Cisco Systems</organization>
      <address>
        <email>evoit@cisco.com</email>
      </address>
    </author>
    <date year="2025" month="November" day="05"/>
    <area>Security</area>
    <workgroup>RATS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 127?>

<t>This document describes interaction models for remote attestation procedures (RATS) <xref target="RFC9334"/>.
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 133?>

<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 produced based on Endorsements, Reference Values, Appraisal 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 illustrates three main interaction models between various RATS roles, namely Attesters, Verifiers, and Relying Parties that can be used in specific RATS-related specifications.
 Using Evidence as a prominent example, these three interaction models are:</t>
      <ol spacing="normal" type="1">
        <li>
          <em>Challenge/Response Remote Attestation</em>:
A Verifier actively challenges an Attester and receives time-fresh Evidence in response.</li>
        <li>
          <em>Uni-Directional Remote Attestation</em>:
An Attester sends Evidence proactively to a Verifier, often using externally generated freshness indicators.</li>
        <li>
          <em>Streaming Remote Attestation</em>:
A persistent subscription-based model where Evidence is pushed continuously to interested Verifiers, optionally via a Broker.</li>
      </ol>
      <t>As a basis to describe the interaction models is this document, the example of attestation Evidence conveyance is used to illustrate the usage scenarios.
This document aims to:</t>
      <ol spacing="normal" type="1">
        <li>prevent inconsistencies in descriptions of interaction models in other documents, which may occur due to text cloning and evolution over time, and to</li>
        <li>highlight the exact delta/divergence between the core characteristics captured 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 (see Section <xref target="cryptographic-blinding"/>) conveyance methods for RATS Conceptual Messages; specifically attestation Evidence conveyed from an Attester to a Verifier.
While the exact details for conveyance of other Conceptual Messages is out of scope, the models described in this document may be adapted to apply to the conveyance of other Conceptual Messages, such as Endorsements or Attestation Results, or supplemental messages, such as Epoch Markers <xref target="I-D.ietf-rats-epoch-markers"/> or stand-alone event logs.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>This document uses the following terms defined in <xref section="4" sectionFormat="of" 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 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>"Remote Attestation" is a common expression often associated or connoted with certain properties.
In the context of this document, the term "Remote" 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 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), or the Verifier and Relying Party roles are hosted by the same entity, for example in a cryptographic key Broker system (see <xref section="6" sectionFormat="of" target="RFC9334"/> for more details).
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)).</t>
      </section>
      <section anchor="boot-time-integrity">
        <name>Boot Time Integrity</name>
        <t>Boot time integrity refers to the trustworthiness of the platform during its boot sequence, typically covering firmware, BIOS/UEFI, initial bootloaders, and core operating system components up until a stable runtime environment is reached.
This may apply equally to physical devices and virtual machines.</t>
      </section>
      <section anchor="runtime-integrity">
        <name>Runtime Integrity</name>
        <t>Runtime integrity refers to the ongoing trustworthiness of a platform during normal operation, after the boot sequence completes.
It encompasses the integrity of dynamic system state, including loaded applications, kernel modules, and active configurations.</t>
      </section>
      <section anchor="boot-to-runtime-boundary">
        <name>Boot-to-Runtime Boundary</name>
        <t>The exact boundary between boot time and runtime may vary between systems.
Generally, it is marked by the handoff from the final bootloader or initial OS kernel to a fully operational environment capable of executing arbitrary applications or services.</t>
      </section>
    </section>
    <section anchor="scope-and-intent">
      <name>Scope and Intent</name>
      <t>This document:</t>
      <ul spacing="normal">
        <li>outlines common interaction models between RATS roles;</li>
        <li>illustrates interaction models using the conveyance of Evidence about boot-time integrity as an example throughout this document;</li>
        <li>does not exclude the application of those interaction models to runtime integrity or the conveyance of other RATS Conceptual Messages;</li>
        <li>does not cover every detail about Evidence conveyance.</li>
      </ul>
      <t>While details regarding Evidence of runtime integrity are not explicitly highlighted, the provided model descriptions serve as a foundation for developing corresponding model extensions.
While the interaction models described in this document, including their variants, cover many relevant conveyance models for Conceptual Messages implemented on the Internet, they do not represent an exhaustive list of all possible models.</t>
      <t>Procedures, functions, and services needed for a complete semantic binding of the concepts defined in <xref target="RFC9334"/> are not covered in this document.
Examples of such procedures include: identity establishment, key distribution and enrollment, time synchronization, and certificate revocation.</t>
      <t>Furthermore, any processes and duties beyond conducting remote attestation procedures are out of scope.
For example, utilizing the results of a remote attestation procedure generated by the Verifier, such as triggering remediation actions or recovery processes, as well as the remediation actions and recovery processes themselves, are also out of scope.</t>
      <t>The interaction models described in this document are meant to serve as a solid foundation and reference for other solution documents within or outside the IETF.
Solution documents of any kind can refer to these interaction models to prevent duplicating text and to avoid the risk of subtle discrepancies.
Similarly, deviations from the generic model described in this document can be illustrated in solution documents to highlight distinct contributions.</t>
    </section>
    <section anchor="essential-requirements">
      <name>Essential Requirements</name>
      <t>In order to ensure appropriate conveyance of Evidence, the following requirements MUST be fulfilled:</t>
      <dl>
        <dt>Integrity:</dt>
        <dd>
          <t>Information provided by an Attester MUST NOT have been altered since it was created. This may be achieved via symmetric cryptography, e.g., using COSE Mac0 as in PSA TF-M profile (<xref section="5.2" sectionFormat="of" target="RFC9783"/>), or asymmetric, such as a COSE Sign algorithm like ECDSA.</t>
        </dd>
        <dt>Authentication:</dt>
        <dd>
          <t>The information provided by the Attester MUST be authentic. To do this, the Attester should authenticate itself to the Verifier. This can be done through authentication using a digital signature over the Attestation Evidence, which does not require additional protocol steps, or by using a secure channel (see Sections 3 and 4 of <xref target="RFC9781"/>) that includes authentication.</t>
        </dd>
      </dl>
    </section>
    <section anchor="normative-prerequisites">
      <name>Normative Prerequisites</name>
      <t>In order to ensure Evidence is appropriately conveyed through the interaction models described in this document, the following prerequisites MUST be in place to support their implementation:</t>
      <dl>
        <dt>Authentication Secret:</dt>
        <dd>
          <t>An Authentication Secret MUST be established before any RATS interaction takes place, and it must be made available exclusively to an Attesting Environment of the Attester.</t>
        </dd>
        <dt/>
        <dd>
          <t>The Attester MUST protect Claims with this Authentication Secret to prove the authenticity of the Claims included in Evidence.
The Authentication Secret MUST be established before RATS take place.</t>
        </dd>
        <dt>Attester Identity:</dt>
        <dd>
          <t>A statement made by an Endorser about an Attester that affirms the Attester's distinguishability.</t>
        </dd>
        <dt/>
        <dd>
          <t>In essence, an Attester Identity can either be explicit (e.g., via a Claim in Evidence or Endorsement) or implicit (e.g., via a signature that matches a trust anchor).
Note that distinguishability does not imply uniqueness; for example, a group of Attesters can be identified by an Attester Identity.</t>
        </dd>
        <dt/>
        <dd>
          <t>The provenance of Evidence SHOULD be distinguishable with respect to the Attesting Environment and MUST be unambiguous with respect to the Attester Identity.</t>
        </dd>
        <dt/>
        <dd>
          <t>An Attester Identity MAY be an Authentication Secret which is available exclusively to one of the Attesting Environments of the Attester.
It could be a unique identity, it could be included in a zero-knowledge proof (ZKP), it could be part of a group signature, or it could 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 a proof of authenticity, Attestation Evidence can 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 could include a correct, unambiguous, and stable reference to an accessible identity document.</t>
        </dd>
        <dt/>
        <dd>
          <t>Authenticity includes the protection of Evidence in a tamper-evident manner (e.g., either by signatures or by protection mechanisms implemented at both ends of a Secure Channel; see Authentication above).</t>
        </dd>
        <dt>Evidence Freshness:</dt>
        <dd>
          <t>Evidence MUST include an indicator about its freshness that can be understood by a Verifier (See also <xref section="10" sectionFormat="of" target="RFC9334"/>).
This enables interaction models to support the conveyance of proofs of freshness in a way that is useful to Verifiers and their appraisal procedures.</t>
        </dd>
      </dl>
    </section>
    <section anchor="generic-information-elements">
      <name>Generic Information Elements</name>
      <t>This section describes the essential information elements for the interaction models described in <xref target="interaction-models"/>.
These generic information elements may be Conceptual Messages included in the protocol messages or may be added as protocol parameters, depending on the specific solution.</t>
      <dl>
        <dt>Attesting Environment IDs ('attEnvIDs'):</dt>
        <dd>
          <t><em>optional</em></t>
        </dd>
        <dt/>
        <dd>
          <t>A statement representing one or more identifiers that MUST be associated with a corresponding Attestation Environment's keys used to protect Claims in Evidence produced by an Attester. Exemplary identifiers include attestation key material (e.g., the public key associated with the private key that is used to produce Evidence), key identifiers, environment names, or individual hardware-based immutable identifiers.</t>
        </dd>
        <dt/>
        <dd>
          <t>While a Verifier does not necessarily have knowledge about an Attesting Environment's identifiers, each distinguishable Attesting Environment typically has access to a protected capability that includes an Attesting Environment ID.
If no Attesting Environment IDs are provided, a local default applies based on the Attester.
For example, all Attesting Environments will provide Evidence.</t>
        </dd>
        <dt>Handle (<tt>handle</tt>):</dt>
        <dd>
          <t><em>mandatory</em></t>
        </dd>
        <dt/>
        <dd>
          <t>An information element provided to the Attester from an external source included in Evidence (or other RATS Conceptual Messages) to determine recentness, freshness, or to protect against replay attacks.</t>
        </dd>
        <dt/>
        <dd>
          <t>The term Handle encompasses various data types that can be utilized to determine recentness, freshness, or provide replay protection.
Examples include Nonces, which protect against replay attacks, and Epoch Markers that identify distinct periods (Epochs) of freshness <xref target="I-D.ietf-rats-epoch-markers"/>.
Handles can also indicate authenticity or attestation Evidence provenance, as only specific RATS roles (e.g., an Attester and a Verifier in a challenge-response interaction) are meant to know a certain handle.</t>
        </dd>
        <dt>Claims (<tt>claims</tt>):</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 used, for example, to appraise the integrity of Attesters by Verifiers. The other information elements in this section can be presented as Claims in any type of Conceptual Message.</t>
        </dd>
        <dt>Event Logs (<tt>eventLogs</tt>):</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 ensure Claim reproducibility by providing information on how Claims originated.</t>
        </dd>
        <dt>Verifier Inputs ('verInputs')</dt>
        <dd>
          <t><em>mandatory</em></t>
        </dd>
        <dt/>
        <dd>
          <t>Appraisal procedures implemented by Verifiers require certain inputs as defined in <xref target="RFC9334"/>: Reference Values, Endorsements, and Appraisal Policy for Evidence. These Conceptual Messages can take various forms. For example, Reference Values that can be expressed via Reference Integrity Measurements (RIM) or Endorsements that can range from trust anchors to assertions cryptographically bound to the public key associated with an Attesting Environment.</t>
        </dd>
        <dt>Claim Selection (<tt>claimSelection</tt>):</dt>
        <dd>
          <t><em>optional</em></t>
        </dd>
        <dt/>
        <dd>
          <t>A (sub-)set of Claims that can be collected and incorporated in Evidence by the Attesting Environments of an Attester.</t>
        </dd>
        <dt/>
        <dd>
          <t>Claim Selections act as optional filters to specify the exact set of Claims to be included in Evidence.
For example, a Verifier could send 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.
If there is no way to convey a Claim Selection in a remote attestation protocol, a default Claim Selection (e.g., "all") MUST be defined by the Attester and SHOULD be known by the Verifier.
In order to select Claims, Claims that can be potentially included in Evidence by an Attesting Environment have to be known by the Verifier.</t>
        </dd>
        <dt>Collected Claims (<tt>collectedClaims</tt>):</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 Claim Selection. If a Verifier does not provide a Claim Selection, all available Claims on the Attester are part of the Collected Claims.</t>
        </dd>
        <dt>Evidence (<tt>evidence</tt>):</dt>
        <dd>
          <t><em>mandatory</em></t>
        </dd>
        <dt/>
        <dd>
          <t>A set of Claims that can include: (a) a list of Attestation Environment IDs, each identifying an Authentication Secret in a single Attesting Environment, (b) the Attester Identity, (c) Claims about the Attester's Target Environment, and (d) 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 authoritatively "speaking for" <xref target="lampson06"/> the Attester.</t>
        </dd>
        <dt>Attestation Result (<tt>attestationResult</tt>):</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 generated by an Attester. Attestation Results include concise assertions about integrity or other characteristics of the appraised Attester that can be processed by Relying Parties.</t>
        </dd>
      </dl>
    </section>
    <section anchor="interaction-models">
      <name>Interaction Models</name>
      <t>This document describes three interaction models for Remote Attestation:</t>
      <ol spacing="normal" type="1">
        <li>Challenge/Response (<xref target="challenge-response"/>),</li>
        <li>Unidirectional (<xref target="unidirectional"/>), and</li>
        <li>Streaming (<xref target="streaming"/>).</li>
      </ol>
      <t>Each section starts with a sequence diagram illustrating the interactions between the involved roles: Attester, Verifier and, optionally, a Relying Party.
The presented interaction models focus on the conveyance of Evidence and Attestation Results.
The same interaction models may apply to the conveyance of other Conceptual Messages (Endorsements, Reference Values, or Appraisal Policies) with other roles involved.
However, that is out of scope for the present document.</t>
      <t>All interaction models have a strong focus on the use of a Handle to incorporate a proof of freshness and to prevent replay attacks.
The way the Handle is processed is the most prominent difference between the three interaction models.</t>
      <section anchor="challenge-response">
        <name>Challenge/Response Remote Attestation</name>
        <t>Note: In the following diagrams, a leading <tt>?</tt> indicates that an information element is optional.</t>
        <figure anchor="fig-challenge-response">
          <name>Figure 1: 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 96,176" fill="none" stroke="black"/>
                <path d="M 240,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="188" y="148">?eventLogs</text>
                  <text x="200" y="180">requestEvidence(handle,</text>
                  <text x="344" y="180">?attEnvIDs,</text>
                  <text x="460" y="180">?claimSelection)</text>
                  <text x="104" y="212">collectClaims(claims,</text>
                  <text x="260" 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">?attEnvIDs,</text>
                  <text x="380" y="260">collectedClaims)</text>
                  <text x="68" y="276">=&gt;</text>
                  <text x="116" y="276">evidence</text>
                  <text x="100" y="308">{evidence,</text>
                  <text x="192" 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="440" y="372">?eventLogs,</text>
                  <text x="532" y="372">verInputs)</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                                      |
     |                                                            |
     |<----- requestEvidence(handle, ?attEnvIDs, ?claimSelection) |
     |                                                            |
  collectClaims(claims, ?claimSelection)                          |
     | => collectedClaims                                         |
     |                                                            |
  generateEvidence(handle, ?attEnvIDs, collectedClaims)           |
     | => evidence                                                |
     |                                                            |
     | {evidence, ?eventLogs}------------------------------------>|
     |                                                            |
==========================[Evidence Appraisal]==========================
     |                                                            |
     |                appraiseEvidence(evidence, ?eventLogs, verInputs)
     |                                       attestationResult <= |
     |                                                            |
]]></artwork>
          </artset>
        </figure>
        <t>The Attester boots up and thereby produces Claims about its boot state and its operational state during runtime (cf. <xref target="terminology"/>), e.g., loaded applications, configurations, and environment variables.
Event Logs may accompany the produced Claims and provide an event trail of security-critical events in the system. Claims are produced by all Attesting Environments of an Attester system.</t>
        <t>The Challenge/Response remote attestation procedure is typically initiated by the Verifier by sending a remote attestation request to the Attester.
Alternative initiation flows, e.g., via an intermediary or through pre-configured requests (e.g., Call-Home procedures or trusted trigger events from Relying Parties), are out of scope for this document.
A request includes a Handle, an optional list of Attestation Key IDs, and an optional 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 <xref target="RFC4949"/>, such as a cryptographically strong random number.
This nonce is typically generated by the Verifier to guarantee Evidence freshness and prevent replay attacks; however, depending on deployment context, it may also be generated by another trusted role, such as a Relying Party.</t>
        <t>The list of Attestation Key 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 Attestation Key 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 Attestation Key IDs.
Methods to acquire Attestation Key IDs or mappings between Attesting Environments to Attestation Key IDs are out of scope of this document.</t>
        <t>The Attester selects Claims based on the specified Claim Selection, which is defined by the Verifier.
The Claim Selection determines the Collected Claims, which may be a subset of all the available Claims.
If the Claim Selection is omitted, then all available Claims on the Attester MUST be used to create corresponding Evidence.
For example, when performing a boot integrity evaluation, a Verifier may only request specific claims about the Attester, such as Evidence about the BIOS/UEFI and firmware that the Attester booted up, without including information about all currently running software.</t>
        <t>With the Handle, the Attestation Key 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 Attestation Key ID. This is done once per Attesting Environment which is identified by the particular Attestation Key ID. The Attester communicates the signed Evidence as well as all accompanying Event Logs back to the Verifier.</t>
        <t>The Claims, the Handle, and the Attester Identity information (i.e., the Authentication Secret) MUST be cryptographically bound to the signature of Evidence. These MAY be presented obfuscated, encrypted, or cryptographically blinded.
For further reference see, Section <xref target="security-and-privacy-considerations"/>.</t>
        <t>Upon receiving the Evidence and Event Logs, the Verifier validates the signature, Attester Identity, and Handle, and then appraises the Claims.
Claim appraisal is driven by Policy and takes Reference Values and Endorsements as input.
The Verifier outputs Attestation Results.
Attestation Results create new Claim Sets about the properties and characteristics of an Attester, which enable Relying Parties to assess an Attester's trustworthiness.</t>
        <t>Note: This diagram illustrates the canonical Challenge/Response interaction between Attester and Verifier.
Variants that include a Relying Party (e.g., Passport or Background-Check models) are shown in subsequent sections.</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 appraises the Evidence according to its Appraisal Policy.
The Verifier then gives back an Attestation Result to the Attester, which caches it.
In the second step, the Attester presents the Attestation Result (and possibly additional Claims/Evidence) to a Relying Party, which appraises this information according to its own Appraisal Policy to establish the trustworthiness of the Attester.</t>
            <figure anchor="fig-passport">
              <name>Figure 2: Passport Model for Challenge/Response Remote Attestation</name>
              <artset>
                <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="704" width="584" viewBox="0 0 584 704" 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,224" fill="none" stroke="black"/>
                    <path d="M 48,272 L 48,288" fill="none" stroke="black"/>
                    <path d="M 48,336 L 48,384" fill="none" stroke="black"/>
                    <path d="M 48,416 L 48,512" fill="none" stroke="black"/>
                    <path d="M 48,544 L 48,688" 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,112 L 336,168" fill="none" stroke="black"/>
                    <path d="M 336,184 L 336,360" fill="none" stroke="black"/>
                    <path d="M 336,376 L 336,384" fill="none" stroke="black"/>
                    <path d="M 336,416 L 336,512" fill="none" stroke="black"/>
                    <path d="M 336,544 L 336,552" fill="none" stroke="black"/>
                    <path d="M 336,568 L 336,624" 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,160" fill="none" stroke="black"/>
                    <path d="M 528,240 L 528,384" fill="none" stroke="black"/>
                    <path d="M 528,496 L 528,512" fill="none" stroke="black"/>
                    <path d="M 528,544 L 528,688" 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 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,176 L 424,176" fill="none" stroke="black"/>
                    <path d="M 248,368 L 520,368" 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 8,526 L 104,526" fill="none" stroke="black"/>
                    <path d="M 8,530 L 104,530" fill="none" stroke="black"/>
                    <path d="M 472,526 L 576,526" fill="none" stroke="black"/>
                    <path d="M 472,530 L 576,530" fill="none" stroke="black"/>
                    <path d="M 64,560 L 352,560" fill="none" stroke="black"/>
                    <path d="M 304,608 L 328,608" fill="none" stroke="black"/>
                    <polygon class="arrowhead" points="528,368 516,362.4 516,373.6 " fill="black" transform="rotate(0,520,368)"/>
                    <path class="jump" d="M 336,568 C 330,568 330,552 336,552" fill="none" stroke="black"/>
                    <path class="jump" d="M 336,376 C 342,376 342,360 336,360" fill="none" stroke="black"/>
                    <path class="jump" d="M 336,184 C 330,184 330,168 336,168" fill="none" stroke="black"/>
                    <polygon class="arrowhead" points="336,608 324,602.4 324,613.6 " fill="black" transform="rotate(0,328,608)"/>
                    <polygon class="arrowhead" points="72,560 60,554.4 60,565.6 " fill="black" transform="rotate(180,64,560)"/>
                    <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="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="48" y="116">|</text>
                      <text x="164" y="132">generateClaims(attestingEnvironment)</text>
                      <text x="68" y="148">=&gt;</text>
                      <text x="116" y="148">{claims,</text>
                      <text x="200" y="148">?eventLogs}</text>
                      <text x="500" y="180">requestEvidence(</text>
                      <text x="480" y="196">handle,</text>
                      <text x="496" y="212">?attEnvIDs,</text>
                      <text x="516" y="228">?claimSelection)</text>
                      <text x="104" y="244">collectClaims(claims,</text>
                      <text x="108" y="260">?claimSelection)</text>
                      <text x="68" y="276">=&gt;</text>
                      <text x="144" y="276">collectedClaims</text>
                      <text x="116" y="308">generateEvidence(handle,</text>
                      <text x="88" y="324">?attEnvIDs,</text>
                      <text x="204" y="324">collectedClaims)</text>
                      <text x="68" y="340">=&gt;</text>
                      <text x="116" y="340">evidence</text>
                      <text x="100" y="372">{evidence,</text>
                      <text x="192" y="372">?eventLogs}</text>
                      <text x="248" y="404">[Evidence</text>
                      <text x="332" y="404">Appraisal]</text>
                      <text x="528" y="420">|</text>
                      <text x="496" y="436">appraiseEvidence(</text>
                      <text x="480" y="452">evidence,</text>
                      <text x="488" y="468">?eventLogs,</text>
                      <text x="484" y="484">verInputs)</text>
                      <text x="424" y="500">attestationResult</text>
                      <text x="508" y="500">&lt;=</text>
                      <text x="156" y="532">[Attestation</text>
                      <text x="236" y="532">Result</text>
                      <text x="308" y="532">Conveyance</text>
                      <text x="368" y="532">and</text>
                      <text x="428" y="532">Appraisal]</text>
                      <text x="440" y="564">{attestationResult}</text>
                      <text x="100" y="612">{evidence,</text>
                      <text x="220" y="612">attestationResult}</text>
                      <text x="336" y="644">appraiseResult(</text>
                      <text x="320" y="660">policy,</text>
                      <text x="364" y="676">attestationResult)</text>
                      <text x="336" y="692">|</text>
                    </g>
                  </svg>
                </artwork>
                <artwork type="ascii-art"><![CDATA[
.----------.                     .---------------.         .----------.
| Attester |                     | Relying Party |         | Verifier |
'----+-----'                     '-------+-------'         '-----+----'
     |                                   |                       |
=================[Evidence Generation and Conveyance]===================
     |                                   |                       |
  generateClaims(attestingEnvironment)   |                       |
     | => {claims, ?eventLogs}           |                       |
     |                                   |                       |
     |<----------------------------------(----------- requestEvidence(
     |                                   |              handle,
     |                                   |              ?attEnvIDs,
     |                                   |              ?claimSelection)
  collectClaims(claims,                  |                       |
     ?claimSelection)                    |                       |
     | => collectedClaims                |                       |
     |                                   |                       |
  generateEvidence(handle,               |                       |
     ?attEnvIDs, collectedClaims)        |                       |
     | => evidence                       |                       |
     |                                   |                       |
     | {evidence, ?eventLogs} -----------)---------------------->|
     |                                   |                       |
==========================[Evidence Appraisal]==========================
     |                                   |                       |
     |                                   |           appraiseEvidence(
     |                                   |             evidence,
     |                                   |             ?eventLogs,
     |                                   |             verInputs)
     |                                   |  attestationResult <= |
     |                                   |                       |
=============[Attestation Result Conveyance and Appraisal]==============
     |                                   |                       |
     | <---------------------------------(-- {attestationResult} |
     |                                   |                       |
     |                                   |                       |
     | {evidence, attestationResult} --->|                       |
     |                                   |                       |
     |                            appraiseResult(                |
     |                              policy,                      |
     |                              attestationResult)           |
     |                                   |                       |
]]></artwork>
              </artset>
            </figure>
          </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>
            <figure anchor="fig-background-check">
              <name>Figure 3: Background-Check Model for Challenge/Response Remote Attestation</name>
              <artset>
                <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="688" width="584" viewBox="0 0 584 688" 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,240" fill="none" stroke="black"/>
                    <path d="M 48,288 L 48,304" fill="none" stroke="black"/>
                    <path d="M 48,352 L 48,432" fill="none" stroke="black"/>
                    <path d="M 48,464 L 48,560" fill="none" stroke="black"/>
                    <path d="M 48,592 L 48,672" 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,112 L 336,160" fill="none" stroke="black"/>
                    <path d="M 336,240 L 336,432" fill="none" stroke="black"/>
                    <path d="M 336,464 L 336,560" fill="none" stroke="black"/>
                    <path d="M 336,592 L 336,624" 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,432" fill="none" stroke="black"/>
                    <path d="M 528,544 L 528,560" fill="none" stroke="black"/>
                    <path d="M 528,592 L 528,672" 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 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,176 L 264,176" fill="none" stroke="black"/>
                    <path d="M 248,384 L 328,384" fill="none" stroke="black"/>
                    <path d="M 456,416 L 520,416" fill="none" stroke="black"/>
                    <path d="M 8,446 L 208,446" fill="none" stroke="black"/>
                    <path d="M 8,450 L 208,450" fill="none" stroke="black"/>
                    <path d="M 376,446 L 576,446" fill="none" stroke="black"/>
                    <path d="M 376,450 L 576,450" fill="none" stroke="black"/>
                    <path d="M 8,574 L 104,574" fill="none" stroke="black"/>
                    <path d="M 8,578 L 104,578" fill="none" stroke="black"/>
                    <path d="M 472,574 L 576,574" fill="none" stroke="black"/>
                    <path d="M 472,578 L 576,578" fill="none" stroke="black"/>
                    <polygon class="arrowhead" points="528,416 516,410.4 516,421.6 " fill="black" transform="rotate(0,520,416)"/>
                    <polygon class="arrowhead" points="336,384 324,378.4 324,389.6 " fill="black" transform="rotate(0,328,384)"/>
                    <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="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="48" y="116">|</text>
                      <text x="164" y="132">generateClaims(attestingEnvironment)</text>
                      <text x="68" y="148">=&gt;</text>
                      <text x="116" y="148">{claims,</text>
                      <text x="200" y="148">?eventLogs}</text>
                      <text x="340" y="180">requestEvidence(</text>
                      <text x="320" y="196">handle,</text>
                      <text x="336" y="212">?attEnvIDs,</text>
                      <text x="356" y="228">?claimSelection)</text>
                      <text x="104" y="260">collectClaims(claims,</text>
                      <text x="108" 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="88" y="340">?attEnvIDs,</text>
                      <text x="204" y="340">collectedClaims)</text>
                      <text x="68" y="356">=&gt;</text>
                      <text x="116" y="356">evidence</text>
                      <text x="100" y="388">{evidence,</text>
                      <text x="192" y="388">?eventLogs}</text>
                      <text x="380" y="404">{handle,</text>
                      <text x="456" y="404">evidence,</text>
                      <text x="400" y="420">?eventLogs}</text>
                      <text x="248" y="452">[Evidence</text>
                      <text x="332" y="452">Appraisal]</text>
                      <text x="528" y="468">|</text>
                      <text x="496" y="484">appraiseEvidence(</text>
                      <text x="480" y="500">evidence,</text>
                      <text x="488" y="516">?eventLogs,</text>
                      <text x="484" y="532">verInputs)</text>
                      <text x="424" y="548">attestationResult</text>
                      <text x="508" y="548">&lt;=</text>
                      <text x="156" y="580">[Attestation</text>
                      <text x="236" y="580">Result</text>
                      <text x="308" y="580">Conveyance</text>
                      <text x="368" y="580">and</text>
                      <text x="428" y="580">Appraisal]</text>
                      <text x="348" y="612">&lt;-</text>
                      <text x="440" y="612">{attestationResult}</text>
                      <text x="332" y="644">appraiseResult(policy,</text>
                      <text x="332" y="660">attestationResult)</text>
                      <text x="336" y="676">|</text>
                    </g>
                  </svg>
                </artwork>
                <artwork type="ascii-art"><![CDATA[
.----------.                     .---------------.         .----------.
| Attester |                     | Relying Party |         | Verifier |
'----+-----'                     '-------+-------'         '-----+----'
     |                                   |                       |
=================[Evidence Generation and Conveyance]===================
     |                                   |                       |
  generateClaims(attestingEnvironment)   |                       |
     | => {claims, ?eventLogs}           |                       |
     |                                   |                       |
     |<-------------------------- requestEvidence(               |
     |                              handle,                      |
     |                              ?attEnvIDs,                  |
     |                              ?claimSelection)             |
     |                                   |                       |
  collectClaims(claims,                  |                       |
     ?claimSelection)                    |                       |
     | => collectedClaims                |                       |
     |                                   |                       |
  generateEvidence(handle,               |                       |
     ?attEnvIDs, collectedClaims)        |                       |
     | => evidence                       |                       |
     |                                   |                       |
     | {evidence, ?eventLogs} ---------->|                       |
     |                                   | {handle, evidence,    |
     |                                   |  ?eventLogs} -------->|
     |                                   |                       |
==========================[Evidence Appraisal]==========================
     |                                   |                       |
     |                                   |           appraiseEvidence(
     |                                   |             evidence,
     |                                   |             ?eventLogs,
     |                                   |             verInputs)
     |                                   |  attestationResult <= |
     |                                   |                       |
=============[Attestation Result Conveyance and Appraisal]==============
     |                                   |                       |
     |                                   |<- {attestationResult} |
     |                                   |                       |
     |                        appraiseResult(policy,             |
     |                          attestationResult)               |
     |                                   |                       |
]]></artwork>
              </artset>
            </figure>
          </section>
        </section>
      </section>
      <section anchor="unidirectional">
        <name>Uni-Directional Remote Attestation</name>
        <figure anchor="fig-unidirectional">
          <name>Figure 4: Uni-Directional Remote Attestation</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="992" width="584" viewBox="0 0 584 992" 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,112 L 8,944" fill="none" stroke="black"/>
                <path d="M 16,608 L 16,928" fill="none" stroke="black"/>
                <path d="M 48,64 L 48,88" fill="none" stroke="black"/>
                <path d="M 48,144 L 48,240" fill="none" stroke="black"/>
                <path d="M 48,304 L 48,320" fill="none" stroke="black"/>
                <path d="M 48,352 L 48,368" fill="none" stroke="black"/>
                <path d="M 48,400 L 48,448" fill="none" stroke="black"/>
                <path d="M 48,480 L 48,544" fill="none" stroke="black"/>
                <path d="M 48,672 L 48,688" fill="none" stroke="black"/>
                <path d="M 48,720 L 48,736" fill="none" stroke="black"/>
                <path d="M 48,768 L 48,816" fill="none" stroke="black"/>
                <path d="M 48,848 L 48,936" 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,88" fill="none" stroke="black"/>
                <path d="M 368,160 L 368,208" 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,88" fill="none" stroke="black"/>
                <path d="M 536,144 L 536,240" fill="none" stroke="black"/>
                <path d="M 536,272 L 536,448" fill="none" stroke="black"/>
                <path d="M 536,640 L 536,816" fill="none" stroke="black"/>
                <path d="M 536,912 L 536,936" fill="none" stroke="black"/>
                <path d="M 552,880 L 552,888" fill="none" stroke="black"/>
                <path d="M 560,512 L 560,520" fill="none" stroke="black"/>
                <path d="M 568,608 L 568,928" fill="none" stroke="black"/>
                <path d="M 576,32 L 576,64" fill="none" stroke="black"/>
                <path d="M 576,112 L 576,944" 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 24,96 L 80,96" fill="none" stroke="black"/>
                <path d="M 136,96 L 560,96" fill="none" stroke="black"/>
                <path d="M 24,126 L 208,126" fill="none" stroke="black"/>
                <path d="M 24,130 L 208,130" fill="none" stroke="black"/>
                <path d="M 368,126 L 560,126" fill="none" stroke="black"/>
                <path d="M 368,130 L 560,130" fill="none" stroke="black"/>
                <path d="M 56,192 L 280,192" fill="none" stroke="black"/>
                <path d="M 456,192 L 528,192" fill="none" stroke="black"/>
                <path d="M 24,254 L 136,254" fill="none" stroke="black"/>
                <path d="M 24,258 L 136,258" fill="none" stroke="black"/>
                <path d="M 432,254 L 560,254" fill="none" stroke="black"/>
                <path d="M 432,258 L 560,258" fill="none" stroke="black"/>
                <path d="M 240,432 L 528,432" fill="none" stroke="black"/>
                <path d="M 24,462 L 208,462" fill="none" stroke="black"/>
                <path d="M 24,466 L 208,466" fill="none" stroke="black"/>
                <path d="M 376,462 L 560,462" fill="none" stroke="black"/>
                <path d="M 376,466 L 560,466" fill="none" stroke="black"/>
                <path d="M 32,592 L 80,592" fill="none" stroke="black"/>
                <path d="M 136,592 L 552,592" fill="none" stroke="black"/>
                <path d="M 32,622 L 120,622" fill="none" stroke="black"/>
                <path d="M 32,626 L 120,626" fill="none" stroke="black"/>
                <path d="M 464,622 L 552,622" fill="none" stroke="black"/>
                <path d="M 464,626 L 552,626" fill="none" stroke="black"/>
                <path d="M 280,800 L 528,800" fill="none" stroke="black"/>
                <path d="M 32,830 L 184,830" fill="none" stroke="black"/>
                <path d="M 32,834 L 184,834" fill="none" stroke="black"/>
                <path d="M 400,830 L 552,830" fill="none" stroke="black"/>
                <path d="M 400,834 L 552,834" fill="none" stroke="black"/>
                <path d="M 32,944 L 552,944" fill="none" stroke="black"/>
                <path d="M 24,960 L 560,960" fill="none" stroke="black"/>
                <path d="M 24,96 C 15.16936,96 8,103.16936 8,112" fill="none" stroke="black"/>
                <path d="M 560,96 C 568.83064,96 576,103.16936 576,112" fill="none" stroke="black"/>
                <path d="M 32,592 C 23.16936,592 16,599.16936 16,608" fill="none" stroke="black"/>
                <path d="M 552,592 C 560.83064,592 568,599.16936 568,608" fill="none" stroke="black"/>
                <path d="M 32,944 C 23.16936,944 16,936.83064 16,928" fill="none" stroke="black"/>
                <path d="M 552,944 C 560.83064,944 568,936.83064 568,928" fill="none" stroke="black"/>
                <path d="M 24,960 C 15.16936,960 8,952.83064 8,944" fill="none" stroke="black"/>
                <path d="M 560,960 C 568.83064,960 576,952.83064 576,944" 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,192 52,186.4 52,197.6 " fill="black" transform="rotate(180,56,192)"/>
                <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="108" y="100">[loop]</text>
                  <text x="48" y="116">|</text>
                  <text x="536" y="116">|</text>
                  <text x="240" y="132">[Handle</text>
                  <text x="320" y="132">Generation]</text>
                  <text x="404" y="148">generateHandle()</text>
                  <text x="388" y="164">=&gt;</text>
                  <text x="428" y="164">handle</text>
                  <text x="324" y="196">{handle}</text>
                  <text x="412" y="196">{handle}</text>
                  <text x="368" y="228">x</text>
                  <text x="176" y="260">[Evidence</text>
                  <text x="260" y="260">Generation</text>
                  <text x="320" y="260">and</text>
                  <text x="384" y="260">Conveyance]</text>
                  <text x="48" y="276">|</text>
                  <text x="164" y="292">generateClaims(attestingEnvironment)</text>
                  <text x="68" y="308">=&gt;</text>
                  <text x="112" y="308">claims,</text>
                  <text x="184" y="308">eventLogs</text>
                  <text x="104" y="340">collectClaims(claims,</text>
                  <text x="260" y="340">?claimSelection)</text>
                  <text x="68" y="356">=&gt;</text>
                  <text x="144" y="356">collectedClaims</text>
                  <text x="116" y="388">generateEvidence(handle,</text>
                  <text x="260" y="388">attEnvIDs,</text>
                  <text x="372" y="388">collectedClaims)</text>
                  <text x="68" y="404">=&gt;</text>
                  <text x="116" y="404">evidence</text>
                  <text x="100" y="436">{evidence,</text>
                  <text x="188" y="436">eventLogs}</text>
                  <text x="248" y="468">[Evidence</text>
                  <text x="332" y="468">Appraisal]</text>
                  <text x="536" y="484">|</text>
                  <text x="460" y="500">appraiseEvidence(evidence,</text>
                  <text x="520" y="516">eventLogs</text>
                  <text x="524" y="532">verInputs)</text>
                  <text x="432" y="548">attestationResult</text>
                  <text x="516" y="548">&lt;=</text>
                  <text x="536" y="548">|</text>
                  <text x="48" y="564">~</text>
                  <text x="536" y="564">~</text>
                  <text x="48" y="580">|</text>
                  <text x="536" y="580">|</text>
                  <text x="108" y="596">[loop]</text>
                  <text x="48" y="612">|</text>
                  <text x="536" y="612">|</text>
                  <text x="148" y="628">[Delta</text>
                  <text x="212" y="628">Evidence</text>
                  <text x="292" y="628">Generation</text>
                  <text x="352" y="628">and</text>
                  <text x="416" y="628">Conveyance]</text>
                  <text x="48" y="644">|</text>
                  <text x="172" y="660">generateClaims(attestingEnvironment)</text>
                  <text x="68" y="676">=&gt;</text>
                  <text x="132" y="676">claimsDelta,</text>
                  <text x="244" y="676">eventLogsDelta</text>
                  <text x="132" y="708">collectClaims(claimsDelta,</text>
                  <text x="308" y="708">?claimSelection)</text>
                  <text x="68" y="724">=&gt;</text>
                  <text x="164" y="724">collectedClaimsDelta</text>
                  <text x="124" y="756">generateEvidence(handle,</text>
                  <text x="268" y="756">attEnvIDs,</text>
                  <text x="400" y="756">collectedClaimsDelta)</text>
                  <text x="68" y="772">=&gt;</text>
                  <text x="116" y="772">evidence</text>
                  <text x="100" y="804">{evidence,</text>
                  <text x="208" y="804">eventLogsDelta}</text>
                  <text x="212" y="836">[Delta</text>
                  <text x="276" y="836">Evidence</text>
                  <text x="356" y="836">Appraisal]</text>
                  <text x="536" y="852">|</text>
                  <text x="452" y="868">appraiseEvidence(evidence,</text>
                  <text x="492" y="884">eventLogsDelta</text>
                  <text x="516" y="900">verInputs)</text>
                  <text x="432" y="916">attestationResult</text>
                  <text x="516" y="916">&lt;=</text>
                  <text x="48" y="980">|</text>
                  <text x="536" y="980">|</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
.----------.                       .--------------------.   .----------.
| Attester |                       | Handle Distributor |   | Verifier |
'----+-----'                       '---------+----------'   '-----+----'
     |                                       |                    |
 .--------[loop]------------------------------------------------------.
|    |                                                            |    |
| ========================[Handle Generation]========================= |
|    |                                    generateHandle()        |    |
|    |                                       | => handle          |    |
|    |                                       |                    |    |
|    |<---------------------------- {handle} | {handle} --------->|    |
|    |                                       |                    |    |
|    |                                       x                    |    |
|    |                                                            |    |
| ===============[Evidence Generation and Conveyance]================= |
|    |                                                            |    |
| generateClaims(attestingEnvironment)                            |    |
|    | => claims, eventLogs                                       |    |
|    |                                                            |    |
| collectClaims(claims, ?claimSelection)                          |    |
|    | => collectedClaims                                         |    |
|    |                                                            |    |
| generateEvidence(handle, attEnvIDs, collectedClaims)            |    |
|    | => evidence                                                |    |
|    |                                                            |    |
|    | {evidence, eventLogs} ------------------------------------>|    |
|    |                                                            |    |
| ========================[Evidence Appraisal]======================== |
|    |                                                            |    |
|    |                                      appraiseEvidence(evidence, |
|    |                                                      eventLogs, |
|    |                                                      verInputs) |
|    |                                       attestationResult <= |    |
|    ~                                                            ~    |
|    |                                                            |    |
| .-------[loop]-----------------------------------------------------. |
||   |                                                            |   ||
|| ============[Delta Evidence Generation and Conveyance]============ ||
||   |                                                            |   ||
|| generateClaims(attestingEnvironment)                           |   ||
||   | => claimsDelta, eventLogsDelta                             |   ||
||   |                                                            |   ||
|| collectClaims(claimsDelta, ?claimSelection)                    |   ||
||   | => collectedClaimsDelta                                    |   ||
||   |                                                            |   ||
|| generateEvidence(handle, attEnvIDs, collectedClaimsDelta)      |   ||
||   | => evidence                                                |   ||
||   |                                                            |   ||
||   | {evidence, eventLogsDelta} ------------------------------->|   ||
||   |                                                            |   ||
|| ====================[Delta Evidence Appraisal]==================== ||
||   |                                                            |   ||
||   |                                     appraiseEvidence(evidence, ||
||   |                                                eventLogsDelta, ||
||   |                                                     verInputs) ||
||   |                                       attestationResult <= |   ||
||   |                                                            |   ||
| '------------------------------------------------------------------' |
 '--------------------------------------------------------------------'
     |                                                            |
]]></artwork>
          </artset>
        </figure>
        <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).
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 generated is not in scope of this document.
One example of a specific handle representation is <xref target="I-D.ietf-rats-epoch-markers"/>.</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 trusted third party (TTP) -- 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.
This model provides proof that Evidence generation happened after the Handle generation phase.
The Verifier can always determine whether the received Evidence includes a fresh Handle, i.e., one corresponding to the current Epoch.</t>
        <section anchor="handle-lifecycle-and-propagation-delays">
          <name>Handle Lifecycle and Propagation Delays</name>
          <t>The term "uni-directional" refers to individual conveyance channels: one from the Handle Distributor to the Attester, and one from the Attester to the Verifier.
Together, they establish an attestation loop without requiring request/response exchanges.
This model does not assume that Verifiers broadcast Handles, as such a setup would require Verifiers to take on the Handle Distributor role and undermine the separation of duties between these roles.</t>
          <t>The lifecycle of a handle is a critical aspect of ensuring the freshness and validity of attestation Evidence.
When a new handle is generated by the Handle Distributor, it effectively supersedes the previous handle.
However, due to network latencies and propagation delays, there may be a period during which both the old and new handles are in circulation.
This "grey zone" can potentially lead to situations where Evidence may be associated with an outdated handle yet still appear to be valid.</t>
          <t>To manage this complexity, it is essential to define a clear policy for handle validity and expiration:</t>
          <ul spacing="normal">
            <li>
              <em>Handle Expiry</em>:
Each handle should have a well-defined expiration time, after which it is considered invalid.
This expiry must account for expected propagation delays and be clearly communicated to all entities in the attestation process.</li>
            <li>
              <em>Synchronization Checks</em>:
Implement periodic synchronization checks between the Handle Distributor and both Attesters and Verifiers to ensure that handles are updated consistently across all participants.
For example, in TUDA <xref target="I-D.birkholz-rats-tuda"/>, synchronization checks can be realized by cryptographically binding local timestamps from Attesters and Verifiers to fresh Epoch Handles issued by a trusted Time Stamp Authority (TSA), thereby proving that both entities share a consistent notion of time.</li>
            <li>
              <em>Grace Periods</em>:
Define grace periods during which a newly issued handle starts being accepted, and the old handle stops being valid.
This period should be long enough to account for the maximum expected propagation delay across the network.</li>
          </ul>
          <t>Implementing these measures will help mitigate the risks associated with the handle lifecycle, particularly in environments where propagation delays are significant.
This careful management ensures that the integrity and trustworthiness of the attestation process are maintained.</t>
          <t>While periodically pushing Evidence to the Verifier, the Attester only needs to generate and convey updates since the previous conveyance.
These updates, referred to as "delta" in the sequence diagrams, are not limited to net changes of Claim values.
They MUST include all state changes detected since the previous conveyance, even if values later revert to their prior state.
For example, if an Attester goes through a sleep or hibernation cycle and a Claim value changes and then reverts, both transitions MUST be reported to the Verifier as soon as possible after resuming operation.</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>
      <section anchor="streaming">
        <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.
In the observer pattern, observers are directly connected to target resources without a Broker, while the publish-subscribe pattern involves a central Broker for message distribution.</t>
        <section anchor="streaming-without-broker">
          <name>Streaming Remote Attestation without a Broker</name>
          <figure anchor="fig-streaming-without-broker">
            <name>Figure 5: Streaming Remote Attestation without a Broker</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="992" width="584" viewBox="0 0 584 992" 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,112 L 8,944" fill="none" stroke="black"/>
                  <path d="M 16,608 L 16,928" fill="none" stroke="black"/>
                  <path d="M 48,64 L 48,88" fill="none" stroke="black"/>
                  <path d="M 48,144 L 48,240" fill="none" stroke="black"/>
                  <path d="M 48,304 L 48,320" fill="none" stroke="black"/>
                  <path d="M 48,352 L 48,368" fill="none" stroke="black"/>
                  <path d="M 48,400 L 48,448" fill="none" stroke="black"/>
                  <path d="M 48,480 L 48,544" fill="none" stroke="black"/>
                  <path d="M 48,672 L 48,688" fill="none" stroke="black"/>
                  <path d="M 48,720 L 48,736" fill="none" stroke="black"/>
                  <path d="M 48,768 L 48,816" fill="none" stroke="black"/>
                  <path d="M 48,848 L 48,936" 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,88" fill="none" stroke="black"/>
                  <path d="M 536,176 L 536,240" fill="none" stroke="black"/>
                  <path d="M 536,272 L 536,448" fill="none" stroke="black"/>
                  <path d="M 536,640 L 536,816" fill="none" stroke="black"/>
                  <path d="M 536,912 L 536,936" fill="none" stroke="black"/>
                  <path d="M 552,880 L 552,888" fill="none" stroke="black"/>
                  <path d="M 560,512 L 560,520" fill="none" stroke="black"/>
                  <path d="M 568,608 L 568,928" fill="none" stroke="black"/>
                  <path d="M 576,32 L 576,64" fill="none" stroke="black"/>
                  <path d="M 576,112 L 576,944" 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 24,96 L 80,96" fill="none" stroke="black"/>
                  <path d="M 136,96 L 560,96" fill="none" stroke="black"/>
                  <path d="M 24,126 L 208,126" fill="none" stroke="black"/>
                  <path d="M 24,130 L 208,130" fill="none" stroke="black"/>
                  <path d="M 368,126 L 560,126" fill="none" stroke="black"/>
                  <path d="M 368,130 L 560,130" fill="none" stroke="black"/>
                  <path d="M 56,208 L 152,208" fill="none" stroke="black"/>
                  <path d="M 136,224 L 528,224" fill="none" stroke="black"/>
                  <path d="M 24,254 L 136,254" fill="none" stroke="black"/>
                  <path d="M 24,258 L 136,258" fill="none" stroke="black"/>
                  <path d="M 432,254 L 560,254" fill="none" stroke="black"/>
                  <path d="M 432,258 L 560,258" fill="none" stroke="black"/>
                  <path d="M 304,432 L 528,432" fill="none" stroke="black"/>
                  <path d="M 24,462 L 208,462" fill="none" stroke="black"/>
                  <path d="M 24,466 L 208,466" fill="none" stroke="black"/>
                  <path d="M 376,462 L 560,462" fill="none" stroke="black"/>
                  <path d="M 376,466 L 560,466" fill="none" stroke="black"/>
                  <path d="M 32,592 L 88,592" fill="none" stroke="black"/>
                  <path d="M 144,592 L 552,592" fill="none" stroke="black"/>
                  <path d="M 32,622 L 120,622" fill="none" stroke="black"/>
                  <path d="M 32,626 L 120,626" fill="none" stroke="black"/>
                  <path d="M 464,622 L 552,622" fill="none" stroke="black"/>
                  <path d="M 464,626 L 552,626" fill="none" stroke="black"/>
                  <path d="M 280,800 L 528,800" fill="none" stroke="black"/>
                  <path d="M 32,830 L 184,830" fill="none" stroke="black"/>
                  <path d="M 32,834 L 184,834" fill="none" stroke="black"/>
                  <path d="M 400,830 L 552,830" fill="none" stroke="black"/>
                  <path d="M 400,834 L 552,834" fill="none" stroke="black"/>
                  <path d="M 32,944 L 552,944" fill="none" stroke="black"/>
                  <path d="M 24,960 L 560,960" fill="none" stroke="black"/>
                  <path d="M 24,96 C 15.16936,96 8,103.16936 8,112" fill="none" stroke="black"/>
                  <path d="M 560,96 C 568.83064,96 576,103.16936 576,112" fill="none" stroke="black"/>
                  <path d="M 32,592 C 23.16936,592 16,599.16936 16,608" fill="none" stroke="black"/>
                  <path d="M 552,592 C 560.83064,592 568,599.16936 568,608" fill="none" stroke="black"/>
                  <path d="M 32,944 C 23.16936,944 16,936.83064 16,928" fill="none" stroke="black"/>
                  <path d="M 552,944 C 560.83064,944 568,936.83064 568,928" fill="none" stroke="black"/>
                  <path d="M 24,960 C 15.16936,960 8,952.83064 8,944" fill="none" stroke="black"/>
                  <path d="M 560,960 C 568.83064,960 576,952.83064 576,944" 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,224 524,218.4 524,229.6 " fill="black" transform="rotate(0,528,224)"/>
                  <polygon class="arrowhead" points="64,208 52,202.4 52,213.6 " fill="black" transform="rotate(180,56,208)"/>
                  <g class="text">
                    <text x="52" y="52">Attester</text>
                    <text x="532" y="52">Verifier</text>
                    <text x="108" y="100">[loop]</text>
                    <text x="48" y="116">|</text>
                    <text x="536" y="116">|</text>
                    <text x="240" y="132">[Handle</text>
                    <text x="320" y="132">Generation]</text>
                    <text x="536" y="148">|</text>
                    <text x="500" y="164">generateHandle()</text>
                    <text x="492" y="180">handle&lt;=</text>
                    <text x="232" y="212">subscribe(handle,</text>
                    <text x="348" y="212">attEnvIDs,</text>
                    <text x="460" y="212">?claimSelection)</text>
                    <text x="92" y="228">{handle}</text>
                    <text x="176" y="260">[Evidence</text>
                    <text x="260" y="260">Generation</text>
                    <text x="320" y="260">and</text>
                    <text x="384" y="260">Conveyance]</text>
                    <text x="48" y="276">|</text>
                    <text x="164" y="292">generateClaims(attestingEnvironment)</text>
                    <text x="68" y="308">=&gt;</text>
                    <text x="112" y="308">claims,</text>
                    <text x="184" y="308">eventLogs</text>
                    <text x="104" y="340">collectClaims(claims,</text>
                    <text x="260" y="340">?claimSelection)</text>
                    <text x="68" y="356">=&gt;</text>
                    <text x="144" y="356">collectedClaims</text>
                    <text x="116" y="388">generateEvidence(handle,</text>
                    <text x="260" y="388">attEnvIDs,</text>
                    <text x="372" y="388">collectedClaims)</text>
                    <text x="68" y="404">=&gt;</text>
                    <text x="116" y="404">evidence</text>
                    <text x="92" y="436">{handle,</text>
                    <text x="168" y="436">evidence,</text>
                    <text x="252" y="436">eventLogs}</text>
                    <text x="248" y="468">[Evidence</text>
                    <text x="332" y="468">Appraisal]</text>
                    <text x="536" y="484">|</text>
                    <text x="460" y="500">appraiseEvidence(evidence,</text>
                    <text x="520" y="516">eventLogs</text>
                    <text x="524" y="532">verInputs)</text>
                    <text x="432" y="548">attestationResult</text>
                    <text x="516" y="548">&lt;=</text>
                    <text x="536" y="548">|</text>
                    <text x="48" y="564">~</text>
                    <text x="536" y="564">~</text>
                    <text x="48" y="580">|</text>
                    <text x="536" y="580">|</text>
                    <text x="116" y="596">[loop]</text>
                    <text x="48" y="612">|</text>
                    <text x="536" y="612">|</text>
                    <text x="148" y="628">[Delta</text>
                    <text x="212" y="628">Evidence</text>
                    <text x="292" y="628">Generation</text>
                    <text x="352" y="628">and</text>
                    <text x="416" y="628">Conveyance]</text>
                    <text x="48" y="644">|</text>
                    <text x="172" y="660">generateClaims(attestingEnvironment)</text>
                    <text x="68" y="676">=&gt;</text>
                    <text x="132" y="676">claimsDelta,</text>
                    <text x="244" y="676">eventLogsDelta</text>
                    <text x="132" y="708">collectClaims(claimsDelta,</text>
                    <text x="308" y="708">?claimSelection)</text>
                    <text x="68" y="724">=&gt;</text>
                    <text x="164" y="724">collectedClaimsDelta</text>
                    <text x="124" y="756">generateEvidence(handle,</text>
                    <text x="268" y="756">attEnvIDs,</text>
                    <text x="400" y="756">collectedClaimsDelta)</text>
                    <text x="68" y="772">=&gt;</text>
                    <text x="116" y="772">evidence</text>
                    <text x="100" y="804">{evidence,</text>
                    <text x="208" y="804">eventLogsDelta}</text>
                    <text x="212" y="836">[Delta</text>
                    <text x="276" y="836">Evidence</text>
                    <text x="356" y="836">Appraisal]</text>
                    <text x="536" y="852">|</text>
                    <text x="452" y="868">appraiseEvidence(evidence,</text>
                    <text x="492" y="884">eventLogsDelta</text>
                    <text x="516" y="900">verInputs)</text>
                    <text x="432" y="916">attestationResult</text>
                    <text x="516" y="916">&lt;=</text>
                    <text x="48" y="980">|</text>
                    <text x="536" y="980">|</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
.----------.                                                .----------.
| Attester |                                                | Verifier |
'----+-----'                                                '-----+----'
     |                                                            |
 .--------[loop]------------------------------------------------------.
|    |                                                            |    |
| ========================[Handle Generation]========================= |
|    |                                                            |    |
|    |                                                generateHandle() |
|    |                                                   handle<= |    |
|    |                                                            |    |
|    |<------------ subscribe(handle, attEnvIDs, ?claimSelection) |    |
|    | {handle} ------------------------------------------------->|    |
|    |                                                            |    |
| ===============[Evidence Generation and Conveyance]================= |
|    |                                                            |    |
| generateClaims(attestingEnvironment)                            |    |
|    | => claims, eventLogs                                       |    |
|    |                                                            |    |
| collectClaims(claims, ?claimSelection)                          |    |
|    | => collectedClaims                                         |    |
|    |                                                            |    |
| generateEvidence(handle, attEnvIDs, collectedClaims)            |    |
|    | => evidence                                                |    |
|    |                                                            |    |
|    | {handle, evidence, eventLogs} ---------------------------->|    |
|    |                                                            |    |
| ========================[Evidence Appraisal]======================== |
|    |                                                            |    |
|    |                                      appraiseEvidence(evidence, |
|    |                                                      eventLogs, |
|    |                                                      verInputs) |
|    |                                       attestationResult <= |    |
|    ~                                                            ~    |
|    |                                                            |    |
| .--------[loop]----------------------------------------------------. |
||   |                                                            |   ||
|| ============[Delta Evidence Generation and Conveyance]============ ||
||   |                                                            |   ||
|| generateClaims(attestingEnvironment)                           |   ||
||   | => claimsDelta, eventLogsDelta                             |   ||
||   |                                                            |   ||
|| collectClaims(claimsDelta, ?claimSelection)                    |   ||
||   | => collectedClaimsDelta                                    |   ||
||   |                                                            |   ||
|| generateEvidence(handle, attEnvIDs, collectedClaimsDelta)      |   ||
||   | => evidence                                                |   ||
||   |                                                            |   ||
||   | {evidence, eventLogsDelta} ------------------------------->|   ||
||   |                                                            |   ||
|| ====================[Delta Evidence Appraisal]==================== ||
||   |                                                            |   ||
||   |                                     appraiseEvidence(evidence, ||
||   |                                                eventLogsDelta, ||
||   |                                                     verInputs) ||
||   |                                       attestationResult <= |   ||
||   |                                                            |   ||
| '------------------------------------------------------------------' |
 '--------------------------------------------------------------------'
     |                                                            |
]]></artwork>
            </artset>
          </figure>
          <t>In the observer pattern, an observer establishes a direct connection to the observed resources through a subscription mechanism, which is designed specifically for conveying conceptual messages for remote attestation purposes.
This mechanism not only facilitates the initial subscription request but also actively maintains the state of the subscription, ensuring that any changes in the observed resources are consistently communicated to the observer.
It handles the complexities of managing these connections, including the maintenance of pertinent information about the observer's preferences and security requirements, ensuring that the transmission of attestation data remains both secure and relevant to the observer's specific context.</t>
          <t>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.
In the observer pattern, the Handle Distributor role is optional.
While the model is typically used for direct, bi-lateral subscription relationships where the Verifier generates and provides Handles directly, it is also possible to include the trusted third party that is a Handle Distributor.
A Handle Distributor independently manages the generation and distribution of Handles to other RATS roles.
As a result, scenarios involving more than bi-lateral interactions are enabled.
However, in its basic form, the model assumes direct interaction between an Attester and a Verifier, where the Handle generation is a responsibility taken on by the Verifier roles.</t>
          <t>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>
          <t>If Evidence or delta Evidence repeatedly fails to verify, a Verifier may terminate the subscription.
The detailed mechanisms for unsubscribe and re-subscribe are protocol-specific and out of scope for this document; for example, subscription lifecycle management is defined in <xref target="I-D.ietf-rats-network-device-subscription"/>.</t>
        </section>
        <section anchor="streaming-with-broker">
          <name>Streaming Remote Attestation with a Broker</name>
          <t>This model includes a Broker to facilitate the distribution of messages between RATS roles, such as Attesters and Verifiers.
The Broker is a trusted third party and acts as an intermediary that ensures messages are securely and reliably conveyed between involved RATS roles.
The publish-subscribe messaging pattern is widely used for communication in different areas.
An example for a publish-subscribe model with a Broker is the Message Queuing Telemetry Transport <xref target="MQTT"/>.
Unlike the <em>Streaming Remote Attestation without a Broker</em> interaction model, Attesters are not required 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 particular publish-subscribe models and implementations, involved roles can be publishers, subscribers or both.</t>
          <t>The Broker and Handle Distributor are considered to be trusted third parties (TTPs) for all other participating roles, including Attesters and Verifiers (see also <xref target="security-and-privacy-considerations"/>).
All roles must establish a trust relationship with the Broker and Handle Distributor, as those are responsible for the secure and reliable dissemination of critical protocol information, such as Handles and Attestation Results.</t>
          <t>Ensuring the security of these trusted third parties is vital, as any compromise could undermine the entire remote attestation procedure.
Therefore, the deployment of Brokers and Handle Distributors requires stringent security measures to protect against unauthorized access and to ensure that they operate as trustworthy facilitators within the remote attestation framework.</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>
            <figure anchor="fig-streaming-with-broker-cr-handle-gen">
              <name>Figure 6: 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="256" width="584" viewBox="0 0 584 256" 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,144" fill="none" stroke="black"/>
                    <path d="M 48,176 L 48,224" 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,112 L 336,192" 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,80" fill="none" stroke="black"/>
                    <path d="M 536,144 L 536,160" fill="none" stroke="black"/>
                    <path d="M 536,208 L 536,224" fill="none" stroke="black"/>
                    <path d="M 560,176 L 560,184" 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 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 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,160 L 328,160" fill="none" stroke="black"/>
                    <path d="M 344,176 L 416,176" fill="none" stroke="black"/>
                    <path d="M 56,208 L 232,208" fill="none" stroke="black"/>
                    <polygon class="arrowhead" points="352,176 340,170.4 340,181.6 " fill="black" transform="rotate(180,344,176)"/>
                    <polygon class="arrowhead" points="336,160 324,154.4 324,165.6 " fill="black" transform="rotate(0,328,160)"/>
                    <polygon class="arrowhead" points="64,208 52,202.4 52,213.6 " fill="black" transform="rotate(180,56,208)"/>
                    <g class="text">
                      <text x="52" y="52">Attester</text>
                      <text x="308" y="52">PubSub</text>
                      <text x="364" 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="536" y="116">|</text>
                      <text x="508" y="132">generateHandle()</text>
                      <text x="476" y="148">handle</text>
                      <text x="516" y="148">&lt;=</text>
                      <text x="96" y="164">sub(topic=AttReq)</text>
                      <text x="492" y="180">pub(topic=AttReq</text>
                      <text x="536" y="196">handle)</text>
                      <text x="324" y="212">notify(topic=AttReq,</text>
                      <text x="440" y="212">handle)</text>
                      <text x="336" y="228">|</text>
                      <text x="48" y="244">~</text>
                      <text x="336" y="244">~</text>
                      <text x="536" y="244">~</text>
                    </g>
                  </svg>
                </artwork>
                <artwork type="ascii-art"><![CDATA[
.----------.                     .---------------.          .----------.
| Attester |                     | PubSub Server |          | Verifier |
'----+-----'                     '-------+-------'          '-----+----'
     |                                   |                        |
==========================[Handle Generation]===========================
     |                                   |                        |
     |                                   |             generateHandle()
     |                                   |              handle <= |
   sub(topic=AttReq) ------------------->|                        |
     |                                   |<--------- pub(topic=AttReq,
     |                                   |                     handle)
     |<---------------------- notify(topic=AttReq, handle)        |
     |                                   |                        |
     ~                                   ~                        ~
]]></artwork>
              </artset>
            </figure>
            <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 generated by the Verifier on a per-request basis.
In the sequence diagram above, the Verifier initiates an attestation by generating a new handle and publishing it to the "AttReq" (= Attestation Request) topic on the PubSub server.
The PubSub server then forwards this handle to the Attester by notifying it.
This mechanism ensures that each handle is uniquely associated with a specific attestation request, thereby enhancing security by preventing replay attacks.</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>
            <figure anchor="fig-streaming-with-broker-ud-handle-gen">
              <name>Figure 7: 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>
            </figure>
            <t>Handles are created by a trusted third party, the Handle Distributor (see <xref target="security-and-privacy-considerations"/>).
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>
            <figure anchor="fig-streaming-with-broker-evidence-gen">
              <name>Figure 8: Evidence Generation and Appraisal for Remote Attestation over Publish-Subscribe</name>
              <artset>
                <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="672" width="584" viewBox="0 0 584 672" 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,608" 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,616" 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,616" 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,616" fill="none" stroke="black"/>
                    <path d="M 560,560 L 560,568" fill="none" stroke="black"/>
                    <path d="M 576,64 L 576,96" fill="none" stroke="black"/>
                    <path d="M 576,176 L 576,608" 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,624 L 560,624" 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,624 C 15.16936,624 8,616.83064 8,608" fill="none" stroke="black"/>
                    <path d="M 560,624 C 568.83064,624 576,616.83064 576,608" 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,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="260" 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="260" y="324">attEnvIDs,</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">verInputs)</text>
                      <text x="432" y="596">attestationResult</text>
                      <text x="516" y="596">&lt;=</text>
                      <text x="48" y="644">|</text>
                      <text x="336" y="644">|</text>
                      <text x="536" y="644">|</text>
                      <text x="48" y="660">~</text>
                      <text x="336" y="660">~</text>
                      <text x="536" y="660">~</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, attEnvIDs,    |                        |    |
|    |             collectedClaims)      |                        |    |
|    | => evidence                       |                        |    |
|    |                                   |                        |    |
|  pub(topic=AttEv,                      |                        |    |
|    | evidence, eventLogs) ------------>|                        |    |
|    |                                   |                        |    |
|    |                               notify(topic=AttEv,          |    |
|    |                                   |  evidence,             |    |
|    |                                   |  eventLogs) ---------->|    |
|    |                                   |                        |    |
| ========================[Evidence Appraisal]======================== |
|    |                                   |                        |    |
|    |                                   |           appraiseEvidence( |
|    |                                   |                   evidence, |
|    |                                   |                  eventLogs, |
|    |                                   |                  verInputs) |
|    |                                   |   attestationResult <= |    |
|    |                                   |                        |    |
 '--------------------------------------------------------------------'
     |                                   |                        |
     ~                                   ~                        ~
]]></artwork>
              </artset>
            </figure>
            <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.
The definition of delta Evidence is provided in <xref target="handle-lifecycle-and-propagation-delays"/>.</t>
            <t>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>
            <figure anchor="fig-streaming-with-broker-ar-gen">
              <name>Figure 9: Attestation Result Generation for Remote Attestation over Publish-Subscribe</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,176 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,176 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="336" y="148">|</text>
                      <text x="536" y="148">|</text>
                      <text x="160" y="164">sub(topic=AttRes,</text>
                      <text x="328" y="164">|</text>
                      <text x="528" y="164">|</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="372" 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>
            </figure>
            <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>
      </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 Trusted Computing Group (TCG) Trusted Software Stack (TSS), and an HSM interoperable with the Trusted Platform Module Library specifications, e.g., a Trusted Platform Module (TPM) 2.0 or equivalent implementation.
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>This document outlines three interaction models for remote attestation procedures (RATS) <xref target="RFC9334"/>.
While the subsequent sections address additional security and privacy considerations, the security considerations from <xref section="12" sectionFormat="of" target="RFC9334"/> must also be adhered to.
Additionally, for TPM-based remote attestation, the security considerations outlined in <xref section="5" sectionFormat="of" target="RFC9683"/> should be taken into account.</t>
      <section anchor="cryptographic-blinding">
        <name>Cryptographic Blinding</name>
        <t>In a remote attestation procedure, both the Verifier and the Attester may choose to cryptographically blind certain attributes to enhance privacy.
For example, specific information can be included in the signature after being processed through a one-way function, such as a hash function.</t>
      </section>
      <section anchor="trust-assumptions-on-the-handle-distributor">
        <name>Trust Assumptions on the Handle Distributor</name>
        <t>The handle distributor, as a third party in remote attestation scenarios, holds a critical position similar to that of a Trusted Third Party (TTP).
Given its role in generating handles, it has the potential to influence the attestation process significantly.
The integrity and reliability of the handles it produces are pivotal for ensuring that the attestation evidence remains trustworthy and that the attestation process is not susceptible to manipulation or interference.</t>
        <section anchor="security-assumptions">
          <name>Security Assumptions</name>
          <ul spacing="normal">
            <li>
              <em>Integrity and Authenticity</em>:
It is assumed that the handle distributor operates with high levels of integrity and authenticity.
Handles generated by the distributor must be secure, unique, and verifiable.
This ensures that they cannot be forged or reused maliciously.</li>
            <li>
              <em>Isolation and Protection</em>:
The handle distributor must be isolated and protected from unauthorized access and attacks.
This includes physical security measures for hardware that might house the handle distributor's operations, as well as cybersecurity measures to protect against online threats.</li>
            <li>
              <em>Auditability</em>:
The operations of the handle distributor should be auditable.
This allows for the verification of its compliance with security policies and the integrity of its operations.
Regular audits help to ensure that the handle distributor is functioning as expected and has not been compromised.</li>
            <li>
              <em>Transparency</em>:
While maintaining security and confidentiality, the processes by which handles are generated and distributed should be as transparent as possible to authorized parties.
This helps in building trust and verifying that handles are distributed in a fair and unbiased manner.</li>
          </ul>
        </section>
        <section anchor="mitigating-risks">
          <name>Mitigating Risks</name>
          <t>To mitigate risks associated with the handle distributor being a central point of potential failure or attack, several measures should be implemented:</t>
          <ul spacing="normal">
            <li>
              <em>Redundancy</em>:
Deploying multiple, geographically dispersed handle distributors can ensure continuity of service even if one distributor is compromised or fails.</li>
            <li>
              <em>Cryptographic Security</em>:
Using strong cryptographic techniques to protect the generation and transmission of handles ensures that they cannot be tampered with during distribution.</li>
            <li>
              <em>Certification and Compliance</em>:
The handle distributor should comply with relevant security standards and undergo regular security certifications.
This ensures that they meet industry-wide security benchmarks and maintain high levels of trust.</li>
          </ul>
          <t>By defining and adhering to these security assumptions, the role of the handle distributor in remote attestation procedures can be securely managed, minimizing risks and enhancing the overall trust in the attestation process.</t>
        </section>
      </section>
      <section anchor="security-considerations-for-brokers-in-remote-attestation">
        <name>Security Considerations for Brokers in Remote Attestation</name>
        <t>The role of the Broker in the "Streaming Remote Attestation with a Broker model" introduces potential security vulnerabilities, including the ability to perform cross-application attacks by manipulating handles and topics.
To mitigate these risks, it is essential to implement robust security measures:</t>
        <ul spacing="normal">
          <li>
            <em>End-to-End Authentication:</em>
Establishing end-to-end authenticated channels between Attesters and Verifiers ensures that data integrity and authenticity are preserved across the communication process.
This measure prevents the Broker from altering the content of the messages, including Handles and other sensitive data.</li>
          <li>
            <em>Strong Isolation of Topics:</em>
Implementing strong isolation mechanisms for topics can help prevent the Broker from inadvertently or maliciously routing notifications to unauthorized parties.
This includes using secure naming conventions and access controls that restrict the Broker's ability to manipulate topic subscriptions.</li>
          <li>
            <em>Trusted Association Verification:</em>
To further safeguard against confusion attacks where the Broker might misroute notifications, mechanisms should be in place to verify the trust association between senders and receivers continuously.
This can be facilitated by cryptographic assurances, such as digital signatures and trusted certificates that validate the sender's identity and the integrity of the message content.</li>
          <li>
            <em>Audit and Monitoring:</em>
Regular audits and real-time monitoring of Broker activities can detect and respond to anomalous behavior that might indicate security breaches or manipulation attempts.
Logging all actions performed by the Broker provides an audit trail that can be critical for forensic analysis.</li>
          <li>
            <em>Broker as a Trusted Third Party (TTP):</em>
Recognizing the Broker as a TTP necessitates stringent security certifications and compliance with security standards to ensure that they operate under strict governance and security protocols.
This includes regular security assessments and certifications that validate the Broker's security practices.</li>
        </ul>
        <t>By addressing these vulnerabilities proactively, the integrity and confidentiality of the attestation process can be maintained, reducing the risks associated with Broker-mediated communication in remote attestation scenarios.
It is crucial for solution architects to incorporate these security measures during the design and deployment phases to ensure that the attestation process remains secure and trustworthy.</t>
      </section>
      <section anchor="additional-application-specific-security-considerations">
        <name>Additional Application-Specific Security Considerations</name>
        <t>The security and privacy requirements for remote attestation can vary significantly based on the deployment environment, the nature of the attestation mechanisms used, and the specific threats each scenario faces.
This section details additional security considerations that are pertinent to the interaction models discussed in this document.</t>
        <section anchor="confidentiality">
          <name>Confidentiality</name>
          <t>The need for confidentiality in the transmission of attestation information is critical, particularly when exchanges occur over public or untrusted networks, such as the public Internet.
For instance, in the <em>Streaming Remote Attestation with a Broker</em> model (cf.<xref target="streaming-with-broker"/>), where data might traverse multiple nodes, employing TLS can provide necessary confidentiality protections.
Similarly, for scenarios involving sensitive environments like carrier management networks, evaluating the confidentiality of the transport medium is crucial to ensure that attestation data remains secure against interception or eavesdropping.</t>
        </section>
        <section anchor="mutual-authentication">
          <name>Mutual Authentication</name>
          <t>Mutual authentication is particularly relevant in models such as the <em>Challenge/Response Remote Attestation</em> (cf. <xref target="challenge-response"/>) where both the Attester and the Verifier engage in bidirectional exchanges of sensitive information.
Ensuring that both parties can authenticate each other prevents impersonation attacks, enhancing the trustworthiness of the attestation results.</t>
        </section>
        <section anchor="hardware-enforcementsupport">
          <name>Hardware Enforcement/Support</name>
          <t>In environments where the integrity and security of attestation evidence are paramount, hardware-based security features play a critical role.
Technologies like Hardware Security Modules (HSMs), Physically Unclonable Functions (PUFs), and Trusted Execution Environments (TEEs) provide robust protections against tampering and unauthorized access.
These are especially important in high-security settings such as financial services or military applications, where attestation processes must rely on physically secure and tamper-resistant components to meet stringent regulatory and security standards.</t>
          <t>By addressing these application-specific security requirements within the context of defined interaction models, security strategies can be tailored to fit the unique challenges and operational contexts of different attestation scenarios.</t>
        </section>
      </section>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Olaf Bergmann, Michael Richardson, and Ned Smith</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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>
        <referencegroup anchor="BCP205" target="https://www.rfc-editor.org/info/bcp205">
          <reference anchor="RFC7942" target="https://www.rfc-editor.org/info/rfc7942">
            <front>
              <title>Improving Awareness of Running Code: The Implementation Status Section</title>
              <seriesInfo name="DOI" value="10.17487/RFC7942"/>
              <seriesInfo name="RFC" value="7942"/>
              <seriesInfo name="BCP" value="205"/>
              <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
              <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>
        </referencegroup>
        <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>
        <reference anchor="I-D.ietf-rats-epoch-markers">
          <front>
            <title>Epoch Markers</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-rats-epoch-markers-02"/>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="9" month="October" year="2025"/>
            <abstract>
              <t>   This document defines Epoch Markers as a means to establish a notion
   of freshness among actors in a distributed system.  Epoch Markers are
   similar to "time ticks" and are produced and distributed by a
   dedicated system known as the Epoch Bell.  Systems receiving Epoch
   Markers do not need to track freshness using their own understanding
   of time (e.g., via a local real-time clock).  Instead, the reception
   of a specific Epoch Marker establishes a new epoch that is shared
   among all recipients.  This document defines Epoch Marker types,
   including CBOR time tags, RFC 3161 TimeStampToken, and nonce-like
   structures.  It also defines a CWT Claim to embed Epoch Markers in
   RFC 8392 CBOR Web Tokens, which serve as vehicles for signed protocol
   messages.

              </t>
            </abstract>
          </front>
        </reference>
        <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="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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="RFC9683">
          <front>
            <title>Remote Integrity Verification of Network Devices Containing Trusted Platform Modules</title>
            <seriesInfo name="DOI" value="10.17487/RFC9683"/>
            <seriesInfo name="RFC" value="9683"/>
            <author fullname="G. C. Fedorkow" initials="G. C." role="editor" surname="Fedorkow"/>
            <author fullname="E. Voit" initials="E." surname="Voit"/>
            <author fullname="J. Fitzgerald-McKay" initials="J." surname="Fitzgerald-McKay"/>
            <date month="December" year="2024"/>
            <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 (TPMs), 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="RFC9783">
          <front>
            <title>Arm's Platform Security Architecture (PSA) Attestation Token</title>
            <seriesInfo name="DOI" value="10.17487/RFC9783"/>
            <seriesInfo name="RFC" value="9783"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="S. Frost" initials="S." surname="Frost"/>
            <author fullname="M. Brossard" initials="M." surname="Brossard"/>
            <author fullname="A. Shaw" initials="A." surname="Shaw"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="June" year="2025"/>
            <abstract>
              <t>Arm's Platform Security Architecture (PSA) is a family of hardware and firmware security specifications, along with open-source reference implementations, aimed at helping device makers and chip manufacturers integrate best-practice security into their products. Devices that comply with PSA can generate attestation tokens as described in this document, which serve as the foundation for various protocols, including secure provisioning and network access control. This document specifies the structure and semantics of the PSA attestation token.</t>
              <t>The PSA attestation token is a profile of the Entity Attestation Token (EAT). This specification describes the claims used in an attestation token generated by PSA-compliant systems, how these claims are serialized for transmission, and how they are cryptographically protected.</t>
              <t>This Informational document is published as an Independent Submission to improve interoperability with Arm's architecture. It is not a standard nor a product of the IETF.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC9781">
          <front>
            <title>A Concise Binary Object Representation (CBOR) Tag for Unprotected CBOR Web Token Claims Sets (UCCS)</title>
            <seriesInfo name="DOI" value="10.17487/RFC9781"/>
            <seriesInfo name="RFC" value="9781"/>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="J. O'Donoghue" initials="J." surname="O'Donoghue"/>
            <author fullname="N. Cam-Winget" initials="N." surname="Cam-Winget"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="May" year="2025"/>
            <abstract>
              <t>This document defines the Unprotected CWT Claims Set (UCCS), a data format for representing a CBOR Web Token (CWT) Claims Set without protecting it by a signature, Message Authentication Code (MAC), or encryption. UCCS enables the use of CWT claims in environments where protection is provided by other means, such as secure communication channels or trusted execution environments. This specification defines a CBOR tag for UCCS and describes the UCCS format, its encoding, and its processing considerations. It also discusses security implications of using unprotected claims sets.</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="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>
        <reference anchor="lampson06">
          <front>
            <title>Practical Principles for Computer Security</title>
            <author initials="B." surname="Lampson" fullname="Butler Lampson">
              <organization/>
            </author>
            <date year="2006"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-rats-endorsements">
          <front>
            <title>RATS Endorsements</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-rats-endorsements-07"/>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Armidale Consulting</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="25" month="August" year="2025"/>
            <abstract>
              <t>   In the IETF Remote Attestation Procedures (RATS) architecture, a
   Verifier accepts Evidence and, using Appraisal Policy typically with
   additional input from Endorsements and Reference Values, generates
   Attestation Results in formats that are useful for Relying Parties.
   This document illustrates the purpose and role of Endorsements and
   discusses some considerations in the choice of message format for
   Endorsements in the scope of the RATS architecture.

   This document does not aim to define a conceptual message format for
   Endorsements and Reference Values.  Instead, it extends RFC9334 to
   provide further details on Reference Values and Endorsements, as
   these topics were outside the scope of the RATS charter when RFC9334
   was developed.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.ietf-rats-network-device-subscription">
          <front>
            <title>Attestation Event Stream Subscription</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-rats-network-device-subscription-07"/>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="21" month="July" year="2025"/>
            <abstract>
              <t>   This document defines how to subscribe to YANG Event Streams for
   Remote Attestation Procedures (RATS).  In RATS, the Conceptional
   Messages defined can potentially be subscribed to.  Specifically, the
   YANG module defined in this document augments the YANG module for
   TPM-based Challenge-Response based Remote Attestation (CHARRA) to
   allow for subscription to the Conceptual Message type Evidence.
   Additionally, this document provides the methods and means to define
   additional Event Streams for other Conceptual Messages than Evidence
   as illustrated in the RATS Architecture, e.g., Attestation Results,
   Reference Values, or Endorsements.  The module defined requires at
   least one TPM 1.2, TPM 2.0, or equivalent hardware implementation
   providing the same protected capabilities as TPMs to be available in
   the Attester the YANG server is running on.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC4949">
          <front>
            <title>Internet Security Glossary, Version 2</title>
            <seriesInfo name="DOI" value="10.17487/RFC4949"/>
            <seriesInfo name="RFC" value="4949"/>
            <seriesInfo name="FYI" value="36"/>
            <author fullname="R. Shirey" initials="R." surname="Shirey"/>
            <date month="August" year="2007"/>
            <abstract>
              <t>This Glossary provides definitions, abbreviations, and explanations of terminology for information system security. The 334 pages of entries offer recommendations to improve the comprehensibility of written material that is generated in the Internet Standards Process (RFC 2026). The recommendations follow the principles that such writing should (a) use the same term or definition whenever the same concept is mentioned; (b) use terms in their plainest, dictionary sense; (c) use terms that are already well-established in open publications; and (d) avoid terms that either favor a particular vendor or favor a particular technology or mechanism over other, competing techniques that already exist or could be developed. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
        </reference>
      </references>
    </references>
    <?line 1098?>

<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:
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
SqkZ/F9j69yVwCkBAA==

-->

</rfc>
