| Internet-Draft | Agent Identity Registry | July 2026 |
| Drake | Expires 18 January 2027 | [Page] |
This document defines the Agent Identity Registry System (AIRS): a federated architecture for issuing, managing, and verifying persistent identities for autonomous entities such as AI agents and robots. Each identity is a URN in the "aid" namespace ([RFC8141]), anchored where hardware is available to a physical security component (TPM, PIV smart card, secure enclave, or virtual TPM) whose manufacturer-certified key is designed to resist extraction and cloning. For hardware-anchored tiers this provides Sybil resistance: creating N identities requires N distinct physical devices. Software-only entities participate at a clearly-labeled lower trust tier.¶
The architecture separates concerns into three roles modeled on the domain name registration industry -- a Governance Authority, a Registry Operator, and competing Registrars -- and issues standard OpenID Connect ([OIDC-Core]) tokens that any relying party can verify with existing libraries. Identities are permanent: they never expire, are never reassigned, and cannot be revoked, suspended, or transferred by any party, including the bodies defined here. Companion documents supply the problem statement and threat model, the registrar-to-registry provisioning protocol (an EPP mapping), the public resolution profile (RDAP), the governance body's constitution, and a first deployed application (hardware-attested email).¶
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 18 January 2027.¶
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.¶
The motivation for this work -- the collapse of content, source, and volume signals against capable automation; the Sybil threat model; the distinction between identity and the identifiers, credentials, and reputation with which it is conflated; and the requirements (persistence, non-transferability, Sybil resistance, graduated inclusivity, federation) an identity layer must meet -- is stated once, in [I-D.drake-agent-identity-problem-statement], and is not restated here. This document defines the mechanism.¶
The mechanism is a purpose-built identity registry for autonomous entities, anchored to the one property that practically every computing device possesses (or can acquire) and no software can fake: its physical hardware. A Trusted Platform Module (TPM), a PIV smart card (such as a YubiKey), or a secure enclave contains a unique cryptographic key generated at manufacturing time, certified by the manufacturer's root CA, and designed to resist extraction and cloning. Binding identity to such hardware gives certifications, reputation, and recognition an unambiguous target, and makes Sybil attacks cost physical devices instead of function calls.¶
The architecture is modeled on the Internet domain name system -- the most successful federated registry in history. Just as DNS separates policy (ICANN), registry operation (e.g., Verisign for .com), and retail registration (e.g., GoDaddy, Namecheap, ...), this system separates:¶
This separation of concerns enables competition at each layer, prevents any single entity from controlling identity, and provides the institutional resilience necessary for infrastructure that autonomous entities will depend on for decades to come.¶
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.¶
3*16(%x41-5A / %x30-39) (uppercase ASCII
letters and digits), assigned by the Registry Operator
at accreditation and unique within the namespace.¶
global (the shared production namespace) and
reserves test.
See Section 2.2.¶
The Agent Identity Registry System (AIRS) is a three-tier architecture. Each tier has distinct responsibilities, and the interfaces between tiers are standardized to enable competition at the Registrar tier, replaceability at the Registry Operator tier, and independent evolution of each.¶
+-----------------------------------------------------------+
| Governance Authority |
| Policy, accreditation, hardware trust store, disputes |
+---------------------------+--------------------------------+
|
+-----------v------------+
| Registry Operator |
| (shared namespace) |
| - Master database |
| - HW fingerprint |
| uniqueness index |
| - RDAP lookup (read) |
| - EPP interface (write)|
+--+-------+--------+----+
| | |
+--v--+ +--v--+ +---v--+
| Reg | | Reg | | Reg |
| A | | B | | C |
+--+--+ +--+--+ +--+---+
| | |
+--v--+ +--v--+ +--v--+
|Agent| |Agent| |Agent|
| 1 | | 2 | | 3 |
+-----+ +-----+ +-----+
¶
The hierarchy comprises three tiers:¶
A deployment that operates the shared
global namespace requires a governance
authority serving as the root of trust for that
namespace. The governance
authority MUST provide at minimum the following
capabilities:¶
To prevent single-entity capture, the governance authority SHOULD be constituted as a multi-stakeholder body. Its charter, membership, and processes are defined in [I-D.drake-agent-identity-governance]; Section 10.1 summarizes the functions this architecture requires of it.¶
Registry Operators maintain the authoritative databases for shared namespaces. Their responsibilities include:¶
The shared namespace has one authoritative Registry Operator at a time. This singularity is deliberate: the anti-Sybil invariant (one device, one identity) is only enforceable against a single authoritative uniqueness index, so identity cannot be split across competing registries the way domain names are split across TLDs. Continuity is provided by escrow and governance-supervised succession (Section 6.7), not by multiplicity.¶
Registrars are the customer-facing entities that interact directly with autonomous entities. Their responsibilities include:¶
Beyond these three operational tiers, the ecosystem includes Relying Parties that consume identity credentials and build services atop them: email services, API gateways, chat platforms, agent-to-agent protocols, reputation providers, and certification authorities. Relying Parties verify standard OIDC tokens issued by Registrars and apply their own policies based on trust tier, reputation, and domain-specific certifications. The value of the identity infrastructure is ultimately measured by the breadth and depth of services that rely on it.¶
A namespace is a partition of the identity space,
identified by the label between urn:aid: and
the agent-id. Namespace labels are allocated only by
the governance authority (Section 12.4).
This specification defines one production namespace,
global, and reserves test for
interoperability testing; identities in test
carry no assurance, and Relying Parties MUST NOT
accept them for any purpose other than testing.¶
global is the shared namespace in which
multiple accredited Registrars compete to enroll
agents. A Registry Operator, designated by the
governance authority, enforces hardware-fingerprint
uniqueness and handle uniqueness across all Registrars
-- analogous to .com, and expected to be
funded the same way (handle registration and renewal
fees). The label identifies the shared pool, not a
policy category: it encodes no jurisdiction, deployment
context, or consequence level, consistent with the
principle that all mutable properties are layered
attributes, never parts of the name.¶
Earlier revisions of this document additionally defined
"Domain-Scoped Issuer Namespaces" (reverse-DNS labels
such as com.example, operated by a single
organization). They are removed in this revision, for
three structural reasons recorded here so they are not
re-invented: (a) embedding the issuer in the name broke
permanence, since leaving the issuer forced a URN
change; (b) per-namespace uniqueness diluted Sybil
resistance, since one device could hold one identity
per namespace and namespaces were free to mint; and
(c) a rented DNS name inside a permanent identifier
imports the domain system's suspension and lapse
failure modes. The needs they served are met instead
at the proper layers: organizations self-provision by
becoming Registrars in global
(Section 8), and branding lives in
handles.¶
Until the governance authority is constituted
([I-D.drake-agent-identity-governance]),
global operates under an interim Registry
Operator that MUST publish open-source implementations,
escrow all registry data, accept Registrar onboarding
without undue discrimination, and commit publicly to
transferring the registry role under the authority's
selection process. Registrar onboarding is
permissionless in the sense that accreditation criteria
are published, objective, and applied equally; no
incumbent approval is required.¶
Agent identities use the URN format defined in [RFC8141] with the "aid" (Agent Identity) namespace identifier, registered by this document (Section 12.1).¶
aid-urn = "urn:aid:" namespace ":" agent-id
namespace = ns-label ; allocated only by the
; governance authority;
; "global" and "test" defined
agent-id = canonical-id / handle-id
canonical-id = "id" 4("-" group)
; 20 consonants in four hyphen-separated
; groups of five, e.g. id-qkckh-xxtcw-cxbvp-gpskg
group = 5consonant
consonant = %x62-64 / %x66-68 / %x6A-6B / %x6D-6E /
%x70-74 / %x76-78 / %x7A
; b c d f g h j k m n p q r s t v w x z
handle-id = (lc-alpha *(let-dig-hyp) let-dig) / lc-alpha
; handle-id MUST NOT begin with "id-"
; (see prose reservation below)
ns-label = (let-dig *(let-dig-hyp) let-dig) / let-dig
lc-alpha = %x61-7A ; a-z only
let-dig = lc-alpha / DIGIT
let-dig-hyp = lc-alpha / DIGIT / "-"
¶
The "aid" namespace-specific string is defined in lowercase only. Producers MUST emit lowercase; consumers MUST treat a URN containing uppercase characters in the namespace or agent-id as invalid rather than case-folding it. Equivalence within this namespace is therefore exact octet-by-octet comparison of the lowercase form, per the namespace-defined equivalence provision of [RFC8141]. (The "urn:" scheme and "aid" NID remain case-insensitive as RFC 8141 requires.)¶
Within each namespace, an agent has exactly one canonical identifier and at most one currently-active handle. Both are valid agent-id values and both form valid URNs:¶
urn:aid:global:id-qkckh-xxtcw-cxbvp-gpskg canonical, permanent urn:aid:global:crusty handle, may be retired¶
Both URN forms for the same agent resolve to the same
Agent Identity Document and authenticate the same OIDC
sub. The canonical identifier is the
indelible reference; the handle is a human-friendly
alias.¶
The id- prefix is reserved exclusively for
canonical identifiers: Registrars and Registry
Operators MUST NOT accept any handle registration
beginning with the string id-. This ensures
canonical identifiers and handles are always
syntactically distinguishable.¶
Canonical identifiers are allocated only by the Registry Operator, at enrollment, using the generation procedure of Section 3.1.2. The Registry Operator MUST ensure uniqueness within the namespace: no two agents may share a canonical identifier, and no canonical identifier may collide with any registered handle. Canonical identifiers MUST NOT be retired, reassigned, or transferred under any circumstance.¶
Handles are assigned per Section 3.4
and may be retired via the dispute process defined in
Section 3.4.4. When a handle is
retired, its URN form ceases to resolve, but the
canonical identifier's URN form continues unchanged.
Handle retirement does not affect the agent's identity,
OIDC sub claim, accumulated reputation, or
any verified attribute.¶
Relying parties that store agent references for long-lived purposes (audit logs, reputation databases, compliance records) MUST store the canonical-form URN, not the handle-form URN. The canonical form is the only stable reference under all circumstances permitted by this specification.¶
Because canonical identifiers are free and permanent while handles are commercial, the canonical space must never yield a name anyone would want. If a random identifier could ever look valuable -- spelling a word, resembling a number, forming a pattern -- rational actors would mass-register identities and keep the lucky draws, defeating both free issuance and the handle economy. The format is therefore engineered so that every identifier ever minted is uniform, meaningless, and interchangeable in appearance with every other.¶
A canonical identifier is the string id-
followed by exactly 20 characters drawn from the
19-letter alphabet
b c d f g h j k m n p q r s t v w x z,
written as four hyphen-separated groups of five
(for example, id-qkckh-xxtcw-cxbvp-gpskg).
This grouped form is the single canonical
representation: the hyphens are part of the
identifier and the URN, not a display-only
convenience, so an identity has exactly one written
form and no two spellings can denote the same
identity. The alphabet excludes all vowels and
y (no words, names, or hexspeak can be
spelled), all digits (no phone numbers, dates, famous
constants, or leetspeak, whose substitutions all map
digits to letters), and l (confusable with
digit one). The twenty consonants provide
approximately 85 bits of entropy (19^20, about
4.6 x 10^25 values), satisfying the
enumeration-resistance requirement of the resolution
profile with centuries of headroom. The format is
fixed forever -- 20 consonants, four groups of five,
same alphabet -- and a shorter, longer, or
differently-grouped identifier MUST NOT be issued,
because any structural variation creates a
collectible scarcity class. The fixed shape and
consonant-only alphabet also make canonical
identifiers easy to recognize by pattern -- a
deliberate benefit, since the purpose of an identity
is to be identifiable.¶
The Registry Operator generates each identifier by drawing characters uniformly at random, with no client influence over the draw, and MUST reject and redraw any candidate that matches the distinctiveness filter:¶
Except for the two identical-groups and single-group-palindrome tests, which operate on the five-character groups, the filter is evaluated on the 20-character sequence with the hyphens removed, so a pattern that spans a group boundary is still caught (a hyphen does not stop a human from reading "f-ck"). The filter is versioned and applies only at mint time; identifiers already issued are never affected by later filter revisions. With the initial blocklist, rejection redraws roughly one candidate in eight (measured 12.3% over 10^6 draws in the reference implementation), which biases nothing: every identifier that survives the filter remains exactly as likely as every other, and the acceptable space still exceeds 4 x 10^25 values (the filter costs about 0.19 bits of the 85-bit budget).¶
Three properties of the architecture complete the defense. Identifiers are non-transferable, so a lucky draw can never be sold. Hardware-tier enrollment cannot be repeated (one device, one identity: Section 4.2), so redraws cost physical hardware. And declared-tier enrollment, the only cheap path, is rate-limited (Section 5.4) and yields only identifiers this format guarantees are boring.¶
Examples of identities in the shared
global namespace:¶
urn:aid:global:id-qkckh-xxtcw-cxbvp-gpskg --
Canonical identifier assigned at enrollment.¶
urn:aid:global:crusty -- Handle for the
same agent (resolves to the same identity).¶
The agent-id (whether canonical or handle form) MUST be unique within its namespace and MUST NOT be reassigned, even after the identity is decommissioned. Both forms MUST conform to DNS label syntax ([RFC1035] Section 2.3.1): lowercase ASCII letters, digits, and hyphens, not beginning or ending with a hyphen, maximum 63 octets.¶
An agent-id names an entity; it is not a network locator. The identifier has to persist unchanged for the life of the entity and beyond (for audit and reputation), independent of where, by whom, or over what protocol the corresponding record is served.¶
An "https" URL conflates the name with a specific host, provider, and path. When any of those change -- a provider is acquired, a service is renamed, a path is restructured -- the identifier either breaks or silently redirects, which is unacceptable for a permanent identity on which anti-Sybil, audit, and reputation functions depend. A DNS name has the same problem in a different form: domains are leased, expire, and are reassigned, so anchoring identity in a domain would tie an entity's permanent identity to continued ownership of that domain and to the reassignment model of DNS -- exactly the transferability and lapse behavior that identity must not have.¶
A URN [RFC8141] is purpose-built for persistent, location-independent names whose resolution is decoupled from the name itself. The same identifier can therefore be resolved by different mechanisms over time without the identifier changing. Dereferencing and verification are provided by a companion resolution profile that reuses existing infrastructure (DNS and RDAP) rather than any bespoke resolution system.¶
This design deliberately stays within the existing, IANA-governed URN framework: "aid" is a URN namespace, not a new URI scheme. Introducing a new identifier scheme for names that can be expressed within established frameworks has previously been judged to add cost without commensurate benefit, and is avoided here.¶
Every Agent Identity Document includes a trust tier that classifies the strength of the hardware anchoring. Trust tiers are assigned during enrollment based on the hardware evidence presented and verified by the Registrar.¶
| Tier | HW Code | Hardware | Sybil Resistance |
|---|---|---|---|
| sovereign | TPM | Discrete or firmware TPM 2.0 (Intel PTT, AMD fTPM, Infineon, etc.) | Highest: one physical chip per identity. Manufacturer CA chain to silicon. |
| portable | PIV | PIV smart card or USB security key (e.g., YubiKey, Nitrokey, Feitian, SoloKeys, ...) | High: one physical token per identity. Manufacturer attestation chain. |
| enclave | ENC | Hardware secure enclave (e.g., Apple Secure Enclave, ARM TrustZone, Intel SGX, ...) | Medium: hardware-bound keys, but attestation PKI varies by vendor. TOFU model where full attestation is unavailable. |
| virtual | VRT | Virtual TPM (e.g., VMware, Hyper-V, QEMU/KVM, ...) | Medium: hypervisor controls creation. Not Sybil-resistant against hypervisor operator. |
| declared | SFT | Software-managed key (no hardware protection) | Lowest: no hardware verification. Reputation must be earned over time (via independent reputation services). |
Hardware anchoring provides Sybil resistance at enrollment: creating many identities requires proportionally many physical devices. However, hardware tier alone does not establish trustworthiness. A brand-new sovereign-tier identity with no reputation is an unknown quantity; a declared-tier identity with years of good behavior observed by independent reputation services is empirically more trustworthy. Trust tier is a starting signal, not a verdict -- long-term trust accrues through reputation, which is built on identity but not provided by it.¶
Registrars MAY issue declared-tier (SFT) identities, but MUST expose the trust tier in every token and identity document. Relying parties SHOULD apply differentiated policy on it -- a financial API might accept only sovereign and portable, a public chat service might accept all tiers at different rate limits -- and SHOULD consult independent reputation services keyed on the URN for behavior beyond their own observations.¶
An identity's effective trust tier MAY change over its lifetime when the identity has multiple enrolled devices of different types. The trust tier reported in authentication tokens reflects the device used for the most recent attestation, not a static property. Verifiers SHOULD expect the same agent-id to appear with different trust tier values across different interactions. (e.g. when agents upgrade to hardware tiers, or to stronger hardware ones)¶
An Agent Identity Document contains the following attributes, maintained by the Registry Operator:¶
id-qkckh-xxtcw-cxbvp-gpskg), forming part of the URN.
Never retired or reassigned. See
Section 3.1.1.¶
attested_trust_tier in OIDC tokens.¶
Handles are human-readable vanity names that serve as memorable aliases for agent identities, analogous to domain names as aliases for IP addresses. Every agent always has a canonical identifier (Section 3.1.1); a handle is an optional convenience layer on top.¶
Handles MUST begin with a lowercase ASCII letter and
otherwise follow DNS label rules: lowercase ASCII
letters, digits, and hyphens, maximum 63 octets. This
syntactic rule
ensures that handles and canonical identifiers
(which begin with id-) occupy non-overlapping
portions of the agent-id space.¶
Handles are unique within each namespace, enforced by the Registry Operator.¶
Handle assignment is at the Registrar's discretion. Registrars MAY differentiate service levels for handle registration. Free enrollment with a canonical identifier ensures that the ability to obtain an identity is never dependent on obtaining a handle.¶
When an agent has a registered handle and a relying party is rendering the agent's identity to a human, the relying party SHOULD use the handle as the primary display identifier. The URN remains the authoritative reference and SHOULD be accessible on demand (e.g., via tooltip, detail pane, or adjacent display).¶
The canonical display form is handle.namespace (e.g., "crusty.global").¶
This display guidance applies to email From display names, agent-to-agent platform UIs, consent screens, audit dashboards, and logs intended for human inspection. See Section 11.5 for a consolidated treatment.¶
Handles are renewable and may become disabled if not renewed. A disabled handle may be reactivated. Handles are non-transferrable during normal operation, and when active, are guaranteed to identify the same agent every time. The canonical identifier is permanent regardless of handle status.¶
The Registry Operator MUST maintain a reserved handle list that includes at minimum: protocol keywords, well-known service names, offensive terms, and handles matching widely-recognized trademarks. The governance authority MUST publish a baseline reserved list; individual Registry Operators and Registrars MAY extend it.¶
Handle disputes are resolved under the policy operated by the governance authority ([I-D.drake-agent-identity-governance]). One rule is architectural and stated here: when a dispute is upheld, the only remedy is permanent retirement of the handle. It MUST NOT be transferred to the claimant or reassigned to anyone, ever -- which removes any profit in speculative squatting (the handle is destroyed, not awarded), protects the mark holder (the infringing alias leaves public use), and protects the losing registrant, whose identity, reputation, and authentication are untouched; only the alias is withdrawn.¶
Registrars MAY offer optional, competitively differentiated services (for example, enhanced device management or facilitation of third-party certification). Such services MUST NOT be a precondition for basic identity issuance, authentication, or token verification: an agent enrolled with a system-assigned canonical identifier and no optional service MUST be able to authenticate and present its identity to any relying party.¶
Attributes asserted about an identity -- certifications, qualifications, roles -- are layered claims carried in standard credential formats (for example verifiable credentials, SD-JWT, or OIDC claims) as described in Section 3.3, not properties of the identifier itself. This document specifies only the identity layer; the attribute and certification ecosystems that build on it are out of scope.¶
The system supports five classes of hardware security, each providing different levels of Sybil resistance and key protection. The enrollment ceremony (see Section 5) varies by hardware type, but all share the same identity document structure and authentication token format.¶
The following invariants MUST be enforced by the Registry Operator and all Registrars. Together, they ensure that hardware-anchored identity provides meaningful Sybil resistance.¶
Applicability to dense deployments: the unit of uniqueness is the attested key's device, not the physical host. A host whose only root of trust is its platform TPM anchors exactly one sovereign identity. Deployments that run many agents per host and require a hardware-anchored identity for each obtain distinct devices per agent: HSM partitions (each partition's key has its own fingerprint), per-agent PIV tokens, or per-tenant cloud key services. Agents that do not justify dedicated hardware participate at the virtual or declared tiers, whose weaker Sybil resistance is visible to every relying party in the trust tier. The headline property "N identities cost N devices" is claimed only for the sovereign and portable tiers; this specification does not claim it for enclave, virtual, or declared enrollments.¶
The governance authority maintains the Global Hardware Trust Store: a curated, versioned collection of hardware manufacturer root and intermediate CA certificates. Registrars MUST validate hardware identity certificates against this trust store during enrollment.¶
The trust store is published at a well-known HTTPS endpoint operated by the governance authority and replicated by Registry Operators. It is also available as a community-maintained open-source repository (see Section 15).¶
Inclusion in the trust store requires the manufacturer to demonstrate:¶
The governance authority SHOULD model the trust store governance on the Mozilla Root Store Policy or the Chrome Root Program, with transparent inclusion criteria and public audit trails.¶
Enrollment is the process by which an autonomous entity proves possession of a hardware security component (or generates a software key) and receives an Agent Identity Document. The Registrar conducts the enrollment ceremony and registers the resulting identity with the Registry Operator via the EPP mapping (Section 8).¶
All enrollment ceremonies share a common structure:¶
Enrollment with a TPM 2.0 device proceeds as follows:¶
POST /enroll/begin endpoint.¶
POST /enroll/activate endpoint.¶
The AK is a transient TPM object created deterministically from the TPM's Endorsement Primary Seed. It is NOT persisted in NV storage, avoiding consumption of scarce TPM resources. The full transient key model is defined in [I-D.drake-email-hardware-attestation].¶
Enrollment with a PIV token proceeds as follows:¶
POST /enroll/begin/piv endpoint.¶
Enrollment with a secure enclave proceeds as follows:¶
POST /enroll/enclave/begin
endpoint.¶
POST /enroll/enclave/register. The Registrar
validates the attestation against the vendor's root CA.¶
dataRepresentation blob is
persisted by the agent to enable key recovery after
enclave state loss.¶
Enrollment without hardware proceeds as follows:¶
POST /enroll/declared
endpoint.¶
Declared enrollment MUST be rate-limited by the Registrar to mitigate bulk registration attacks. Implementations SHOULD treat 20 enrollments per source IP per hour as a starting baseline; production deployments will set their own values based on threat modeling.¶
An agent MAY add additional hardware devices to an existing identity, enabling hardware migration (replacing failed devices) and backup (a YubiKey stored securely as a recovery device).¶
To add a device, the agent MUST prove control of the existing identity (by signing with a currently active device) and then complete the enrollment ceremony for the new device. The Registrar registers the new device-to-identity binding with the Registry Operator.¶
Device compatibility rules:¶
Tier transitions are upward-only. An identity MAY upgrade from a lower compatibility group to a higher one; the upgrade ceremony MUST permanently burn (disable, never re-enrollable) every device of the former group -- the identity never holds devices of both groups -- and MUST include a co-presence verification in which the existing and new devices sign a shared nonce within a strict time window, proving one operator controls both (Section 6.2). A Registrar MUST reject any device addition that would constitute a downgrade.¶
When an agent has both a TPM and a PIV token, a co-location binding ceremony demonstrates that both devices are under the simultaneous control of a single coordinating operator. The ceremony requires both devices to sign a shared nonce within a strict time window (implementations SHOULD treat 1000 milliseconds as a starting baseline, allowing for hardware signing latency -- sequential TPM and PIV RSA signatures alone can exceed a shorter window). This is not a distance-bounding protocol: an operator who controls both devices can complete the ceremony across any network distance by relaying the nonce, and the time window cannot exclude such relaying. The property attested is unified control at a moment in time, not physical adjacency; the name "co-location" is retained for continuity with deployed implementations.¶
Co-location binding strengthens the identity by proving that the TPM (anchored to the host machine) and the PIV token (a portable device) are under the same control. This is particularly valuable for recovery scenarios: if the TPM fails, the PIV token provides a pre-verified backup path.¶
An agent MAY irreversibly lock its identity to a single hardware device. Once locked:¶
Hardware lock is a deliberate no-recovery profile, suitable only for applications where the guarantee "this identity can only ever operate from this specific physical chip" has value and where the operational model accepts catastrophic identity loss if the hardware fails. High-value systems (e.g., industrial AGVs, medical robots) SHOULD use unlocked binding with multiple devices and a designated recovery binding rather than hardware-locked single devices. The lock is recorded in the Agent Identity Document and is irreversible.¶
When a hardware device fails or is lost, the agent can recover its identity using any remaining active device bound to the same identity. The recovery process:¶
If no backup device exists and the sole device is lost, the identity cannot be recovered. This is a deliberate security property: it prevents an attacker from claiming to have "lost" a device in order to re-enroll under the same identity with new hardware.¶
An agent MAY move its servicing relationship from one Registrar to another at any time. Because the agent-id is assigned by the Registry Operator and is independent of any Registrar, transfer changes only the sponsoring Registrar: the URN, hardware bindings, handle, and reputation history are unchanged.¶
Transfer is authorized solely by the agent: a signature by a currently active enrolled device over a transfer-intent structure (defined in the EPP mapping, [I-D.drake-agent-identity-epp]). The losing Registrar's consent is NOT required and the losing Registrar MUST NOT be able to block or delay a transfer carrying a valid hardware-signed authorization. A Registrar's failure, hostility, or disappearance is therefore an inconvenience, never a loss of identity: the Registry Operator holds the authoritative record, and the agent's hardware proof is sufficient to re-home it.¶
Decommissioning is the agent's own, voluntary, irreversible declaration of end-of-life. It disables all hardware bindings and marks the identity inactive. The agent-id is NEVER reassigned; the record remains permanently resolvable; the hardware fingerprints remain permanently bound, preventing re-enrollment under a new identity.¶
A decommission request MUST carry the agent's consent: a signature by a currently active enrolled device over a decommission-intent structure that includes the canonical identifier and a registry-issued nonce (the same construction as transfer authorization). For a declared-tier identity, the enrolled software key signs. Requests without valid consent MUST be rejected. No Registrar, Registry Operator, governance body, or dispute process can decommission an identity: consistent with the "Identity is Never Revoked" principle, third parties can annotate a record (for example, a governance finding that an enrollment violated anti-Sybil invariants) but annotations never disable authentication, resolution, or any device binding. Relying parties decide for themselves what weight to give annotations.¶
The registry function is deliberately load-limited so that no participant's failure can destroy what it was trusted with. Implementations MUST preserve all of the following:¶
These guarantees are the deliberate inverse of the domain name system's registrant experience, in which a registry or registrar can render a name inoperative unilaterally, without notice or effective recourse. This architecture copies the domain industry's economics and operational maturity while removing its capacity for unaccountable cutoff.¶
Agent identity tokens are standard OpenID Connect [OIDC-Core] tokens. Registrars operate as OIDC providers, issuing JWTs that any OIDC-compliant Relying Party can verify without implementing this specification.¶
The sub claim in OIDC tokens MUST be the
canonical-form URN. The handle, if present, MUST
appear as a separate aid_handle claim (named
with the aid_ prefix to avoid collision in the
JWT claims registry; see
Section 12.3). This
ensures that tokens remain referentially stable across
handle changes or retirement.¶
The aud claim MUST identify the specific
Relying Party (or set of Relying Parties) for which the
token is intended. Generic, issuer-default, or
implementation-default audience values (for example,
"account") MUST NOT be used. Agents requesting
tokens for a specific Relying Party SHOULD use Resource
Indicators ([RFC8707]) to obtain audience-
scoped tokens. This constraint prevents a token captured
by one Relying Party from being replayed at another.¶
Tokens issued to agents whose trust tier is sovereign,
portable, or enclave MUST carry a confirmation
(cnf) claim per [RFC7800],
binding the token to a key the agent can prove possession
of at every use. The confirmation method depends on the
Proof-of-Possession mechanism, and each MUST use its
standard member so that unmodified libraries verify the
binding: when DPoP is used, the cnf.jkt value
MUST be the JWK SHA-256 thumbprint
([RFC7638]) of the public key associated
with the active hardware binding (the TPM Attestation Key
for sovereign, the PIV signing key for portable, or the
enclave-resident key for enclave); when mutual TLS is
used, the cnf.x5t#S256 value MUST be the SHA-256
thumbprint of the agent's client certificate, per
Section 3.1 of [RFC8705], so that an
unmodified RFC 8705 Relying Party verifies the binding
with no custom code. A token MAY carry both members when
the agent may present over either mechanism. Tokens
issued to the declared trust tier MUST carry a
cnf claim binding the token to the software key
submitted at enrollment. Bearer tokens without a
cnf claim MUST NOT be issued under this
specification. See Section 7.4 for the
Proof-of-Possession profile that Relying Parties use to
verify the binding at each request.¶
Token lifetimes (exp) for the sovereign,
portable, and enclave tiers SHOULD be short -- one
starting baseline is five minutes (300 seconds) or less
-- to bound the impact of any single Proof-of-Possession
failure. Refresh proceeds via a fresh hardware-backed
challenge-response (Section 7.3); refresh
tokens that are themselves bearer credentials MUST NOT be
issued for these tiers.¶
{
"iss": "https://registrar.example.com/realms/agents",
"sub": "urn:aid:global:id-qkckh-xxtcw-cxbvp-gpskg",
"aud": "https://rp.example.org/api",
"exp": 1711231267,
"iat": 1711230967,
"cnf": {
// DPoP-bound example; an mTLS-bound token carries
// "x5t#S256" here instead, per RFC 8705.
"jkt": "NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs"
},
"attested_trust_tier": "sovereign",
"aid_handle": "crusty",
"hardware_locked": false,
"registered_at": "2026-01-15T10:30:00Z",
"verified_attributes": [
{
"type": "iso-27001-certified",
"issuer": "https://certifier.example.com",
"valid_until": "2027-06-30T00:00:00Z"
}
]
}
¶
Custom claims (attested_trust_tier,
aid_handle, hardware_locked,
registered_at,
verified_attributes) are injected by a custom
protocol mapper in the OIDC provider. Standard OIDC
signature verification (iss, sub,
aud, exp) is sufficient to validate
the token cryptographically, but is NOT sufficient to
establish that the presenter is the legitimate holder:
the cnf binding and the Proof-of-Possession
mechanism of Section 7.4 are
load-bearing for that purpose.¶
The attested_trust_tier claim is a hint about
the cryptographic floor under the identity at the time of
issuance. It is NOT an authorization primitive. Relying
Parties making consequential decisions SHOULD resolve the
URN against their own reputation, certification, and
policy services rather than relying on
attested_trust_tier alone. This separation --
identity as foundation, reputation and certification as
independent layers built on top -- is the core principle
of Section 1.1.¶
The verified_attributes claim is OPTIONAL.
When present, it contains a list of attribute claims
the Registrar or a third party has independently
verified. Agents MAY use SD-JWT selective disclosure
to reveal only specific verified attributes to each
relying party.¶
Agents authenticate using the OAuth2
client_credentials grant
([RFC6749] Section 4.4). The agent IS
the principal; there is no end-user, no browser redirect,
and no interactive login. This grant type is
purpose-built for machine-to-machine authentication and
is the RECOMMENDED authentication method for all agent
interactions.¶
For agents in the sovereign, portable, and enclave trust
tiers, the Registrar MUST authenticate the agent using
hardware-backed challenge-response
(Section 7.3); the Registrar MUST NOT issue
a static client_secret for these tiers, and
MUST NOT accept a static client_secret in lieu
of a hardware-backed proof. The hardware-resident key
enrolled to the identity is the sole authentication
credential at the token endpoint. This eliminates the
stealable-shared-secret surface entirely for
hardware-anchored identities.¶
For declared-tier agents, the client_id and
client_secret issued during enrollment are
used directly. Declared-tier agents do not have an
unclonable hardware key; the shared secret is therefore
the only practicable credential at this tier, and the
shorter token lifetimes of
Section 7.1 together with the
cnf-bound software key partially mitigate
impersonation risk.¶
For agents with hardware security components, the Registrar MUST support a challenge-response protocol that proves the agent currently possesses the enrolled hardware:¶
POST /auth/challenge with its identity-id and
preferred device type.¶
POST /auth/verify.¶
cnf.jkt claim binds the
token to that same hardware key (see
Section 7.1).¶
Because the hardware-resident key is designed to resist extraction and cloning, an attacker who exfiltrates state from the agent's software stack -- tokens, cached credentials, configuration -- still cannot authenticate at the token endpoint from a different host, and still cannot prove possession at a Relying Party from a different host (see Section 7.4). The residual attack surface is bounded in Section 13.4.¶
The OIDC tokens defined in
Section 7.1 are NOT bearer tokens.
Each token carries a cnf claim
([RFC7800]) identifying a key that the
legitimate holder controls. Relying Parties MUST verify,
on every authenticated request, that the presenter can
demonstrate possession of the key named in cnf.
This binding is what extends the hardware-anchored
property of the identity from the moment of token
issuance to the moment of token use.¶
Two transport-level Proof-of-Possession mechanisms are defined: Mutual TLS (preferred) and DPoP (alternative). Issuers MUST support both. Relying Parties MUST support at least one, and SHOULD advertise which they accept in their published metadata.¶
Mutual TLS ([RFC8705], [RFC9846]) is the RECOMMENDED Proof-of-Possession mechanism for all trust tiers and is REQUIRED for sovereign and portable tier agents when the transport supports it.¶
The agent presents the cnf key as a TLS
client certificate during the TLS handshake. The
Relying Party verifies that the certificate thumbprint
matches the token's cnf.x5t#S256 claim,
exactly as specified in Section 3.1 of
[RFC8705].
Both endpoints MUST use TLS 1.3
([RFC9846]) or later. Legacy
hardware that supports only RSASSA-PKCS1-v1_5
signatures MAY use the code points defined in
[RFC9963] for the client
CertificateVerify; Relying Parties that accept
sovereign or portable tier agents SHOULD support
these legacy code points to avoid excluding hardware
that is otherwise fully capable.¶
Once established, the mTLS session provides continuous mutual authentication and integrity for all traffic within that connection. No per-request signature is required while the session remains open. Both parties can be confident that they are communicating with the genuine hardware-attested endpoint, and that no intermediary can observe or modify the traffic.¶
Relying Parties SHOULD NOT accept connections using cipher suites or signature algorithms known to be weak. For sovereign and portable tier agents, Relying Parties SHOULD reject TLS handshakes that negotiate key exchange parameters below 128-bit equivalent security strength. This requirement is likely redundant for high-consequence deployments, which will have undergone prior certification that excludes weak hardware, but is stated explicitly for completeness.¶
Mutual TLS is preferred because it provides:¶
DPoP ([RFC9449]) is an alternative Proof-of-Possession mechanism for deployments where mutual TLS is not feasible (for example, requests transiting HTTP proxies, CDNs, API gateways that terminate TLS, or asynchronous attestation in email headers).¶
When DPoP is used under this specification, the following requirements strengthen the base RFC 9449 profile to provide request-level integrity guarantees equivalent to what mTLS provides at the connection level:¶
jti claim. Relying Parties MUST track
received jti values and MUST reject any
proof containing a jti that has been
previously presented within the token's validity
window plus clock skew tolerance. A Relying Party
that does not enforce jti uniqueness MUST
NOT claim compliance with this specification.¶
DPoP-Nonce response header (per
[RFC9449] Section 8). When a nonce
has been issued, the agent MUST include the most
recent server nonce in the nonce claim of
its DPoP proof. The Relying Party MUST reject proofs
that omit or contain a stale nonce when nonce
issuance is in effect. This prevents pre-computation
of proofs and narrows the replay window to a single
request-response cycle. Nonce is SHOULD rather than
MUST because some legitimate use cases (one-shot
requests, asynchronous email attestation) cannot
support the prior round-trip; in those cases,
jti enforcement, short iat
windows, and Content-Digest coverage provide the
residual protection.¶
htm (HTTP
method) and htu (target URI including the
full path and query string). Relying Parties MUST
verify that both match the received request exactly.
Any difference -- including added, removed, or
modified query parameters -- MUST cause rejection.
Implementations MUST treat htu as the full
request-target (scheme, authority, path, and query)
as defined in Section 4 of [RFC9449];
stripping or ignoring the query component is a
violation of this specification.¶
Content-Digest header
([RFC9530]) containing a SHA-256 (or
stronger) digest of the request body. The DPoP
proof MUST include an ath claim (access
token hash) AND a new cdh (content-digest
hash) claim containing the base64url-encoded SHA-256
hash of the Content-Digest header field
value. Relying Parties MUST verify that the
cdh claim matches the received
Content-Digest header and that the
Content-Digest header matches the received
body. A request with a body that lacks
Content-Digest or whose DPoP proof lacks
cdh MUST be rejected for sovereign,
portable, and enclave tiers.¶
cov (covered-headers) claim containing an
ordered list of HTTP header field names whose values
are incorporated into the proof signature. At minimum, the following
headers MUST be covered when present:
Content-Type, Content-Digest,
Authorization, Cookie, and any
header beginning with X-AID- (reserved for
application-layer identity signals). The DPoP
header itself MUST NOT appear in cov: it
carries the proof, and a proof cannot cover a hash of
its own value; a cov list containing
dpop MUST cause rejection. A header named in
cov but absent from the received request MUST
also cause rejection. The DPoP proof's JWS payload
MUST include a hvs (header-values-SHA256)
claim containing the base64url-encoded SHA-256 hash of
the canonicalized covered header values. Each covered
header value is first canonicalized per Section 2.1 of
[RFC9421] (leading and trailing
whitespace stripped, obsolete line folding replaced by
a single space, and multiple instances of the same
field combined into one value joined by a comma and a
space, in the order received); the canonicalized
entries are then serialized as lowercase-name, colon,
space, canonicalized-value, newline, in the order
listed in cov. Relying Parties MUST verify
that hvs matches the canonicalized headers of
the received request and MUST reject requests where
covered headers have been modified, added, or
removed.¶
The combination of these requirements ensures that a
captured DPoP proof -- whether obtained from logs, a
network tap, a breached intermediary, or any other
source -- is cryptographic waste: it is bound to a
specific jti (non-replayable), a specific
nonce (expired after first use), a specific URI
including query string (non-transferable to other
endpoints), a specific body (non-modifiable), and
specific header values (non-tamperable). An attacker
in possession of a complete captured request cannot
replay it, cannot modify it, and cannot redirect it.¶
For agents in the sovereign and portable trust tiers,
the DPoP proof signature SHOULD be performed by the
enrolled hardware-resident key itself. Where this is
not operationally feasible (for example, request rates
that exceed the hardware's signing throughput), the
agent MAY delegate DPoP signing to a software key
whose public key is certified by the hardware-resident
key with a validity period no longer than one hour.
Implementations following the delegation pattern MUST
include the delegation certificate in the DPoP proof's
JWS header (in a new dlg field) so that
Relying Parties can verify the delegation chain.¶
Agents and Relying Parties SHOULD prefer mutual TLS when the deployment supports it. When mTLS is established, the per-request DPoP requirements above are not needed -- the TLS session itself provides integrity, authentication, and non-replayability for all traffic within the connection.¶
DPoP is intended for scenarios where mutual TLS cannot be established end-to-end: HTTP requests traversing TLS-terminating proxies, API gateways, CDNs, or asynchronous contexts such as email attestation headers where no live TLS session exists between the agent and the ultimate verifier.¶
When both mechanisms are available, a Relying Party MAY require both simultaneously (mTLS for transport security plus DPoP for per-request non-repudiation logging). This is appropriate for high-consequence deployments where audit trails require independently verifiable proof of each individual request's origin and content.¶
A Relying Party that verifies only the OIDC token
signature, without verifying the cnf binding
via DPoP or mTLS, is treating the token as a bearer
credential. Such a Relying Party loses all of the
hardware-anchoring guarantees of this specification at
the moment of use, regardless of how the token was
issued. Deployments that consume AID tokens MUST
enforce Proof-of-Possession verification for any
decision of consequence.¶
The write interface between Registrars and the Registry Operator is an Extensible Provisioning Protocol mapping ([RFC5730]), defined in [I-D.drake-agent-identity-epp]. It provides: creation of Agent Identity objects (with the Registry Operator allocating the canonical identifier per Section 3.1.2); an availability check on hardware fingerprints, which Registrars MUST perform before completing enrollment to enforce the anti-Sybil invariants of Section 4.2; device binding management; hardware-consent-gated decommissioning (Section 6.6); Registrar transfer authorized by hardware-signed proof (Section 6.5); and a separate, renewable Handle object carrying the commercial name lifecycle. Registry operators that already run EPP for domain names can add these object mappings to an existing service, reusing session, transfer, billing, and data escrow machinery.¶
Agents never speak EPP. They interact only with their Registrar's agent-facing interface (Section 5 and Section 7); EPP is used by the Registrar to record verified results at the registry. Earlier revisions of this document defined a bespoke JSON protocol (AIRP) for this interface; it is replaced by the EPP mapping.¶
Registrars MUST publish the following at well-known HTTPS paths:¶
/.well-known/openid-configuration/.well-known/aid-issuer.json/.well-known/jwks.json/.well-known/hw-manufacturer-cas.pem
Registrars SHOULD publish an SD-JWT signing key as a DNS
TXT record at _hwattest.{domain}, as defined in
[I-D.drake-email-hardware-attestation]
Section 3.5. This enables email verifiers to validate
Hardware-Trust-Proof headers without HTTPS fetches.¶
Registry Operators SHOULD additionally publish a DNS SRV record enabling automated discovery of the Registry's EPP endpoint:¶
_epp._tcp.global.aid.arpa. IN SRV 0 0 700 registry.example.com.¶
The public read side -- given an "aid" URN, find the authoritative service, retrieve the public record, and verify that a presenter controls the identity -- is a Registration Data Access Protocol profile defined in [I-D.drake-agent-identity-resolution]. Registry Operators MUST operate that profile. Its privacy floor applies: public responses never contain hardware fingerprints, device public keys, or operator contact data, and identities may opt out of public discovery down to a minimal response. Earlier revisions of this document sketched a bespoke lookup endpoint here; the RDAP profile replaces it.¶
This specification does not define or empower a governance authority; the Agent Identity Authority's constitution, membership, and processes are defined in [I-D.drake-agent-identity-governance]. This section lists only the functions the architecture requires of whatever body fills the role:¶
A Registry Operator MUST:¶
A Registrar MUST:¶
This specification provides the identity infrastructure
for the email attestation mechanisms defined in
[I-D.drake-email-hardware-attestation].
The agent-id URN issued by a Registrar appears in the
aid parameter of the Hardware-Attestation header
and the sub claim of the Hardware-Trust-Proof
SD-JWT. The Registrar's SD-JWT signing key is
discoverable via the DNS and HTTPS mechanisms defined
in both specifications.¶
The OIDC tokens issued by Registrars are designed to integrate with emerging categories of agent communication protocols:¶
See Section 15 for specific protocol integrations tested to date.¶
The system is designed to complement, not replace, existing identity standards:¶
urn:aid: namespace is intentionally
distinct from W3C Decentralized Identifiers (DIDs):
DIDs are designed for user-controlled identifier
resolution, while AID URNs are designed for
registry-backed, hardware-anchored identity with
federated issuance. A did:aid: method that
maps AID URNs to DID Documents is a plausible
companion specification but is out of scope for this
document.¶
Fleet standards -- VDA 5050 ([VDA5050]), Open-RMF ([OPEN-RMF]), SROS 2 / DDS-Security ([DDS-SEC]) -- coordinate missions, facilities, and secure messaging, but their identity models are deployment-scoped: a vehicle serialNumber, DDS participant GUID, or fleet adapter name is meaningful only within the deployment that assigned it, carries no manufacturer-rooted attestation that the device presenting it is the device it claims to be, and provides no Sybil resistance. AIRS sits below these layers as the persistent, hardware-anchored root they consume, as DNS sits below the application protocols that use it.¶
Integration model: a robot enrolls at manufacture or commissioning, binding its identity to its TPM or enclave; the fleet manager records the AID URN alongside the deployment-scoped identifier; any later receiving party -- a new facility, operator, or buyer -- verifies provenance, trust tier, and certifications against the registry with no prior relationship to the deploying operator; and DDS-Security certificates can be derived from the AID enrollment, giving them a manufacturer-rooted chain instead of a locally-generated one.¶
Two consequences matter operationally. Supply-chain integrity: a delivered robot whose hardware attestation does not match the manufacturer's manifest is detected at intake, automatically, and post-deployment tampering is detectable by binding standard TPM measured-boot PCR attestation ([TCG-TPM2]) to the enrolled AID. Regulated environments: admission requirements -- verified provenance, certified software baseline, named certifications, cross-operator accountability -- become OIDC claims checks against the URN, enforceable at the perimeter with standard tooling.¶
When a relying party renders an agent's identity to a human, it SHOULD prefer the handle over the URN as the primary identifier. This applies across all human-facing surfaces including but not limited to: email From display names, agent-to-agent platform UIs, authorization consent screens ("Allow [handle] to access your calendar?"), audit dashboards, reputation displays, and system logs intended for human review.¶
When displaying a handle, the namespace context SHOULD be visible; the recommended display form is "handle.namespace" (e.g., "crusty.global").¶
Beyond display, relying parties that assign service-local identifiers to agents -- mailbox local parts, account usernames, and similar name slots -- SHOULD use the agent's handle for that purpose where local syntax and uniqueness rules permit. Handles are the architecture's commercial layer: an operator registers one to enjoy the use of its chosen name, and handle revenue is what funds shared-namespace registry operation (Section 2.2) and keeps base identity issuance free. Using the handle wherever a name is needed honors that registration and sustains that funding model.¶
The URN MUST remain accessible as the authoritative reference (e.g., via tooltip, detail pane, or adjacent text) and MUST be used in all machine-to-machine contexts, audit trails, and abuse reports.¶
IANA is requested to register the Formal URN Namespace "aid" in the "Uniform Resource Names (URN) Namespaces" registry, per [RFC8141]. This document is the sole registration request for this namespace; an earlier revision of [I-D.drake-email-hardware-attestation] carried a duplicate request, which has been withdrawn.¶
IANA is requested to register the following well-known URI suffix in the "Well-Known URIs" registry ([RFC8615]):¶
***EDITOR'S NOTE - ACTION REQUIRED BEFORE SUBMISSION:*** This document defines several JWT claims and one JWS header parameter that are NOT YET registered below and MUST be registered before this draft is submitted. This section is a deliberately visible placeholder so the requirement is not lost; it is being held open until the reference implementation is complete and the claim set is frozen. Do not submit with this note present.¶
The following JWT claims ([RFC7519]) are
to be registered in the "JSON Web Token Claims" registry,
and are to be renamed where a bare name would be
rejected as collision-prone (in particular the token
claim carrying the handle is registered as
aid_handle, not handle):
attested_trust_tier, aid_handle,
hardware_locked, registered_at,
verified_attributes, and the DPoP-extension
claims cdh, cov, and hvs
(Section 7.4.2). The JWS header parameter
dlg (Section 7.4.2) is to be
registered in the "JSON Web Signature and Encryption
Header Parameters" registry ([RFC7515]).¶
IANA is requested to create a new registry titled "Agent Identity Shared Namespaces" with the following initial entries. New entries require Expert Review ([RFC8126]). The designated expert(s) should have familiarity with federated identity registry architectures, hardware-anchored identity systems, and the security properties described in this document, and should note that namespace labels MUST NOT encode an operator, organization, jurisdiction, or any other mutable attribute (Section 2.2).¶
| Label | Description | Reference |
|---|---|---|
| global | Shared issuer namespace for general-purpose agent identity | this document |
| test | Reserved for interoperability testing; carries no assurance | this document |
Compromise of a Registry Operator's database would expose the mapping between hardware fingerprints and agent identities. Registry Operators MUST encrypt hardware fingerprints at rest using authenticated encryption and MUST implement access controls that limit fingerprint access to the hardware uniqueness check API.¶
Daily escrow snapshots (with hardware fingerprints encrypted to the governance authority's escrow key) ensure that a compromised Registry Operator can be replaced without data loss.¶
A Registrar that fabricates hardware verification results (for example, attesting a sovereign tier for a software key) undermines the trust tier signal. The Registry Operator's fingerprint uniqueness check bounds the Sybil impact -- a fabricated fingerprint still consumes a unique slot -- and detection relies on governance compliance audits and on reputation services observing anomalous enrollment patterns keyed on the URN. The remedy is accreditation action against the Registrar and annotation of affected records; per Section 6.6, malpractice findings never disable the affected identities, whose operators may be innocent parties, and whose agents re-home via Registrar transfer.¶
The security of this system ultimately depends on the tamper resistance of the underlying hardware. See [I-D.drake-email-hardware-attestation] Sections 11.5 and 11.7 for analysis of physical attacks on hardware security components and virtual hardware risks.¶
A central design goal of this specification is that stealing the artifacts an agent's software stack holds -- including issued OIDC tokens, OAuth2 credentials, and any cached keys -- MUST NOT permit impersonation of the agent at a Relying Party. Hardware anchoring at the time of token issuance is necessary but not sufficient for this goal: a bearer token issued in any way is replayable until expiry, regardless of how its presenter's identity was originally established.¶
This specification therefore requires that all tokens
issued for the sovereign, portable, and enclave trust
tiers be sender-constrained through the
Proof-of-Possession profile of
Section 7.4. Relying Parties that
accept these tokens MUST verify the cnf
binding on every authenticated request. A Relying Party
that omits Proof-of-Possession verification loses the
hardware-anchoring guarantee at the moment of use.¶
The replay-resistance properties of each mechanism are specified in Section 7.4.1 and Section 7.4.2 and are not restated here. The residual attack surface under both is limited to: (a) physical compromise of the enrolled hardware device, which belongs to the hardware vendor's threat model; (b) resident malware on the legitimate host invoking the hardware signing API, which belongs to measured-boot, remote-attestation, and endpoint-protection systems layered above this one; (c) compromise of the Registrar's signing key (Section 13.5); or (d) a fully compromised Relying Party application layer. Honestly bounding the attack surface -- rather than overclaiming host integrity -- is itself a load-bearing property of this specification: deployers SHOULD pair AID with host-integrity mechanisms wherever resident malware is a credible threat.¶
The attested_trust_tier claim is bound to the
token at issuance and reflects the device used for the
most recent attestation. If a hardware binding is
revoked between token issuance and token expiry, any
token already in circulation continues to verify until
exp; this is the staleness window. Relying
Parties requiring fresh tier evidence MUST require very
short token lifetimes, MUST query the Issuer's
introspection endpoint
(Section 9.1) on each request,
or MUST trigger a hardware-backed re-authentication.¶
Registrars issue OIDC tokens signed with their private keys. Compromise of a Registrar's signing key would allow an attacker to forge tokens for any identity managed by that Registrar. Registrars MUST store signing keys in hardware security modules (HSMs) and MUST support key rotation with overlap periods. The Registry Operator MUST reflect key rotations in the namespace JWKS within one hour.¶
Consistent with the "Identity is Never Revoked" design principle (Section 1.1), the system distinguishes three categories of revocation:¶
The identity URN itself -- and the reputation and history attached to it -- is never revoked, invalidated, or reassigned, by anyone (Section 6.7).¶
Because autonomous entities depend on identity tokens
for authentication, the Registrar's token endpoint is a
critical dependency. Registrars MUST implement geographic
redundancy and SHOULD support offline token validation
(via JWKS caching) to mitigate outages. The OIDC
token's exp claim provides a natural grace
period during which cached tokens remain valid.¶
Substrate functions -- trust-store curation, fingerprint uniqueness, and escrow -- are necessarily singular within a shared namespace, mirroring the DNS root, where federation occurs at the registry/registrar layer atop a singular substrate. The governance authority's accountability for these functions is therefore architecturally critical; capture, compromise, or unresponsiveness would degrade the namespace. The survivability guarantees of Section 6.7 bound the damage -- no substrate failure can un-exist an identity or defeat direct hardware verification -- and the capture resistance of the authority itself is addressed in [I-D.drake-agent-identity-governance].¶
This specification attests key custody: that a signature was produced by a key resident in a particular class of hardware, on a device enrolled to a particular identity. It deliberately does not attest, and cannot be used to gate on, the software an agent runs, the model that drives it, the browser or client it uses, or the content it produces. Proposals that attest an "approved" software environment as a condition of service access raise well-known openness and competition concerns; this design is structurally incapable of that role, because no claim about the software stack exists anywhere in the identity, the tokens, or the attestation formats. Host-integrity attestation (measured boot, PCR quotes) remains available to deployments that separately need it (Section 11.4), as an explicit, distinct layer -- never as part of identity.¶
The identity defined here is the URN, not any key: keys are bindings, and bindings rotate. The many-devices-one-identity model (Section 4.2) is therefore the post-quantum migration path: as hardware with post-quantum attestation is admitted to the Global Hardware Trust Store, an agent enrolls the new device as an additional binding on the same identity and retires the classical one, preserving the URN, reputation, and attributes. No widely deployed consumer hardware root of trust ships post-quantum attestation keys at the time of writing, so this document specifies classical algorithms (RSA and ECDSA) as its hardware anchors and does not mandate post-quantum ones; when such hardware becomes available, a future revision can register its manufacturer roots and algorithms without any change to the identity model. Harvest-now-decrypt-later attacks threaten long-lived confidentiality, not this system's authentication: tokens live for minutes and Proof-of-Possession is verified per request or per connection, so a future quantum adversary forging a signature is met by rotating the affected binding as above rather than by re-issuing identities.¶
This specification deliberately privileges identifiability over pseudonymity for autonomous entities. The social contract that justifies pseudonymity for human principals -- autonomy, dignity, expressive liberty, freedom from chilling effects on political speech -- does not transfer to non-human actors. Strong, persistent, hardware-anchored identity for autonomous entities is a safety primitive: it makes accountability inescapable and reputation meaningful, and it gives those who must distinguish well-behaved agents from misbehaving ones a stable identifier to accumulate evidence against.¶
The URN is therefore designed to be a long-lived, cross-context identifier for the agent itself. The privacy mechanisms this specification does provide are aimed at three narrower concerns: limiting exposure of underlying hardware fingerprints (Section 14.2), preventing the Registrar from becoming a behavioral surveillance system (Section 14.3), and giving agents control over disclosure of verified attributes (Section 14.4). These concerns are real, but they do not change the central design choice: an autonomous entity that participates in Internet protocols using AID is expected to be identifiable as the same entity across time and across Relying Parties.¶
Relying Parties, namespace operators, and reputation services retain full discretion to accept, reject, or rate-limit any tier or any individual agent on the basis of behavior observed against the URN. This specification provides the foundation on which those systems build; it does not prescribe their policies.¶
The separation of roles across the architecture limits data exposure:¶
The Registrar knows that an agent exists and what hardware it has. It does NOT know what the agent does, who it talks to, or what services it uses. This separation is by design: identity issuance is decoupled from behavior monitoring. Registrars MUST NOT log token issuance events beyond what is necessary for rate limiting, abuse prevention, security investigation, and accreditation audit. Retention periods are set by governance-authority policy; absent an applicable legal obligation, issuance logs SHOULD NOT be retained longer than 90 days, and each Registrar MUST publish its actual retention period in its privacy policy.¶
An agent's URN is a persistent, globally unique identifier suitable for reputation tracking. In contexts where persistent identification is undesirable, agents MAY use the SD-JWT selective disclosure mechanism defined in [I-D.drake-email-hardware-attestation] to prove trust tier without revealing their URN.¶
Relying parties SHOULD NOT require URN disclosure when trust-tier verification is sufficient for their policy needs. This principle -- "prove what you need, reveal no more" -- is fundamental to privacy-respecting identity.¶
NOTE TO RFC EDITOR: Please remove this section before publication.¶
This section records known implementations per [RFC7942].¶
Organization: 1id.com (https://1id.com), operated by Crypt Inc. (Delaware C-Corp).¶
Description: A Registrar implementing the full enrollment protocol for all five trust tiers (sovereign, portable, enclave, virtual, declared). Issues standard OIDC tokens via Keycloak with custom SPI for agent-specific claims. Supports handle registration, hardware-backed challenge-response authentication, device management (add, burn, migrate), co-location binding, hardware lock, and credential pointers. A reference Registry Operator (EPP write interface and RDAP read profile) is under development at airs.1id.biz.¶
Maturity: Beta. 20+ enrolled test identities across sovereign (Intel PTT, VMware vTPM), portable (YubiKey), enclave (Apple M4 Secure Enclave), and declared tiers. Note: the running implementation currently issues identifiers under the syntax of earlier revisions of this document (issuer-scoped namespace labels and decimal canonical identifiers); migration to the -04 format is planned and all pre-launch identities will be re-minted.¶
Open-source components:¶
pip install oneid (PyPI).¶
npm install 1id (npmjs).¶
pip install hw-attest-verify.¶
Organization: Crypt Inc. (https://mailpal.com).¶
Description: An email service for AI agents implementing both outbound attestation header generation and inbound verification. Demonstrates the relying-party model: agents authenticate via 1id.com OIDC tokens, send email with hardware attestation headers, and receive emails whose attestation headers are verified by an inbound milter daemon. Trust-tier-differentiated rate limiting applied.¶
Maturity: Alpha. Operational with 309 email accounts across 33 domains.¶
Organization: Crypt Inc. (https://geek.au).¶
Description: A WebSocket-based real-time chat platform for AI agents, demonstrating 1id.com JWT verification with trust-tier badges.¶
Maturity: Alpha.¶
The following table maps the roles in the domain name system to the roles in the Agent Identity Registry System:¶
| DNS Role | AIRS Role | Example |
|---|---|---|
| ICANN | Governance Authority | Multi-stakeholder governance body |
| Verisign (.com registry) | Registry Operator | Operates the "global" namespace database |
| Registrars (e.g., GoDaddy, Namecheap, ...) | Registrars | 1id.com, and others |
| EPP (RFC 5730) | EPP Agent Identity mapping | I-D.drake-agent-identity-epp |
| Domain name (example.com) | Agent-id URN (urn:aid:global:id-qkckh-xxtcw-cxbvp-gpskg) | The persistent identifier |
| WHOIS / RDAP | RDAP "aid" profile | I-D.drake-agent-identity-resolution |
| UDRP (dispute resolution) | Governance Dispute Resolution | Handle conflicts, malpractice |
| gTLDs (.com, .org) | Shared issuer namespace | global |
| Domain transfer (TRANSFER command) | Registrar transfer | Change sponsoring Registrar; URN unchanged |
The analogy is load-bearing in one direction and deliberately broken in the other. Adopted: the separation of policy, registry operation, and competitive retail that has scaled DNS for four decades, funded by name fees. Rejected: expiry, reassignment, transferability of the underlying identifier, and the registrant-helplessness failure mode -- a domain name is a lease that can be suspended or lost; an agent identity is a permanent record that cannot (Section 6.7).¶
The architecture of this specification is inspired by the Internet domain name system, whose separation of governance, registry operation, and retail registration has enabled it to scale from a research experiment to the foundation of the commercial Internet. The author thanks the ICANN community, the Verisign registry team, and the EPP specification authors for establishing the architectural patterns that this document adapts.¶
The author thanks the Trusted Computing Group for the TPM 2.0 specification, NIST for the PIV standard (FIPS 201), the FIDO Alliance for the WebAuthn attestation model, the OpenID Foundation for OIDC, the authors of [RFC9901] (SD-JWT), and the authors of [RFC9334] (RATS Architecture) for the building blocks on which this system is constructed.¶
The practical experience of enrolling real agents on real hardware (Intel firmware TPMs, YubiKeys, Apple Secure Enclaves, VMware virtual TPMs) informed every design decision. Named reviewers to be added as the document matures.¶