| Internet-Draft | AID-1 | September 2026 |
| Watts | Expires 5 March 2027 | [Page] |
This document specifies AID-1, a provider-independent architecture for representing and verifying cryptographically bindable identity, delegation, authorization, action evidence, execution attestation, provenance, and governance information associated with AI systems and AI-mediated actions. AID-1 intentionally separates signature validity, identity binding, authority, execution evidence, provenance, and downstream admissibility. The specification defines trust domains, signed envelopes, external key resolution, delegation credentials, authorization decisions, temporal and revocation checks, replay protection, typed provenance claims, and a deterministic verification order with ALLOW, DENY, and INDETERMINATE outcomes.¶
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 5 March 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. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
AI systems increasingly participate in software development, content production, scientific workflows, operational control, and autonomous or semi-autonomous execution. Existing identifiers such as model names, deployment IDs, API credentials, or embedded public keys do not by themselves establish trusted identity, delegated authority, execution context, or provenance.¶
AID-1 defines a compositional verification architecture in which a cryptographic signature is only one element of a larger trust chain. The architecture is intentionally provider-independent and does not require any specific hardware root of trust.¶
The core doctrine is:¶
Identity != Authority != Action Evidence¶
A conforming implementation MUST preserve this separation.¶
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 when, and only when, they appear in all capitals, as shown here.¶
AID-1 implementations MUST preserve the following non-equivalences:¶
Signature validity != identity proof Identity proof != delegation Delegation != authorization Authorization != execution attestation Execution attestation != artifact truth Artifact integrity != semantic correctness¶
Successful verification in one trust domain MUST NOT be treated as implicit success in another trust domain.¶
The identity domain answers "Who is the actor?" An implementation MUST NOT treat self-asserted identity metadata as sufficient trusted identity evidence unless policy explicitly allows that trust model.¶
The key-binding domain answers "Which trusted key represents the actor?" A public key supplied inside the artifact being verified MUST NOT be treated as its own trust anchor.¶
The delegation domain answers "May this delegate act for the issuer?" Delegation MUST be represented and validated independently from the underlying signature.¶
Action evidence identifies what was requested or performed, including content-addressed inputs, outputs, commit identifiers, environment identifiers, and other execution-relevant context.¶
Execution attestation answers "Where and under what trusted workflow was the action executed?" Claims copied into a signed payload remain signer assertions unless independently verified against the relevant attestation authority.¶
Governance determines whether evidence is presently accepted under revocation, rotation, supersession, retention, and audit policy.¶
export interface SignedEnvelopeV1 {
schema: "miseos.signed-envelope/v1";
algorithm: "Ed25519";
keyId: string;
payloadDigest: {
algorithm: "sha256";
value: string;
};
issuedAt: string;
expiresAt?: string;
nonce: string;
audience: string;
actionId: string;
authorizationId: string;
delegationId?: string;
}
export interface DetachedSignatureV1 {
envelope: SignedEnvelopeV1;
signature: string;
}
¶
A signer MUST sign the RFC 8785 JSON Canonicalization Scheme (JCS) representation of the envelope. The signature operation is:¶
Ed25519.Sign(sk, JCS(envelope))¶
The unsigned transport representation MAY include informational public key material, but a verifier MUST resolve keyId through an independent trusted source before treating the key as trusted.¶
export interface TrustedKeyRecord {
keyId: string;
subjectId: string;
publicKeyPem: string;
fingerprintSha256: string;
status: "active" | "rotated" | "revoked" | "suspended";
validFrom: string;
validUntil?: string;
bindingMethod:
| "github-oidc"
| "github-ssh"
| "github-gpg"
| "organization-registry"
| "manual-root-verification";
}
¶
If the required registry cannot be consulted, a verifier MUST NOT return ALLOW solely on the basis of an artifact-supplied key.¶
export interface DelegationCredentialV1 {
schema: "miseos.delegation/v1";
delegationId: string;
issuerSubjectId: string;
delegateSubjectId: string;
capabilities: string[];
resourcePatterns: string[];
notBefore: string;
expiresAt: string;
revocationId: string;
audience: string;
maxDelegationDepth: number;
}
¶
export type ClaimSource =
| "signed-by-key"
| "github-oidc"
| "git-object"
| "artifact-digest"
| "external-attestation"
| "self-asserted";
interface ProvenanceClaim<T> {
value: T;
source: ClaimSource;
verified: boolean;
evidenceRef?: string;
verifier?: string;
checkedAt?: string;
}
¶
Implementations SHOULD distinguish self-asserted values from independently verified evidence.¶
AID-1 signed JSON objects MUST use RFC 8785 JCS prior to signing or signature verification.¶
Implementations MUST reject non-JSON values before canonicalization. Rejected values include undefined values, NaN, infinities, Date instances, Map, Set, Buffer, typed arrays, class instances, accessors, and cyclic structures.¶
Binary content SHOULD be represented using explicit encodings or, preferably, by content digests.¶
export function hashChain(values: JsonValue[]): string {
return sha256Jcs({
schema: "miseos.hash-sequence/v1",
values,
});
}
¶
Time values used for authority-bearing decisions MUST be unambiguous instants. Implementations SHOULD require canonical UTC timestamps.¶
export function parseInstant(value: string): Date | null {
const date = new Date(value);
if (
!Number.isFinite(date.getTime()) ||
date.toISOString() !== value
) {
return null;
}
return date;
}
¶
Unless policy specifies a bounded clock-skew allowance, the required relation is:¶
notBefore <= issuedAt <= verificationTime <= expiresAt¶
Invalid or unparsable timestamps MUST NOT fail open.¶
export interface RevocationRegistry {
getStatus(
revocationId: string,
at: string,
): Promise<"valid" | "revoked" | "unknown">;
}
¶
For authority-bearing operations, a required revocation status of "unknown" MUST result in either DENY or INDETERMINATE according to policy. It MUST NOT result in ALLOW.¶
Historical verification SHOULD distinguish evidence that was valid when issued and later revoked from evidence that had already been revoked at the claimed execution time.¶
Authority-bearing AID-1 envelopes MUST include a nonce, stable actionId, audience, and bounded validity period. Where policy requires single-use authorization, the verifier MUST reject a previously consumed nonce/action pair.¶
Implementations SHOULD bind replay protection to the relevant repository, workflow, deployment, environment, or equivalent execution scope when such context exists.¶
When GitHub OIDC or another external attestation mechanism is required, a verifier MUST validate the attestation against the appropriate issuer, expected audience, trusted workflow or workload identity policy, and any required repository, workflow reference, workflow SHA, commit SHA, triggering actor, environment, and subject constraints.¶
Merely copying those values into an AID-1 signed object proves only that the signer asserted them. It does not independently verify the attestation.¶
A conforming verifier evaluating an authority-bearing AID-1 object MUST perform the following checks in an order that preserves the same security dependencies. An implementation MAY internally optimize checks, provided that no optimization can turn a required failed or unavailable prerequisite into ALLOW.¶
INDETERMINATE MUST NOT be interpreted as ALLOW.¶
Examples include: an unavailable revocation registry, which SHOULD yield INDETERMINATE or DENY; an invalid signature, which MUST yield DENY; and a trusted key already revoked at the relevant time, which MUST yield DENY.¶
export type VerificationFailureCode = | "IDENTITY_BINDING_UNVERIFIED" | "KEY_NOT_TRUSTED" | "KEY_REVOKED" | "KEY_SUSPENDED" | "SIGNATURE_INVALID" | "DELEGATION_MISSING" | "DELEGATION_INVALID" | "DELEGATION_EXPIRED" | "DELEGATION_DEPTH_EXCEEDED" | "AUTHORIZATION_DENIED" | "TEMPORAL_INVALID" | "REVOCATION_UNKNOWN" | "REPLAY_DETECTED" | "AUDIENCE_MISMATCH" | "ATTESTATION_UNVERIFIED" | "PROVENANCE_MISMATCH" | "SCHEMA_INVALID" | "DIGEST_MISMATCH";¶
Implementations SHOULD return structured per-domain verification status and MAY include additional implementation-specific warnings.¶
AID-1 deployments SHOULD maintain versioned machine-readable schemas for at least the following object families:¶
schemas/ developer-identity.v1.schema.json trusted-key-record.v1.schema.json signature-envelope.v1.schema.json delegation-credential.v1.schema.json authorization-snapshot.v1.schema.json provenance.v1.schema.json revocation-event.v1.schema.json¶
Schema validation is structural. Cross-object trust and policy constraints MUST be enforced by conformance logic and not assumed from schema validity alone.¶
AID-1 verifies identity, authority-related evidence, and provenance according to the policy applied by an AID-1 verifier. It does not determine scientific truth or downstream scientific admissibility.¶
The following conformance boundary is normative and is referred to as replay case R5 by the companion AID-1 conformance specification:¶
R5 AID-1 verification: VALID Downstream D6 admissibility: REJECT¶
An AID-1 implementation MUST NOT infer downstream scientific admissibility solely from successful AID-1 verification. A downstream admissibility system MUST remain free to reject evidence that is structurally and cryptographically valid under AID-1.¶
Operational state MAY constrain authorization, but state alone MUST NOT be treated as a complete permission decision. A reference state matrix is:¶
| State | Effect |
|---|---|
| SAFE | Policy-dependent. |
| QUIESCING | No new work or delegation; restricted modification; evidence reads allowed by policy. |
| ISOLATED | No execute, delegate, modify, or publish; restricted evidence access. |
| FORENSIC | No action; evidence access limited to authorized investigators. |
| DENY_NEW | No new work, delegations, or changes; evidence access policy-dependent. |
| REVOKED | No action; audit-only access. |
The principal security risk addressed by AID-1 is trust-domain collapse: treating one valid signal, especially a cryptographic signature, as sufficient proof of identity, authority, execution environment, provenance, or semantic correctness.¶
Implementations MUST defend against key substitution, confused-deputy attacks, audience confusion, cross-resource replay, delegation escalation, stale credentials, forged attestations, invalid temporal data, unavailable revocation infrastructure, and artifact mutation.¶
Implementations SHOULD use constant-time comparison primitives for security-sensitive digest comparisons where applicable.¶
Audit systems SHOULD be append-only or cryptographically chained so that deletion, reordering, and mutation can be detected.¶
AID-1 may carry identifiers, repository information, workflow context, public keys, delegation relationships, execution metadata, and provenance links. These can enable correlation across systems.¶
Implementations SHOULD minimize collected identity and network context, SHOULD avoid embedding unnecessary personal information, SHOULD apply data-retention limits, and SHOULD separate public provenance evidence from sensitive operational metadata.¶
Pseudonymous identifiers MAY be used when policy does not require disclosure of a civil identity, provided that trusted binding and revocation requirements remain enforceable.¶
This document requests no IANA actions at this time.¶
Future revisions may define registries for AID-1 algorithms, claim sources, failure codes, schema identifiers, or attestation types if interoperability experience demonstrates that shared registries are required.¶
Implementations claiming AID-1 conformance MUST preserve the trust-domain boundaries, decision semantics, external key-resolution rule, fail-closed or indeterminate handling of unavailable required trust services, and the downstream admissibility boundary defined in this document.¶
Provider-independent conformance vectors and the reference execution model are defined in the companion document "AID-1 Provider-Independent Conformance Requirements".¶
AID-1 does not mandate TPM, TEE, HSM, secure enclave, or software-only key storage. Implementations MAY use such technologies, but provider conformance is determined by externally observable AID-1 behavior rather than implementation mechanism.¶
This document reflects an architecture developed to keep identity, authority, action evidence, attestation, provenance, governance, and downstream admissibility as independently testable trust domains.¶