| Internet-Draft | PTV Attested Agent Identity | April 2026 |
| Damodaran | Expires 7 October 2026 | [Page] |
This document describes the Prove-Transform-Verify (PTV) protocol for hardware-anchored attestation of AI agent identity. PTV is designed to enable an agent to prove that it is running an authorized model and policy without exposing sensitive data. The protocol is intended to compose with existing RATS attestation mechanisms and to support exercise-time re-attestation requirements.¶
The protocol defines a common envelope format (CBOR/CDDL), message types for attestation request/response, and a threat model that separates identity binding integrity from behavioral continuity. Behavioral continuity is treated as a separate requirement class addressed via exercise-time checks and execution receipts (e.g., SCITT composition), not by PTV alone.¶
Example use cases include healthcare clinical decision support systems (CDSS), critical infrastructure industrial control systems (ICS/OT), and cross-border regulatory compliance scenarios.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 7 October 2026.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
Current identity frameworks (OAuth 2.0, SPIFFE) establish workload identity but do not verify what model an agent is running or whether it follows authorized policies. This gap creates systemic risk: a compromised agent can generate unauthorized outputs while still presenting valid credentials.¶
For example, in a clinical decision support system, a hospital may need cryptographic evidence that a diagnosis was produced by an approved model and policy set, without exposing patient records or model internals. Similarly, in an industrial control system, an operator may need cryptographic evidence that a safety-critical control action was generated by an authorized agent configuration, without exporting plant telemetry or proprietary control logic.¶
The PTV protocol addresses this gap by binding agent identity to hardware roots of trust (TPM 2.0 or Secure Enclave) and using zero-knowledge proofs to attest to model integrity without exposing model weights or inference data.¶
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 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
sovereign_bound, which
contains the subfields jurisdiction, data_residency,
and compliance.¶
Identity binding integrity asks: "Is this the agent that was enrolled, and is the signer of this attestation trusted to hold the corresponding key?"¶
PTV addresses this class of threats by:¶
This corresponds to cryptographic identity continuity in the sense of the RATS Architecture [RFC9334]. A relying party that consumes a PTV attestation MAY treat it as an assertion about identity binding integrity only, unless additional mechanisms are in place.¶
Behavioral continuity asks: "Is the enrolled agent still behaving within its attested envelope after context changes?"¶
This version of PTV does not fully address this requirement class. In particular, PTV does not detect or mitigate:¶
A valid PTV attestation on a behaviorally-drifted agent is therefore a false signal of behavioral identity continuity. For high-stakes use cases such as clinical decision support systems (CDSS) and ICS/OT, relying parties SHOULD treat behavioral continuity as a separate requirement. It can be partially addressed by combining PTV freshness with delegation provenance (e.g., HDP) and execution outcome verification (e.g., SCITT receipts). See Section 6.¶
For high-stakes deployments, relying parties SHOULD be able to demand fresh attestation at exercise time (per authorization decision), via an EAT nonce challenge or a PTV challenge-response, rather than relying solely on a credential issued at enrollment time.¶
The PTV protocol operates through three phases:¶
Agent Federation Hub Verifier
| | |
|--[1] PROVE---------------| |
| - Generate proof | |
| - Hash: Model+Metadata | |
| | |
| |--[2] TRANSFORM--------------->|
| | - Forward Proof Only |
| | |
| |<-[3] VERIFY-------------------|
| | - Validate Proof |
| | - No Raw Data Exposed |
The three phases are as follows:¶
The PTV protocol defines four logical roles:¶
PTV supports two deployment models:¶
All PTV messages are encapsulated in a common envelope structure, serialized using CBOR [RFC8610].¶
The following CDDL rules define the envelope:¶
triage-band = 0..2
ptv-envelope = {
ptv_version: tstr,
msg_type: ptv-msg-type,
nonce: bstr,
? attester_id: tstr,
? sovereign_bound: {
jurisdiction: tstr,
data_residency: tstr,
compliance: [* tstr]
},
? triage_band: triage-band,
? evidence: bstr,
? proof: bstr,
? policy: ptv-policy,
? result: ptv-result,
? behavior_fingerprint: bstr,
? timestamp: time,
? extensions: { * tstr => any }
}
ptv-msg-type = &(
prove-req: 1,
prove-resp: 2,
transform-att: 3,
verify-result: 4
)
ptv-policy = {
? audience: tstr,
? policy_uri: tstr,
? trust_domain: tstr,
? requirements: [* tstr]
}
ptv-result = &(
success: 0,
failure: 1,
indeterminate: 2
)
¶
The behavior_fingerprint field is OPTIONAL in this version.
It is intended for deployments that adopt a SCITT-style execution
receipt pattern. Its contents are opaque bytes with deployment-specific
semantics; this version does not define normative processing rules.
See Section 6.3 for discussion of related future work.¶
In PTV_PROVE_RESP and PTV_TRANSFORM_ATT, exactly one
of evidence or proof MUST be present. A message that
contains neither or both MUST be rejected by the verifier.¶
Sent by the relying party to request attestation. Contains a nonce and optional policy constraints.¶
PTV_PROVE_REQ = {
ptv_version: "1.0",
msg_type: 1,
nonce: bstr,
? policy: ptv-policy
}
¶
Sent by the attester in response to a prove request. Contains either evidence (for ROUTINE triage) or a proof (for ZK_PROOF triage).¶
PTV_PROVE_RESP = {
ptv_version: "1.0",
msg_type: 2,
nonce: bstr,
attester_id: tstr,
sovereign_bound: {
jurisdiction: tstr,
data_residency: tstr,
compliance: [* tstr]
},
triage_band: triage-band,
(evidence: bstr // ROUTINE triage
// OR
proof: bstr), // ZK_PROOF triage
? behavior_fingerprint: bstr,
timestamp: time
}
¶
Sent by the Edge Proxy to the Verifier.¶
PTV_TRANSFORM_ATT = {
ptv_version: "1.0",
msg_type: 3,
nonce: bstr,
attester_id: tstr,
sovereign_bound: {
jurisdiction: tstr,
data_residency: tstr,
compliance: [* tstr]
},
triage_band: triage-band,
(evidence: bstr // ROUTINE triage
// OR
proof: bstr), // ZK_PROOF triage
timestamp: time
}
¶
Sent by the verifier to the relying party.¶
PTV_VERIFY_RESULT = {
ptv_version: "1.0",
msg_type: 4,
nonce: bstr,
result: ptv-result,
? reason: tstr,
? audit_id: tstr,
timestamp: time
}
¶
The following error codes are defined for PTV attestation failures:¶
| Code | Description | Recovery Action |
|---|---|---|
| PTV_ERR_001 | TPM attestation failure | Verify TPM 2.0 presence and permissions |
| PTV_ERR_002 | Proof verification failed | Regenerate proof with correct inputs |
| PTV_ERR_003 | Jurisdiction mismatch | Check sovereign_bound against policy |
| PTV_ERR_004 | Quorum not reached | Retry with additional consensus nodes |
| PTV_ERR_005 | Envelope expired | Generate fresh attestation |
| PTV_ERR_006 | Nonce replay detected | Discard and request a new nonce generated according to the cryptographic randomness guidance in RFC 4086 [RFC4086]. |
| PTV_ERR_007 | Model hash not approved | Update approved model list |
Note: The following figures are preliminary observations from a prototype implementation. They are provided for illustration only and are not normative requirements of the protocol.¶
| Metric | Observed Value | Conditions |
|---|---|---|
| Proof generation | ~187ms | Prototype, n=10,000 (illustrative) |
| Proof verification | <5ms | Single proof (prototype) |
| Raw proof size | <300 bytes | Groth16 (BN254) in prototype |
This section discusses security and privacy considerations for the PTV protocol.¶
All PTV attestations MUST include a nonce provided by the relying party or verifier. The nonce MUST be cryptographically random (see [RFC4086]) and MUST NOT be reused across attestation sessions. Timestamps SHOULD be included and checked against a deployment-specific freshness window (RECOMMENDED: less than or equal to 300 seconds).¶
PTV is designed to be compatible with zero-knowledge proof systems but does not mandate a specific construction.¶
The predicate being proven MUST be specified, for example: "the hash of the agent configuration matches an enrolled value".¶
The zero-egress property of ZK-proofs aligns with Privacy by Design principles. Deployers SHOULD assess compliance with applicable regulations; this protocol is designed to facilitate such assessments but does not constitute legal certification.¶
Attestations SHOULD be bound to the specific agent instance using a hardware root of trust (TPM 2.0 or Secure Enclave). Software-only attestations are NOT RECOMMENDED for high-assurance deployments.¶
Verifiers SHOULD implement rate limiting and proof caching to mitigate DoS attacks.¶
When Entity Attestation Tokens (EAT, [RFC9711]) are
present, PTV evidence and proofs SHOULD map to EAT claims such as
eat_nonce, swname, and swversion. PTV
evidence/proofs are also intended to be usable within SEAT/ExPAT-style
exported attestation mechanisms. A future revision of this document may
define a concrete mapping.¶
PTV is designed to compose with complementary protocols that address different parts of the agentic trust chain. Specifically:¶
A natural composition point is for an EOV receipt to reference a hash of an HDP delegation record as its delegation token, rather than duplicating the full provenance chain. Future revisions of this document may describe concrete mappings once the HDP and EOV models stabilize.¶
PTV is intended to compose with SCITT as follows:¶
Three open standardization gaps remain, treated as future work:¶
Execution outcome verification is treated as a separate concern from attestation. This version assumes that execution receipts, where needed, are carried by SCITT or a similar transparency mechanism.¶
Delegation provenance protocols (for example HDP [HDP]) and execution-outcome attestation patterns are complementary to PTV and out of scope for this version.¶
This document makes no requests of IANA. Future revisions may request registration of media types, OAuth parameters, or attestation method registries once the protocol design has stabilized.¶