<?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.27 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-ear-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="EAR">EAT Attestation Results</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-ear-00"/>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>Linaro</organization>
      <address>
        <email>thomas.fossati@linaro.org</email>
      </address>
    </author>
    <author initials="E." surname="Voit" fullname="Eric Voit">
      <organization>Cisco</organization>
      <address>
        <email>evoit@cisco.com</email>
      </address>
    </author>
    <author initials="S." surname="Trofimov" fullname="Sergei Trofimov">
      <organization>Arm Limited</organization>
      <address>
        <email>sergei.trofimov@arm.com</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization>Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <date year="2025" month="April" day="07"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>EAT</keyword>
    <keyword>attestation result</keyword>
    <keyword>attestation verifier</keyword>
    <keyword>AR4SI</keyword>
    <abstract>
      <?line 72?>

<t>This document defines the EAT Attestation Result (EAR) message format.</t>
      <t>EAR is used by a verifier to encode the result of the appraisal over an
attester's evidence.
It embeds an AR4SI's "trustworthiness vector" to present a normalized view of
the evaluation results, thus easing the task of defining and computing
authorization policies by relying parties.
Alongside the trustworthiness vector, EAR provides contextual information bound
to the appraisal process.
This allows a relying party (or an auditor) to reconstruct the frame of
reference in which the trustworthiness vector was originally computed.
EAR supports simple devices with one attester as well as composite devices that
are made of multiple attesters, allowing the state of each attester to be
separately examined.
EAR can also accommodate registered and unregistered extensions.
It can be serialized and protected using either CWT or JWT.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://thomas-fossati.github.io/draft-ear/draft-fv-rats-ear.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-rats-ear/"/>.
      </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/thomas-fossati/draft-ear"/>.</t>
    </note>
  </front>
  <middle>
    <?line 91?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines the EAT <xref target="I-D.ietf-rats-eat"/> Attestation Result (EAR) message format.</t>
      <t>EAR is used by a verifier to encode the result of the appraisal over an
attester's evidence.
It embeds an AR4SI's "trustworthiness vector" <xref target="I-D.ietf-rats-ar4si"/> to present a
normalized view of the evaluation results, thus easing the task of defining and
computing authorization policies by relying parties.
Alongside the trustworthiness vector, EAR provides contextual information bound
to the appraisal process.
This allows a relying party (or an auditor) to reconstruct the frame of
reference in which the trustworthiness vector was originally computed.
EAR supports simple devices with one attester as well as composite devices that
are made of multiple attesters (see <xref section="3.3" sectionFormat="of" target="RFC9334"/>) allowing the
state of each attester to be separately examined.
EAR can also accommodate registered and unregistered extensions.
It can be serialized and protected using either CWT <xref target="RFC8392"/> or JWT <xref target="RFC7519"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>This document uses terms and concepts defined by the RATS architecture.
For a complete glossary see <xref section="4" sectionFormat="of" target="RFC9334"/>.</t>
      <t>The terminology from CBOR <xref target="STD94"/>, CDDL <xref target="RFC8610"/> and COSE <xref target="STD96"/> applies;
in particular, CBOR diagnostic notation is defined in <xref section="8" sectionFormat="of" target="STD94"/>
and <xref section="G" sectionFormat="of" target="RFC8610"/>.</t>
      <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?>

</section>
    <section anchor="sec-ear">
      <name>EAT Attestation Result</name>
      <t>EAR is an EAT token which can be serialized as JWT <xref target="RFC7519"/> or CWT <xref target="RFC8392"/>.</t>
      <t>The EAR claims-set is as follows:</t>
      <figure anchor="fig-cddl-ear">
        <name>EAR (CDDL Definition)</name>
        <sourcecode type="cddl"><![CDATA[
;# import rfc9711 as eat
;# import ar4si as ar4si

EAR = {
  eat.profile-label => "tag:github.com,2023:veraison/ear"
  eat.iat-claim-label => int
  verifier-id-label => ar4si.verifier-id
  ? raw-evidence-label => eat.binary-data
  eat.submods-label => { + text => EAR-appraisal }
  ? eat.nonce-label => eat.nonce-type
  * $$ear-extension
}

; EAR-specific claims
raw-evidence-label = eat.JC<"ear.raw-evidence", 1002>
verifier-id-label = eat.JC<"ear.verifier-id", 1004>
]]></sourcecode>
      </figure>
      <t>Where:</t>
      <dl>
        <dt><tt>eat_profile</tt> (mandatory)</dt>
        <dd>
          <t>The EAT profile (<xref section="6" sectionFormat="of" target="I-D.ietf-rats-eat"/>) associated with the EAR claims-set
and encodings defined by this document.
It <bcp14>MUST</bcp14> be the following tag URI (<xref target="RFC4151"/>)
<tt>tag:github.com,2023:veraison/ear</tt>.</t>
        </dd>
        <dt><tt>iat</tt> (mandatory)</dt>
        <dd>
          <t>"Issued At" claim -- the time at which the EAR is issued.
See <xref section="4.1.6" sectionFormat="of" target="RFC7519"/> and <xref section="4.3.1" sectionFormat="of" target="I-D.ietf-rats-eat"/> for the
EAT-specific encoding restrictions (i.e., disallowing the floating point
representation).</t>
        </dd>
        <dt><tt>ear.verifier-id</tt> (mandatory)</dt>
        <dd>
          <t>Identifying information about the appraising verifier.
See <xref section="3.3" sectionFormat="of" target="I-D.ietf-rats-ar4si"/> for further details on its structure and serialization.</t>
        </dd>
        <dt><tt>ear.raw-evidence</tt> (optional)</dt>
        <dd>
          <t>The unabridged evidence submitted for appraisal, including any signed
container/envelope.
This field may be consumed by other Verifiers in multi-stage verification
scenarios or by auditors.
There are privacy considerations associated with this claim.  See
<xref target="sec-priv-cons"/>.</t>
        </dd>
        <dt><tt>submods</tt> (mandatory)</dt>
        <dd>
          <t>A submodule map (<xref section="4.2.18" sectionFormat="of" target="I-D.ietf-rats-eat"/>) holding one <tt>EAR-appraisal</tt> for
each separately appraised attester.
The map <bcp14>MUST</bcp14> contain at least one entry.
For each appraised attester the verifier chooses a unique label.
For example, when evidence is in EAT format, the label could be constructed
from the associated EAT profile.
A verifier <bcp14>SHOULD</bcp14> publicly and permanently document its labelling scheme for
each supported evidence type, unless EAR payloads are produced and consumed
entirely within a private deployment.
See <xref target="sec-ear-appraisal"/> for the details about the contents of an
<tt>EAR-appraisal</tt>.</t>
        </dd>
        <dt><tt>eat_nonce</tt> (optional)</dt>
        <dd>
          <t>A user supplied nonce that is echoed by the verifier to provide freshness.
The nonce is a sequence of bytes between 8 and 64 bytes long. When serialized
as JWT, the nonce <bcp14>MUST</bcp14> be base64 encoded, resulting in a string between 12 and
88 bytes long.
See <xref section="4.1" sectionFormat="of" target="I-D.ietf-rats-eat"/>.</t>
        </dd>
        <dt><tt>$$ear-extension</tt> (optional)</dt>
        <dd>
          <t>Any registered or unregistered extension.
An EAR extension <bcp14>MUST</bcp14> be a map.
See <xref target="sec-extensions"/> for further details.</t>
        </dd>
      </dl>
      <section anchor="sec-ear-appraisal">
        <name>EAR Appraisal Claims</name>
        <figure anchor="fig-cddl-ear-appraisal">
          <name>EAR Appraisal Claims (CDDL Definition)</name>
          <sourcecode type="cddl"><![CDATA[
;# import ar4si as ar4si

EAR-appraisal = {
  status-label => ar4si.trustworthiness-tier
  ? trustworthiness-vector-label => ar4si.trustworthiness-vector
  ? appraisal-policy-id-label => text
  * $$ear-appraisal-extension
}

status-label = eat.JC<"ear.status", 1000>
trustworthiness-vector-label = eat.JC<"ear.trustworthiness-vector", 1001>
appraisal-policy-id-label = eat.JC<"ear.appraisal-policy-id", 1003>
]]></sourcecode>
        </figure>
        <dl newline="true">
          <dt><tt>ear.status</tt> (mandatory)</dt>
          <dd>
            <t>The overall appraisal status for this attester represented as one of the four
trustworthiness tiers (<xref section="3.2" sectionFormat="of" target="I-D.ietf-rats-ar4si"/>).
The value of this claim <bcp14>MUST</bcp14> be set to a tier of no higher trust than the tier
corresponding to the worst trustworthiness claim across the entire
trustworthiness vector.</t>
          </dd>
          <dt><tt>ear.trustworthiness-vector</tt> (optional)</dt>
          <dd>
            <t>The AR4SI trustworthiness vector providing the breakdown of the appraisal for
this attester.
See <xref section="3.1" sectionFormat="of" target="I-D.ietf-rats-ar4si"/> for the details.
This claim <bcp14>MUST</bcp14> be present unless the party requesting Evidence appraisal
explicitly asks for it to be dropped, e.g., via an API parameter or similar
arrangement.  Such consumer would therefore rely entirely on the semantics of
the <tt>ear.status</tt> claim.  This behaviour is <bcp14>NOT RECOMMENDED</bcp14> because of the
resulting loss of quality of the appraisal result.</t>
          </dd>
          <dt><tt>ear.appraisal-policy-id</tt> (optional)</dt>
          <dd>
            <t>An unique identifier of the appraisal policy used to evaluate the attestation
result.</t>
          </dd>
          <dt><tt>$$ear-appraisal-extension</tt> (optional)</dt>
          <dd>
            <t>Any registered or unregistered extension.
An EAR appraisal extension <bcp14>MUST</bcp14> be a map.
See <xref target="sec-extensions"/> for further details.</t>
          </dd>
        </dl>
      </section>
      <section anchor="json-serialisation">
        <name>JSON Serialisation</name>
        <section anchor="examples">
          <name>Examples</name>
          <t>The example in <xref target="fig-ex-json-1"/> shows an EAR claims-set corresponding to a
"contraindicated" appraisal, meaning the verifier has found some problems with
the attester's state reported in the submitted evidence.
Specifically, the identified issue is related to unauthorized code or
configuration loaded in runtime memory (i.e., value 96 in the executables
category).
The appraisal is for a device with one attester labelled "PSA".  Note that in
case there is only one attester, the labelling can be freely chosen because
there is no ambiguity.</t>
          <figure anchor="fig-ex-json-1">
            <name>JSON claims-set: contraindicated appraisal</name>
            <sourcecode type="cbor-diag"><![CDATA[
{
  "eat_profile": "tag:github.com,2023:veraison/ear",
  "iat": 1666529184,
  "ear.verifier-id": {
    "developer": "https://veraison-project.org",
    "build": "vts 0.0.1"
  },
  "ear.raw-evidence": "NzQ3MjY5NzM2NTYzNzQK",
  "submods": {
    "PSA": {
      "ear.status": "contraindicated",
      "ear.trustworthiness-vector": {
        "instance-identity": 2,
        "executables": 96,
        "hardware": 2
      },
      "ear.appraisal-policy-id":
        "https://veraison.example/policy/1/60a0068d"
    }
  }
}
]]></sourcecode>
          </figure>
          <t>The breakdown of the trustworthiness vector is as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Instance Identity (affirming): recognized and not compromised</t>
            </li>
            <li>
              <t>Configuration (warning): known vulnerabilities</t>
            </li>
            <li>
              <t>Executables (contraindicated): contraindicated run-time</t>
            </li>
            <li>
              <t>File System (none): no claim being made</t>
            </li>
            <li>
              <t>Hardware (affirming): genuine</t>
            </li>
            <li>
              <t>Runtime Opaque (none): no claim being made</t>
            </li>
            <li>
              <t>Storage Opaque (none): no claim being made</t>
            </li>
            <li>
              <t>Sourced Data (none): no claim being made</t>
            </li>
          </ul>
          <t>The example in <xref target="fig-ex-json-2"/> contains the appraisal for a composite device
with two attesters named "CCA Platform" and "CCA Realm" respectively.
Both attesters have either "affirming" or (implicit) "none" values in their
associated trustworthiness vectors.
Note that the "none" values can refer to either an AR4SI category that is
unapplicable for the specific attester (ideally, the applicability should be
specified by the evidence format itself), or to the genuine lack of information
at the attester site regarding the specific category.  For example, the
reference values for the "CCA Realm" executables (i.e., the confidential
computing workload) may not be known to the CCA platform verifier.
In such cases, it is up to the downstream entity (typically, the relying party)
to complete the partial appraisal.</t>
          <figure anchor="fig-ex-json-2">
            <name>JSON claims-set: simple affirming appraisal</name>
            <sourcecode type="cbor-diag"><![CDATA[
{
  "eat_profile": "tag:github.com,2023:veraison/ear",
  "iat": 1666529300,
  "ear.verifier-id": {
    "developer": "https://veraison-project.org",
    "build": "vts 0.0.1"
  },
  "ear.raw-evidence": "NzQ3MjY5NzM2NTYzNzQKNzQ3MjY5NzM2NTYzNzQK",
  "submods": {
    "CCA Platform": {
      "ear.status": "affirming",
      "ear.trustworthiness-vector": {
        "instance-identity": 2,
        "executables": 2,
        "hardware": 2
      },
      "ear.appraisal-policy-id":
        "https://veraison.example/policy/1/60a0068d"
    },
    "CCA Realm": {
      "ear.status": "affirming",
      "ear.trustworthiness-vector": {
        "instance-identity": 2
      },
      "ear.appraisal-policy-id":
        "https://veraison.example/policy/1/60a0068d"
    }
  }
}
]]></sourcecode>
          </figure>
        </section>
      </section>
      <section anchor="cbor-serialisation">
        <name>CBOR Serialisation</name>
        <section anchor="examples-1">
          <name>Examples</name>
          <t>The example in <xref target="fig-ex-cbor-1"/> is semantically equivalent to that in
<xref target="fig-ex-json-1"/>.  It shows the same "contraindicated" appraisal using the
more compact CBOR serialization of the EAR claims-set.</t>
          <figure anchor="fig-ex-cbor-1">
            <name>CBOR claims-set: contraindicated appraisal</name>
            <sourcecode type="cbor-diag"><![CDATA[
{
  265: "tag:github.com,2023:veraison/ear",
  6: 1666529184,
  1004: {
    0: "https://veraison-project.org",
    1: "vts 0.0.1"
  },
  1002: h'6C696665626F61746D616E',
  266: {
    "PSA": {
      1000: 96,
      1001: {
        0: 2,
        2: 96,
        4: 2
      },
      1003: "https://veraison.example/policy/1/60a0068d"
    }
  }
}
]]></sourcecode>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="sec-extensions">
      <name>EAR Extensions</name>
      <t>EAR provides core semantics for describing the result of appraising attestation
evidence.
However, a given application may offer extra functionality to its relying
parties, or tailor the attestation result to the needs of the application (e.g.,
TEEP <xref target="I-D.ietf-teep-protocol"/>).
To accommodate such cases, both <tt>EAR</tt> and <tt>EAR-appraisal</tt> claims-sets can be
extended by plugging new claims into the <tt>$$ear-extension</tt> (or
<tt>$$ear-appraisal-extension</tt>, respectively) CDDL socket.</t>
      <t>The rules that govern extensibility of EAR are those defined in <xref target="RFC8392"/> and
<xref target="RFC7519"/> for CWTs and JWTs respectively.</t>
      <t>An extension <bcp14>MUST NOT</bcp14> change the semantics of the <tt>EAR</tt> and <tt>EAR-appraisal</tt>
claims-sets.</t>
      <t>A receiver <bcp14>MUST</bcp14> ignore any unknown claim.</t>
      <section anchor="unregistered-claims">
        <name>Unregistered claims</name>
        <t>An application-specific extension will normally mint its claim from the "private
space" - using integer values less than -65536 for CWT, and Public or
Private Claim Names as defined in Sections <xref target="RFC7519" section="4.2" sectionFormat="bare"/> and <xref target="RFC7519" section="4.3" sectionFormat="bare"/> of <xref target="RFC7519"/> when
serializing to JWT.</t>
        <t>It is <bcp14>RECOMMENDED</bcp14> that JWT EARs use Collision-Resistant Public Claim Names
(<xref section="2" sectionFormat="of" target="RFC7519"/>) rather than Private Claim Names.</t>
      </section>
      <section anchor="sec-registered-claims">
        <name>Registered claims</name>
        <t>If an extension will be used across multiple applications, or is intended to be
used across multiple environments, the associated extension claims
<bcp14>SHOULD</bcp14> be registered in one, or both, the CWT and JWT claim registries.</t>
        <t>In general, if the registration policy requires an accompanying specification
document (as it is the case for "specification required" and "standards
action"), such document <bcp14>SHOULD</bcp14> explicitly say that the extension is expected to
be used in EAR claims-sets identified by this profile.</t>
        <t>An up-to-date view of the registered claims can be obtained via the
<xref target="IANA.cwt"/> and <xref target="IANA.jwt"/> registries.</t>
      </section>
      <section anchor="choosing-between-registered-and-unregistered-claims">
        <name>Choosing between registered and unregistered claims</name>
        <t>If an extension supports functionality of a specific application (e.g.
Project Veraison Services), its claims <bcp14>MAY</bcp14> be registered.</t>
        <t>If an extension supports a protocol that may be applicable across multiple
applications or environments (e.g., TEEP), its claims <bcp14>SHOULD</bcp14> be registered.</t>
        <t>Since, in general, there is no guarantee that an application will be confined
within an environment, it is <bcp14>RECOMMENDED</bcp14> that extension claims that have
meaning outside the application's context are always registered.</t>
        <t>It is also possible that claims that start out as application-specific acquire
a more stable meaning over time. In such cases, it is <bcp14>RECOMMENDED</bcp14> that new
equivalent claims are created in the "public space" and are registered as
described in <xref target="sec-registered-claims"/>. The original "private space" claims
<bcp14>SHOULD</bcp14> then be deprecated by the application.</t>
      </section>
      <section anchor="sec-extensions-teep">
        <name>TEEP Extension</name>
        <t>The TEEP protocol <xref target="I-D.ietf-teep-protocol"/> specifies the required claims that an attestation
result must carry for a TAM (Trusted Application Manager) to make decisions on
how to remediate a TEE (Trusted Execution Environment) that is out of
compliance, or update a TEE that is requesting an authorized change.</t>
        <t>The list is provided in <xref section="4.3.1" sectionFormat="of" target="I-D.ietf-teep-protocol"/>.</t>
        <t>EAR defines a TEEP application extension for the purpose of conveying such claims.</t>
        <figure anchor="fig-cddl-teep">
          <name>TEEP Extension (CDDL Definition)</name>
          <sourcecode type="cddl"><![CDATA[
;# import rfc9711 as eat
;# import rfc9393

$$ear-appraisal-extension //= (
  ear.teep-claims-label => ear-teep-claims
)

ear-teep-claims = non-empty<{
  ? eat.nonce-label => eat.nonce-type
  ? eat.ueid-label => eat.ueid-type
  ? eat.oemid-label => eat.oemid-pen / eat.oemid-ieee / eat.oemid-random
  ? eat.hardware-model-label => eat.hardware-model-type
  ? eat.hardware-version-label => eat.hardware-version-type
  ? eat.manifests-label => eat.manifests-type
}>

ear.teep-claims-label = eat.JC<"ear.teep-claims", 65000>
]]></sourcecode>
        </figure>
        <section anchor="json-serialization-example">
          <name>JSON Serialization Example</name>
          <sourcecode type="cddl"><![CDATA[
{
  "eat_profile": "tag:github.com,2023:veraison/ear",
  "iat": 1666529184,
  "ear.verifier-id": {
    "developer": "https://veraison-project.org",
    "build": "vts 0.0.1"
  },
  "ear.raw-evidence": "NzQ3MjY5NzM2NTYzNzQK",
  "submods": {
    "PSA": {
      "ear.status": "contraindicated",
      "ear.trustworthiness-vector": {
        "instance-identity": 2,
        "executables": 96,
        "hardware": 2
      },
      "ear.appraisal-policy-id":
        "https://veraison.example/policy/1/60a0068d",
      "ear.teep-claims": {
        "eat_nonce": "80FH7byS7VjfARIq0_KLqu6B9j-F79QtV6p",
        "ueid": "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAh",
        "oemid": "Av8B",
        "hwmodel": "fJYq",
        "hwversion": ["1.2.5", 16384]
      }
    }
  }
}
]]></sourcecode>
        </section>
        <section anchor="cbor-serialization-example">
          <name>CBOR Serialization Example</name>
          <sourcecode type="cddl"><![CDATA[
{
  265: "tag:github.com,2023:veraison/ear",
  6: 1666529184,
  1004: {
    0: "https://veraison-project.org",
    1: "vts 0.0.1"
  },
  1002: h'6C696665626F61746D616E',
  266: {
    "PSA": {
      1000: 0,
      1001: {
        0: 2,
        1: 2,
        2: 2,
        4: 2
      },
      1003: "https://veraison.example/policy/1/60a0068d",
      65000: {
        10: h'948f8860d13a463e',
        256: h'0198f50a4ff6c05861c8860d13a638ea',
        258: 64242,
        259: h'ee80f5a66c1fb9742999a8fdab930893',
        260: ["1.2.5", 16384]
      }
    }
  }
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="sec-extensions-veraison">
        <name>Project Veraison Extensions</name>
        <t>The Project Veraison verifier defines three private, application-specific
extensions:</t>
        <dl newline="true">
          <dt><tt>ear.veraison.annotated-evidence</tt></dt>
          <dd>
            <t>JSON representation of the evidence claims-set, including any annotations
provided by the Project Veraison verifier.
There are privacy considerations associated with this claim.  See
<xref target="sec-priv-cons"/>.</t>
          </dd>
          <dt><tt>ear.veraison.policy-claims</tt></dt>
          <dd>
            <t>any extra claims added by the policy engine in the Project Veraison verifier.</t>
          </dd>
          <dt><tt>ear.veraison.key-attestation</tt></dt>
          <dd>
            <t>contains the public key part of a successfully verified attested key.
The key is a DER encoded ASN.1 SubjectPublicKeyInfo structure (<xref section="4.1.2.7" sectionFormat="of" target="RFC5280"/>).</t>
          </dd>
        </dl>
        <figure anchor="fig-cddl-veraison">
          <name>Project Veraison Extensions (CDDL Definition)</name>
          <sourcecode type="cddl"><![CDATA[
;# import rfc9711 as eat

$$ear-appraisal-extension //= (
  ear.veraison.annotated-evidence-label => ear-veraison-annotated-evidence
)

ear-veraison-annotated-evidence = {
  + text => any
}

$$ear-appraisal-extension //= (
  ear.veraison.policy-claims-label => ear-veraison-policy-claims
)

ear-veraison-policy-claims = {
  + text => any
}

$$ear-appraisal-extension //= (
  ear.veraison.key-attestation-label => ear-veraison-key-attestation
)

ear-veraison-key-attestation = {
  "akpub" => eat.binary-data
}

ear.veraison.annotated-evidence-label = eat.JC<"ear.veraison.annotated-evidence", -70000>
ear.veraison.policy-claims-label = eat.JC<"ear.veraison.policy-claims", -70001>
ear.veraison.key-attestation-label = eat.JC<"ear.veraison.key-attestation", -70002>
]]></sourcecode>
        </figure>
        <section anchor="json-serialization-examples">
          <name>JSON Serialization Examples</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
  "eat_profile": "tag:github.com,2023:veraison/ear",
  "iat": 1666529184,
  "ear.verifier-id": {
    "developer": "https://veraison-project.org",
    "build": "vts 0.0.1"
  },
  "ear.raw-evidence": "NzQ3MjY5NzM2NTYzNzQK",
  "submods": {
    "PSA_IOT": {
      "ear.status": "contraindicated",
      "ear.trustworthiness-vector": {
        "instance-identity": 2,
        "executables": 96,
        "hardware": 2
      },
      "ear.appraisal-policy-id":
        "https://veraison.example/policy/1/60a0068d",
      "ear.veraison.annotated-evidence": {
        "eat-profile": "http://arm.com/psa/2.0.0",
        "psa-client-id": 1,
        "psa-security-lifecycle": 12288,
        "psa-implementation-id":
          "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
        "psa-software-components": [
          {
            "measurement-value":
              "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
            "signer-id":
              "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA="
          },
          {
            "measurement-value":
              "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
            "signer-id":
              "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA="
          }
        ],
        "psa-nonce":
          "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
        "psa-instance-id":
          "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAh",
        "psa-certification-reference": "1234567890123-12345"
      },
      "ear.veraison.policy-claims": {
        "psa-certified": {
          "certificate-number": "1234567890123-12345",
          "date-of-issue": "23/06/2022",
          "test-lab": "Riscure",
          "certification-holder": "ACME Inc.",
          "certified-product": "RoadRunner",
          "hardware-version": "Gizmo v1.0.2",
          "software-version": "TrustedFirmware-M v1.0.6",
          "certification-type": "PSA Certified Level 1 v2.1",
          "developer-type": "PSA Certified – Device"
        }
      }
    }
  }
}
]]></sourcecode>
          <sourcecode type="cbor-diag"><![CDATA[
{
  "eat_profile": "tag:github.com,2023:veraison/ear",
  "iat": 1666529184,
  "ear.verifier-id": {
    "developer": "https://veraison-project.org",
    "build": "vts 0.0.1"
  },
  "ear.raw-evidence": "NzQ3MjY5NzM2NTYzNzQK",
  "submods": {
    "PARSEC_TPM": {
      "ear.status": "affirming",
      "ear.trustworthiness-vector": {
        "instance-identity": 2,
        "executables": 2,
        "hardware": 2
      },
      "ear.appraisal-policy-id":
        "https://veraison.example/policy/1/60a0068d",
      "ear.veraison.key-attestation": {
        "akpub":
          "MFkwEwYHKoZIzj0CAQYIKoZIz___"
      }
    }
  }
}
]]></sourcecode>
        </section>
        <section anchor="cbor-serialization-example-1">
          <name>CBOR Serialization Example</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
  265: "tag:github.com,2023:veraison/ear",
  6: 1666529184,
  1004: {
    0: "https://veraison-project.org",
    1: "vts 0.0.1"
  },
  1002: h'6C696665626F61746D616E',
  266: {
    "PSA_IOT": {
      1000: 0,
      1001: {
        0: 2,
        1: 2,
        2: 2,
        4: 2
      },
      1003: "https://veraison.example/policy/1/60a0068d",
      -70000: {
        "eat-profile": "http://arm.com/psa/2.0.0",
        "psa-client-id": 1,
        "psa-security-lifecycle": 12288,
        "psa-implementation-id":
          "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
        "psa-software-components": [
          {
            "measurement-value":
              "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
            "signer-id":
              "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA="
          },
          {
            "measurement-value":
              "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
            "signer-id":
              "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA="
          }
        ],
        "psa-nonce":
          "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
        "psa-instance-id":
          "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAh",
        "psa-certification-reference": "1234567890123-12345"
      },
      -70001: {
        "psa-certified": {
          "certificate-number": "1234567890123-12345",
          "date-of-issue": "23/06/2022",
          "test-lab": "Riscure",
          "certification-holder": "ACME Inc.",
          "certified-product": "RoadRunner",
          "hardware-version": "Gizmo v1.0.2",
          "software-version": "TrustedFirmware-M v1.0.6",
          "certification-type": "PSA Certified Level 1 v2.1",
          "developer-type": "PSA Certified – Device"
        }
      }
    }
  }
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="media-types">
      <name>Media Types</name>
      <t>Media types for EAR are automatically derived from the base EAT media type
<xref target="I-D.ietf-rats-eat-media-type"/> using the profile string defined in <xref target="sec-ear"/>.</t>
      <t>For example, a JWT serialization would use:</t>
      <artwork><![CDATA[
application/eat-jwt; eat_profile="tag:github.com,2023:veraison/ear"
]]></artwork>
      <t>A CWT serialization would instead use:</t>
      <artwork><![CDATA[
application/eat-cwt; eat_profile="tag:github.com,2023:veraison/ear"
]]></artwork>
    </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 catalog 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 anchor="project-veraison">
        <name>Project Veraison</name>
        <t>The organization responsible for this implementation is Project Veraison, a
Linux Foundation project hosted at the Confidential Computing Consortium.</t>
        <t>The organization currently provides two separate implementations: one in Golang
another in C17.</t>
        <t>The developers can be contacted on the Zulip channel:
<eref target="https://veraison.zulipchat.com/#narrow/stream/357929-EAR/"/>.</t>
        <section anchor="githubcomveraisonear">
          <name><tt>github.com/veraison/ear</tt></name>
          <t>The software, hosted at <eref target="https://github.com/veraison/ear"/>, provides a Golang
package that allows encoding, decoding, signing and verification of EAR
payloads together with a CLI (<tt>arc</tt>) to create, verify and visualize EARs on
the command line.
The maturity level is currently alpha, and only the JWT serialization is
implemented.
The license is Apache 2.0.
The package is used by the Project Veraison verifier to produce attestation
results.</t>
        </section>
        <section anchor="githubcomveraisonc-ear">
          <name><tt>github.com/veraison/c-ear</tt></name>
          <t>The software, hosted at <eref target="https://github.com/veraison/c-ear"/>, provides a C17
library that allows verification and partial decoding of EAR payloads.
The maturity level is currently pre-alpha, and only the JWT serialization is
implemented.
The license is Apache 2.0.
The library targets relying party applications that need to verify attestation
results.</t>
        </section>
        <section anchor="githubcomveraisonrust-ear">
          <name><tt>github.com/veraison/rust-ear</tt></name>
          <t>The software, hosted at <eref target="https://github.com/veraison/rust-ear"/>, provides a
Rust (2021 edition) library that allows verification and partial decoding of
EAR payloads. The maturity level is currently pre-alpha, with limitted
algorithm support.  Both JWT and COSE serializations are implemented.  The
license is Apache 2.0.  The library targets verifiers that need to produce
attestation results as well as relying party applications that need to verify
and consume attestation results.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="sec-priv-cons">
      <name>Privacy Considerations</name>
      <t>EAR is designed to expose as little identifying information as possible about
the attester.
However, certain EAR claims have direct privacy implications.
Implementations should therefore allow applying privacy-preserving techniques
to those claims, for example allowing their redaction, anonymisation or
outright removal.
Specifically:</t>
      <ul spacing="normal">
        <li>
          <t>It <bcp14>SHOULD</bcp14> be possible to disable inclusion of the optional <tt>ear.raw-evidence</tt>
claim</t>
        </li>
        <li>
          <t>It <bcp14>SHOULD</bcp14> be possible to disable inclusion of the optional
<tt>ear.veraison.annotated-evidence</tt> claim</t>
        </li>
        <li>
          <t>It <bcp14>SHOULD</bcp14> be possible to allow redaction, anonymisation or removal of
specific claims from the <tt>ear.veraison.annotated-evidence</tt> object</t>
        </li>
      </ul>
      <t>EAR is an EAT, therefore the privacy considerations in <xref section="8" sectionFormat="of" target="I-D.ietf-rats-eat"/>
apply.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="sec-iana-ear-claims">
        <name>New EAT Claims</name>
        <t>This specification adds the following values to the "JSON Web Token Claims"
registry <xref target="IANA.jwt"/> and the "CBOR Web Token Claims" registry <xref target="IANA.cwt"/>.</t>
        <t>Each entry below is an addition to both registries.</t>
        <t>The "Claim Description", "Change Controller" and "Specification Documents" are
common and equivalent for the JWT and CWT registries.
The "Claim Key" and "Claim Value Types(s)" are for the CWT registry only.
The "Claim Name" is as defined for the CWT registry, not the JWT registry.
The "JWT Claim Name" is equivalent to the "Claim Name" in the JWT registry.</t>
        <section anchor="ear-status">
          <name>EAR Status</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: ear.status</t>
            </li>
            <li>
              <t>Claim Description: EAR Status</t>
            </li>
            <li>
              <t>JWT Claim Name: ear.status</t>
            </li>
            <li>
              <t>Claim Key: 1000 (suggested)</t>
            </li>
            <li>
              <t>Claim Value Type(s): unsigned integer (0, 2, 32, 96)</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="sec-ear-appraisal"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="trustworthiness-vector">
          <name>Trustworthiness Vector</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: ear.trustworthiness-vector</t>
            </li>
            <li>
              <t>Claim Description: EAR Trustworthiness Vector</t>
            </li>
            <li>
              <t>JWT Claim Name: ear.trustworthiness-vector</t>
            </li>
            <li>
              <t>Claim Key: 1001 (suggested)</t>
            </li>
            <li>
              <t>Claim Value Type(s): map</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="sec-ear-appraisal"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="ear-raw-evidence">
          <name>EAR Raw Evidence</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: ear.raw-evidence</t>
            </li>
            <li>
              <t>Claim Description: EAR Raw Evidence</t>
            </li>
            <li>
              <t>JWT Claim Name: ear.raw-evidence</t>
            </li>
            <li>
              <t>Claim Key: 1002 (suggested)</t>
            </li>
            <li>
              <t>Claim Value Type(s): bytes</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="sec-ear"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="ear-appraisal-policy-identifier">
          <name>EAR Appraisal Policy Identifier</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: ear.appraisal-policy-id</t>
            </li>
            <li>
              <t>Claim Description: EAR Appraisal Policy Identifier</t>
            </li>
            <li>
              <t>JWT Claim Name: ear.appraisal-policy-id</t>
            </li>
            <li>
              <t>Claim Key: 1003 (suggested)</t>
            </li>
            <li>
              <t>Claim Value Type(s): text</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="sec-ear-appraisal"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="verifier-software-identifier">
          <name>Verifier Software Identifier</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: ear.verifier-id</t>
            </li>
            <li>
              <t>Claim Description: AR4SI Verifier Software Identifier</t>
            </li>
            <li>
              <t>JWT Claim Name: ear.verifier-id</t>
            </li>
            <li>
              <t>Claim Key: 1004 (suggested)</t>
            </li>
            <li>
              <t>Claim Value Type(s): map</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="sec-ear"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="ear-teep-claims">
          <name>EAR TEEP Claims</name>
          <t>TODO</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </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="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="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="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="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="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="6" month="February" year="2025"/>
            <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.

   This document also defines two serialisations of the proposed
   information model, utilising CBOR and JSON.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-ar4si-08"/>
        </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="I-D.ietf-teep-protocol">
          <front>
            <title>Trusted Execution Environment Provisioning (TEEP) Protocol</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Mingliang Pei" initials="M." surname="Pei">
              <organization>Broadcom</organization>
            </author>
            <author fullname="Dave Wheeler" initials="D. M." surname="Wheeler">
              <organization>Amazon</organization>
            </author>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Akira Tsukamoto" initials="A." surname="Tsukamoto">
              <organization>Openchip &amp; Software Technologies, S.L.</organization>
            </author>
            <date day="3" month="March" year="2025"/>
            <abstract>
              <t>   This document specifies a protocol that installs, updates, and
   deletes Trusted Components in a device with a Trusted Execution
   Environment (TEE).  This specification defines an interoperable
   protocol for managing the lifecycle of Trusted Components.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-teep-protocol-21"/>
        </reference>
        <reference anchor="I-D.ietf-rats-eat-media-type">
          <front>
            <title>EAT Media Types</title>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer Institute for Secure Information Technology</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="3" month="November" year="2024"/>
            <abstract>
              <t>   Payloads used in Remote Attestation Procedures may require an
   associated media type for their conveyance, for example when used in
   RESTful APIs.

   This memo defines media types to be used for Entity Attestation
   Tokens (EAT).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-media-type-12"/>
        </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="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>
        <reference anchor="RFC4151">
          <front>
            <title>The 'tag' URI Scheme</title>
            <author fullname="T. Kindberg" initials="T." surname="Kindberg"/>
            <author fullname="S. Hawke" initials="S." surname="Hawke"/>
            <date month="October" year="2005"/>
            <abstract>
              <t>This document describes the "tag" Uniform Resource Identifier (URI) scheme. Tag URIs (also known as "tags") are designed to be unique across space and time while being tractable to humans. They are distinct from most other URIs in that they have no authoritative resolution mechanism. A tag may be used purely as an entity identifier. Furthermore, using tags has some advantages over the common practice of using "http" URIs as identifiers for non-HTTP-accessible resources. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4151"/>
          <seriesInfo name="DOI" value="10.17487/RFC4151"/>
        </reference>
        <reference anchor="IANA.cwt" target="https://www.iana.org/assignments/cwt">
          <front>
            <title>CBOR Web Token (CWT) Claims</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.jwt" target="https://www.iana.org/assignments/jwt">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
      </references>
    </references>
    <?line 937?>

<section anchor="common-cddl-types">
      <name>Common CDDL Types</name>
      <dl newline="true">
        <dt><tt>non-empty</tt></dt>
        <dd>
          <t>A CDDL generic that can be used to ensure the presence of at least one item
in an object with only optional fields.</t>
        </dd>
      </dl>
      <sourcecode type="cddl"><![CDATA[
non-empty<M> = (M) .within ({ + any => any })
]]></sourcecode>
    </section>
    <section anchor="open-policy-agent-example">
      <name>Open Policy Agent Example</name>
      <t>Open Policy Agent <eref target="https://www.openpolicyagent.org">OPA</eref> is a popular and
flexible policy engine that is used in a variety of contexts, from cloud to
IoT.  OPA policies are written using a purpose-built, declarative programming
language called
<eref target="https://www.openpolicyagent.org/docs/latest/policy-language/">Rego</eref>.  Rego has
been designed to handle JSON claim-sets and their JWT envelopes as first class
objects, which makes it an excellent fit for dealing with JWT EARs.</t>
      <t>The following example illustrates an OPA policy that a Relying Party would use
to make decisions based on a JWT EAR received from a trusted verifier.</t>
      <sourcecode type="rego"><![CDATA[
package ear

ear_appraisal = {
    "verified": signature_verified,
    "appraisal-status": status,
    "trustworthiness-vector": trust_vector,
} {
    # verify EAR signature is correct and from one of the known and
    # trusted verifiers
    signature_verified := io.jwt.verify_es256(
        input.ear_token,
        json.marshal(input.trusted_verifiers)
    )

    # extract the EAR claims-set
    [_, payload, _] := io.jwt.decode(input.ear_token)

    # access the attester-specific appraisal record
    app_rec := payload.submods.PARSEC_TPM
    status := app_rec["ear.status"] == "affirming"

    # extract the trustworhiness vector for further inspection
    trust_vector := app_rec["ear.trustworthiness-vector"]
}

# add further conditions on the trust_vector here
# ...
]]></sourcecode>
      <t>The result of the policy appraisal is the following JSON object:</t>
      <sourcecode type="json"><![CDATA[
{
    "ear_appraisal": {
        "appraisal-status": true,
        "trustworthiness-vector": {
            "executables": 2,
            "hardware": 2,
            "instance-identity": 2
        },
        "verified": true
    }
}
]]></sourcecode>
      <t>For completeness, the trusted verifier public key and the EAR JWT used in the
example are provided below.</t>
      <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================
{
    "ear_token": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJlYXIucmF3L\
WV2aWRlbmNlIjoiTnpRM01qWTVOek0yTlRZek56UUsiLCJlYXIudmVyaWZpZXItaWQiO\
nsiYnVpbGQiOiJ2dHMgMC4wLjEiLCJkZXZlbG9wZXIiOiJodHRwczovL3ZlcmFpc29uL\
XByb2plY3Qub3JnIn0sImVhdF9wcm9maWxlIjoidGFnOmdpdGh1Yi5jb20sMjAyMzp2Z\
XJhaXNvbi9lYXIiLCJpYXQiOjEuNjY2NTI5MTg0ZSswOSwianRpIjoiNTViOGIzZmFkO\
GRkMWQ4ZWFjNGU0OGYxMTdmZTUwOGIxMWY4NDRkOWYwMTg5YmZlZDliODc1MTVhNjc1N\
DI2NCIsIm5iZiI6MTY3NzI0Nzg3OSwic3VibW9kcyI6eyJQQVJTRUNfVFBNIjp7ImVhc\
i5hcHByYWlzYWwtcG9saWN5LWlkIjoiaHR0cHM6Ly92ZXJhaXNvbi5leGFtcGxlL3Bvb\
GljeS8xLzYwYTAwNjhkIiwiZWFyLnN0YXR1cyI6ImFmZmlybWluZyIsImVhci50cnVzd\
HdvcnRoaW5lc3MtdmVjdG9yIjp7ImV4ZWN1dGFibGVzIjoyLCJoYXJkd2FyZSI6Miwia\
W5zdGFuY2UtaWRlbnRpdHkiOjJ9LCJlYXIudmVyYWlzb24ua2V5LWF0dGVzdGF0aW9uI\
jp7ImFrcHViIjoiTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFY2pTc\
DhfTVdNM2d5OFR1Z1dPMVRwUVNqX3ZJa3NMcEMtZzhsNVMzbHBHYjdQV1dHb0NBakVQO\
F9BNTlWWndMWGd3b1p6TjBXeHVCUGpwYVdpV3NmQ1EifX19fQ.3Ym-f1LEgamxePUM7h\
6Y2RJDGh9eeL0xKor0n1wE9jdAnLNwm3rTKFV2S2LbqVFoDtK9QGalT2t5RnUdfwZNmg\
",
    "trusted_verifiers": {
        "keys": [
            {
                "alg": "ES256",
                "crv": "P-256",
                "kty": "EC",
                "x": "usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8",
                "y": "IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4"
            }
        ]
    }
}
]]></artwork>
    </section>
    <section anchor="open-issues">
      <name>Open Issues</name>
      <t><cref>Note to RFC Editor: please remove before publication.</cref></t>
      <t>The list of currently open issues for this documents can be found at
<eref target="https://github.com/thomas-fossati/draft-ear/issues"/>.</t>
    </section>
    <section anchor="document-history">
      <name>Document History</name>
      <t><cref>Note to RFC Editor: please remove before publication.</cref></t>
      <section anchor="draft-fv-rats-ear-00">
        <name>draft-fv-rats-ear-00</name>
        <t>Initial release.</t>
      </section>
      <section anchor="draft-fv-rats-ear-01">
        <name>draft-fv-rats-ear-01</name>
        <ul spacing="normal">
          <li>
            <t>privacy considerations</t>
          </li>
          <li>
            <t>OPA policy example</t>
          </li>
          <li>
            <t>add rust-ear crate to the implementation status section</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-fv-rats-ear-02">
        <name>draft-fv-rats-ear-02</name>
        <ul spacing="normal">
          <li>
            <t>align JWT and CWT representations of eat_nonce</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Many thanks to
Dave Thaler,
Greg Kostal,
Simon Frost,
Yogesh Deshpande
for helpful comments and discussions that have shaped this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
h1PBU6IdXXVD2YqZiZvWhPLA7cBSELLyQ4pgHTCANUkX7Yxc4fT0y1q8jWyc
yqhpdQEVdXLHZTlB4ZiXOoAg0dQK0vgg8DGlx38s1odnrKRvbJS2KExI8emP
+qHKssoEeJr6JP9Q75/Nd6IXH9UX9KwnNecrHeOh78/pSSn4gUWA7URG2HF9
RoVyeTaGTCDHKC48pueLa2Bbb5gboCshJer8o4gbG62V9GjV9cNpUkX00Lef
sqNaLMxVnfAoHnNvRbZSk35MJ12l1quWAoqu5qiv9RW+uYMNfvhY1gGgMvv4
kwEahYnESgGWdFxOd2xyhRMrZlGKtKY1HrdQH3j4EX7iFGpG/RGmapbZJlEm
jx+hoerzg5nl9hN788ZMdFu2Ur3/+fqqZhVp15cVhgKfupt0sTDxM9T0E97x
eIXeWzqqjdWi1fGVn0GiB6YDtlesWq1KGd0fF791qfgyV0E577eSeJHCQh4U
E1VYinlyPFXIg1vkGTyWM5I/viJLUE7yXCZgLuVhyauXavPlcoBMIUDfPpc5
Biq/AM/vdTVKBLScYdpgP/NymHbYkQNQbmm1hAe9aZBJfldFXbZD91xKLutN
/n9Ye2p/i33z4zd0mgDqCTBLAS6Ys3ewyzZftxus0OmNuUHESZhlIeZvx4ND
2z113x5cPHbqXbcTd/zehr3baXXuwg+Xu2/bVWjkXX/oTO3JQfP4R+vqssGv
et5g0vU6t4Hb98PeSa3+81X/8lTc1eZ9r3cj7jZaFxexe7wrezqTyzm/uglv
PnQSfvXePf3RAo/y2r8MB4fvcfKGc3QyOtldnx3f7mOvu5sPN97gsD2DHvg+
cI56M/sxuD9u3ngAR2g32lOA5cPOfNAIvevm++mg+dbv+LW4M7kcOwftmT1p
T/jVA8HoHB74pxMndA7H9Wt343bQqMUnt9vzk8ewcQOjvB3zD937gdtGaHH+
8PoDwHW7P+3eXje6/c7GSX9UuzmPZ6fnM5f7vRBH7fYv3dPDzuPN5OAOVnTY
uzu5er9+c3Vw2z28qJ0eXj+c9J3JTf9iBq0eTq6u17t7vbvTq+sZjLZxPbnx
bvY893TPrp/0L8fdW7ve/dHa6zS6u7AJkw33xu20TvrXze5jp9Z9HDVxbrt5
6Q6u2nf2vNOCfXn//vJtv3fRHV4e7HQ7t+FrXL39o+VujO2jnfn1lfd4fTVL
7MN2zK+6G8dX3h1Czo96NfvopHU8bzdu0tVveOLwANo+eMfNnfsBrMi7Feeb
D8eP17Pr/vasezu+67gzF1Y4P/a7tesPvTrC0ZkcTG4m3nxw5U1v5h3aAdvd
qNn+5aPzo3Xk3Nt+L+BXG57dPEmAFm6dw/ZcQQv46tZhf9zB4eUjwDYH7AfX
H97eOY2D+c05YABm5EB1G4/QanrduEiI+mAPnKM72KO3bZPKcMWDxvqUNy5h
tQc1B0aFfjV+1Z52frRozoPIPrp0iXYvbiKndtm8uhgfD+rhWzEJZu9rB72r
Cy/93ds/6F3Xer2b2sHBdSPsA3b3xsP+pdM9aTgbpwe9+k3dOTu57M0uLrs/
f2jevOXN7om9f5LcPI7j7uXJ4+Bo5+j61nl/WXeOBrXuDr+7fA/0ctDe6fa9
qyvfObk6dJowX6t/u/NBHF3uXhyGs+tLJ7xsdifv6/vu8EO9PXxfbV5PKsP6
8f6ITx7E2cXJ6/GPVuu60Xu7dzhuC3Fce3gXRDW/Pttv3zrb/nF3NmlG/XcH
l43zxvHg58uDYC95135/yL1+I9no+RfOcHbTnYx+tEqm2WIq87wEB0lWTPws
JktKSe+NULrsn4NVUch2pPd2dE85XpVn3t+RYC7t7y57+YCvpvHVw9G7xtlk
6B+9m304O99Yn9Tu+vbh23btwh15V+4hHyd85N9vLhuDhu/snB5Xdps7SXLp
3o8q3nkkts9vw7sksePHSj0avB4k747vN/c/rJdyQxjZlXm9oFwe+nIf+IDf
2ZEYfi+LWFNeDtunD69tsVBm51A4HNMxKGYt1YUsHfTdGvU1yt2g25IehKHf
IL+zYHzTJsv20J8hoO8+8MRafs6XjIMJjytD/DJu4q5RBhE6uGtyYDq8T31g
dgRABNH891kVeMxyuuG9/PouRiFqNawj59IZYSRorOpzTesYeFge4IcXhoOh
lCs8RDNJn2gymzIodKpJPtVDWX8qQ+s5CBoIAThBI78Qszav3MfyU82qHAfi
c9tGqx3cwRFtFXj7MuVUOG9KQ+7FogQ23Qn60Vh48I5SfPbwKKwPJrcAl+EQ
/Bj2LgAgvbJ17mJI4SCCn2XrOhiJeIyhlnEI4AhrSBafFw6nHuUfEG0goA5m
ocZxdtRIh21g1IfoSOY/ePn/AR44DxKKhgAA

-->

</rfc>
