<?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.21 (Ruby 3.3.6) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cds-rats-intel-corim-profile-03" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="Intel profile">Intel Profile for Remote Attestation</title>
    <seriesInfo name="Internet-Draft" value="draft-cds-rats-intel-corim-profile-03"/>
    <author initials="J." surname="Beaney" fullname="James D. Beaney">
      <organization>Intel Corporation</organization>
      <address>
        <email>james.d.beaney@intel.com</email>
      </address>
    </author>
    <author initials="A." surname="Draper" fullname="Andrew Draper">
      <organization>Altera Corporation</organization>
      <address>
        <email>andrew.draper@altera.com</email>
      </address>
    </author>
    <author initials="V." surname="Scarlata" fullname="Vincent R. Scarlata">
      <organization>Intel Corporation</organization>
      <address>
        <email>vincent.r.scarlata@intel.com</email>
      </address>
    </author>
    <author initials="N." surname="Smith" fullname="Ned Smith">
      <organization>Intel Corporation</organization>
      <address>
        <email>ned.smith@intel.com</email>
      </address>
    </author>
    <date year="2025" month="January" day="22"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>attestation</keyword>
    <keyword>profile</keyword>
    <keyword>corim</keyword>
    <abstract>
      <?line 118?>

<t>This document is a profile of various IETF and TCG standards that support remote attestation.
The profile supports Intel-specific adaptations and extensions for Evidence, Endorsements and Reference Values.
This profile describes apticulareplication of CoRIM, EAT, CMW, TCG concise evidence, and TCG DICE specifications.
In particular, CoRIM is extended to define measurement types that are unique to Intel and defines Reference Values types that support matching Evidence based on range and subset comparison.
Multiple Evidence formats are anticipated, based on IETF and TCG specifications.
Evidence formats are mapped to Reference Values expressions based on CoRIM and CoRIM extensions found in this profile.
The Evidence to Reference Values mappings are either documented by industry specifications or by this profile.
Reference Value Providers and Endorsers may use this profile to author mainifests containing Reference Values and Endorsements that require Intel profile support from parser implementations.
Parser implementations can recognize the Intel profile by profile identifier values contained within attestation conceptual mmessages and from profile parameters to media types or profile specific content format identifiers.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://nedmsmith.github.io/draft-cds-rats-intel-corim-profile/draft-cds-rats-intel-corim-profile.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-cds-rats-intel-corim-profile/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Remote ATtestation ProcedureS Working Group mailing list (<eref target="mailto:rats@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/rats/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/rats/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/nedmsmith/draft-cds-rats-intel-corim-profile"/>.</t>
    </note>
  </front>
  <middle>
    <?line 130?>

<section anchor="sec-introduction">
      <name>Introduction</name>
      <t>This profile describes extensions and restrictions placed on Reference Values, Endorsements, and Evidence
that support attestation capabilities of Intel products containing Intel(R) SGX(TM) or Intel(R) TDX(TM) technology, or Intel(R) products that contain
DICE <xref target="DICE.engine"/> root of trust, DICE layers <xref target="DICE.layer"/>, or modules that implement SPDM <xref target="DMTF.SPDM"/>.</t>
      <t>The CoRIM specifications <xref target="DICE.CoRIM"/> and <xref target="I-D.ietf-rats-corim"/> define a baseline schema for Reference Values and Endorsements that form the foundation for the extensions defined in this profile.
<xref target="I-D.ietf-rats-corim"/> contains a foundational representation for Attester actual state that Evidence, as specified by <xref target="DICE.Attest"/>, <xref target="TCG.CE"/>, and <xref target="DMTF.SPDM"/>, Reference Values, and Endorsements can map to that helps ensure compatibility with a broad spectrum of Verifier implementations.
The Reference Values extensions in this profile describe reference state that can be expressed as set membership or value ranges.
This profile defines extensions to CoRIM that support appraisal matching that is based on set membership, masked values, and numeric ranges.</t>
      <t>The baseline CoRIM, as defined by <xref target="DICE.CoRIM"/> is a subset of the Intel profile.
Intel products that implement exclusively to the baseline CoRIM may not rely upon this profile.
The Intel profile extensions may be generally useful.
Implementations based on the Intel profile does not necessarily imply an implementation is an Intel product.</t>
      <t>This profile extends CoMID <tt>measurement-values-map</tt>, as defined by <xref target="DICE.CoRIM"/> (see also <xref target="I-D.ietf-rats-corim"/>), with measurement types that are unique to Intel products.
Some measurement types are specific to Reference Values where multiple reference states may be included in reference manifests.
Intel profile extensions use a CBOR tagged value that defines a comparison operator and operands that instruct Verifiers regarding subset, range, and masked values matching semantics.
For example, a numeric operator 'greater-than' instructs the Verifier to match a numeric Evidence value if it is greater than a numeric range operand.</t>
      <t>This profile follows the Verifier behavior defined by <xref target="DICE.CoRIM"/> and extends Verifier behavior to include operator-operand matching.
If no operator is specified by Reference Values statements, the Verifier defaults to baseline <xref target="DICE.CoRIM"/> matching semantics.
If Evidence matches Reference Values and Endorsements apply, Endorsed Values may be added to the accetped claims set.
When all Evidence and Endorsements are processed, the Verifier's set of accepted claims is available for Attestation Results computations.
This profile doesn't define Attestation Results.
Rather, an Attestation Results profile, such as <xref target="I-D.kdyxy-rats-tdx-eat-profile"/> may be referenced instead.</t>
      <t>This profile is compatible with multiple Evidence formats, as defined by <xref target="DICE.Attest"/>, <xref target="TCG.CE"/>, and <xref target="DMTF.SPDM"/>.
It describes considerations when mapping Evidence formats to CoRIM <xref target="DICE.CoRIM"/> that a Verifier may use when performig appraisals.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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.</t>
      <?line -18?>

<t>The reader is assumed to be familiar with the terms defined in Section 4 of <xref target="RFC9334"/> and <xref target="I-D.ietf-rats-endorsements"/>.</t>
    </section>
    <section anchor="sec-background">
      <name>Background</name>
      <t>Complex platforms may contain a variety of hardware components, several of which may contain a hardware root of trust.
Each root of trust may anchor one or more layers <xref target="DICE.layer"/> resulting in multiple instances of attestation Evidence.
Evidence may be integrity protected by digital signatures, such as certificates <xref target="DICE.Attest"/>, tokens <xref target="RFC8392"/> or by a secure transport <xref target="DMTF.SPDM"/>.
For example, a system bus may allow dynamically configured peripheral devices that have attestation capabilities.
Confidential computing environments, such as SGX, may extend an initial boundary to include a peripheral, or a peer enclave, that together forms a network of trustworthy nodes that a remote
attestation Verifier may need to appraise.
Multiple Evidence blocks may be combined into a composite Evidence block <xref target="I-D.ietf-rats-msg-wrap"/> that is more easily conveyed.
Complex platforms may have one or more lead Attester endpoints that communicate with a remote Verifier to convey composite Evidence.
The composition of the complex platform is partially represented in the composite Evidence.</t>
      <t>However, composite Evidence may not fully describe platform composition.
A complex platform may consist of multiple subsystems, such as network adapters, storage controllers, memory controllers, special purpose processors, etc.
The various sub-subsystem components vendors may create hardware bills of material (HBOM) that describe sub-system composition.
A complex platform vendor may assemble various sub-system components whose composition is described by a platform HBOM.
Although CoRIM may be used to create HBOMs, use of this profile for HBOM creation is unanticipated.</t>
      <t>Nevertheless, a complex system may contain multiple identical instances of sub-sytem components that produce identical Evidence blocks.
Additionally, dynamic insertion or removal of a component may result in composite Evidence blocks that reflect this dynamism.</t>
    </section>
    <section anchor="sec-profile-identifier">
      <name>Profile Identifier</name>
      <t>This profile applies to Reference Values from a CoRIM manifest that a Verifier uses to process Evidence.</t>
      <t>Profile identifier structures are defined by CoRIM <xref target="I-D.ietf-rats-corim"/>, EAT <xref target="I-D.ietf-rats-eat"/> and Concise Evidence <xref target="TCG.CE"/>.</t>
      <section anchor="sec-intel-profile">
        <name>Intel Profile</name>
        <t>The profile identifier for the Intel Profile is the OID:</t>
        <t><tt>{joint-iso-itu-t(2) country(16) us(840) organization(1) intel(113741) (1) intel-comid(16) profile(1)}</tt></t>
        <t><tt>2.16.840.1.113741.1.16.1</tt></t>
      </section>
      <section anchor="profile-specific-media-and-content-types">
        <name>Profile Specific Media and Content Types</name>
        <t>This profile uses the following media types:</t>
        <ul spacing="normal">
          <li>
            <t>"application/eat+cwt"</t>
          </li>
          <li>
            <t>"application/eat+cwt; eat_profile=2.16.840.1.113741.1.16.1"</t>
          </li>
          <li>
            <t>"application/rim+cbor" (TBA)</t>
          </li>
          <li>
            <t>"application/rim+cbor" (TBA); profile=2.16.840.1.113741.1.16.1"</t>
          </li>
        </ul>
        <t>This profile uses the following content formats:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Content Type</th>
              <th align="left">C-F ID</th>
              <th align="left">TN Function</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">"application/eat+cwt"</td>
              <td align="left">263</td>
              <td align="left">1668547081</td>
            </tr>
            <tr>
              <td align="left">"application/eat+cwt; eat_profile=2.16.840.1.113741.1.16.1"</td>
              <td align="left">10005</td>
              <td align="left">1668556861</td>
            </tr>
            <tr>
              <td align="left">"application/toc+cbor"</td>
              <td align="left">10570</td>
              <td align="left">1668557428</td>
            </tr>
            <tr>
              <td align="left">"application/ce+cbor"</td>
              <td align="left">10571</td>
              <td align="left">1668557429</td>
            </tr>
          </tbody>
        </table>
        <t>This profile uses the following top level CBOR tags (not already listed):</t>
        <ul spacing="normal">
          <li>
            <t>501, 570, 571</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="attester-anatomy">
      <name>Attester Anatomy</name>
      <t>Attesters implement DICE layering using an initial Attesting Environment, also called a Root of Trust (RoT), that collection claims about one or more Target Environments.
A Target Environment may become an Attesting Environment for a subsequent Target Environment, and so forth. There may be more than one RoT in the same Attester.</t>
      <t>Attesting Environments generate Evidence by signing collected claims using an Attestation Key. Environments may have other keys besides attestation keys. Keys can be regarded as claims that are collected and reported as Evidence. Keys can also be regarded as Target Environments that have measurements that are specific to the key.</t>
      <t>Confidential computing environments are Target Environments that can dynamically request Evidence from an Attesting Environment agent. Such Evidence may also be referred to as a 'Quote'.</t>
      <t>Each DICE layer may produce signed Evidence. Evidence formats include both signature and measurements formats.
Signature formats may include a mix of X.509 certificates and EAT CWTs. Evidence measurements formats may include a mix of ASN.1 and CBOR, where ASN.1 uses DiceTcbInfo and related varients and CBOR uses concise evidence, and CMW.
Multiple Evidence blocks may be bundled using CMW collections.</t>
      <t>Target Environments (other than cryptographic keys) are primarily identified using OIDs from Intel's OID arc (2.16.840.1.113741).
Keys are identified using key identifiers, public key, or certificate digests as defined by <tt>$crypto-key-type-choice</tt> <xref target="I-D.ietf-rats-corim"/>.</t>
    </section>
    <section anchor="sec-evidence-profile">
      <name>Evidence Profile</name>
      <t>Evidence may be integrity protected in various ways including: certificates <xref target="RFC5280"/>, SPDM transcript <xref target="DMTF.SPDM"/>, and CBOR web token (CWT) <xref target="RFC8392"/>.
Evidence contained in a certificate may be encoded using <tt>DiceTcbInfo</tt> and <tt>DiceTcbInfoSeq</tt> <xref target="DICE.Attest"/>. Evidence contained in an SPDM payload may
be encoded using the SPDM <tt>Measurement Block</tt> <xref target="DMTF.SPDM"/>. Evidence may be formatted as <tt>concise-evidence</tt> <xref target="TCG.CE"/> and
included in an alias certificate or an SPDM Measurement Manifest.</t>
      <t>The <tt>DiceTcbInfo</tt> and SPDM Evidence formats can be translated to CoMID.
The concise evidence format is native to CoMID.
This profile documents evidence mapping from <tt>DiceTcbInfo</tt> and SPDM <tt>Measurement Block</tt> to CoMID, as defined by <xref target="DICE.CoRIM"/>.</t>
      <t>The CoMID extensions defined by this profile <xref target="sec-measurement-extensions"/> are applied to <tt>concise-evidence</tt> so that
Verifiers that support this profile can consistently apply a common schema across Evidence, Reference Values, and Endorsements.</t>
      <section anchor="sec-evidence-hierarchy">
        <name>Evidence Hierarchy</name>
        <t>Evidence hierarchy refers to DICE layering where the platform bootstrap components double as Attesting Environments that collect measurements of the other bootstrap components (as Target Environments) until the quoting agent (e.g., SGX Quoting Enclave (QE), TDX Quoting TD (QTD)) is initialized. Tenant trusted execution environment (TEE) components can be dynamically loaded then request Evidence from its quoting agent.
Quoting agents locally verify then sign measurments using the QTD / QE attestation key.
A hierarchy of Evidence consisting of all the Evidence from a RoT to the tenant environment describes the Attester.</t>
        <t>A complex device may have multiple roots of trust, such as <xref target="DICE.engine"/>, each contributing an evidence hierarchy that results in
several Evidence "chains", that together, constitute a complete Evidence hierarchy for the Attester device.</t>
        <t>The Evidence hierarchy should form a spanning tree that contains all Attester Evidence. All Attesting Environments
within the device produce the spanning tree. CoRIM manifests contain Reference Values for the spanning tree so that
Verifiers do not assume the spanning tree is defined by Evidence.
Note that a failure or comporomise within the Attester device could result in a portion of the spanning tree being omitted.</t>
        <t>Example spanning tree:</t>
        <ul spacing="normal">
          <li>
            <t>A DICE certificate chain with a DiceTcbInfo extension, a DiceTcbInfoSeq extension, and a <tt>ConceptualMessageWrapper</tt> (CMW)
<xref target="I-D.ietf-rats-msg-wrap"/> extension containing a CBOR-encoded <tt>tagged-concise-evidence</tt>.</t>
          </li>
          <li>
            <t>An SPDM alias intermediate certification chain containing a CMW extension, and an SPDM measurement manifest containing
<tt>tagged-concise-evidence</tt>.</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-concise-evidence">
        <name>Concise Evidence</name>
        <t>Concise evidence is a CDDL representation of Evidence <xref target="TCG.CE"/> that uses expressions from CoMID, which is a subset of CoRIM. See <xref target="DICE.CoRIM"/> and <xref target="I-D.ietf-rats-corim"/>.
Evidence describes the actual state of the Attester.
<tt>tagged-concise-evidence</tt> uses a CBOR tag to identify <tt>concise-evidence</tt> <xref target="TCG.CE"/>.
This profile is compatible with <tt>tagged-concise-evicence</tt>.
CoRIM extensions, defined by this profile, are used by <tt>tagged-concise-evidence</tt> by extending <tt>measurement-values-map</tt>.</t>
      </section>
    </section>
    <section anchor="sec-refend-profile">
      <name>Reference Values and Endorsements Profile</name>
      <t>The CoRIM specifications <xref target="DICE.CoRIM"/> and <xref target="I-D.ietf-rats-corim"/> define a baseline schema for Reference Values and Endorsements in this profile. The profile defines extensions to CoRIM for measurement types that are not representable by CoRIM or are more conveniently represented.</t>
    </section>
    <section anchor="sec-comid-extensions">
      <name>CoRIM Extensions</name>
      <t>The Intel Profile extends <tt>measurement-values-map</tt> which is used by Evidence, Reference Values, and Endorsed Values by defining code points from the negative integer range.</t>
      <t>Reference Values extensions define types that can have multiple Reference Values that "match" a singleton Evidence value called "non-exact match" matching.
Reference state expressions define non-exact-match matching semantics in terms of numeric ranges, date-time ranges, sets, and masks.
Reference Values data types are identified by the CBOR tag <tt>#6.60010(...)</tt>.</t>
      <section anchor="sec-expressions">
        <name>Expressions</name>
        <t>Expressions are used to specify richer Reference Values measurements that expect non-exact matching semantics.
The Reference Value expression instructs the Verifier regarding matching parameters,
such as greater-than or less-than, ranges, sets, etc. Typically, the Evidence value is one operand of an expression
and the Reference Value contains the operator and additional operands.</t>
        <t>The operator and remaining operands are contained in an array.
Expression arrays have an operator followed by zero or more operands.
The operator definition identifies the additional operands and their data types.
A Verifier forms an expression using Evidence as the first operand, obtains the operator from the first entry in
the expression array, and any remaining array entries are operands.</t>
        <t>This document describes operations using <em>infix</em> notation where the first operand, <em>operand_1</em>, is obtained from Evidence,
followed by the operator, followed by any remaining operands: <em>operand_2</em>, <em>operand_3</em>, etc...</t>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t>From Evidence: <tt>operand_1</tt>, from Reference Values: <tt>[ operator, operand_2, operand_3, ... ]</tt>.</t>
          </li>
        </ul>
        <t>Expression records are CBOR tagged to indicate the following CBOR is to be evaluated as an expression.
Expression statements found in Reference Values informs the Verifier that Evidence is needed to complete
the expression equation. Appraisal processing <bcp14>MUST</bcp14> evaluate the expression.</t>
        <t>This profile anticipates use of the CBOR tag <tt>#6.60010</tt> to identify expression arrays. See <xref target="sec-iana-considerations"/>.</t>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t><tt>#6.60010([ operator, operand_2, operand_3, ... ])</tt>.</t>
          </li>
        </ul>
        <section anchor="sec-expression-operators">
          <name>Expression Operators</name>
          <t>There are several classes of operators as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Numeric</strong>: The <tt>numeric</tt> operand can be an integer, unsigned integer, or floading point value.</t>
            </li>
            <li>
              <t><strong>Set</strong>: The <tt>set</tt> operand can be an set (array) of any primitive value or a set of arrays containing any primitive value.
The position of the items in a set is unordered, while the position of items in an array within a set
is ordered.</t>
            </li>
            <li>
              <t><strong>Date-Time</strong>: The date-time operators compare two date-time values,
while the <tt>epoch</tt> operators determine if a date-time value
is within a range defined by an epoch and a grece period relative to the epoch.</t>
            </li>
            <li>
              <t><strong>Mask</strong>: The <tt>mask</tt> operator compares two bit fields where a bit-field is compared to
a second bit-field using a bit-field-mask that selects the bits to be compared.
The bit-field may contain a sequence of bytes of any length.
The bit-field-mask should be the same length as the bit-field.</t>
            </li>
          </ol>
          <section anchor="sec-equivalance-operator">
            <name>Equivalence Operator</name>
            <t>By default, <em>exact</em> match rules are assumed. Consequently, no operator artifact is needed when
Evidence values are identical to Reference Values.</t>
          </section>
        </section>
        <section anchor="sec-numeric-expressions">
          <name>Numeric Expressions</name>
          <t>Numeric operators apply to values that are integers, unsigned integers or floating point numbers.
There are four numeric operators:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>greater-than</strong> (gt),</t>
            </li>
            <li>
              <t><strong>greater-than-or-equal</strong> (ge),</t>
            </li>
            <li>
              <t><strong>less-than</strong> (lt),</t>
            </li>
            <li>
              <t><strong>less-than-or-equal</strong> (le).</t>
            </li>
          </ol>
          <t>The equals operator is not defined because an exact match rule is the default rule when an Evidence value is identical to a Reference Value.</t>
          <t>The numeric operator data type definitions are as follows:</t>
          <sourcecode type="cddl"><![CDATA[
gt = 1
ge = 2
lt = 3
le = 4
numeric-type = integer / unsigned / float
numeric-operator = gt / ge / lt / le
numeric-expression = [ numeric-operator, numeric-type ]
tagged-numeric-expression = #6.60010(numeric-expression)
]]></sourcecode>
          <t>A numeric expression is an array containing a numeric operator and a numeric operand.
The operand contains a numeric Reference Value that is matched with a numeric Evidence value.</t>
          <t>Evidence and Reference Values <bcp14>MUST</bcp14> be the same numeric type. For example, if a Reference Value numeric type is
<tt>integer</tt>, then the Evidence numeric value must also be <tt>integer</tt>.</t>
          <t>This profile defines four macro numeric expressions, one for each numeric operator:</t>
          <ul spacing="normal">
            <li>
              <t><tt>tagged-numeric-gt</tt>,</t>
            </li>
            <li>
              <t><tt>tagged-numeric-ge</tt>,</t>
            </li>
            <li>
              <t><tt>tagged-numeric-lt</tt>,</t>
            </li>
            <li>
              <t><tt>tagged-numeric-le</tt>.</t>
            </li>
          </ul>
          <t>In each case, the numeric operator is used to evaluate a Reference Value operand against an Evidence value operand
that is obtained from Evidence.</t>
          <t>If the expression is read using <em>infix</em> notation, the first operand is Evidence, followed by the operator,
followed by the Reference Value operand.</t>
          <t>Example:</t>
          <ul spacing="normal">
            <li>
              <t>&lt;<tt>evidence_numeric</tt>&gt; &lt;<tt>le</tt>&gt; &lt;<tt>reference_numeric</tt>&gt;</t>
            </li>
          </ul>
          <t>The numeric expression definitions are as follows:</t>
          <sourcecode type="cddl"><![CDATA[
tagged-numeric-gt = #6.60010( [
    greater-than: gt .within numeric-operator,
    reference-value: numeric-type ] )
tagged-numeric-ge = #6.60010( [
    greater-than: ge .within numeric-operator,
    reference-value: numeric-type ] )
tagged-numeric-lt = #6.60010( [
    greater-than: lt .within numeric-operator,
    reference-value: numeric-type ] )
tagged-numeric-le = #6.60010( [
    greater-than: le .within numeric-operator,
    reference-value: numeric-type ] )
]]></sourcecode>
        </section>
        <section anchor="sec-set-expressions">
          <name>Set Expressions</name>
          <t>Set operators allow Reference Values, that are expressed as a set, to be compared with Evidence that
is expressed as either a primitive value or a set.</t>
          <t>Set expression statements have two forms:</t>
          <ol spacing="normal" type="1"><li>
              <t>A binary relation between a primitive object 'O' and a set 'S', and</t>
            </li>
            <li>
              <t>A binary relation between two sets, an Evidence set 'S1' and a Reference Values set 'S2'.</t>
            </li>
          </ol>
          <t>The first form, relation between an object and a set, has two operators:</t>
          <ul spacing="normal">
            <li>
              <t><strong>member</strong> and</t>
            </li>
            <li>
              <t><strong>not-member</strong>.</t>
            </li>
          </ul>
          <t>The Evidence object 'O' is evaluated with the Reference Values set 'S'.</t>
          <t>The <tt>op.member</tt> and <tt>op.not-member</tt> operators expect a Reverence Value set as <em>operand_2</em> and a primitive Evidence
value as <em>operand_1</em>. Evaluation tests whether <em>operand_1</em> is a member of the set <em>operand_2</em>.</t>
          <t>Example:</t>
          <ul spacing="normal">
            <li>
              <t>&lt;<tt>evidence-value</tt>&gt; &lt;<tt>set-operator</tt>&gt; &lt;<tt>reference-set</tt>&gt;</t>
            </li>
          </ul>
          <t>The set data type definitions are defined as follows:</t>
          <sourcecode type="cddl"><![CDATA[
member = 6
not-member = 7

set-type = [ * any ]
set-operator = member / not-member
set-expression = [ set-operator, set-type ]
tagged-set-expression = #6.60010( set-expression )
]]></sourcecode>
          <t>A set expression array contins a set operator followed by a set of Reference Values.
The set is defined by <tt>set-type</tt>.</t>
          <t>The set expression type definitions are as follows:</t>
          <sourcecode type="cddl"><![CDATA[
tagged-exp-member = #6.60010([
    member .within set-operator, set-type ])
    
tagged-exp-not-member = #6.60010([
    not-member .within set-operator, set-type ])
]]></sourcecode>
          <t>Examples:</t>
          <ul spacing="normal">
            <li>
              <t>&lt;<tt>evidence_object</tt>&gt; &lt;<tt>member</tt>&gt; &lt;<tt>reference_set</tt>&gt;</t>
            </li>
            <li>
              <t>&lt;<tt>evidence_object</tt>&gt; &lt;<tt>not-member</tt>&gt; &lt;<tt>reference_set</tt>&gt;</t>
            </li>
          </ul>
          <t>The Evidence object <bcp14>MUST NOT</bcp14> be nil.</t>
          <t>The Reference Values set may be the empty set.</t>
          <t>The second form, a relation between two sets, has three operators:</t>
          <ul spacing="normal">
            <li>
              <t><strong>subset</strong>,</t>
            </li>
            <li>
              <t><strong>superset</strong>,</t>
            </li>
            <li>
              <t><strong>disjoint</strong>.</t>
            </li>
          </ul>
          <t>The fist set, S1 is Evidence and set, S2 is the Reference Values set.</t>
          <t>The <tt>subset</tt>, <tt>superset</tt>, and <tt>disjoint</tt> operators test whether an Evidence set value
satisfies a set operation, given a Reverence Value set.</t>
          <t>Examples:</t>
          <ul spacing="normal">
            <li>
              <t>&lt;<tt>evidence_set</tt>&gt; &lt;<tt>subset</tt>&gt; &lt;<tt>reference_set</tt>&gt;</t>
            </li>
            <li>
              <t>&lt;<tt>evidence_set</tt>&gt; &lt;<tt>superset</tt>&gt; &lt;<tt>reference_set</tt>&gt;</t>
            </li>
            <li>
              <t>&lt;<tt>evidence_set</tt>&gt; &lt;<tt>disjoint</tt>&gt; &lt;<tt>reference_set</tt>&gt;</t>
            </li>
          </ul>
          <t>The Reference Values and Evidence sets may be the empty set.</t>
          <t>The set of sets data type definitions are as follows:</t>
          <sourcecode type="cddl"><![CDATA[
subset = 8
superset = 9
disjoint = 10
set-of-set-type = [ * [ + any ]]
set-of-set-operator = subset / superset / disjoint
set-of-set-expression = [ set-of-set-operator, set-of-set-type ]
tagged-set-of-set-expression = #6.60010(set-of-set-expression)
]]></sourcecode>
          <t>For <tt>subset</tt>, every member in the Evidence set 'S1', <bcp14>MUST</bcp14> map to a member in the Reference Values set 'S2'.
The Evidence set, 'S1', <bcp14>MAY</bcp14> be a proper subset of 'S2'. For example, if every member in set 'S1' maps to every member
in set 'S2' then matching is successful. A successful result produces the set 'S1'.</t>
          <t>For <tt>superset</tt>, every member in the Reference Values set 'S2', <bcp14>MUST</bcp14> map to a member in the Evidence set 'S1'.
A successful result produces the set 'S1'.</t>
          <t>For <tt>disjoint</tt>, every member in the Evidence set 'S1' <bcp14>MUST NOT</bcp14> map to any member in the Reference Values
set 'S2'. A successful result produces the empty set.</t>
          <t>The set of sets expression definitions are as follows:</t>
          <sourcecode type="cddl"><![CDATA[
tagged-exp-subset = #6.60010([
    subset .within set-of-set-operator, set-of-set-type ])

tagged-exp-superset = #6.60010([
    superset .within set-of-set-operator, set-of-set-type ])
    
tagged-exp-disjoint = #6.60010([
    disjoint .within set-of-set-operator, set-of-set-type ])
]]></sourcecode>
        </section>
        <section anchor="sec-time-expressions">
          <name>Time Expressions</name>
          <section anchor="sec-date-time-expressions">
            <name>Date-Time Expressions</name>
            <t>Date-time can be expressed in both string <tt>tdate</tt> or numeric <tt>time</tt> formats.
There are four operators that are defined for date-time expressions:</t>
            <ol spacing="normal" type="1"><li>
                <t><strong>lt</strong> determines if a date-time Evidence value is less than a Reference Values date-time.</t>
              </li>
              <li>
                <t><strong>le</strong> determines if a date-time Evidence value is less than or equal to a Reference Values date-time.</t>
              </li>
              <li>
                <t><strong>gt</strong> determines if a data-time Evidence value is greater than a Reference Values date-time.</t>
              </li>
              <li>
                <t><strong>ge</strong> determines if a data-time Evidence value is greater than or equal to a Reference Values date-time.</t>
              </li>
            </ol>
            <t>The date-time operators are in fact numeric. Expressions involving string date-time values must be converted to numeric format before the numeric comparison
operator can be applied.</t>
            <t>The numeric date-time data type definitions are as follows:</t>
            <sourcecode type="cddl"><![CDATA[
time-operator = numeric-operator
time-expression = [ time-operator, time ] ;#6.1(number)
tagged-time-expression = #6.60010( time-expression )
]]></sourcecode>
            <t>The string date-time data type definitions are as follows:</t>
            <sourcecode type="cddl"><![CDATA[
tdate-operator = numeric-operator ; converts tdate to numeric
tdate-expression = [ tdate-operator, tdate ] ;#6.0(string)
tagged-tdate-expression = #6.60010( tdate-expression )
]]></sourcecode>
            <t>The date-time expressions for evaluating time consist of a CBOR tagged record containing a time operator followed by a date-time value.</t>
            <t>The <tt>gt</tt> expression compares a date-time value contained in Evidence to a Reference Values date-time.
If the Evidence date-time value is greater-than to the Reference Value,
then the Evidence value is accepted.</t>
            <t>The <tt>ge</tt> expression compares a date-time value contained in Evidence to a Reference Values date-time.
If the Evidence date-time value is greater-than-or-equal to the Reference Value,
then the Evidence value is accepted.</t>
            <t>The <tt>lt</tt> expression compares a date-time value contained in Evidence to a Reference Values date-time.
If the Evidence date-time value is less-than to the Reference Value,
then the Evidence value is accepted.</t>
            <t>The <tt>le</tt> expression compares a date-time value contained in Evidence to a Reference Values date-time.
If the Evidence date-time value is less-than-or-equal to the Reference Value,
then the Evidence value is accepted.</t>
            <t>In <em>infix</em> notation, a date-time value reported as Evidence in <em>operand_1</em>.
The Reference Value expression contains a time comparison operator and <em>operand_2</em> contains a reference date-time.</t>
            <t>Example:</t>
            <ul spacing="normal">
              <li>
                <t>&lt;<tt>evidence_date_time</tt>&gt; &lt;<tt>gt</tt>&gt; &lt;<tt>reference_date_time</tt>&gt;</t>
              </li>
            </ul>
            <t>The numeric date-time expression definitions are as follows:</t>
            <sourcecode type="cddl"><![CDATA[
tagged-exp-time-gt = #6.60010([ 
    gt .within time-operator,
    time ])

tagged-exp-time-ge = #6.60010([ 
    ge .within time-operator,
    time ])

tagged-exp-time-lt = #6.60010([
    lt .within time-operator,
    time ])

tagged-exp-time-le = #6.60010([
    le .within time-operator,
    time ])
]]></sourcecode>
            <t>The string date-time expression definitions are as follows:</t>
            <sourcecode type="cddl"><![CDATA[
tagged-exp-tdate-gt = #6.60010([ 
    gt .within tdate-operator,
    tdate ])

tagged-exp-tdate-ge = #6.60010([ 
    ge .within tdate-operator,
    tdate ])

tagged-exp-tdate-lt = #6.60010([
    lt .within tdate-operator,
    tdate ])

tagged-exp-tdate-le = #6.60010([
    le .within tdate-operator,
    tdate ])
]]></sourcecode>
          </section>
          <section anchor="sec-epoch-expressions">
            <name>Epoch Expressions</name>
            <t>An epoch expression defines a timing window that can be used to determine recentness of a time stampped message.
By default, the Verifier's current time implicitly defines an epoch.
A grace period defines the epoch window differential, in seconds, that a timestamp must fall within to be valid.</t>
            <t>Epochs don't have to rely on current time. <xref target="I-D.birkholz-rats-epoch-markers"/> defines several.</t>
            <t>The epoch data type definitions are as follows:</t>
            <sourcecode type="cddl"><![CDATA[
epoch-operator = numeric-operator
epoch-seconds-type = int
epoch-expression = [ 
    epoch-operator,
    grace-period: epoch-seconds-type,
    ? $tagged-epoch-id
]
tagged-epoch-expression = #6.60010( epoch-expression )
$tagged-epoch-id /= tdate
$epoch-timestamp-type /= $tagged-epoch-id
]]></sourcecode>
            <t>An epoch expression array contains an <tt>epoch-operator</tt> followed by a grace period in seconds that is optionally followed
by a <tt>$tagged-epoch-id</tt>. Epoch operators can be: <tt>gt</tt>, <tt>ge</tt>, <tt>lt</tt>, or <tt>le</tt>. The operator defines the position of
the grace window relative to the epoch and <tt>epoch-grace-seconds</tt> defines the size of the window in seconds.
If the default epoch type is not used, <tt>$tagged-epoch-id</tt> defines the alternate epoch scheme.</t>
            <t>The <tt>$epoch-timestamp-type</tt> defines the timestamp type for the epoch scheme. By default, the timestamp is <tt>tdate</tt>.</t>
            <t>The <tt>tagged-epoch-expression</tt> is an <tt>epoch-expression</tt> preceded by a CBOR tag for an expression array that has
the value <tt>#6.60010</tt>.</t>
            <t>The epoch expression definitions are as follows:</t>
            <sourcecode type="cddl"><![CDATA[
tagged-exp-epoch-gt = #6.60010([
    gt .within epoch-operator
    grace-period: epoch-seconds-type ])

tagged-exp-epoch-ge = #6.60010([
    ge .within epoch-operator
    grace-period: epoch-seconds-type ])

tagged-exp-epoch-lt = #6.60010([
    lt .within epoch-operator
    grace-period: epoch-seconds-type ])

tagged-exp-epoch-le = #6.60010([
    le .within epoch-operator
    grace-period: epoch-seconds-type ])
]]></sourcecode>
            <t>A variety of epoch expressions can be defined that convenently constrain epoch definition.
The <tt>tagged-exp-epoch-gt</tt> expression defines an epoch window that is greater than the current date and time
by the supplied grace period.</t>
            <t>In <em>infix</em> notation, the timestamp value is within an epoch window that is defined by the current time,
plus the grace period, and where the <tt>epoch-operator</tt> defines the shape of the epoch window.</t>
            <t>Example epoch expression:</t>
            <ul spacing="normal">
              <li>
                <t>&lt;<tt>evidence_timestamp</tt>&gt; &lt;<tt>epoch-operator</tt>&gt; &lt;<tt>grace_period</tt>&gt; &lt;<tt>current_time</tt>&gt;</t>
              </li>
            </ul>
            <t>The Verifier adds <tt>grace_period</tt> to <tt>current_time</tt> to obtain the epoch window then applies the operator to
determine if the <tt>evidence_timestamp</tt> is within the window.</t>
          </section>
        </section>
        <section anchor="sec-mask-expression">
          <name>Mask Expression</name>
          <t>Reference Values expressed as an array of bits or bytes that uses a mask can indicate to a Verifier which
bits or bytes of Evidence to ignore.</t>
          <t>Reference Value and mask arrays <bcp14>MUST</bcp14> be the same length for the mask to be applied correctly.
Normally, Evidence would not supply a mask, while Endorsed Values would.
The <tt>mask-eq</tt> operator indicates that an Evidence value of type <tt>mask-type</tt> is compared with
a Reference Value of type <tt>mask-type</tt>, and that a mask of type <tt>mask-type</tt> is applied to both
values before comparing values. If the operator is <tt>mask-eq</tt>, then a binary equivalence comparison is applied.</t>
          <t>The Verifier <bcp14>MUST</bcp14> ensure the lengths of values and mask are equivalent. If the mask is shorter
than the values, the mask is padded with zeros (0) until it is the same length as the largest value.
If the Evidence or Reference Value length is shorter than the mask, the value is padded with
zeros (0) to the length of the mask.</t>
          <t>The masked data type definitions are as follows:</t>
          <sourcecode type="cddl"><![CDATA[
mask-eq = 1
mask-operator = mask-eq
mask-type = bstr
mask-expression = [ mask-operator, value: mask-type, mask: mask-type]
tagged-mask-expression = #6.60010( mask-expression )
]]></sourcecode>
          <t>If the Evidence bit field is a different length from the Reference Value and mask,
the shorter length bit field is padded with zeros to accommodate the larger bit field.</t>
          <t>The <tt>tagged-exp-mask-eq</tt> expression defines a tagged expression that applies the mask equivalence  operator to an Evidence value and a Reference Value using the supplied mask.</t>
          <t>In <em>infix</em> notation, the Evidence value is <em>operand_1</em>, followed by the mask operator, followed by a
Reference Value, <em>operand_2</em>, followed by the mask, <em>operand_3</em>.</t>
          <t>Example:</t>
          <ul spacing="normal">
            <li>
              <t>&lt;<tt>evidence_value</tt>&gt; &lt;<tt>mask-eq</tt>&gt; &lt;<tt>reference_value</tt>&gt; &lt;<tt>mask</tt>&gt;</t>
            </li>
          </ul>
          <t>If each bit in Evidence has a corresponding matching bit in the Reference Value, then the Evidence
value is accepted.</t>
          <t>The masked data expression definitions are as follows:</t>
          <sourcecode type="cddl"><![CDATA[
tagged-exp-mask-eq = #6.60010([
    mask-eq .within mask-operator, 
    value: mask-type, mask: mask-type ] )
]]></sourcecode>
        </section>
      </section>
      <section anchor="sec-measurement-extensions">
        <name>Measurement Extensions</name>
        <t>This profile extends the CoMID <tt>measurement-values-map</tt> with additional code point definitions,
that accommodate Intel SGX and similar architectures.
Measurement extensions don't change Verifier behavior. An extension enables the Verifier to validate the profile compliance of the input evidence and reference values, as it defines the acceptable data types in evidence and the expression operator that is explicitly
supplied with the Reference Values, see <xref target="sec-expression-operators"/>.</t>
        <t>In cases where Evidence does not exactly match Reference Values, the operator definition determines the
expected data types of the operands.
Expected Verifier behavior is defined in <xref target="sec-intel-appraisal-algorithm"/></t>
        <section anchor="sec-tee-advisory-ids-type">
          <name>The tee-advisory-ids-type Measurement Extension</name>
          <t>The <tt>tee.advisory-ids</tt> extension allows the Attester to report known security advisories and a
Reference Values Provider (RVP) to assert updated security advisories.</t>
          <t>The <tt>$tee-advisory-ids-type</tt> is used to specify a set of security advisories, where each is identified by a string identifier.
Evidence may report a set of advisories the Attester believes are relevant. The set of advisories are constrained
by the <tt>set-of-set-type</tt> structure.</t>
          <t>A Reference Values expression record is defined for this extension that applies the disjoint set operation
to determine if there are advisories outstanding. If no advisories are outstanding, then the empty set signifies
successful matching.</t>
          <t>The <tt>$tee-advisory-ids-type</tt> is a list of advisories when used as Endorsements or Evidence and a disjoint set
of advisories when used as a Reference Value.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.advisory-ids: -89) => $tee-advisory-ids-type
)
$tee-advisory-ids-type /= set-type
$tee-advisory-ids-type /= tagged-exp-not-member
]]></sourcecode>
        </section>
        <section anchor="sec-tee-attributes-type">
          <name>The tee-attributes-type Measurement Extension</name>
          <t>The <tt>tee.attributes</tt> extension enables the Attester to report TEE attributes and an RVP to assert a reference
TEE attributes and mask.</t>
          <t>The <tt>$tee-attributes-type</tt> is used to specify TEE attributes in 8 or 16 byte words. If Evidence uses an 8 byte
mask, then the Reference Values expression also uses an 8 byte value and mask.</t>
          <t>The <tt>$tee-attributes-type</tt> is a singleton value omitting the mask value when used as Endorsement or Evidence
and a tuple containing the reference and mask when used as a Reference Value.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.attributes: -82) => $tee-attributes-type
)
$tee-attributes-type /= mask-type
$tee-attributes-type /= tagged-exp-mask-eq
]]></sourcecode>
          <t>Alternatively, the TEE attributes may be encoded using <tt>mkey</tt> where <tt>mkey</tt> contains the non-negative <tt>tee.attributes</tt> and <tt>mval</tt>.<tt>raw-value</tt> contains the <tt>$tee-attributes-type</tt>.<tt>mask-type</tt> value.</t>
        </section>
        <section anchor="sec-tee-cryptokey-type">
          <name>The tee-cryptokey-type Measurement Extension</name>
          <t>The <tt>tee.cryptokeys</tt> extension identifies cryptographic keys associated with a Target Environment.
If multiple <tt>$crypto-key-type-choice</tt> measurements are supplied, array position disambiguates each entry.
Appraisal compares values indexed by array position.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.cryptokeys: -91) => [ + $tee-cryptokey-type ]
)
$tee-cryptokey-type /= $crypto-key-type-choice
]]></sourcecode>
          <t>Alternatively, the TEE cryptokeys may be encoded using <tt>mkey</tt> where <tt>mkey</tt> contains the non-negative <tt>tee.cryptokeys</tt> and <tt>mval</tt>.<tt>cryptokeys</tt> contains the <tt>$tee-cryptokey-type</tt> value.</t>
        </section>
        <section anchor="sec-tee-date-type">
          <name>The tee-date-type Measurement Extension</name>
          <t>The <tt>tee.tcbdate</tt> extension enables the Attester or Endorser to report the TEE date attribute and a RVP to assert a valid TEE matching operation.</t>
          <t>The <tt>$tee-date-type</tt> is a date-time string when used for Evidence or Endorsement.
When used for a Reference Value, either a <tt>tagged-tdate-expression</tt> or a <tt>tagged-epoch-expression</tt> describes the TCB validity.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.tcbdate: -72) => $tee-date-type
)
$tee-date-type /= tdate
$tee-date-type /= tagged-exp-tdate-ge
$tee-date-type /= tagged-exp-epoch-ge
]]></sourcecode>
          <t><tt>tdate</tt> strings must be converted to numeric <tt>time</tt> before the <tt>tdate-operator</tt>, which is a numeric operator, can be applied.</t>
          <t>Alternatively, the TEE tcbdate may be encoded using <tt>mkey</tt> where <tt>mkey</tt> contains the non-negative <tt>tee.tcbdate</tt> and <tt>mval</tt>.<tt>name</tt> contains the string representation <tt>$tee-date-type</tt> without the CBOR tag (i.e., ~tdate).</t>
        </section>
        <section anchor="sec-tee-digest-type">
          <name>The tee-digest-type Measurement Extension</name>
          <t>The <tt>tee.mrtee</tt> and <tt>tee.mrsigner</tt> extensions enable the Attester to report digests for the SGX enclave or TDX TD (e.g., mrenclave, mrtd) and the signer (e.g., mrsigner) of the TEE digest.</t>
          <t>The <tt>$tee-digest-type</tt> is a record that contains the hash algorithm identifier and the digest value when used
as Evidence.
When used as Reference Values, a set of digests can be asserted. The Evidence digest record must be a member
of the Reference Values set.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.mrtee: -83) => $tee-digest-type
)
$$measurement-values-map-extension //= (
  &(tee.mrsigner: -84) => $tee-digest-type
)
$tee-digest-type /= digest
$tee-digest-type /= [ + digest ]
$tee-digest-type /= tagged-exp-member
]]></sourcecode>
          <t>Alternatively, the TEE digests may be encoded using <tt>mkey</tt> where <tt>mkey</tt> contains the non-negative <tt>tee.mrtee</tt> or <tt>tee.mrsigner</tt> and <tt>mval</tt>.<tt>digests</tt> contains the <tt>$tee-digest-type</tt>.<tt>[ + digest ]</tt> value.</t>
        </section>
        <section anchor="sec-tee-epoch-type">
          <name>The tee-epoch-type Measurement Extension</name>
          <t>The <tt>tee.epoch</tt> extension enables the Attester to report an epoch Evidence measurement,
and a RVP to assert an epoch Reference Value.</t>
          <t>As Evidence, the <tt>$tee-epoch-type</tt> is a <tt>tdate</tt> timestamp.</t>
          <t>As a Reference Value, the <tt>$tee-epoch-type</tt> is a grace period, in seconds, that is relative to the
Verifier's current date and time, and an epoch operator: <tt>gt</tt>, <tt>ge</tt>, <tt>lt</tt>, or <tt>le</tt>.
The Verifier evaluates whether the timestamp is within the grace period relative to the current date and time.
The current date and time is implicit, and is assumed to be in <tt>tdate</tt> format.</t>
          <t>The <tt>$tee-epoch-type</tt> is an <tt>$epoch-timestamp-type</tt> when used as Evidence or Endorsement
and a <tt>$tagged-epoch-expression</tt> when used as a Reference Value.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.epoch: -90) => $tee-epoch-type
)
$tee-epoch-type /= $epoch-timestamp-type
$tee-epoch-type /= tagged-exp-epoch-gt
]]></sourcecode>
          <t>Alternatively, for Evidence, the TEE epoch timestamp may be encoded using <tt>mkey</tt> where <tt>mkey</tt> contains the non-negative <tt>tee.epoch</tt> and <tt>mval</tt>.<tt>name</tt> contains the string representation <tt>$tagged-epoch-id</tt> without the CBOR tag (i.e., ~tdate).</t>
        </section>
        <section anchor="sec-tee-instance-id-type">
          <name>The tee-instance-id-type Measurement Extension</name>
          <t>The <tt>tee.instance-id</tt> extension enables the Attester to report the (TBD:instance-id-description) Evidence value
and the RVP to assert an exact-match Reference Value.</t>
          <t>The <tt>$tee-instance-id-type</tt> is an unsigned integer.</t>
          <t>The <tt>$tee-instance-type</tt> is an exact match measurement.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.instance-id: -77) => $tee-instance-id-type
)
$tee-instance-id-type /= uint
$tee-instance-id-type /= bstr
]]></sourcecode>
          <t>Alternatively, the TEE instance ID may be encoded using <tt>mkey</tt> where <tt>mkey</tt> contains the non-negative <tt>tee.instance-id</tt> and <tt>mval</tt>.<tt>raw-value</tt> contains the <tt>$tee-instance-id-type</tt> value.</t>
        </section>
        <section anchor="sec-tee-isvprodid-type">
          <name>The tee-isvprodid-type Measurement Extension</name>
          <t>The <tt>tee.isvprodid</tt> extension enables the Attester to report the ISV product identifier Evidence value
and the RVP to assert an exact-match Reference Value.</t>
          <t>The <tt>$tee-isvprodid-type</tt> is an unsigned integer.</t>
          <t>The <tt>$tee-isvprodid-type</tt> is an exact match measurement.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.isvprodid: -85) => $tee-isvprodid-type
)
$tee-isvprodid-type /= uint
$tee-isvprodid-type /= bstr
]]></sourcecode>
          <t>Alternatively, the TEE product ID may be encoded using <tt>mkey</tt> where <tt>mkey</tt> contains the non-negative <tt>tee.isvprodid</tt> and <tt>mval</tt>.<tt>raw-value</tt> contains the <tt>$tee-isvprodid-type</tt> value.</t>
        </section>
        <section anchor="sec-tee-miscselect-type">
          <name>The tee-miscselect-type Measurement Extension</name>
          <t>The <tt>tee.miscselect</tt> extension enables the Attester to report the (TBD:miscselect-description) Evidence value
and the RVP to assert a Reference Value and mask.</t>
          <t>The <tt>$tee-miscselect-type</tt> is a 4 byte value and mask.</t>
          <t>The <tt>$tee-miscselect-type</tt> is a singleton <tt>mask-type</tt> value when used as Endorsement or Evidence
and a <tt>tagged-mask-expression</tt> when used a Reference Value.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.miscselect: -81) => $tee-miscselect-type
)
$tee-miscselect-type /= mask-type
$tee-miscselect-type /= tagged-exp-mask-eq
]]></sourcecode>
          <t>Alternatively, the TEE miscselect may be encoded using <tt>mkey</tt> where <tt>mkey</tt> contains the non-negative <tt>tee.miscselect</tt> and <tt>mval</tt>.<tt>raw-value</tt> contains the measurement value and <tt>mval</tt>.raw-value-mask` contains the mask value.</t>
        </section>
        <section anchor="sec-tee-model-type">
          <name>The tee-model-type Measurement Extension</name>
          <t>The <tt>tee.model</tt> extension enables the Attester to report the TEE model string as Evidence
and the RVP to assert an exact-match Reference Value.</t>
          <t>The <tt>$tee-model-type</tt> is a string.</t>
          <t>The <tt>$tee-model-type</tt> is an exact match measurement.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.model: -71) => $tee-model-type
)
$tee-model-type /= tstr
]]></sourcecode>
          <t>Alternatively, the TEE model may be encoded using <tt>mkey</tt> where <tt>mkey</tt> contains the non-negative <tt>tee.model</tt> and <tt>mval</tt>.<tt>name</tt> contains the <tt>$tee-model-type</tt> value.</t>
        </section>
        <section anchor="sec-tee-pceid-type">
          <name>The tee-pceid-type Measurement Extension</name>
          <t>The <tt>tee.pceid</tt> extension enables the Attester to report the PCEID as Evidence and the RVP to assert an exact-match Reference Value.</t>
          <t>The <tt>$tee-pceid-type</tt> is a string.</t>
          <t>The <tt>$tee-pceid-type</tt> is an exact match measurement.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.pceid: -80) => $tee-pceid-type
)
$tee-pceid-type /= tstr
]]></sourcecode>
          <t>Alternatively, the PCEID may be encoded using <tt>mkey</tt> where <tt>mkey</tt> contains the non-negative <tt>tee.pceid</tt> and <tt>mval</tt>.<tt>name</tt> contains the <tt>$tee-pceid-type</tt> value.</t>
        </section>
        <section anchor="sec-tee-svn-type">
          <name>The tee-svn-type Measurement Extension</name>
          <t>The <tt>tee.isvsvn</tt> extension enables the Attester to report the SVN for the independent software vendor supplied
component as Evidence and the RVP to assert a Reference Value that is greater-than-or-equal to the reported SVN.</t>
          <t>The <tt>$tee-svn-type</tt> is either an unsigned integer when reported as Evidence, or a tagged numeric expression
that contains an SVN and a numeric greater-than-or-equal operator. The Verifier ensures the Evidence value is
greater-that-or-equal to the Reference Value.</t>
          <t>The <tt>$tee-svn-type</tt> is a numeric when used as Endorsement or Evidence and a <tt>tagged-numeric-expression</tt> when
used as a Reference Value.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.isvsvn: -73) => $tee-svn-type
)
$tee-svn-type /= numeric-type
$tee-svn-type /= tagged-numeric-ge
]]></sourcecode>
          <t>Alternatively, the TEE isvsvn may be encoded using <tt>mkey</tt> where <tt>mkey</tt> contains the non-negative <tt>tee.isvsvn</tt> and <tt>mval</tt>.<tt>svn</tt> contains the svn value as <tt>svn-type</tt>.</t>
        </section>
        <section anchor="sec-tee-tcb-comp-svn-type">
          <name>The tee-tcb-comp-svn-type Measurement Extension</name>
          <t>The <tt>tee.tcb-comp-svn</tt> extension enables the Attester to report an array of SVN values for the TCB when asserted
as Evidence and an array of <tt>tagged-numeric-ge</tt> entries when asserted as a Reference Value.</t>
          <t>The <tt>$tee-tcb-comp-svn-type</tt> is an array containing 16 SVN values when reported as Evidence and an array of 16
expression records each containing the numeric <tt>ge</tt> operator and a reference SVN value.
The Verifier evaluates each SVN in the Evidence array with the corresponding reference expression,
by array position.
If all Evidence values match their respective expressions, evaluation is successful.
The array of SVN Evidence is accepted.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.tcb-comp-svn: -125) => $tee-tcb-comp-svn-type
)
$tee-tcb-comp-svn-type /= 
  [ 16*16 svn-type .within numeric-type ]
$tee-tcb-comp-svn-type /= 
  [ 16*16 tagged-numeric-ge ]
]]></sourcecode>
        </section>
        <section anchor="sec-tee-tcb-eval-num-type">
          <name>The tee-tcb-eval-num-type Measurement Extension</name>
          <t>The <tt>tee.tcb-eval-num</tt> extension enables the Attester to report a TCB evaluation number as Evidence and the RVP to assert a Reference Value expression that compares the tcb-eval-num Evidence with the Reference Value using the greater-than-or-equal operator.</t>
          <t>The <tt>$tee-tcb-eval-num-type</tt> is an unsigned integer when reported as Evidence and a tagged numeric expression when asserted as Reference Values.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee-tcb-eval-num: -86) => $tee-tcb-eval-num-type
)
$tee-tcb-eval-num-type /= uint .within numeric-type
$tee-tcb-eval-num-type /= tagged-numeric-ge
]]></sourcecode>
          <t>Alternatively, the TEE tcb-eval-num Evidence may be encoded using <tt>mkey</tt> where <tt>mkey</tt> contains the non-negative <tt>tee.tcb-eval-num</tt> and <tt>mval</tt>.<tt>raw-value</tt> contains the tcb-eval-num encoded as 4-byte bstr value.</t>
        </section>
        <section anchor="sec-tee-tcbstatus-type">
          <name>The tee-tcbstatus-type Measurement Extension</name>
          <t>The <tt>tee.tcb-status</tt> extension enables the Attester to report the status of the TEE trusted computing base (TCB) as
an array of status strings, as Evidence, and the RVP to assert an array of status arrays as Reference Values where
the Evidence array is a subset of the reference status arrays.</t>
          <t>The <tt>$tee-tcbstatus-type</tt> is a status array with a set expressions containing the <tt>subset</tt> operator when used as Evidence.
When used as a Reference Value it is an array of status arrays.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.tcbstatus: -88) => $tee-tcbstatus-type
)
$tee-tcbstatus-type /= set-type
$tee-tcbstatus-type /= tagged-exp-member
]]></sourcecode>
        </section>
        <section anchor="sec-tee-vendor-type">
          <name>The tee-vendor-type Measurement Extension</name>
          <t>The <tt>tee.vendor</tt> extension enables the Attester to report the TEE vendor name as Evidence and for the RVP to assert
the TEE vendor name.</t>
          <t>The <tt>$tee-vendor-type</tt> is a string containing the vendor name as a string. The vendor string in Evidence must
exactly match the vendor string in Reference Values.</t>
          <t>The <tt>$tee-vendor-type</tt> is an exact match measurement.</t>
          <sourcecode type="cddl"><![CDATA[
$$measurement-values-map-extension //= (
  &(tee.vendor: -70) => $tee-vendor-type
)
$tee-vendor-type /= tstr
]]></sourcecode>
          <t>Alternatively, the TEE vendor may be encoded using <tt>mkey</tt> where <tt>mkey</tt> contains the non-negative <tt>tee.vendor</tt> and <tt>mval</tt>.<tt>name</tt> contains the <tt>$tee-vendor-type</tt> value.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-intel-appraisal-algorithm">
      <name>Appraisal Algorithm</name>
      <t>The Intel profile anticipates appraisal algorithms will be based on the appraisal algorithm defined in <xref target="I-D.ietf-rats-corim"/>.
This profile extends the appraisal algorithm to recognize profile extensions that form equations.
An Evidence measurement forms one of the operands: (evidence operand).
A Reference Value forms the operator and remaining operands: [(expression operator), (reference value operand), ...].
For example, if a numeric reference value is 14, and the expressions operator is <tt>gt</tt> the Reference Value might contain the Claim: <tt>#6.60010([ 1, 14])</tt>.
Evidence might contain the measurement: '15'.
In infix construction, the equation would be: (<tt>15</tt>) (<tt>gt</tt>) (<tt>14</tt>).
The Verifier evaluates whether <tt>15</tt> is greater-than <tt>14</tt>.</t>
      <section anchor="sec-complex-expressions">
        <name>Complex Expressions</name>
        <t>Complex expressions can be used to assess whether the Target Environment is in a particular state before certain Endorsement claims can be asserted.
For example, if an SGX enclave has an <tt>svn</tt> value that is less than the prescribed minimum svn, the enclave status may be
considered "OutOfDate" or may have a known security advisory. The CoMID <tt>conditional-endorsement-triples</tt> or
<tt>conditional-endorsement-series-triples</tt> describe complex Endorsement expressions.</t>
        <t>This profile uses these triples with the reference measurement values extensions described in <xref target="sec-measurement-extensions"/>.</t>
      </section>
    </section>
    <section anchor="sec-intel-reporting-attestation-results">
      <name>Reporting Attestation Results</name>
      <t>Attestation verification can be performed by a pipeline consisting of multiple stages where each input manifest demarks a stage.
The final stage prepares Attestation Results according to Relying Party specifications.
This profile does not define an attestation results format.
The Relying Party should specify suitable Attestation Results formats such as <xref target="I-D.ietf-rats-ar4si"/> or <xref target="I-D.kdyxy-rats-tdx-eat-profile"/>.</t>
      <t>The precise Attestation Results format used, if negotiated by Verifier and Relying Party, should reference this profile to acknowledge
that the Relying Party and Verifier both support the extensions defined in this document.</t>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <t>The security of this profile depends on the security considerations of the various normative references.</t>
    </section>
    <section anchor="sec-iana-considerations">
      <name>IANA Considerations</name>
    </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="18" month="October" year="2024"/>
            <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-06"/>
        </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.1-Revision-18_pub.pdf">
          <front>
            <title>DICE Attestation Architecture</title>
            <author>
              <organization>Trusted Computing Group (TCG)</organization>
            </author>
            <date year="2024" month="January"/>
          </front>
          <seriesInfo name="Version 1.1, Revision 18" value=""/>
        </reference>
        <reference anchor="DICE.layer" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Layering-Architecture-r19_pub.pdf">
          <front>
            <title>DICE Layering Architecture</title>
            <author>
              <organization>Trusted Computing Group (TCG)</organization>
            </author>
            <date year="2020" month="July"/>
          </front>
          <seriesInfo name="Version 1.0, Revision 0.19" 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 (TCG)</organization>
            </author>
            <date year="2024" month="January"/>
          </front>
          <seriesInfo name="Version 1.0, Revision 0.54" value=""/>
        </reference>
        <reference anchor="I-D.ietf-rats-msg-wrap">
          <front>
            <title>RATS Conceptual Messages Wrapper (CMW)</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <author fullname="Dionna Glaze" initials="D." surname="Glaze">
              <organization>Google LLC</organization>
            </author>
            <date day="15" month="November" year="2024"/>
            <abstract>
              <t>   This document defines the RATS conceptual message wrapper (CMW)
   format, a type of encapsulation format that can be used for any RATS
   messages, such as Evidence, Attestation Results, Endorsements, and
   Reference Values.  Additionally, the document describes a collection
   type that enables the aggregation of one or more CMWs into a single
   message.

   This document also defines corresponding CBOR tag, JSON Web Tokens
   (JWT) and CBOR Web Tokens (CWT) claims, as well as an X.509
   extension.  These allow embedding the wrapped conceptual messages
   into CBOR-based protocols, web APIs, and PKIX protocols.  In
   addition, a Media Type and a CoAP Content-Format are defined for
   transporting CMWs in HTTP, MIME, CoAP and other Internet protocols.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-11"/>
        </reference>
        <reference anchor="I-D.ietf-rats-eat">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <author fullname="Giridhar Mandyam" initials="G." surname="Mandyam">
              <organization>Mediatek USA</organization>
            </author>
            <author fullname="Jeremy O'Donoghue" initials="J." surname="O'Donoghue">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Carl Wallace" initials="C." surname="Wallace">
              <organization>Red Hound Software, Inc.</organization>
            </author>
            <date day="6" month="September" year="2024"/>
            <abstract>
              <t>   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a smartphone, IoT device, network equipment or such.  This claims set
   is used by a relying party, server or service to determine the type
   and degree of trust placed in the entity.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-31"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="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="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="I-D.birkholz-rats-epoch-markers">
          <front>
            <title>Epoch Markers</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="22" month="July" year="2024"/>
            <abstract>
              <t>   This document defines Epoch Markers as a way to establish a notion of
   freshness among actors in a distributed system.  Epoch Markers are
   similar to "time ticks" and are produced and distributed by a
   dedicated system, the Epoch Bell.  Systems that receive Epoch Markers
   do not have to track freshness using their own understanding of time
   (e.g., via a local real-time clock).  Instead, the reception of a
   certain Epoch Marker establishes a new epoch that is shared between
   all recipients.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-birkholz-rats-epoch-markers-08"/>
        </reference>
        <reference anchor="I-D.ietf-rats-ar4si">
          <front>
            <title>Attestation Results for Secure Interactions</title>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Hardjono" initials="T." surname="Hardjono">
              <organization>MIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Vincent Scarlata" initials="V." surname="Scarlata">
              <organization>Intel</organization>
            </author>
            <date day="2" month="September" year="2024"/>
            <abstract>
              <t>   This document defines reusable Attestation Result information
   elements.  When these elements are offered to Relying Parties as
   Evidence, different aspects of Attester trustworthiness can be
   evaluated.  Additionally, where the Relying Party is interfacing with
   a heterogeneous mix of Attesting Environment and Verifier types,
   consistent policies can be applied to subsequent information exchange
   between each Attester and the Relying Party.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-ar4si-07"/>
        </reference>
        <reference anchor="DMTF.SPDM" target="https://www.dmtf.org/sites/default/files/standards/documents/DSP0274_1.2.1.pdf">
          <front>
            <title>Security Protocol and Data Mmodel (SPDM) Specification</title>
            <author>
              <organization>Distributed Managability Task Force (DMTF)</organization>
            </author>
            <date year="2022" month="May"/>
          </front>
          <seriesInfo name="Version 1.2.1" value=""/>
        </reference>
        <reference anchor="DICE.engine" target="https://trustedcomputinggroup.org/wp-content/uploads/Hardware-Requirements-for-Device-Identifier-Composition-Engine-r78_For-Publication.pdf">
          <front>
            <title>Requirements for a Device Identifier Composition Engine</title>
            <author>
              <organization>Trusted Computing Group (TCG)</organization>
            </author>
            <date year="2018" month="March"/>
          </front>
          <seriesInfo name="Family &quot;2.0&quot;, Level 00 Revision 78" value=""/>
        </reference>
        <reference anchor="I-D.kdyxy-rats-tdx-eat-profile">
          <front>
            <title>EAT profile for Intel(r) Trust Domain Extensions (TDX) attestation result</title>
            <author fullname="Greg Kostal" initials="G." surname="Kostal">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Sindhuri Dittakavi" initials="S." surname="Dittakavi">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Raghuram Yeluri" initials="R." surname="Yeluri">
              <organization>Intel</organization>
            </author>
            <author fullname="Haidong Xia" initials="H." surname="Xia">
              <organization>Intel</organization>
            </author>
            <author fullname="Jerry Yu" initials="J." surname="Yu">
              <organization>Intel</organization>
            </author>
            <date day="13" month="December" year="2024"/>
            <abstract>
              <t>   Intel® Trust Domain Extensions (TDX) introduce architectural elements
   designed for the deployment of hardware-isolated virtual machines
   (VMs) known as trust domains (TDs).  TDX is designed to provide a
   secure and isolated environment for running sensitive workloads or
   applications.  This Entity Attestation Token (EAT) profile outlines
   claims for an Intel TDX attestation result which facilitate the
   establishment of trust between a relying party and the environment.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kdyxy-rats-tdx-eat-profile-02"/>
        </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="8" month="November" year="2024"/>
            <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.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-endorsements-05"/>
        </reference>
      </references>
    </references>
    <?line 1127?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors wish to thank Shanwei Cen, Piotr Zmijewski, Francisco J. Chinchilla, Yogesh Despande and Dionna Amalie Glaze for their valuable contributions.</t>
    </section>
    <section anchor="full-intel-profile-cddl">
      <name>Full Intel Profile CDDL</name>
      <sourcecode type="cddl"><![CDATA[
tagged-numeric-gt = #6.60010( [
    greater-than: gt .within numeric-operator,
    reference-value: numeric-type ] )
tagged-numeric-ge = #6.60010( [
    greater-than: ge .within numeric-operator,
    reference-value: numeric-type ] )
tagged-numeric-lt = #6.60010( [
    greater-than: lt .within numeric-operator,
    reference-value: numeric-type ] )
tagged-numeric-le = #6.60010( [
    greater-than: le .within numeric-operator,
    reference-value: numeric-type ] )

gt = 1
ge = 2
lt = 3
le = 4
numeric-type = integer / unsigned / float
numeric-operator = gt / ge / lt / le
numeric-expression = [ numeric-operator, numeric-type ]
tagged-numeric-expression = #6.60010(numeric-expression)

member = 6
not-member = 7

set-type = [ * any ]
set-operator = member / not-member
set-expression = [ set-operator, set-type ]
tagged-set-expression = #6.60010( set-expression )

tagged-exp-member = #6.60010([
    member .within set-operator, set-type ])
    
tagged-exp-not-member = #6.60010([
    not-member .within set-operator, set-type ])

subset = 8
superset = 9
disjoint = 10
set-of-set-type = [ * [ + any ]]
set-of-set-operator = subset / superset / disjoint
set-of-set-expression = [ set-of-set-operator, set-of-set-type ]
tagged-set-of-set-expression = #6.60010(set-of-set-expression)

tagged-exp-subset = #6.60010([
    subset .within set-of-set-operator, set-of-set-type ])

tagged-exp-superset = #6.60010([
    superset .within set-of-set-operator, set-of-set-type ])
    
tagged-exp-disjoint = #6.60010([
    disjoint .within set-of-set-operator, set-of-set-type ])

mask-eq = 1
mask-operator = mask-eq
mask-type = bstr
mask-expression = [ mask-operator, value: mask-type, mask: mask-type]
tagged-mask-expression = #6.60010( mask-expression )

tagged-exp-mask-eq = #6.60010([
    mask-eq .within mask-operator, 
    value: mask-type, mask: mask-type ] )

tagged-exp-tdate-gt = #6.60010([ 
    gt .within tdate-operator,
    tdate ])

tagged-exp-tdate-ge = #6.60010([ 
    ge .within tdate-operator,
    tdate ])

tagged-exp-tdate-lt = #6.60010([
    lt .within tdate-operator,
    tdate ])

tagged-exp-tdate-le = #6.60010([
    le .within tdate-operator,
    tdate ])

tdate-operator = numeric-operator ; converts tdate to numeric
tdate-expression = [ tdate-operator, tdate ] ;#6.0(string)
tagged-tdate-expression = #6.60010( tdate-expression )

tagged-exp-time-gt = #6.60010([ 
    gt .within time-operator,
    time ])

tagged-exp-time-ge = #6.60010([ 
    ge .within time-operator,
    time ])

tagged-exp-time-lt = #6.60010([
    lt .within time-operator,
    time ])

tagged-exp-time-le = #6.60010([
    le .within time-operator,
    time ])

time-operator = numeric-operator
time-expression = [ time-operator, time ] ;#6.1(number)
tagged-time-expression = #6.60010( time-expression )

tagged-exp-epoch-gt = #6.60010([
    gt .within epoch-operator
    grace-period: epoch-seconds-type ])

tagged-exp-epoch-ge = #6.60010([
    ge .within epoch-operator
    grace-period: epoch-seconds-type ])

tagged-exp-epoch-lt = #6.60010([
    lt .within epoch-operator
    grace-period: epoch-seconds-type ])

tagged-exp-epoch-le = #6.60010([
    le .within epoch-operator
    grace-period: epoch-seconds-type ])

epoch-operator = numeric-operator
epoch-seconds-type = int
epoch-expression = [ 
    epoch-operator,
    grace-period: epoch-seconds-type,
    ? $tagged-epoch-id
]
tagged-epoch-expression = #6.60010( epoch-expression )
$tagged-epoch-id /= tdate
$epoch-timestamp-type /= $tagged-epoch-id

$$measurement-values-map-extension //= (
  &(tee.advisory-ids: -89) => $tee-advisory-ids-type
)
$tee-advisory-ids-type /= set-type
$tee-advisory-ids-type /= tagged-exp-not-member

$$measurement-values-map-extension //= (
  &(tee.attributes: -82) => $tee-attributes-type
)
$tee-attributes-type /= mask-type
$tee-attributes-type /= tagged-exp-mask-eq

$$measurement-values-map-extension //= (
  &(tee.cryptokeys: -91) => [ + $tee-cryptokey-type ]
)
$tee-cryptokey-type /= $crypto-key-type-choice

$$measurement-values-map-extension //= (
  &(tee.tcbdate: -72) => $tee-date-type
)
$tee-date-type /= tdate
$tee-date-type /= tagged-exp-tdate-ge
$tee-date-type /= tagged-exp-epoch-ge

$$measurement-values-map-extension //= (
  &(tee.mrtee: -83) => $tee-digest-type
)
$$measurement-values-map-extension //= (
  &(tee.mrsigner: -84) => $tee-digest-type
)
$tee-digest-type /= digest
$tee-digest-type /= [ + digest ]
$tee-digest-type /= tagged-exp-member

$$measurement-values-map-extension //= (
  &(tee.epoch: -90) => $tee-epoch-type
)
$tee-epoch-type /= $epoch-timestamp-type
$tee-epoch-type /= tagged-exp-epoch-gt

$$measurement-values-map-extension //= (
  &(tee.instance-id: -77) => $tee-instance-id-type
)
$tee-instance-id-type /= uint
$tee-instance-id-type /= bstr

$$measurement-values-map-extension //= (
  &(tee.isvprodid: -85) => $tee-isvprodid-type
)
$tee-isvprodid-type /= uint
$tee-isvprodid-type /= bstr

$$measurement-values-map-extension //= (
  &(tee.miscselect: -81) => $tee-miscselect-type
)
$tee-miscselect-type /= mask-type
$tee-miscselect-type /= tagged-exp-mask-eq

$$measurement-values-map-extension //= (
  &(tee.model: -71) => $tee-model-type
)
$tee-model-type /= tstr

$$measurement-values-map-extension //= (
  &(tee.pceid: -80) => $tee-pceid-type
)
$tee-pceid-type /= tstr

$$measurement-values-map-extension //= (
  &(tee.isvsvn: -73) => $tee-svn-type
)
$tee-svn-type /= numeric-type
$tee-svn-type /= tagged-numeric-ge

$$measurement-values-map-extension //= (
  &(tee.tcb-comp-svn: -125) => $tee-tcb-comp-svn-type
)
$tee-tcb-comp-svn-type /= 
  [ 16*16 svn-type .within numeric-type ]
$tee-tcb-comp-svn-type /= 
  [ 16*16 tagged-numeric-ge ]

$$measurement-values-map-extension //= (
  &(tee-tcb-eval-num: -86) => $tee-tcb-eval-num-type
)
$tee-tcb-eval-num-type /= uint .within numeric-type
$tee-tcb-eval-num-type /= tagged-numeric-ge

$$measurement-values-map-extension //= (
  &(tee.tcbstatus: -88) => $tee-tcbstatus-type
)
$tee-tcbstatus-type /= set-type
$tee-tcbstatus-type /= tagged-exp-member

$$measurement-values-map-extension //= (
  &(tee.vendor: -70) => $tee-vendor-type
)
$tee-vendor-type /= tstr

]]></sourcecode>
    </section>
  </back>
  <!-- ##markdown-source:
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
VfSvzU7h9JTkfwDRMBwZROAAAA==

-->

</rfc>
