<?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 xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-endorsements-07" category="info" consensus="true" submissionType="IETF" updates="9334" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.0 -->
  <front>
    <title abbrev="RATS Endorsements">RATS Endorsements</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-endorsements-07"/>
    <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="August" day="25"/>
    <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
(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>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 Attesting Environment. Such a key
could be provisioned directly in the Verifier. However, for scalability the Verifier
typically is provisioned with a trusted root CA certificate (a trust anchor). This means that an
Endorsement from an Endorser includes the Attesting Enviroment's verification key material
in the form of a certificate that chains up to that trust anchor (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 protocol or procedure specifications.</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 dedicated "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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
Jybg4TMwXfJnkFdVIGzxf2uJMKa+VQAA

-->

</rfc>
