<?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.23 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-fv-rats-ear-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.26.0 -->
  <front>
    <title abbrev="EAR">EAT Attestation Results</title>
    <seriesInfo name="Internet-Draft" value="draft-fv-rats-ear-05"/>
    <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="February" day="06"/>
    <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-fv-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</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</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</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</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</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">
         </author>
            <date day="5" month="November" year="2024"/>
            <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-20"/>
        </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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
MlwEBQuuwY4EN84mSjLxhSmNhZTNo3xqeyGxWJ7tLIpn8DXo5FhdCkiVoR46
LzCTMcX1Ma0F1DdBpEJBBnokJ5IdltqnC+aptM+kYUNNUzpPbTfNa+rqi5Z2
uS1Ckls4SwNmiDF5P4rmKi7Y3z5hK310YjGz0KDRE+5z0PF0x2LC73BltisN
ahgOHDB5+YJu9CV4WAawZiPJoC2Os58R9GqaZIOUEwwpquS5nDgJz+pCJxtK
NzXOa+nmR3ZmRLaWsgBBrVNrZdQXEuaznEaJP3XvR18f4hLPJodmLKYjZuE0
CgN5iGrjdQWppIhyCevVX5WzjC+a7aZlPWv2srW1t2yFUoOjKt23VMrFyPWN
KsYLa9WyCo/YW8wjqohJmMy///LNOcOy1VSYiSnpk1ybQEyKjeSjELhhzfjt
ChCF5gOQjk4wSQfSgZ8K+CLCy49YeJcDIH0HAoUMu+U99dtcX7DP3SGQVpzv
lD2m1k8/EFqXbUE+fSZ7Xyqz1gal3ywkvGAr7dgW5MDyDJdXhRNlFaxQkZaM
5v48Jfz3PCXML8ugwdxa0lRIxMxm7eDozWB+/ubydrjd6/xS+/T++Jdpa6d9
Wzl40/6QXLbCkrEY5Hrstv2hs7ezfXG4Mxu92x3FJ3sf1s/2d/bP9x8+XB6M
7evDXjA42qmJo/n22OxP/E4D3G/umC/GM2JofDV8d/1L/pXiWHj5Y6lebVQ3
MIms1dxc/1kjdCGCRLxihiZf4pV/lSBe7dtiePViRK/xjw7o6Z4k+UxAsJrB
+HV7fXO4udmqOfUmX281xWsDmo0WtqjV25vDjRpfHw5bdm1js1W3dQfYd8Fz
PTa3WGu9sW6uaaONowixWRtu8FbLrg8H7TfrjXa7zTeHDh+0m7XNdtMcpVX7
ddTFFvyYF6KMFY0zZcot9E0TcrJbzJEQOj+6vNSstrLxtxayH9NN4j5dIQRT
Nr2iYG1JLZK/fJFdJVanlZn/WryWoMakK5mpkaUs3GeX9oddJ8gtV4lQCTuu
FOGVAVbtJzgGtCrwIPwRnr4qt+GFJRRmuxPzimFY43y5g3flf+Cty5CcJPKN
pzZebh5OMdqmhk4vFDjYuJre1aRM8r39ns72ZtvnXbBez6cDhFCGq96Leccf
BsZNlSxmZeH9nkb1Ddm7WDaEYr1fN06/0RR9gcrypmkqDRcbalP1hSYqOTu7
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
vZeZqWldJw9cByznIKs3pAjWTj+sSbpZZ+TOpidY1uKNYuNkRU2ri6Co0zcu
SwIKx7yYAQSJ5lKQxviAjynF/VOxxjtjJX3rorRFoT6KMX/SD1WmVCao0/Ql
+Yd6/2zOEr34pL6CZz2pOV/pOA19Q05PSgEMLORrJzJKjuszqozL8y1kAjlG
ceExPV9cA9t6y9wA3QEpReefRNzYaK2kx6OuH06TKqKHvt+UHbdica3qhEfx
mHsrspWa9FM66Sq1XrUUUHS9Rn1xr/DdHGzw46eyDuKU2aefDdAo1CNWCrCk
43K6J5MrflgxC0ukdanxyIT6wMNP8BOnUDPqDylVs+w0iTJ5hAgNVZ8fzUy1
n9nbt2ay2rKV6v3P10g1K0G7vqwSFPjU3aSLhYmfoaaf8Z7GK/TA0lFtrPis
jqD8DBI9MB2SvWLValXK6P64+L1KxZe5Ksh535PEixQW8rCXqMJSzJPjqUIu
2yLP4NGakcDxDZl+cpLnsvlyaQtLXr1UXy+Xx2MKAfp+ucwTUDkCeAavK0oi
oOUM0wb7mRe8tNONHIByS6slPKxNA0Xy2yjqwhy62FJyWW/z/8P6Uftb7PVP
r+lEANQTYJaCVDBn72CXbb5pN1ih01tzg4iTMFNCzN+NB4e2e+q+O7h47NS7
bifu+L0Ne7fT6tyFHy9337Wr0Mi7/tiZ2pOD5vFP1tVlg1/1vMGk63VuA7fv
h72TWv2Xq/7lqbirzfte70bcbbQuLmL3eFf2dCaXc351E9587CT86oN7+pMF
HuK1fxkODj/g5A3n6GR0srs+O77dx153Nx9vvMFhewY98H3gHPVm9mNwf9y8
8QCO0G60pwDLx535oBF6180P00Hznd/xa3Fncjl2Dtoze9Ke8KsHgtE5PPBP
J07oHI7r1+7G7aBRi09ut+cnj2HjBkZ5N+Yfu/cDt43Q4vzh9UeA63Z/2r29
bnT7nY2T/qh2cx7PTs9nLvd7IY7a7V+6p4edx5vJwR2s6LB3d3L1Yf3m6uC2
e3hROz28fjjpO5Ob/sUMWj2cXF2vd/d6d6dX1zMYbeN6cuPd7Hnu6Z5dP+lf
jru3dr37k7XXaXR3YRMmG+6N22md9K+b3cdOrfs4auLcdvPSHVy17+x5pwX7
8uHD5bt+76I7vDzY6XZuwze4evsny90Y20c78+sr7/H6apbYh+2YX3U3jq+8
O4ScH/Vq9tFJ63jebtykq9/wxOEBtH3wjps79wNYkXcrzjcfjh+vZ9f97Vn3
dnzXcWcurHB+7Hdr1x97dYSjMzmY3Ey8+eDKm97MO7QDtrtRs/3LR+cn68i5
t/1ewK82PLt5kgAt3DqH7bmCFvDVrcP+uIPDy0eAbQ7YD64/vrtzGgfzm3PA
AMzIgeo2HqHV9LpxkRD1wR44R3ewR+/aJpXhigeN9SlvXMJqD2oOjAr9avyq
Pe38ZNGcB5F9dOkS7V7cRE7tsnl1MT4e1MN3YhLMPtQOelcXXvq7t3/Qu671
eje1g4PrRtgH7O6Nh/1Lp3vScDZOD3r1m7pzdnLZm11cdn/52Lx5x5vdE3v/
JLl5HMfdy5PHwdHO0fWt8+Gy7hwNat0dfnf5AejloL3T7XtXV75zcnXoNGG+
Vv9256M4uty9OAxn15dOeNnsTj7U993hx3p7+KHavJ5UhvXj/RGfPIizi5M3
45+s1nWj927vcNwW4rj28D6Ian59tt++dbb94+5s0oz67w8uG+eN48EvlwfB
XvK+/eGQe/1GstHzL5zh7KY7Gf1klUyzxVTmeQkOkqyYvFlMeJSS3huhdNk/
B6uikLFI7+3onvK0Ks+8vyPBXNrfXfbyAV9N46uHo/eNs8nQP3o/+3h2vrE+
qd317cN37dqFO/Ku3EM+TvjIv99cNgYN39k5Pa7sNneS5NK9H1W880hsn9+G
d0lix4+VejR4M0jeH99v7n9cL+WGMDIk83pBuTz09T3wAb+3IzH8QRaiptwa
tk8fT9tiocywoZA2plRQ3FmqC1n+5/s16muUrEG3JT3MQr9BfivB+C5NlrGh
PyVA327gibX8rC4ZBxMeV4b4ddvEXaMsIHRw1+TAdACf+sDsCIAIovk/ZlXg
McvphvfyC7oYeajVsBacS+d8kaCxqs81rWOwYXmQHl4YDoZSrvAQzSR9Ksls
yoLQ6SL5dA1l/aksq+cgaCAE4ASN/ELc2bw2H8vPLauSGojPbRutdnAHR7RV
4O3LtFHhvC0NuReLEth0J+hHY/HAO0rT2cPjrD6Y3AJchkPwY9j7AID0yta5
iyGFgwh+lq3rYCTiMYZXxiGAI6whWXxeOJx6lENAtIGAOphJGsfZcSEdmIFR
H6Ijmf9o5f8DPCvR/EyGAAA=

-->

</rfc>
