<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-endorsements-11" category="info" consensus="true" submissionType="IETF" updates="9334" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="RATS Endorsements">RATS Endorsements</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-endorsements-11"/>
    <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>NVIDIA</organization>
      <address>
        <email>tfossati@nvidia.com</email>
      </address>
    </author>
    <date year="2026" month="September" day="22"/>
    <area>Security</area>
    <workgroup>RATS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 68?>

<t>In the IETF Remote Attestation Procedures (RATS) architecture, a Verifier accepts Evidence and uses Appraisal Policy for Evidence, typically with additional input from Endorsements and Reference Values, to generate Attestation Results in formats that are useful for Relying Parties.
This document illustrates the purpose and role of Endorsements and discusses some considerations in the choice of message format for Endorsements in the scope of the RATS architecture.</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/ietf-rats-wg/rats-endorsements"/>.</t>
    </note>
  </front>
  <middle>
    <?line 76?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref section="3" sectionFormat="of" target="RFC9334"/> provides 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 Appraisal Policy for Evidence.
A Verifier appraises Evidence using Appraisal Policy for Evidence, typically against a set of Reference Values.</t>
      <t>When <xref target="RFC9334"/> was developed, providing details of Reference Values and Endorsements were outside the scope of the RATS Working Group's charter.
However, this has since changed, and the purpose of this document is to update <xref target="RFC9334"/> to provide further details on Reference Values and Endorsements.</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, to determine how trustworthy the Attester
is for the Relying Party's purposes. The state of an Attester includes its "shape",
i.e., the structural composition of the Attester 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 "claims sets"
representing their actual state. Additionally,
there can be multiple Target Environments and Attesting Environments that are components of an Attester.</t>
      <t>"Actual state" is a group of claims sets about the actual state of the Attester at a
given point in time. Each claims set holds claims about a specific Target Environment
that is essential to determining trustworthiness.  Generally speaking, each claim
has a name
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 claims 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>Evidence and Endorsements are both "actual state" messages, but they differ in who asserts the claims and about which Environment.
Evidence is a set of claims about a Target Environment, generated (and typically signed) by the Attesting Environment.
Endorsements, by contrast, are provided by an Endorser -- a role distinct from the Attester, such as a manufacturer or certification body -- and typically carry claims about an Attesting Environment that has no lower-layer Attesting Environment of its own to vouch for it, or other claims about the Attester's features that the Attester is not in a position to self-assert.
See also <xref section="4.2" sectionFormat="of" target="RFC9334"/>.</t>
        <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="584" viewBox="0 0 584 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 112,32 L 112,240" fill="none" stroke="black"/>
                <path d="M 112,272 L 112,320" fill="none" stroke="black"/>
                <path d="M 144,32 L 144,80" fill="none" stroke="black"/>
                <path d="M 144,112 L 144,160" fill="none" stroke="black"/>
                <path d="M 144,192 L 144,240" fill="none" stroke="black"/>
                <path d="M 144,272 L 144,320" fill="none" stroke="black"/>
                <path d="M 248,32 L 248,80" fill="none" stroke="black"/>
                <path d="M 248,112 L 248,160" fill="none" stroke="black"/>
                <path d="M 248,192 L 248,240" fill="none" stroke="black"/>
                <path d="M 248,272 L 248,320" fill="none" stroke="black"/>
                <path d="M 312,80 L 312,176" fill="none" stroke="black"/>
                <path d="M 384,32 L 384,80" fill="none" stroke="black"/>
                <path d="M 384,112 L 384,160" fill="none" stroke="black"/>
                <path d="M 384,192 L 384,240" fill="none" stroke="black"/>
                <path d="M 384,272 L 384,320" fill="none" stroke="black"/>
                <path d="M 528,32 L 528,80" fill="none" stroke="black"/>
                <path d="M 528,112 L 528,160" fill="none" stroke="black"/>
                <path d="M 528,192 L 528,240" fill="none" stroke="black"/>
                <path d="M 528,272 L 528,320" fill="none" stroke="black"/>
                <path d="M 560,32 L 560,320" fill="none" stroke="black"/>
                <path d="M 112,32 L 128,32" fill="none" stroke="black"/>
                <path d="M 144,32 L 248,32" fill="none" stroke="black"/>
                <path d="M 384,32 L 528,32" fill="none" stroke="black"/>
                <path d="M 544,32 L 560,32" fill="none" stroke="black"/>
                <path d="M 144,80 L 248,80" fill="none" stroke="black"/>
                <path d="M 384,80 L 528,80" fill="none" stroke="black"/>
                <path d="M 144,112 L 248,112" fill="none" stroke="black"/>
                <path d="M 384,112 L 528,112" fill="none" stroke="black"/>
                <path d="M 144,160 L 248,160" fill="none" stroke="black"/>
                <path d="M 384,160 L 528,160" fill="none" stroke="black"/>
                <path d="M 144,192 L 248,192" fill="none" stroke="black"/>
                <path d="M 272,190 L 360,190" fill="none" stroke="black"/>
                <path d="M 272,194 L 360,194" fill="none" stroke="black"/>
                <path d="M 384,192 L 528,192" fill="none" stroke="black"/>
                <path d="M 112,240 L 128,240" fill="none" stroke="black"/>
                <path d="M 144,240 L 248,240" fill="none" stroke="black"/>
                <path d="M 384,240 L 528,240" fill="none" stroke="black"/>
                <path d="M 112,272 L 128,272" fill="none" stroke="black"/>
                <path d="M 144,272 L 248,272" fill="none" stroke="black"/>
                <path d="M 384,272 L 528,272" fill="none" stroke="black"/>
                <path d="M 112,320 L 128,320" fill="none" stroke="black"/>
                <path d="M 144,320 L 248,320" fill="none" stroke="black"/>
                <path d="M 384,320 L 528,320" fill="none" stroke="black"/>
                <path d="M 544,320 L 560,320" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="368,192 356,186.4 356,197.6" fill="black" transform="rotate(0,360,192)"/>
                <polygon class="arrowhead" points="320,176 308,170.4 308,181.6" fill="black" transform="rotate(90,312,176)"/>
                <polygon class="arrowhead" points="280,192 268,186.4 268,197.6" fill="black" transform="rotate(180,272,192)"/>
                <g class="text">
                  <text x="312" y="36">Appraisal</text>
                  <text x="172" y="52">Actual</text>
                  <text x="224" y="52">state</text>
                  <text x="300" y="52">Policy</text>
                  <text x="344" y="52">for</text>
                  <text x="432" y="52">Reference</text>
                  <text x="496" y="52">state</text>
                  <text x="188" y="68">(layer</text>
                  <text x="228" y="68">N)</text>
                  <text x="308" y="68">Evidence</text>
                  <text x="444" y="68">(layer</text>
                  <text x="484" y="68">N)</text>
                  <text x="576" y="68">R</text>
                  <text x="576" y="84">e</text>
                  <text x="576" y="100">f</text>
                  <text x="576" y="116">e</text>
                  <text x="68" y="132">Evidence</text>
                  <text x="172" y="132">Actual</text>
                  <text x="224" y="132">state</text>
                  <text x="432" y="132">Reference</text>
                  <text x="496" y="132">state</text>
                  <text x="576" y="132">r</text>
                  <text x="188" y="148">(layer</text>
                  <text x="228" y="148">2)</text>
                  <text x="444" y="148">(layer</text>
                  <text x="484" y="148">2)</text>
                  <text x="576" y="148">e</text>
                  <text x="576" y="164">n</text>
                  <text x="576" y="180">c</text>
                  <text x="576" y="196">e</text>
                  <text x="172" y="212">Actual</text>
                  <text x="224" y="212">state</text>
                  <text x="316" y="212">Comparison</text>
                  <text x="432" y="212">Reference</text>
                  <text x="496" y="212">state</text>
                  <text x="188" y="228">(layer</text>
                  <text x="228" y="228">1)</text>
                  <text x="296" y="228">Rules</text>
                  <text x="444" y="228">(layer</text>
                  <text x="484" y="228">1)</text>
                  <text x="576" y="228">V</text>
                  <text x="576" y="244">a</text>
                  <text x="576" y="260">l</text>
                  <text x="576" y="276">u</text>
                  <text x="52" y="292">Endorsements</text>
                  <text x="172" y="292">Actual</text>
                  <text x="224" y="292">state</text>
                  <text x="432" y="292">Reference</text>
                  <text x="496" y="292">state</text>
                  <text x="576" y="292">e</text>
                  <text x="188" y="308">(layer</text>
                  <text x="228" y="308">0)</text>
                  <text x="444" y="308">(layer</text>
                  <text x="484" y="308">0)</text>
                  <text x="576" y="308">s</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
             .-- .------------.   Appraisal    .-----------------. --.
             |   |Actual state|   Policy for   | Reference state |   |
             |   |  (layer N) |   Evidence     |    (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
Endorsements |   |Actual state|                | Reference state |   | e
             |   |  (layer 0) |                |    (layer 0)    |   | s
             '-- '------------'                '-----------------' --'
]]></artwork>
          </artset>
        </figure>
        <t>(<xref target="input"/> shows Endorsements only at layer 0 as a typical example, not as a general rule.)</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 the CPU's supported features based on the current firmware configuration.
Alternatively, an Endorser might provide information indicating that a specific security certification (e.g., <xref target="GP-Cert"/> and <xref target="OCP-SAFE"/>) is associated with the device if the serial number falls within a given range and the firmware is configured in a specific way.</t>
      <figure anchor="conditional">
        <name>Conditional Endorsements</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="224" width="464" viewBox="0 0 464 224" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,80 L 8,112" fill="none" stroke="black"/>
              <path d="M 72,120 L 72,176" fill="none" stroke="black"/>
              <path d="M 128,80 L 128,112" fill="none" stroke="black"/>
              <path d="M 168,176 L 168,208" fill="none" stroke="black"/>
              <path d="M 248,80 L 248,112" fill="none" stroke="black"/>
              <path d="M 280,176 L 280,208" fill="none" stroke="black"/>
              <path d="M 344,80 L 344,112" fill="none" stroke="black"/>
              <path d="M 376,112 L 376,128" fill="none" stroke="black"/>
              <path d="M 376,160 L 376,176" fill="none" stroke="black"/>
              <path d="M 456,80 L 456,112" fill="none" stroke="black"/>
              <path d="M 256,48 L 448,48" fill="none" stroke="black"/>
              <path d="M 8,80 L 128,80" fill="none" stroke="black"/>
              <path d="M 248,80 L 456,80" fill="none" stroke="black"/>
              <path d="M 144,94 L 232,94" fill="none" stroke="black"/>
              <path d="M 144,98 L 232,98" fill="none" stroke="black"/>
              <path d="M 8,112 L 128,112" fill="none" stroke="black"/>
              <path d="M 248,112 L 456,112" fill="none" stroke="black"/>
              <path d="M 168,176 L 280,176" fill="none" stroke="black"/>
              <path d="M 88,192 L 168,192" fill="none" stroke="black"/>
              <path d="M 280,192 L 360,192" fill="none" stroke="black"/>
              <path d="M 168,208 L 280,208" fill="none" stroke="black"/>
              <path d="M 448,48 L 456,64" fill="none" stroke="black"/>
              <path d="M 248,64 L 256,48" fill="none" stroke="black"/>
              <path d="M 88,192 C 79.16936,192 72,184.83064 72,176" fill="none" stroke="black"/>
              <path d="M 360,192 C 368.83064,192 376,184.83064 376,176" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="240,96 228,90.4 228,101.6" fill="black" transform="rotate(0,232,96)"/>
              <polygon class="arrowhead" points="152,96 140,90.4 140,101.6" fill="black" transform="rotate(180,144,96)"/>
              <polygon class="arrowhead" points="80,120 68,114.4 68,125.6" fill="black" transform="rotate(270,72,120)"/>
              <g class="text">
                <text x="304" y="36">Conditional</text>
                <text x="404" y="36">Endorsements</text>
                <text x="44" y="100">Actual</text>
                <text x="96" y="100">State</text>
                <text x="296" y="100">Condition</text>
                <text x="400" y="100">claims-sets</text>
                <text x="192" y="116">Endorsement</text>
                <text x="180" y="132">Matching</text>
                <text x="168" y="148">Rules</text>
                <text x="356" y="148">[condition</text>
                <text x="412" y="148">is</text>
                <text x="444" y="148">met]</text>
                <text x="224" y="196">claims-sets</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                                Conditional Endorsements
                               .-----------------------.
                              /                         \
.--------------.              .-----------+-------------.
| Actual State | <==========> | Condition | claims-sets |
'--------------'  Endorsement '-----------+---+---------'
        ^         Matching                    |
        |         Rules                [condition is met]
        |                                     |
        |           .-------------.           |
         '----------+ claims-sets +----------'
                    '-------------'
]]></artwork>
        </artset>
      </figure>
      <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 (<xref target="conditional"/>).
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 Verifier Owner and/or Relying Party Owner.
Thus, an Endorsement format that supports conditionally endorsed values (e.g., <xref target="I-D.ietf-rats-corim"/>) would probably include some minimal matching policy (e.g., exact match against a singleton reference value).
This unfortunately complicates the Verifier design as it 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 appraisal 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 Environment'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.
A specific detail that is out of scope is whether an unreachable Endorser only postpones the appraisal of Evidence or
renders it permanently impossible, which depends on whether the Endorsement
remains retrievable and applicable to the previously collected Evidence.</t>
      <t>Specific protocol documents are also responsible for documenting what
particular algorithm or cryptographic protocol is used for the appraisal
of the Evidence. 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="RFC9711"/> <tt>ueid</tt>) in a dedicated "identity claim"
that can be used by the Verifier to look up its verification key for the Attester.
The granularity at which such identifiers, and therefore the signature-checking keys
endorsed for them, apply (e.g., per instance, class, or other claims) is out of scope
of this document.</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 the same as 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 (i.e., claims representing invariant properties of the environment) 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>
      <t>This distinction between static and dynamic claims is about the invariance
of properties of the environment, not about the Endorser's assessment of
those properties.  A condition in a Conditionally Endorsed Value (<xref target="conditional"/>)
is static in the sense that, once matched against sufficiently timely
Evidence, it deterministically selects a claims-set; however, the verdict an
Endorser attaches to a given condition can itself change over time as the
Endorser's own knowledge evolves, even though the condition's matching value
does not.  For example, an Endorser might issue a Conditional Endorsement
stating that if a given RoT firmware measurement matches value H, the device
is trusted, and later, after a vulnerability is discovered in that firmware,
issue a further Conditional Endorsement stating that if the same value H is
matched, the device is untrusted.  Both Endorsements may be signed by an
Endorser that remains in good standing, so this is a different problem than
Endorser standing: it is about which of two (or more) temporally scoped,
and potentially contradictory, Endorsements apply at the time of
appraisal.  Endorsement formats therefore need a way to bind a validity
period to Endorsement content, in addition to any validity information
about the Endorser's standing (discussed below), so that a Verifier can
determine which Endorsement supersedes others given the same condition.
For example, <xref target="I-D.ietf-rats-corim"/> provides a <tt>rim-validity</tt> window in the
corim-map for this purpose.</t>
      <t>The Endorser's standing (i.e., the fact that its signing key
or certificate is still valid or its trust anchor is still recognized) is a
further, independent consideration, logically separate from the validity
of the Endorsement content discussed above.  Whether the Endorser's standing
is evaluated relative to the time the Evidence was generated or the time of
appraisal is a decision for the specific protocol or appraisal policy, and
needs to be documented as part of the timeliness of the Endorsement itself.
For example, the CoRIM data model provides a <tt>signature-validity</tt> window
that bounds the validity of the Endorser's signature, distinct from the
<tt>rim-validity</tt> window discussed above, and the CoRIM processor described
in <xref section="8" sectionFormat="of" target="I-D.ietf-rats-corim"/> checks it, together with revocation and
trust anchor status, relative to the time of appraisal.</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 ("claims set 1") in the Evidence, and an additional
set of claims ("claims set 2") in the Endorsement from its manufacturer.
A Verifier that trusts each Endorser would thus use the claims sets from both conceptual messages (Endorsements and Evidence) 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="520" viewBox="0 0 520 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 336,48 L 336,96" fill="none" stroke="black"/>
              <path d="M 336,160 L 336,208" fill="none" stroke="black"/>
              <path d="M 336,272 L 336,320" fill="none" stroke="black"/>
              <path d="M 336,384 L 336,432" fill="none" stroke="black"/>
              <path d="M 352,32 L 352,112" fill="none" stroke="black"/>
              <path d="M 352,144 L 352,224" fill="none" stroke="black"/>
              <path d="M 352,256 L 352,336" fill="none" stroke="black"/>
              <path d="M 352,368 L 352,448" fill="none" stroke="black"/>
              <path d="M 368,32 L 368,448" fill="none" stroke="black"/>
              <path d="M 384,48 L 384,96" fill="none" stroke="black"/>
              <path d="M 384,160 L 384,208" fill="none" stroke="black"/>
              <path d="M 384,272 L 384,320" fill="none" stroke="black"/>
              <path d="M 384,384 L 384,432" fill="none" stroke="black"/>
              <path d="M 432,456 L 432,480" fill="none" stroke="black"/>
              <path d="M 488,48 L 488,96" fill="none" stroke="black"/>
              <path d="M 488,160 L 488,208" fill="none" stroke="black"/>
              <path d="M 488,272 L 488,320" fill="none" stroke="black"/>
              <path d="M 488,384 L 488,432" fill="none" stroke="black"/>
              <path d="M 512,32 L 512,448" fill="none" stroke="black"/>
              <path d="M 128,32 L 352,32" fill="none" stroke="black"/>
              <path d="M 368,32 L 512,32" fill="none" stroke="black"/>
              <path d="M 232,48 L 336,48" fill="none" stroke="black"/>
              <path d="M 384,48 L 488,48" fill="none" stroke="black"/>
              <path d="M 80,64 L 112,64" fill="none" stroke="black"/>
              <path d="M 232,96 L 336,96" fill="none" stroke="black"/>
              <path d="M 384,96 L 488,96" fill="none" stroke="black"/>
              <path d="M 128,112 L 352,112" fill="none" stroke="black"/>
              <path d="M 128,144 L 352,144" fill="none" stroke="black"/>
              <path d="M 232,160 L 336,160" fill="none" stroke="black"/>
              <path d="M 384,160 L 488,160" fill="none" stroke="black"/>
              <path d="M 80,176 L 112,176" fill="none" stroke="black"/>
              <path d="M 232,208 L 336,208" fill="none" stroke="black"/>
              <path d="M 384,208 L 488,208" fill="none" stroke="black"/>
              <path d="M 128,224 L 352,224" fill="none" stroke="black"/>
              <path d="M 128,256 L 352,256" fill="none" stroke="black"/>
              <path d="M 232,272 L 336,272" fill="none" stroke="black"/>
              <path d="M 384,272 L 488,272" fill="none" stroke="black"/>
              <path d="M 80,288 L 112,288" fill="none" stroke="black"/>
              <path d="M 232,320 L 336,320" fill="none" stroke="black"/>
              <path d="M 384,320 L 488,320" fill="none" stroke="black"/>
              <path d="M 128,336 L 352,336" fill="none" stroke="black"/>
              <path d="M 128,368 L 352,368" fill="none" stroke="black"/>
              <path d="M 232,384 L 336,384" fill="none" stroke="black"/>
              <path d="M 384,384 L 488,384" fill="none" stroke="black"/>
              <path d="M 80,400 L 112,400" fill="none" stroke="black"/>
              <path d="M 232,432 L 336,432" fill="none" stroke="black"/>
              <path d="M 384,432 L 488,432" fill="none" stroke="black"/>
              <path d="M 128,448 L 352,448" fill="none" stroke="black"/>
              <path d="M 368,448 L 512,448" fill="none" stroke="black"/>
              <path d="M 80,496 L 416,496" fill="none" stroke="black"/>
              <path d="M 416,496 C 424.83064,496 432,488.83064 432,480" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="440,456 428,450.4 428,461.6" fill="black" transform="rotate(270,432,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="432" y="68">app</text>
                <text x="260" y="84">claims</text>
                <text x="304" y="84">set</text>
                <text x="328" y="84">2</text>
                <text x="412" y="84">claims</text>
                <text x="456" y="84">set</text>
                <text x="480" y="84">1</text>
                <text x="504" y="100">E</text>
                <text x="504" y="116">v</text>
                <text x="504" y="132">i</text>
                <text x="504" y="148">d</text>
                <text x="12" y="164">OS</text>
                <text x="504" y="164">e</text>
                <text x="36" y="180">Endorser</text>
                <text x="176" y="180">Endorsement</text>
                <text x="284" y="180">OS</text>
                <text x="436" y="180">OS</text>
                <text x="504" y="180">n</text>
                <text x="260" y="196">claims</text>
                <text x="304" y="196">set</text>
                <text x="328" y="196">2</text>
                <text x="412" y="196">claims</text>
                <text x="456" y="196">set</text>
                <text x="480" y="196">1</text>
                <text x="504" y="196">c</text>
                <text x="504" 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="284" y="292">firmware</text>
                <text x="436" y="292">firmware</text>
                <text x="260" y="308">claims</text>
                <text x="304" y="308">set</text>
                <text x="328" y="308">2</text>
                <text x="412" y="308">claims</text>
                <text x="456" y="308">set</text>
                <text x="480" 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="284" y="404">hardware</text>
                <text x="436" y="404">hardware</text>
                <text x="260" y="420">claims</text>
                <text x="304" y="420">set</text>
                <text x="328" y="420">2</text>
                <text x="412" y="420">claims</text>
                <text x="456" y="420">set</text>
                <text x="480" 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     |  |
               |            |claims set 2| | | |claims set 1|  |
               |            '------------' | | '------------' E|
               '---------------------------' |                v|
                                             |                i|
               .---------------------------. |                d|
OS             |            .------------. | | .------------. e|
Endorser ----> |Endorsement |     OS     | | | |     OS     | n|
               |            |claims set 2| | | |claims set 1| c|
               |            '------------' | | '------------' e|
               '---------------------------' |                 |
                                             |                 |
               .---------------------------. |                 |
Firmware       |            .------------. | | .------------.  |
Endorser ----> |Endorsement |  firmware  | | | |  firmware  |  |
               |            |claims set 2| | | |claims set 1|  |
               |            '------------' | | '------------'  |
               '---------------------------' |                 |
                                             |                 |
               .---------------------------. |                 |
Hardware       |            .------------. | | .------------.  |
Endorser ----> |Endorsement |  hardware  | | | |  hardware  |  |
               |            |claims set 2| | | |claims 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>This document assumes 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.  This document also assumes
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 to avoid the complexity introduced by them.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t><xref section="7.4" sectionFormat="of" target="RFC9334"/> discusses how a Verifier stores one or more trust anchors in its trust anchor store.
A Verifier expresses its trust in an Endorser by storing a trust anchor for that 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 Sections 3.2 and 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, while <xref target="formats-security"/> covers additional considerations around Endorsement formats.</t>
      <t>The integrity of public and private key material and the secrecy of private key material must be ensured at all times.
This includes public keys that identify trusted supply chain actors.
For more detailed information on protecting Trust Anchors, refer to <xref section="12.4" sectionFormat="of" target="RFC9334"/>.</t>
      <t>A Verifier can use cryptographically protected, mutually authenticated secure channels to all its trusted input sources, particularly, Endorsers and Reference Value Providers.
Signing the Endorsement or Reference Values themselves protects their integrity and authenticates their source, but a mutually authenticated channel additionally lets the source authenticate and authorize the requesting Verifier and protects potentially sensitive content (see <xref target="privacy"/>) against disclosure to unauthorized parties.
These links should reach as deep as possible into the Verifier, potentially terminating within the appraisal session context, to avoid man-in-the-middle attacks.
Minimizing the use of intermediaries is also vital, as each intermediary is another party that might need to be trusted.
Refer to <xref section="12.2" sectionFormat="of" target="RFC9334"/> for information on conceptual message protection.</t>
    </section>
    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>The privacy considerations regarding conceptual messages, as discussed in <xref section="11" sectionFormat="of" target="RFC9334"/>, apply.
In particular, since Endorsements and Reference Values can contain personally identifiable information (PII) about a large number of devices, strong confidentiality protection is required at the time of conveyance.</t>
      <t>Utilizing the public part of an asymmetric key pair that is used for Evidence generation to identify an Attesting Environment raises privacy considerations that must be carefully considered.</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-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative 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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9711">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
            <author fullname="G. Mandyam" initials="G." surname="Mandyam"/>
            <author fullname="J. O'Donoghue" initials="J." surname="O'Donoghue"/>
            <author fullname="C. Wallace" initials="C." surname="Wallace"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>An Entity Attestation Token (EAT) provides an attested claims set that describes the state and characteristics of an entity, a device such as a smartphone, an Internet of Things (IoT) device, network equipment, or such. This claims set is used by a relying party, server, or service to determine the type and degree of trust placed in the entity.</t>
              <t>An EAT is either a CBOR Web Token (CWT) or a JSON Web Token (JWT) with attestation-oriented claims.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9711"/>
          <seriesInfo name="DOI" value="10.17487/RFC9711"/>
        </reference>
        <reference anchor="I-D.ietf-rats-corim">
          <front>
            <title>Concise Reference Integrity Manifest</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>arm</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Independent</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   Remote Attestation Procedures (RATS) enable Relying Parties to assess
   the trustworthiness of a remote Attester and therefore to decide
   whether or not to engage in secure interactions with it.  Evidence
   about trustworthiness can be rather complex and it is deemed
   unrealistic that every Relying Party is capable of the appraisal of
   Evidence.  Therefore that burden is typically offloaded to a
   Verifier.  In order to conduct Evidence appraisal, a Verifier
   requires not only fresh Evidence from an Attester, but also trusted
   Endorsements and Reference Values from Endorsers and Reference Value
   Providers, such as manufacturers, distributors, or device owners.
   This document specifies the information elements for representing
   Endorsements and Reference Values in CBOR format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-corim-11"/>
        </reference>
        <reference anchor="TCG-DICE" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Attestation-Architecture-v1.2_pub.pdf">
          <front>
            <title>DICE Attestation Architecture</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2025" month="April"/>
          </front>
        </reference>
        <reference anchor="GP-Cert" target="https://globalplatform.org/certifications/security-certification/">
          <front>
            <title>Security Certification</title>
            <author>
              <organization>GlobalPlatform</organization>
            </author>
            <date year="2026" month="March"/>
          </front>
        </reference>
        <reference anchor="OCP-SAFE" target="https://www.opencompute.org/projects/ocp-safe-program">
          <front>
            <title>The OCP Security Appraisal Framework and Enablement (S.A.F.E.) Program</title>
            <author>
              <organization>Open Compute Project</organization>
            </author>
            <date year="2026" month="March"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 477?>

<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 document:
<contact fullname="Serhii Nikolaichuk"/>,
<contact fullname="Anton Sokolov"/>,
<contact fullname="Yogesh Deshpande"/>,
<contact fullname="Thomas Hardjono"/>,
<contact fullname="Laurence Lundblade"/>,
<contact fullname="Kathleen Moriarty"/>,
<contact fullname="Michael Richardson"/>,
<contact fullname="Jim Fenton"/>,
<contact fullname="Jen Linkova"/>,
<contact fullname="Steven Bellock"/>,
<contact fullname="Ned Smith"/>, and
<contact fullname="Carl Wallace"/></t>
    </section>
  </back>
  <!-- ##markdown-source:
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
V3xOITdtjSkYWAP3BEctiQzxBUN8mtRdpGxhJfIP5bxheYb7n12ucXgNJl/g
EW6oTV/G0S/kzdsHAmPhjn58pANxeJdxZkH08Ya39AIyRDGVQKXzlJKZbWk4
XRLkXABLkYjK9HiPGnD1j3wFjtx1AlF/vzEOaXPm+jKnVgS6qLLFjjJfyQQQ
angllFs7yO4ZnsOtzHvJlnOlxuy4FOVu3eY01r7ZY8+D8odeYNNdq7PQogyg
ge9ajKv9y3PKwRZGHpccDvGMamuqPVV1uIPYlXZ9gjS6tpTCr5P3hCjEcmuw
YzSCHy1ttC6hedRXdyfZowa8j8NivLYWfpAuiVNXPdjQRuP1n99nfNyIij9x
qr1CGXdHgCgmLrlB1bEYt4LEr+AtQZS8ofYArMLx2TS0dpjOOvIsDoAcIURf
YuPvA+OMS5nHdzwhC6JoAdnpSEXdFK5pldEcR/ABY3NRR1wMFp6ee83NmWZU
E5zBRb6mnESCZBQhwXSoyHI1yKR6nHPdThrlsG3cQYnZA9PuvICwjFHGGrQo
3vORtPHzPVaRSKM8ATUKLtJ3fAdIipWhWRQQ0TCFw1iy0k52atHG7mZ3ZSUb
Qs6mcz7YV0ewFXBVoWXn1OWgqRHtIzUQ9xZX9FKaaTWdSmZbnc6NegZ9DJXu
yMOLto2wfR9gTffF7PlUgU+Nxj3Kah9dZYNpGndRWeh4lcsbx6ui26bxHT+9
739FZDk8DWaemsSdQvUdNNodAQ/5PRYGqgWHjgbqBHAL4XxN3LiIFzWxxDko
dI0y2zfHiby10R480pkXqdCOKXliSk8FZxmoB/nofJ2L1TG6fmZ2t+MhV3jG
98PJiWQNWuHvPT1PUuBEX/+6cyylWil50SIDmQJXNzOVxUML6ptUh09dQX3i
bioEdkFaajZ507dc4VkoXwtilRZ6eGN/Jki21QdYEnBD7xqcuNcW6e5uZeMD
EtySDDSryl2J3mrOOeLoSBNmhh0JJ2WEehu3TUNXXJOGc5Y/aYQJPX/uJj3Q
I4emLKQwH8yyXGXtG9l25BydcFfilqffLT+7o+Vpmx6corZomxyLSC4eYJEf
VPnopSTJ6k512WhwcnNRywfxGk6IpuDWnudkLLdbOp980H/OnXDNHZlTagCg
asbopp/BgZaPo0ZpqgwkqLswcqkD8I2g2NJNQci3j5/M2EZFd8P708GT3ij3
/4yaumEdXHKZy0nwvs0T3Rbd37xUn7CRjPofbBJtTV1Yb6kJSvM9xBVeWD3y
dT/eD0s2N1HiF7sM7Gw2rVQLpTuYugui8zKhH1PwZNF/zPmVqXFONeFfneGL
KUglY6nO3fjvzyqEjmTxbCRAOvoQlS7vOvLhAzwr2aA2f+GkgnvgTXoZMHfj
493vyKjxpSBWTkEip0a9W0/Gskln9xM1gsWIcfOrTIRWaddjLQL1WDhURTfH
59zMresa1DIJCV4l2PnmGTngJ9w1z0JHehXaOdrJPxAQXFo86rnxF3vGJKfj
eYObE1FzQSR7MNbtwEoqI7AEWbhoK24Er5MdIX1q17LdiDnRezZyCSCDSF7x
04Ey+tE15P29l1MsyZFSv+LYzcbesZJKw67vgA6N3d4Sj+ZHPDDoSj6oFqoG
uZPuhK/9tAXjnvkUhRDPP1kXLNMhCr4fzeyp7C+nH8K9kMH6JSEAtaVof9pZ
PMOgQ7DRjvrK+JrbebA/ENctynoBwxf8BxW4M+0drPAVHnEsf3QklwNjSL92
Z4pS072UlFUCTXgoO13RHx6gTUSjKNZ0ndF78vG4xZxyF9QAxC0PrneKL24d
idDokja+RjCVy4k/h+FElTofHwBDE7mGEeDtA0dH1lzy21DjtWajW4ltRtXB
+YTp8RsYNSRL1z+5jkEi59K6e+9f7kiOVWChXGTAZYA0803AzsXXL1/O/PWW
w0BTwr+5hEV8n0TBHIbCGrCI5PQeZNr4hW8dzFHz8ZlvIIgJ7COa2GW9MFGS
HC+Bb8rWBxn+CIx3SKUBR6Jmr8ZP3lIpf8riBB2ZA8WQ5GAK1710utEoyUm9
vPrqajoLNf7DLIISyoBo8RfA+UEQ8gdLViBW/JccfLMm5zNuL4UQpvj8bA3i
ZM6EC1lx4DUgdiun4up33L5Fl8Fyv3lRApKAETnyX4NE4VR8h31htOyWuvhK
UKru5Fq0jUvwLYBV221ZZl+V75pKQ+TUv/sIXIrfXNV4Zvm6gS+ag3v4nw2w
/DZ7Bv+3h6mMey5/ywuLJD80deMe/0X3zL5/AZdhVenwwp91t60w/foKdCTq
B/fFK1iEBh3/Bv9tC+Bw981/lLvshcFV+Sfw/l9AmTYH7R5dd9QB+ycDmMr9
Xr6C7V+Dv7/9SCJYF/jwKZjC7DuQH53jstT/AXDnGh5abwAA

-->

</rfc>
