<?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.24 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-endorsements-06" category="info" consensus="true" submissionType="IETF" updates="9334" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="RATS Endorsements">RATS Endorsements</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-endorsements-06"/>
    <author initials="D." surname="Thaler" fullname="Dave Thaler">
      <organization>Armidale Consulting</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <region/>
          <code/>
          <country>USA</country>
        </postal>
        <email>dave.thaler.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>Linaro</organization>
      <address>
        <email>Thomas.Fossati@linaro.org</email>
      </address>
    </author>
    <date year="2025" month="March" day="03"/>
    <area>Security</area>
    <workgroup>RATS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 53?>

<t>In the IETF Remote Attestation Procedures (RATS) architecture, a Verifier
accepts Evidence and, using Appraisal Policy typically with additional
input from Endorsements and Reference Values, generates Attestation Results
in formats that are useful for Relying Parties.  This document illustrates the purpose and
role of Endorsements and discusses some considerations in the choice of
message format for Endorsements in the scope of the RATS architecture.</t>
      <t>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>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Remote ATtestation ProcedureS Working Group mailing list (rats@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/rats/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/dthaler/rats-endorsements"/>.</t>
    </note>
  </front>
  <middle>
    <?line 66?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Section 3 in the Remote ATtestation procedures (RATS) Architecture <xref section="3" sectionFormat="of" target="RFC9334"/> gives an overview of the roles
and conceptual messages in the IETF RATS Architecture.
As discussed in that document, a Verifier accepts a well-defined set of RATS conceptual messages: Evidence, Endorsements
and Reference Values, as well as Policy for Appraisal of Evidence.  A Verifier appraises Evidence using Appraisal Policy for Evidence, typically against a set of Reference Values.</t>
      <t>Various formats of conceptual messages exist, including standard and vendor-specific formats.
One of the purposes of a Verifier is depicted
in Figure 9 of <xref target="RFC9334"/>. A Verifier is intended to be able to accept Evidence in a variety of
formats and generate Attestation Results in the formats needed by a Relying Parties it is intended to cater.</t>
    </section>
    <section anchor="statetypes">
      <name>Actual State vs Reference State</name>
      <t>Appraisal policies (Appraisal Policy for Evidence, and Appraisal Policy for
Attestation Results) involve comparing the actual state of an Attester against
desired or undesired states, in order to determine how trustworthy the Attester
is for its purposes.  The state of an Attester represents the Attester's
"shape" as the arrangement of its various execution environments, which are
typically organized hierarchically.
The state of an Attester also encompasses the combination of static and
dynamic composition (e.g., provisioned and deployed software, firmware, and
micro-code), static and dynamic configuration, and the resulting operational state
of its components at a certain point in time. Thus, a Verifier needs to receive
conceptual messages with information about actual state, and information about desired/undesired
states, and an appraisal policy that controls how the two are compared.</t>
      <t>Each Attester in general has at least one Attesting Environment and one Target
Environment (e.g., hardware, firmware, Operating System, etc.).  Typically, each
Attester has multiple Target Environments, each with their own set of claims (sometimes
called "claim sets") representing their actual state.  Additionally, the number of
Target Environments and Attesting Environments that are components of an Attester are not limited.</t>
      <t>"Actual state" is a group of claim sets about the actual state of the Attester at a
given point in time. Each claim set holds claims about a specific Target Environment
that is essential to determining trustworthiness.  Generally speaking, each claim
has a name (typically referred to as a label, and occasionally referred to as a key or code-point)
and a singleton value, being a value collected from a Target Environment of a specific Attester at a given point
in time. Some claims may inherently have multiple values, such as a list of
files in a given location on the device, but in the context of this document such
a list is treated as a single unit, representing one Attester at one point in time.</t>
      <t>"Reference state" is a group of claim sets about the desired or undesired state of
an Attester.  Typically, each claim has a name and
a set of potential values, being the values that are allowed/disallowed
when determining the trustworthiness of the Attester.
Generally, there may be varying degrees of gradation beyond just "allowed" or "disallowed."
Reference state can have a set of values per claim per Target Environment.
This is contrasted with actual state, which has a single value per claim per Target Environment.
Actual state applies to one device at one point in time.
Appraisal policy then specifies how to match the actual state values against a set of Reference Values.</t>
      <t>Some examples of such matching include:</t>
      <ul spacing="normal">
        <li>
          <t>An actual value must be in the set of allowed Reference Values.</t>
        </li>
        <li>
          <t>An actual value must not be in the set of disallowed Reference Values.</t>
        </li>
        <li>
          <t>An actual value must be in a range where two Reference Values are the min and max.</t>
        </li>
      </ul>
      <section anchor="conceptual">
        <name>RATS Conceptual Messages</name>
        <t>RATS conceptual messages in <xref target="RFC9334"/> fall into the above categories as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Actual state: Evidence, Endorsements, Attestation Results</t>
          </li>
          <li>
            <t>Reference state: Reference Values</t>
          </li>
          <li>
            <t>Appraisal policy: Appraisal Policy for Evidence, Appraisal Policy for Attestation Results</t>
          </li>
        </ul>
        <t>In some implementations, hints or suggestions for how to do a comparison might
be supplied by a Reference Value Provider (as part of Reference Values),
an Endorser (in an Endorsement), and/or an Attester (in Evidence),
but the Verifier Owner is authoritative for Appraisal Policy for Evidence,
and the Relying Party Owner is authoritative for Appraisal Policy for
Attestation Results as depicted in <xref section="3" sectionFormat="of" target="RFC9334"/>.</t>
        <t><xref target="input"/> below shows an example of Verifier input for a layered Attester
as discussed in <xref section="3.2" sectionFormat="of" target="RFC9334"/>.</t>
        <figure anchor="input">
          <name>Example Verifier Input</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="576" viewBox="0 0 576 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 104,32 L 104,240" fill="none" stroke="black"/>
                <path d="M 104,272 L 104,320" fill="none" stroke="black"/>
                <path d="M 136,32 L 136,80" fill="none" stroke="black"/>
                <path d="M 136,112 L 136,160" fill="none" stroke="black"/>
                <path d="M 136,192 L 136,240" fill="none" stroke="black"/>
                <path d="M 136,272 L 136,320" fill="none" stroke="black"/>
                <path d="M 240,32 L 240,80" fill="none" stroke="black"/>
                <path d="M 240,112 L 240,160" fill="none" stroke="black"/>
                <path d="M 240,192 L 240,240" fill="none" stroke="black"/>
                <path d="M 240,272 L 240,320" fill="none" stroke="black"/>
                <path d="M 304,80 L 304,176" fill="none" stroke="black"/>
                <path d="M 376,32 L 376,80" fill="none" stroke="black"/>
                <path d="M 376,112 L 376,160" fill="none" stroke="black"/>
                <path d="M 376,192 L 376,240" fill="none" stroke="black"/>
                <path d="M 376,272 L 376,320" fill="none" stroke="black"/>
                <path d="M 520,32 L 520,80" fill="none" stroke="black"/>
                <path d="M 520,112 L 520,160" fill="none" stroke="black"/>
                <path d="M 520,192 L 520,240" fill="none" stroke="black"/>
                <path d="M 520,272 L 520,320" fill="none" stroke="black"/>
                <path d="M 552,32 L 552,320" fill="none" stroke="black"/>
                <path d="M 104,32 L 120,32" fill="none" stroke="black"/>
                <path d="M 136,32 L 240,32" fill="none" stroke="black"/>
                <path d="M 376,32 L 520,32" fill="none" stroke="black"/>
                <path d="M 536,32 L 552,32" fill="none" stroke="black"/>
                <path d="M 136,80 L 240,80" fill="none" stroke="black"/>
                <path d="M 376,80 L 520,80" fill="none" stroke="black"/>
                <path d="M 136,112 L 240,112" fill="none" stroke="black"/>
                <path d="M 376,112 L 520,112" fill="none" stroke="black"/>
                <path d="M 136,160 L 240,160" fill="none" stroke="black"/>
                <path d="M 376,160 L 520,160" fill="none" stroke="black"/>
                <path d="M 136,192 L 240,192" fill="none" stroke="black"/>
                <path d="M 264,190 L 352,190" fill="none" stroke="black"/>
                <path d="M 264,194 L 352,194" fill="none" stroke="black"/>
                <path d="M 376,192 L 520,192" fill="none" stroke="black"/>
                <path d="M 104,240 L 120,240" fill="none" stroke="black"/>
                <path d="M 136,240 L 240,240" fill="none" stroke="black"/>
                <path d="M 376,240 L 520,240" fill="none" stroke="black"/>
                <path d="M 104,272 L 120,272" fill="none" stroke="black"/>
                <path d="M 136,272 L 240,272" fill="none" stroke="black"/>
                <path d="M 376,272 L 520,272" fill="none" stroke="black"/>
                <path d="M 104,320 L 120,320" fill="none" stroke="black"/>
                <path d="M 136,320 L 240,320" fill="none" stroke="black"/>
                <path d="M 376,320 L 520,320" fill="none" stroke="black"/>
                <path d="M 536,320 L 552,320" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="360,192 348,186.4 348,197.6" fill="black" transform="rotate(0,352,192)"/>
                <polygon class="arrowhead" points="312,176 300,170.4 300,181.6" fill="black" transform="rotate(90,304,176)"/>
                <polygon class="arrowhead" points="272,192 260,186.4 260,197.6" fill="black" transform="rotate(180,264,192)"/>
                <g class="text">
                  <text x="304" y="36">Appraisal</text>
                  <text x="164" y="52">Actual</text>
                  <text x="216" y="52">state</text>
                  <text x="300" y="52">Policy</text>
                  <text x="424" y="52">Reference</text>
                  <text x="488" y="52">state</text>
                  <text x="180" y="68">(layer</text>
                  <text x="220" y="68">N)</text>
                  <text x="436" y="68">(layer</text>
                  <text x="476" y="68">N)</text>
                  <text x="568" y="68">R</text>
                  <text x="568" y="84">e</text>
                  <text x="568" y="100">f</text>
                  <text x="568" y="116">e</text>
                  <text x="60" y="132">Evidence</text>
                  <text x="164" y="132">Actual</text>
                  <text x="216" y="132">state</text>
                  <text x="424" y="132">Reference</text>
                  <text x="488" y="132">state</text>
                  <text x="568" y="132">r</text>
                  <text x="180" y="148">(layer</text>
                  <text x="220" y="148">2)</text>
                  <text x="436" y="148">(layer</text>
                  <text x="476" y="148">2)</text>
                  <text x="568" y="148">e</text>
                  <text x="568" y="164">n</text>
                  <text x="568" y="180">c</text>
                  <text x="568" y="196">e</text>
                  <text x="164" y="212">Actual</text>
                  <text x="216" y="212">state</text>
                  <text x="308" y="212">Comparison</text>
                  <text x="424" y="212">Reference</text>
                  <text x="488" y="212">state</text>
                  <text x="180" y="228">(layer</text>
                  <text x="220" y="228">1)</text>
                  <text x="304" y="228">Rules</text>
                  <text x="436" y="228">(layer</text>
                  <text x="476" y="228">1)</text>
                  <text x="568" y="228">V</text>
                  <text x="568" y="244">a</text>
                  <text x="568" y="260">l</text>
                  <text x="568" y="276">u</text>
                  <text x="48" y="292">Endorsement</text>
                  <text x="164" y="292">Actual</text>
                  <text x="216" y="292">state</text>
                  <text x="424" y="292">Reference</text>
                  <text x="488" y="292">state</text>
                  <text x="568" y="292">e</text>
                  <text x="180" y="308">(layer</text>
                  <text x="220" y="308">0)</text>
                  <text x="436" y="308">(layer</text>
                  <text x="476" y="308">0)</text>
                  <text x="568" y="308">s</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
            .-- .------------.   Appraisal    .-----------------. --.
            |   |Actual state|    Policy      | Reference state |   |
            |   |  (layer N) |                |    (layer N)    |   | R
            |   '------------'       |        '-----------------'   | e
            |                        |                              | f
            |   .------------.       |        .-----------------.   | e
   Evidence |   |Actual state|       |        | Reference state |   | r
            |   |  (layer 2) |       |        |    (layer 2)    |   | e
            |   '------------'       |        '-----------------'   | n
            |                        v                              | c
            |   .------------.  <==========>  .-----------------.   | e
            |   |Actual state|   Comparison   | Reference state |   |
            |   |  (layer 1) |     Rules      |    (layer 1)    |   | V
            '-- '------------'                '-----------------'   | a
                                                                    | l
            .-- .------------.                .-----------------.   | u
Endorsement |   |Actual state|                | Reference state |   | e
            |   |  (layer 0) |                |    (layer 0)    |   | s
            '-- '------------'                '-----------------' --'
]]></artwork>
          </artset>
        </figure>
        <t>While the above example only shows one layer within Endorsements as
the typical case, there could be multiple layers (see <xref target="multiple-endorsements"/>), such as
a chip added to a hardware board potentially from a different vendor.</t>
        <t>A Trust Anchor Store is a special case of
state above, where the Reference State would be the set of trust anchors
accepted (or rejected) by the Verifier, and the Actual State would be
a trust anchor used to appraise Evidence or Endorsements.</t>
        <t>In layered attestation using DICE <xref target="TCG-DICE"/> for example, the actual state of each layer
is signed by a key held by the next lower layer.  Thus in the example diagram
above, the layer 2 actual state (e.g., OS state) is signed by a layer 1 key
(e.g., a signing key used by the firmware), the layer 1 actual state (e.g.,
firmware state) is signed by a layer 0 key (e.g., a hardware key stored in ROM),
and the layer 0 actual state (hardware specs and key ID) is signed by a layer 0
key (e.g., a vendor key) which is matched against the Verifier's trust anchor
store, which is part of the layer 0 reference state depicted above.</t>
      </section>
    </section>
    <section anchor="conditionally-endorsed-values">
      <name>Conditionally Endorsed Values</name>
      <t>The example in <xref target="input"/> shows Evidence containing actual state for layers 1 through N,
and an Endorsement containing actual state for layer 0. However,
some claims in Endorsements might be conditional and so are only treated as actual
state if a condition is met.</t>
      <t>A claim is conditional if
it only applies if other actual state matches Reference Values, according to some
matching policy.
For example, an Endorser for a given CPU might provide additional
information about what the CPU supports based on current firmware configuration
state, or an Endorser might provide additional information that if the
serial number is in a given range, then a specific security guarantee is present.</t>
      <t>Thus, actual state is determined by starting with a collection of unconditional claims
and adding any conditional claims whose conditions are met based on the actual
state.  This process is then repeated until no more conditional claims are added.</t>
      <t>Verifier policies around matching actual state against
reference state are normally expressed in Appraisal Policy for Evidence.
Similarly, reference state is normally expressed in the Reference Values
conceptual message.  Such policies allow a Verifier and Relying Parties to make
their decisions about the trustworthiness of an Attester.</t>
      <t>The use of conditionally endorsed values, however, is different in that
a matching policy is not about trustworthiness (and hence not "appraisal" per se)
but rather about whether an Endorser's claim is applicable or not, and thus
usable as input to trustworthiness appraisal or not.</t>
      <t>As such the matching policy for conditionally endorsed values must be
up to the Endorser not the Appraisal Policy Provider.  Thus, an Endorsement
format that supports conditionally endorsed values would probably include
some minimal matching policy (e.g., exact match against a singleton reference
value).  This unfortunately complicates design as a Verifier may need
multiple parsers for matching policies.</t>
    </section>
    <section anchor="endorsing-keys">
      <name>Endorsing Verification Keys</name>
      <t>Attesting Environments have cryptographic keys that allow authenticating the Evidence that they produce.</t>
      <t>Typically,
the bottom-most Attesting Environment in an Attester will sign claims about one or more Target Environments
(see also the DICE example at the end of <xref target="conceptual"/>)
with a private key that the Attesting Environment possesses, and the Verifier will appraise
the resulting Evidence with a public key it possesses, called a verification key below.
While use of public key cryptography is typical for a verification key, cryptography other than public key may also be used.</t>
      <t>Endorsing the linkage between such verification keys and their associated Attesting Environments is crucial to the verification process.</t>
      <t>The Verifier must have access to a verification key for each Attester. Such a key
could be provisioned directly in the Verifier, though for scalability the Verifier
typically is provisioned with a trusted root CA certificate such that an
Endorsement from an Endorser includes the Attester's verification key material
in the form of a certificate that chains up to that trusted root (i.e., a certification path).  Such a certificate
might be stored in the Verifier, or might be resolved on demand via some protocol,
or might be passed to the Verifier along with the Evidence to appraise, depending on the protocol or general remote attestation procedure.
Details are out of scope of this document and left to specific protocol or procedure documents.</t>
      <t>Specific protocol documents are also responsible for documenting what
particular algorithm or cryptographic protocol is used for the verification
of the Attester. The verification key (i.e., a key with the purpose of signature checking) could be, typically, a symmetric key, a raw public key, or a certified public key.</t>
      <t>Evidence can contain an identifier for the Attester
(e.g., <xref target="I-D.ietf-rats-eat"/> <tt>ueid</tt>) in a claim, sometimes termed an "identity claim",
that can be used by the Verifier to look up its verification key for the Attester.</t>
      <t>While identity claims are just another
type of claims that may be endorsed, some implementations might treat them
differently. For example, a Verifier might perform a first step to
cryptographically appraise that the Evidence
has been generated by the Attester that has the key material associated
with the identifier in the identity claim(s) before spending effort on
another step to appraise other claims for determining trustworthiness.</t>
      <t>This document treats identity claims as with any other claims but allows
Appraisal Policy for Evidence to have multiple phases if desired.</t>
    </section>
    <section anchor="timeliness">
      <name>Timeliness</name>
      <t>Specific protocol documents are also responsible for documenting how Timeliness
of the Endorsement itself (e.g., using a certificate lifetime) is provided.</t>
      <t><xref section="8.1" sectionFormat="of" target="RFC9334"/> discusses timeliness of claims in Evidence.  When
additional static claims are provided in Endorsements, no additional steps
are needed for timeliness of those claims since they are static rather than
dynamically varying over time.  Once timeliness of Evidence is appraised,
any matching conditionally endorsed values can be applied.</t>
      <t>If Endorsements ever carry dynamic claims in the future (e.g., whether
any vulnerabilities in the version of firmware are currently known), then
the same timeliness considerations as for claims in Evidence would apply,
and would be the responsibility of specific protocol documents. See
<xref section="10" sectionFormat="of" target="RFC9334"/> and <xref section="A" sectionFormat="of" target="RFC9334"/> for further discussion.</t>
    </section>
    <section anchor="multiple-endorsements">
      <name>Multiple Endorsements</name>
      <t><xref target="input"/> shows an example with an Endorsement at layer 0, such as
a hardware manufacturer providing claims about the hardware. However, the
same could be done at other layers in addition.  For example, an OS vendor
might provide additional static claims about the OS software it provides,
and application developers might provide additional static claims about
the applications they release.</t>
      <t><xref target="multiple"/> depicts an example with an Attester consisting of an application,
OS, firmware, and hardware, each from a different vendor that provides
an Endorsement for their own Target Environment, containing additional claims
about that Target Environment.  Thus each Target Environment (application, OS, firmware,
and hardware) has one set of claims ("claim set 1") in the Evidence, and an additional
set of claims ("claim set 2") in the Endorsement from its manufacturer.  A Verifier
that trusts each Endorser would thus use the claim sets from both conceptual
messages when comparing against reference state for a given Target Environment.</t>
      <figure anchor="multiple">
        <name>Multiple Endorsements</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="512" width="504" viewBox="0 0 504 512" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 128,32 L 128,112" fill="none" stroke="black"/>
              <path d="M 128,144 L 128,224" fill="none" stroke="black"/>
              <path d="M 128,256 L 128,336" fill="none" stroke="black"/>
              <path d="M 128,368 L 128,448" fill="none" stroke="black"/>
              <path d="M 232,48 L 232,96" fill="none" stroke="black"/>
              <path d="M 232,160 L 232,208" fill="none" stroke="black"/>
              <path d="M 232,272 L 232,320" fill="none" stroke="black"/>
              <path d="M 232,384 L 232,432" fill="none" stroke="black"/>
              <path d="M 328,48 L 328,96" fill="none" stroke="black"/>
              <path d="M 328,160 L 328,208" fill="none" stroke="black"/>
              <path d="M 328,272 L 328,320" fill="none" stroke="black"/>
              <path d="M 328,384 L 328,432" fill="none" stroke="black"/>
              <path d="M 344,32 L 344,112" fill="none" stroke="black"/>
              <path d="M 344,144 L 344,224" fill="none" stroke="black"/>
              <path d="M 344,256 L 344,336" fill="none" stroke="black"/>
              <path d="M 344,368 L 344,448" fill="none" stroke="black"/>
              <path d="M 360,32 L 360,448" fill="none" stroke="black"/>
              <path d="M 376,48 L 376,96" fill="none" stroke="black"/>
              <path d="M 376,160 L 376,208" fill="none" stroke="black"/>
              <path d="M 376,272 L 376,320" fill="none" stroke="black"/>
              <path d="M 376,384 L 376,432" fill="none" stroke="black"/>
              <path d="M 424,456 L 424,496" fill="none" stroke="black"/>
              <path d="M 472,48 L 472,96" fill="none" stroke="black"/>
              <path d="M 472,160 L 472,208" fill="none" stroke="black"/>
              <path d="M 472,272 L 472,320" fill="none" stroke="black"/>
              <path d="M 472,384 L 472,432" fill="none" stroke="black"/>
              <path d="M 496,32 L 496,448" fill="none" stroke="black"/>
              <path d="M 128,32 L 344,32" fill="none" stroke="black"/>
              <path d="M 360,32 L 496,32" fill="none" stroke="black"/>
              <path d="M 232,48 L 328,48" fill="none" stroke="black"/>
              <path d="M 376,48 L 472,48" fill="none" stroke="black"/>
              <path d="M 80,64 L 112,64" fill="none" stroke="black"/>
              <path d="M 232,96 L 328,96" fill="none" stroke="black"/>
              <path d="M 376,96 L 472,96" fill="none" stroke="black"/>
              <path d="M 128,112 L 344,112" fill="none" stroke="black"/>
              <path d="M 128,144 L 344,144" fill="none" stroke="black"/>
              <path d="M 232,160 L 328,160" fill="none" stroke="black"/>
              <path d="M 376,160 L 472,160" fill="none" stroke="black"/>
              <path d="M 80,176 L 112,176" fill="none" stroke="black"/>
              <path d="M 232,208 L 328,208" fill="none" stroke="black"/>
              <path d="M 376,208 L 472,208" fill="none" stroke="black"/>
              <path d="M 128,224 L 344,224" fill="none" stroke="black"/>
              <path d="M 128,256 L 344,256" fill="none" stroke="black"/>
              <path d="M 232,272 L 328,272" fill="none" stroke="black"/>
              <path d="M 376,272 L 472,272" fill="none" stroke="black"/>
              <path d="M 80,288 L 112,288" fill="none" stroke="black"/>
              <path d="M 232,320 L 328,320" fill="none" stroke="black"/>
              <path d="M 376,320 L 472,320" fill="none" stroke="black"/>
              <path d="M 128,336 L 344,336" fill="none" stroke="black"/>
              <path d="M 128,368 L 344,368" fill="none" stroke="black"/>
              <path d="M 232,384 L 328,384" fill="none" stroke="black"/>
              <path d="M 376,384 L 472,384" fill="none" stroke="black"/>
              <path d="M 80,400 L 112,400" fill="none" stroke="black"/>
              <path d="M 232,432 L 328,432" fill="none" stroke="black"/>
              <path d="M 376,432 L 472,432" fill="none" stroke="black"/>
              <path d="M 128,448 L 344,448" fill="none" stroke="black"/>
              <path d="M 360,448 L 496,448" fill="none" stroke="black"/>
              <path d="M 80,496 L 424,496" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="432,456 420,450.4 420,461.6" fill="black" transform="rotate(270,424,456)"/>
              <polygon class="arrowhead" points="120,400 108,394.4 108,405.6" fill="black" transform="rotate(0,112,400)"/>
              <polygon class="arrowhead" points="120,288 108,282.4 108,293.6" fill="black" transform="rotate(0,112,288)"/>
              <polygon class="arrowhead" points="120,176 108,170.4 108,181.6" fill="black" transform="rotate(0,112,176)"/>
              <polygon class="arrowhead" points="120,64 108,58.4 108,69.6" fill="black" transform="rotate(0,112,64)"/>
              <g class="text">
                <text x="16" y="52">App</text>
                <text x="36" y="68">Endorser</text>
                <text x="176" y="68">Endorsement</text>
                <text x="280" y="68">app</text>
                <text x="424" y="68">app</text>
                <text x="256" y="84">claim</text>
                <text x="296" y="84">set</text>
                <text x="320" y="84">2</text>
                <text x="400" y="84">claim</text>
                <text x="440" y="84">set</text>
                <text x="464" y="84">1</text>
                <text x="488" y="100">E</text>
                <text x="488" y="116">v</text>
                <text x="488" y="132">i</text>
                <text x="488" y="148">d</text>
                <text x="12" y="164">OS</text>
                <text x="488" y="164">e</text>
                <text x="36" y="180">Endorser</text>
                <text x="176" y="180">Endorsement</text>
                <text x="276" y="180">OS</text>
                <text x="420" y="180">OS</text>
                <text x="488" y="180">n</text>
                <text x="256" y="196">claim</text>
                <text x="296" y="196">set</text>
                <text x="320" y="196">2</text>
                <text x="400" y="196">claim</text>
                <text x="440" y="196">set</text>
                <text x="464" y="196">1</text>
                <text x="488" y="196">c</text>
                <text x="488" y="212">e</text>
                <text x="36" y="276">Firmware</text>
                <text x="36" y="292">Endorser</text>
                <text x="176" y="292">Endorsement</text>
                <text x="276" y="292">firmware</text>
                <text x="420" y="292">firmware</text>
                <text x="256" y="308">claim</text>
                <text x="296" y="308">set</text>
                <text x="320" y="308">2</text>
                <text x="400" y="308">claim</text>
                <text x="440" y="308">set</text>
                <text x="464" y="308">1</text>
                <text x="36" y="388">Hardware</text>
                <text x="36" y="404">Endorser</text>
                <text x="176" y="404">Endorsement</text>
                <text x="276" y="404">hardware</text>
                <text x="420" y="404">hardware</text>
                <text x="256" y="420">claim</text>
                <text x="296" y="420">set</text>
                <text x="320" y="420">2</text>
                <text x="400" y="420">claim</text>
                <text x="440" y="420">set</text>
                <text x="464" y="420">1</text>
                <text x="36" y="500">Attester</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
               .--------------------------. .----------------.
App            |            .-----------. | | .-----------.  |
Endorser ----> |Endorsement |    app    | | | |    app    |  |
               |            |claim set 2| | | |claim set 1|  |
               |            '-----------' | | '-----------' E|
               '--------------------------' |               v|
                                            |               i|
               .--------------------------. |               d|
OS             |            .-----------. | | .-----------. e|
Endorser ----> |Endorsement |    OS     | | | |    OS     | n|
               |            |claim set 2| | | |claim set 1| c|
               |            '-----------' | | '-----------' e|
               '--------------------------' |                |
                                            |                |
               .--------------------------. |                |
Firmware       |            .-----------. | | .-----------.  |
Endorser ----> |Endorsement | firmware  | | | | firmware  |  |
               |            |claim set 2| | | |claim set 1|  |
               |            '-----------' | | '-----------'  |
               '--------------------------' |                |
                                            |                |
               .--------------------------. |                |
Hardware       |            .-----------. | | .-----------.  |
Endorser ----> |Endorsement | hardware  | | | | hardware  |  |
               |            |claim set 2| | | |claim set 1|  |
               |            '-----------' | | '-----------'  |
               '--------------------------' '----------------'
                                                    ^
                                                    |
Attester -------------------------------------------'
]]></artwork>
        </artset>
      </figure>
      <t>When Target Environments from different vendors each have their own
Endorser, a Verifier must be able to distinguish
which Endorser is allowed to provide an Endorsement about which
Target Environment.  For example, the OS Endorser might be trusted to
provide additional claims about the OS, but not about the hardware.
Thus, it is not as simple as saying that a Verifier has a trusted
set of Endorsers. The binding between Target Environment and Endorser might
be part of the Appraisal Policy for Evidence, or might be specified
as part of the Evidence itself (e.g., claims from a Target Environment
might include an identifier of what Endorser can provide additional
claims about it), or some combination of the two.
An Endorsement format specification should explain how this concern
is addressed.</t>
    </section>
    <section anchor="endorsement-format-considerations">
      <name>Endorsement Format Considerations</name>
      <t>This section discusses considerations around formats for Endorsements.</t>
      <section anchor="formats-security">
        <name>Security Considerations for Formats</name>
        <t>In many scenarios, a Verifier can also support a variety of different formats,
and while code size may not be a huge concern, simplicity and correctness of code
is essential to security.  "Complexity is the enemy of security" is a popular
security mantra and hence to increase security, any decrease in complexity
helps.  As such, using the same format for both Evidence and Endorsements
can reduce complexity and hence increase security.</t>
      </section>
      <section anchor="scalability">
        <name>Scalability Considerations for Formats</name>
        <t>We currently assume that Reference Value Providers typically
provide the same information to a potentially large number of clients
(Verifiers, or potentially to other entities for later relay to a Verifier),
and are generally on devices that are not constrained nodes, and hence additional
scalability, including code size, is not a significant concern.  We also assume
the same is true of Endorsers.</t>
        <t>The scenario where scalability in terms of code size is strongest, however, is
when a Verifier is embedded into a constrained node.  For example, when a constrained
node is a Relying Party for most purposes, but still needs a way to establish
trust in the Verifier it will use.  In such a case, the Relying Party may have
a constrained Verifier embedded in it that is only capable of appraising Evidence
provided by its desired Verifier.  Thus, the Relying Party uses its embedded Verifier
for purposes of appraising its desired Verifier which it treats as only an Attester,
and once appraised, then uses it for appraisal of all other Attesters.
In this scenario, the embedded Verifier may have code and data size constraints,
and a very simple (by comparison) Appraisal Policy for Evidence and desired state (e.g.,
a required trust anchor that Evidence must be signed with and little else).</t>
        <t>Using the same message format for Evidence, Endorsements, and (later) Attestation Results received
from the later Verifier, can provide code size savings due to having only a single parser
in this limited case.</t>
        <t>Similarly, an embedded constrained Verifier can choose to not support conditionally
endorsed values, in order to avoid the complexity introduced by such.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t><xref section="8.4" sectionFormat="of" target="RFC9334"/> discusses how a Verifier stores one or more trust anchors
in its trust anchor store.  The Verifier's trust in an Endorser is expressed via
storing a trust anchor for the Endorser.  The binding from an Endorsement to
a given Target Environment is done as discussed in <xref target="endorsing-keys"/> of this document.</t>
      <t><xref target="RFC9334"/> (especially Section 3.2 and Section 12) also discusses security considerations
around the remote attestation of layers, and sources of appraisal policies.
<xref target="endorsing-keys"/> of this document covers additional considerations in these areas,
and <xref target="formats-security"/> covers additional considerations around Endorsement formats.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document does not require any actions by IANA.</t>
    </section>
  </middle>
  <back>
    <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.ietf-rats-eat">
        <front>
          <title>The Entity Attestation Token (EAT)</title>
          <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
            <organization>Security Theory LLC</organization>
          </author>
          <author fullname="Giridhar Mandyam" initials="G." surname="Mandyam">
            <organization>Mediatek USA</organization>
          </author>
          <author fullname="Jeremy O'Donoghue" initials="J." surname="O'Donoghue">
            <organization>Qualcomm Technologies Inc.</organization>
          </author>
          <author fullname="Carl Wallace" initials="C." surname="Wallace">
            <organization>Red Hound Software, Inc.</organization>
          </author>
          <date day="6" month="September" year="2024"/>
          <abstract>
            <t>   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a smartphone, 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.

   An EAT is either a CBOR Web Token (CWT) or JSON Web Token (JWT) with
   attestation-oriented claims.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-31"/>
      </reference>
      <reference anchor="TCG-DICE" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Attestation-Architecture-Version-1.1-Revision-18_pub.pdf">
        <front>
          <title>DICE Attestation Architecture</title>
          <author>
            <organization>Trusted Computing Group</organization>
          </author>
          <date year="2024" month="January"/>
        </front>
      </reference>
    </references>
    <?line 403?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors wish to thank the following individuals for feedback and ideas that contributed to this docuement:
<contact fullname="Thomas Hardjono"/>,
<contact fullname="Laurence Lundblade"/>,
<contact fullname="Kathleen Moriarty"/>,
<contact fullname="Michael Richardson"/>,
<contact fullname="Ned Smith"/>, and
<contact fullname="Carl Wallace"/></t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Ah4+A9MlfwZ5VQXCFv8H49Z57cpVAAA=

-->

</rfc>
