ProofProtocol™
Proof Protocol / PP-SPEC-083-PROOFID-101

ProofID 101

A Proof Protocol specification

Ownership and Attribution Notice

This specification is authored by Craig Thomas Ellrod and is published as part of Proof Protocol. Copyright (c) 2026 Craig Thomas Ellrod.

Any use, implementation, derivative, citation, or incorporation of this specification, in whole or in part, MUST attribute Craig Thomas Ellrod and Proof Protocol. This requirement applies to standards bodies, working groups, consortia, and commercial implementations.

This specification is licensed under the Proof Protocol License 1.1 (see LICENSE.md); text CC BY 4.0 under Part A, which grants no patent rights. Original inventor: Craig Thomas Ellrod (ORCID 0009-0004-1058-7666).

Patents. Patent terms are in PATENT-SCHEDULE.md. Claims not listed there are reserved by Craig Thomas Ellrod. Licensing: 1proofprotocol@gmail.com.

This specification is related to the Proof Economy Prior Art Declaration, DOI 10.5281/zenodo.21379780.

Field Value
Spec ID PP-SPEC-083
Version 0.1.1 (Draft)
Date 2026-10-30
Status Draft for public record
Maintainer Craig Thomas Ellrod (Proof Protocol)

Abstract

ProofID 101 gives everything in a run an identity: the arena, every interface, the ingress and egress points, the traffic pipe, every target, every agent, every sensor, and every party that signs a record. It states who owns each identity, where its keys are kept, how it is accessed, what it is authorized to do, and which fields every record pulls and pushes so that a proof names exactly what was tested, by whom, and through what.

One rule carries the design. Testers sign; subjects are fingerprinted. Everything doing the testing holds a key and signs what it emits. Everything under test is identified by a fingerprint captured independently, and holds no key from the run. The whole arena can be authenticated through one Arena Identity, while the parties that must stay independent of the arena keep roots of their own.

Introduction: Why This Specification Exists

The problem this family of specifications solves

Nobody can price security risk, because nobody can measure security efficacy. Every control, whether bought, built, or adopted, is described by the party that made it: a datasheet, a demo, a Provider-funded report, a design document, a dashboard of alerts. Implementors choose controls on those descriptions. Insurers underwrite on questionnaires that ask whether controls exist, not whether they work. Regulators supervise against attestations. Each of them is relying on the word of someone with a stake in the answer, and none of them has proof of what a control actually does when an attack arrives.

Agentic AI makes the gap wider and more expensive. An agent acts inside the system with legitimate credentials, decides its next step from text it has just read, and can be persuaded to do what its owner never authorized. The losses it can cause are new, and the controls sold to contain it have no track record. When risk cannot be measured, it is excluded, restricted, or priced as if every control were equally good, which punishes the controls that work and rewards the ones that only claim to.

The Proof Protocol specifications replace description with proof. PP-SPEC-077 measures what a security control did to committed test traffic. PP-SPEC-078 measures whether an agent containment control stopped an agent that tried to break its policy. PP-SPEC-079 makes those measurements independent of whoever built the control, and comparable across controls of any origin. PP-SPEC-080 lets the parties who pay for risk, insurers, regulators, and Implementors, state in advance what proof they will accept. Together they produce records that a person or a machine can verify without trusting the party the record is about.

This specification's part: naming, exactly and verifiably, every thing and every party a record is about or was made by.

Why this specification

A proof that does not bind what was tested can be moved to something that was not. Prove product X, ship product Y, and point at the proof. A record whose emitter cannot be authenticated can be written by anyone. An attack signal whose source cannot be identified is self-attested. An agent whose authority was never stated cannot be shown to have exceeded it.

The other specifications in this family already carry pieces of identity: the Holder (077 21.3), DUT, CUT, SUT, and Pigtail Fingerprints (077 15.2), Component Fingerprints and the Interface Manifest (077 18.1), signing keys under IP-10, the AUT Fingerprint and Declared Policy (078), and Party Sets for reproof (081). None of them says, for every component, who owns its identity, where its key lives, how others reach it, or what it is allowed to do. This specification does, in one model that covers the whole arena.

What this specification cannot do

Identity answers who and what, not whether. A perfectly identified control can still fail, and a perfectly identified agent can still break its policy. Identity makes the proof about the right thing; the proof itself still comes from PP-SPEC-077 and PP-SPEC-078.

An identity also proves only that a key signed. It does not prove that the party holding the key told the truth. That is what independent witnessing (PP-SPEC-077 Section 10) and reproof (PP-SPEC-081) are for.

1. Conventions

The key words MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL are to be interpreted as described in RFC 2119 and RFC 8174.

Terms defined in PP-SPEC-077 Section 2 and PP-SPEC-078 Section 2 have the same meaning here.

2. Terminology

3. Relationship to Other Specifications

3.1. A run under PP-SPEC-077, PP-SPEC-078, PP-SPEC-079, or PP-SPEC-081 that adopts this specification applies it in addition. Nothing here relaxes any of them.

3.2. The Identity Manifest (Section 13) extends the Interface Manifest of 077 18.1.3. Every Integration Point named there is occupied by an Identity defined here.

3.3. Fingerprints are captured as PP-SPEC-077 Section 15.2 requires. This specification makes each fingerprint the definition of a Fingerprinted Identity.

3.4. Key custody is 077 IP-10. This specification states where keys may and may not be kept (Section 8).

3.5. The Registry is PP-SPEC-004. Issuer identity for ProofStamp is governed by PP-SPEC-009, which this specification does not change.

4. Principles

4.1. Everything has an identity. Every component, party, interface, path, and Subject that a record is made by, passes through, or is about MUST have an Identity in the Identity Manifest.

4.2. Testers sign. Every Identity that emits a record MUST be a Keyed Identity and MUST sign what it emits. A record whose emitter cannot be authenticated is not a record.

4.3. Subjects are fingerprinted. A DUT, CUT, SUT, or AUT MUST be a Fingerprinted Identity. It MUST NOT be issued a signing key by the run, because it MUST NOT take part in producing its own proof (077 18.3.3, 078 16.3.3). Its fingerprint is captured independently (077 15.2.4).

4.4. Nothing vouches for its own independence. A party that must be independent of another MUST NOT hold an Identity certified by that other party's root.

4.5. Identity is not authority. An Identity authenticates. Its Scope authorizes. An authenticated record of a kind outside its emitter's Scope is invalid (Section 10).

4.6. Never reused. An Identity belongs to one arena instance or one run. Keys are minted for it, and an Identity Record, once revoked, is never reactivated.

5. What Has an Identity

Kind What it is Keyed or fingerprinted Certified by Owner
arena One arena instance Keyed (Root) Itself, registered before release Arena Operator
interface Each network interface, port, API endpoint, or tool endpoint the run uses Keyed if it emits records, otherwise identified and certified Arena Identity Arena Operator
ingress The point where traffic or actions enter the environment under test Keyed Arena Identity, or the Witness Operator's root when the Witness Operator runs it Operator of the Ingress Observer
egress The point where traffic or actions leave the environment under test Keyed As ingress Operator of the egress Sensor
pipe The traffic path between the testing equipment and the SUT (077 Pigtail), identified by its endpoints and Pigtail Fingerprint Fingerprinted Both endpoint Owners Each half by its own Owner (077 15.2)
target A host, data store, service, or Effect Point inside the arena Fingerprinted; Keyed for any Sensor it runs Arena Identity Arena Operator
release_driver The attacker or traffic generator that releases canaries (077 IP-3) Keyed Arena Identity or the Issuer's root Its Operator
attacker_agent An agent that executes canaries Keyed As release_driver Its Operator
sensor Any component that captures evidence (077 IP-4, IP-6) Keyed Its Operator's root Its Operator
witness The Proof Witness and Ingress Observer Keyed Independent Root Witness Operator
issuer, adjudicator, signer 077 IP-1, IP-8, IP-10 Keyed Its Operator's root Its Operator
registry, time_anchor 077 IP-9 and IP-2 Keyed Independent Root Their Operators
operator A person or service that takes an action recorded in the run Keyed Its organization's root That organization
aut The Agent Under Test Fingerprinted (078 AUT Fingerprint), plus Delegated Credentials Captured by the Fingerprint Capture Identity Captured by IP-5; the Agent Provider's own claims are recorded as asserted
dut, cut, sut The control, the single control, and the solution under test Fingerprinted (077 15.2) Captured by the Fingerprint Capture Identity Captured by IP-5

5.1. A kind not in this table MUST be declared in the Identity Manifest with its Owner, its certifier, and whether it is keyed or fingerprinted, and MUST use an x- prefix (077 17.10).

5.2. Network identifiers (address, hostname, MAC, port) identify an interface; they do not authenticate it. Authentication is by key (Section 9).

6. The Arena as One Identity

6.1. One root. Every arena instance MUST have exactly one Arena Identity. Every component the Arena Operator runs in that instance MUST be certified by it, directly or through a chain of Component Identities. A verifier that trusts the registered Arena Identity can authenticate every such component without any other trust.

6.2. Born with the arena. The Arena Identity MUST be minted when the arena instance is created, and its Identity Record MUST be registered before the first release (077 9.6), bound to a Time Anchor pulse.

6.3. Independent roots stay outside. The Witness, the Registry, the Time Anchor, and every Party Set of a reproof (081 Section 4) MUST hold Independent Roots. They MUST NOT be certified by the Arena Identity, even when the Arena Operator installs or hosts them. A component installed in the arena but operated by an independent party is certified by that party's root.

6.4. Subjects are not certified. No Root Identity certifies a Subject. A Subject's Identity Record carries its fingerprint and the Identity of the party that captured it.

6.5. Interim. Where the Arena Operator also operates the Witness, the Witness MAY be certified by the Arena Identity, and the run MUST state that its Witness is not independent of the arena.

7. Ownership

7.1. The Owner of a Keyed Identity is the party that holds its private key, and MUST be the Operator of the component: the party that runs it and can change it. The Owner of a Fingerprinted Identity is the party that captured the fingerprint.

7.2. Every Identity Record MUST name its Owner, by a stable identifier and the Owner's own Root Identity.

7.3. Ownership MUST NOT change during a run. A component that changes Owner is a new Identity, and the change is drift (077 15.1).

7.4. The Agent Provider owns the AUT's own credentials outside the run. Inside the run, the AUT acts only with Delegated Credentials (10.4), which are owned by the party that minted them.

8. Storage

8.1. Private keys. Private keys MUST be held under 077 IP-10 custody (a hardware module, a key management service, or an equivalent signing service) outside the environment under test. A private key MUST NOT be stored on any disk, image, snapshot, or template of the environment under test.

8.2. Why outside. A key inside the environment is destroyed or leaked at teardown, and an image cloned with a key inside it lets the clone sign as the original. Keys outside the environment survive teardown, and nothing can sign as the arena after its Identity is revoked.

8.3. Signing. Components sign by calling their Owner's signing service. Private keys MUST NOT be exported to components.

8.4. Public records. Every Identity Record and every revocation MUST be registered in the Registry (PP-SPEC-004) and retained for as long as any record that names the Identity is retained.

8.5. Local cache. An arena MAY keep a read-only cache of the Identity Manifest and the public keys it needs. The Registry is authoritative.

9. Access and Authentication

9.1. Public part. The public part of every Identity Record is readable from the Registry by any party, person or machine, by Identity ID.

9.2. Sensitive fields. Network identifiers and any field that reveals the Implementor's environment MAY be held at Disclosure Level holder_only (077 21.9). The Identity Record then carries a digest of those fields in their place, so the record can still be verified.

9.3. Private part. Only the Owner's signing service uses a private key.

9.4. Every record names its emitter. Every record in this family that adopts this specification MUST carry emitter, the Identity ID of the Keyed Identity that emitted it, and MUST be signed by that Identity's key.

9.5. Mutual authentication. Components that exchange records or traffic for the run MUST authenticate each other with their Keyed Identities before exchanging anything that a record depends on. The transport is not specified (077 18.1.7).

9.6. Verification. A verifier MUST be able to authenticate any record from the record, the Identity Records it names, and the Registry, with no access to the Owner.

10. Authorization (Scope)

10.1. Every Identity Record MUST state a Scope: the Integration Points (077 18.2, 078 16.2) the Identity occupies and the record kinds it may emit.

10.2. A record of a kind outside its emitter's Scope is invalid and MUST be recorded as a finding of kind scope_violation. An Ingress Observer cannot emit an Outcome; a Release Driver cannot emit a verdict; a Sensor cannot emit a rate.

10.3. Scope is declared before release and MUST NOT be widened during a run.

10.4. Agents. An AUT acts with Delegated Credentials minted for the run by the Policy Provider (078 IP-J1) or the Twin and Decoy Provider (078 IP-J6). Each Delegated Credential's Scope MUST be bound to the hash of the Declared Policy (078 Section 5), MUST be recorded in the Identity Manifest by digest, and MUST be revoked at teardown (078 14.2). An action the AUT takes with a credential outside its Scope is an offense under PP-SPEC-078 and evidence of it.

10.5. Operators. An operator Identity's Scope lists the actions it may take in the run. Role-based access control inside a product is out of scope of this specification; only the actions that appear in records are.

11. Binding Identities to Records

11.1. Subjects. Every Unit of Proof, booking, result, and Capture Record MUST carry subject: the Identity ID of each Subject it is about, at the level it is attributed (077 2.2).

11.2. Asserted versus captured. A Subject's Identity Record MUST carry the captured fingerprint and MAY carry the Provider's or Agent Provider's asserted product, version, and configuration. A difference between the two MUST be recorded as a finding of kind identity_mismatch, and results are bound to the captured fingerprint only (077 15.2.2).

11.3. Attack source. Every release record MUST name the release_driver or attacker_agent Identity that released the canary, so that the attack signal is attributable and not self-attested.

11.4. Paths. Every Capture Record MUST name the ingress, egress, or interface Identity it was captured at, and every result MUST list the pipe Identities its canaries traveled.

11.5. The run. Every record MUST carry the Arena Identity ID of the arena instance it was produced in.

12. Identity Record

12.1. Every Identity Record conforms to schemas/identity-record.schema.json and carries at least these fields:

Field Meaning
identity_id Content hash of the record (12.2)
kind One of the kinds in Section 5, or an x- kind
name A human-readable label, never used for authentication
owner The Owner's identifier and Root Identity ID
parent The certifying Identity ID, or null for a Root Identity
keyed true for a Keyed Identity, false for a Fingerprinted Identity
public_key Algorithm and key, for a Keyed Identity
key_custody Where the private key is held: hsm, kms, signing_service, or x-
fingerprint For a Fingerprinted Identity: the hash, what it covers, and the Identity that captured it
asserted For a Subject: the Provider's own product, version, and configuration claims
scope Integration Points and record kinds (Section 10)
network Addresses, hostnames, ports, and MACs for an interface, or their digest when held holder_only
arena The Arena Identity ID of the arena instance
created Time and Time Anchor pulse
valid_through End of validity
status active, revoked, or compromised
signatures The parent's signature over the record, and the Owner's for a Root Identity

12.2. Identity ID. identity_id = SHA-256("IDN-1:record" || canonical_form), where canonical_form is the record in the canonical form of 077 21.2 with identity_id, status, and the registration fields of 077 21.1 removed. Status is excluded so that revoking an Identity does not change its ID.

13. Identity Manifest, and What Is Pulled and Pushed

13.1. Before release (pull). The Arena Operator MUST assemble the Identity Manifest: the Arena Identity and every Component Identity it certifies, minted for this instance; every Independent Root and the Identities it certifies, pulled from the Registry; and every Subject Identity, with fingerprints captured under 077 15.2. The manifest conforms to schemas/identity-manifest.schema.json, is registered with the commitment root (077 9.2), and each component pulls from it the public keys of the peers it must authenticate.

13.2. During the run (push). Every record names its emitter, its subject, its Capture Point Identity where it has one, and its arena (Sections 9 and 11).

13.3. At teardown (push). Before the environment is torn down, the Arena Operator MUST revoke the Arena Identity and every Component Identity it certified, and every Delegated Credential, and MUST register the revocations. Each Independent Root Owner decides the lifetime of its own Identities.

13.4. After the run. The final Identity Manifest root, with every Identity's final status, is carried in the run's result record. Revoked Identities stay in the Registry so that every record they signed stays verifiable.

14. Reproof

14.1. Every Assay under PP-SPEC-081 MUST run on new infrastructure with a new Arena Identity. No Keyed Identity of the Head Assay MAY appear in a Check Assay or an Umpire Assay, except the Registry and Time Anchor (081 4.2).

14.2. Subject Identities are compared by fingerprint, never by instance. An Instance Reproof requires equal SUT and DUT fingerprints captured independently (081 5.1, 5.2); it never requires, and MUST NOT accept, the same instance identifiers.

15. Lifecycle

15.1. Create. Before release, as in 13.1.

15.2. Rotate. Keys are rotated only between runs, or at once on suspected compromise. A rotation creates a new Identity; the old one is revoked.

15.3. Compromise. An Identity whose key is suspected compromised MUST be marked compromised at once. Records it signed after the last time it is known to have been secure are not records.

15.4. Revoke. At teardown, as in 13.3, and on any change of Owner (7.3).

16. Security Considerations

17. Humans and Machines

PP-SPEC-077 21.14 applies. A person and a machine applying Sections 9 to 11 to the same records MUST reach the same answer on whether each record is authentic, within Scope, and bound to the right Subject.

18. Authorship Disclosure

PP-SPEC-077 21.15 applies. This specification's disclosure is AI_DISCLOSURE.md and ai_disclosure.json.

19. Interpretation

Craig Thomas Ellrod, as maintainer of Proof Protocol, is responsible for the editorial text of this specification. Whether a run or record conforms is determined from its records against the normative text, and is not decided by the maintainer.

Revision History

Version Date Notes
0.1.1 2026-10-30 Renamed ProofID 101 (formerly Identity 101), so the name is unique to proof. No normative change.
0.1.0 2026-10-30 Initial draft, as Identity 101. Identity for every component, path, party, and Subject; testers sign, subjects are fingerprinted; one Arena Identity with Independent Roots outside it; ownership, storage, access, authentication, Scope, Delegated Credentials for agents; binding Identities to records; Identity Record and Identity Manifest; pull and push across the run; reproof on new identities; lifecycle.
View source on GitHub