<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.31 (Ruby 3.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-tsyrulnikov-rats-attested-inference-receipt-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="AIR v1">Attested Inference Receipt (AIR): A COSE/CWT Profile for Confidential AI Inference</title>

    <author initials="B." surname="Tsyrulnikov" fullname="Borys Tsyrulnikov">
      <organization>Cyntrisec</organization>
      <address>
        <email>borys@cyntrisec.com</email>
      </address>
    </author>

    <date year="2026" month="March" day="01"/>

    <area>Security</area>
    <workgroup>RATS</workgroup>
    <keyword>attestation</keyword> <keyword>AI inference</keyword> <keyword>receipt</keyword> <keyword>COSE</keyword> <keyword>CWT</keyword> <keyword>EAT</keyword> <keyword>confidential computing</keyword>

    <abstract>


<?line 64?>

<t>This document defines the Attested Inference Receipt (AIR), a
COSE_Sign1 envelope carrying CWT claims profiled per the Entity
Attestation Token (EAT) framework. An AIR receipt binds model
identity, input/output hashes, platform attestation metadata, and
operational telemetry into a single signed artifact suitable for
audit, compliance, and third-party verification of a confidential AI
inference event.</t>

<t>AIR v1 targets single-inference receipts emitted by workloads running
inside hardware-isolated Trusted Execution Environments (TEEs). It
supports AWS Nitro Enclaves and Intel TDX measurement formats, with
extension points for additional platforms. Pipeline chaining and
multi-inference receipts are out of scope for this version.</t>



    </abstract>



  </front>

  <middle>


<?line 80?>

<section anchor="introduction"><name>Introduction</name>

<t>Regulated industries increasingly deploy machine learning models on
cloud infrastructure but lack a standardized, interoperable mechanism
to prove what happened during a specific inference. Existing
attestation frameworks such as RATS <xref target="RFC9334"/> establish platform
identity and code integrity, but they do not produce per-inference
evidence binding a model, its inputs and outputs, and the platform
state into a single verifiable artifact.</t>

<t>The Attested Inference Receipt (AIR) fills this gap. An AIR receipt is
a COSE_Sign1 <xref target="RFC9052"/> envelope whose payload is a CWT <xref target="RFC8392"/>
claims set profiled as an EAT <xref target="RFC9711"/>. The receipt is signed with
Ed25519 <xref target="RFC8032"/> by the workload running inside a Trusted Execution
Environment (TEE). A verifier can confirm the receipt's integrity, the
signing algorithm, and the claim values using only widely available
COSE/CWT libraries and the workload's Ed25519 public key.</t>

<t>AIR v1 is scoped to a single inference: one request processed by one
model inside one attested workload produces one receipt. Pipeline
chaining, multi-stage proofs, and integration with transparency logs
(such as SCITT <xref target="SCITT"/>) are deferred to future versions.</t>

<t>AIR v1 defines the per-inference receipt as the base primitive.
Future AIR profiles may define aggregation mechanisms for
high-throughput deployments (for example, Merkle-root commitments over
multiple inference events) while preserving the same verification
semantics. Such aggregation mechanisms are out of scope for AIR v1.</t>

<section anchor="goals"><name>Goals</name>

<t>The goals of AIR v1 are:</t>

<t><list style="numbers" type="1">
  <t>Define a receipt wire format using existing IETF standards
(COSE_Sign1, CWT, EAT).</t>
  <t>Bind model identity (cryptographic hash), input/output hashes,
attestation metadata, and operational telemetry in a single
signed envelope.</t>
  <t>Support verification by any party with access to the Ed25519
public key, without TEE-specific tooling.</t>
  <t>Provide a portable measurement map that accommodates multiple
TEE platforms (currently Nitro PCR and Intel TDX MRTD/RTMR).</t>
  <t>Establish extension points for future platforms and claims
without breaking v1 verifiers.</t>
</list></t>

</section>
<section anchor="non-goals"><name>Non-Goals</name>

<t>AIR v1 explicitly does not:</t>

<t><list style="symbols">
  <t>Define a transport protocol or session management scheme.</t>
  <t>Specify attestation document verification procedures (these are
platform-specific).</t>
  <t>Prove data deletion or model correctness.</t>
  <t>Provide regulatory certification or compliance guarantees.</t>
  <t>Define pipeline chaining or multi-inference receipts.</t>
</list></t>

</section>
</section>
<section anchor="requirements-language"><name>Requirements Language</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="terminology"><name>Terminology</name>

<dl>
  <dt>Attested Inference Receipt (AIR):</dt>
  <dd>
    <t>A COSE_Sign1 signed CWT/EAT artifact emitted by a workload after
processing a single AI inference request inside a TEE. The receipt
binds model identity, input/output hashes, attestation metadata,
and operational telemetry.</t>
  </dd>
  <dt>Confidential Workload:</dt>
  <dd>
    <t>The software executing inside a TEE that loads a model, processes
inference requests, and generates AIR receipts. In RATS
<xref target="RFC9334"/> terminology, the confidential workload acts as the
Attester.</t>
  </dd>
  <dt>Verifier:</dt>
  <dd>
    <t>An entity that validates an AIR receipt's signature, claim values,
and policy constraints. In RATS <xref target="RFC9334"/> terminology, this maps
to the Verifier role.</t>
  </dd>
  <dt>Relying Party:</dt>
  <dd>
    <t>An entity that consumes the verification result to make trust
decisions (e.g., an auditor, compliance officer, or end user). In
RATS <xref target="RFC9334"/> terminology, this maps to the Relying Party role.</t>
  </dd>
  <dt>Endorser:</dt>
  <dd>
    <t>The TEE hardware vendor (e.g., AWS for Nitro, Intel for TDX) whose
attestation infrastructure anchors trust in the platform
measurements carried by the receipt.</t>
  </dd>
  <dt>Measurement Map:</dt>
  <dd>
    <t>The <spanx style="verb">enclave_measurements</spanx> claim containing platform-specific
register values (PCRs for Nitro, MRTD/RTMRs for TDX) that
identify the workload code and configuration.</t>
  </dd>
  <dt>Receipt:</dt>
  <dd>
    <t>In this document, "receipt" always refers to an AIR receipt. Note
that this differs from the SCITT usage of "receipt" (which refers
to a countersigned statement from a transparency service). The two
are complementary: a future version could register an AIR receipt
with a SCITT transparency service and receive a SCITT receipt in
return.</t>
  </dd>
</dl>

</section>
<section anchor="air-v1-receipt-format"><name>AIR v1 Receipt Format</name>

<section anchor="cosesign1-envelope"><name>COSE_Sign1 Envelope</name>

<t>An AIR v1 receipt is a tagged COSE_Sign1 structure (CBOR tag 18) as
defined in <xref target="RFC9052"/> Section 4.2:</t>

<figure><artwork><![CDATA[
COSE_Sign1 = [
  protected   : bstr,          ; serialized protected header
  unprotected : map,            ; unprotected header map
  payload     : bstr,           ; serialized CWT claims map
  signature   : bstr .size 64   ; Ed25519 signature
]
]]></artwork></figure>

<t>The signature covers <spanx style="verb">Sig_structure1 = ["Signature1", protected,
external_aad, payload]</spanx> where <spanx style="verb">external_aad</spanx> is empty (<spanx style="verb">h''</spanx>).</t>

<t>Verifiers <bcp14>MUST</bcp14> reject untagged COSE_Sign1 structures. The CBOR tag 18
is mandatory.</t>

</section>
<section anchor="protected-header"><name>Protected Header</name>

<t>The protected header is a CBOR map containing exactly two entries:</t>

<texttable>
      <ttcol align='right'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='right'>Value</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>1</c>
      <c>alg</c>
      <c>-8</c>
      <c>EdDSA (Ed25519)</c>
      <c>3</c>
      <c>content type</c>
      <c>61</c>
      <c>application/cwt</c>
</texttable>

<t>Verifiers <bcp14>MUST</bcp14> reject receipts where <spanx style="verb">alg</spanx> is not -8 or where
<spanx style="verb">content type</spanx> is not 61. Additional protected header parameters are
not defined in v1 and <bcp14>MUST NOT</bcp14> be present.</t>

<t>The signing algorithm is Ed25519 with <spanx style="verb">verify_strict</spanx> semantics per
<xref target="RFC8032"/> Section 5.1.7. Verifiers <bcp14>MUST</bcp14> reject non-canonical S
values (S &gt;= L where L is the Ed25519 group order).</t>

</section>
<section anchor="unprotected-header"><name>Unprotected Header</name>

<t>The unprotected header <bcp14>MUST</bcp14> be empty for AIR v1 receipts. The CDDL
permits an optional <spanx style="verb">kid</spanx> (label 4, type <spanx style="verb">bstr</spanx>) for forward
compatibility, but the reference implementation rejects non-empty
unprotected headers because unprotected header parameters are not
covered by the COSE signature and can be tampered in transit.</t>

<t>Verifiers <bcp14>SHOULD</bcp14> reject receipts with non-empty unprotected headers.</t>

</section>
<section anchor="payload-cwt-claims-map"><name>Payload: CWT Claims Map</name>

<t>The payload is a CBOR-encoded CWT claims map. The map uses
deterministic encoding per <xref target="RFC8949"/> Section 4.2.1 (shorter encoded
key sorts first, then bytewise lexicographic comparison).</t>

<t>The claims map is closed: verifiers <bcp14>MUST</bcp14> reject maps containing
unknown integer keys. Duplicate keys <bcp14>MUST</bcp14> be rejected.</t>

</section>
<section anchor="cddl"><name>CDDL Schema</name>

<t>The following CDDL <xref target="RFC8610"/> defines the complete wire shape:</t>

<figure><sourcecode type="cddl"><![CDATA[
air-receipt = #6.18([
  protected:   bstr .cbor air-protected-header,
  unprotected: air-unprotected-header,
  payload:     bstr .cbor air-claims,
  signature:   bstr .size 64
])

air-protected-header = {
  1 => -8,          ; alg: EdDSA (Ed25519)
  3 => 61,          ; content type: application/cwt
}

air-unprotected-header = {
  ? 4 => bstr,      ; kid: key identifier (reserved)
}

air-claims = {
  ; --- Standard CWT/EAT claims ---
  1   => tstr,                  ; iss: issuer
  6   => uint,                  ; iat: issued-at (Unix seconds)
  7   => bstr .size 16,         ; cti: CWT ID (UUID v4, 16 bytes)
  265 => "https://spec.cyntrisec.com/air/v1",  ; eat_profile
  ? 10 => bstr,                 ; eat_nonce (optional)

  ; --- AIR private claims ---
  -65537 => tstr,               ; model_id
  -65538 => tstr,               ; model_version
  -65539 => sha256-hash,        ; model_hash
  -65540 => sha256-hash,        ; request_hash
  -65541 => sha256-hash,        ; response_hash
  -65542 => sha256-hash,        ; attestation_doc_hash
  -65543 => enclave-measurements, ; enclave_measurements
  -65544 => tstr,               ; policy_version
  -65545 => uint,               ; sequence_number
  -65546 => uint,               ; execution_time_ms
  -65547 => uint,               ; memory_peak_mb
  -65548 => tstr,               ; security_mode
  ? -65549 => tstr,             ; model_hash_scheme (optional)
}

sha256-hash = bstr .size 32
sha384-hash = bstr .size 48

enclave-measurements = nitro-measurements / tdx-measurements

nitro-measurements = {
  "pcr0"             => sha384-hash,
  "pcr1"             => sha384-hash,
  "pcr2"             => sha384-hash,
  ? "pcr8"           => sha384-hash,
  "measurement_type" => "nitro-pcr",
}

tdx-measurements = {
  "pcr0"             => sha384-hash,   ; MRTD
  "pcr1"             => sha384-hash,   ; RTMR0
  "pcr2"             => sha384-hash,   ; RTMR1
  "measurement_type" => "tdx-mrtd-rtmr",
}
]]></sourcecode></figure>

<t>The full CDDL is also provided in <xref target="appendix-cddl"/>.</t>

</section>
</section>
<section anchor="claim-semantics"><name>Claim Semantics</name>

<section anchor="standard-cwteat-claims"><name>Standard CWT/EAT Claims</name>

<section anchor="iss-issuer-key-1"><name>iss (Issuer) -- key 1</name>

<t>A text string identifying the issuing entity (e.g.,
<spanx style="verb">"cyntrisec.com"</spanx>). The value is operator-assigned and opaque to the
receipt format. Verifiers <bcp14>MAY</bcp14> check against an expected issuer
allowlist.</t>

</section>
<section anchor="iat-issued-at-key-6"><name>iat (Issued At) -- key 6</name>

<t>An unsigned integer representing the Unix timestamp (seconds since
epoch) when the inference completed. Verifiers apply a freshness
check: <spanx style="verb">now - max_age &lt;= iat &lt;= now + clock_skew</spanx>. Verifiers <bcp14>SHOULD</bcp14>
reject future timestamps.</t>

</section>
<section anchor="cti-cwt-id-key-7"><name>cti (CWT ID) -- key 7</name>

<t>A 16-byte binary string containing a UUID v4 encoded as raw bytes
(not the 36-character string form). Each receipt <bcp14>MUST</bcp14> have a unique
cti. Verifiers maintaining replay state <bcp14>SHOULD</bcp14> track observed cti
values.</t>

</section>
<section anchor="eatprofile-key-265"><name>eat_profile -- key 265</name>

<t>The fixed string value <spanx style="verb">"https://spec.cyntrisec.com/air/v1"</spanx>.
Verifiers <bcp14>MUST</bcp14> reject receipts with unknown eat_profile values.
The value is an identifier, not a dereference requirement. Verifiers
<bcp14>MUST NOT</bcp14> require network retrieval of this URI during validation.</t>

</section>
<section anchor="eatnonce-key-10"><name>eat_nonce -- key 10</name>

<t>An optional binary string (8-64 bytes per <xref target="RFC9711"/> Section 4.1)
provided by the client to bind the receipt to a specific request
session. If the verifier supplied a nonce, it <bcp14>MUST</bcp14> check that
eat_nonce matches. This is the primary replay resistance mechanism
when verifier-side cti deduplication is not feasible.</t>

</section>
</section>
<section anchor="air-private-claims"><name>AIR Private Claims</name>

<t>AIR uses negative integer keys in the CWT private-use range to
avoid collision with IANA-registered claims. Keys -65537 through
-65548 are assigned and required. Key -65549 is assigned and optional.
Keys -65550 through -65599 are reserved for v1.x extensions.</t>

<section anchor="modelid-key-65537"><name>model_id -- key -65537</name>

<t>A text string containing the human-readable model identifier (e.g.,
<spanx style="verb">"minilm-l6-v2"</spanx>). Operator-assigned, opaque. Not cryptographic; use
model_hash for binding.</t>

</section>
<section anchor="modelversion-key-65538"><name>model_version -- key -65538</name>

<t>A text string containing the human-readable model version (e.g.,
<spanx style="verb">"1.0.0"</spanx>). Operator-assigned, opaque.</t>

</section>
<section anchor="modelhash-key-65539"><name>model_hash -- key -65539</name>

<t>A 32-byte SHA-256 <xref target="FIPS180-4"/> hash of the model weights. This is
the cryptographic binding between the receipt and a specific model
artifact. Verifiers <bcp14>MUST</bcp14> compare against a known-good hash when
model identity matters. The model_hash <bcp14>MUST NOT</bcp14> be all zeros.</t>

</section>
<section anchor="requesthash-key-65540"><name>request_hash -- key -65540</name>

<t>A 32-byte SHA-256 hash of the inference request payload. Binds the
receipt to a specific input. Clients holding the original request
can recompute and compare.</t>

</section>
<section anchor="responsehash-key-65541"><name>response_hash -- key -65541</name>

<t>A 32-byte SHA-256 hash of the inference response payload. Binds the
receipt to a specific output.</t>

</section>
<section anchor="attestationdochash-key-65542"><name>attestation_doc_hash -- key -65542</name>

<t>A 32-byte SHA-256 hash of the platform attestation document (e.g.,
Nitro COSE attestation document, TDX quote). Links the receipt to
TEE evidence without embedding the (potentially large) attestation
document itself.</t>

<t>Note: AIR v1 does not define attestation document verification.
Verifiers <bcp14>SHOULD</bcp14> independently obtain and verify the attestation
document, then compare its hash.</t>

</section>
<section anchor="measurements"><name>enclave_measurements -- key -65543</name>

<t>A map containing platform-specific measurement registers. The map
structure depends on the <spanx style="verb">measurement_type</spanx> field within it.</t>

<section anchor="nitro-pcr-variant-measurementtype-nitro-pcr"><name>Nitro PCR Variant (measurement_type = "nitro-pcr")</name>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">"pcr0"</spanx></c>
      <c>bstr 48</c>
      <c>Yes</c>
      <c>PCR0 (SHA-384)</c>
      <c><spanx style="verb">"pcr1"</spanx></c>
      <c>bstr 48</c>
      <c>Yes</c>
      <c>PCR1 (SHA-384)</c>
      <c><spanx style="verb">"pcr2"</spanx></c>
      <c>bstr 48</c>
      <c>Yes</c>
      <c>PCR2 (SHA-384)</c>
      <c><spanx style="verb">"pcr8"</spanx></c>
      <c>bstr 48</c>
      <c>No</c>
      <c>PCR8 (SHA-384)</c>
      <c><spanx style="verb">"measurement_type"</spanx></c>
      <c>tstr</c>
      <c>Yes</c>
      <c><spanx style="verb">"nitro-pcr"</spanx></c>
</texttable>

</section>
<section anchor="tdx-mrtdrtmr-variant-measurementtype-tdx-mrtd-rtmr"><name>TDX MRTD/RTMR Variant (measurement_type = "tdx-mrtd-rtmr")</name>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">"pcr0"</spanx></c>
      <c>bstr 48</c>
      <c>Yes</c>
      <c>MRTD (SHA-384)</c>
      <c><spanx style="verb">"pcr1"</spanx></c>
      <c>bstr 48</c>
      <c>Yes</c>
      <c>RTMR0 (SHA-384)</c>
      <c><spanx style="verb">"pcr2"</spanx></c>
      <c>bstr 48</c>
      <c>Yes</c>
      <c>RTMR1 (SHA-384)</c>
      <c><spanx style="verb">"measurement_type"</spanx></c>
      <c>tstr</c>
      <c>Yes</c>
      <c><spanx style="verb">"tdx-mrtd-rtmr"</spanx></c>
</texttable>

<t>The TDX registers are mapped to <spanx style="verb">pcr0</spanx>/<spanx style="verb">pcr1</spanx>/<spanx style="verb">pcr2</spanx> field names
for cross-platform verifier simplicity. The <spanx style="verb">measurement_type</spanx> field
disambiguates the actual register semantics.</t>

<t>All pcr0/pcr1/pcr2 values <bcp14>MUST</bcp14> be exactly 48 bytes. Verifiers <bcp14>MUST</bcp14>
reject receipts where any required measurement register is the wrong
length. The <spanx style="verb">measurement_type</spanx> <bcp14>MUST</bcp14> be one of the defined values;
unknown types <bcp14>MUST</bcp14> be rejected.</t>

</section>
</section>
<section anchor="policyversion-key-65544"><name>policy_version -- key -65544</name>

<t>A text string identifying the version of the policy governing the
workload (e.g., <spanx style="verb">"policy-2026.02"</spanx>). Informational.</t>

</section>
<section anchor="sequencenumber-key-65545"><name>sequence_number -- key -65545</name>

<t>An unsigned integer that increases monotonically within a single
workload session. Resets on workload restart. Verifiers processing a
stream of receipts <bcp14>SHOULD</bcp14> check monotonicity; gaps indicate missed
receipts within a session.</t>

</section>
<section anchor="executiontimems-key-65546"><name>execution_time_ms -- key -65546</name>

<t>An unsigned integer representing the wall-clock inference time in
milliseconds. Informational; anomalously low or high values may
indicate issues but are not a verification failure.</t>

</section>
<section anchor="memorypeakmb-key-65547"><name>memory_peak_mb -- key -65547</name>

<t>An unsigned integer representing the peak memory usage during
inference in megabytes. Informational.</t>

</section>
<section anchor="securitymode-key-65548"><name>security_mode -- key -65548</name>

<t>A text string identifying the security mode of the workload (e.g.,
<spanx style="verb">"GatewayOnly"</spanx>, <spanx style="verb">"FullAttestation"</spanx>). Informational. Verifiers <bcp14>MAY</bcp14>
require a specific security mode.</t>

</section>
<section anchor="mhscheme"><name>model_hash_scheme -- key -65549</name>

<t>An optional text string declaring how model_hash was computed,
enabling verifiers to reproduce the hash from model artifacts.</t>

<t>Defined scheme values:</t>

<texttable>
      <ttcol align='left'>Scheme</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">"sha256-single"</spanx></c>
      <c>SHA-256 of a single model weights file</c>
      <c><spanx style="verb">"sha256-concat"</spanx></c>
      <c>SHA-256 of deterministically concatenated weight files (lexicographic filename order)</c>
      <c><spanx style="verb">"sha256-manifest"</spanx></c>
      <c>SHA-256 of a self-describing manifest listing per-file hashes</c>
</texttable>

<t>If present, verifiers <bcp14>MUST</bcp14> recognize the scheme value. Unknown
schemes <bcp14>MUST</bcp14> be rejected (fail-closed). If absent, verifiers <bcp14>SHOULD</bcp14>
treat model_hash as opaque (can still compare against a known-good
hash, but cannot independently reproduce it).</t>

<t>New scheme values <bcp14>MAY</bcp14> be registered in v1.x minor updates.
Implementations <bcp14>MUST NOT</bcp14> invent unregistered scheme values.</t>

</section>
</section>
</section>
<section anchor="eat-profile-declaration"><name>EAT Profile Declaration</name>

<t>This section consolidates the mandatory profile positions per
<xref target="RFC9711"/> Section 6.3.</t>

<t><list style="numbers" type="1">
  <t><strong>Profile identifier</strong>: URI
<spanx style="verb">"https://spec.cyntrisec.com/air/v1"</spanx> (carried in eat_profile,
key 265). This URI is used as an opaque identifier and does not
imply that validation depends on a hosted verifier service.</t>
  <t><strong>Encoding</strong>: CBOR only (<xref target="RFC8949"/>). JSON serialization is not
defined.</t>
  <t><strong>Envelope</strong>: COSE_Sign1 (<xref target="RFC9052"/> Section 4.2), CBOR tag 18.
Untagged COSE_Sign1 <bcp14>MUST</bcp14> be rejected.</t>
  <t><strong>Payload content type</strong>: COSE content_type = 61
(<spanx style="verb">application/cwt</spanx>). The payload is a CWT claims map.</t>
  <t><strong>HTTP media type</strong>: <spanx style="verb">application/eat+cwt</spanx> (<xref target="RFC9782"/>).
Receivers <bcp14>SHOULD</bcp14> accept both <spanx style="verb">application/cwt</spanx> and
<spanx style="verb">application/eat+cwt</spanx>.</t>
  <t><strong>Signing algorithm</strong>: Ed25519 only (COSE alg = -8).
<spanx style="verb">verify_strict</spanx> required (canonical S per <xref target="RFC8032"/> Section
5.1.7). No algorithm negotiation in v1.</t>
  <t><strong>Detached bundles</strong>: Not supported in v1. The attestation
document is referenced by hash (attestation_doc_hash), not
embedded.</t>
  <t><strong>Key identification</strong>: Out of band. The verifier obtains the
Ed25519 public key through a platform-specific channel (e.g.,
attestation document, key registry). Optional <spanx style="verb">kid</spanx> in the
unprotected header is reserved but currently rejected by the
reference implementation.</t>
  <t><strong>Mandatory claims</strong>: 16 required claims: iss, iat, cti,
eat_profile, model_id, model_version, model_hash, request_hash,
response_hash, attestation_doc_hash, enclave_measurements,
policy_version, sequence_number, execution_time_ms,
memory_peak_mb, security_mode.</t>
  <t><strong>Optional claims</strong>: 2 optional claims: eat_nonce (replay
resistance), model_hash_scheme (hash computation method).</t>
  <t><strong>Freshness</strong>: <spanx style="verb">iat</spanx> carries the execution timestamp (Unix
seconds). Verifiers apply <spanx style="verb">max_age</spanx> + <spanx style="verb">clock_skew</spanx> policy.
<spanx style="verb">eat_nonce</spanx> provides optional challenge-response replay
resistance (<xref target="RFC9711"/> Section 4.1, 8-64 bytes).</t>
  <t><strong>Deterministic encoding</strong>: Required. Map keys sorted per
<xref target="RFC8949"/> Section 4.2.1 (shorter encoded form first, then
bytewise lexicographic).</t>
  <t><strong>Closed claims map</strong>: The claims map is closed. Unknown integer
keys <bcp14>MUST</bcp14> be rejected. Duplicate keys <bcp14>MUST</bcp14> be rejected.</t>
  <t><strong>Unprotected header</strong>: <bcp14>MUST</bcp14> be empty. All header parameters are
carried in the protected header. The CDDL permits an optional
<spanx style="verb">kid</spanx> (label 4) for forward compatibility, but unprotected
parameters are not signed and can be tampered in transit.</t>
  <t><strong>Private claim keys</strong>: Keys -65537 through -65549 are assigned
in the CWT private-use range (<xref target="RFC8392"/>). No IANA registration
is required. Keys -65550 through -65599 are reserved for v1.x
extensions.</t>
</list></t>

</section>
<section anchor="verification-procedure"><name>Verification Procedure</name>

<t>The AIR v1 verification procedure is organized into four layers.
Each layer <bcp14>MUST</bcp14> complete successfully before proceeding to the next.
If any check fails, the verifier <bcp14>MUST</bcp14> reject the receipt and <bcp14>SHOULD</bcp14>
report the specific failure.</t>

<section anchor="layer-1-parse"><name>Layer 1: Parse</name>

<t><list style="numbers" type="1">
  <t>Decode the input as CBOR. Confirm the outer structure is tagged
with CBOR tag 18.</t>
  <t>Decode the COSE_Sign1 array (4 elements).</t>
  <t>Confirm the receipt size does not exceed 65,536 bytes.</t>
  <t>Decode the protected header. Confirm it is a well-formed CBOR
map.</t>
  <t>Confirm <spanx style="verb">alg</spanx> (label 1) in the protected header is -8 (EdDSA).
Reject receipts with any other algorithm.</t>
  <t>Confirm <spanx style="verb">content type</spanx> (label 3) in the protected header is 61
(<spanx style="verb">application/cwt</spanx>).</t>
  <t>Decode the payload. Confirm it is a well-formed CBOR map.</t>
  <t>Confirm <spanx style="verb">eat_profile</spanx> (key 265) equals
<spanx style="verb">"https://spec.cyntrisec.com/air/v1"</spanx>. Reject receipts with
unknown profile values.</t>
</list></t>

</section>
<section anchor="layer-2-cryptographic-verification"><name>Layer 2: Cryptographic Verification</name>

<t><list style="numbers" type="1">
  <t>Construct Sig_structure1 = ["Signature1", protected, h'',
payload].</t>
  <t>Verify the Ed25519 signature over Sig_structure1 using the
provided public key. The verification <bcp14>MUST</bcp14> use <spanx style="verb">verify_strict</spanx>
semantics (reject non-canonical S values).</t>
</list></t>

</section>
<section anchor="layer-3-claim-validation"><name>Layer 3: Claim Validation</name>

<t><list style="numbers" type="1">
  <t>Confirm <spanx style="verb">cti</spanx> (key 7) is exactly 16 bytes.</t>
  <t>Confirm <spanx style="verb">iat</spanx> (key 6) is a non-zero unsigned integer.</t>
  <t>Confirm <spanx style="verb">model_hash</spanx> (key -65539) is exactly 32 bytes and not
all zeros.</t>
  <t>Confirm all required text string claims (iss, model_id,
model_version, policy_version, security_mode) are non-empty and
within reasonable bounds (implementation-defined, <bcp14>RECOMMENDED</bcp14>
maximum 1024 bytes each).</t>
  <t>Confirm <spanx style="verb">enclave_measurements</spanx> (key -65543) is a map.</t>
  <t>Confirm <spanx style="verb">measurement_type</spanx> within enclave_measurements is one
of the defined values (<spanx style="verb">"nitro-pcr"</spanx> or <spanx style="verb">"tdx-mrtd-rtmr"</spanx>).</t>
  <t>Confirm all pcr0/pcr1/pcr2 values are exactly 48 bytes.</t>
  <t>If <spanx style="verb">measurement_type</spanx> is <spanx style="verb">"tdx-mrtd-rtmr"</spanx>, confirm <spanx style="verb">pcr8</spanx> is
absent. TDX measurement maps <bcp14>MUST NOT</bcp14> contain pcr8.</t>
  <t>If <spanx style="verb">model_hash_scheme</spanx> (key -65549) is present, confirm it is
one of the defined values (<spanx style="verb">"sha256-single"</spanx>,
<spanx style="verb">"sha256-concat"</spanx>, <spanx style="verb">"sha256-manifest"</spanx>). Unknown values <bcp14>MUST</bcp14> be
rejected.</t>
  <t>Confirm the claims map contains no unknown integer keys and no
duplicate keys.</t>
</list></t>

</section>
<section anchor="layer-4-policy-evaluation"><name>Layer 4: Policy Evaluation</name>

<t>Policy checks are configurable per verifier deployment. The following
checks are defined:</t>

<dl>
  <dt><strong>FRESH</strong> (timestamp bounds):</dt>
  <dd>
    <t>If configured, verify <spanx style="verb">now - max_age &lt;= iat &lt;= now + clock_skew</spanx>.</t>
  </dd>
  <dt><strong>NONCE</strong> (challenge binding):</dt>
  <dd>
    <t>If the verifier supplied a nonce, verify eat_nonce matches.</t>
  </dd>
  <dt><strong>MODEL</strong> (expected model):</dt>
  <dd>
    <t>If configured, verify model_hash and/or model_id match expected
values.</t>
  </dd>
  <dt><strong>PLATFORM</strong> (expected platform):</dt>
  <dd>
    <t>If configured, verify measurement_type matches expected value.</t>
  </dd>
  <dt><strong>REPLAY</strong> (deduplication):</dt>
  <dd>
    <t>If the verifier maintains a seen-cti store, reject duplicate cti
values.</t>
  </dd>
</dl>

<t>Verifiers <bcp14>SHOULD</bcp14> document which Layer 4 policies they enforce.</t>

</section>
</section>
<section anchor="relationship-to-other-work"><name>Relationship to Other Work</name>

<section anchor="draft-messous-eat-ai"><name>draft-messous-eat-ai</name>

<t><xref target="I-D.messous-eat-ai"/> defines an EAT profile for autonomous AI
agents, including model identification, training metadata, and
performance metrics. AIR v1 is complementary: where
draft-messous-eat-ai focuses on broad AI agent provenance metadata
(potentially including training and evaluation details), AIR v1
focuses narrowly on per-inference execution evidence from a
confidential workload. A future version of AIR could adopt
registered claim keys from draft-messous-eat-ai once they
stabilize, replacing the current private-use integer keys.</t>

</section>
<section anchor="scitt"><name>SCITT</name>

<t>The Supply Chain Integrity, Transparency and Trust <xref target="SCITT"/>
framework uses "receipt" to mean a countersigned statement from a
transparency service. In AIR, "receipt" means a workload-signed
inference proof. The two are complementary: an AIR receipt could be
registered as a SCITT statement, and the resulting SCITT receipt
(countersignature from the transparency service) would provide
independent auditability. This document uses "AIR receipt"
consistently to avoid ambiguity.</t>

</section>
<section anchor="rats-architecture"><name>RATS Architecture</name>

<t>AIR receipts fit the RATS <xref target="RFC9334"/> architecture as follows:</t>

<t><list style="symbols">
  <t>The confidential workload is the <strong>Attester</strong> (it generates
evidence in the form of receipts).</t>
  <t>The receipt consumer is the <strong>Verifier</strong> (it validates signatures
and claims).</t>
  <t>The end user, auditor, or compliance officer is the <strong>Relying
Party</strong> (they consume verification results).</t>
  <t>The TEE hardware vendor (AWS, Intel) is the <strong>Endorser</strong> (their
attestation infrastructure anchors trust).</t>
</list></t>

<t>AIR v1 is a workload-emitted artifact, not a verifier-emitted
attestation result. It is distinct from IETF EAR (EAT Attestation
Result), which is produced by a verifier after evaluating platform
evidence. In a complete deployment, an EAR might reference an AIR
receipt as part of the evidence it evaluated.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<section anchor="receipt-integrity"><name>Receipt Integrity</name>

<t>The Ed25519 signature over the COSE Sig_structure1 protects the
protected header and all claims against tampering. The unprotected
header is not covered by the signature; AIR v1 requires it to be
empty (Section 4.3).</t>

</section>
<section anchor="algorithm-pinning"><name>Algorithm Pinning</name>

<t>AIR v1 pins the signing algorithm to Ed25519 (alg = -8). The
algorithm identifier is carried in the protected header and is
therefore signed. This prevents algorithm confusion attacks where an
attacker substitutes a weaker algorithm.</t>

</section>
<section anchor="replay-protection"><name>Replay Protection</name>

<t>Replay protection in AIR v1 is a shared responsibility:</t>

<t><list style="symbols">
  <t>The <spanx style="verb">cti</spanx> claim provides a unique receipt identifier. Verifiers
maintaining state <bcp14>SHOULD</bcp14> track observed cti values and reject
duplicates.</t>
  <t>The <spanx style="verb">eat_nonce</spanx> claim (optional) provides challenge-response
freshness. When present, it binds the receipt to a specific
verifier-supplied challenge, preventing replay to other verifiers.</t>
  <t>The <spanx style="verb">sequence_number</spanx> claim provides monotonicity within a
session. Gaps indicate missed receipts.</t>
</list></t>

<t>Verifiers not maintaining state and not using eat_nonce have limited
replay protection (only iat-based freshness). Deployments requiring
strong replay resistance <bcp14>MUST</bcp14> use at least one of cti deduplication
or eat_nonce.</t>

</section>
<section anchor="model-hash-limitations"><name>Model Hash Limitations</name>

<t>The <spanx style="verb">model_hash</spanx> claim (SHA-256 of model weights) proves byte-level
identity, not model correctness, bias, or safety. Two distinct models
with identical hashes are computationally infeasible, but a model
with a correct hash may still produce harmful or incorrect outputs.</t>

<t>The <spanx style="verb">model_hash_scheme</spanx> claim (<xref target="mhscheme"/>) declares how the hash
was computed. Unknown scheme values <bcp14>MUST</bcp14> be rejected. This prevents
a verifier from accepting a hash computed with an unrecognized method
that might weaken integrity guarantees.</t>

</section>
<section anchor="attestation-document-not-verified-by-receipt"><name>Attestation Document Not Verified by Receipt</name>

<t>The <spanx style="verb">attestation_doc_hash</spanx> claim is a SHA-256 hash of the platform
attestation document. AIR v1 does not embed or verify the attestation
document. Verifiers requiring TEE assurance <bcp14>MUST</bcp14> independently obtain
and verify the attestation document using platform-specific
procedures (e.g., Nitro COSE verification against the AWS root CA,
Intel TDX DCAP verification against Intel PCS).</t>

</section>
<section anchor="signing-key-binding"><name>Signing Key Binding</name>

<t>AIR v1 does not define how the Ed25519 signing key relates to the
TEE attestation. Implementations <bcp14>SHOULD</bcp14>:</t>

<t><list style="numbers" type="1">
  <t>Generate the Ed25519 key inside the TEE at startup.</t>
  <t>Include the public key in the platform attestation document
(e.g., Nitro <spanx style="verb">public_key</spanx> user data field, TDX REPORTDATA).</t>
  <t>Provide the attestation document alongside the receipt for
end-to-end verification.</t>
</list></t>

</section>
<section anchor="tee-compromise"><name>TEE Compromise</name>

<t>AIR v1 assumes the TEE hardware is correct (Trust Assumption TA-1).
A hardware vulnerability, firmware bug, or supply chain compromise
affecting the TEE breaks all AIR guarantees. AIR v1 does not define
revocation mechanisms for compromised platforms.</t>

</section>
<section anchor="clock-integrity"><name>Clock Integrity</name>

<t>The <spanx style="verb">iat</spanx> claim depends on the workload's system clock. On AWS
Nitro, the enclave uses the host clock (no independent time source).
On Intel TDX, the CVM has a TSC but it is subject to frequency
scaling. AIR v1 freshness checks are only as accurate as the
platform clock.</t>

</section>
<section anchor="deterministic-encoding"><name>Deterministic Encoding</name>

<t>AIR v1 requires deterministic CBOR encoding (<xref target="RFC8949"/> Section
4.2.1). This ensures that the same claims always produce the same
payload bytes, preventing signature-valid variants of the same
receipt. Implementations <bcp14>MUST</bcp14> sort map keys per the CBOR
deterministic encoding rules.</t>

</section>
<section anchor="closed-claims-map"><name>Closed Claims Map</name>

<t>The claims map is closed: unknown integer keys <bcp14>MUST</bcp14> be rejected.
This prevents downgrade attacks where an attacker adds unrecognized
claims that a naive verifier might silently accept as benign.</t>

</section>
</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>

<section anchor="inputoutput-hashes"><name>Input/Output Hashes</name>

<t>The request_hash and response_hash claims contain SHA-256 hashes,
not plaintext inputs or outputs. However, for low-entropy inputs
(e.g., binary classification queries, yes/no questions), an
adversary with knowledge of the input space could brute-force the
hash to recover the original input. Deployments handling sensitive
low-entropy data <bcp14>SHOULD</bcp14> consider whether receipt exposure risks
input recovery.</t>

</section>
<section anchor="correlation-metadata"><name>Correlation Metadata</name>

<t>AIR receipts contain timestamps (iat), sequence numbers, and
identifiers (cti, iss) that could be used to correlate activity
across receipts. In privacy-sensitive deployments, operators <bcp14>SHOULD</bcp14>
consider whether the combination of receipt metadata enables
unwanted profiling.</t>

</section>
<section anchor="nonce-privacy"><name>Nonce Privacy</name>

<t>The eat_nonce claim, when present, may leak correlation data if the
same nonce is reused across sessions or if the nonce encodes
client-identifying information. Verifiers <bcp14>SHOULD</bcp14> use random nonces
and avoid embedding client identifiers in nonce values.</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document has no IANA actions at this time.</t>

<t>AIR v1 uses negative integer keys in the CWT private-use range
(keys -65537 through -65549). If AIR gains adoption, a future
version may request registration of these claims in the CWT Claims
registry established by <xref target="RFC8392"/>. The eat_profile URI
(<spanx style="verb">"https://spec.cyntrisec.com/air/v1"</spanx>) follows the EAT profile
naming conventions in <xref target="RFC9711"/> but is not registered in any
IANA registry.</t>

<t>The HTTP media type <spanx style="verb">application/eat+cwt</spanx> referenced in Section 6
is registered by <xref target="RFC9782"/>.</t>

</section>
<section anchor="implementation-status"><name>Implementation Status</name>

<t>Note to RFC Editor: Please remove this section before publication.</t>

<t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting, per
<xref target="RFC7942"/>.</t>

<section anchor="reference-implementation-rust"><name>Reference Implementation (Rust)</name>

<dl>
  <dt>Organization:</dt>
  <dd>
    <t>Cyntrisec</t>
  </dd>
  <dt>Implementation:</dt>
  <dd>
    <t>EphemeralML (<spanx style="verb">common/src/air_receipt.rs</spanx>, <spanx style="verb">common/src/air_verify.rs</spanx>)</t>
  </dd>
  <dt>Description:</dt>
  <dd>
    <t>Full AIR v1 emitter and 4-layer verifier. Generates COSE_Sign1
receipts with deterministic CBOR encoding and Ed25519 signing.
Verifier implements all four layers (parse, crypto, claims, policy)
with structured error codes.</t>
  </dd>
  <dt>Maturity:</dt>
  <dd>
    <t>Deployment-validated. Emitted in E2E paths on three platforms.</t>
  </dd>
  <dt>Coverage:</dt>
  <dd>
    <t>575 tests passing (including 16 AIR v1 conformance vector tests).</t>
  </dd>
  <dt>Performance snapshot (non-normative):</dt>
  <dd>
    <t>2026-03-01 AWS build-host microbenchmark aggregate
(<spanx style="verb">air_v1_aws_build_bench_5runs_2026-03-01</spanx>) measured crypto and verifier
costs on an AWS <spanx style="verb">c6i.xlarge</spanx> Linux host after compiling
<spanx style="verb">ephemeralml-verify</spanx> from source (valid AIR vector size 599 bytes).
Values below are 5-run median and p95:</t>
  </dd>
</dl>

<texttable>
      <ttcol align='left'>Metric</ttcol>
      <ttcol align='right'>Median</ttcol>
      <ttcol align='right'>p95</ttcol>
      <ttcol align='left'>Notes</ttcol>
      <c>SHA-256 (1 KB)</c>
      <c>0.931 us</c>
      <c>0.931 us</c>
      <c>OpenSSL 3.2.2 speed conversion</c>
      <c>SHA-256 (4 KB)</c>
      <c>3.227 us</c>
      <c>3.227 us</c>
      <c>OpenSSL 3.2.2 speed conversion</c>
      <c>Ed25519 sign</c>
      <c>31.763 us</c>
      <c>31.887 us</c>
      <c>OpenSSL 3.2.2 speed</c>
      <c>Ed25519 verify</c>
      <c>102.512 us</c>
      <c>103.338 us</c>
      <c>OpenSSL 3.2.2 speed</c>
      <c>AIR verify (Rust CLI, process-per-call)</c>
      <c>1,533.100 us</c>
      <c>1,558.608 us</c>
      <c>Includes process spawn overhead</c>
</texttable>

<t>Estimated receipt emission crypto path for a 1 KB request + 4 KB response
plus a 1 KB attestation hash and Ed25519 signing is
36.852 us median (36.958 us p95) per inference on this host.</t>

<dl>
  <dt>Separate retest run (non-normative):</dt>
  <dd>
    <t>A second 5-run retest on the same AWS instance class
(<spanx style="verb">air_v1_aws_retest_bench_5runs_2026-03-01</spanx>) reproduced SHA-256 and
Ed25519 primitive timings within approximately 1%, and reproduced the
receipt emission crypto estimate at 37.035 us median (+0.5% versus the
baseline snapshot). The Rust CLI process-per-call verify metric
increased by +14.7% in the retest; this metric includes process
fork/exec/linker overhead and is environment-sensitive.
For this reason, AIR v1 performance interpretation should prioritize
the per-inference crypto path estimate rather than CLI
process-per-call latency.</t>
  </dd>
  <dt>Environment-sensitivity check (non-normative):</dt>
  <dd>
    <t>A separate run on GCP n2-standard-4 (Intel Xeon @ 2.80 GHz, OpenSSL 3.0.13,
Ubuntu 24.04) measured the emit crypto path at 62.178 us median. The
absolute values differ from AWS due to OpenSSL version (3.0 vs 3.2
assembly paths) and CPU generation, not protocol logic. This confirms
the AIR crypto path remains in tens of microseconds across tested
environments.</t>
  </dd>
</dl>

<t>These measurements are
environment-specific and informative only; AIR v1 does not define
performance requirements.</t>

<dl>
  <dt>Contact:</dt>
  <dd>
    <t>borys@cyntrisec.com</t>
  </dd>
</dl>

</section>
<section anchor="python-interop-verifier"><name>Python Interop Verifier</name>

<dl>
  <dt>Organization:</dt>
  <dd>
    <t>Cyntrisec (same team, separate Python implementation)</t>
  </dd>
  <dt>Implementation:</dt>
  <dd>
    <t><spanx style="verb">scripts/interop_test.py</spanx></t>
  </dd>
  <dt>Description:</dt>
  <dd>
    <t>Minimal Python verifier using <spanx style="verb">pycose</spanx> and <spanx style="verb">cbor2</spanx> libraries.
Validates COSE_Sign1 structure, Ed25519 signature, and claim
presence.</t>
  </dd>
  <dt>Maturity:</dt>
  <dd>
    <t>Test/interop.</t>
  </dd>
</dl>

</section>
<section anchor="e2e-validation"><name>E2E Validation</name>

<t>The reference implementation has been validated end-to-end on three
confidential computing platforms:</t>

<texttable>
      <ttcol align='left'>Platform</ttcol>
      <ttcol align='left'>Status</ttcol>
      <ttcol align='left'>Date</ttcol>
      <c>AWS Nitro Enclaves (m6i)</c>
      <c>PASS</c>
      <c>2026-02-28</c>
      <c>GCP Confidential Space TDX (c3-standard-4)</c>
      <c>PASS</c>
      <c>2026-02-27</c>
      <c>GCP Confidential Space GPU H100 CC (a3-highgpu-1g)</c>
      <c>PASS</c>
      <c>2026-02-27</c>
</texttable>

</section>
</section>
<section anchor="examples"><name>Examples</name>

<section anchor="valid-receipt-walkthrough"><name>Valid Receipt Walkthrough</name>

<t>The following describes a valid AIR v1 receipt in diagnostic
notation. This corresponds to the <spanx style="verb">v1-nitro-no-nonce</spanx> golden vector.</t>

<t>The COSE_Sign1 envelope (tagged with CBOR tag 18):</t>

<figure><artwork><![CDATA[
18([
  h'A2012703183D',           / protected: {1: -8, 3: 61} /
  {},                         / unprotected: empty /
  h'B0...',                   / payload: CWT claims map /
  h'<64 bytes>'               / signature: Ed25519 /
])
]]></artwork></figure>

<t>The protected header decodes to:</t>

<figure><artwork><![CDATA[
{
  1: -8,    / alg: EdDSA /
  3: 61     / content type: application/cwt /
}
]]></artwork></figure>

<t>The payload (CWT claims map) includes 16 required claims plus the
EAT profile:</t>

<figure><artwork><![CDATA[
{
  1: "cyntrisec.com",                          / iss /
  6: 1740000000,                               / iat /
  7: h'<16 bytes UUID v4>',                    / cti /
  265: "https://spec.cyntrisec.com/air/v1",    / eat_profile /
  -65537: "minilm-l6-v2",                      / model_id /
  -65538: "1.0.0",                             / model_version /
  -65539: h'<32 bytes SHA-256>',               / model_hash /
  -65540: h'<32 bytes SHA-256>',               / request_hash /
  -65541: h'<32 bytes SHA-256>',               / response_hash /
  -65542: h'<32 bytes SHA-256>',               / attestation_doc_hash /
  -65543: {                                    / enclave_measurements /
    "pcr0": h'<48 bytes SHA-384>',
    "pcr1": h'<48 bytes SHA-384>',
    "pcr2": h'<48 bytes SHA-384>',
    "measurement_type": "nitro-pcr"
  },
  -65544: "policy-2026.02",                    / policy_version /
  -65545: 1,                                   / sequence_number /
  -65546: 77,                                  / execution_time_ms /
  -65547: 0,                                   / memory_peak_mb /
  -65548: "FullAttestation"                    / security_mode /
}
]]></artwork></figure>

<t>Verification with the corresponding Ed25519 public key succeeds
through all four layers.</t>

</section>
<section anchor="invalid-receipt-categories"><name>Invalid Receipt Categories</name>

<t>The specification includes 8 invalid golden vectors covering failure
modes across all verification layers:</t>

<texttable>
      <ttcol align='left'>Vector</ttcol>
      <ttcol align='left'>Layer</ttcol>
      <ttcol align='left'>Expected Failure</ttcol>
      <c>wrong-key</c>
      <c>L2</c>
      <c>SIG_FAILED</c>
      <c>wrong-alg</c>
      <c>L1</c>
      <c>BAD_ALG</c>
      <c>zero-model-hash</c>
      <c>L3</c>
      <c>ZERO_MODEL_HASH</c>
      <c>bad-measurement-length</c>
      <c>L3</c>
      <c>BAD_MEASUREMENT_LENGTH</c>
      <c>nonce-mismatch</c>
      <c>L4</c>
      <c>NONCE_MISMATCH</c>
      <c>model-hash-mismatch</c>
      <c>L4</c>
      <c>MODEL_HASH_MISMATCH</c>
      <c>platform-mismatch</c>
      <c>L4</c>
      <c>PLATFORM_MISMATCH</c>
      <c>stale-iat</c>
      <c>L4</c>
      <c>TIMESTAMP_STALE</c>
</texttable>

<t>Complete vector files (JSON with hex-encoded COSE bytes, expected
failure codes, and policy overrides) are available in the reference
implementation repository.</t>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC8032">
  <front>
    <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
    <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
    <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
    <date month="January" year="2017"/>
    <abstract>
      <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8032"/>
  <seriesInfo name="DOI" value="10.17487/RFC8032"/>
</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="RFC8949">
  <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="RFC9052">
  <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="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="RFC9711">
  <front>
    <title>The Entity Attestation Token (EAT)</title>
    <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
    <author fullname="G. Mandyam" initials="G." surname="Mandyam"/>
    <author fullname="J. O'Donoghue" initials="J." surname="O'Donoghue"/>
    <author fullname="C. Wallace" initials="C." surname="Wallace"/>
    <date month="April" year="2025"/>
    <abstract>
      <t>An Entity Attestation Token (EAT) provides an attested claims set that describes the state and characteristics of an entity, a device such as a smartphone, an Internet of Things (IoT) device, network equipment, or such. This claims set is used by a relying party, server, or service to determine the type and degree of trust placed in the entity.</t>
      <t>An EAT is either a CBOR Web Token (CWT) or a JSON Web Token (JWT) with attestation-oriented claims.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9711"/>
  <seriesInfo name="DOI" value="10.17487/RFC9711"/>
</reference>


<reference anchor="FIPS180-4" target="https://csrc.nist.gov/publications/detail/fips/180/4/final">
  <front>
    <title>Secure Hash Standard (SHS)</title>
    <author >
      <organization>National Institute of Standards and Technology</organization>
    </author>
    <date year="2015" month="August"/>
  </front>
</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 title='Informative References' anchor="sec-informative-references">



<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="RFC9782">
  <front>
    <title>Entity Attestation Token (EAT) Media Types</title>
    <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="T. Fossati" initials="T." surname="Fossati"/>
    <date month="May" year="2025"/>
    <abstract>
      <t>The payloads used in Remote ATtestation procedureS (RATS) may require an associated media type for their conveyance, for example, when the payloads are used in RESTful APIs.</t>
      <t>This memo defines media types to be used for Entity Attestation Tokens (EATs).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9782"/>
  <seriesInfo name="DOI" value="10.17487/RFC9782"/>
</reference>


<reference anchor="I-D.messous-eat-ai" >
  <front>
    <title>Entity Attestation Token (EAT) Profile for Autonomous AI Agents</title>
    <author initials="A." surname="Messous">
      <organization></organization>
    </author>
    <author initials="L." surname="Morand">
      <organization></organization>
    </author>
    <author initials="P. C." surname="Liu">
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<reference anchor="SCITT" target="https://datatracker.ietf.org/wg/scitt/about/">
  <front>
    <title>Supply Chain Integrity, Transparency and Trust (SCITT)</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>

</references>


<?line 1042?>

<section anchor="appendix-cddl"><name>Full CDDL Schema</name>

<t>This appendix reproduces the complete CDDL schema from <xref target="cddl"/> for
convenience.</t>

<figure><sourcecode type="cddl"><![CDATA[
; Attested Inference Receipt (AIR) v1 -- CDDL Schema
; Status: v1.0 FROZEN
; References: RFC 9052, RFC 8392, RFC 9711, RFC 8949, RFC 8610

air-receipt = #6.18([
  protected:   bstr .cbor air-protected-header,
  unprotected: air-unprotected-header,
  payload:     bstr .cbor air-claims,
  signature:   bstr .size 64
])

air-protected-header = {
  1 => -8,          ; alg: EdDSA (Ed25519)
  3 => 61,          ; content type: application/cwt
}

air-unprotected-header = {
  ? 4 => bstr,      ; kid: key identifier (reserved)
}

air-claims = {
  ; --- Standard CWT/EAT claims ---
  1   => tstr,                  ; iss: issuer
  6   => uint,                  ; iat: issued-at (Unix seconds)
  7   => bstr .size 16,         ; cti: CWT ID (UUID v4, 16 bytes)
  265 => "https://spec.cyntrisec.com/air/v1",  ; eat_profile
  ? 10 => bstr,                 ; eat_nonce (optional)

  ; --- AIR private claims ---
  -65537 => tstr,               ; model_id
  -65538 => tstr,               ; model_version
  -65539 => sha256-hash,        ; model_hash
  -65540 => sha256-hash,        ; request_hash
  -65541 => sha256-hash,        ; response_hash
  -65542 => sha256-hash,        ; attestation_doc_hash
  -65543 => enclave-measurements, ; enclave_measurements
  -65544 => tstr,               ; policy_version
  -65545 => uint,               ; sequence_number
  -65546 => uint,               ; execution_time_ms
  -65547 => uint,               ; memory_peak_mb
  -65548 => tstr,               ; security_mode

  ; --- Optional claims (v1.0) ---
  ? -65549 => tstr,             ; model_hash_scheme
}

sha256-hash = bstr .size 32
sha384-hash = bstr .size 48

enclave-measurements = nitro-measurements / tdx-measurements

nitro-measurements = {
  "pcr0"             => sha384-hash,
  "pcr1"             => sha384-hash,
  "pcr2"             => sha384-hash,
  ? "pcr8"           => sha384-hash,
  "measurement_type" => "nitro-pcr",
}

tdx-measurements = {
  "pcr0"             => sha384-hash,   ; MRTD
  "pcr1"             => sha384-hash,   ; RTMR0
  "pcr2"             => sha384-hash,   ; RTMR1
  "measurement_type" => "tdx-mrtd-rtmr",
}
]]></sourcecode></figure>

</section>
<section anchor="appendix-vectors"><name>Golden Vector Summary</name>

<t>The reference implementation includes 10 golden test vectors (2
valid, 8 invalid) generated with a deterministic Ed25519 key pair:</t>

<t><list style="symbols">
  <t>Seed: <spanx style="verb">2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a</spanx></t>
  <t>Public key: <spanx style="verb">197f6b23e16c8532c6abc838facd5ea789be0c76b2920334039bfa8b3d368d61</spanx></t>
</list></t>

<t>Vectors are JSON files containing the COSE_Sign1 bytes (hex-encoded),
expected verification outcomes, and policy overrides for Layer 4
tests. They are available in the repository under <spanx style="verb">vectors/</spanx>.</t>

<t>Valid vectors:</t>

<t><list style="symbols">
  <t><spanx style="verb">v1-nitro-no-nonce.json</spanx>: Nitro measurements, no eat_nonce
(canonical golden vector).</t>
  <t><spanx style="verb">v1-tdx-with-nonce.json</spanx>: TDX measurements, with eat_nonce
(tests nonce binding and TDX measurement variant).</t>
</list></t>

<t>Invalid vectors exercise specific failure modes across all four
verification layers:</t>

<t><list style="symbols">
  <t><spanx style="verb">v1-wrong-key.json</spanx> (L2: SIG_FAILED)</t>
  <t><spanx style="verb">v1-wrong-alg.json</spanx> (L1: BAD_ALG)</t>
  <t><spanx style="verb">v1-zero-model-hash.json</spanx> (L3: ZERO_MODEL_HASH)</t>
  <t><spanx style="verb">v1-bad-measurement-length.json</spanx> (L3: BAD_MEASUREMENT_LENGTH)</t>
  <t><spanx style="verb">v1-nonce-mismatch.json</spanx> (L4: NONCE_MISMATCH)</t>
  <t><spanx style="verb">v1-model-hash-mismatch.json</spanx> (L4: MODEL_HASH_MISMATCH)</t>
  <t><spanx style="verb">v1-platform-mismatch.json</spanx> (L4: PLATFORM_MISMATCH)</t>
  <t><spanx style="verb">v1-stale-iat.json</spanx> (L4: TIMESTAMP_STALE)</t>
</list></t>

</section>
<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>The author thanks the RATS working group for the foundational
architecture (<xref target="RFC9334"/>), the EAT editors for the profiling
framework (<xref target="RFC9711"/>), and the COSE editors for the signing
structures (<xref target="RFC9052"/>). The measurement of confidential computing
overhead referenced in this document was performed on AWS Nitro
Enclaves and GCP Confidential Space (Intel TDX).</t>

</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

