<?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-evidence-trans-02" category="std" consensus="true" submissionType="IETF" tocDepth="6" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <front>
    <title abbrev="EvTrans">Evidence Transformations</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-evidence-trans-02"/>
    <author initials="F." surname="D'Amato" fullname="Fabrizio D'Amato">
      <organization>AMD</organization>
      <address>
        <email>fabrizio.damato@amd.com</email>
      </address>
    </author>
    <author initials="A." surname="Draper" fullname="Andrew Draper">
      <organization>Independent</organization>
      <address>
        <email>andrew.draper@freeside.org.uk</email>
      </address>
    </author>
    <author initials="N." surname="Smith" fullname="Ned Smith">
      <organization>Independent</organization>
      <address>
        <email>ned.smith.ietf@outlook.com</email>
      </address>
    </author>
    <date year="2025" month="October" day="17"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>Evidence, RATS, attestation, verifier, supply chain, RIM, appraisal</keyword>
    <abstract>
      <?line 89?>

<t>Remote Attestation Procedures (RATS) enable Relying Parties to assess the trustworthiness of a remote Attester to decide if continued interaction is warrented.
Evidence structures can vary making appraisals challenging for Verifiers.
Verifiers need to understand Evidence encoding formats and some of the Evidence semantics to appraise it.
Consequently, Evidence may require format transformation to an internal representation that preserves original semantics.
This document specifies Evidence transformation methods for DiceTcbInfo, concise evidence, and SPDM measurements block structures.
These Evidence structures are converted to the CoRIM internal representation and follow CoRIM defined appraisal procedures.</t>
    </abstract>
  </front>
  <middle>
    <?line 98?>

<section anchor="sec-intro">
      <name>Introduction</name>
      <t>Remote Attestation Procedures (RATS) <xref target="RFC9334"/> enable Relying Parties to assess the trustworthiness of a remote Attester to decide if continued interaction is warrented.
Evidence structures can vary making appraisals challenging for Verifiers.
Verifiers need to understand Evidence encoding formats and some of the Evidence semantics to appraise it.
Consequently, Evidence may require format transformation to an internal representation that preserves original semantics.
This document specifies Evidence transformation methods for DiceTcbInfo <xref target="DICE.Attest"/>, concise evidence <xref target="TCG.CE"/>, and SPDM measurements block <xref target="SPDM"/> structures.
These Evidence structures are converted to the CoRIM internal representation (Section 2.1 <xref target="I-D.ietf-rats-corim"/>) and follow CoRIM defined appraisal procedures (Section 8 <xref target="I-D.ietf-rats-corim"/>).</t>
    </section>
    <section anchor="requirements-language-and-terminology">
      <name>Requirements Language and Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?>
      </t>
      <t>This document uses terms and concepts defined by the RATS architecture.
For a complete glossary. See <xref section="4" sectionFormat="of" target="RFC9334"/>.
Addintional RATS architecture and terminology is found in <xref target="I-D.ietf-rats-endorsements"/>.
RATS architecture terms and concepts are always referenced as proper nouns, i.e., with Capital Letters.
Additional terminology from CoRIM <xref target="I-D.ietf-rats-corim"/>, <xref target="DICE.CoRIM"/>, CBOR <xref target="STD94"/>, CDDL <xref target="RFC8610"/> and COSE <xref target="STD96"/> may also apply.</t>
      <t>In this document, Evidence structures are expressed in their respective "external representations".
There are many possible Evidence structures including those mentioned above.</t>
      <t>The CoRIM specification defines an "internal representation" for Evidence (Section 8.2.1.3 <xref target="I-D.ietf-rats-corim"/>).
This document defines mapping operations that convert from an external representation to an internal representation.
The conversion steps are also known as "transformation".</t>
    </section>
    <section anchor="sec-verifier-rec">
      <name>Verifier Reconciliation</name>
      <t>This document assumes the reader is familiar with Verifier reconciliation as described in <xref section="2" sectionFormat="of" target="I-D.ietf-rats-corim"/>.
It describes how a Verifier should process the CoRIM to enable CoRIM authors to convey their intended meaning and how a Verifier reconciles its various inputs.
Evidence is one of its inputs.
The Verifier is expected to create an internal representation from an external representation.
By using an internal representation, the Verifier processes Evidence inputs such that they can be appraised consistently.</t>
      <t>This document defines format transformations for Evidence in DICE <xref target="DICE.Attest"/>, SPDM <xref target="SPDM"/>, and concise evidence <xref target="TCG.CE"/> formats that are transformed into a Verifier's internal representation.
This document uses the CoMID internal representation (<xref section="8.2.1" sectionFormat="of" target="I-D.ietf-rats-corim"/>) as the transformation target.
Other internal representations are possible but out of scope for this document.</t>
    </section>
    <section anchor="sec-dice-trans">
      <name>Transforming DICE Certificate Extension Evidence</name>
      <t>This section defines how Evidence from an X.509 certificate <xref target="RFC5280"/> containing a DICE certificate extension <xref target="DICE.Attest"/> is transformed into an internal representation that can be processed by Verifiers.</t>
      <t>Verifiers supporting the DICE certificate Evidence extensions SHOULD implement this transformation.</t>
      <section anchor="sec-ueid">
        <name>DiceUeid Transformation</name>
        <t>This section defines the transformation method for the DiceUeid certificate extension.
This extension is identified by the following object identifier:</t>
        <ul spacing="normal">
          <li>
            <t>tcg-dice-Ueid - "2.23.133.5.4.4"</t>
          </li>
        </ul>
        <t>The DiceUeid extension does not create evidence directly.
The <tt>ueid</tt> OCTET STRING within this extension is used to populate the <tt>instance-id</tt> field within evidence created by other extensions.
Section <xref target="sec-tcb-info"/> describes extensions which use this value.</t>
      </section>
      <section anchor="sec-tcb-info">
        <name>DiceTcbInfo Transformation</name>
        <t>This section defines transformation methods for DICE certificate extensions DiceTcbInfo, DiceMultiTcbInfo, and DiceMultiTcbInfoComp.</t>
        <t>These extensions are identified by the following object identifiers:</t>
        <ul spacing="normal">
          <li>
            <t>tcg-dice-TcbInfo - "2.23.133.5.4.1"</t>
          </li>
          <li>
            <t>tcg-dice-MultiTcbInfo - "2.23.133.5.4.5"</t>
          </li>
          <li>
            <t>tcg-dice-MultiTcbInfoComp - "2.23.133.5.4.8"</t>
          </li>
        </ul>
        <t>Each DiceTcbInfo entry in a MultiTcbInfo is converted to a CoRIM ECT (see <xref section="8.2.1" sectionFormat="of" target="I-D.ietf-rats-corim"/>) using the transformation steps in this section.
Each DiceMultiTcbInfo entry is independent of the others such that each is transformed to a separate ECT entry.
A list of Evidence ECTs (i.e., <tt>ae = [ + ECT]</tt>) is constructed using CoRIM attestation evidence internal representation (see <xref section="8.2.1.1" sectionFormat="of" target="I-D.ietf-rats-corim"/>).
Each DiceMultiTcbInfoComp entry is converted to a DiceMultiTcbInfo entry then processed as a DiceMultiTcbInfo.</t>
        <t>For each DiceTcbInfo (DTI) entry in a DiceMultiTcbInfo allocate an ECT structure.</t>
        <ol group="dtt" spacing="normal" type="Step %d."><li>
            <t>An <tt>ae</tt> entry is allocated.</t>
          </li>
          <li>
            <t>The <tt>cmtype</tt> of the ECT is set to <tt>evidence</tt>.</t>
          </li>
          <li>
            <t>The DiceTcbInfo (DTI) entry populates the <tt>ae</tt> ECT.</t>
          </li>
        </ol>
        <ol group="dtt2" spacing="normal" type="%i"><li>
            <t>The DTI entry populates the <tt>ae</tt> ECT <tt>environment-map</tt></t>
          </li>
        </ol>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(DTI.<tt>type</tt>, ECT.<tt>environment</tt>.<tt>environment-map</tt>.<tt>class-map</tt>.<tt>class-id</tt>).
The binary representation of DTI.<tt>type</tt> MUST be equivalent to the binary representation of <tt>class-id</tt> without the CBOR tag.</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(DTI.<tt>vendor</tt>, ECT.<tt>environment</tt>.<tt>environment-map</tt>.<tt>class-map</tt>.<tt>vendor</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(DTI.<tt>model</tt>, ECT.<tt>environment</tt>.<tt>environment-map</tt>.<tt>class-map</tt>.<tt>model</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(DTI.<tt>layer</tt>, ECT.<tt>environment</tt>.<tt>environment-map</tt>.<tt>class-map</tt>.<tt>layer</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(DTI.<tt>index</tt>, ECT.<tt>environment</tt>.<tt>environment-map</tt>.<tt>class-map</tt>.<tt>index</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ol group="dtt2" spacing="normal" type="%i"><li>
            <t>If a DiceUeid (UEID) extension is present, then this populates the <tt>instance-id</tt> field within the ECT <tt>environment-map</tt>.</t>
          </li>
        </ol>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If DiceUeid extension is present: <strong>copy</strong>(UEID.<tt>ueid</tt>, ECT.<tt>environment-map</tt>.<tt>instance-id</tt>.<tt>tagged-ueid-type</tt>).
The CBOR tag #6.550 is prepended to the DiceUeid OCTET STRING then copied to ECT.<tt>environment-map</tt>.<tt>instance-id</tt>.</t>
              </li>
            </ul>
          </li>
        </ul>
        <ol group="dtt2" spacing="normal" type="%i"><li>
            <t>The DTI entry populates the <tt>ae</tt> ECT <tt>elemenet-list</tt>.</t>
          </li>
        </ol>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(DTI.<tt>version</tt>, ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>version-map</tt>.<tt>version</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(DTI.<tt>svn</tt>, ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>svn</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(DTI.<tt>vendorInfo</tt>, ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>raw-value</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>Foreach FWID in FWIDLIST: <strong>copy</strong>(DTI.<tt>FWID</tt>.<tt>digest</tt>, ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>digests</tt>.<tt>digest</tt>.<tt>val</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>Foreach FWID in FWIDLIST: <strong>copy</strong>(DTI.<tt>FWID</tt>.<tt>hashAlg</tt>, ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>digests</tt>.<tt>digest</tt>.<tt>alg</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>Foreach INTEGRITYREGISTER in IRLIST: <strong>copy</strong>(DTI.<tt>INTEGRITYREGISTER</tt>.<tt>registerNum</tt>, ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>integrity-registers</tt>.<tt>integrity-register-id-type-choice</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>Foreach FWID in INTEGRITYREGISTER.FWIDLIST: <strong>copy</strong>(DTI.<tt>FWID</tt>.<tt>digest</tt>, ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>integrity-registers</tt>.<tt>digest-type</tt>.<tt>val</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>Foreach FWID in INTEGRITYREGISTER.FWIDLIST: <strong>copy</strong>(DTI.<tt>FWID</tt>.<tt>alg</tt>, ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>integrity-registers</tt>.<tt>digest-type</tt>.<tt>alg</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ol group="dtt2" spacing="normal" type="%i"><li>
            <t>The DTI entry populates the <tt>ae</tt> ECT <tt>elemenet-list</tt>.<tt>flags</tt>. Foreach <em>f</em> in DTI.<tt>OperationalFlags</tt> and each <em>m</em> in DTI.<tt>OperationalFlagsMask</tt>:</t>
          </li>
        </ol>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>notConfigured</tt> = 1 AND <em>f</em>.<tt>notConfigured</tt> = 1; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-configured</tt> = FALSE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>notConfigured</tt> = 1 AND <em>f</em>.<tt>notConfigured</tt> = 0; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-configured</tt> = TRUE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>notSecure</tt> = 1 AND <em>f</em>.<tt>notSecure</tt> = 1; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-secure</tt> = FALSE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>notSecure</tt> = 1 AND <em>f</em>.<tt>notSecure</tt> = 0; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-secure</tt> = TRUE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>recovery</tt> = 1 AND <em>f</em>.<tt>recovery</tt> = 1; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-recovery</tt> = FALSE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>recovery</tt> = 1 AND <em>f</em>.<tt>recovery</tt> = 0; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-recovery</tt> = TRUE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>debug</tt> = 1 AND <em>f</em>.<tt>debug</tt> = 1; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-debug</tt> = FALSE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>debug</tt> = 1 AND <em>f</em>.<tt>debug</tt> = 0; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-debug</tt> = TRUE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>notReplayProtected</tt> = 1 AND <em>f</em>.<tt>notReplayProtected</tt> = 1; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-replay-protected</tt> = FALSE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>notReplayProtected</tt> = 1 AND <em>f</em>.<tt>notReplayProtected</tt> = 0; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-replay-protected</tt> = TRUE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>notIntegrityProtected</tt> = 1 AND <em>f</em>.<tt>notIntegrityProtected</tt> = 1; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-integrity-proteccted</tt> = FALSE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>notIntegrityProtected</tt> = 1 AND <em>f</em>.<tt>notIntegrityProtected</tt> = 0; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-integrity-proteccted</tt> = TRUE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>notRuntimeMeasured</tt> = 1 AND <em>f</em>.<tt>notRuntimeMeasured</tt> = 1; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-runtime-meas</tt> = FALSE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>notRuntimeMeasured</tt> = 1 AND <em>f</em>.<tt>notRuntimeMeasured</tt> = 0; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-runtime-meas</tt> = TRUE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>notImmutable</tt> = 1 AND <em>f</em>.<tt>notImmutable</tt> = 1; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-immutable</tt> = FALSE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>notImmutable</tt> = 1 AND <em>f</em>.<tt>notImmutable</tt> = 0; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-immutable</tt> = TRUE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>notTcb</tt> = 1 AND <em>f</em>.<tt>notTcb</tt> = 1; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-tcb</tt> = FALSE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t>If <em>m</em>.<tt>notTcb</tt> = 1 AND <em>f</em>.<tt>notTcb</tt> = 0; <strong>set</strong>(ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>measurement-values-map</tt>.<tt>flags</tt>.<tt>is-tcb</tt> = TRUE).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ol group="dtt" spacing="normal" type="Step %d."><li>
            <t>The ECT.<tt>authority</tt> field is set up based on the signer of the certificate containing DTI as described in <xref target="sec-authority"/>.</t>
          </li>
        </ol>
        <t>The completed ECT is added to the <tt>ae</tt> list.</t>
      </section>
      <section anchor="sec-cmw">
        <name>DiceConceptualMessageWrapper Transformation</name>
        <t>This section defines the transformation method for the DiceConceptualMessageWrapper certificate extension.
This extension is identified by the following object identifier:</t>
        <ul spacing="normal">
          <li>
            <t>tcg-dice-Ueid - "2.23.133.5.4.9"</t>
          </li>
        </ul>
        <t>The DiceConceptualMessageWrapper entry OCTET STRING may contain a CBOR array, JSON array, or CBOR tagged value.
If the entry contains a CBOR tag value of #6.571 or #6.1668557429, or a Content ID of 10571, or a Media Type of "application/ce+cbor",
the contents are transformed according to <xref target="sec-ce-trans"/>.</t>
      </section>
      <section anchor="sec-authority">
        <name>Authority field in DICE/SPDM ECTs</name>
        <t>The ECT authority field is an array of <tt>$crypto-keys-type-choice</tt> values.</t>
        <t>When adding Evidence to the ACS, the Verifier SHALL add the public key representing the signer of that Evidence (for example the DICE certificate or SPDM MEASUREMENTS response) to the ECT authority field.
The Verifier SHALL add the authority of the signers of each certificate in the certificate path of the end-entity signing key to the ECT <tt>authority</tt> list.
Having each authority in a certificate path in the ECT <tt>authority</tt> field lets conditional endorsement conditions match multiple authorities or match an authority that is scoped more broadly than the immediate signer of the Evidence artifact.</t>
        <t>Each signer authority value MUST be represented using <tt>tagged-cose-key-type</tt>.</t>
      </section>
    </section>
    <section anchor="sec-ce-trans">
      <name>Transforming TCG Concise Evidence</name>
      <t>This section defines how Evidence from TCG <xref target="TCG.CE"/> is transformed into an internal representation that can be processed by Verifiers.</t>
      <t>Verifiers supporting the TCG Concise Evidence format SHOULD implement this transformation.</t>
      <t>Concise evidence may be recognized by any of the following registered types:</t>
      <table>
        <thead>
          <tr>
            <th align="left">CBOR tag</th>
            <th align="left">C-F ID</th>
            <th align="left">TN Tag</th>
            <th align="left">Media Type</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">#6.571</td>
            <td align="left">10571</td>
            <td align="left">#6.1668557429</td>
            <td align="left">"application/ce+cbor"</td>
          </tr>
        </tbody>
      </table>
      <t>A Concise Evidence entry is converted to a CoRIM ECT (see <xref section="8.2.1" sectionFormat="of" target="I-D.ietf-rats-corim"/>) using the transformation steps in this section.
A list of Evidence ECTs (i.e., <tt>ae = [ + ECT]</tt>) is constructed using CoRIM attestation evidence internal representation (see <xref section="8.2.1.1" sectionFormat="of" target="I-D.ietf-rats-corim"/>).
The Concise Evidence scheme uses CoRIM CDDL definitions to define several Evidence representations called <em>triples</em>.
Cases where Concise Evidence CDDL is identical to CoRIM CDDL the transformation logic uses the structure names in common.</t>
      <section anchor="sec-evidence-triple">
        <name>Transforming the ce.evidence-triples</name>
        <t>The <tt>ce.evidence-triples</tt> structure is a list of <tt>evidence-triple-record</tt>.
An <tt>evidence-triple-record</tt> consists of an <tt>environment-map</tt> and a list of <tt>measurement-map</tt>.
For each <tt>evidence-triple-record</tt> an <tt>ae</tt> ECT is constructed.</t>
        <ol group="cet" spacing="normal" type="Step %d."><li>
            <t>An <tt>ae</tt> ECT entry is allocated.</t>
          </li>
          <li>
            <t>The <tt>cmtype</tt> of the ECT is set to <tt>evidence</tt>.</t>
          </li>
          <li>
            <t>The Concise Evidence (CE) entry populates the <tt>ae</tt> ECT <tt>environment</tt> fields.</t>
          </li>
        </ol>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(CE.<tt>evidence-triple-record</tt>.<tt>environment-map</tt>, ECT.<tt>environment</tt>.<tt>environment-map</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ol group="cet2" spacing="normal" type="%i"><li>
            <t>For each ce in CE.<tt>[ + measurement-map]</tt>; and each ect in ECT.<tt>[ + element-list]</tt>:</t>
          </li>
        </ol>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(ce.<tt>mkey</tt>, ect.<tt>element-map</tt>.<tt>element-id</tt>)</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(ce.<tt>mval</tt>, ect<tt>.</tt>element-map<tt>.</tt>element-claims`)</t>
              </li>
            </ul>
          </li>
        </ul>
        <ol group="cet" spacing="normal" type="Step %d."><li>
            <t>The signer of the envelope containing CE is copied to the ECT.<tt>authority</tt> field as described in <xref target="sec-authority"/>.
For example, a CE may be wrapped by an EAT token <xref target="RFC9711"/> or DICE certificate <xref target="DICE.Attest"/>.
The signer identity MUST be expressed using <tt>$crypto-key-type-choice</tt>.
A profile or other arrangement is used to coordinate which <tt>$crypto-key-type-choice</tt> is used for both Evidence and Reference Values.</t>
          </li>
          <li>
            <t>If CE has a profile, the profile is converted to a <tt>$profile-type-choice</tt> then copied to the ECT<tt>.</tt>profile` field.</t>
          </li>
        </ol>
        <t>The completed ECT is added to the <tt>ae</tt> list.</t>
      </section>
      <section anchor="sec-identity-triple">
        <name>Transforming the ce.identity-triples</name>
        <t>The <tt>ce.identity-triples</tt> structure is a list of <tt>ev-identity-triple-record</tt>.
An <tt>ev-identity-triple-record</tt> consists of an <tt>environment-map</tt> and a list of <tt>$crypto-key-type-choice</tt>.
For each <tt>ev-identity-triple-record</tt> an <tt>ae</tt> ECT is constructed where the <tt>$crypto-key-type-choice</tt> values are copied as ECT Evidence measurement values.
The ECT internal representation accommodates keys as a type of measurement.
In order for the <tt>$crypto-key-type-choice</tt> keys to be verified a CoRIM <tt>identity-triples</tt> claim MUST be asserted.</t>
        <ol group="ikt" spacing="normal" type="Step %d."><li>
            <t>An <tt>ae</tt> ECT entry is allocated.</t>
          </li>
          <li>
            <t>The <tt>cmtype</tt> of the ECT is set to <tt>evidence</tt>.</t>
          </li>
          <li>
            <t>The Concise Evidence (CE) entry populates the <tt>ae</tt> ECT <tt>environment</tt> fields.</t>
          </li>
        </ol>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(CE.<tt>ce-identity-triple-record</tt>.<tt>environment-map</tt>, ECT.<tt>environment</tt>.<tt>environment-map</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(<em>null</em>, ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>element-id</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ol group="ikt2" spacing="normal" type="%i"><li>
            <t>For each cek in CE.<tt>[ + $crypto-key-type-choice ]</tt>; and each ect in ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>element-claims</tt>.<tt>intrep-keys</tt>.<tt>[ + typed-crypto-key ]</tt>:</t>
          </li>
        </ol>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(cek, ect.<tt>key</tt>)</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>set</strong>( &amp;(identity-key: 1), ect.<tt>key-type</tt>)</t>
              </li>
            </ul>
          </li>
        </ul>
        <ol group="ikt" spacing="normal" type="Step %d."><li>
            <t>The signer of the envelope containing CE is copied to the ECT.<tt>authority</tt> field.
For example, a CE may be wrapped by an EAT token <xref target="RFC9711"/> or DICE certificate <xref target="DICE.Attest"/>.
The signer identity MUST be expressed using <tt>$crypto-key-type-choice</tt>.
A profile or other arrangement is used to coordinate which <tt>$crypto-key-type-choice</tt> is used for both Evidence and Reference Values.</t>
          </li>
          <li>
            <t>If CE has a profile, the profile is converted to a <tt>$profile-type-choice</tt> then copied to the ECT<tt>.</tt>profile` field.</t>
          </li>
        </ol>
        <t>The completed ECT is added to the <tt>ae</tt> list.</t>
      </section>
      <section anchor="sec-attest-key-triple">
        <name>Transforming the ce.attest-key-triples</name>
        <t>The <tt>ce.attest-key-triples</tt> structure is a list of <tt>ev-attest-key-triple-record</tt>.
An <tt>ev-attest-key-triple-record</tt> consists of an <tt>environment-map</tt> and a list of <tt>$crypto-key-type-choice</tt>.
For each <tt>ev-attest-key-triple-record</tt> an <tt>ae</tt> ECT is constructed where the <tt>$crypto-key-type-choice</tt> values are copied as ECT Evidence measurement values.
The ECT internal representation accommodates keys as a type of measurement.
In order for the <tt>$crypto-key-type-choice</tt> keys to be verified a CoRIM <tt>attest-key-triples</tt> claim MUST be asserted.</t>
        <ol group="akt" spacing="normal" type="Step %d."><li>
            <t>An <tt>ae</tt> ECT entry is allocated.</t>
          </li>
          <li>
            <t>The <tt>cmtype</tt> of the ECT is set to <tt>evidence</tt>.</t>
          </li>
          <li>
            <t>The Concise Evidence (CE) entry populates the <tt>ae</tt> ECT <tt>environment</tt> fields.</t>
          </li>
        </ol>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(CE.<tt>ce-attest-key-triple-record</tt>.<tt>environment-map</tt>, ECT.<tt>environment</tt>.<tt>environment-map</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(<em>null</em>, ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>element-id</tt>).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ol group="akt2" spacing="normal" type="%i"><li>
            <t>For each cek in CE.<tt>[ + $crypto-key-type-choice ]</tt>; and each ect in ECT.<tt>element-list</tt>.<tt>element-map</tt>.<tt>element-claims</tt>.<tt>intrep-keys</tt>.<tt>[ + typed-crypto-key ]</tt>:</t>
          </li>
        </ol>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>copy</strong>(cek, ect.<tt>key</tt>)</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul empty="true">
              <li>
                <t><strong>set</strong>( &amp;(attest-key: 0), ect.<tt>key-type</tt>)</t>
              </li>
            </ul>
          </li>
        </ul>
        <ol group="akt" spacing="normal" type="Step %d."><li>
            <t>The signer of the envelope containing CE is copied to the ECT.<tt>authority</tt> field.
For example, a CE may be wrapped by an EAT token <xref target="RFC9711"/> or DICE certificate <xref target="DICE.Attest"/>.
The signer identity MUST be expressed using <tt>$crypto-key-type-choice</tt>.
A profile or other arrangement is used to coordinate which <tt>$crypto-key-type-choice</tt> is used for both Evidence and Reference Values.</t>
          </li>
          <li>
            <t>If CE has a profile, the profile is converted to a <tt>$profile-type-choice</tt> then copied to the ECT<tt>.</tt>profile` field.</t>
          </li>
        </ol>
        <t>The completed ECT is added to the <tt>ae</tt> list.</t>
      </section>
    </section>
    <section anchor="dmtf-spdm-structure-definitons">
      <name>DMTF SPDM Structure Definitons</name>
      <t>This section defines how a Verifier shall parse a DMTF Measurement Block.</t>
      <t>DMTF Measurement Block Definition:</t>
      <ul spacing="normal">
        <li>
          <t>Byte Offset 0: DMTFSpecMeasurementValueType
          </t>
          <ul spacing="normal">
            <li>
              <t>Bit 7     = 0b Digest / 1b Raw bit stream</t>
            </li>
            <li>
              <t>Bit [6:0] = Indicate what is measured
              </t>
              <ul spacing="normal">
                <li>
                  <t>0x0 Immutable Rom</t>
                </li>
                <li>
                  <t>0x1 Mutable FW</t>
                </li>
                <li>
                  <t>0x2 HW Config</t>
                </li>
                <li>
                  <t>0x3 FW config</t>
                </li>
                <li>
                  <t>0x4 Freeform Manifest</t>
                </li>
                <li>
                  <t>0x5 Structured Representation of debug and device mode</t>
                </li>
                <li>
                  <t>0x6 Mutable FW Version Number</t>
                </li>
                <li>
                  <t>0x7 Mutable FW Secure Version Number</t>
                </li>
                <li>
                  <t>0x8 Hash-Extend Measurement (new in SPDM 1.3)</t>
                </li>
                <li>
                  <t>0x9 Informational (new in SPDM 1.3)</t>
                </li>
                <li>
                  <t>0xA Structured Measurement Manifest (new in SPDM 1.3)</t>
                </li>
              </ul>
            </li>
          </ul>
        </li>
        <li>
          <t>Byte Offset 1: DMTFSpecMeasurementValueSize</t>
        </li>
        <li>
          <t>Byte Offset 3: DMTFSpecMeasurementValue</t>
        </li>
      </ul>
      <t>Structured Manifest Block Definition (only for &gt;=SPDM 1.3):</t>
      <ul spacing="normal">
        <li>
          <t>Byte Offset 0: Standard Body or Vendor Defined Header (SVH)</t>
        </li>
        <li>
          <t>Byte Offset 2 + VendorIdLen: Manifest</t>
        </li>
      </ul>
      <t>Standard Body or Vendor Defined Header (SVH) Definition (only for &gt;=SPDM 1.3):</t>
      <ul spacing="normal">
        <li>
          <t>Byte Offset 0: ID</t>
        </li>
        <li>
          <t>Byte Offset 1: VendorIdLen</t>
        </li>
        <li>
          <t>Byte Offset 2: VendorId</t>
        </li>
      </ul>
      <t>DMTF Header for Concise Evidence Manifest Block:</t>
      <t>If SPDM Version 1.2:</t>
      <ul spacing="normal">
        <li>
          <t>DMTFSpecMeasurementValueType = 0x84 (Raw Bit / Freeform Manifest)</t>
        </li>
        <li>
          <t>DMTFSpecMeasurementValueSize = Size of tagged-spdm-toc CBOR Tag</t>
        </li>
        <li>
          <t>DMTFSpecMeasurementValue     = tagged-spdm-toc CBOR Tag</t>
        </li>
      </ul>
      <t>if SPDM &gt;=Version 1.3:</t>
      <ul spacing="normal">
        <li>
          <t>DMTFSpecMeasurementValueType = 0x8A (Raw Bit / Structured Manifest)</t>
        </li>
        <li>
          <t>DMTFSpecMeasurementValueSize = Size of Structured Manifest</t>
        </li>
        <li>
          <t>DMTFSpecMeasurementValue     = Structured Manifest</t>
        </li>
      </ul>
      <t>SVH for Concise Evidence Manifest Block:</t>
      <ul spacing="normal">
        <li>
          <t>ID          = 0xA (IANA CBOR)</t>
        </li>
        <li>
          <t>VendorIdLen = 2</t>
        </li>
        <li>
          <t>VendorId    = 0x570 #6.570(spdm-toc-map)</t>
        </li>
      </ul>
      <t>Structured Manifest Block Definition for Concise Evidence:</t>
      <ul spacing="normal">
        <li>
          <t>SVH      =  SVH for Concise Evidence Manifest Block</t>
        </li>
        <li>
          <t>Manifest = tagged-spdm-toc CBOR Tag Payload</t>
        </li>
      </ul>
      <t>DMTF Header for CBor Web Token (CWT):</t>
      <t>If SPDM Version 1.2:</t>
      <ul spacing="normal">
        <li>
          <t>DMTFSpecMeasurementValueType = 0x84 (Raw Bit / Freeform Manifest)</t>
        </li>
        <li>
          <t>DMTFSpecMeasurementValueSize = Size of CWT</t>
        </li>
        <li>
          <t>DMTFSpecMeasurementValue     = CWT # COSE_Sign1</t>
        </li>
      </ul>
      <t>if SPDM = Version 1.3:</t>
      <ul spacing="normal">
        <li>
          <t>DMTFSpecMeasurementValueType = 0x8A (Raw Bit / Structured Manifest)</t>
        </li>
        <li>
          <t>DMTFSpecMeasurementValueSize = Size of Structured Manifest</t>
        </li>
        <li>
          <t>DMTFSpecMeasurementValue     = Structured Manifest</t>
        </li>
      </ul>
      <t>SVH for CBor Web Token (CWT):</t>
      <ul spacing="normal">
        <li>
          <t>ID          = 0xA (IANA CBOR)</t>
        </li>
        <li>
          <t>VendorIdLen = 2</t>
        </li>
        <li>
          <t>VendorId    = 0x18 #6.18</t>
        </li>
      </ul>
      <t>Structured Manifest Block Definition for CBor Web Token (CWT):</t>
      <ul spacing="normal">
        <li>
          <t>SVH      =  SVH for CBor Web Token (CWT)</t>
        </li>
        <li>
          <t>Manifest = COSE_Sign1 Payload</t>
        </li>
      </ul>
    </section>
    <section anchor="transforming-spdm-measurement-block-digest">
      <name>Transforming SPDM Measurement Block Digest</name>
      <ol group="mbk" spacing="normal" type="Step %d."><li>
          <t>if DMTFSpecMeasurementValueType is in range [0x80 - 0x83]:  </t>
          <ul empty="true">
            <li>
              <t><strong>copy</strong>(SPDM.<tt>MeasurementBlock</tt>.DMTFSpecMeasurementValue , ECT.<tt>environment</tt>.<tt>measurement-map</tt>.<tt>mval</tt>.<tt>digests</tt>).</t>
            </li>
          </ul>
        </li>
        <li>
          <t>if DMTFSpecMeasurementValueType is in range [0x88]:  </t>
          <ul empty="true">
            <li>
              <t><strong>copy</strong>(SPDM.<tt>MeasurementBlock</tt>.DMTFSpecMeasurementValue , ECT.<tt>environment</tt>.<tt>measurement-map</tt>.<tt>mval</tt>.<tt>integrity-registers</tt>).</t>
            </li>
          </ul>
        </li>
      </ol>
    </section>
    <section anchor="transforming-spdm-measurement-block-raw-value">
      <name>Transforming SPDM Measurement Block Raw Value</name>
      <ol group="mbrv" spacing="normal" type="Step %d."><li>
          <t>if DMTFSpecMeasurementValueType is in range [0x7]:  </t>
          <ul empty="true">
            <li>
              <t><strong>copy</strong>(SPDM.<tt>MeasurementBlock</tt>.DMTFSpecMeasurementValue , ECT.<tt>environment</tt>.<tt>measurement-map</tt>.<tt>mval</tt>.<tt>svn</tt>).</t>
            </li>
          </ul>
        </li>
      </ol>
    </section>
    <section anchor="transforming-spdm-rats-eat-cwt">
      <name>Transforming SPDM RATS EAT CWT</name>
      <t>The RATS EAT CWT shall be reported in any of the assigned Measurement Block 0xFD
The Concise Evidence CBOR Tag is serialized inside eat-measurements (273) claim ($measurements-body-cbor /= bytes .cbor concise-evidence-map)
Subsequently the transformation steps defined in <xref target="sec-ce-trans"/>.</t>
    </section>
    <section anchor="sec-spdm-trans">
      <name>Transforming SPDM Evidence</name>
      <t>This section defines how Evidence from SPDM <xref target="SPDM"/> is transformed into an internal representation that can be processed by Verifiers.</t>
      <t>Verifiers supporting the SPDM Evidence format SHOULD implement this transformation.
SPDM Responders SHALL support a minimum version of 1.2</t>
      <t>Theory of Operations:</t>
      <ul spacing="normal">
        <li>
          <t>The SPDM Requestor SHALL retrieve the measurement Manifest at Block 0xFD (Manifest Block) and send its payload to the Verifier
          </t>
          <ul spacing="normal">
            <li>
              <t>The Verifier SHALL decode the payload as a tagged-spdm-toc CBOR tag.</t>
            </li>
            <li>
              <t>The Verifier SHALL extract the tagged-concise-evidence CBOR TAG from the tagged-spdm-toc CBOR tag</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>The<tt>concise-evidence</tt> has a format that is similar to CoRIM <tt>triples-map</tt> (their semantics follows the matching rules described above).</t>
      <ul spacing="normal">
        <li>
          <t>For every <tt>spdm-indirect</tt> measurement the Verifier shall ask the SPDM Requestor to retrieve the measurement block indicated by the index
          </t>
          <ul spacing="normal">
            <li>
              <t>if the index is in range [0x1 - 0xEF] (refer to #Transforming SPDM Measurement Block Digest)</t>
            </li>
            <li>
              <t>if the index is 0xFD (refer to #Transforming SPDM RATS EAT CWT] )</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>The TCG DICE Concise Evidence Binding for SPDM specification <xref target="TCG.CE"/> describes a process for converting the SPDM Measurement Block to Concise Evidence.
Subsequently the transformation steps defined in <xref target="sec-ce-trans"/>.</t>
      <t>The keys provided in the ECT.<tt>authority</tt> field SHOULD include the key which signed the SPDM MEASUREMENTS response carrying the Evidence and keys which authorized that key as described in <xref target="sec-authority"/>.```</t>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft,
and is based on a proposal described in <xref target="RFC7942"/>.
The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs.
Please note that the listing of any individual implementation here does not imply endorsement by the IETF.
Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a catalogue of available implementations or their features.
Readers are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code,
which may serve as Evidence of valuable experimentation and feedback that have made the implemented protocols more mature.
It is up to the individual working groups to use this information as they see fit".</t>
    </section>
    <section anchor="sec-sec">
      <name>Security Considerations</name>
      <t>Evidence appraisal is at the core of any RATS protocol flow, mediating all interactions between Attesters and their Relying Parties.
The Verifier is effectively part of the Attesters' and Relying Parties' trusted computing base (TCB).
Any mistake in the appraisal process could have security implications.
For instance, it could lead to the subversion of an access control function, which creates a chance for privilege escalation.</t>
      <t>Therefore, the Verifier’s code and configuration, especially those of the CoRIM processor, are primary security assets that must be built and maintained as securely as possible.</t>
      <t>The protection of both the Attester and Verifier systems should be considered throughout their entire lifecycle, from design to operation.
This includes the following aspects:</t>
      <ul spacing="normal">
        <li>
          <t>Minimizing implementation complexity (see also <xref section="6.1" sectionFormat="of" target="I-D.ietf-rats-endorsements"/>);</t>
        </li>
        <li>
          <t>Using memory-safe programming languages;</t>
        </li>
        <li>
          <t>Using secure defaults;</t>
        </li>
        <li>
          <t>Minimizing the attack surface by avoiding unnecessary features that could be exploited by attackers;</t>
        </li>
        <li>
          <t>Applying the principle of least privilege to the system's users;</t>
        </li>
        <li>
          <t>Minimizing the potential impact of security breaches by implementing separation of duties in both the software and operational architecture;</t>
        </li>
        <li>
          <t>Conducting regular, automated audits and reviews of the system, such as ensuring that users' privileges are correctly configured and that any new code has been audited and approved by independent parties;</t>
        </li>
        <li>
          <t>Failing securely in the event of errors to avoid compromising the security of the system.</t>
        </li>
      </ul>
      <t>The appraisal process should be auditable and reproducible.
The integrity of the code and data during execution should be made an explicit objective, for example ensuring that the appraisal functions are computed in an attestable trusted execution environment (TEE).</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 key material carried in attestation key triples and key material used to assert or verify the authority of triples (such as 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>The Verifier should use cryptographically protected, mutually authenticated secure channels to all its trusted input sources (i.e., Attesters, Endorsers, RVPs, Verifier Owners).
The Attester should use cryptographically protected, mutually authenticated secure channels to all its trusted input sources (i.e., Verifiers, Relying Parties).
These links must reach as deep as possible - possibly terminating within the Attesting Environment of an Attester or within the appraisal session context of a Verifier - to avoid man-in-the-middle attacks.
Also consider minimizing the use of intermediaries: each intermediary becomes another party that needs to be trusted and therefore factored in the Attesters and Relying Parties' TCBs.
Refer to <xref section="12.2" sectionFormat="of" target="RFC9334"/> for information on Conceptual Messages protection.</t>
    </section>
    <section anchor="sec-iana-cons">
      <name>IANA Considerations</name>
      <t>There are no IANA considerations.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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>Intel</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="7" month="July" year="2025"/>
            <abstract>
              <t>   Remote Attestation Procedures (RATS) enable Relying Parties to assess
   the trustworthiness of a remote Attester and therefore to decide
   whether or not to engage in secure interactions with it.  Evidence
   about trustworthiness can be rather complex and it is deemed
   unrealistic that every Relying Party is capable of the appraisal of
   Evidence.  Therefore that burden is typically offloaded to a
   Verifier.  In order to conduct Evidence appraisal, a Verifier
   requires not only fresh Evidence from an Attester, but also trusted
   Endorsements and Reference Values from Endorsers and Reference Value
   Providers, such as manufacturers, distributors, or device owners.
   This document specifies the information elements for representing
   Endorsements and Reference Values in CBOR format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-corim-08"/>
        </reference>
        <reference anchor="DICE.CoRIM" target="https://trustedcomputinggroup.org/wp-content/uploads/TCG-Endorsement-Architecture-for-Devices-V1-R38_pub.pdf">
          <front>
            <title>DICE Endorsement Architecture for Devices</title>
            <author>
              <organization>Trusted Computing Group (TCG)</organization>
            </author>
            <date year="2022" month="November"/>
          </front>
          <seriesInfo name="Version 1.0, Revision 0.38" value=""/>
        </reference>
        <reference anchor="DICE.Attest" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Attestation-Architecture-Version-1.2-rc-1_9January25.pdf">
          <front>
            <title>DICE Attestation Architecture</title>
            <author>
              <organization>Trusted Computing Group (TCG)</organization>
            </author>
            <date year="2025" month="January"/>
          </front>
          <seriesInfo name="Version 1.2, Revision 1" value=""/>
        </reference>
        <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="SPDM" target="https://www.dmtf.org/sites/default/files/standards/documents/DSP0274_1.3.0.pdf">
          <front>
            <title>Security Protocol and Data Model (SPDM)</title>
            <author>
              <organization>Distributed Management Task Force</organization>
            </author>
            <date year="2023" month="May"/>
          </front>
          <seriesInfo name="Version 1.3.0" value=""/>
        </reference>
        <reference anchor="TCG.CE" target="https://trustedcomputinggroup.org/wp-content/uploads/TCG-DICE-Concise-Evidence-Binding-for-SPDM-Version-1.0-Revision-54_pub.pdf">
          <front>
            <title>TCG DICE Concise Evidence Binding for SPDM</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2024" month="January"/>
          </front>
          <seriesInfo name="Version 1.00, Revision 0.54" value=""/>
        </reference>
        <reference anchor="I-D.ietf-rats-endorsements">
          <front>
            <title>RATS Endorsements</title>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Armidale Consulting</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="25" month="August" year="2025"/>
            <abstract>
              <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.

   This document does not aim to define a conceptual message format for
   Endorsements and Reference Values.  Instead, it extends RFC9334 to
   provide further details on Reference Values and Endorsements, as
   these topics were outside the scope of the RATS charter when RFC9334
   was developed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-endorsements-07"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="STD96">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="STD94">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9711">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
            <author fullname="G. Mandyam" initials="G." surname="Mandyam"/>
            <author fullname="J. O'Donoghue" initials="J." surname="O'Donoghue"/>
            <author fullname="C. Wallace" initials="C." surname="Wallace"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>An Entity Attestation Token (EAT) provides an attested claims set that describes the state and characteristics of an entity, a device such as a smartphone, an Internet of Things (IoT) device, network equipment, or such. This claims set is used by a relying party, server, or service to determine the type and degree of trust placed in the entity.</t>
              <t>An EAT is either a CBOR Web Token (CWT) or a JSON Web Token (JWT) with attestation-oriented claims.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9711"/>
          <seriesInfo name="DOI" value="10.17487/RFC9711"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
    </references>
    <?line 621?>

<section numbered="false" anchor="contributors">
      <name>Contributors</name>
      <t>The authors would like to thank the following people for their valuable contributions to the specification.</t>
      <t>Henk Birkholz</t>
      <t>Email: henk.birkholz@ietf.contact</t>
      <t>Yogesh Deshpande</t>
      <t>Email: yogesh.deshpande@arm.com</t>
      <t>Thomas Fossati</t>
      <t>Email: Thomas.Fossati@linaro.org</t>
      <t>Dionna Glaze</t>
      <t>Email: dionnaglaze@google.com</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank James D. Beaney, Francisco J. Chinchilla, Vincent R. Scarlata, and Piotr Zmijewski for review feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
