<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-reference-interaction-models-20" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.0 -->
  <front>
    <title abbrev="REIM">Reference Interaction Models for Remote Attestation Procedures</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-reference-interaction-models-20"/>
    <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="2026" month="October" day="28"/>
    <area>Security</area>
    <workgroup>RATS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 138?>

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

<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>
          <t><em>Challenge/Response Remote Attestation</em>:
A Verifier actively challenges an Attester and receives time-fresh Evidence in response.</t>
        </li>
        <li>
          <t><em>Uni-Directional Remote Attestation</em>:
An Attester sends Evidence proactively to a Verifier, often using externally generated freshness indicators.</t>
        </li>
        <li>
          <t><em>Streaming Remote Attestation</em>:
A persistent subscription-based model where Evidence is pushed continuously to interested Verifiers, optionally via a broker.</t>
        </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>
          <t>prevent inconsistencies in descriptions of interaction models in other documents, which may occur due to text cloning and evolution over time, and to</t>
        </li>
        <li>
          <t>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.</t>
        </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 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="nonce-disambiguation">
        <name>Nonce Disambiguation</name>
        <t>The term "nonce" can be used in different security disciplines with different intended security properties. In order to avoid confusion, this document distinguishes the following contexts:</t>
        <dl>
          <dt>Attestation nonce (freshness handle):</dt>
          <dd>
            <t>A nonce used as a Handle in a remote attestation interaction model to provide replay protection and/or evidence freshness. It is conveyed to an Attesting Environment and is cryptographically bound into Evidence. Depending on deployment, an attestation nonce MAY also serve as a claims-collection control signal (e.g., to invalidate cached claims and trigger re-collection of fresh claims), and it may be provisioned before a reboot and then included with Evidence collected after boot.</t>
          </dd>
        </dl>
        <ul spacing="normal">
          <li>
            <dl>
              <dt>TLS nonce:</dt>
              <dd>
                <t>Random values used within TLS handshakes and key derivation. These are not Handles and are unrelated to Evidence freshness semantics in this document.</t>
              </dd>
            </dl>
          </li>
          <li>
            <dl>
              <dt>Signature nonce (e.g., ECDSA nonce):</dt>
              <dd>
                <t>Ephemeral randomness used internally by some signature algorithms. These are not protocol-visible Handles and have different security requirements (e.g., uniqueness and secrecy) than attestation nonces.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <t>Unless explicitly stated otherwise, when this document uses the term "nonce" in the context of Handles, it refers to an <em>attestation nonce</em> with the purpose to demonstrate freshness.</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>
          <t>outlines common interaction models between RATS roles;</t>
        </li>
        <li>
          <t>illustrates interaction models using the conveyance of Evidence about boot-time integrity as an example throughout this document;</t>
        </li>
        <li>
          <t>does not exclude the application of those interaction models to runtime integrity or the conveyance of other RATS Conceptual Messages;</t>
        </li>
        <li>
          <t>does not cover every detail about Evidence conveyance.</t>
        </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.</t>
        </dd>
        <dt/>
        <dd>
          <t>This can be achieved by digitally signing the Attestation Evidence (i.e., explicit authentication) and conveying that signed Evidence to the Verifier, without requiring additional authentication handshakes beyond those needed for conveyance.</t>
        </dd>
        <dt/>
        <dd>
          <t>Alternatively, Evidence can be conveyed over a secure channel that provides authentication (see Sections 3 and 4 of <xref target="RFC9781"/>).</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>For signature validation and appraisal, the Verifier MUST be able to obtain the corresponding verification key material (e.g., a public key or certificate) and the trust anchor(s) needed to establish trust in that material. This may be achieved via provisioning/enrollment, by conveying the identity document together with Evidence, or by providing a stable reference that enables retrieval of the identity document. The concrete distribution and enrollment mechanisms are out of scope of this 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-ies">
      <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>
      <t>The information elements below are grouped with mandatory elements first, followed by optional elements.</t>
      <dl>
        <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 attestation nonces (see <xref target="nonce-disambiguation"/>), which are used to demonstrate freshness (and also protect against replay attacks), and Epoch Markers, which 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.
In contexts where the concrete Handle type matters, this document uses the more specific term (e.g., "attestation nonce" or "Epoch Marker") in addition to the generic term 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>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>Attestation Results are assertions about the integrity or other characteristics of the appraised Attester.</t>
        </dd>
        <dt/>
        <dd>
          <t>Attestation Results are created by Verifiers based on appraised Evidence and other input information. Attestation Results are typically conveyed to Relying Parties and can be used to inform access control decisions.</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>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>A Verifier MAY use such identifiers (or other key identifiers used by a given interaction model) to locate the verification key material and related trust anchors required to validate the Evidence signature.</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>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>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>
      </dl>
      <section anchor="cm-handle">
        <name>Handles as RATS Conceptual Messages</name>
        <t>Handles, whether instantiated as attestation nonces or Epoch IDs, are fundamental to many Remote Attestation protocols.
In all the interaction models presented in this document, Handles are exchanged between RATS roles and used to correlate and lock together the different stages of the interaction.
Given their ubiquity and key role, it is appropriate to recognize them as RATS Conceptual Message in their own right.</t>
        <t>Accordingly, <xref target="iana-handle-cmind"/> registers a new Conceptual Message indicator for Handles to be used with Conceptual Message Wrappers (CMW) <xref target="I-D.ietf-rats-msg-wrap"/>.
A concrete Handle representations requires an associated media type for use with CMW.</t>
      </section>
    </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>
          <t>Challenge/Response (<xref target="challenge-response"/>),</t>
        </li>
        <li>
          <t>Unidirectional (<xref target="unidirectional"/>), and</t>
        </li>
        <li>
          <t>Streaming (<xref target="streaming"/>).</t>
        </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>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.
In this interaction model, that nonce is an attestation nonce (freshness handle) as described in <xref target="nonce-disambiguation"/>.</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>Nevertheless, in order to validate the Evidence signature, the Verifier needs access to the verification key material corresponding to the selected Attestation Key ID(s), as well as the trust anchors required to establish trust in that key material. This trust material may be provisioned/enrolled out of band, conveyed alongside Evidence, or retrieved via a stable reference to an identity 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 selectively disclosed (e.g., via hashing) as discussed in Section <xref target="cryptographic-blinding"/> or, for example, via the use of <xref target="I-D.ietf-spice-sd-cwt"/> in <xref target="RFC9711"/>.
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>
            <t>In Challenge/Response interaction models, the Handle (e.g., an attestation nonce) can be generated by different trusted roles depending on deployment context.
In the Passport model, the Handle MAY be generated by the Relying Party and conveyed as part of the <tt>requestEvidence(...)</tt> call; alternatively, it MAY be generated by the Verifier and conveyed to the Attester (e.g., via the Relying Party or other protocol mechanisms).</t>
            <figure anchor="fig-passport">
              <name>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>
            <t>As in the Passport model, the Handle MAY be generated by the Relying Party (as depicted), or it MAY originate from the Verifier and be conveyed to the Attester by protocol-specific means.</t>
            <figure anchor="fig-background-check">
              <name>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>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="144" y="756">generateEvidence(handleDelta,</text>
                  <text x="308" y="756">attEnvIDs,</text>
                  <text x="440" 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(handleDelta, 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, Evidence may be conveyed as full Evidence or as delta Evidence. Regardless of whether delta Evidence is used, each Evidence conveyance is bound to a current Handle.
In the diagrams, <tt>handleDelta</tt> denotes the Handle associated with the delta Evidence conveyance, which may be the same as the previous Handle or a newly issued Handle (e.g., for a new Epoch or freshness window).
The concrete rules for when a Handle is rotated (resulting in a new <tt>handleDelta</tt>) are deployment- and protocol-specific and are out of scope of this document.</t>
        <t>Note: If a Verifier does not receive the current Handle (e.g., due to propagation loss or delay), it may be unable to determine Evidence freshness for the corresponding Epoch.
In such cases, Evidence appraisal cannot be completed until re-synchronization occurs.
Error signaling and re-synchronization mechanisms are protocol-specific and out of scope of this document.</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 as identified by an Epoch Marker handle.</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>
              <t><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.</t>
            </li>
            <li>
              <t><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.</t>
            </li>
            <li>
              <t><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.</t>
            </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 publish-subscribe pattern <xref target="DesignPatterns"/> and the observer pattern <xref target="ISIS"/>.
It entails establishing subscription state to enable continuous remote attestation.
In the publish-subscribe pattern, a central broker is used to distribute messages between publishers and subscribers.
The broker receives messages from publishers and forwards them to the appropriate subscribers.
In the observer pattern, however, observers are connected directly to target resources, without a broker (oub/sub only).</t>
        <section anchor="streaming-without-broker">
          <name>Streaming Remote Attestation without a Broker</name>
          <figure anchor="fig-streaming-without-broker">
            <name>Streaming Remote Attestation without a Broker</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="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="144" y="756">generateEvidence(handleDelta,</text>
                    <text x="308" y="756">attEnvIDs,</text>
                    <text x="440" 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(handleDelta, 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>Delta Evidence is produced with respect to the previous conveyance, but it is still bound to a (potentially updated) current Handle (e.g., <tt>handleDelta</tt>).
If a new Handle is required, it is conveyed by a subsequent subscribe operation.</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>
              <t>Handle Generation</t>
            </li>
            <li>
              <t>Evidence Generation and Conveyance</t>
            </li>
            <li>
              <t>Evidence Appraisal</t>
            </li>
            <li>
              <t>Attestation Result Generation</t>
            </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>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>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>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>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="400" width="584" viewBox="0 0 584 400" 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,336" 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,344" 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,344" 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,288" fill="none" stroke="black"/>
                    <path d="M 336,320 L 336,344" 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,288 L 536,344" fill="none" stroke="black"/>
                    <path d="M 560,256 L 560,264" fill="none" stroke="black"/>
                    <path d="M 576,64 L 576,96" fill="none" stroke="black"/>
                    <path d="M 576,224 L 576,336" 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,304 L 280,304" fill="none" stroke="black"/>
                    <path d="M 24,352 L 560,352" 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,352 C 15.16936,352 8,344.83064 8,336" fill="none" stroke="black"/>
                    <path d="M 560,352 C 568.83064,352 576,344.83064 576,336" 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,304 140,298.4 140,309.6" fill="black" transform="rotate(180,144,304)"/>
                    <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="496" y="244">pub(topic=AttRes,</text>
                      <text x="528" y="260">{handle</text>
                      <text x="488" y="276">attestationResult})</text>
                      <text x="372" y="308">notify(topic=AttRes,</text>
                      <text x="492" y="308">{handle,</text>
                      <text x="424" y="324">attestationResult})</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>
                      <text x="48" y="388">~</text>
                      <text x="136" y="388">~</text>
                      <text x="336" y="388">~</text>
                      <text x="536" y="388">~</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, |
|    |          |                        |                    {handle, |
|    |          |                        |         attestationResult}) |
|    |          |                        |                        |    |
|    |          |<----------------- notify(topic=AttRes, {handle, |    |
|    |          |                        | 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>
            <t>Attestation Results conveyed to Relying Parties MUST be bound to the Handle used for the corresponding Evidence appraisal (to prevent mix-up and replay across Handles/Epochs, and to enable correlation).
This binding can be achieved by including the Handle in the Attestation Result itself, or by cryptographically binding the Handle to the published message (e.g., signing a structure that includes both Handle and Attestation Result).</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>Selective Disclosure and Obfuscation</name>
        <t>This section uses the term "blinding" in the broad sense of privacy-preserving treatment of attributes prior to disclosure (e.g., selective disclosure, obfuscation, or encryption), and not in the more specific cryptographic sense used for blind signatures.</t>
        <t>In a remote attestation procedure, the Verifier and the Attester may choose to reduce the disclosure of sensitive attributes while still enabling appraisal. For example, an attribute can be conveyed only as a digest that is included in, and protected by, the Evidence signature; or it can be encrypted for an authorized recipient.</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>
              <t><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.</t>
            </li>
            <li>
              <t><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.</t>
            </li>
            <li>
              <t><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.</t>
            </li>
            <li>
              <t><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.</t>
            </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>
              <t><em>Redundancy</em>:
Deploying multiple, geographically dispersed handle distributors can ensure continuity of service even if one distributor is compromised or fails.</t>
            </li>
            <li>
              <t><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.</t>
            </li>
            <li>
              <t><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.</t>
            </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>
            <t><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.</t>
          </li>
          <li>
            <t><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.</t>
          </li>
          <li>
            <t><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.</t>
          </li>
          <li>
            <t><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.</t>
          </li>
          <li>
            <t><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.</t>
          </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>
          <t>Practical example mechanisms to achieve mutual authentication include:</t>
          <dl>
            <dt>Mutual TLS (mTLS):</dt>
            <dd>
              <t>TLS 1.3 <xref target="RFC8446"/> supports mutual authentication via the ertificateRequest message.
The client presents its X.509 certificate and proves possession of the private key, establishing bidirectional trust before attestation data is exchanged.</t>
            </dd>
            <dt>Server-Authenticated TLS with HTTP Authentication:</dt>
            <dd>
              <t>Server-only TLS authentication can be combined with application-layer client authentication.
The server authenticates via its TLS certificate, while the client uses HTTP authentication <xref target="RFC9110"/> such as Basic <xref target="RFC7617"/> or Digest credentials.
This approach suits deployments where client certificates are impractical.</t>
            </dd>
          </dl>
        </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="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="iana-handle-cmind">
        <name>New Conceptual Message Indicator for Handles</name>
        <t>IANA is requested to add a new entry to the "RATS Conceptual Message Wrapper (CMW) Indicators" registry of the "Remote Attestation Procedures (RATS)" registry group <xref target="IANA.rats"/> as described in <xref target="tab-handle-cmind"/>.</t>
        <table anchor="tab-handle-cmind">
          <name>New CMW Indicator for Handles</name>
          <thead>
            <tr>
              <th align="left">Indicator value</th>
              <th align="left">Conceptual Message name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">5</td>
              <td align="left">Handle</td>
              <td align="left">
                <xref target="generic-ies"/> and <xref target="cm-handle"/> of RFCthis</td>
            </tr>
          </tbody>
        </table>
      </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>
            <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>
          <seriesInfo name="RFC" value="3161"/>
          <seriesInfo name="DOI" value="10.17487/RFC3161"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <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>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC7049">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <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>
          <seriesInfo name="RFC" value="7049"/>
          <seriesInfo name="DOI" value="10.17487/RFC7049"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <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>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </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>
              <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>
            <seriesInfo name="BCP" value="205"/>
            <seriesInfo name="RFC" value="7942"/>
            <seriesInfo name="DOI" value="10.17487/RFC7942"/>
          </reference>
        </referencegroup>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <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>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="I-D.ietf-rats-epoch-markers">
          <front>
            <title>Epoch Markers</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>NVIDIA</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Ionuț Mihalcea" initials="I." surname="Mihalcea">
              <organization>Arm</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="20" month="October" year="2026"/>
            <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.  Finally, it registers RATS Conceptual Message Wrapper
   (CMW) Indicators for Epoch ID and Nonce.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-epoch-markers-06"/>
        </reference>
        <reference anchor="RFC9711">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
            <author fullname="G. Mandyam" initials="G." surname="Mandyam"/>
            <author fullname="J. O'Donoghue" initials="J." surname="O'Donoghue"/>
            <author fullname="C. Wallace" initials="C." surname="Wallace"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>An Entity Attestation Token (EAT) provides an attested claims set that describes the state and characteristics of an entity, a device such as a smartphone, an Internet of Things (IoT) device, network equipment, or such. This claims set is used by a relying party, server, or service to determine the type and degree of trust placed in the entity.</t>
              <t>An EAT is either a CBOR Web Token (CWT) or a JSON Web Token (JWT) with attestation-oriented claims.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9711"/>
          <seriesInfo name="DOI" value="10.17487/RFC9711"/>
        </reference>
        <reference anchor="IANA.rats" target="https://www.iana.org/assignments/rats">
          <front>
            <title>Remote Attestation Procedures (RATS)</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <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>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <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>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </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>
            <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>
          <seriesInfo name="Internet-Draft" value="draft-birkholz-rats-tuda-07"/>
        </reference>
        <reference anchor="I-D.ietf-rats-coserv">
          <front>
            <title>Concise Selector for Endorsements and Reference Values</title>
            <author fullname="Paul Howard" initials="P." surname="Howard">
              <organization>Arm</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Shefali Kamal" initials="S." surname="Kamal">
              <organization>Fujitsu</organization>
            </author>
            <author fullname="Giridhar Mandyam" initials="G." surname="Mandyam">
              <organization>AMD</organization>
            </author>
            <author fullname="Ding Ma" initials="D." surname="Ma">
              <organization>Alibaba Cloud</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   In the Remote Attestation Procedures (RATS) architecture, Verifiers
   require Endorsements and Reference Values to assess the
   trustworthiness of Attesters.  This document specifies the Concise
   Selector for Endorsements and Reference Values (CoSERV), a structured
   query/result format designed to facilitate the discovery and
   retrieval of these artifacts from various providers.  CoSERV defines
   a query language and corresponding result structure using CDDL, which
   can be serialized in CBOR format, enabling efficient interoperability
   across diverse systems.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-coserv-07"/>
        </reference>
        <reference anchor="I-D.ietf-rats-corim">
          <front>
            <title>Concise Reference Integrity Manifest</title>
            <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="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>arm</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Independent</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   Remote Attestation Procedures (RATS) enable Relying Parties to assess
   the trustworthiness of a remote Attester and therefore to decide
   whether or not to engage in secure interactions with it.  Evidence
   about trustworthiness can be rather complex and it is deemed
   unrealistic that every Relying Party is capable of the appraisal of
   Evidence.  Therefore that burden is typically offloaded to a
   Verifier.  In order to conduct Evidence appraisal, a Verifier
   requires not only fresh Evidence from an Attester, but also trusted
   Endorsements and Reference Values from Endorsers and Reference Value
   Providers, such as manufacturers, distributors, or device owners.
   This document specifies the information elements for representing
   Endorsements and Reference Values in CBOR format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-corim-11"/>
        </reference>
        <reference anchor="RFC7617">
          <front>
            <title>The 'Basic' HTTP Authentication Scheme</title>
            <author fullname="J. Reschke" initials="J." surname="Reschke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This document defines the "Basic" Hypertext Transfer Protocol (HTTP) authentication scheme, which transmits credentials as user-id/ password pairs, encoded using Base64.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7617"/>
          <seriesInfo name="DOI" value="10.17487/RFC7617"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9683">
          <front>
            <title>Remote Integrity Verification of Network Devices Containing Trusted Platform Modules</title>
            <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>
          <seriesInfo name="RFC" value="9683"/>
          <seriesInfo name="DOI" value="10.17487/RFC9683"/>
        </reference>
        <reference anchor="RFC9783">
          <front>
            <title>Arm's Platform Security Architecture (PSA) Attestation Token</title>
            <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>
          <seriesInfo name="RFC" value="9783"/>
          <seriesInfo name="DOI" value="10.17487/RFC9783"/>
        </reference>
        <reference anchor="RFC9781">
          <front>
            <title>A Concise Binary Object Representation (CBOR) Tag for Unprotected CBOR Web Token Claims Sets (UCCS)</title>
            <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>
          <seriesInfo name="RFC" value="9781"/>
          <seriesInfo name="DOI" value="10.17487/RFC9781"/>
        </reference>
        <reference anchor="DAA">
          <front>
            <title>Direct Anonymous Attestation</title>
            <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>
          <seriesInfo name="ACM" value="Proceedings of the 11th ACM conference on Computer and Communications Security "/>
          <seriesInfo name="page" value="132-145"/>
        </reference>
        <reference anchor="turtles">
          <front>
            <title>Turtles All the Way Down: Foundation, Edifice, and Ruin in Faulkner and McCarthy</title>
            <author initials="R." surname="Rudnicki" fullname="Robert Rudnicki">
              <organization/>
            </author>
            <date year="2010"/>
          </front>
          <seriesInfo name="The Faulkner Journal" value="25.2"/>
          <seriesInfo name="DOI" value="10.1353/fau.2010.0002"/>
        </reference>
        <reference anchor="MQTT">
          <front>
            <title>Message Queuing Telemetry Transport (MQTT) Version 5.0 Committee Specification 02</title>
            <author initials="" surname="OASIS" fullname="Organization for the Advancement of Structured Information Standards">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
          <seriesInfo name="Specification" value="Version 5.0"/>
        </reference>
        <reference anchor="DesignPatterns">
          <front>
            <title>Design Patterns - Elements of Reusable Object-Oriented Software</title>
            <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>
          <seriesInfo name="Publisher" value="Addison-Wesley"/>
        </reference>
        <reference anchor="ISIS">
          <front>
            <title>Exploiting Virtual Synchrony in Distributed Systems</title>
            <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>
          <seriesInfo name="DOI" value="10.1145/41457.37515"/>
        </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>Remote Attestation Procedures (RATS) Endorsements</title>
            <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>NVIDIA</organization>
            </author>
            <date day="14" month="October" year="2026"/>
            <abstract>
              <t>   In the IETF Remote Attestation Procedures (RATS) architecture (RFC
   9334), a Verifier accepts Evidence and uses Appraisal Policy for
   Evidence, typically with additional input from Endorsements and
   Reference Values, to generate 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 updates RFC 9334 by
   refining the description of Endorsements and Reference Values.
   Specifically, this document classifies the RATS conceptual messages
   as actual state, reference state, or appraisal policy, and adds
   considerations on conditionally endorsed values, endorsing
   verification keys, timeliness, and multiple Endorsements.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-endorsements-13"/>
        </reference>
        <reference anchor="I-D.ietf-rats-network-device-subscription">
          <front>
            <title>Attestation Event Stream Subscription</title>
            <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="27" month="October" year="2026"/>
            <abstract>
              <t>   This document defines how to subscribe to YANG Event Streams for
   Remote Attestation Procedures (RATS).  Specifically, this document
   defines a YANG module that augments the YANG module for Trusted
   Platform Module (TPM)-based Challenge-Response Remote Attestation
   (CHARRA), enabling subscription to RATS Conceptual Messages of the
   Evidence type and auxiliary Event Logs as part of that Evidence.  The
   module defined requires at least one Trusted Platform Module (TPM)
   1.2 or TPM 2.0 (or equivalent hardware implementation providing the
   same protected capabilities as a TPM) must be available on the
   Attester on which the YANG server is running.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-network-device-subscription-15"/>
        </reference>
        <reference anchor="I-D.ietf-spice-sd-cwt">
          <front>
            <title>Selective Disclosure CBOR Web Tokens (SD-CWT)</title>
            <author fullname="Michael Prorock" initials="M." surname="Prorock">
              <organization>mesur.io</organization>
            </author>
            <author fullname="Orie Steele" initials="O." surname="Steele">
              <organization>Tradeverifyd</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Rohan Mahy" initials="R." surname="Mahy">
         </author>
            <date day="1" month="June" year="2026"/>
            <abstract>
              <t>   This specification describes a data minimization technique for use
   with CBOR Web Tokens (CWTs).  The approach is inspired by the
   Selective Disclosure JSON Web Token (SD-JWT), with changes to align
   with CBOR Object Signing and Encryption (COSE) and CWTs.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-spice-sd-cwt-08"/>
        </reference>
        <reference anchor="I-D.ietf-rats-msg-wrap">
          <front>
            <title>RATS Conceptual Messages Wrapper (CMW)</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Independent</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <author fullname="Dionna Glaze" initials="D." surname="Glaze">
              <organization>Google LLC</organization>
            </author>
            <date day="11" month="December" year="2025"/>
            <abstract>
              <t>   The Conceptual Messages introduced by the RATS architecture (RFC
   9334) are protocol-agnostic data units that are conveyed between RATS
   roles during remote attestation procedures.  Conceptual Messages
   describe the meaning and function of such data units within RATS data
   flows without specifying a wire format, encoding, transport
   mechanism, or processing details.  The initial set of Conceptual
   Messages is defined in Section 8 of RFC 9334 and includes Evidence,
   Attestation Results, Endorsements, Reference Values, and Appraisal
   Policies.

   This document introduces the Conceptual Message Wrapper (CMW) that
   provides a common structure to encapsulate these messages.  It
   defines a dedicated CBOR tag, corresponding JSON Web Token (JWT) and
   CBOR Web Token (CWT) claims, and an X.509 extension.

   This allows CMWs to be used in CBOR-based protocols, web APIs using
   JWTs and CWTs, and PKIX artifacts like X.509 certificates.
   Additionally, the draft defines a media type and a CoAP content
   format to transport CMWs over protocols like HTTP, MIME, and CoAP.

   The goal is to improve the interoperability and flexibility of remote
   attestation protocols.  Introducing a shared message format such as
   CMW enables consistent support for different attestation message
   types, evolving message serialization formats without breaking
   compatibility, and avoiding the need to redefine how messages are
   handled within each protocol.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-23"/>
        </reference>
        <reference anchor="RFC4949">
          <front>
            <title>Internet Security Glossary, Version 2</title>
            <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>
          <seriesInfo name="FYI" value="36"/>
          <seriesInfo name="RFC" value="4949"/>
          <seriesInfo name="DOI" value="10.17487/RFC4949"/>
        </reference>
      </references>
    </references>
    <?line 1194?>

<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"><![CDATA[
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>
    <section anchor="an-examplary-interaction-model-for-endorsement-retrieval-with-implicit-handles">
      <name>An Examplary Interaction Model for Endorsement Retrieval with Implicit Handles</name>
      <t>The interaction models specified in this document focus on Evidence conveyance.
Evidence conveyance requires an indication of recentness, which a Verifier can use to determine the freshness of Evidence during its appraisal.
This document introduces the information element <tt>handle</tt> to include this extra-data in the conveyance of evidence.
However, the conveyance of other Conceptual Messages (see <xref target="I-D.ietf-rats-msg-wrap"/>) does not necessarily rely on the concept of freshness to the same extent as Evidence.
Examples include: Endorsements and Reference Values.</t>
      <t>CoSERV (<xref target="I-D.ietf-rats-coserv"/>) defines a request/response model for conveying, caching, and potentially aggregating endorsements and reference values, as well as a retrieval and query language for these values that works across various Conceptual Message providers and RATS owner roles.</t>
      <t>The absence of an explicit <tt>handle</tt> in the CoSERV query language does not imply a lack of corresponding semantics.
The problem with including an explicit <tt>handle</tt> information element in CoSERV is that it would introduce unique data for each transaction, which would undermine CoSERV's caching mechanism (see <xref section="3.4.3" sectionFormat="of" target="I-D.ietf-rats-coserv"/>).</t>
      <t>Instead, since the <tt>attEnvIDs</tt> and <tt>claimSelection</tt> information elements can be mapped to the key elements of the stateful environment query (see <xref section="3.3.1" sectionFormat="of" target="I-D.ietf-rats-coserv"/>), their combination represents the start of an epoch (see <xref target="I-D.ietf-rats-epoch-markers"/>).
Essentially, the URL in the GET request becomes the <tt>handle</tt> in the interaction.
The <tt>generateEndorsements</tt> operation illustrated in <xref target="fig-coserv-transaction"/> signs a set of Endorsements and Reference Values (typically, one or more CoRIM tags <xref target="I-D.ietf-rats-corim"/>) alongside the query and expiration timestamp for the response.
Semantically, this makes the URL in the GET request a <tt>handle</tt> that specifies the start of an epoch, while the expiration timestamp specifies the end.
This approach assumes that an entity taking on a RATS role has access to a reliable time source, for example, using an Epoch Bell <xref target="I-D.ietf-rats-epoch-markers"/>.</t>
      <t><xref target="fig-coserv-transaction"/> illustrates the "query by environment" CoSERV variant (see <xref section="3.3" sectionFormat="of" target="I-D.ietf-rats-coserv"/>.
The RATS roles of Verifier, Endorser and Reference Value Provider can take on an additional <em>logistic</em> role of CoSERV producer and consumer.</t>
      <figure anchor="fig-coserv-transaction">
        <name>Endorsement Collection using CoSERV</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="560" width="584" viewBox="0 0 584 560" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
              <path d="M 48,64 L 48,96" fill="none" stroke="black"/>
              <path d="M 48,160 L 48,176" fill="none" stroke="black"/>
              <path d="M 48,208 L 48,256" fill="none" stroke="black"/>
              <path d="M 48,288 L 48,320" fill="none" stroke="black"/>
              <path d="M 48,352 L 48,368" fill="none" stroke="black"/>
              <path d="M 48,416 L 48,464" fill="none" stroke="black"/>
              <path d="M 48,496 L 48,544" fill="none" stroke="black"/>
              <path d="M 168,32 L 168,80" fill="none" stroke="black"/>
              <path d="M 432,32 L 432,80" fill="none" stroke="black"/>
              <path d="M 536,80 L 536,96" fill="none" stroke="black"/>
              <path d="M 536,128 L 536,176" fill="none" stroke="black"/>
              <path d="M 536,240 L 536,256" fill="none" stroke="black"/>
              <path d="M 536,320 L 536,464" fill="none" stroke="black"/>
              <path d="M 536,528 L 536,544" fill="none" stroke="black"/>
              <path d="M 576,32 L 576,80" fill="none" stroke="black"/>
              <path d="M 8,32 L 168,32" fill="none" stroke="black"/>
              <path d="M 432,32 L 576,32" fill="none" stroke="black"/>
              <path d="M 8,80 L 168,80" fill="none" stroke="black"/>
              <path d="M 432,80 L 576,80" fill="none" stroke="black"/>
              <path d="M 8,110 L 160,110" fill="none" stroke="black"/>
              <path d="M 8,114 L 160,114" fill="none" stroke="black"/>
              <path d="M 360,110 L 576,110" fill="none" stroke="black"/>
              <path d="M 360,114 L 576,114" fill="none" stroke="black"/>
              <path d="M 8,190 L 160,190" fill="none" stroke="black"/>
              <path d="M 8,194 L 160,194" fill="none" stroke="black"/>
              <path d="M 416,190 L 576,190" fill="none" stroke="black"/>
              <path d="M 416,194 L 576,194" fill="none" stroke="black"/>
              <path d="M 8,270 L 120,270" fill="none" stroke="black"/>
              <path d="M 8,274 L 120,274" fill="none" stroke="black"/>
              <path d="M 448,270 L 576,270" fill="none" stroke="black"/>
              <path d="M 448,274 L 576,274" fill="none" stroke="black"/>
              <path d="M 56,304 L 192,304" fill="none" stroke="black"/>
              <path d="M 184,448 L 528,448" fill="none" stroke="black"/>
              <path d="M 8,478 L 208,478" fill="none" stroke="black"/>
              <path d="M 8,482 L 208,482" fill="none" stroke="black"/>
              <path d="M 376,478 L 576,478" fill="none" stroke="black"/>
              <path d="M 376,482 L 576,482" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="536,448 524,442.4 524,453.6" fill="black" transform="rotate(0,528,448)"/>
              <polygon class="arrowhead" points="64,304 52,298.4 52,309.6" fill="black" transform="rotate(180,56,304)"/>
              <g class="text">
                <text x="52" y="52">CoSERV</text>
                <text x="116" y="52">producer</text>
                <text x="468" y="52">CoSERV</text>
                <text x="532" y="52">consumer</text>
                <text x="36" y="68">(e</text>
                <text x="64" y="68">g.,</text>
                <text x="120" y="68">Endorser)</text>
                <text x="468" y="68">(e.g.,</text>
                <text x="532" y="68">Verifier</text>
                <text x="216" y="116">[Endorsements</text>
                <text x="316" y="116">Ingestion]</text>
                <text x="48" y="132">|</text>
                <text x="136" y="148">ingestEndorsements(attEnvIDs,</text>
                <text x="288" y="148">claims)</text>
                <text x="68" y="164">=&gt;</text>
                <text x="132" y="164">endorsements</text>
                <text x="208" y="196">[Initiating</text>
                <text x="292" y="196">Evidence</text>
                <text x="372" y="196">Appraisal]</text>
                <text x="536" y="212">|</text>
                <text x="448" y="228">initEvidenceAppraisal(evidence)</text>
                <text x="340" y="244">attEnvIDs,</text>
                <text x="444" y="244">claimSelection</text>
                <text x="516" y="244">&lt;=</text>
                <text x="176" y="276">[Endorsements</text>
                <text x="276" y="276">Collection</text>
                <text x="336" y="276">and</text>
                <text x="400" y="276">Conveyance]</text>
                <text x="536" y="292">|</text>
                <text x="324" y="308">requestEndorsements(attEnvIDs,</text>
                <text x="512" y="308">claimSelection)</text>
                <text x="160" y="340">collectEndorsementClaims(attEnvIDs,</text>
                <text x="368" y="340">claimSelection)</text>
                <text x="68" y="356">=&gt;</text>
                <text x="144" y="356">collectedClaims</text>
                <text x="144" y="388">generateEndorsements(attEnvIDs,</text>
                <text x="104" y="404">claimSelection,</text>
                <text x="236" y="404">collectedClaims)</text>
                <text x="68" y="420">=&gt;</text>
                <text x="132" y="420">endorsements</text>
                <text x="116" y="452">{endorsements}</text>
                <text x="248" y="484">[Evidence</text>
                <text x="332" y="484">Appraisal]</text>
                <text x="536" y="500">|</text>
                <text x="356" y="516">appraiseEvidence(evidence,</text>
                <text x="520" y="516">endorsements)</text>
                <text x="432" y="532">attestationResult</text>
                <text x="516" y="532">&lt;=</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
.-------------------.                                .-----------------.
|  CoSERV producer  |                                | CoSERV consumer |
|  (e.g., Endorser) |                                | (e.g., Verifier |
'----+--------------'                                '------------+----'
     |                                                            |
====================[Endorsements Ingestion]============================
     |                                                            |
  ingestEndorsements(attEnvIDs, claims)                           |
     | => endorsements                                            |
     |                                                            |
====================[Initiating Evidence Appraisal]=====================
     |                                                            |
     |                                  initEvidenceAppraisal(evidence)
     |                               attEnvIDs, claimSelection <= |
     |                                                            |
===============[Endorsements Collection and Conveyance]=================
     |                                                            |
     |<----------------- requestEndorsements(attEnvIDs, claimSelection)
     |                                                            |
  collectEndorsementClaims(attEnvIDs, claimSelection)             |
     | => collectedClaims                                         |
     |                                                            |
  generateEndorsements(attEnvIDs,                                 |
     claimSelection, collectedClaims)                             |
     | => endorsements                                            |
     |                                                            |
     | {endorsements} ------------------------------------------->|
     |                                                            |
==========================[Evidence Appraisal]==========================
     |                                                            |
     |                         appraiseEvidence(evidence, endorsements)
     |                                       attestationResult <= |
     |                                                            |
]]></artwork>
        </artset>
      </figure>
      <t>~~~~</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
O9Y0WXdB/z2t9n8A6t0zIn5cAQA=

-->

</rfc>
