<?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.29 (Ruby 3.4.4) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-deshpande-rats-multi-verifier-03" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="RATS Many-Verifiers">Remote Attestation with Multiple Verifiers</title>
    <seriesInfo name="Internet-Draft" value="draft-deshpande-rats-multi-verifier-03"/>
    <author initials="Y." surname="Deshpande" fullname="Yogesh Deshpande">
      <organization>Arm Ltd</organization>
      <address>
        <email>yogesh.deshpande@arm.com</email>
      </address>
    </author>
    <author initials="J." surname="Zhang" fullname="Jun Zhang">
      <organization>Huawei Technologies France S.A.S.U.</organization>
      <address>
        <email>junzhang1@huawei.com</email>
      </address>
    </author>
    <author initials="H." surname="Labiod" fullname="Houda Labiod">
      <organization>Huawei Technologies France S.A.S.U.</organization>
      <address>
        <email>houda.labiod@huawei.com</email>
      </address>
    </author>
    <author initials="H." surname="Birkholtz" fullname="Henk Birkholtz">
      <organization>Fraunhofer SIT</organization>
      <address>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <date year="2025" month="October" day="20"/>
    <area>Security</area>
    <workgroup>RATS</workgroup>
    <abstract>
      <?line 66?>

<t>IETF RATS Architecture, defines the key role of a Verifier.  In a complex system, this role needs to be performed by multiple Verfiers coordinating together to assess the full trustworthiness of an Attester. This document focuses on various topological patterns for a multiple Verifier system. It only covers the architectural aspects introduced by the Multi Verifier concept, which is neutral with regard to specific wire formats, encoding, transport mechanisms, or processing details.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/ietf-rats/draft-deshpande-multi-verifier"/>.</t>
    </note>
  </front>
  <middle>
    <?line 70?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>A Verifier plays a central role in any Remote Attestation System. A Verifier appraises the Attester and produces Attestation Results, which are essentially a verdict of attestation. The results are consumed by the Relying Party to conclude the trustworthiness of the Attester, before making any critical decisions about the Attester, such as admitting it to the network or releasing confidential resources to it.
Attesters can come in wide varieties of shape and form. For example Attesters can be endpoints (edge or IoT devices) or complex machines in the cloud. Composite Attester <xref target="sec-glossary"/>, generate Evidence that consists of multiple parts. For example, in data center servers, it is not uncommon for separate attesting environments (AE) to serve a subsection of the entire machine. One AE might measure and attest to what was booted on the main CPU, while another AE might measure and attest to what was booted machine's GPU. Throughout this document we use the term Component Attester <xref target="sec-glossary"/> to address the sub-entity or an individual layer which produces its own Evidence in a Composite Attester system.</t>
      <t>In a Composite Attester system, it may not be possible for a single Verifier to possess all the capabilities or information required to conduct a complete appraisal of the Attester. Please refer to <xref target="sec-need-multiverifier"/> for motivation of this document. Multiple Verifiers need to collaborate to reach a conclusion on the appraisal and produce the Attestation Results.</t>
      <t>This document describes various topological patterns of multiple Verifiers that work in a coordinated manner to conduct appraisal of a Composite Attester to produce an Attestation Results.</t>
    </section>
    <section anchor="sec-need-multiverifier">
      <name>Need for Multiple Verifiers</name>
      <t>To conduct the task of Evidence appraisal, a Verifier requires:</t>
      <ol spacing="normal" type="1"><li>
          <t>Reference Values from trusted supply chain actors producing, aggregating, or administering Attesters (Reference Value Providers)</t>
        </li>
        <li>
          <t>Endorsements from trusted supply chain actors producing, certifying, or compliance checking Attesters (Endorsers)</t>
        </li>
        <li>
          <t>Appraisal Policy for Evidence, which is under the control of the Verifier Owner</t>
        </li>
      </ol>
      <t>The Verifier inputs listed above are linked to the shape of the Attesters.
Typically, Composite Attesters come with a varying degree of heterogeneity of Evidence formats, depending on the type of Attesting Environments that come with each Component Attester, for example, CPU variants or GPU/FPGA variants. When conducting Evidence appraisal for a Composite Attester, the following challenges remain:</t>
      <ol spacing="normal" type="1"><li>
          <t>An Attester's composition can change over time based on market requirements and availability (e.g., a set of racks in a data center gets thousands of new FPGAs).
It is highly unlikely that there is always one appropriate Verifier that satisfies all the requirements that a complex and changing Composite Attesters imposes.
It may not be economically viable to build and maintain such a degree of complexity in a single Verifier.</t>
        </li>
        <li>
          <t>A Verifier Owner may have an Appraisal Policy for Evidence of a Component Attester that is internal to them and which they may choose not to reveal to a “monolithic" Verifier.</t>
        </li>
        <li>
          <t>A Reference Values Provider may not wish to reveal its Reference Values or their lifecycle to a monolithic Verifier.</t>
        </li>
        <li>
          <t>There may not be a single actor in the ecosystem that can stand up and take ownership of verifying every Component Attester due to a lack of knowledge, complexity, regulations or associated cost.</t>
        </li>
        <li>
          <t>The mix today is a combination of Verifier services provided by component manufacturers, Verifiers provided by integrators, and Verifiers under local authority (i.e., close to the attester). Rarely is it just one of these.</t>
        </li>
      </ol>
    </section>
    <section anchor="reference-use-cases">
      <name>Reference Use Cases</name>
      <t>This section covers generic use cases that demonstrate the applicability of Multi Verifier, regardless of specific solutions.
Its purpose is to motivate various aspects of the architecture presented in this document.
There are many other use cases; this document does not contain a complete list.</t>
      <section anchor="verification-of-devices-containing-heterogenous-components">
        <name>Verification of Devices containing heterogenous components</name>
        <t>A device may contain a central processing unit (CPU), as well as heterogeneous acceleration components (such as GPUs, NPUs and TPUs) from different suppliers.</t>
        <t>These components can be used to speed up processing or assist with AI inference.
Trustworthiness assessment of the device requires trust in all of these components.
However, due to business concerns such as scalability, complexity and cost of infrastructure, the Verifier for each type of component may be deployed separately by each vendor.</t>
        <t>When these Verifiers operate together, they must interact with each other, understand the topology and interoperate using standardised protocols.
For instance, they may need to exchange partial Evidence relating to the relevant component or partial Attestation Results for it.</t>
        <t>Attester: A Device having multiple components</t>
        <t>Relying Party: An entity which is making trust decisions for such an Attester</t>
      </section>
      <section anchor="verification-of-workloads-operating-in-confidential-computing-environment">
        <name>Verification of Workloads operating in Confidential Computing environment</name>
        <t>As organisations move more workloads into untrusted or shared environments, Confidential Computing is becoming increasingly important.
In such a system, an application or workload (which could be an AI model, database process or financial service, for example) is executed inside a TEE-protected virtual machine (VM).
When the workload starts, the TEE can generate a cryptographic attestation report providing:</t>
        <ol spacing="normal" type="1"><li>
            <t>The workload is running on a platform with a known state.</t>
          </li>
          <li>
            <t>The workload is running the correct application.</t>
          </li>
        </ol>
        <t>The platform is often built by an independent TEE vendor, while the workloads are deployed by workload owners from different parts of the supply chain.</t>
        <t>Verification of Attestation for such a system requires independent, yet mutually coordinated, verification of: Platform claims appraised by a Platform Verifier and Workload claims appraised by a Workload Verifier.</t>
        <t>Attester: A layered Attester containing a platform and a workload running in a CC environment</t>
        <t>Relying Party: An entity which is making trust decisions, such as a key release to a workload</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <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>
      <t>This document uses terms and concepts defined by the RATS architecture. For a complete glossary, see <xref section="4" sectionFormat="of" target="RFC9334"/>.</t>
      <t>Specifically this document heavily uses the terms Layered Attester <xref section="3.2" sectionFormat="of" target="RFC9334"/> and Composite Device <xref section="3.3" sectionFormat="of" target="RFC9334"/></t>
      <section anchor="sec-glossary">
        <name>Glossary</name>
        <t>This document uses the following terms:</t>
        <dl>
          <dt>Composite Attester:</dt>
          <dd>
            <t>A Composite Attester is either a Composite Device or a Layered Attester or any composition involving a combination of one or more Composite Devices or Layered Attesters.</t>
          </dd>
          <dt>Component Attester:</dt>
          <dd>
            <t>A Component Attester is a single Attester of a Composite Attester.
For this document, a Component Attester is an entity which produces a single Evidence which can be appraised by a Component Verifier.</t>
          </dd>
          <dt>Composite Evidence:</dt>
          <dd>
            <t>Evidence produced by a Composite Attester.
Also referred to as CE in the document.</t>
          </dd>
          <dt>Lead Verifier:</dt>
          <dd>
            <t>A Verifier which acts as a main Verifier to receive Composite Evidence from a Composite Attester in a Hierarchical pattern <xref target="sec-lead-verifier"/>.
Also referred to as LV in the document.</t>
          </dd>
          <dt>Component Verifier:</dt>
          <dd>
            <t>A Verifier which is responsible for the Verification of one single component or a layer.
Also referred to as CV in the document.</t>
          </dd>
          <dt>Partial Attestation Results:</dt>
          <dd>
            <t>Attestation Results produced by a Component Verifier, which contains partial results from atleast one or more Component Attesters.</t>
          </dd>
          <dt>Aggregated Attestation Results:</dt>
          <dd>
            <t>An Aggregated Attestation Results (AAR) refers to a collection of Attestation Results produced upon completion of appraisal of a Composite Attester.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="sec-multi-verifier">
      <name>Multi Verifier topological patterns</name>
      <t>A Composite Attester has multiple Component Attesters. Each Attester requires a different set of Verifiers. Hence multiple Verifiers collaborate to appraise a Composite Attester.</t>
      <section anchor="sec-lead-verifier">
        <name>Hierarchical Pattern</name>
        <t>Figure below shows the block diagram of a Hierarchical Pattern.</t>
        <figure anchor="fig-h-pattern">
          <name>Hierarchical Pattern</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="528" width="584" viewBox="0 0 584 528" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,176 L 8,256" fill="none" stroke="black"/>
                <path d="M 104,176 L 104,256" fill="none" stroke="black"/>
                <path d="M 280,32 L 280,512" fill="none" stroke="black"/>
                <path d="M 368,32 L 368,512" fill="none" stroke="black"/>
                <path d="M 480,48 L 480,144" fill="none" stroke="black"/>
                <path d="M 480,192 L 480,288" fill="none" stroke="black"/>
                <path d="M 480,400 L 480,496" fill="none" stroke="black"/>
                <path d="M 528,288 L 528,400" fill="none" stroke="black"/>
                <path d="M 576,48 L 576,144" fill="none" stroke="black"/>
                <path d="M 576,192 L 576,288" fill="none" stroke="black"/>
                <path d="M 576,400 L 576,496" fill="none" stroke="black"/>
                <path d="M 280,32 L 368,32" fill="none" stroke="black"/>
                <path d="M 480,48 L 576,48" fill="none" stroke="black"/>
                <path d="M 368,96 L 472,96" fill="none" stroke="black"/>
                <path d="M 376,128 L 480,128" fill="none" stroke="black"/>
                <path d="M 480,144 L 576,144" fill="none" stroke="black"/>
                <path d="M 8,176 L 104,176" fill="none" stroke="black"/>
                <path d="M 104,192 L 272,192" fill="none" stroke="black"/>
                <path d="M 480,192 L 576,192" fill="none" stroke="black"/>
                <path d="M 368,208 L 472,208" fill="none" stroke="black"/>
                <path d="M 112,240 L 280,240" fill="none" stroke="black"/>
                <path d="M 8,256 L 104,256" fill="none" stroke="black"/>
                <path d="M 376,256 L 480,256" fill="none" stroke="black"/>
                <path d="M 480,288 L 576,288" fill="none" stroke="black"/>
                <path d="M 480,400 L 576,400" fill="none" stroke="black"/>
                <path d="M 368,416 L 472,416" fill="none" stroke="black"/>
                <path d="M 376,448 L 480,448" fill="none" stroke="black"/>
                <path d="M 480,496 L 576,496" fill="none" stroke="black"/>
                <path d="M 280,512 L 368,512" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="480,416 468,410.4 468,421.6" fill="black" transform="rotate(0,472,416)"/>
                <polygon class="arrowhead" points="480,208 468,202.4 468,213.6" fill="black" transform="rotate(0,472,208)"/>
                <polygon class="arrowhead" points="480,96 468,90.4 468,101.6" fill="black" transform="rotate(0,472,96)"/>
                <polygon class="arrowhead" points="384,448 372,442.4 372,453.6" fill="black" transform="rotate(180,376,448)"/>
                <polygon class="arrowhead" points="384,256 372,250.4 372,261.6" fill="black" transform="rotate(180,376,256)"/>
                <polygon class="arrowhead" points="384,128 372,122.4 372,133.6" fill="black" transform="rotate(180,376,128)"/>
                <polygon class="arrowhead" points="280,192 268,186.4 268,197.6" fill="black" transform="rotate(0,272,192)"/>
                <polygon class="arrowhead" points="120,240 108,234.4 108,245.6" fill="black" transform="rotate(180,112,240)"/>
                <g class="text">
                  <text x="412" y="84">Evidence</text>
                  <text x="456" y="84">1</text>
                  <text x="524" y="100">Verifier</text>
                  <text x="568" y="100">1</text>
                  <text x="404" y="148">AR</text>
                  <text x="424" y="148">1</text>
                  <text x="160" y="180">Composite</text>
                  <text x="236" y="180">Evidence</text>
                  <text x="412" y="196">Evidence</text>
                  <text x="456" y="196">2</text>
                  <text x="60" y="212">Attester</text>
                  <text x="308" y="212">Lead</text>
                  <text x="44" y="228">or</text>
                  <text x="164" y="228">Aggregated</text>
                  <text x="324" y="228">Verifier</text>
                  <text x="36" y="244">RP</text>
                  <text x="524" y="244">Verifier</text>
                  <text x="568" y="244">2</text>
                  <text x="168" y="260">Attestation</text>
                  <text x="244" y="260">Result</text>
                  <text x="160" y="276">(AAR)</text>
                  <text x="396" y="276">AR</text>
                  <text x="416" y="276">2</text>
                  <text x="412" y="404">Evidence</text>
                  <text x="456" y="404">N</text>
                  <text x="524" y="452">Verifier</text>
                  <text x="568" y="452">N</text>
                  <text x="388" y="468">AR</text>
                  <text x="408" y="468">N</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                                  +----------+
                                  |          |             +-----------+
                                  |          |             |           |
                                  |          | Evidence 1  |           |
                                  |          +------------>+ Verifier 1|
                                  |          |             |           |
                                  |          +<------------+           |
                                  |          |   AR 1      +-----------+
                                  |          |
+-----------+  Composite Evidence |          |
|           +-------------------->|          | Evidence 2  +-----------+
|  Attester |                     | Lead     +------------>+           |
|   or      |  Aggregated         | Verifier |             |           |
|  RP       |<--------------------+          |             | Verifier 2|
+-----------+  Attestation Result |          +<------------+           |
                 (AAR)            |          |  AR 2       |           |
                                  |          |             +-----+-----+
                                  |          |                   |
                                  |          |                   |
                                  |          |                   .
                                  |          |                   |
                                  |          |                   |
                                  |          |                   |
                                  |          | Evidence N  +-----+-----+
                                  |          +------------>+           |
                                  |          |             |           |
                                  |          +<------------+ Verifier N|
                                  |          | AR N        |           |
                                  |          |             |           |
                                  |          |             +-----------+
                                  +----------+
]]></artwork>
          </artset>
        </figure>
        <t>The following sub-sections describe the various roles that exist in this pattern.</t>
        <section anchor="lead-verifier">
          <name>Lead Verifier</name>
          <t>In this topological pattern, there is an Entity known as Lead Verifier.</t>
          <t>Lead Verifier is the central entity in communication with the Attester (directly in passport model or indirectly via the Relying Party in background-check model).
It receives Attestation Evidence from a Composite Attester.
If the Composite Attestation Evidence is signed, then it validates the integrity of the Evidence by validating the signature.
If signature verification fails, the Verification is terminated.
Otherwise it performs the following steps.</t>
          <ul spacing="normal">
            <li>
              <t>Lead Verifier has the required knowledge to break down the Composite Evidence into individual Component Evidence. It decodes the Composite Evidence to extract the Component Attester Evidence. This may lead to "N" Evidence, one for each Component Attester.</t>
            </li>
            <li>
              <t>Lead Verifier delegates each Component Attester Evidence to its own Component Verifier (CV) and receives Component Attester Attestation Results also known as Partial Attestation Results after successful Appraisal of Evidence.
There are many protocols to determine how a Lead Verifier can select the Component Verifiers.
This document does not mandate any specific protocol for determining the Component Verifiers</t>
            </li>
            <li>
              <t>Once the Lead Verifier receives Partial Attestation Results from all the Verifiers, it combines the results from each Verifier to construct a Aggregated Attestation Results (AAR). The Lead verifier may apply its own policies and also add extra claims as part of its appraisal.</t>
            </li>
            <li>
              <t>Lead Verifier conveys the AAR to the Attester (in Passport model) or to the Relying Party (in background check model).</t>
            </li>
          </ul>
          <t>The overall verdict may be dependent on the Appraisal Policy of the Lead Verifier.</t>
          <t>In certain topologies, it is possible that only the Composite Evidence is signed to provide the overall integrity, while the individual Component Attester Evidence (example Evidence 1) is not protected. In such cases, the Lead Verifer upon processing of Composite Evidence may wrap the Component Attester Evidence (example Evidence 1) in a signed Conceptual Message Wrapper (CMW), and send it to each Verifier (example Verifier 1).</t>
        </section>
        <section anchor="component-verifier">
          <name>Component Verifier</name>
          <t>The role of a Component Verifier is to receive Component Evidence from the Lead Verifier and produce Partial Attestation Results to the Lead Verifier.</t>
        </section>
        <section anchor="trust-relationships">
          <name>Trust Relationships</name>
          <t>In this topology the Lead Verifier is fully trusted by Component Verifiers (example Verifier 1).
Each Component Verifiers are provisioned with the Trust Anchors (see <xref target="RFC6024"/>) for the Lead Verifier.</t>
          <t>Also, each of the Component Verifier is fully trusted by the Lead Verifier.
Lead Verifier is provisioned with the Trust Anchors (see <xref target="RFC6024"/>) for Verifier 1..N.</t>
        </section>
      </section>
      <section anchor="sec-verifier-cascade">
        <name>Cascaded Pattern</name>
        <t>Figure below shows the block diagram of a Cascaded Pattern.</t>
        <figure anchor="fig-c-pattern">
          <name>Cascaded Pattern</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="752" viewBox="0 0 752 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,48 L 8,160" fill="none" stroke="black"/>
                <path d="M 80,48 L 80,160" fill="none" stroke="black"/>
                <path d="M 256,32 L 256,192" fill="none" stroke="black"/>
                <path d="M 352,32 L 352,192" fill="none" stroke="black"/>
                <path d="M 440,32 L 440,192" fill="none" stroke="black"/>
                <path d="M 536,32 L 536,192" fill="none" stroke="black"/>
                <path d="M 648,32 L 648,192" fill="none" stroke="black"/>
                <path d="M 744,32 L 744,192" fill="none" stroke="black"/>
                <path d="M 256,32 L 352,32" fill="none" stroke="black"/>
                <path d="M 440,32 L 536,32" fill="none" stroke="black"/>
                <path d="M 648,32 L 744,32" fill="none" stroke="black"/>
                <path d="M 8,48 L 80,48" fill="none" stroke="black"/>
                <path d="M 80,80 L 248,80" fill="none" stroke="black"/>
                <path d="M 352,80 L 432,80" fill="none" stroke="black"/>
                <path d="M 536,80 L 640,80" fill="none" stroke="black"/>
                <path d="M 88,144 L 256,144" fill="none" stroke="black"/>
                <path d="M 360,144 L 440,144" fill="none" stroke="black"/>
                <path d="M 544,144 L 648,144" fill="none" stroke="black"/>
                <path d="M 8,160 L 80,160" fill="none" stroke="black"/>
                <path d="M 256,192 L 352,192" fill="none" stroke="black"/>
                <path d="M 440,192 L 536,192" fill="none" stroke="black"/>
                <path d="M 648,192 L 744,192" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="648,80 636,74.4 636,85.6" fill="black" transform="rotate(0,640,80)"/>
                <polygon class="arrowhead" points="552,144 540,138.4 540,149.6" fill="black" transform="rotate(180,544,144)"/>
                <polygon class="arrowhead" points="440,80 428,74.4 428,85.6" fill="black" transform="rotate(0,432,80)"/>
                <polygon class="arrowhead" points="368,144 356,138.4 356,149.6" fill="black" transform="rotate(180,360,144)"/>
                <polygon class="arrowhead" points="256,80 244,74.4 244,85.6" fill="black" transform="rotate(0,248,80)"/>
                <polygon class="arrowhead" points="96,144 84,138.4 84,149.6" fill="black" transform="rotate(180,88,144)"/>
                <g class="text">
                  <text x="136" y="68">Composite</text>
                  <text x="212" y="68">Evidence</text>
                  <text x="388" y="68">(CE)</text>
                  <text x="580" y="68">(CE)</text>
                  <text x="140" y="100">(CE)</text>
                  <text x="384" y="100">Partial</text>
                  <text x="428" y="100">AR</text>
                  <text x="576" y="100">Partial</text>
                  <text x="620" y="100">AR</text>
                  <text x="44" y="116">Attester</text>
                  <text x="300" y="116">Verifier</text>
                  <text x="344" y="116">1</text>
                  <text x="484" y="116">Verifier</text>
                  <text x="528" y="116">2</text>
                  <text x="692" y="116">Verifier</text>
                  <text x="736" y="116">N</text>
                  <text x="36" y="132">or</text>
                  <text x="140" y="132">Aggregated</text>
                  <text x="28" y="148">RP</text>
                  <text x="136" y="164">Attestation</text>
                  <text x="216" y="164">Results</text>
                  <text x="392" y="164">(AAR)</text>
                  <text x="576" y="164">(AAR)</text>
                  <text x="136" y="180">(AAR)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                               +-----------+          +-----------+             +-----------+
+--------+                     |           |          |           |             |           |
|        |  Composite Evidence |           |  (CE)    |           |   (CE)      |           |
|        +-------------------->+           +--------->+           +------------>+           |
|        |     (CE)            |           |Partial AR|           | Partial AR  |           |
|Attester|                     | Verifier 1|          | Verifier 2|             | Verifier N|
|  or    |  Aggregated         |           |          |           |             |           |
| RP     +<--------------------+           +<---------+           +<------------+           |
+--------+ Attestation Results |           |  (AAR)   |           |  (AAR)      |           |
              (AAR)            |           |          |           |             |           |
                               +-----------+          +-----------+             +-----------+
]]></artwork>
          </artset>
        </figure>
        <t>In this topological pattern, the Attestation Verification happens in sequence. Verifiers are cascaded to perform the Attestation Appraisal.
Each Verifier in the chain has the knowledge to derive or extract the Component Evidence, which it can appraise, from the Composite Evidence.</t>
        <t>Attester may send the Composite Evidence(CE) to any of the Verifier (directly in the passport model, or indirectly via the Relying Party in the background-check model). The Verifier which processes the Composite Evidence, Verifies the signature on the Evidence, if present. It extracts the
Component Evidence from the Composite Evidence, performs Appraisal of the Component Attester whose Reference Values and Endorsements are in its database. Once the appraisal is complete, it forwards the Composite Evidence and Partial Attestation Results to the subsequent Verifier.</t>
        <t>The process is repeated, until the entire appraisal is complete. The last Verifier, i.e. Verifier-N, completes its Appraisal of the Component Evidence, that it can appraise. It has now all the Partial Attestation Results and creates the Aggregated Attestation Results(AAR). It returns
the AAR to the N-1 Verifier (from where it received the Composite Evidence and Partial AR). The process is repeated, i.e. AAR is returned in the chain until the Verifier, which recieved the initial Composite Evidence is reached. At this point in time the Aggregated Attestation Results are signed and the AAR is sent to the Attester (in Passport Model) or Relying Party (in background check model).</t>
        <t>As shown in the picture, the Partial Attestation Results and Composite Evidence is transmitted to a chain of Verifier, till the Appraisal is complete.
Upon completion, the last Verifier in the chain combines the incoming Partial Attestation Results, combines the results from it own Evidence Appraisal and passes the Aggregated Attestation Results to the Verifier from which it receives Composite Evidence.</t>
        <t>There are many protocols to determine how a Verifier can select the next Verifier to route the CE.
This document does not mandate any specific protocol for determining the Verifiers in cascade.</t>
        <section anchor="trust-relationships-1">
          <name>Trust Relationships</name>
        </section>
        <section anchor="verifiers">
          <name>Verifiers</name>
          <t>In the cascaded pattern, the communicating Verifiers fully trust each other. Each Verifier has the trust anchor for the Verifier it is communicating to (i.e. either sending information or receiving information). This prevents man in the middle attack for the partial Attestation Results received by a Verifier or a Aggregated Attestation Results (AAR) which it receives in the return path.</t>
        </section>
        <section anchor="relying-party-and-verifiers">
          <name>Relying Party and Verifiers</name>
          <t>In the cascaded pattern, the RP may communicate with any Verifier and thus receive its Attestation Results. Hence RP fully trusts all the Verifiers.</t>
        </section>
      </section>
      <section anchor="hybrid-pattern">
        <name>Hybrid Pattern</name>
        <t>In a particular deployment, there is a possibility that the two models presented above can be combined to produce a hybrid pattern. For example Verifier 2 in the Cascaded Pattern becomes the Lead Verifier for the remaining Verifers from 3, to N.</t>
      </section>
    </section>
    <section anchor="freshness">
      <name>Freshness</name>
      <t>The Verifier needs to ensure that the claims included in the Evidence reflect the latest state of the Attester. As per RATS Architecture, the recommended freshness is ascertained using either Synchronised Clocks, Epoch IDs, or nonce, embedded in the Evidence.
In the case of Hierarchical Pattern, the Verification of Freshness should be checked by the Lead Verifier.</t>
      <t>In the Cascaded Pattern, the freshness is always checked by the first Verifier in communication with either the Attester (Passport Model) or Relying Party (Background Check Model).</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The Verifier is effectively part of the Attesters' and Relying Parties' trusted computing base (TCB).  When multiple Verifiers coordinate to conduct appraisal, it leads to larger TCB and hence more attack surface. Any mistake in the appraisal procedure conducted by one or more Verifiers could lead to severe security implications, such as incorrect Attestation Result of a component or a composition to the Relying party. This section details the security threats and mitigation strategies specific to the multi-verifier topologies described in this document. In addition to the considerations herein, Verifiers MUST follow the guidance detailed in the Security and Privacy considerations of a RATS Verifier as detailed in <xref section="11" sectionFormat="of" target="I-D.draft-ietf-rats-corim"/> and the RATS Architecture Section <xref target="RFC9334" section="11" sectionFormat="bare"/> and Section <xref target="RFC9334" section="12" sectionFormat="bare"/> of <xref target="RFC9334"/>.</t>
      <section anchor="adversarial-model">
        <name>Adversarial Model</name>
        <t>The security analysis in this section assumes that attackers may:</t>
        <ol spacing="normal" type="1"><li>
            <t>Eavesdrop on any communication channel between Verifiers.</t>
          </li>
          <li>
            <t>Inject, modify, replay, or delay messages traversing the network.</t>
          </li>
          <li>
            <t>Compromise one or more Verifiers in the ecosystem, attempting to leak sensitive information (e.g., Evidence, Reference Values) or manipulate Attestation Results.</t>
          </li>
          <li>
            <t>Perform Man-in-the-Middle (MitM) attacks between any two communicating entities.</t>
          </li>
        </ol>
        <t>The system is designed to be resilient under the assumption that the cryptographic keys used for signing Evidence and Attestation Results (by authentic entities) are not compromised.</t>
      </section>
      <section anchor="general-considerations">
        <name>General Considerations</name>
        <t>All communications between entities (Attester-Verifier, Verifier-Verifier, Verifier-RP) MUST be secured using mutually authenticated, confidential, and integrity-protected channels (e.g., TLS).</t>
        <t>It is recommended that any two verifiers establishing a communication channel perform mutual attestation before exchanging  any attestation messages.</t>
      </section>
      <section anchor="security-for-topological-patterns">
        <name>Security for Topological Patterns</name>
        <section anchor="hierarchical-pattern">
          <name>Hierarchical Pattern</name>
          <t>The hierarchical pattern introduces a central trust entity, the Lead Verifier (LV). The security of the entire system relies on the integrity and correct operation of the LV.</t>
          <section anchor="threats-and-mitigations">
            <name>Threats and Mitigations</name>
            <section anchor="lv-compromise">
              <name>LV Compromise</name>
              <t><strong>Threat:</strong> A compromised LV can orchestrate attacks, such as approving malicious attestations, wrongly aggregating attestation results or leaking sensitive evidence. This is a single point of failure from a trust perspective.</t>
              <t><strong>Mitigation:</strong> The LV MUST be hardened and operate and store its Keys in a secure environment. Its operation SHOULD be auditable.
Component Verifiers should be made available suitable trust anchors so that they can establish required trust in the authority of the LV.</t>
            </section>
            <section anchor="communication-security-lv-cv">
              <name>Communication Security (LV &lt;-&gt; CV)</name>
              <t><strong>Threat:</strong> Eavesdropping or manipulation of evidence/results in transit.</t>
              <t><strong>Mitigation:</strong> All communications between the LV and CVs MUST be mutually authenticated and confidential (e.g., using TLS with client authentication). This ensures integrity, confidentiality, and authenticity of the messages exchanged between the Verifiers.</t>
            </section>
            <section anchor="evidence-integrity-and-origin-authentication-lv-cv">
              <name>Evidence Integrity and Origin Authentication (LV -&gt; CV)</name>
              <t><strong>Threat:</strong> The LV could forward manipulated evidence to a CV, or an attacker could inject fake evidence.</t>
              <t><strong>Mitigation:</strong> The conceptual message containing the Component Evidence MUST be integrity-protected and authenticated. If the Component Evidence is natively signed by the Component Attester at origin, the CV can verify it directly. If the Component Evidence lacks inherent signatures (e.g., in UCCS), the LV MUST sign the Component Evidence using a key that the CV trusts. This prevents any on-path attacker from altering the Component Evidence.</t>
            </section>
            <section anchor="results-integrity-and-origin-authentication-cv-lv">
              <name>Results Integrity and Origin Authentication (CV -&gt; LV)</name>
              <t><strong>Threat:</strong> Partial Attestation Results could be manipulated in transit or forged by a malicious CV.</t>
              <t><strong>Mitigation:</strong> Each Partial Attestation Result MUST be digitally signed by the CV.
 LV should maintain a list of trust anchors for the CV's it communicates with.
The LV MUST validate the signature using the required trust anchor for the CV, before adding the Partial Attestation Results to the Aggregated Attestation Results.</t>
            </section>
            <section anchor="replay-attacks">
              <name>Replay Attacks</name>
              <t><strong>Threat:</strong> An adversary Component Verifier replays old Evidence or Attestation Results.</t>
              <t><strong>Mitigation:</strong> The LV is responsible for enforcing freshness (via nonces, epochs, or timestamps). This freshness value MUST be propagated to CVs and back to the LV, to ensure final AR can be validated against the original challenge.</t>
            </section>
          </section>
        </section>
        <section anchor="cascaded-pattern">
          <name>Cascaded Pattern</name>
          <t>The cascaded pattern distributes trust but requires each Verifier in the chain to be trusted to correctly handle and forward  Attestation messages. The chain's security is only as strong as its weakest link.</t>
          <section anchor="threats-and-mitigations-1">
            <name>Threats and Mitigations</name>
            <section anchor="verifier-compromise">
              <name>Verifier Compromise</name>
              <t><strong>Threat:</strong> Any compromised Verifier in the chain can block, delay, or manipulate the attestation process. It can inject false partial results, drop evidence, or leak sensitive information.</t>
              <t><strong>Mitigation:</strong> Relying Parties and Verifiers MUST be configured with strict trust policies defining the allowed paths and trusted Verifiers. Operations should be logged for auditability.</t>
            </section>
            <section anchor="communication-security">
              <name>Communication Security</name>
              <t><strong>Threat:</strong> Eavesdropping or manipulation of evidence and results between Verifiers.</t>
              <t><strong>Mitigation:</strong> Each hop between Verifiers MUST be secured with mutually authenticated and confidential channels (e.g., TLS with client authentication).</t>
            </section>
            <section anchor="evidence-and-results-protection">
              <name>Evidence and Results Protection</name>
              <t><strong>Threat:</strong> Lack of end-to-end security allows intermediate Verifiers to manipulate evidence or results that are not intended for them to appraise.</t>
              <t><strong>Mitigation:</strong> End-to-end integrity protection is RECOMMENDED. The Composite Evidence should be signed by the Attester. Partial and Aggregated Attestation Results SHOULD be signed by the Verifier that generated them. This allows subsequent Verifiers and the Relying Party to verify that results have not been tampered with by intermediate nodes.</t>
            </section>
            <section anchor="replay-attacks-1">
              <name>Replay Attacks</name>
              <t><strong>Threat:</strong> An adversary replays old Evidence or Attestation Results.</t>
              <t><strong>Mitigation:</strong> The first Verifier in the chain (the one receiving evidence from the Attester/RP) is responsible for enforcing freshness (via nonces, epochs, or timestamps) for the entire cascade. This freshness value MUST be propagated with the Evidence and Results through the chain so the final AR can be validated against the original challenge.</t>
            </section>
          </section>
        </section>
        <section anchor="security-of-the-hybrid-pattern">
          <name>Security of the Hybrid Pattern</name>
          <t>As the hybrid pattern is the composition of  hierarchical pattern and cascade pattern, all the threats and mitigations that are applicable for these two patterns are also applicable for the general hybrid pattern.</t>
        </section>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>The appraisal of a Composite Attester requires exchange of attestation related messages, for example, partial Evidence and partial Attestation Results, among multiple Verifiers. This can potentially leak sensitive information about the Attester's configuration , identities and the nature of composition.</t>
      <ul spacing="normal">
        <li>
          <t>Minimization: Attesters should only generate Evidence that is strictly necessary for the appraisal policy. Verifiers should only request necessary claims.</t>
        </li>
        <li>
          <t>Confidentiality: Encryption should be used to prevent unauthorized parties (including other Verifiers in the hierarchy or cascade) from accessing sensitive Evidence. This is crucial in multi-tenant environments.</t>
        </li>
        <li>
          <t>Policy Handling: Verifiers should be careful not to leak their internal appraisal policies (e.g., through error messages or timing side channels) when communicating with other Verifiers or Attesters, as this information could be exploited by an attacker to manipulate appraisal.</t>
        </li>
      </ul>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank
Simon Frost
and
Usama Sardar
for their reviews and suggestions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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.draft-ietf-rats-corim">
          <front>
            <title>Concise Reference Integrity Manifest</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>arm</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="7" month="July" year="2025"/>
            <abstract>
              <t>   Remote Attestation Procedures (RATS) enable Relying Parties to assess
   the trustworthiness of a remote Attester and therefore to decide
   whether or not to engage in secure interactions with it.  Evidence
   about trustworthiness can be rather complex and it is deemed
   unrealistic that every Relying Party is capable of the appraisal of
   Evidence.  Therefore that burden is typically offloaded to a
   Verifier.  In order to conduct Evidence appraisal, a Verifier
   requires not only fresh Evidence from an Attester, but also trusted
   Endorsements and Reference Values from Endorsers and Reference Value
   Providers, such as manufacturers, distributors, or device owners.
   This document specifies the information elements for representing
   Endorsements and Reference Values in CBOR format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-corim-08"/>
        </reference>
        <reference anchor="RFC6024">
          <front>
            <title>Trust Anchor Management Requirements</title>
            <author fullname="R. Reddy" initials="R." surname="Reddy"/>
            <author fullname="C. Wallace" initials="C." surname="Wallace"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>A trust anchor represents an authoritative entity via a public key and associated data. The public key is used to verify digital signatures, and the associated data is used to constrain the types of information for which the trust anchor is authoritative. A relying party uses trust anchors to determine if a digitally signed object is valid by verifying a digital signature using the trust anchor's public key, and by enforcing the constraints expressed in the associated data for the trust anchor. This document describes some of the problems associated with the lack of a standard trust anchor management mechanism and defines requirements for data formats and push-based protocols designed to address these problems. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6024"/>
          <seriesInfo name="DOI" value="10.17487/RFC6024"/>
        </reference>
      </references>
    </references>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="T." surname="Fossati" fullname="Thomas Fossati">
        <organization>Linaro</organization>
        <address>
          <email>Thomas.Fossati@linaro.org</email>
        </address>
      </contact>
      <contact initials="T." surname="Giannetsos" fullname="Thanassis Giannetsos">
        <organization>UBITECH Ltd.</organization>
        <address>
          <email>agiannetsos@ubitech.eu</email>
        </address>
      </contact>
      <contact initials="S." surname="Bellock" fullname="Steven Bellock">
        <organization>NVIDIA</organization>
        <address>
          <email>sbellock@nvidia.com</email>
        </address>
      </contact>
      <contact initials="G." surname="Arfaoui" fullname="Ghada Arfaoui">
        <organization>ORANGE</organization>
        <address>
          <email>ghada.arfaoui@orange.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
