VDA Witness

Proof of integrity

One real VDA Witness record, published so you can check it yourself — with no account, no credentials, and no obligation to trust us or run our code.

The claim being tested. VDA holds the signing key for this record, so VDA could re-sign a fully consistent alternate history — one that passes every internal chain check. What stops that is external: the chain head below is committed to Sigstore Rekor, a public append-only transparency log run by the Linux Foundation, and timestamped by independent RFC-3161 authorities. Any rewrite changes the head; the original head is already pinned in a log VDA cannot edit.

The record

chainpublic:proof-of-integrity
records in chain1
chain headsha256:f72eb515a87560ec8254d3ff11a60ae06f169584a7c83306d660b1f7fe2bda68
Rekor logIndex2583358177
Rekor UUID108e9186e8c5677acc7251e72424258ebf3c0553ae26a041804d156141b6b49ae49d2a5e398fc3a7
Rekor inclusion time2026-08-25T12:50:44.000Z — set by the log, not by us
RFC-3161 TSAsdigicert, sectigo
proof typehash-chain-predecessor-path

Rekor stores the SHA-256 of the head string, so the value inside the log entry is sha256("sha256:f72eb515a87560ec8254d3ff11a60ae06f169584a7c83306d660b1f7fe2bda68") — not the head itself. The command below shows how to check that yourself; it is the one step people most often mistake for a mismatch.

The full bundle — record, chain, anchor attestations, and a did.json snapshot — is at /proof/bundle.json.

1. Resolve it in Rekor — no VDA, no SDK

The strongest check is the one that does not involve us at all. This is a third-party log:

curl -s https://rekor.sigstore.dev/api/v1/log/entries/108e9186e8c5677acc7251e72424258ebf3c0553ae26a041804d156141b6b49ae49d2a5e398fc3a7 \
  | python -c 'import sys,json,base64,hashlib
d=json.load(sys.stdin); e=d[list(d)[0]]
inlog=json.loads(base64.b64decode(e["body"]))["spec"]["data"]["hash"]["value"]
head="sha256:f72eb515a87560ec8254d3ff11a60ae06f169584a7c83306d660b1f7fe2bda68"
print("logIndex :", e["logIndex"])
print("in log   :", inlog)
print("expected :", hashlib.sha256(head.encode()).hexdigest())
print("BINDS    :", inlog == hashlib.sha256(head.encode()).hexdigest())'

The entry is immutable, carries an inclusion proof, and is independently monitored. Its integratedTime is set by the log, not by us. We cannot alter, backdate, or withdraw it — which is the entire basis of the claim.

2. Verify the bundle offline

Zero network calls back to Witness. The verifier is Apache-2.0 and has no dependencies:

npm i vda-witness

curl -s https://witness.getvda.ai/proof/bundle.json > bundle.json
node -e '
  const b = require("./bundle.json");
  const { offlineVerify } = require("vda-witness/verify");
  offlineVerify(b).then(v => console.log(v.state));
'
# ANCHORED_VALID

Python: pip install "vda-witness[verify]".

3. Try to break it

A proof you cannot falsify is not a proof. Change one byte of any record body in bundle.json and re-run the verifier:

# flip a character anywhere inside records[0], then:
node -e '... offlineVerify(b) ...'
# BROKEN

Re-sign that tampered chain with a valid key and the internal checks pass again — but the head changes, and the head in Rekor does not. That is the whole argument, and you can run it.

What this does and does not prove

Published from a dedicated account and chain that contains no customer data. Customer records are never public: every other proof endpoint on this service requires a key, and an unknown record id returns not-found rather than leaking existence.