<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-anandakrishnan-rats-ptv-agent-identity-01" category="exp" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="PTV Agent Identity">The Prove-Transform-Verify (PTV) Protocol for Attested Agent Identity</title>
    <seriesInfo name="Internet-Draft" value="draft-anandakrishnan-rats-ptv-agent-identity-01"/>
    <author initials="A." surname="Damodaran" fullname="Anandakrishnan Damodaran">
      <organization>Sovereign AI Stack</organization>
      <address>
        <email>ananda.krishnan@hotmail.com</email>
        <uri>https://github.com/anandkrshnn</uri>
      </address>
    </author>
    <date year="2026" month="September" day="29"/>
    <area>Security</area>
    <workgroup>RATS</workgroup>
    <keyword>attestation</keyword>
    <keyword>agent identity</keyword>
    <keyword>EAT</keyword>
    <keyword>RATS</keyword>
    <abstract>
      <?line 59?>

<t>This document describes the Prove-Transform-Verify (PTV) protocol
for hardware-anchored attestation of AI agent identity. PTV enables
an agent to prove, at exercise time, that it is bound to an enrolled
attestation key and an authorized configuration, without exposing
model weights or inference inputs.</t>
      <t>PTV is a thin request/response profile over the RATS architecture
(RFC 9334) and the Entity Attestation Token (RFC 9711). It does not
replace workload identifiers such as SPIFFE or WIMSE. It does not
attest behavioral continuity; behavioral continuity is a separate
requirement class that relying parties need to treat as such.</t>
      <t>This revision is intended as Experimental. It defines a common
CBOR/CDDL message set, four message types, a COSE-based message
protection rule, an informative EAT claim mapping, and a threat
model that separates identity binding integrity from behavioral
continuity.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-anandakrishnan-rats-ptv-agent-identity/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Remote ATtestation procedureS (RATS) Working Group mailing list (<eref target="mailto:rats@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/rats/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/rats/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 79?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Current identity frameworks (OAuth 2.0, SPIFFE, WIMSE) establish
workload identity but do not, by themselves, verify which model an
agent is running or whether the running configuration matches what
was enrolled. A compromised agent can therefore present valid
credentials while executing unauthorized code or policy.</t>
      <t>PTV addresses the identity-binding gap:</t>
      <ul spacing="normal">
        <li>
          <t>bind the attestation to a hardware root of trust (TPM 2.0
Attestation Key <xref target="TPM2"/>, or equivalent TEE attestation key);</t>
        </li>
        <li>
          <t>require a verifier- or relying-party-issued nonce so that
evidence is fresh at exercise time;</t>
        </li>
        <li>
          <t>carry either raw evidence (ROUTINE band) or a zero-knowledge
proof of an enrolled predicate (ZK_PROOF band);</t>
        </li>
        <li>
          <t>leave behavioral continuity, delegation provenance, and
execution-outcome verification to complementary mechanisms.</t>
        </li>
      </ul>
      <t>This document does not claim that a valid PTV attestation means
the agent is still behaving inside its enrolled envelope after
context compression, fine-tuning, or prompt injection. A relying
party that needs that property MUST combine PTV with exercise-time
re-attestation plus an execution-receipt mechanism (for example
SCITT <xref target="RFC9943"/>).</t>
      <t>Example relying-party questions PTV can answer:</t>
      <ul spacing="normal">
        <li>
          <t>"Is the signer of this evidence the enrolled agent instance?"</t>
        </li>
        <li>
          <t>"Does the attested software/configuration hash match the
authorized set?"</t>
        </li>
        <li>
          <t>"Was this evidence produced in response to this nonce?"</t>
        </li>
      </ul>
      <t>Example questions PTV cannot answer alone:</t>
      <ul spacing="normal">
        <li>
          <t>"Did the agent follow the clinical protocol on this patient?"</t>
        </li>
        <li>
          <t>"Who delegated this action?"</t>
        </li>
        <li>
          <t>"What side effect did the agent actually cause?"</t>
        </li>
      </ul>
      <section anchor="relationship-to-wimse-and-spiffe">
        <name>Relationship to WIMSE and SPIFFE</name>
        <t>When a WIMSE or SPIFFE identifier is present, that identifier
names the workload. PTV evidence is additional appraisal input
about the same workload. PTV does not mint a new identifier
namespace. See <xref target="I-D.ietf-wimse-aims"/>.</t>
      </section>
      <section anchor="changes-from-00">
        <name>Changes from -00</name>
        <ul spacing="normal">
          <li>
            <t>Intended status changed from Standards Track to Experimental.</t>
          </li>
          <li>
            <t>Behavioral-continuity non-claim moved into the Abstract.</t>
          </li>
          <li>
            <t>Federation Hub removed from the protocol diagram; Transform is
performed by the Attester or an Edge Proxy.</t>
          </li>
          <li>
            <t>triage_band reduced to ROUTINE (0) and ZK_PROOF (1). BFT (2)
and PTV_ERR_004 removed until a consensus mechanism is specified.</t>
          </li>
          <li>
            <t>sovereign_bound is OPTIONAL unless the policy object requires
it.</t>
          </li>
          <li>
            <t>CDDL rewritten: one map per message type, no duplicate keys,
and evidence and proof are mutually exclusive via a CDDL group
choice. The generic envelope is removed.</t>
          </li>
          <li>
            <t>Message protection added: types 2 and 3 are COSE_Sign1 signed by
the attestation key.</t>
          </li>
          <li>
            <t>Nonce issuance and Verifier-side nonce checking specified.</t>
          </li>
          <li>
            <t>Nonce size constrained to 16-64 bytes for compatibility with
the EAT nonce claim.</t>
          </li>
          <li>
            <t>Informative EAT claim mapping added and corrected.</t>
          </li>
          <li>
            <t>Edge Proxy key-custody threats added to Security Considerations.</t>
          </li>
          <li>
            <t>Trusted-setup, privacy, and self-asserted-metadata
considerations added.</t>
          </li>
          <li>
            <t>Prototype performance table moved to an appendix and aligned
with the prototype repository.</t>
          </li>
          <li>
            <t>Predicate for the ZK_PROOF band stated as a public-input list,
without mandating a proof system.</t>
          </li>
          <li>
            <t>SCITT reference corrected to RFC 9943.</t>
          </li>
          <li>
            <t>Implementation Status section added.</t>
          </li>
          <li>
            <t>Appendix B added with CBOR diagnostic-notation examples.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="terminology-and-definitions">
      <name>Terminology and Definitions</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>
      <dl>
        <dt>Agent:</dt>
        <dd>
          <t>An autonomous software entity that performs tasks on behalf of
a user or system.</t>
        </dd>
        <dt>Attester:</dt>
        <dd>
          <t>The agent component that generates Evidence or a Proof about
its identity-binding state. Corresponds to the Attester role
in <xref target="RFC9334"/>.</t>
        </dd>
        <dt>Verifier:</dt>
        <dd>
          <t>A system that appraises Evidence or a Proof without needing
the Attester's inference inputs or model weights.
Corresponds to the Verifier role in <xref target="RFC9334"/>.</t>
        </dd>
        <dt>Relying Party:</dt>
        <dd>
          <t>A system that consumes Attestation Results to make an
authorization decision. Corresponds to the Relying Party
role in <xref target="RFC9334"/>.</t>
        </dd>
        <dt>Edge Proxy:</dt>
        <dd>
          <t>An optional gateway that generates or forwards attestation
on behalf of a constrained device that lacks a local hardware
root of trust. The Edge Proxy is an Attester from the
Verifier's point of view and MUST be treated as a distinct
trust component.</t>
        </dd>
        <dt>Nonce Issuer:</dt>
        <dd>
          <t>The Relying Party or the Verifier, whichever generates the
nonce for a session. See <xref target="nonce-flow"/>.</t>
        </dd>
        <dt>Nonce:</dt>
        <dd>
          <t>A cryptographically random value supplied by the Nonce Issuer
to bind an attestation session and prevent replay. See
<xref target="RFC4086"/>.</t>
        </dd>
        <dt>Triage Band:</dt>
        <dd>
          <t>The attestation mechanism selected for a session. This
version defines 0 (ROUTINE: Evidence) and 1 (ZK_PROOF: Proof).</t>
        </dd>
        <dt>Governance Pack / Policy:</dt>
        <dd>
          <t>Optional constraints the Attester must satisfy, referenced
by URI or carried inline.</t>
        </dd>
        <dt>Proof:</dt>
        <dd>
          <t>A zero-knowledge proof that a stated predicate holds over
Attester-private inputs. The proof system is not mandated.</t>
        </dd>
        <dt>Evidence:</dt>
        <dd>
          <t>Attestation Evidence in the RATS sense <xref target="RFC9334"/>, typically
an EAT <xref target="RFC9711"/> or a TPM quote.</t>
        </dd>
        <dt>Sovereign Bound Metadata:</dt>
        <dd>
          <t>Optional jurisdiction, residency, and compliance labels
carried in the message. They are integrity-protected by the
message signature (<xref target="msg-auth"/>) but are self-asserted unless
covered by appraised Evidence.</t>
        </dd>
        <dt>Hardware Root of Trust:</dt>
        <dd>
          <t>A TPM 2.0, Secure Enclave, or equivalent component that can
produce Evidence bound to an attestation key that never
leaves the component.</t>
        </dd>
      </dl>
    </section>
    <section anchor="threat-model">
      <name>Threat Model</name>
      <section anchor="identity-binding-integrity">
        <name>Identity Binding Integrity</name>
        <t>Identity binding integrity asks: "Is this the enrolled agent
instance, and is the signer trusted to hold the corresponding
attestation key?"</t>
        <t>PTV addresses this class by:</t>
        <ul spacing="normal">
          <li>
            <t>binding Evidence or Proof to a hardware attestation key
through the message signature (<xref target="msg-auth"/>);</t>
          </li>
          <li>
            <t>using a session nonce for freshness;</t>
          </li>
          <li>
            <t>allowing the Verifier to appraise configuration hashes
against an endorsed reference value.</t>
          </li>
        </ul>
        <t>A Relying Party MUST NOT treat a PTV result as evidence of
anything beyond identity binding integrity unless additional
mechanisms are in place.</t>
      </section>
      <section anchor="behavioral-continuity-out-of-scope">
        <name>Behavioral Continuity (Out of Scope)</name>
        <t>Behavioral continuity asks: "Is the enrolled agent still
behaving within its attested envelope after context changes?"</t>
        <t>This version of PTV does not detect or mitigate:</t>
        <ul spacing="normal">
          <li>
            <t>behavioral drift after context compression or summarization;</t>
          </li>
          <li>
            <t>model-weight replacement or fine-tuning after enrollment;</t>
          </li>
          <li>
            <t>runtime drift from prompt injection or accumulated state
corruption.</t>
          </li>
        </ul>
        <t>A valid PTV attestation on a behaviorally drifted agent is a
false signal of behavioral identity continuity. For high-stakes
use (clinical decision support, ICS/OT), Relying Parties SHOULD
treat behavioral continuity as a separate requirement and
compose PTV with delegation provenance and execution receipts.
See <xref target="interop"/>.</t>
      </section>
      <section anchor="exercise-time-freshness">
        <name>Exercise-Time Freshness</name>
        <t>For high-stakes deployments, Relying Parties SHOULD demand
fresh attestation at exercise time (per authorization decision)
via an EAT nonce challenge or a PTV_PROVE_REQ, rather than
relying solely on a credential issued at enrollment.</t>
      </section>
    </section>
    <section anchor="ptv-model-and-roles">
      <name>PTV Model and Roles</name>
      <section anchor="protocol-overview">
        <name>Protocol Overview</name>
        <t>PTV has three phases. They are logical, not a new transport.</t>
        <ol spacing="normal" type="1"><li>
            <t>PROVE. The Attester produces Evidence or a Proof over the
current configuration, bound to the challenge nonce and the
hardware attestation key.</t>
          </li>
          <li>
            <t>TRANSFORM. Only Evidence or Proof is forwarded. Inference
inputs, model weights, and plant telemetry stay local. The
forwarder is the Attester itself or an Edge Proxy.</t>
          </li>
          <li>
            <t>VERIFY. The Verifier appraises the Evidence or Proof and
returns a result to the Relying Party.</t>
          </li>
        </ol>
        <figure anchor="fig-seq">
          <name>PTV message flow (A: nonce registration, see below)</name>
          <artwork><![CDATA[
Relying Party          Attester / Edge Proxy           Verifier
     |                         |                            |
     |-- nonce, policy (A) ---------------------------------->|
     |-- PTV_PROVE_REQ ------->|                            |
     |     (nonce, policy)     |                            |
     |                         |-- generate Evidence/Proof  |
     |                         |                            |
     |                         |-- PTV_PROVE_RESP --------->|
     |                         |   or PTV_TRANSFORM_ATT     |
     |                         |   (COSE_Sign1 by AK)       |
     |                         |                            |
     |<--------- PTV_VERIFY_RESULT -------------------------|
]]></artwork>
        </figure>
        <t>This flow is a profile of the Challenge/Response interaction
model in <xref target="I-D.ietf-rats-reference-interaction-models"/>.</t>
      </section>
      <section anchor="nonce-flow">
        <name>Nonce Issuance and Checking</name>
        <t>The Verifier can only judge freshness if it knows which nonce was
issued for the session. One of the following two modes MUST be
used:</t>
        <dl>
          <dt>RP-issued:</dt>
          <dd>
            <t>The Relying Party generates the nonce, sends it in
PTV_PROVE_REQ, and also gives the Verifier the nonce (and the
policy) for the session over an authenticated channel
(step A in <xref target="fig-seq"/>). The Verifier MUST reject a response
whose nonce does not match a registered, unconsumed session.</t>
          </dd>
          <dt>Verifier-issued:</dt>
          <dd>
            <t>The Verifier generates the nonce and hands it to the Relying
Party, which places it in PTV_PROVE_REQ. The Verifier MUST
record the nonce as outstanding and mark it consumed on first
successful or failed appraisal.</t>
          </dd>
        </dl>
        <t>In both modes a nonce is single-use. A Verifier that cannot
associate a received nonce with an issued session MUST return
result failure with reason PTV_ERR_006.</t>
      </section>
      <section anchor="roles">
        <name>Roles</name>
        <ul spacing="normal">
          <li>
            <t>Attester: produces PTV_PROVE_RESP.</t>
          </li>
          <li>
            <t>Edge Proxy: optional; produces PTV_TRANSFORM_ATT on behalf of
a constrained device and is itself an Attester.</t>
          </li>
          <li>
            <t>Verifier: consumes RESP or TRANSFORM_ATT; produces
PTV_VERIFY_RESULT.</t>
          </li>
          <li>
            <t>Relying Party: issues PTV_PROVE_REQ and consumes
PTV_VERIFY_RESULT.</t>
          </li>
        </ul>
        <t>The Verifier and Relying Party MAY be co-located, in which case
step A in <xref target="fig-seq"/> is internal.</t>
      </section>
      <section anchor="deployment-models">
        <name>Deployment Models</name>
        <dl>
          <dt>Direct Mode:</dt>
          <dd>
            <t>The agent has a TPM 2.0 or TEE and produces Evidence or
Proof locally.</t>
          </dd>
          <dt>Proxy-Assisted Mode:</dt>
          <dd>
            <t>A constrained device (legacy PLC, sensor) has no hardware
root of trust. An Edge Proxy attests that it is mediating
that device under an enrolled proxy policy. The Verifier
appraises the proxy, not the device CPU. See
<xref target="sec-proxy"/>.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="message-formats">
      <name>Message Formats</name>
      <section anchor="cborcddl-definitions">
        <name>CBOR/CDDL Definitions</name>
        <t>All PTV messages are CBOR maps <xref target="RFC8949"/> described in CDDL
<xref target="RFC8610"/>. The CDDL fragments in this section, concatenated in
order, form one CDDL module. Implementers SHOULD check the
concatenation with a CDDL tool.</t>
        <sourcecode type="cddl"><![CDATA[
triage-band = 0 / 1   ; 0=ROUTINE, 1=ZK_PROOF

; 16..64 bytes, compatible with the EAT nonce claim (RFC 9711)
nonce-type = bstr .size (16..64)

ptv-result = &(
  success: 0,
  failure: 1,
  indeterminate: 2
)

ptv-policy = {
  ? audience: tstr,
  ? policy_uri: tstr,
  ? trust_domain: tstr,
  ? requirements: [* tstr],
  ? require_sovereign_bound: bool
}

sovereign-bound = {
  jurisdiction: tstr,
  data_residency: tstr,
  compliance: [* tstr]
}

; Fields common to every message. msg_type and timestamp are
; NOT here; each message map declares them exactly once.
ptv-common = (
  ptv_version: tstr,          ; this document: "1.1"
  nonce: nonce-type,
  ? extensions: { * tstr => any }
)
]]></sourcecode>
        <t>behavior_fingerprint remains OPTIONAL and opaque. This version
defines no processing rules for it.</t>
      </section>
      <section anchor="mutual-exclusion-of-evidence-and-proof">
        <name>Mutual Exclusion of Evidence and Proof</name>
        <t>In PTV_PROVE_RESP and PTV_TRANSFORM_ATT:</t>
        <ul spacing="normal">
          <li>
            <t>ROUTINE (triage_band = 0): evidence MUST be present and
proof MUST NOT be present.</t>
          </li>
          <li>
            <t>ZK_PROOF (triage_band = 1): proof MUST be present and
evidence MUST NOT be present.</t>
          </li>
        </ul>
        <t>A message that contains both, or neither, MUST be rejected with
PTV_ERR_008.</t>
        <sourcecode type="cddl"><![CDATA[
payload-routine = (
  triage_band: 0,
  evidence: bstr
)

payload-zk = (
  triage_band: 1,
  proof: bstr
)
]]></sourcecode>
        <t>sovereign_bound MUST be present if policy.require_sovereign_bound
is true in the corresponding request. Otherwise it is OPTIONAL.</t>
      </section>
      <section anchor="message-types">
        <name>Message Types</name>
        <section anchor="ptv-prove-req">
          <name>PTV_PROVE_REQ (Type 1)</name>
          <t>Sent by the Relying Party (or Verifier acting for it).</t>
          <sourcecode type="cddl"><![CDATA[
ptv-prove-req = {
  ptv-common,
  msg_type: 1,
  ? timestamp: time,
  ? policy: ptv-policy
}
]]></sourcecode>
          <t>The nonce MUST be at least 128 bits of cryptographic randomness
<xref target="RFC4086"/>, MUST be 16 to 64 bytes long, and MUST be unique
across attestation sessions of its Nonce Issuer.</t>
        </section>
        <section anchor="ptv-prove-resp">
          <name>PTV_PROVE_RESP (Type 2)</name>
          <t>Sent by a direct-mode Attester.</t>
          <sourcecode type="cddl"><![CDATA[
ptv-prove-resp = {
  ptv-common,
  msg_type: 2,
  attester_id: tstr,
  ? sovereign_bound: sovereign-bound,
  (payload-routine // payload-zk),
  ? behavior_fingerprint: bstr,
  timestamp: time
}
]]></sourcecode>
          <t>evidence, when present, SHOULD be an EAT <xref target="RFC9711"/> whose
eat_nonce equals the request nonce. See <xref target="eat-map"/>.</t>
          <t>proof, when present, is an opaque encoding of a ZK proof.
The public inputs of the proof MUST include:</t>
          <ol spacing="normal" type="1"><li>
              <t>the request nonce;</t>
            </li>
            <li>
              <t>the Attester identifier, or a hash of the public part of the
attestation key that signs the message (<xref target="msg-auth"/>);</t>
            </li>
            <li>
              <t>a configuration digest H(model_id || policy_id ||
runtime_measurement) whose reference value is endorsed
out of band;</t>
            </li>
            <li>
              <t>optionally, a digest of sovereign_bound when that field
is present.</t>
            </li>
          </ol>
          <t>This document does not mandate Groth16, PLONK, or any other
system. Deployments MUST document the proof system, curve,
and verifying key distribution.</t>
        </section>
        <section anchor="ptv-transform-att">
          <name>PTV_TRANSFORM_ATT (Type 3)</name>
          <t>Sent by an Edge Proxy. Same payload rules as Type 2.
attester_id identifies the proxy. The mediated device
identity, if any, MAY appear in extensions.</t>
          <sourcecode type="cddl"><![CDATA[
ptv-transform-att = {
  ptv-common,
  msg_type: 3,
  attester_id: tstr,
  ? sovereign_bound: sovereign-bound,
  (payload-routine // payload-zk),
  timestamp: time
}
]]></sourcecode>
        </section>
        <section anchor="ptv-verify-result">
          <name>PTV_VERIFY_RESULT (Type 4)</name>
          <sourcecode type="cddl"><![CDATA[
ptv-verify-result = {
  ptv-common,
  msg_type: 4,
  result: ptv-result,
  ? reason: tstr,
  ? audit_id: tstr,
  timestamp: time
}

ptv-message = ptv-prove-req / ptv-prove-resp /
              ptv-transform-att / ptv-verify-result
]]></sourcecode>
          <t>reason SHOULD use a code from <xref target="errors"/> when result is
not success.</t>
        </section>
      </section>
      <section anchor="msg-auth">
        <name>Message Authentication</name>
        <t>PTV_PROVE_RESP and PTV_TRANSFORM_ATT MUST be carried as a
COSE_Sign1 <xref target="RFC9052"/> whose payload is the CBOR encoding of the
message and whose signature is produced by the attestation key
(AK) identified by attester_id. This signature is what binds a
ZK_PROOF to the hardware root of trust: the proof alone carries
no hardware binding, and a Verifier MUST NOT treat a ZK_PROOF
message without a valid AK signature as attested. For the ROUTINE
band, the embedded Evidence is separately signed per its own
format; the outer signature additionally protects sovereign_bound
and the other envelope fields.</t>
        <t>PTV_VERIFY_RESULT SHOULD be a COSE_Sign1 signed by the Verifier,
unless it is carried over a channel that authenticates the
Verifier to the Relying Party and protects integrity.</t>
        <sourcecode type="cddl"><![CDATA[
ptv-signed-message = #6.18([
  protected: bstr,
  unprotected: { * any => any },
  payload: bstr .cbor ptv-message,
  signature: bstr
])
]]></sourcecode>
        <t>The mapping of attester_id to a verification key is an enrollment
matter and is outside this document; the Verifier MUST have that
key (or a certificate chain to it) from enrollment.</t>
      </section>
      <section anchor="errors">
        <name>Error Code Registry</name>
        <t>These codes are for the reason field. They are not an IANA
registry in this version.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Code</th>
              <th align="left">Meaning</th>
              <th align="left">Typical recovery</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">PTV_ERR_001</td>
              <td align="left">TPM/TEE attestation failed</td>
              <td align="left">Check local RoT and AK</td>
            </tr>
            <tr>
              <td align="left">PTV_ERR_002</td>
              <td align="left">Proof verification failed</td>
              <td align="left">Regenerate with correct inputs</td>
            </tr>
            <tr>
              <td align="left">PTV_ERR_003</td>
              <td align="left">Jurisdiction mismatch</td>
              <td align="left">Compare sovereign_bound</td>
            </tr>
            <tr>
              <td align="left">PTV_ERR_005</td>
              <td align="left">Envelope expired</td>
              <td align="left">Request a new nonce</td>
            </tr>
            <tr>
              <td align="left">PTV_ERR_006</td>
              <td align="left">Nonce replay or unknown</td>
              <td align="left">Discard; issue new nonce</td>
            </tr>
            <tr>
              <td align="left">PTV_ERR_007</td>
              <td align="left">Config digest not approved</td>
              <td align="left">Update endorsed reference set</td>
            </tr>
            <tr>
              <td align="left">PTV_ERR_008</td>
              <td align="left">Evidence/proof mutex error</td>
              <td align="left">Reject; do not retry same msg</td>
            </tr>
            <tr>
              <td align="left">PTV_ERR_009</td>
              <td align="left">Proxy policy unsatisfied</td>
              <td align="left">Re-enroll proxy or device</td>
            </tr>
            <tr>
              <td align="left">PTV_ERR_010</td>
              <td align="left">Signature invalid</td>
              <td align="left">Check AK enrollment</td>
            </tr>
          </tbody>
        </table>
        <t>PTV_ERR_004 (quorum/BFT) from -00 is reserved and MUST NOT be
used until a consensus mechanism is specified.</t>
      </section>
    </section>
    <section anchor="eat-map">
      <name>Informative EAT Mapping</name>
      <t>When Evidence is an EAT, the following mapping is RECOMMENDED.
It is not a new EAT profile registration. Claim names are those
of <xref target="RFC9711"/>.</t>
      <table>
        <thead>
          <tr>
            <th align="left">PTV field / concept</th>
            <th align="left">EAT claim</th>
            <th align="left">Notes</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">nonce</td>
            <td align="left">eat_nonce</td>
            <td align="left">MUST match PTV nonce (PTV: 16-64 bytes)</td>
          </tr>
          <tr>
            <td align="left">attester_id</td>
            <td align="left">ueid or oemid</td>
            <td align="left">Stable instance identity</td>
          </tr>
          <tr>
            <td align="left">configuration digest</td>
            <td align="left">measurements</td>
            <td align="left">Endorsed reference values</td>
          </tr>
          <tr>
            <td align="left">hardware model</td>
            <td align="left">hwmodel, hwversion</td>
            <td align="left">As available; not the RoT type itself</td>
          </tr>
          <tr>
            <td align="left">timestamp</td>
            <td align="left">iat</td>
            <td align="left">Also carried in the PTV message</td>
          </tr>
          <tr>
            <td align="left">policy.audience</td>
            <td align="left">aud</td>
            <td align="left">CWT/JWT claim</td>
          </tr>
          <tr>
            <td align="left">policy.trust_domain</td>
            <td align="left">none standard</td>
            <td align="left">Carry in PTV policy</td>
          </tr>
          <tr>
            <td align="left">EAT profile</td>
            <td align="left">eat_profile</td>
            <td align="left">Identifies the profile, not a trust domain</td>
          </tr>
          <tr>
            <td align="left">sovereign_bound</td>
            <td align="left">none standard</td>
            <td align="left">Carry in EAT submodule or PTV message</td>
          </tr>
          <tr>
            <td align="left">proof (ZK_PROOF band)</td>
            <td align="left">not an EAT</td>
            <td align="left">Proof is the payload; EAT optional sidecar</td>
          </tr>
        </tbody>
      </table>
      <t>PTV Evidence MAY itself be a CMW-wrapped EAT <xref target="RFC9999"/>.
A future revision may define a concrete eat_profile URI.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="freshness-and-replay">
        <name>Freshness and Replay</name>
        <t>Every PTV attestation MUST echo the request nonce. Verifiers
MUST reject a nonce that was not issued for a registered session
or that has already been consumed (<xref target="nonce-flow"/>). Timestamps
SHOULD be checked against a deployment-specific window. A window
of 300 seconds is RECOMMENDED as a starting point, not a protocol
constant.</t>
      </section>
      <section anchor="zero-knowledge-proof-mechanism">
        <name>Zero-Knowledge Proof Mechanism</name>
        <t>PTV is compatible with ZK proof systems and does not mandate
one. The predicate is the public-input list in
<xref target="ptv-prove-resp"/>. Deployers MUST treat verifying-key
distribution as an endorsement problem in the RATS sense
<xref target="RFC9334"/>.</t>
        <t>A ZK proof that does not bind the nonce is not a PTV proof.
A ZK proof that is not covered by a valid AK signature
(<xref target="msg-auth"/>) is not hardware-bound.</t>
        <t>Some proof systems (Groth16, for example) require a per-circuit
trusted setup. Whoever retains the setup randomness ("toxic
waste") can forge proofs that verify. Deployments using such
systems MUST document how the setup was performed, SHOULD use a
multi-party ceremony, and MUST treat a single-party setup as
suitable only for non-adversarial testing. Deployments SHOULD
also state the security level of the chosen curve.</t>
      </section>
      <section anchor="identity-misbinding">
        <name>Identity Misbinding</name>
        <t>Attestations SHOULD be bound to the agent instance via a
hardware attestation key. Software-only attestations are NOT
RECOMMENDED for high-assurance deployments. Values read from a
platform without a signature by a hardware-protected key (for
example a public key or an event log read through an operating
system interface) are not Evidence in the sense of <xref target="RFC9334"/>
and MUST NOT be presented as such.</t>
      </section>
      <section anchor="self-asserted-metadata">
        <name>Self-Asserted Metadata</name>
        <t>sovereign_bound labels are integrity-protected by the message
signature but are claims made by the Attester. A Verifier MUST NOT
treat them as verified facts unless they are also covered by
appraised Evidence or an endorsement.</t>
      </section>
      <section anchor="sec-proxy">
        <name>Edge Proxy Trust</name>
        <t>In Proxy-Assisted Mode the Verifier learns that a proxy
attested, not that the constrained device ran a particular
binary. Threats include:</t>
        <ul spacing="normal">
          <li>
            <t>a compromised proxy attesting for a device it does not
mediate;</t>
          </li>
          <li>
            <t>key reuse across proxied devices;</t>
          </li>
          <li>
            <t>silent substitution of the downstream channel.</t>
          </li>
        </ul>
        <t>Mitigations:</t>
        <ul spacing="normal">
          <li>
            <t>enroll each proxy under its own attestation key;</t>
          </li>
          <li>
            <t>put the mediated-device identifier into extensions and
into the configuration digest when the device identity is
stable;</t>
          </li>
          <li>
            <t>rate-limit and independently audit proxy enrollment;</t>
          </li>
          <li>
            <t>do not treat proxy Evidence as device-CPU Evidence.</t>
          </li>
        </ul>
      </section>
      <section anchor="denial-of-service">
        <name>Denial of Service</name>
        <t>Verifiers SHOULD rate-limit proof verification and MAY cache
verifying keys and ROUTINE Evidence appraisals keyed by
(attester_id, config_digest).</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>attester_id, ueid, and a stable attestation key are long-lived
identifiers. Presenting them to many Relying Parties lets those
parties correlate an agent's activity. Deployments SHOULD limit
the Relying Parties that receive attester_id, and MAY use
per-Relying-Party pseudonymous identifiers or per-audience
attestation keys where the hardware supports it.</t>
      <t>The ZK_PROOF band is intended to avoid disclosing model weights
and inference inputs, but the configuration digest and any
reference-value set are visible to the Verifier. Sovereign-bound
labels may reveal deployment location. Neither the proof nor these
labels amount to legal compliance certification.</t>
    </section>
    <section anchor="interop">
      <name>Interoperability and Future Work</name>
      <section anchor="layering">
        <name>Layering</name>
        <t>PTV is Layer 1 (identity binding) in the three-layer agent
accountability framing <xref target="ACCOUNT-LAYERS"/>:</t>
        <ul spacing="normal">
          <li>
            <t>PTV / EAT: who is running, and in what enrolled state;</t>
          </li>
          <li>
            <t>Delegation provenance (for example HDP
<xref target="I-D.helixar-hdp-agentic-delegation"/>): who authorized the
act;</t>
          </li>
          <li>
            <t>Execution receipts (SCITT <xref target="RFC9943"/> or similar): what
external effect was produced.</t>
          </li>
        </ul>
        <t>Composition SHOULD be by hash reference (receipt cites hash of
PTV result and hash of delegation record), not by embedding
one protocol inside another.</t>
      </section>
      <section anchor="open-items">
        <name>Open Items</name>
        <ol spacing="normal" type="1"><li>
            <t>A registered EAT profile URI for PTV ROUTINE Evidence.</t>
          </li>
          <li>
            <t>A COSE header for behavior_fingerprint if that field is
standardized.</t>
          </li>
          <li>
            <t>A concrete proof-system profile if the WG wants ZK_PROOF
to be interoperable rather than opaque.</t>
          </li>
          <li>
            <t>Whether PTV should remain a message protocol or collapse
to EAT Challenge/Response with these claims.</t>
          </li>
        </ol>
        <t>This Experimental revision exists so that implementers can
answer item 4 with running code.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>Note to RFC Editor: remove this section before publication.</t>
      <t>A prototype is available at <xref target="PTV-PROTOTYPE"/>. As of this
revision it implements the ZK_PROOF path using Poseidon hashing
and Groth16 over BN254 (circom/snarkjs), and reads platform
measurements from a TPM 2.0 on Windows. It does not yet produce a
TPM quote signed by an attestation key, does not implement the
COSE_Sign1 protection in <xref target="msg-auth"/>, and uses a single-party
trusted setup. It is therefore not yet an implementation of the
hardware binding described in this document and SHOULD NOT be
used in adversarial environments.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no requests of IANA. A future revision may
request an EAT profile URI, a CBOR tag, or a media type once
the message set is stable.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Comments from participants on the RATS list and from the
three-layer accountability discussion improved the -00
separation of identity binding from behavioral continuity.
Remaining errors are the author's.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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="RFC4086" target="https://www.rfc-editor.org/info/rfc4086" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4086.xml">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <author fullname="S. Crocker" initials="S." surname="Crocker"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts. However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult. This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities. It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications. 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="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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>
        <reference anchor="RFC8610" target="https://www.rfc-editor.org/info/rfc8610" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml">
          <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" target="https://www.rfc-editor.org/info/rfc8949" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml">
          <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" target="https://www.rfc-editor.org/info/rfc9052" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9052.xml">
          <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" target="https://www.rfc-editor.org/info/rfc9334" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9334.xml">
          <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" target="https://www.rfc-editor.org/info/rfc9711" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9711.xml">
          <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9943" target="https://www.rfc-editor.org/info/rfc9943" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9943.xml">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
            <author fullname="C. Fournet" initials="C." surname="Fournet"/>
            <author fullname="Y. Deshpande" initials="Y." surname="Deshpande"/>
            <author fullname="S. Lasker" initials="S." surname="Lasker"/>
            <date month="June" year="2026"/>
            <abstract>
              <t>Traceability in supply chains is a growing security concern. While Verifiable Data Structures (VDSs) have addressed specific issues, such as equivocation over digital certificates, they lack a universal architecture for all supply chains. This document defines such an architecture for single-issuer signed statement transparency. It ensures extensibility and interoperability between different transparency services as well as compliance with various auditing procedures and regulatory requirements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9943"/>
          <seriesInfo name="DOI" value="10.17487/RFC9943"/>
        </reference>
        <reference anchor="I-D.ietf-rats-reference-interaction-models" target="https://datatracker.ietf.org/doc/html/draft-ietf-rats-reference-interaction-models-18" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-rats-reference-interaction-models.xml">
          <front>
            <title>Reference Interaction Models for Remote Attestation Procedures</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Michael Eckel" initials="M." surname="Eckel">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco Systems</organization>
            </author>
            <date day="17" month="September" year="2026"/>
            <abstract>
              <t>This document describes interaction models for remote attestation procedures (RATS) [RFC9334]. Three conveying mechanisms -- Challenge/Response, Uni-Directional, and Streaming Remote Attestation -- are illustrated and defined. Analogously, a general overview about the information elements typically used by corresponding conveyance protocols are highlighted.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-reference-interaction-models-18"/>
        </reference>
        <reference anchor="RFC9999" target="https://www.rfc-editor.org/info/rfc9999" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9999.xml">
          <front>
            <title>Remote ATtestation procedureS (RATS) Conceptual Message Wrapper (CMW)</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="July" year="2026"/>
            <abstract>
              <t>The conceptual messages introduced by the Remote ATtestation procedureS (RATS) architecture (RFC 9334) are protocol-agnostic data units that are conveyed between RATS roles during RATS interactions. Conceptual messages describe the meaning and function of such data units within RATS data flows without specifying a wire format, encoding, transport mechanism, or processing details. The initial set of conceptual messages is defined in Section 8 of RFC 9334 and includes Evidence, Attestation Results, Endorsements, Reference Values, and Appraisal Policies.</t>
              <t>This document introduces the Conceptual Message Wrapper (CMW) that provides a common structure to encapsulate these messages. It defines a dedicated Concise Binary Object Representation (CBOR) tag, corresponding JSON Web Token (JWT) and CBOR Web Token (CWT) claims, and an X.509 extension.</t>
              <t>Together, these mechanisms allow CMWs to be used in CBOR-based protocols, web APIs using JWTs and CWTs, and PKIX artifacts such as X.509 certificates. Additionally, this document defines media types and CoAP Content-Formats that may be used to identify CMWs when transported over protocols such as HTTP, MIME, and CoAP.</t>
              <t>The goal is to improve the interoperability and flexibility of remote attestation protocols. Introducing a shared message format such as CMW enables consistent support for different attestation message types, enables the evolution of message serialization formats without breaking compatibility, and avoids the need to redefine how messages are handled within each protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9999"/>
          <seriesInfo name="DOI" value="10.17487/RFC9999"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-aims" target="https://datatracker.ietf.org/doc/html/draft-ietf-wimse-aims-00" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-wimse-aims.xml">
          <front>
            <title>AI Identity Management System</title>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Jeff Lombardo" initials="J." surname="Lombardo">
              <organization>AWS</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Nick Steele" initials="N." surname="Steele">
              <organization>OpenAI</organization>
            </author>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <date day="15" month="September" year="2026"/>
            <abstract>
              <t>This document proposes best practices for authentication and authorization of AI agent interactions. It leverages existing standards such as the Workload Identity in Multi-System Environments (WIMSE) architecture and OAuth 2.0 family of specifications. Rather than defining new protocols, this document describes how existing and widely deployed standards can be applied or extended to establish agent authentication and authorization. By doing so, it aims to provide a framework within which to use existing standards, identify gaps and guide future standardization efforts for agent authentication and authorization.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-aims-00"/>
        </reference>
        <reference anchor="I-D.helixar-hdp-agentic-delegation" target="https://datatracker.ietf.org/doc/html/draft-helixar-hdp-agentic-delegation-02" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.helixar-hdp-agentic-delegation.xml">
          <front>
            <title>Human Delegation Provenance Protocol (HDP): Cryptographic Chain-of-Custody for Agentic AI Systems</title>
            <author fullname="Asiri Dalugoda" initials="A." surname="Dalugoda">
              <organization>Helixar Limited</organization>
            </author>
            <date day="11" month="September" year="2026"/>
            <abstract>
              <t>Agentic AI systems operate on behalf of human principals, often delegating tasks through multi-step chains of AI agents. There is currently no standard mechanism to record who authorized an agent to act, under what scope, and through what chain of delegation, in a way that can be verified offline, without a central registry, and without third-party trust anchors. This document specifies the Human Delegation Provenance Protocol (HDP) version 0.1, a lightweight token-based protocol that captures, structures, cryptographically signs, and verifies human delegation context in agentic AI systems. An HDP token binds a human authorization event to a session, records each agent's delegation action as a signed hop in an append-only chain, and enables any participant to verify the full provenance record using only the issuer's Ed25519 public key and the current session identifier. Verification is fully offline. No registry lookup, no network call, and no third-party trust anchor is required. HDP's distinguishing contribution is a signed, tamper-evident record of each agent's declared action at each hop, an execution audit trail that complements, rather than replaces, capability-based delegation formats such as UCAN and ZCAP-LD. The underlying append-only, offline-verifiable chain-of-custody mechanism is payload-agnostic; human-authorized agentic delegation is the reference profile specified in this document. HDP is not an authorization protocol. An HDP token confers no authority and its presentation entitles the presenter to nothing. It is a record of who authorized a task and of what each agent declared it did with that authorization, carried with the task and read at audit.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-helixar-hdp-agentic-delegation-02"/>
        </reference>
        <reference anchor="TPM2">
          <front>
            <title>Trusted Platform Module Library, Part 1: Architecture</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="ACCOUNT-LAYERS" target="https://github.com/agent-morrow/rats-agent-accountability-layers">
          <front>
            <title>Three-Layer Architecture for Verifiable Agent Accountability</title>
            <author>
              <organization>agent-morrow</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="PTV-PROTOTYPE" target="https://github.com/anandkrshnn/zk-agent-attestation">
          <front>
            <title>zk-agent-attestation: PTV reference prototype</title>
            <author initials="A." surname="Damodaran" fullname="Anandakrishnan Damodaran">
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 739?>

<section anchor="appendix-a-prototype-observations-non-normative">
      <name>Appendix A. Prototype Observations (Non-Normative)</name>
      <t>The following figures are from the prototype in <xref target="PTV-PROTOTYPE"/>
(10 runs each, Windows 11, Node.js v24, snarkjs v0.7, library
mode, Poseidon plus equality circuit with 426 non-linear
constraints). They are not requirements, they cover proof
generation and verification only, and they do not include TPM
quote generation or COSE signing.</t>
      <table anchor="tab-perf">
        <name>Prototype observations</name>
        <thead>
          <tr>
            <th align="left">Metric</th>
            <th align="left">Observed</th>
            <th align="left">Conditions</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Proof generation</td>
            <td align="left">about 49 ms</td>
            <td align="left">library mode, 10 runs</td>
          </tr>
          <tr>
            <td align="left">Proof verification</td>
            <td align="left">about 9 ms</td>
            <td align="left">single proof, 10 runs</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="appendix-b-examples-non-normative">
      <name>Appendix B. Examples (Non-Normative)</name>
      <t>All values are illustrative. Byte strings are shortened where
noted; a real message carries full EAT bytes, a full proof, and a
real COSE_Sign1 signature. Timestamps are CBOR tag 1 (epoch
seconds).</t>
      <section anchor="ptvprovereq">
        <name>PTV_PROVE_REQ</name>
        <sourcecode type="cbor-diag"><![CDATA[
{
  "ptv_version": "1.1",
  "nonce": h'a1b2c3d4e5f60718293a4b5c6d7e8f90',
  "msg_type": 1,
  "timestamp": 1(1790640000),
  "policy": {
    "audience": "https://rp.example",
    "requirements": ["approved-config"],
    "require_sovereign_bound": false
  }
}
]]></sourcecode>
      </section>
      <section anchor="ptvproveresp-routine-band">
        <name>PTV_PROVE_RESP, ROUTINE band</name>
        <t>This is the payload of the COSE_Sign1 in <xref target="msg-auth"/>. The
evidence field is an EAT whose eat_nonce equals the request nonce
(bytes elided here).</t>
        <sourcecode type="cbor-diag"><![CDATA[
{
  "ptv_version": "1.1",
  "nonce": h'a1b2c3d4e5f60718293a4b5c6d7e8f90',
  "msg_type": 2,
  "attester_id": "ueid:0102030405060708",
  "triage_band": 0,
  "evidence": h'd28443a10126',           / EAT, elided /
  "timestamp": 1(1790640002)
}
]]></sourcecode>
      </section>
      <section anchor="ptvproveresp-zkproof-band">
        <name>PTV_PROVE_RESP, ZK_PROOF band</name>
        <t>The proof bytes are elided. Its public inputs are the nonce, the
hash of the AK public key, and the configuration digest, in the
order fixed by the deployment's proof-system profile.</t>
        <sourcecode type="cbor-diag"><![CDATA[
{
  "ptv_version": "1.1",
  "nonce": h'a1b2c3d4e5f60718293a4b5c6d7e8f90',
  "msg_type": 2,
  "attester_id": "ueid:0102030405060708",
  "sovereign_bound": {
    "jurisdiction": "IN",
    "data_residency": "IN",
    "compliance": ["example-policy-1"]
  },
  "triage_band": 1,
  "proof": h'9f3c00a1',                  / proof, elided /
  "timestamp": 1(1790640002)
}
]]></sourcecode>
      </section>
      <section anchor="ptvverifyresult">
        <name>PTV_VERIFY_RESULT</name>
        <sourcecode type="cbor-diag"><![CDATA[
{
  "ptv_version": "1.1",
  "nonce": h'a1b2c3d4e5f60718293a4b5c6d7e8f90',
  "msg_type": 4,
  "result": 0,
  "audit_id": "audit-0001",
  "timestamp": 1(1790640003)
}
]]></sourcecode>
      </section>
      <section anchor="rejected-message">
        <name>Rejected message</name>
        <t>A PTV_PROVE_RESP carrying both evidence and proof, or neither, is
malformed and is answered with result 1 and reason PTV_ERR_008:</t>
        <sourcecode type="cbor-diag"><![CDATA[
{
  "ptv_version": "1.1",
  "nonce": h'a1b2c3d4e5f60718293a4b5c6d7e8f90',
  "msg_type": 4,
  "result": 1,
  "reason": "PTV_ERR_008",
  "timestamp": 1(1790640003)
}
]]></sourcecode>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA819a3PbSLLld/yKCjlim7pBUKSsdlv0+s6lZXlaty1LK8nt
mJmYUEBkSUQbBNgAKJlte3775snMKhRAyu7djbu7jn5IJFCPrHycfJXjOI7q
tM7s2Oxcza05L4t7G1+VSV7dFuUi/tWW6e3a9M6vft3Fl3UxLTJDX5lJXduq
tjMzubN5bU5m9N+0Xu9Eyc1Nae9pPHpn48tZMc2TBc02K5PbOk7yJJ8lH8u0
mtNPcZnUVbys7+MEr8WpvhYPR9Esqemt/eH+s3h4GO8fRlP64K4o12NjPy2j
dFmOTV2uqnp/ODwc7kfV6maRVlVa5PV6SW+eHF+9iZLSJmNzaaerkoaNHory
411ZrJZjczG5uow+2jV9NBtHxsQm4f0lNY0gv/NO3JL4o+PJFf+fX763+cri
VTeiXRS1NZMrP4xZlsXUzlalvTQ9vLNLTy+SNBsbbPw/UlvfDoryLkpW9bwo
eRn0rzFpXo3NZGBeJ4tiltDZ8KdCx0mLgp1HaLAkT//g2WnfdLSlTe9yMzkx
l3Uy/cgPWVmCHMXAjfQf86LGF4NpseDHiGRjM6/rZTXe27tL6/nqBt/t8Xsf
S3opj3JiGZrsnulw8eZofzQ61B8Phs+f6Y/PRz8duB+fjYbux8MD9+zh8Md9
9+PTp+7Zw59Go3GU5redSQ4PD57ix5P49QAkFC4q7S1tNp/aOM1rWyZT0CAm
4tis8i8eHrZefEgXlY0T+q/7eG6z9FNSxvPZUngyncY0gr0TktJTV+envFZj
vBiBC0kuzrOkxlrNaTFbZda8TW/KpFz3zXlS1mZER1dO52ltpzVxxA4P0Rw8
/sQ4v7Fx4x0Vi+WqTvM781dwGD/kpGJ0SL9Ojo7O3r+7it9O/nZ8cdlZ1Ly0
Nn6brG3ZmpdFmYU8TW5okSKvk+m0WOV1cpNmLLU8UlLe2Xo7C7C0LoqyLB72
mPrySdIaJs4we/X4RsNhWrvbf0a/kjaJzy/Ors6u/nZ+3N7cHx/dhI3MjvGC
8VwA2asLqILv76Zh6L1tI2/dwHYR/ZNiGuwzjknT3FQ1GDaKruZpZUhlrhY4
lZmtpmV6YytTf09TL1VTRzjeeVLOHkj1kbad0qKJlYLdmOIW6qCt3QZMPJuD
JaqI1itf1wUGvrd9GoC0ri2naWXpFBb0ST2nz1L6pzI3dOgzPEwv2rwssszO
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
g1Iin+gO2XmI+MVOERJHg8I0QNPrRZoMcNsuC4RLJai/K2isVbyvNUQ3RRnj
cskIFYo7QWPMjna+oNxnh+PU9Mn8h2R0sz99OjuwP94+G/40er5/+DQ5uPlx
+mz2k31+ezj8gZ93xY07Wpu/47OH+KQ3+ulw+OxgSH+4CnNHcmz01WeuRNxx
Ph7W4P5ij3I5UFTOS6KnQjGkJ/+x4woiYnHFdv7ZfrDbI0Hv8J0u9NDXpvKz
U2PfN+G17WqK2gkw35XenFHHIst1Fb51xaFTZ5CkoPD7RehRT5oKyBGBwwr+
8i0T/+XnyIX/O4Ejj4ERqhgPR8P94dPhwfDHIQ01fC5TBX0uO9ods+MowCuY
7T8/OHiajIaj/Wc/BA1Y4sz13S73vsE++7vfOLeWpy+GSDxiISLf5clTAAhV
nXp8Zwm1W17AT1NPP/kliEJ7fb41BNBXP1caJOnsPzUB3saF/6Ha6ov8f3u6
m6Kkohv2CWKMk3dOXNu9gu3vmhgEC7IKuvbrxKOdf0JGt7CVKBemHO/78Pbp
dDhMRi1+8mylavV/h7Fa5aH/tw6FC8N3xDn3MuTKvzEJ/0wgcKhzPbKbp+Fu
Lly/m8sukC/WKazmv8OCb0XDdQGbl3i3G+nIJ1skmd6QrkE1cSvdDcYaXhg5
l6rd9/98/P+IniP9FevZkb/mzi3pz5HzfwKup1vedG8AAA==

-->

</rfc>
