<?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.19 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-reference-interaction-models-17" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="REIM">Reference Interaction Models for Remote Attestation Procedures</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-reference-interaction-models-17"/>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <author initials="M." surname="Eckel" fullname="Michael Eckel">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>michael.eckel@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="W." surname="Pan" fullname="Wei Pan">
      <organization>Huawei Technologies</organization>
      <address>
        <email>william.panwei@huawei.com</email>
      </address>
    </author>
    <author initials="E." surname="Voit" fullname="Eric Voit">
      <organization abbrev="Cisco">Cisco Systems</organization>
      <address>
        <email>evoit@cisco.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="02"/>
    <area>Security</area>
    <workgroup>RATS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 133?>

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

<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-information-elements">
      <name>Generic Information Elements</name>
      <t>This section describes the essential information elements for the interaction models described in <xref target="interaction-models"/>.
These generic information elements may be Conceptual Messages included in the protocol messages or may be added as protocol parameters, depending on the specific solution.</t>
      <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>
    <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="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="2" month="March" 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-03"/>
        </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="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="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>Linaro</organization>
            </author>
            <date day="2" month="March" 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-09"/>
        </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="30" month="March" 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 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 that at
   least one 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-11"/>
        </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="2" month="March" 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-07"/>
        </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 1169?>

<section anchor="coap-fetch-bodies">
      <name>CDDL Specification for a simple CoAP Challenge/Response Interaction</name>
      <t>The following CDDL specification is an exemplary proof-of-concept to illustrate a potential implementation of the Challenge/Response Interaction Model.
The communication protocol used is CoAP.
Both the request message and the response message are exchanged via the FETCH operation and corresponding FETCH request and FETCH response body.</t>
      <t>In this example, Evidence is created via the root-of-trust for reporting primitive operation "quote" that is provided by a TPM 2.0.</t>
      <sourcecode type="cddl"><![CDATA[
charra-bodies = charra-attestation-request / charra-attestation-response

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

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

charra-attestation-response = [
    attestation-data: bytes,  ; TPMS_ATTEST.quoted
    tpm2-signature: bytes,
    ? ak-cert: bytes,         ; TPM2 attestation key certificate (AK Cert)
]
]]></sourcecode>
    </section>
  </back>
  <!-- ##markdown-source:
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
UUF+vTwfUw0jAUxpGu5TU4//n1rjgOKJcpJ1HNJMbRIGZrc3usDdEjb1pc2z
jVEMTEJd4qq6LpxOC0+/zwU+ZLrPkLzTXWmYQOu2ng3bbNa2utI2TXB9URJQ
xHaMTYmdhxDYJqci0EqGUmCXCR0S1uqMfVtAfQkTgAeg0flb1aF4tciPScLY
L0ytXMWm7z0mCu8156skUcqrzQrvQS43cTpMAKAQvOpj7OaydJfuCIX2Wxx0
JGZUje7a2yqadfgXUbs2PJhojVEyBY0nUPprLmw18k5RI7Fb6OXSiNT81n1J
VTbSc0Vmh63AceSpTnCR0jLr0S+m86ZCjMwwk4CWxv8sNGPj7Cws1c9IvXXK
AZdxtQTMsNIEDzSVNNS7upExrN9K7cQFHff3+/cyjAKe5Vyf44MLVLuQY8y5
f4XDqysFS9jXGqsPW+/qdsvUDHsmdi2lJg9er8lqwm7qOprixSzsmbdkqZa8
lY/xUfeM+fhbpGBTvCrLe4EVMw+2ZRZ4PUpKpgBql7QlHj+A5bqdnCMC2c0Z
opL8dVP7QxVQTlI+VTAkE0omEy6eq7dGTHhTH2wHRM4m25ohrIUUF7J0O/gX
MvKhlVXcao410eECDgC2g2OCWND9ipzM/oAd5xoNvvomYVN7t3/UXcXdlIy2
OaLvxhnAT0U4QKpPgVVg1QbQ4eFSAdvgYAknmnM7XmxOgWIa43y1jgJyOOUz
Hfykk5VGS+cSESS8XstBNBgcACcrXU2uM8phRD1Q7Y1ym/h03+ESiW0zgWSA
TGLil/yYJhu68ZhlejyQxA0vdYOU3UEPGy6j4qZp2+ZFjmx7q0q5cSrArDkl
QjFz77X+jJuM4B4KyqnCstQkFt6EDjLkn6tpFouiiGkfuXQsSauqsUtpVTst
cZ5g+rPKK2u2Op4E174zMV/qtgznMgaMrK1nxXROpnqfCL/0Kx9Y93WUm9bM
Bqkh8XiQZXwureBe25mTLW5C/GxB8yhIMBpAvATdlk9Kw0CdNgFntdkTUE1B
Nai4qZY2Q0Kr6qgUOgeY3BPcEGrjdrdg9nrfJNExOlo90Ls4Ib+Co8S18YKX
t5NV6hs3y94WiU66zUl+FXdiyvVcTrbepePXGGqT1/Os2K6Xrm+luspdY87l
zLsbHiyiVHT8Sv6dtU1LpFLOKQf4qR0Hm0wmw5+oX/Y33L3G9hYBjbXvhV7z
aTfn2aMjR4XpQmnSG51qP11hOrxhAHnSCsxMQt9cI378SwvGX5xvbhI+viev
/I38773WNzeNHvc9868IHvfDcu3Y8bYlIgkNvu/Gjj9cE4o72EhkAsdb/+06
/92JMN8aEgmo3vr3TiD29mu0YtO9QeyrFrKfD4ILXwOW9hLXCYN/YvroDYLf
CIrrRMyvg4srwuj/hLvSE0SPnPsx/PgY+g3Y4CcPod8xUjsB9ttCYs7htgs4
8fzbLnGbNIBfPj4L4Jrk8deARmuFo1/C9LdPRh5XSxcQLtH7Dk4+3Om1vYMl
nJsfAJZu+D8Bii3/9NVikHZvB8Va5i3dGooAeQezoq7+148LL9fFmNiS4eKb
4X3+hnDSC9nxHQ+LY89P7XeJ9b702fVoDLh2PXyEdj2WfxUb3QkFJ9xheBwL
COyY7ErHLZxXRvTKm1n7Xu5HMBd7q43fMWe0WevWcVP8D+3XdbzBTJ1RNKW2
kFm8kTxgpxDfGY3I26FfOnMYpKdEzKTYqtcCK75Ad8UWP+soYINpLFBMWSZM
mXI565R7yT2QlHkGu+PYBn5kKcKZvMV55HK4NDezv0tmy7PhO0i6v+54BJwG
Od0aU6lqA7Tl1dYCRt9jEqABH1vkf5HD6fGM6FPSXosOnFyq0ilp5AmY6R05
AHYpuWKdojo51E3f8KemUsp2+/UsebeBaNuYl25QNPHDxP2wg0f1q7Hegqvn
81+N9b4lPm4j0XZjvWOY3wqKsIF3oyVcc++2S2yznu8Inb/a+XaJX+381hJX
2vl3o+2/13i2r7vxRkLw/eptoH+/ehv+i3kbrrHEb/9l3oaWgR4yta+GYqt1
fb0l7KN9n/sWdsfoFUs7bCjfzOLGEs/XeTo+cqqeg/WdrTromxZetpVx8/BN
Cy9/0SbKke52W/DDNy28vGfe+xsLwr3oYwovg88BPZg9/jUrivXf+lXIbf8Q
OzeApR/AX2ChXrkiyLVmQr9YoYWuC5FWcHj9XV8duclCkegoLLgDW7vRQn0f
6oW2ek+19vDBKhKOhvLdp4Homgu9u6uFgv/66OhWdubdQvTRZcV6oUgbBmKY
3LC0+BMg+6Orez2IPqbE11voI/51Tq1j/1yv1re7tVtX/N751qKWOROOWvb+
uxUb2Q5RL/O/gVHxCXB0rX9bCoQ/DiKnuvjjFrJmwk0XClsKtAIv9I/bQcT/
/uEsdDenptWaj9BqJrjQL3cB0S+0kEfORyqr4+iGIkkWujOIPlIe2YU8cURb
c3gJb/V6EN3Z1kLySAC7rlfO35rP4K/e06fbWo88kt31CyV6YNjd2seIozve
Wp84ItCvlEnffQKIgrKodXm3S6RPgaPr/NsmjW4LkX8gH7EQ/XOl0Q0X6hVH
d4psxw6/9b97aGTfwTp31WnJ8974jhPtu7na50LemWu4Zpz2DHqUms05wIk5
of6BgX6BpolE+3meG0sEkOZRk1fUXw2XXzfVkqtW+uPv3YVtJDh7ixkKenIw
z3T1lw7X5LWxwkkgZgaD9J8LjAaQMua+FhBOyUKrRx8NEmpVL9ikhrq/Ud4u
FRyWdgxdHL06Pr/AmTxnL88vbF+WoR7sHZuqV3edbhz9LXXUtAcT6CzIwyh4
Cq9GZd/et0H6/bEP6MXSmXEhM54wsUZPBom9Kc+pzAbMeyviX+bKTJ2ndhpm
cfHymP7Ssa5kDg0m0acXJA9nhKkUU7ulC7DLzJueSJkNrgSawN3DIfGZlHzo
rqP+U7rVszQRDsyexydMdWesy4fNPADZgu2Q95OjefwEbwNUKr+iN9CBugWU
fXurntzclliP9gIBhh3RZW2aRpert9jVBIugZq1ilbl+QKbNYCmn6cDxNs1n
xVshFzNMpWyQQvCHVB0eOx1XyqKmbewyUXPNtazvoYGL7Wxpy1j3DGpljejB
I1c2ZOA2heFBGZIlxJfcOy2NhVmjpOvsOl4whWZFRd0kZpiENTQdUniqpMzF
s6OHAo1ZdAfKVp09YpmIhKrdk5jmntt8JJMFBDwbYScqx2tFVe15nWI/3HFr
tnxUJLAv7NJUlnreX8aDM2ahx1uj5MJovwrl26/q0mEkbh+eQKMcLvg2XYnS
FQrG1Zp4vSnHBG5x8froALvudFvdpqb1cKvND1Ouy9T8ES1mMJZ5+zItZ1QG
tYl2Ly7OhqBNu1fVDVnAN1IEb5se2cqyjR62haiDPY2cKmHp0IDFXswtL7B/
1znumhLPZA4HgnB+MOKS4VR27E9bgO95DJ3Fmt4hyRvuKZ7A/7zB8VNTmm2m
9AdciRlHi6yYkmIDi8DzyusaQk3f8frwj2ybhjpN3oyTAlMvS546pQVr5ZXq
Vtepkqd7Y07K5PUZodnFv1S0Trl+3RlVbbuxtunem1/gTUzlJuncY8wdTqxT
RO3yvDitZG7twvollnCDFZ5PPOd5wgZ056H1Eq59K7GRZ3GROmXZihZR4VxH
h+5c9AGvorYF2MQh2DJG80Dm+HG7hQNOSHYmWpkZW1T8LJt5kc5VskmkHcWZ
wzePOGn1/Wf8s3Gmn5TCf/PkmDhrJY3yaDLWDmjaY0fV3uHi54ob7prhCY4o
lmnl1T7tdgu1dItdice5PzJqYTcDVeaBkvq4cYpJW6We6EULDHUXbfC+6SSo
3iHcC1V5JGbkFegDwGSZxpxRNGURz0BeaNlV0S3ly4itmpq1USi5PZL9KW4I
p6UI3wlgh1gRYoSquIn2WItGfZJFzBykJHUDcErDK2ZilWm9pamCuNrS6AXY
lUR6/cU8gRkeoIb+OvfYb2hGvRxkhli4y9afWfVAxcK+ppPs2t0pCXI1n5s2
GlUDajEIJ9XSnzTVmzbToiPkCvn7mwgnYeSJbq/gag5M10QrpbJ9f3hMn27a
yJKDrDt8bZHxuAC7HxZXwJuStMReKpz7S+SysyiBCn8G4t0htuEKRGzGzE3K
6kbS4HkeXlt3DjQiA6qd0QeC0Y3CQnYcIIFMjQ2QqQwRxhMv0HLArHRSDVhN
eacnU1Pit54kSroSyi2khAyXcpKx5W3mzKkL5bt1Wuou8HvRnhzkMX682dsH
G5/arMlPQUtAwpcO3ii4xlpM2oW0FCa+LIK75jaB3ISERIFsLuIeFvTrTbSi
9PmEZJ20SFlz653uuZvsaNwmjXkyDW7YYAB0UhuSVJk07k4HSuqlAds+bwkw
ShKpaP8nelCTEBb2+mk9LQnobiuHwNUneJEO+6S3nb1BHMklz2bNBEMorGru
ohQnJerOJFOpE1C6jmmqWeTPZ4LNo0rnqnY9OzDt4mKe+okjnIOz1fBmscrj
qJHE4LdsjmUnizytgIitRBUfWje0SlpLQxvKXddDSIil2WnHctbVkmaaObhC
Zi+sFcHlI/++jOGSnvFMTzrpI745C/pCD/v02EjLwtO3gocWTBUpeQn25KdB
M9L6qMicJ4u1ftC/AMK05ILBGWDjNtgT9R+lVnz2UlCdSvwuXTWrLRdEkwc+
LbwUjQlNzU5rEJ6/JSNslipbRyvA5EI31yvT6k0VtJ1lV0YajZyOVGQzuE1u
NX8M3eSS+whRO768Fu6bwMfoUmHeRzeQr4d0ouF+Kro/GmE73G4icOt51mkM
P4+Re2H/MfIo6StOhI6ONbdlW1tfaTm5qA0bNxrEXqIiIp12DHKLsYRIV+8Y
KWhVLT25WR4esWomvQNBEdkhj8WOaeLb8mRV3EkW1ZssXaXCDIEAIlGFzHQa
pMCGVSOAzR/rnenWx/pHqCoTnW2FnWMkUTqXtUl4Y68q7OJom8GsAcklv6DV
Bi/1GwsvCp5mQrcAlK9MqTX6CpbplLtiIOsy2nHs7stAbtpOMRSAH1YGyhjY
AwtubamUCmt8bKGNO7OxKjAYWukeK0rkG/pfqGGfcfrhSBOr9oz6bXfEMnYA
Ys9QBe/qOoixXRm6dwkk07fTctUqxQ/jXME5ZBuveSefGKrAWCGGXhlkqzP4
Zc33h5VYHlWoWqaNvNuYQr1qntf2MmVMzPVzM/0cBZLZuzQu5uNeVwfYPXZU
TDC30g6PGQy2Pgr4xK484q2bo/mrm3onPDeFEG8UQxpUVy3H2I6KWuACL6vR
aQFi80ghdzrjv6sPHyxrn9JrSufZk/OTc/SwniC3qmlClzFjqOUhr79mIOmO
kdwnVxf2nUnzBi9Vt8W18Xj2gjqigc05kHaGVswb7qlrRmXr01B2iLtWWWRJ
LbbNyqVMUJHVhB4quwDJ/Nav3brDlb5L6HAr4OLjhr3lZVNtVI5sU2X9lXZy
gSFKrIgNWJmRwyNkgYTJGVTZrpSxBn63aKb34dXEqIdiZm+lIbvEU17Cob+x
fDnm1W+c5dv777/AeJVfs3yvAdFtFuqkDn8ERKzctdKq7m5rXrqw5QihbMbu
DBgPom4+8XX/ffqEwV+zfPsW+oh/v2b5/n+Q5dutJrxmtu+vWb7ev1+zfG/7
79Nl+X6EWvNrlu+vWb6/Zvn+U7f2a5bv9XB0nX+/Zvne+t9/mSzfPheKzve9
kUsGU397PUgYatUf2uZYGCVn15H2JaV2qLk8P7OeJNf/7PruTG6XN89Gkqx0
ghfFEdDPyD5y3FRipzZbLxrN5OkOyWtKzOcy2Qv6jeTdp3DDPE7SLK1Naq2k
L/mQ6iTZKc1hqTCYJDF5HQGRZGDyRkrQxF1h5KYQ0LThjXGvp3kf3sRZZ+OV
7Qite2jkMNURT87mkyi3eMUpCmSDVvbkaC6UTk7j0BhGhXKdX0zDGXIekdWe
SuNCcA9TjvQIAHGDyigNnekhQ7V9ZHCf8zivVil3YmulUtAUPPgtoZnczbSs
bomWqcs4r9vo+D//439Wzigf3Y58cK5qitw165AjWXtzY7+FmBtR4TD8rEn0
MLDY+l7cGMbFUoW+cP3JEtSyqWQy4srr+2aTsSbtsEha3TgC4vbxbyVrB0Ms
W7zL2/JzvLHZHBgkwtINFO04QcIFgs8MZRRN0zHFvLp3kDNLqmW61pFQL8Sk
FSxvqGdlsKt93Trlg+6xiUXxnHQK3dW67X4ryVIPb4+DGX4HIVykOffH59vL
YVi+nAvfcvDiPCb8Q1EozhaliRuSwOSN16sSuKhlWuh580jblIoP4OYuMp2J
AMxZOGLijqcHTkQTXeMKrgze9JFzapzqpfEYHH8Styag+EMj9IF1kwxT2RCm
nKVTZMcbygLLo0Ahh87i0iiSg5YMCHPj9dVDfJjfevPF0jyYFsn5AbEzB8zv
72iEr+ClE+L4qNIQHRfruYw3j06WSH6lIShgcxLrDYctK+EYpl6BB7syEYbY
2XWCkkedsgWTwUqZEHj0uBdhRMGw+JTGDVPzVcrzcsoadt2sMsnzGfakz/up
/TS+jlPznMoAYcMjm3TFqGACc4bthNg+rujWdrSqI0rgBwgfaR4Y2sRBjEhf
m85QOs6s1TkkLi9kQgQCgBUALidHHom3yS1gOqvefnC9JPrO5Nxv/HlbHme2
uZROookzm5DzvwFB1VjSaMY8XHPsLkNFNdcKKPZHE20o0UlWdXKP5WeYSWXU
PimB8flvJ7xr+a/NKu9J1OLTeWqix3FQmhB/TJgXtAcn0/XVmToGFMrxIcUn
22jVB2debxwKFWhZFMAHrti4CAa+eXlKS5cIfIp5TDPlymardxK7zp1xMABV
jDIpN0VVrIsE3mTYpT2JlBnhqfQM/lOjGgTlgjhlDai4QL2Q+sa+f3/6pwsa
4vY6z9I3fG57NzJ19kKTfp1TlKwfd9QoXhma34gFIV6GunPeWCJjxDBtMMNg
uoxSrrbUG4yuyJxAPgCQNIlM9NHqhMnmTVco/4AwQJuKWXTqUZCdVUdRkqU8
AsmoX3tiBuzhZnfh5PZKtUB7A5CFOxkGj1JUwd2zZnreTPWfOLCM8DzEWXT8
JtzAniyw1zPPek9IfI9TuikFo0SjKtqrCwB0bzLYO7cJD3ssJ9BwwG8jzFrY
w/xErArYo0ovVGdgGdOKuiwp50IvT7+z6YVuYoX+SVrpJAxjaa0mIMicaUfO
7MgeYjdHxHI/NsaW3E4eoSQpozYFZOSmd0SSYiN563JvYjMV0E8l0gYj5wgz
/Xa5DxIPlgxVQ76sIE5lapFOgiUTSdidtQ37MlN3K6VYn77m8MQhDpXPZP+U
suwUKkgPcFfftwmTW/c/YsWqqFjOGY0yUybr07ccU8oZAuZfKRK1wv1NBYCZ
4uRocZb/m2KtfBZom4066rFbN2BsYfYPVH0nA6R3iRNVRywayOoHQMA4xsNF
nc6vfEDVh3bb9X7YkW8XqH7DHqSu2JnUBdAwUqserBqNCFUv3I0MGuTNmNxX
LkoknVQ3DG/ymLOPMRNaRkfHrLW5adpUqcIqFBeHOpVpRk4jHEgFwj0Cu52X
oG/rJF3NY9A8pqQx4+rQSa/+dLRo71pdDKMCOcuZXHfDlPZoW3vXKKDv/T3V
mMroeDku/tBIWirFqpx8bYF8UWgH2/5g8HASdfJtBo8m1whZDT6fBHzjg8eT
UEt4Z3FiSwIKedQYYs3ml30lZc94LHv3ICtLt+hRKlIm0ssUK3+72xg5exj5
rUe94sCtu+AKlhmPzcXr7mJYz3zsIPb63S97zv2ueszfuMm8CO5zFty/uF/d
TZf5O24zv70/8Q0yzO6iAe3tu662s8s+cpqaae4L+sIuKTXfwsm/Un8fhmJu
vU2sb9hRV/9DjcV76+0Hs3m70ljpaYdJpSjzjf9m/dPb7Kj3C17jOhkSvc/8
Y1vgRqzVcVKOpQJ1gbVPHMO5e2ZDPV6QWX+kqOsIzxt4vK736sA7Jsbf5/f7
aHsHkZVjwGJsQjZxlVbX6rVi1nAGyPhFs/AyLceoGN0p6SSXc2Ny1FPjzNph
Ct2Jdr9tiSCCbyhGjNS7egYVm+y+jUV1GE56eKrLP0OjTfimMDydCJhXCaSc
EkUMUOQpQIduhnbppfWKuogRZNviMpXDYokoXqwoUskZRaK50HhNFVZ1HdOU
o20S9tZq1Rbx6stSkqS3E6/IPgRszUxuJ15/6TSZvqV4vef9yBPcN5UAoef/
ZSL6hsDc0RpWtD4XEXMXovWT7cURzx3I/19Cq//91obdN4Kj26z7n3806xbi
R7eEY9kmuBuTWagx991rtYE1wrqbr7pp5LRUtzuFo+frrXAYZP9n0iGb2bV1
yFuLU1Qg+xoUhWIcvSkC5C+8vqvwCt2NLPX+0LMTphMViTUuwc5Oj+pFXTt6
4G9lGjQ2K+q5p4uZV/TreKPuR5H4sis37jclv7C3RRtb90oGd3eYuneGLvji
wtbF+B3K0BpYn5/IOoRcneouiJvvyTXW2HLJJlbh2e460ZpUR7f7TUi3CwLx
n9B1cv01HL7tOxWOL2/vrPBA+WcXLvbDwgD98wvOroboI4cYtopgri44u+ZC
d7G1axac3WBrtxul9wm2dp2Cs9tBFC5Tuz6Objli7xPgyPcZHl/2jZ68HkSB
kgPfPNuiMHsLXf3vThZqey69/d8CIm+O4MctFEDfjcsEb8xqAzz3bssEP8nx
dyo0PhaiW9UbBp65Xb1h4Jnb1RviM1fWG97Fqf3T6zL+9eadJhHXurtSVSdr
70bW3fG7mNqBxKYqoSdFtW1DdgPquqlgSl70AKxjCydqgpR9zGUgnhvb2lre
JHS/uZCZtI5+7hNjZvkb1HnMge7q1oRrd6oSW5GYdceHrx8e9pl2hel61rVG
MVtvXkhuRp8F6CSKmXHxmMI+3WiDT2eXhHtPHmSYAbdgnNLOjfXMs9QlZk8t
yUNLELKPkbFEzFm4H5UXrsccrwYIg/tqVfe6c+vtAjp1dU5BFmnWGUoP5pxu
Sh29bntWTCC1SUmaKGjrHjRy2g4JeFkBePLm1OGzQOiGR3GGHQdsR1+RM7HF
hu5nFP0chJmRw5f6Hr2uDT3xBlX6wzNvZEOH5tnfyoa+14LIDs+8uQ19G/QE
1ZatpxzWYO4EGOf7VujfH2p+fZ9Ax9es/93E53yrrXwih8AtYGGArr9QfypE
UAO7GUSmvcetFurOPA6pcneHo66/P5CmAVixu+pZqP/FoS1tgei2W/tUyuWt
r/lHioZrKJdx6aqV2/PkbqxSDravlzqJI6abYF869ehfm6Q5GbiyjBrleqEF
Uhp+YlL/6WZKQ1cFNP78QGaxVk7b4DhNNimnlop9RLWddUGchA7HqXeCH7Tf
oAvoTPWVE2Iw1SJcfOyNEukODdmlfGEyWaNV+m7crCUpe+103pVo033qeFyN
bPKw9HosdZL4sDViQXLq42SZKum+6Zc463KvvE8LTOtKZfMRpd9v6+HcibE4
GNfFBFJ7Rg16KXEI7mGT1CYB2lQoEfXrUTvBrHLqumg7avNX5/C/TcWjZejU
nh1Gx7O0Lsr96CxTccX50pfS/lxyof3JGaZsu8Ys/qeHZ48ePPnwQWyU6OD1
xfPHX02krkovAJeokC6VVD/dUKnLm5wGofhVD7oo3mTU6+IwSuBKbam22LFS
FY4ljViBXpD/29QWnqC5mat6fFTG85rpIqXCVRzdkvNgDfhRnNmkarYl9Ma0
HWKr2GDtNsxEHc5+04oM3XymWwljZT4BenJ88UyXz85gI5VJv68qLvGHPxYl
VmrivBeEupKTApNIziin49MV8UBDes9YBOAMlfDBjMjMNhMZ8EvMv5oVZcWV
eJIihyBOBs+aEu3yFVUC5AXOF8DiqmWMpW4gBOAYuJaeixIlW94m9MloLGzd
rTT5vqXhDut1JlM5CBlYca8LCORymtlcgsJYbjQVgJgJQjleDl28Qv1Y4zrO
CkbEZZxmdPc75EVsJwW+qWK8WBUy63imy7ri2WUqRfcWy1zz0l4JrVn1DpCP
7FHb3P6tGA12iC6o3TdV4GNr5FS91UUUWIWAv1qURbOuNK0scprM4EW4qZJX
aiwlF49mAyDepyAm5yklv5dNnnPri5k3VouEBV5g4+IvuHM0IQlbm5eppRSK
Eys1m8bJG+ddq1iq3g0qlB1wVXE1+YqwSj0mMD9wrZmdQ5bdTTeVcByvb4QI
J8wBgN3tcNNiw9FUyUmqBRDiWOYStQj+rZkyhIDK3betyDXBPyvjJl8WWItw
AkSV1ti3F+XTOdcAnThAXahkmRdAZZvo/OSiBRI/8gOoKFeChiQOz82incPn
B6ypjI2mwuwpMHwxolYB2Lq+rPcj+OWrVwdBGF6/enElCHBw/4FFOLqNiJaF
OGxAWlbsR79d1vW62r9/fwF6YDOdJMXq/tzga1yl9f1kGZdl/B2BcYqnn9ab
gYxXm2FlRgaSNePGIvxta0IFV5/tECHVm7WSkz5E7Yqq8jiHgVjlIY4DrKX2
X94i9duX8sjuvS8efv14+vn03tBumea1GJ3QTK3ppigLlcQZd5cx9WTqnYK1
sOjWF0Airg6Lg7Po2fHF4XOQzbNUeUXN5yIW3r9Ping9nqs6AZ2aHgPJGW7O
/SJNFEDIW+STNidGeStZ1tKdENvcIwKLJx0yhzd/n9bPQWWUom52mXGRI9XK
nR9Fn48Ps5iccz+ot0RoO68U8cIdkDAES5DSjpxCUwa2RWamJgzfhC8QjF1I
HhCeaEMC7HvkB9HuxeH3Q/PteTGvqaz2HPN/cTTF+XCkW608Pz/lE6SaMDMi
0l39DNQ+KiA9LWYNDXmalp1DxIA3KV5x7+92L85Oh9GjyQPEDO4IeCdVr3ub
1VMF3WNpX7MKZ1o6J8WllS/SvHk3Fr1krTPHqw0As2qPUHAPtA7e0Hq9egS3
nlHHf9VVdf+7SfCETFb+IclUfscBimmh8TOti71/Pz58eXAGRLuLb4WXIkFP
asMU7w+N0x0WS9Cr+jTNEeEvp4SFV/7MTFzw6ctXekHcRjItykla3B9qLgDP
JvVgcAqiLIYLepy8wbmgK/5zovDP3wMfmli2NJmp4YBs2etkjoGafK5zz2Oa
/EWPETbsY6LR6kuKXRAyHH2BJXUqWCjY12nKTsbdxar7ISIB/wN1TdsBx20f
oXQzltmspNLI2SwVo7RyIZcN+oqDVDKaB/0vuav8+/eaRT18hPdT4JEhQViv
izbSbCnsejI4MBBgkAF3CvdDyLe75+0QCCZF79aAPGE4Tn4EMOyoFm72Asg2
Y1omfNCe3TUGu4ou3wcac8DZIpeUmpdkRaXrel9O502VmOJER383N4JHuOnl
zCQQmlsGT+fMzjRhEWmXPCwHUx512SyggqcBVDKPg0cEaFi01WfgtN9hR34D
JNmYwGlxq2jKMh+UKbbcf6d0RuB6KBFgjelNW+KpmqIFYzgsVGVpCbZV/aIv
unHio56ZLAusqoYNSjcCaZqh94qNQxRNA7lULl7eEuFzxxay2sn+1U6AiT9l
iattZMCCaC3GGUFhqpg7zy1UJT1uSLc0wxFHZjQrjzeYSgqqcT8YxHxDKlet
3yLYFyQiHLZuGYzcdJ0aAU6SJDrAZkhrIfS+PFHmypKOPmuVqcdeN5A0Dx2R
aSqBoxyymTecDqxbDqB5XbziWqZ06kFQ9I4zOyR0Mvg+pQEzdSWdunK3pkn6
x1Hrm6We06u763CTrHnGWbjtoKOeC+SMIcJ5KhfL9owhrrvnLk+iNOi2dfBW
6Qwk417Ty6KWQHa3Z5z7dmUb7HCfOLeInEk68CsNs1imFVxJBacqDcFWcZ6u
ZZ4dq+hwHcRPonvVaObnEATNxjrxtoxDuKi2GD7gkWjcSYxaajmwdWlF18VL
X5Fluliy4k0eFR+xsfMWHIulc7U71XLu+iQLproxwkhKv/gmkQ+AeiTYMXOt
+VEbZ/ovnNICbyrKR+JIqxgnrMtgHcJKVWTWFD3ji4oFf/u0fhABGsCUfisG
n73jJOj6Gg2Y8jKB3jja1stNRdeo28eA5/yVM1JPaZsrQDpch6KRYHIXyHuV
bQFVeVXnyQYzt6/TLAEYHHd0QBEjQ/UOGpDHclcMjuyb/OvjYc3K1pjXcM7Q
6RmIv+ZTtnZPWsuExJQaQBLdmR3QMETdfKb27rb81IKHL3ylFtQhhaCoeDZa
t/1DaAfYgaXJiTxIaFR2Uhu+G7kT0x1wM9shY8aI47ZBMV5VRhxrYFrZ9goT
Yx4vNufy/zhLdeWC9d/BvWGfiztR0F6r2O3gp9wZdNTNQoNSe9OvUNexRCvN
P8wZIaLIbzht0ow9UCR4zLXcGFbowuRCQePM53FayrTUaRrzpcxznacQnfKY
OuqfhEPqeFSmnl135dw697xkeJ8Zn2QaN1j5gR3PSFso5WaidnRJ3QnNzbC4
c7xRPFnzFage+SzWR3pEPUyoEZ+M9RrBmXhOeoCPR6YGAObGO0KIMjZKyJi0
PSB9PYoNZ++2SNOhOBpEj73cmPQOPf1MCwiC+DV5f2EdnEzo63FkayHn9XgD
orrVKbLdKFWf/jbGjIMgScen85MSELflmUCOfV6tCz5nI57ZwDYOLUdGPGOj
O/pJV1Zzy0DkwtlhtCDWs3sXqE0ye7BGhAtDtUXsrJRCBXkGl6LcjLFhmVNq
DNd+uYrLN5V0OuRb35aedKNg609lVLkeQ08WkR1CXTkrx1bMM4/Qg9H7mFhQ
r3NsRVFATV837qA3G8ElzEGx+5lqpfka4qxZU1aN7yNHWiYT4bcPaHVVlcOW
pWjadhG/6bonWY11N6qbt/Ebr243bfu9kQ2N9lat1TzLHQySL5sMSZ7EXqo6
3Ym17oj3BPQx9OZQtHAcO74NkfzIua0aZxVciSSu0wSDE4U3rrMSxhecDWyY
EiBkimjvyHbmVcf5bFwX42NX+SPI9vdwIrA7z07xo8rV4HhUrUwMN239+vpv
ebdDeqz1KYbiLFTSbNoZceo3+TO0IzdQtqdjtpVLCKSDxVmtTK8r6rfM7J8s
WOlh6B6l2z1L2osaCxL3IGOFmVlaxRFWvKBzI0R6w1iFsabm2VZjTD5vunKk
h+jwc3snaR7PcNAld+1FFdTqsXDs7NXkFE3hUxTsyLeIc6N4NpXRPRSGCqSf
ObVFIF9QbhRYiqBhAIaOFU4MuEriQgtap3MXDJnrpFW3uWal1SI2Cw9EpCOS
fnTUP8IpXIc5RwmjKp4DgwaubbRUVJSayr1htrGvvuOkLoOIQlQpH1Ej90wc
UQ/0lsWcdesEHkXlcYDVN6GirraV2JM0UrGsnOGP2cagXjisbfjZHcpMbL1E
Med095ylC+zC5jhT7IRcvJxGUOmLR+OITbtWAhBOiLVKPV63rTA7l0PfGUfz
p9+cgv4LogQIhU6npVAzAuJsTKHylXnWtnXjXvXcBR5xIX2D+YfkziZVNC+A
yrHp7lQt48tUN0Hmw0Q/WUJzJ42ILbFliKr4ejh2MsofkJBE+i+KBXUWRSGl
O08Ly7bGqEBp+nWT9wU3jy7rjKHQziDt/MDbjHkJeUXNa+NsQ01eEHF609U2
L4hgMikWOYtYBxD+5cVZlCvqrMyjAQKd73xVRcyIHrPJaj/bet9x6Ebu+QLF
O/fgj91O+iYw22UuHW0qRuulkkBZPmuD3CVbw1ic1+HJJeRKBEVJfNV2jEBL
WCN4ejjCqEXvAUNr24BpOXQbIBmx81GfV9g64R2MqZUuz3tvta7d5mfT8e2k
hNcInYE00eN3k2WKd6eSbvFFuS5KqzR0rfyZbf7Icy3YUrS9F3VLv65BHEKI
dm05PSwdLxdredaD74Z6xufae9yjBbKOF4w6uJMb+oIfeFSXFH9znX82H4cx
YLbtzDRnGmEGGyIGR1ygS8k2bTX+cHGYcAsjfZLI7s3UD+3+54bZ4ThLK3jB
QzpK5cy+MAkPnYgQ+sGbSlrKd2O+FOxyiZ6RjXPO9WAT70qIWr1tIoabT0Hk
ynyxNT0eO+Fif3g9tTyBvXJuI6WoJRE1C9cCTVpzOxLQJLMlJuGKh42jJsDt
FgXWq9swOz2YOSC/m8wn79+H23d/GOp5ARzzJhkE+EAhr+wQ7xwWwhjvSvsB
Ll6cEymKLBEOjnTZxvHauB6BSM7Zg65DXqGJClY1dWi3iqgPdYLthSlOYpqf
W1wqSsapHb04xP5q0+Ua+VazcnlQizn0DkbRXEEUNaJT8maz81oB9qpZWazX
AIv2/jQ0RMc3UAYD+Tj2PqayHJe6jImfmovgEs51O70hHWAGhX56rJM4gAqE
CMyEca/9hRe0gl9S12aceDFzknsd6ncjVM79mbhNenVnVd2KN5FQkLbJmMlI
r2RtCKXoXKmK3DM8Ry1b3TJqjC5XIVZXmrbBZyxzCX7uqe6wQYqRUlor3ITg
QbE6sG8OEq/F7gr+/3B/sE9/PZx8Djh/9ezwq8ePv8BIbLNG6qt6VsQZEJQs
Y1Re6V6nddeJOIe4v7hOEqzIH/yXyZMHX7vqshnPotgbqgyLY6criB146I2C
6+jNffdPlm0DSU/tXAo02+XoZzT0B3OqxweeeY2IINb0HLW9lpUOiJIfUeAR
n20hxQQoV9PUpBQ5LohxFm+ATAQl/o81viTX2yWxirCNiCNuZtE2kmBqbfFM
8WyCvgUbne3XDx8+oLPlS/mUprrQN19+8fBLzFAqoyOOpSagWDFTsloldUUn
mdpwVqsW39rkEyA8Q4ja6K7Wmn6FzzzX4ZRjvHcJ8cj750xzFKD2mKo1KH3V
0e2fHQz9kbyOy3iFCQQjE8SR/AXzc50hGnGmubUq0MUFKoPOekEGQAzegG+U
J84eqqLd5+enFQirMwknAaW8httXcH76MwlfwHNnr59VEtjXRsnxO1iNNnDs
7n734vi4GhoRJl4mR14ZDs9eXe20DITAKPgqvdBpwgpPSIHzAbwL50aX6Nia
KTwcy3LyeYoWCHvnyCfOBh9Z0iBWHXKvtMgOaK66yTt5OPFjiy5Xl6X9IP9P
KwIPrakiZ2dTwQ5fa4axrQPGbos4jKXVY6+4N9QOCwqNKXPbjcv8MK5W1QmA
3ZJnBwo0DBap9fCi6llIWiQm9VLaHHn8bQKjOMN0AC3O9HtJXjgzN8K2ywDU
/wSz7zM1W9AWBoOXWTyPnqpygWGfUaSzrV7h/wKSCsmZ+AFz8law38EAa7cw
QVgScDqZjfCWw6OjF9G5ly8pA8jIPcpZkwH5f2JRxjqw7c9OS/opmFw5bhM0
gZiKOc4Zkvl/ZIVlWcO4xpx/40puZcLpZM6tEOGlxj6zFyFXKOfJ8dioivY3
GTzVaknpC0OjnZh0VDuHQlmxZKQqp5c6E5XITHZzDfkJ/Rr8Xn+iM4uL2UZ3
vSfRJxk1bk217tamXwvYpKlNLEjZsEPGwMmN6Yo1JQvWzt8bwO+Oybvx525d
nJ1iGuVESpuT2SwbcAax0E30bSR/O9RruvTeD3/J2xsMtvzy2+ivVCe3VEBK
+4CJIqMS2G8wcIeVBGxhCnzRwR8jDHNFFdKCm2BEi4DSMU5nsMqmpkrab+i3
8Gl0cqQT2slE4Eoe+k2O1Gh/Ar+Jo13Q52fFashfjgRXiFmatZVLfsJ9QjoG
TPETWm2dlONK90Gq9qO/Rnv+Z9HfBn8bDPyPNA7qZDFextVyHGcL2keDIdhJ
BTIhekTbATQ8+veDF9//+8mRfh2+ZKDrBeFv/1f0Db1yywEZANwvUQ9zMQmv
Pv/3g4uL4/OLCZESo5xzWrWPVf+AvvpdFL8Zo3rhYJf/8UY8PoiH5CqZu3LS
Q4CdaiAH/xfzjsr2TUQBAA==

-->

</rfc>
