<?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-18" 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-18"/>
    <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="September" day="17"/>
    <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>Linaro</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="3" month="July" 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.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-epoch-markers-05"/>
        </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>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="16" month="September" year="2026"/>
            <abstract>
              <t>   In the IETF Remote Attestation Procedures (RATS) architecture, 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 extends RFC9334 to
   provide further details on Reference Values and Endorsements, as
   these topics were outside the scope of the RATS charter when RFC9334
   was developed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-endorsements-10"/>
        </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="16" month="June" 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-13"/>
        </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>
      <figure anchor="fig-coserv-transaction">
        <name>Endorsement Collection using CoSERV</name>
        <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)
]

# An Examplary Interaction Model for Endorsement Retrieval with Implicit Handles

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 `handle` to include this extra-data in the conveyance of evidence.
However, the conveyance of other Conceptual Messages (see {{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.

CoSERV ({{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.

The absence of an explicit `handle` in the CoSERV query language does not imply a lack of corresponding semantics.
The problem with including an explicit `handle` information element in CoSERV is that it would introduce unique data for each transaction, which would undermine CoSERV's caching mechanism (see {{Section 3.4.3 of I-D.ietf-rats-coserv}}).

Instead, since the `attEnvIDs` and `claimSelection` information elements can be mapped to the key elements of the stateful environment query (see {{Section 3.3.1 of I-D.ietf-rats-coserv}}), their combination represents the start of an epoch (see {{I-D.ietf-rats-epoch-markers}}).
Essentially, the URL in the GET request becomes the `handle` in the interaction.
The `generateEndorsements` operation illustrated in {{fig-coserv-transaction}} signs a set of Endorsements and Reference Values (typically, one or more CoRIM tags {{I-D.ietf-rats-corim}}) alongside the query and expiration timestamp for the response.
Semantically, this makes the URL in the GET request a `handle` 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 {{I-D.ietf-rats-epoch-markers}}.

{{fig-coserv-transaction}} illustrates the "query by environment" CoSERV variant (see {{Section 3.3 of I-D.ietf-rats-coserv}}.
The RATS roles of Verifier, Endorser and Reference Value Provider can take on an additional *logistic* role of CoSERV producer and consumer.

~~~~ aasvg
.-------------------.                                .-----------------.
|  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 <= |
     |                                                            |
]]></sourcecode>
      </figure>
      <t>~~~~</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
xSddK9UHZ16vLQoVaFkUwAe22Bh7A9+8PKWlSwQ+wTymaWzLZqN3ErvOrHEw
AFWIMinTRVWsi3jepNmlOYmEGeGp9Az+Sx3XCMqYOGUFqBijXkh9Y6+vT/8y
piFub7M0ec/ntncrU2fPN+nXOkXJ+rFHjeKVofmNWBDiZKhb540lMloM0wZT
DKbLKOVyQ73B4IbMCeQDAEkdyUQfpU7obN5kifIPCAO0qZBFpxoF2Vp1EERp
wiOQtPq1J2bAHm52F05ur4jnaG8AsnAnfe9Riiq4e1ZPLuqJ+hMHlhGe+ziL
jt+EG9iTBfY65lnvCYnvcUo3pWAUaFQFe1UOgO6NensXJuFhj+UEGg74bYBZ
C3uYn4hVAXtU6YXqDCyjW1EXBeVcqOXpdya90E6sUD9JSpWEoS2t5QgEmTXt
yJod2UHs+ohY7ofa2JLbySOUJGXUpIAM7PSOQFJsJG9d7k2opwK6qUTKYOQc
YabfNvdB4sGSobLPlxXEqUwtUkmwZCIJuzO2YVdm6m4Zx6xPbzk8sY9D5VPZ
P6UsW4UK0gPc1vdNwuTG/Q9YscpLlnNao0xjnfXpWo4J5QwB8y9jErXC/XUF
gJ7iZGlxhv/rYq1s6mmbjTrqsV03oG1h9g+UXScDpHeJE1UHLBrI6gdAwDjG
w0Wdzq18QNWHdtv2fpiRb2NUv2EPUldsTeoCaBipZQdWtUaEqhfuRgYN8mZ0
7isXJZJOqhqG11nI2ceYCS2jo0PW2uw0bapUYRWKi0OtyjQtpxEOpALhHp7d
zgrQt1WSruIxaB5T0ph2daikV3c6WrC3VRfDIEfOcibXXTOlPdrW3hYF9J2/
pxpTGR0vx8UfaklLpVilla8tkM9z5WDb7/Uej4JWvk3vyWiLkFXv6cjjG+89
G/lawluLE1sSUMijxhArNr/oKil7yWPZ2wdZGrpFj1KeMJFeJlj5297GwNrD
wG096hQHbtwFV7BMeWwuXncbw2rmYwux23e/7Dj3++oxf+sm8yK4L1hwf7S/
up8u8/fcZn5zf+JbZJjdRwPau3ddbWaXfeY0Nd3cF/SFXVJqfoCTP4//3vfF
3DqbWN+yo676hxqL89a7D2ZzdqWw0tEOk0pRZmv3zeqnd9lR5xe8xjYZEp3P
/PumwI1Yq8OoGEoF6hxrnziGc//Mhnq8ILP+TFHXEp638Hht92rPO0ba3+f2
+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
rLug555W+z+rODU7eFwBAA==

-->

</rfc>
