AI Decision Credentials

The open specification for cryptographically signed, tamper-proof audit records of AI decisions. W3C-compatible, RFC-style, standards-based.

What is ADC?

AI Decision Credentials (ADC) is an open standard for creating cryptographically signed, tamper-proof receipts of AI decisions. Every decision is hashed, signed with dual cryptographic keys, timestamped by a trusted authority, and optionally anchored to Bitcoin for permanent auditability.

Why ADC?

Regulators across the EU AI Act, GDPR, NIST AI RMF, and 14+ frameworks now require "documented governance with verifiable records." ADC solves the verification problem: every AI decision can be proven authentic, unmodified, and timestamped.

Standards-Based

ADC uses only established standards: W3C Verifiable Credentials for format, RFC 3161 for timestamping, Ed25519 + ML-DSA-65 for dual signatures, and optionally Bitcoin for anchoring. No proprietary black boxes.

Receipt Field Reference

Complete field reference for ADC v2.4.0. All receipts MUST include core fields. Compliance fields MUST be populated when applicable. Optional fields MAY be omitted if not applicable to the decision context.

Core Fields (Required)

Field Name Type Description Example
schema_version string ADC specification version (SemVer) "2.4.0"
receipt_id string (UUID4) Globally unique receipt identifier "550e8400-e29b-41d4-a716-446655440000"
timestamp string (ISO 8601) UTC creation timestamp "2025-04-11T14:32:45Z"
entry_hash string (hex SHA256) Cryptographic hash of receipt content (canonical JSON, excludes signatures) "a1b2c3d4e5f6..."
prev_hash string (hex SHA256) Hash of previous receipt (forms cryptographic chain; "0"*64 for genesis) "z8y7x6w5v4u3..."
sequence_no integer Monotonically increasing counter per audit stream (0 for genesis) 1024

Interaction Data (Required)

Field Name Type Description Example
prompt_hash string (hex SHA256) SHA256 hash of prompt text (preserves input integrity without storing text) "f1e2d3c4b5a6..."
response_hash string (hex SHA256) SHA256 hash of model output (proves decision output) "d9c8b7a6f5e4..."
model string Model identifier (e.g., anthropic model ID) "claude-3-opus-20250219"
provider string AI provider name "anthropic"
tokens_in integer Input tokens consumed by model 1234
tokens_out integer Output tokens generated by model 567

Compliance Fields (Conditional)

Field Name Type Requirement Description
decision_type string REQUIRED Classification of decision (hiring, lending, content_moderation, medical_diagnosis, fraud_detection, etc.)
vertical string REQUIRED Industry vertical (hiring, finance, healthcare, government, etc.)
ai_score number (0.0-1.0) OPTIONAL Model confidence score for the decision
ai_threshold number (0.0-1.0) OPTIONAL Decision threshold used (e.g., approve if score > 0.7)
recruiter_action string OPTIONAL Human action taken following AI decision (approved, rejected, escalated)
human_review_state string OPTIONAL Review status (pending, reviewed, approved, rejected)
reviewer_id string OPTIONAL Identifier of human reviewer (pseudonymized for privacy)
override_reason string OPTIONAL Justification if human overrode AI decision
sdk_version string (SemVer) OPTIONAL Version of Veratum SDK or compatible library used
metadata object OPTIONAL Custom key-value pairs for domain-specific context

Cryptographic Fields (Generated Server-Side)

Field Name Type Signing Standard Description
signature_ed25519 string (hex Ed25519 sig) RFC 8032 NIST-approved EdDSA signature using Curve25519 (primary signature)
signature_ml_dsa_65 string (hex ML-DSA-65 sig) FIPS 204 Post-quantum hybrid signature using ML-DSA-65 (quantum-resistant)
signature_public_key string (hex public key) RFC 8032 Public key corresponding to Ed25519 signature (allows third-party verification)
rfc3161_timestamp string (ASN.1 DER hex) RFC 3161 (eIDAS) Digitally signed timestamp proof from trusted timestamping authority
timestamp_authority string (URI) eIDAS qualified TSA RFC 3161 timestamp authority endpoint used (e.g., Universign, Digicert)

Blockchain Anchoring (Optional)

Field Name Type Standard Description
bitcoin_tx_hash string (hex Bitcoin txid) BIP 141 Bitcoin transaction hash that commits this receipt (adds permanent, immutable proof of existence)
bitcoin_block_height integer BIP 141 Block height in which transaction was confirmed (provides temporal proof)
bitcoin_confirmed_at string (ISO 8601) BIP 141 UTC timestamp when transaction was confirmed (at least 1 confirmation required)
merkle_proof array of strings BIP 141 Merkle tree path proving receipt_hash is in the transaction (enables light verification)

Dual Signature Requirements

All ADC receipts MUST be signed with both Ed25519 and ML-DSA-65. This hybrid approach provides immediate regulatory credibility (NIST-approved Ed25519) plus post-quantum assurance (quantum-resistant ML-DSA-65).

Primary: Ed25519

Standard: RFC 8032 (NIST EdDSA)

The immediate signature provided at receipt time. Uses Curve25519 elliptic curve for fast verification and regulatory acceptance across EU, US, and international audits.

Key size: 32 bytes (private), 32 bytes (public)
Signature size: 64 bytes

Hybrid: ML-DSA-65

Standard: FIPS 204 (NIST PQC)

Post-quantum resistant signature using lattice-based cryptography. Protects against future quantum computer attacks, required by NIST as of 2024 for hybrid approaches.

Key size: 2528 bytes (private), 1312 bytes (public)
Signature size: 3309 bytes

Signing Procedure

1

Canonical JSON Encoding

Serialize receipt as canonical JSON (RFC 8785): sorted keys, no whitespace, no unicode escaping. Exclude signature fields from the payload.

2

Compute Receipt Hash

Hash canonical JSON with SHA256. This hash is stored in the entry_hash field and used as the input to both signature algorithms.

3

Ed25519 Signature

Sign the entry_hash with the private Ed25519 key. Output: 64-byte signature stored as hex in signature_ed25519.

4

ML-DSA-65 Signature

Sign the same entry_hash with the private ML-DSA-65 key. Output: 3309-byte signature stored as hex in signature_ml_dsa_65.

5

RFC 3161 Timestamp

Request timestamp from qualified TSA (eIDAS). Sends entry_hash to authority (e.g., Universign, Digicert). Receive ASN.1 DER-encoded timestamp token, store in rfc3161_timestamp.

6

Optional Bitcoin Anchoring

If enabled, create Bitcoin transaction containing receipt_id hash. Wait for confirmation (at least 1 block). Store bitcoin_tx_hash, bitcoin_block_height, bitcoin_confirmed_at, and Merkle proof.

RFC 3161 eIDAS Timestamping

Timestamps MUST be obtained from an RFC 3161-compliant Qualified Timestamping Authority (QTSa) recognized under eIDAS Regulation (EU 910/2014). This ensures legal recognition across EU member states and auditor acceptance globally.

Why RFC 3161?

RFC 3161 is the international standard for digitally signed, independently verifiable timestamps. Unlike internal server timestamps, RFC 3161 provides legal proof of when a decision was made.

Recognized by: EU AI Act, GDPR Article 5, NIST RMF, SEC Rule 17a-4.

Qualified TSAs

Use only Qualified Timestamping Authorities (QTSa) listed in the LOTL (List of Trusted Lists) under eIDAS.

Recommended providers: Universign, Digicert, SwissSign, Globalsign (all eIDAS-qualified).

Timestamp Proof Format

TimeStampToken ::= ContentInfo -- ASN.1 DER encoded per RFC 3161 Field: rfc3161_timestamp (hex-encoded DER) Contains: - Timestamp Authority name and certificate - Receipt entry_hash (proves this receipt was timestamped) - UTC timestamp when authority received request - Signature by TSA private key (proves authenticity) - Serial number (unique to this timestamp) Verification: 1. Decode hex to ASN.1 DER 2. Extract TSA certificate from token 3. Verify TSA certificate in LOTL (eIDAS list) 4. Verify token signature using TSA public key 5. Verify receipt entry_hash matches token's hashValue

Timestamp Verification Steps

1

Obtain LOTL

Download the List of Trusted Lists (LOTL) from https://ec.europa.eu/tools/lotl/eu-lotl.xml. This contains all eIDAS-qualified TSAs.

2

Extract TSA Certificate

Decode the ASN.1 DER token. Extract the TSA's signing certificate from the SignerInfo field.

3

Verify TSA Certificate Chain

Validate TSA certificate against LOTL. Confirm the certificate is still valid (not revoked or expired).

4

Verify Token Signature

Cryptographically verify the token's signature using the TSA's public key.

5

Confirm Hash Match

Extract the hashed message value from the timestamp token. Verify it matches the receipt's entry_hash.

How to Verify a Receipt

Complete step-by-step procedure to cryptographically verify that an AI Decision Credential is authentic, unmodified, and properly timestamped. No Veratum infrastructure required — use only open standards.

1

Obtain Receipt

Receive the ADC receipt as JSON. It MUST contain all required fields: receipt_id, entry_hash, signature_ed25519, signature_ml_dsa_65, rfc3161_timestamp.

2

Extract Signature Fields

Create a copy of the receipt. Remove all signature fields (signature_ed25519, signature_ml_dsa_65, rfc3161_timestamp, bitcoin_*). This is the "canonical payload."

3

Canonical JSON Encoding

Encode canonical payload as JSON with sorted keys, no whitespace (RFC 8785). Example: {"ai_score":0.95,"decision_type":"hiring",...}

4

Compute Entry Hash

Hash canonical JSON with SHA256. The result MUST match the receipt's entry_hash field. If not, receipt has been modified.

5

Verify Ed25519 Signature

Use the signature_public_key field to verify the Ed25519 signature against the computed entry_hash. Use any RFC 8032-compliant library.

6

Verify ML-DSA-65 Signature

Verify the ML-DSA-65 signature using the receipt's ML-DSA public key. Requires FIPS 204 library (e.g., liboqs, cryptography 42.0+).

7

Verify RFC 3161 Timestamp

Decode rfc3161_timestamp (hex to ASN.1 DER). Verify TSA signature, certificate chain (against LOTL), and that the hashed value matches entry_hash.

8

Verify Chain Integrity (Optional)

If verifying multiple receipts from same audit stream: for receipt N, confirm prev_hash equals receipt [N-1]'s entry_hash. Confirms no receipts were inserted, deleted, or reordered.

9

Verify Bitcoin Anchoring (Optional)

Query Bitcoin blockchain using bitcoin_tx_hash. Verify Merkle proof that receipt_id hash is included. Confirms permanent, immutable proof of existence.

Bitcoin Anchoring Specification

Optional feature that commits AI Decision Credentials to the Bitcoin blockchain. Provides permanent, immutable proof of decision existence and cannot be modified retroactively without changing the entire blockchain (economically infeasible).

Why Bitcoin?

Immutable Record

Once committed to Bitcoin, a receipt cannot be modified. Changing even one bit would require recalculating all subsequent Bitcoin blocks (requires more computing power than humanity has).

No Single Point of Failure

Unlike centralized databases, Bitcoin is run by thousands of nodes globally. No single authority can delete or modify anchored receipts.

Anchoring Procedure

1

Compute Receipt ID Hash

Hash the receipt_id (UUID) with SHA256 twice (Bitcoin standard for addresses). Result: bitcoin_commitment.

2

Create Bitcoin Transaction

Create transaction with OP_RETURN output containing bitcoin_commitment. OP_RETURN writes arbitrary data (up to 80 bytes) to blockchain.

3

Broadcast to Network

Broadcast transaction to Bitcoin mempool. Transaction will be included in next block (average 10 minutes).

4

Wait for Confirmation

ADC requires at least 1 confirmation (receipt in a block plus one more block mined). At that point, modification probability is effectively zero.

5

Store Merkle Proof

After confirmation, compute Merkle path from receipt to block header. Store in merkle_proof field. Allows lightweight verification using only block headers (SPV).

Verifying Bitcoin Anchoring

// Verify receipt is in Bitcoin blockchain const txid = receipt.bitcoin_tx_hash; const blockHeight = receipt.bitcoin_block_height; const merkleProof = receipt.merkle_proof; // 1. Query Bitcoin API for transaction const tx = await bitcoin.getTx(txid); if (!tx.confirmations || tx.confirmations < 1) { throw new Error("Not confirmed"); } // 2. Verify receipt_id hash is in transaction outputs const receiptIdHash = sha256(sha256(receipt.receipt_id)); const outputFound = tx.vout.some(out => out.scriptPubKey.type === 'nulldata' && out.scriptPubKey.hex.includes(receiptIdHash.hex()) ); if (!outputFound) { throw new Error("Receipt hash not in transaction"); } // 3. Verify Merkle proof (SPV) const blockHeader = await bitcoin.getBlockHeader(blockHeight); const computedRoot = merkleProof.reduce((hash, proof) => sha256(sha256(Buffer.concat([hash, proof]))), txid ); if (computedRoot !== blockHeader.merkleRoot) { throw new Error("Merkle proof invalid"); } console.log("Receipt permanently anchored to Bitcoin block", blockHeight);

Regulatory Compliance Crosswalk

How AI Decision Credentials satisfy key regulatory frameworks and standards. ADC is designed to be framework-agnostic — the same receipt satisfies all requirements below.

Regulatory Framework Coverage

✓ EU AI Act (Article 12)
✓ GDPR (Article 5)
✓ NIST AI RMF (v1.0)
✓ ISO/IEC 42001
✓ SEC Rule 17a-4
✓ FINRA Rule 4370
✓ HIPAA (45 CFR §164.308)
✓ PCI DSS v3.2
✓ SOC 2 Type II
✓ FedRAMP High
✓ Colorado SB24-205
✓ NYC LL144
✓ California SB 701
✓ W3C Verifiable Credentials
✓ RFC 3161 eIDAS
✓ NIST SP 800-188
✓ IEEE 7000 Series

Framework Requirement Mapping

Framework Requirement ADC Satisfies Via
EU AI Act "Documented governance with verifiable records of decisions" RFC 3161 timestamp + dual signatures prove authenticity
GDPR "Integrity and confidentiality of processing" Ed25519 + ML-DSA-65 dual signatures + chain integrity verification
NIST RMF "Documented, auditable AI governance" W3C VC format + cryptographic proof of decision authenticity
ISO 42001 "Protected, retrievable, auditable records" RFC 3161 + Bitcoin anchoring (permanent, immutable)
SEC 17a-4 "Immutable, tamper-evident records" Bitcoin anchoring provides cryptographic proof of immutability
FINRA 4370 "Complete audit trail of algorithmic decisions" Chain linking (prev_hash) + prompt_hash + response_hash
HIPAA "Audit controls and access logs" RFC 3161 timestamp + signature verification enables audit proof