<?xml version="1.0" encoding="utf-8"?>

<?xml-model href="rfc7991bis.rnc"?>  <!-- Required for schema validation and schema-aware editing -->
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- This third-party XSLT can be enabled for direct transformations in XML processors, including most browsers -->

<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<!-- If further character entities are required then they should be added to the DOCTYPE above.
     Use of an external entity file is not recommended. -->
<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="info"
  docName="draft-kykdxy-rats-tdx-cgpu-ear-profile-01"
  ipr="trust200902"
  obsoletes=""
  updates=""
  submissionType="independent"
  xml:lang="en"
  version="3">
  <front>
    <title abbrev="TDX+C-GPU EAR profile">EAT Attestation Result (EAR) profile for Intel® Trust Domain Extensions (TDX) + Confidential GPU (C-GPU) composite attestation</title>
    <seriesInfo name="Internet-Draft" value="draft-kykdxy-rats-tdx-cgpu-ear-profile-01"/>
    <author fullname="Greg Kostal" initials="G." surname="Kostal">
      <organization>Microsoft</organization>
      <address>
        <email>gkostal@microsoft.com</email>  
      </address>
    </author>
    <author fullname="Raghuram Yeluri" initials="R." surname="Yeluri">
      <organization>Intel</organization>
      <address>
        <email>raghuram.yeluri@intel.com</email>  
      </address>
    </author>
   <author fullname="Dhawal Kumar" initials="D." surname="Kumar">
      <organization>Nvidia</organization>
      <address>
        <email>dkumar@nvidia.com</email>  
      </address>
    </author>
    <author fullname="Sindhuri Dittakavi" initials="S." surname="Dittakavi">
      <organization>Microsoft</organization>
      <address>
        <email>sindhuri.dittakavi@microsoft.com</email>  
      </address>
    </author>
    <author fullname="Haidong Xia" initials="H." surname="Xia">
      <organization>Intel</organization>
      <address>
        <email>haidong.xia@intel.com</email>  
      </address>
    </author>
    <author fullname="Jerry Yu" initials="J." surname="Yu">
      <organization>Intel</organization>
      <address>
        <email>jerry.yu@intel.com</email>  
      </address>
    </author>
    <date year="2026"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines an Entity Attestation Token (EAT) Attestation Result (EAR) profile for the composite attestation of Intel® Trust Domain Extensions (TDX)–based Confidential Virtual Machines (CVMs) together with confidential NVIDIA GPUs (C-GPUs) deployed in Microsoft Azure. The profile outlines claims that enable relying parties to establish trust in the integrity and confidentiality of the combined confidential computing environment. Developed collaboratively by Microsoft, Intel, and NVIDIA, this work is intended to foster interoperable composite attestation across heterogeneous Trusted Execution Environments (TEEs) and confidential accelerators, while encouraging adoption and extension by verifier providers across the confidential computing ecosystem.</t>
    </abstract>
  </front>
  <middle>   
    <section>
      <name>Introduction</name>
      <t>This document defines an Entity Attestation Token <xref target="EAT"/> Attestation Result (EAR) profile for composite attestation of an Intel® Trust Domain Extensions <xref target="TDX"/>–based Confidential Virtual Machine (CVM) together with one or more Nvidia confidential GPUs (C-GPUs) running in Azure. It addresses scenarios where a relying party must verify that all components of a confidential compute workload—CPU, guest VM, and accelerators—are cryptographically bound and jointly trusted before releasing sensitive information such as secrets or cryptographic keys. The profile assumes a composite attestation model, where multiple hardware-backed attesters contribute evidence that is verified and consolidated by a verifier. Successful verification ensures that the components form a single, unified trust domain, preventing substitution or partial compromise. The base scenario deliberately adopts an “all‑or‑nothing” trust semantic: a relying party is expected to release secrets only when the verifier has established that all components included in the composite attestation are bound and trusted. The profile does not attempt to model partial trust graphs, or workload‑specific data‑flow constraints.</t>

<t>The objective of this profile is to provide a stable attestation result format for confidential AI deployments by defining a consistent set of claims that relying parties can process uniformly. In these environments, multiple relying parties often operate under different business and regulatory requirements, which may require the use of multiple verifiers. Without a common structure, relying parties would need to interpret diverse attestation result formats and verifier-specific claims. The Composite EAR Profile removes this complexity by defining a unified attestation result structure, allowing relying parties to evaluate results against their policies without custom parsing or translation. The profile is designed to support consistent outputs across verifiers while remaining flexible enough to incorporate future confidential computing technologies and trust signals without disrupting existing deployments.</t>
    </section>
    <section>
        <name>Requirements Language</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
          "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
          RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
          interpreted as described in BCP 14 <xref target="RFC2119"/>
          <xref target="RFC8174"/> when, and only when, they appear in
          all capitals, as shown here.</t>
    </section>
 <section>
        <name>Scenario overview</name>
       <t>The canonical scenario allows a Relying Party to verify the integrity of a CVM and its associated hardware before releasing secrets. The CVM consists of confidential-computing–enabled CPUs and one or more confidential GPUs provisioned at deployment and assumed to remain static throughout its lifecycle. These components collectively form the CVM’s Trusted Compute Base (TCB), and any secrets released by the RP may be accessed only within this verified TCB.</t>
<t>The RP must verify the trustworthiness of the CPU, the CVM boot flow, and the attached confidential GPUs. To support this, the Composite token provides:</t>
       <dl newline="true">
 	<dt></dt>
          <dd>1. an aggregate trust claim confirming that secrets remain confined to the verified TCB</dd>
          <dt></dt>
          <dd>2. an ephemeral provisioning key for secure secret delivery, and</dd>
          <dt></dt>
          <dd>3. detailed per-component appraisal data for inspection and troubleshooting.</dd>
         </dl>
<t>The composite attestation relies on foundational trust assumptions. The trust model assumes a static TCB after provisioning. Any out-of-band changes—such as hot-plugging a new GPU—violate the trust contract and must be blocked, as the composite attestation result reflects the security state only at the time of evidence collection and does not support asynchronous updates without full re-attestation. Additionally, it is assumed that to prevent lateral data leakage, each GPU within the TCB confines any secrets released by the relying party to its own isolated execution environment. Confidential data sharing with other GPUs over peer-to-peer interfaces (e.g., NVLink) is assumed to be disallowed as part of this trust model.</t>
    </section>

<section>
<name>EAR claims for TDX + C-GPU composite attestation</name>

<section>
<name>JWT claims</name>
<t>The following claims are reused from the IETF <xref target="JWT"/> specification. The complete definitions of the claims are available in the JSON Web Token (JWT) specification.</t>
         <dl newline="true">
          <dt>iat</dt>
          <dd>The "iat" (issued at) claim identifies the time at which the JWT was issued.</dd>
          <dt>iss</dt>
          <dd>The "iss" (issuer) claim identifies the principal that issued the JWT.</dd>
          <dt>jti</dt>
          <dd>The "jti" (JWT ID) claim provides a unique identifier for the JWT.</dd>
          <dt>nbf</dt>
          <dd>The "nbf" (not before) claim identifies the time before which the JWT MUST NOT be accepted for processing.</dd>
          <dt>exp</dt>
          <dd>The "exp" (expiration time) claim identifies the expiration time on or after which the JWT MUST NOT be accepted for processing.</dd>
         </dl>
</section>

<section>
<name>EAT claims</name>
<t>The following claims are reused from the EAT specification. The complete definitions of the claims are available in the EAT specification.</t>
         <dl newline="true">
          <dt>eat_profile</dt>
          <dd>The "eat_profile" claim identifies an Entity Attestation Token (EAT) profile by either a URL or an OID.</dd>
          <dt>eat_nonce (optional)</dt>
          <dd>An EAT nonce is either a byte or text string or an array of byte or text strings representing verifier response freshness. The array option supports multistage EAT verification and consumption.</dd>
           </dl>
</section>

<section>
<name>EAR claims</name>
<t>The following claims are reused from the IETF draft EAT Attestation Results (EAR) message format. The complete definitions of the claims are available here)</t>
<dl newline="true">
<dt>ear_status</dt>
          <dd>The string represents the aggregated appraisal status across all attesters, reflecting the composite attestation result. (check the latest defn in EAR profile V4. Current preference is to reflect the min baseline of all)</dd> <dt></dt>
          <dd></dd>
<dt>ear_verifier_id</dt>
          <dd>The strings represents identifying information about the software and organizational unit that performed the attestation appraisal.</dd>
<dt>ear_raw_evidence (optional)</dt>
          <dd>The strings represents the unabridged evidence submitted for appraisal, including any signed container or envelope.</dd>
<dt>ear_all_submods_bound (optional)</dt>
          <dd> A string value indicating whether all submod components in the EAR token are provably bound to each other ("true", "false", "unknown").</dd>
<dt>ear_evidence_nonce (optional)</dt>
          <dd>if all submods share the same value for eat_nonce, the value may be replicated as a top level claim</dd>
<dt>submods</dt>
          <dd>A submodule map holding one EAR-appraisal for each separately appraised attester.</dd>
<dt>ear_status</dt>
          <dd>The strings represents the appraisal status for an attester as one of the defined trustworthiness tiers.</dd>
<dt>eat_profile (optional)</dt>
          <dd>The "eat_profile" claim identifies an Entity Attestation Token (EAT) profile by either a URL or an OID.</dd>
<dt>eat_nonce (optional)</dt>
          <dd>The claim represents evidence freshness</dd>
<dt>ear_trustworthiness_vector</dt>
          <dd>The AR4SI trustworthiness vector giving a breakdown of appraisal values for an attester.</dd>
<dt>ear_appraisal_policy_ids** (optional)</dt>
          <dd>A list of one or more unique identifiers for appraisal policies used to evaluate the attestation results.</dd>
<dt>ear_evidence_claims</dt>
          <dd>A JSON object containing the normalized, attester-reported evidence claims that the verifier accepted as input to its appraisal of this submod. The contents are organized as a flat or nested map of named claims defined by the submod's profile (for TDX, see section 3.4; for the CVM guest, see section 3.5; for C-GPU, see section 3.6). Values in this object originate from the attester (or are derived directly from attester-supplied evidence) and are reproduced here verbatim after parsing and schema validation; the verifier does not add appraisal verdicts, reference-value comparisons, or trust judgements to claims under this object.</dd>
<dt>ear_verifier_claims</dt>
          <dd>A JSON object containing claims that are produced by the verifier itself as a result of appraising this submod. These claims are not present in the attester evidence and are added by the verifier to convey appraisal context, reference-data state, and verifier-derived dispositions.</dd>
<dt>ear_managed_keysets (optional)</dt>
          <dd>A JSON object that carries one or more named key sets extracted from the attestation evidence by the verifier on behalf of the attester, intended for use by the relying party (for example, to deliver secrets into the verified Trusted Compute Base). Each property of the object is a key-set name (e.g., ephemeral-transfer-keys) whose value is an array of JSON Web Keys (JWKs, per RFC 7517).</dd>
         </dl>
</section>

<section>
<name>TDX claims</name>
<section>
<name>ear_evidence_claims</name>
 <t>The following attester-reported claims appear as named members of the tdx submod's ear_evidence_claims container:</t>
  <dl newline="true">
 <dt>tdx_mrconfigid</dt>
          <dd>The hexadecimal string represents a byte array of length 48, which contains the software-defined ID for non-owner-defined configuration of the TDX, e.g., runtime or OS configuration.</dd>
<dt>tdx_mrowner</dt>
          <dd>The hexadecimal string represents a byte array of length 48, which contains the software-defined ID for the TDX’s owner.</dd>
<dt>tdx_mrownerconfig</dt>
          <dd>The hexadecimal string represents a byte array of length 48, which contains the software-defined ID for owner-defined configuration of the TDX, e.g., specific to the workload rather than the runtime or OS.</dd>
<dt>tdx_mrseam</dt>
          <dd>The hexadecimal string represents a byte array of length 48, which contains the measurement of the Intel TDX module.</dd>
<dt>tdx_mrsignerseam</dt>
          <dd>The hexadecimal string represents a byte array of length 48, which contains the measurement of the TDX module signer.</dd>
<dt>tdx_mrtd</dt>
          <dd>The hexadecimal string represents a byte array of length 48, which contains the measurement of the initial contents of the TDX.</dd>
<dt>tdx_report_data</dt>
          <dd>The hexadecimal string represents a byte array of length 64. In this context, the TDX has the flexibility to include 64 bytes of custom data in a TDX Report. For instance, this space can be used to hold a nonce, a public key, or a hash of a larger block of data.</dd>
<dt>tdx_rtmr0 – tdx_rtmr3</dt>
          <dd>Each hexadecimal string represents a byte array of length 48, which contains the runtime extendable measurement register.</dd>
<dt>tdx_seam_attributes</dt>
          <dd>The hexadecimal string represents a byte array of length 8, which contains additional configuration of the TDX module.</dd>
<dt>tdx_seamsvn</dt>
          <dd>The number represents the Intel TDX module security version number (SVN).</dd>
<dt>tdx_td_attributes</dt>
          <dd>The hexadecimal string represents a byte array of length 8. These are the attributes associated with the Trusted Domain (TD).</dd>
<dt>tdx_td_attributes_debug</dt>
          <dd>The boolean value represents whether the TD runs in TD debug mode (set to 1) or not (set to 0). In TD debug mode, the CPU state and private memory are accessible by the host VMM.</dd>
<dt>tdx_td_attributes_key_locker</dt>
          <dd>The boolean value represents whether the TD is allowed to use Key Locker.</dd>
<dt>tdx_td_attributes_perfmon</dt>
          <dd>The boolean value represents whether the TD is allowed to use Perfmon and PERF_METRICS capabilities.</dd>
<dt>tdx_td_attributes_protection_keys</dt>
          <dd>The boolean value represents whether the TD is allowed to use Supervisor Protection Keys.</dd>
<dt>tdx_td_attributes_septve_disable</dt>
          <dd>The boolean value represents whether to disable EPT violation conversion to #VE on TD access of PENDING pages.</dd>
<dt>tdx_tee_tcb_svn</dt>
          <dd>The hexadecimal string represents a byte array of length 16, which describes the TCB SVNs of TDX.</dd>
<dt>tdx_xfam</dt>
          <dd>The hexadecimal string represents a byte array of length 8, which contains a mask of CPU extended features that the TDX is allowed to use.</dd>
<dt>sgx_tcb_comp_svn</dt>
          <dd>The hexadecimal string represents the array of security version numbers (SVNs) for Intel SGX TCB components.</dd>
<dt>pce_svn</dt>
          <dd>The integer value represents the security version number (SVN) of the Intel SGX Provisioning Certification Enclave (PCE), which is part of the TDX TCB.</dd>
<dt>platform_instance_id</dt>
          <dd>The hexadecimal string represents a byte array of length 16, generated during Intel TDX Initial Platform Establishment (IPE), that uniquely identifies a specific physical platform instance.</dd>
</dl>
</section>
<section>
<name>ear_verifier_claims</name>
 <t>The following verifier-derived claims appear as named members of the tdx submod's ear_verifier_claims container:</t>
  <dl newline="true">
 <dt>attester_tcb_date</dt>
          <dd>The date-time string is in UTC and encoded using ISO 8601, and it represents the date of the evaluated TCB level.</dd>
<dt>attester_tcb_status</dt>
          <dd>The string describes the evaluated status of the attesting platform TCB level.</dd>
<dt>attester_advisory_ids</dt>
          <dd>The array of advisory IDs refers to Intel security advisories that explain the reason(s) for the attester_tcb_status value of the evaluated platform TCB level.</dd>
<dt>tdx_collateral</dt>
          <dd>The metadata of Intel Provisioning Certification Service (PCS) TDX collateral that the verifier used to appraise the attesting platform’s quote. Specifically: tcbevaluationdatanumber (TCB Evaluation Data Number) represents the version of the TDX verification collateral, and fmspc indicates the FMSPC associated with that collateral.</dd>
</dl>
</section>
</section>


<section>
<name>CVM claims</name>
<t>The following claim appears as a peer of the other submod-level EAR claims (e.g., ear_appraisal_policy_id) within the cvm_guest submod:</t>
  <dl newline="true">
 <dt>ear_azurevm_policy_hash</dt>
          <dd>The base64url-encoded string represents the hash (SHA-256) of the Azure VM guest attestation appraisal policy that the verifier evaluated to produce the cvm_guest submod result.</dd>
</dl>
<section>
<name>ear_evidence_claims</name>
 <t>The following attester-reported claims appear as named members of the cvm_guest submod's ear_evidence_claims container (see section 3.3):</t>
  <dl newline="true">
 <dt>secureboot</dt>
          <dd>The boolean value represents whether secure boot is enabled.</dd>
<dt>azurevm_attestation_protocol_ver</dt>
          <dd>The string value represents the version of the Azure VM attestation protocol used to generate the attestation token.</dd>
<dt>azurevm_attested_pcrs</dt>
          <dd>The array represents PCR indices included in the TPM quote and successfully validated by the service.</dd>
<dt>azurevm_bootdebug_enabled</dt>
          <dd>The boolean value represents whether boot debugging was enabled for the Azure VM at boot time.</dd>
<dt>azurevm_dbvalidated</dt>
          <dd>The boolean value represents whether the UEFI Secure Boot signature database (DB) was successfully validated during boot.</dd>
<dt>azurevm_dbxvalidated</dt>
          <dd>The boolean value represents whether the UEFI Secure Boot revocation database (DBX) was successfully validated.</dd>
<dt>azurevm_debuggersdisabled</dt>
          <dd>The boolean value represents whether kernel and user‑mode debuggers were disabled in the guest operating system at boot.</dd>
<dt>azurevm_default_securebootkeysvalidated</dt>
          <dd>The boolean value represents whether the default Microsoft Secure Boot keys were present and validated during Secure Boot initialization.</dd>
<dt>azurevm_elam_enabled</dt>
          <dd>The boolean value represents whether Early Launch Anti‑Malware (ELAM) was enabled, ensuring that trusted anti‑malware drivers are loaded before other boot drivers.</dd>
<dt>azurevm_flightsigning_enabled</dt>
          <dd>The boolean value represents whether flight signing was enabled, allowing test or preview‑signed binaries to load in the guest OS.</dd>
<dt>azurevm_hvci_policy</dt>
          <dd>The integer value represents the Hypervisor‑Enforced Code Integrity (HVCI) policy configured and enforced by the guest operating system.</dd>
<dt>azurevm_hypervisordebug_enabled</dt>
          <dd>The boolean value represents whether hypervisor debugging was enabled for the Azure VM.</dd>
<dt>azurevm_is_windows</dt>
          <dd>The boolean value represents whether the guest operating system running inside the Azure VM is Microsoft Windows.</dd>
<dt>azurevm_kerneldebug_enabled</dt>
          <dd>The boolean value represents whether kernel debugging was enabled in the guest operating system at boot time.</dd>
<dt>azurevm_osbuild</dt>
          <dd>The string value represents the operating system build number of the guest OS running in the Azure VM.</dd>
<dt>azurevm_osdistro</dt>
          <dd>The string value represents the guest operating system distribution name (for example: specific Linux distribution or Windows edition).</dd>
<dt>azurevm_ostype</dt>
          <dd>The string value represents the guest operating system family or type (for example: Windows, Linux).</dd>
<dt>azurevm_osversion_major</dt>
          <dd>The integer value represents the major version number of the guest operating system.</dd>
<dt>azurevm_osversion_minor</dt>
          <dd>The integer value represents the minor version number of the guest operating system.</dd>
<dt>azurevm_signingdisabled</dt>
          <dd>The boolean value represents whether code signing enforcement was disabled, allowing unsigned binaries to be loaded.</dd>
<dt>azurevm_testsigning_enabled</dt>
          <dd>The boolean value represents whether test signing mode was enabled, allowing test‑signed binaries to execute in the guest OS.</dd>
<dt>azurevm_vmid</dt>
          <dd>The string value represents the unique identifier (VM ID) assigned to the Azure Virtual Machine instance.</dd>
<dt>runtime</dt>
          <dd>A JSON object containing claims that are defined and generated within the attested environment. This includes information such as keys and client payload, which are formatted as UTF-8–encoded, well-formed JSON.</dd>
</dl>
</section>
<section>
<name>ear_verifier_claims</name>
 <t>The following verifier-derived claims appear as named members of the cvm_guest submod's ear_verifier_claims container (see section 3.3):</t>
  <dl newline="true">
 <dt>x_ms_compliance_status</dt>
          <dd>The string value summarizes the Microsoft-defined compliance disposition of the attested CVM guest (for example, azure-compliant-cvm-guestvm indicates the guest satisfies the Azure confidential VM guest compliance baseline).</dd>
</dl>
</section>
</section>


<section>
<name>C-GPU claims</name>
  <dl newline="true">
 <dt>eat_profile</dt>
          <dd>The eat_profile from EAR token generated by NVIDIA verifier. This profile represents the EAR profile not evidence profile.</dd>
 <dt>ear_status</dt>
          <dd>The ear_status from EAR token generated by NVIDIA verifier.</dd>
<dt>ear_nvidia_purpose</dt>
          <dd>The context associated with the appraisal. A GPU can respond out of band for infrastructure attestation and inband for various modes such as CC-TDISP. This claim allows a RP to ensure that an EAR meant for a different purpose does not get used by such RP.</dd>
 <dt>ear_trustworthiness_vector (optional)</dt>
          <dd>The ear_trustworthiness_vector from EAR token generated by NVIDIA verifier.</dd>
 <dt>eat_nonce (optional)</dt>
          <dd>The eat_nonce from EAR token generated by NVIDIA verifier. This nonce represents evidence freshness not freshness of response from NVIDIA verifier.</dd>
 <dt>ear_verifier_claims</dt>
          <dd>A collection of claims generated by the verifier during the process of evidence appraisal other than any claim from evidence that verifier copies into ear_evidence_claims (explained below). ear_verifier_claims includes claims that were not part of the evidence (e.g., certificate chain related claims).</dd>
<dt>ear_verifier_claims.ear_nvidia_evidence</dt>
          <dd>A collection of claims generated by the verifier based on evidence validation step prior to comparison to reference values.</dd>
<dt>ear_verifier_claims.ear_nvidia_evidence.signature_verified</dt>
          <dd>This boolean value indicates whether the signature on SPDM response has been verified successfully.</dd>
<dt>ear_verifier_claims.ear_nvidia_evidence.parsed (optional)</dt>
          <dd>This boolean value indicates whether the evidence has been successfully parsed. If signature verification of SPDM response fails, this claim will not be emitted.</dd>
<dt>ear_verifier_claims.ear_nvidia_evidence.cert_chain (optional)</dt>
          <dd>An array of claims related to each of the certificates in the device certificate chain. Every array entry corresponds to one certificate in the chain. The certs are listed in the order from the root to the end entity cert.</dd>
<dt>ear_verifier_claims.ear_nvidia_evidence.cert_chain[].status</dt>
          <dd>The string value represents the validation result of the certificate.</dd>
<dt>ear_verifier_claims.ear_nvidia_evidence.cert_chain[].ocsp_crl_status (optional)</dt>
          <dd>The string value represents the certificate status from Online Certificate Status Protocol (OCSP) or CRL.</dd>
<dt>ear_verifier_claims.ear_nvidia_evidence.cert_chain[].ocsp_nonce_matches (optional)</dt>
          <dd>The boolean value represents whether the nonce in the OCSP response matches the nonce sent in the OCSP request.</dd>
<dt>ear_verifier_claims.ear_nvidia_evidence.cert_chain[].expiration_date </dt>
          <dd>The string value represents the expiration timestamp of the certificate.</dd>
<dt>ear_verifier_claims.ear_nvidia_evidence.cert_chain[].revocation_reason (optional)</dt>
          <dd>The string value represents the revocation reason returned by certificate status validation if the certificate has been revoked.</dd>
<dt>ear_verifier_claims.ear_nvidia_evidence.akpub (optional)</dt>
          <dd>This claim represents the public key from the end entity certificate used by the verifier to verify the signature on the SPDM response from the attester.</dd>
<dt>ear_verifier_claims.ear_nvidia_evidence.nonce_match</dt>
          <dd></dd>
<dt>ear_verifier_claims.ear_nvidia_rims (optional)</dt>
          <dd>A collection of claims generated by the verifier during its attempts to acquire and validate RIMs. This claim must be emitted if the verifier decides to attempt to acquire RIMs.</dd>
<dt>ear_verifier_claims.ear_nvidia_rims[].fetched</dt>
          <dd>The boolean value indicates whether the verifier successfully retrieved the corresponding NVIDIA RIM required for evidence validation.</dd>
<dt>ear_verifier_claims.ear_nvidia_rims[].signature-verified (optional)</dt>
          <dd>The boolean value indicates that the digital signature of the RIM was successfully verified using NVIDIA’s signing certificates. This claim must be emitted if the fetched claim above is true.</dd>
<dt>ear_verifier_claims.ear_nvidia_rims[].id (optional)</dt>
          <dd>The string value represents the identifier of the NVIDIA Reference Integrity Manifest (RIM).</dd>
<dt>ear_verifier_claims.ear_nvidia_rims[].cert_chain (optional) </dt>
          <dd>An array of claims related to each of the certificates in the RIM certificate chain. Every array entry corresponds to one certificate in the chain. The certs are listed in the order from the root to the end entity cert.</dd>
<dt>ear_verifier_claims.ear_nvidia_rims[].cert_chain[].status</dt>
          <dd>The string value represents the validation result of the certificate.</dd>
<dt>ear_verifier_claims.ear_nvidia_rims[].cert_chain[].ocsp_crl_status (optional)</dt>
          <dd>The string value represents the certificate status from Online Certificate Status Protocol (OCSP) or CRL.</dd>
<dt>ear_verifier_claims.ear_nvidia_rims[].cert_chain[].ocsp_nonce_matches (optional)</dt>
          <dd>The boolean value represents whether the nonce in the OCSP response matches the nonce sent in the OCSP request.</dd>
<dt>ear_verifier_claims.ear_nvidia_rims[].cert_chain[].expiration_date</dt>
          <dd>The string value represents the expiration timestamp of the certificate.</dd>
<dt>ear_verifier_claims.ear_nvidia_rims[].cert_chain[].revocation_reason (optional)</dt>
          <dd>The string value represents the revocation reason returned by certificate status validation if the certificate has been revoked.</dd>
<dt>ear_verifier_claims.ear_nvidia_evidence_rim_cmp (optional)</dt>
          <dd>A collection of claims generated by the verifier during the process of reference value corroboration. This claim must be emitted if the verifier reaches the corroboration phase.</dd>
<dt>ear_verifier_claims.nvidia_evidence_rim_cmp.matched-env</dt>
          <dd>The array of environment-maps from evidence that can be satisfied by CoRIM(s).</dd>
<dt>ear_verifier_claims.nvidia_evidence_rim_cmp.unmatched-env</dt>
          <dd>The array of environment-maps from evidence that were not found in CoRIM(s).</dd>
<dt>ear_verifier_claims.nvidia_evidence_rim_cmp.mismatched-env </dt>
          <dd>The array of environment-maps from evidence that were found in CoRIM(s) but can not be satisifed by the reference values in such CoRIM(s).</dd>
<dt>ear_verifier_claims.nvidia_evidence_rim_cmp.cert_chain_dti_match</dt>
          <dd>The boolean value indicates status of comparison of all DiceTcbInfo structures found in the cert chain of the attester to suitable environment-maps from CoRIM(s).</dd>
<dt>ear_evidence_claims (optional)</dt>
          <dd>A collection of claims copied from evidence without any comparison to ref values.</dd>
<dt>ear_evidence_claims.oemid</dt>
          <dd>This claim identifies the Original Equipment Manufacturer (OEM) of the hardware.</dd>
<dt>ear_evidence_claims.hwmodel</dt>
          <dd>This claim identifies the model of the GPU.</dd>
</dl>
</section>
</section>
  
<section>
      <name>Examples</name>
   <section>
        <name>Sample TDX + C-GPU attestation token</name>
       <t>Below is a sample TDX + C-GPU attestation token which includes claims from this EAR profile.</t>
     <artwork><![CDATA[
       {
    "eat_profile": "points to TDX+GPU composite EAR profile in IETF website",
    "eat_nonce": "a1b2c3d4e5f67890123456789abcdef0",
    "iat": 1666529300,
    "iss": "https://mytenant.rats.verifier.com",
    "jti": "950a20caadb27206dda48f8d9f15d550d935ba5d6d074321ea34398ca5bc5975",
    "nbf": 1764709981,
    "exp": 1764738781,
    "ear_verifier_id": {
        "developer": "https://rats.verifier.com",
        "build": "v1.23.0"
    },
    "ear_raw_evidence": "NzQ3MjY5NzM2NTYzNzQKNzQ3MjY5NzM2NTYzNzQK...",
    "ear_status": "affirming",
    "ear_all_submods_bound": "true",
    "submods": {
        "tdx": {
            "ear_status": "affirming",
            "ear_profile": "https://portal.trustauthority.intel.com/ear_profile.html",
            "ear_trustworthiness_vector": {
                "instance-identity": 2,
                "executables": 2,
                "hardware": 2
            },
            "ear_appraisal_policy_ids": [
                "tdx-default-v1"
            ],
            "ear_evidence_claims": {
                "tdx_mrconfigid": "018779f38c1cc5d1e643fbfc7238bae2c227f7ffa4c72c049802942658acfc5bee000000000000000000000000000000",
                "tdx_mrowner": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
                "tdx_mrownerconfig": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
                "tdx_mrseam": "7bf063280e94fb051f5dd7b1fc59ce9aac42bb961df8d44b709c9b0ff87a7b4df648657ba6d1189589feab1d5a3c9a9d",
                "tdx_mrsignerseam": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
                "tdx_mrtd": "75f3acc2e1dfc3acf404d7eaa69a2eefcd0475a0dd6516ef5ba3cb83399c61b4aa1c638e3622bb650a514bfc6e858886",
                "tdx_report_data": "b4ee5ceb6bee96cac5605b2af1d2a483f0a6f790c6de738e7d2430ba33a350a86d1ace43b90ea9421624738151b677a23a577e2fc0c6180ae786ca1cf91e0eac",
                "tdx_rtmr0": "59dc57e1e3029f15034b127f0264a8e6f00db6c178bb087bc03205243d5d9daeff8bbeccced48d881c2a63d8974dbe26",
                "tdx_rtmr1": "70c3be9ff6c2fab010196a5fa1dd04c1bad37a4a1d2531cb56a9762d9f3b59c4f20b630a572396da77f8238d8e056bc2",
                "tdx_rtmr2": "3142d2479ce77c402ce8d67a04a67d57de798fa98748ca5f0486d4985919cad7de9a31adaa51d1073c62eafd0dfc8891",
                "tdx_rtmr3": "b56c050e7ae3846678603ab7ef552bf6452710f5601337b69b00f6e8894f5b0a0f87b9ed39faebba3e2d740dba701d5b",
                "tdx_seam_attributes": "0000000000000000",
                "tdx_seamsvn": 258,
                "tdx_td_attributes": "0000000000000000",
                "tdx_td_attributes_debug": false,
                "tdx_td_attributes_key_locker": false,
                "tdx_td_attributes_perfmon": false,
                "tdx_td_attributes_protection_keys": false,
                "tdx_td_attributes_septve_disable": false,
                "tdx_tee_tcb_svn": "02010600000000000000000000000000",
                "tdx_xfam": "e718060000000000",
                "sgx_tcb_comp_svn": "06060202030100030000000000000000",
                "pce_svn": 11,
                "platform_instance_id": "2ba7336ce9acf49fe7d3e3625337e510"
            },
            "ear_verifier_claims": {
                "attester_tcb_date": "2025-05-14T00:00:00Z",
                "attester_advisory_ids": [ "INTEL-SA-01192","INTEL-SA-01245"],
                "attester_tcb_status": "OutOfDate",
                "tdx_collateral": {
                    "fmspc": "B0C06F000000",
                    "tcbevaluationdatanumber": 20
                }
            }
        },
        "cvm_guest": {
            "eat_profile": "https://aka.ms/eat-profile-cvm-guest/1.0.0",
            "ear_status": "affirming",
            "ear_trustworthiness_vector": {
                "instance-identity": 2,
                "executables": 2
            },
            "ear_appraisal_policy_ids": [
                "policy:cvm-guest/7e8f1b2a-9c4d-4327-b59a-8d6e1a3f0c2b"
            ],
            "ear_azurevm_policy_hash": "ndXtG3MNtueeIPCj2Y-3fDFl16CREC5FF_sUyU4fLQ8",
            "ear_managed_keysets": {
                "ephemeral-transfer-keys": [
                    {
                        "e": "AQAB",
                        "key_ops": [
                            "encrypt"
                        ],
                        "kid": "TpmEphemeralEncryptionKey",
                        "kty": "RSA",
                        "n": "zcjFQAABYsqZUkS4w"
                    }
                ]
            },
            "ear_evidence_claims": {
                "secureboot": true,
                "azurevm_attestation_protocol_ver": "2.0",
                "azurevm_attested_pcrs": [
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                ],
                "azurevm_bootdebug_enabled": false,
                "azurevm_dbvalidated": true,
                "azurevm_dbxvalidated": true,
                "azurevm_debuggersdisabled": true,
                "azurevm_default_securebootkeysvalidated": true,
                "azurevm_elam_enabled": false,
                "azurevm_flightsigning_enabled": false,
                "azurevm_hvci_policy": 0,
                "azurevm_hypervisordebug_enabled": false,
                "azurevm_is_windows": false,
                "azurevm_kerneldebug_enabled": false,
                "azurevm_osbuild": "NotApplication",
                "azurevm_osdistro": "Debian GNU/Linux",
                "azurevm_ostype": "Linux",
                "azurevm_osversion_major": 13,
                "azurevm_osversion_minor": 0,
                "azurevm_signingdisabled": true,
                "azurevm_testsigning_enabled": false,
                "azurevm_vmid": "59ECD20B-CD92-4A84-82CB-9F3F06E9CDEC",
                "runtime": {
                    "client_payload": {
                        "Nonce": "MaaSandbox Nonce : 12/2/2025 9:13:01 PM",
                        "RelyingPartyId": "bcd368ce93bdad7c2f67bfd7af0d6b052c127aec28802c376f54a6ca8712ae32"
                    },
                    "keys": [
                        {
                            "e": "AQAB",
                            "key_ops": [
                                "encrypt"
                            ],
                            "kid": "TpmEphemeralEncryptionKey",
                            "kty": "RSA",
                            "n": "zcjFQAABYsqZUke3aw"
                        }
                    ]
                }
            },
            "ear_verifier_claims": {
                "x_ms_compliance_status": "azure-compliant-cvm-guestvm"
            }
        },
        "gpu_0": {
            "eat_profile": "tag:nvidia.com,2026-05:ear/profiles/gpu/1.0",
            "ear_status": "affirming",
            "ear_nvidia_purpose": "CC-Bounce-Buffer",
            "ear_trustworthiness_vector": {
                "configuration": 2,
                "executables": 2,
                "hardware": 2
            },
            "ear_appraisal_policy_ids": [
                "tag:nvidia.com,2026-05:ear/profiles/composite/generic/1.0.0",
                "https://nras.attestation.nvidia.com/ear/policies/gpu/1.1"
            ],
            "eat_nonce": "80FH7byULVei4u1YP4EirV8B7oHxIq0/1C3wE6vJ8ouq9j+F6m1X/dWO6B2qoovv",
            "ear_verifier_claims": {
                "ear_nvidia_evidence": {
                    "signature_verified": true,
                    "parsed": true,
                    "cert_chain": [
                        {
                            "status": "valid",
                            "ocsp_status": "good",
                            "expiration_date": "2036-07-15T23:02:10Z",
                            "revocation_reason": null
                        },
                        {
                            "status": "valid",
                            "ocsp_status": "good",
                            "expiration_date": "2032-07-15T23:02:10Z",
                            "revocation_reason": null
                        },
                        {
                            "status": "valid",
                            "ocsp_status": "good",
                            "expiration_date": "2028-07-15T23:02:10Z",
                            "revocation_reason": null
                        },
                        {
                            "status": "valid",
                            "ocsp_status": "good",
                            "expiration_date": "2026-07-15T23:02:10Z",
                            "revocation_reason": null
                        }
                    ],
                    "akpub": "-----BEGIN PUBLIC KEY-----
       \nMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEX0dHnbKG8XlTZk1LrNBFYxca/xomeYVQ\nHHnCksh1BXEBsJt4wIUjkPuTXqy1NLThQXL6m3zgP7unKAeThOKSiGr4/D9n6XMg\noFJGZMFgQYQsc3ZY+SogfgDTf5cEGaeQ\n-----END PUBLIC KEY-----\n",
                    "nonce_match": true
                },
                "ear_nvidia_rims": [
                    {
                        "fetched": true,
                        "signature_verified": true,
                        "id": "ID-Driver",
                        "cert_chain": [
                            {
                                "status": "valid",
                                "ocsp_status": "good",
                                "expiration_date": "2036-07-15T23:02:10Z",
                                "revocation_reason": null
                            },
                            {
                                "status": "valid",
                                "ocsp_status": "good",
                                "expiration_date": "2032-07-15T23:02:10Z",
                                "revocation_reason": null
                            },
                            {
                                "status": "valid",
                                "ocsp_status": "good",
                                "expiration_date": "2028-07-15T23:02:10Z",
                                "revocation_reason": null
                            },
                            {
                                "status": "valid",
                                "ocsp_status": "good",
                                "expiration_date": "2026-07-15T23:02:10Z",
                                "revocation_reason": null
                            }
                        ]
                    },
                    {
                        "fetched": true,
                        "signature_verified": true,
                        "id": "ID-Vbios",
                        "schema_validated": true,
                        "measurements_available": true,
                        "cert_chain": [
                            {
                                "status": "valid",
                                "ocsp_status": "good",
                                "expiration_date": "2036-07-15T23:02:10Z",
                                "revocation_reason": null
                            },
                            {
                                "status": "valid",
                                "ocsp_status": "good",
                                "expiration_date": "2032-07-15T23:02:10Z",
                                "revocation_reason": null
                            },
                            {
                                "status": "valid",
                                "ocsp_status": "good",
                                "expiration_date": "2028-07-15T23:02:10Z",
                                "revocation_reason": null
                            },
                            {
                                "status": "valid",
                                "ocsp_status": "good",
                                "expiration_date": "2026-07-15T23:02:10Z",
                                "revocation_reason": null
                            }
                        ]
                    }
                ],
                "ear_nvidia_evidence_rim_cmp": {
                    "matched_env": [
                        {
                            "class": {
                                "vendor": "NVIDIA",
                                "model": "GB100 A01 FSP",
                                "layer": 0
                            },
                            "instance": { "type": "ueid", "value": "AQIDBAUGBwgJCgsMDQ4P" }
                        },
                        {
                            "class": {
                                "class_id": { "type": "oid", "value": "2.23.133.5.4.1" },
                                "vendor": "NVIDIA",
                                "model": "GB100 HW config"
                            }
                        }
                    ],
                    "unmatched_env": [
                        {
                            "class": {
                                "vendor": "NVIDIA",
                                "model": "GB100 Fuses"
                            }
                        },
                        
                        {
                            "class": {
                                "vendor": "NVIDIA",
                                "model": "GB100 Firmware microcodes (BootComplex reset domain)"
                            }
                        }
                    ],
                    "mismatched_env": [],
                    "cert_chain_dti_match": true
                }
            },
            "ear_evidence_claims": {
                "oemid": "5703",
                "hwmodel": "R0gxMDA="
            }
        }
    }
}
     ]]></artwork>
   </section>
      </section>
</middle>
<back>
<references>
      <name>References</name>
<references>
        <name>Normative References</name>
         <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <reference anchor="EAT" target="https://datatracker.ietf.org/doc/html/draft-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>Qualcomm Technologies Inc.</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="30" month="June" year="2023"/>
            </front>
        </reference>
<reference anchor="JWT" target="https://datatracker.ietf.org/doc/html/rfc7519">
          <front>
            <title> JSON Web Token (JWT)</title>
            <author fullname="Michael B. Jones" initials="M." surname="Jones">
              <organization>Security Theory LLC</organization>
            </author>
            <author fullname="John Bradley" initials="J." surname="Bradley">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Nat Sakimura" initials="N." surname="Sakimura">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <date month="May" year="2015"/>
            </front>
        </reference>
        <reference anchor="TDX" target="https://www.intel.com/content/www/us/en/developer/tools/trust-domain-extensions/overview.html">
          <front>
            <title>Intel® Trust Domain Extensions</title>
            <author>
              <organization>Intel</organization>
            </author>
            <date month="Feb" year="2023"/>
          </front>
        </reference>
</references>
</references>
 </back>
</rfc>
