CertifiedData.io
Technical Reference

How AI Artifact Verification Works

AI artifact verification uses SHA-256 fingerprinting and Ed25519 signature validation to confirm that a dataset matches its certificate — independently, without contacting CertifiedData.

Verification is a three-step cryptographic procedure: hash the artifact, match the hash against the certificate, and verify the Ed25519 signature against the published public key.

The three verification checks

1

Hash the artifact

Compute the SHA-256 hash of the dataset file. This produces a 64-character hex string — the dataset's cryptographic fingerprint. Any modification to any byte of the dataset produces a different hash.

2

Compare hashes

Retrieve the certificate from the CertifiedData registry using the certificate ID. Compare the dataset_hash field in the certificate against the hash you just computed. If they match, the dataset is identical to what was certified.

3

Verify the signature

Verify the Ed25519 signature in the certificate against the CertifiedData public key. If the signature is valid, the certificate payload has not been tampered with since it was issued by CertifiedData.

Command-line verification

# Step 1: Hash the dataset
sha256sum your-dataset.csv
# Output: a3f9b2e1c4d7... your-dataset.csv

# Step 2: Fetch the certificate
curl https://certifieddata.io/api/certificate/cert_01j9k2m...
# Returns JSON with dataset_hash and signature fields

# Step 3: Verify the signature (Python example)
pip install cryptography
python3 << 'EOF'
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PublicKey
from cryptography.hazmat.primitives.serialization import load_pem_public_key
import base64, json, urllib.request

cert_id = "cert_01j9k2m..."
cert = json.loads(urllib.request.urlopen(
  f"https://certifieddata.io/api/certificate/{cert_id}"
).read())

# Load the published public key
registry = json.loads(urllib.request.urlopen(
  "https://certifieddata.io/.well-known/certifieddata-registry.json"
).read())
pub_key_bytes = base64.urlsafe_b64decode(registry["public_key_raw_b64url"] + "==")
public_key = Ed25519PublicKey.from_public_bytes(pub_key_bytes)

# Verify signature against the certificate payload
payload = json.dumps({k: v for k, v in cert.items() if k != "signature"}, sort_keys=True)
signature = base64.urlsafe_b64decode(cert["signature"] + "==")
public_key.verify(signature, payload.encode("utf-8"))
print("✓ Signature valid")
EOF

Ed25519 — why this algorithm

Ed25519 is an elliptic curve digital signature algorithm using the Edwards-curve Digital Signature Algorithm (EdDSA) over Curve25519. It was chosen for CertifiedData certificates for several reasons: it produces compact signatures (64 bytes), verification is fast, it has no known vulnerabilities to quantum or classical attacks at current key sizes, and it does not require a random nonce per signature (unlike ECDSA), eliminating a class of implementation vulnerabilities.

The choice of Ed25519 aligns CertifiedData's signature infrastructure with modern TLS, SSH, and code signing standards — making verification tooling widely available across programming languages and platforms.

Verification without CertifiedData involvement

Public key publication

CertifiedData

The Ed25519 public key is published at /.well-known/certifieddata-registry.json. This endpoint is stable and permanently accessible.

No SDK required

Verification uses standard cryptographic primitives available in Python (cryptography), Node.js (node:crypto), Go (crypto/ed25519), Rust (ed25519-dalek), and Java (BouncyCastle).

No account required

Certificate verification does not require a CertifiedData account. Any party with the certificate ID or dataset file can verify provenance.

Offline verification

Once you have the certificate JSON and the public key, verification can be performed offline — no network access required.

Language-agnostic

The verification protocol is defined at the algorithm level, not the SDK level. Any language with Ed25519 support can implement a verifier.

Auditor-friendly

The three-step verification procedure can be documented in audit reports and reproduced by any technically qualified auditor.

Verification outcomes

CheckPassesFails
Hash matchDataset matches certificate — not tamperedDataset modified after certification
Signature validCertificate issued by Certified Data LLCCertificate was forged or altered
Status: activeCertificate is valid and currentCertificate has been revoked
All three passFull provenance verifiedOne or more integrity violations

Explore the CertifiedData trust infrastructure

CertifiedData organizes AI trust infrastructure around certification, verification, governance, and artifact transparency. Explore the related authority pages below.