Skip to main content

Immutable Logs — Cryptographic audit chain

SecureAI records every AI interaction and every administrative action in a three-layer immutable chain. This architecture ensures that any modification, deletion or manipulation of records is detectable — even if someone has direct access to the database.

Why does it matter?

A log that only exists in MongoDB is not truly immutable: anyone who has access to the server can delete it without leaving a trace. SecureAI solves this by pinning each log to Sigstore Rekor, a public transparency log operated by the Open Source Security Foundation (OpenSSF) — the same system the software industry uses to verify the chain of custody of critical packages.
Technical guarantee: Once a Merkle block hash is in Rekor, no one — including the SecureAI operator — can retroactively alter that record. Any third-party auditor can independently verify it with a single curl call.

##The three layers of proof Each interaction bundle has three levels of cryptographic evidence:

Layer 1 — MongoDB Registry (L1)

The primary record of the interaction is stored in MongoDB with: The string prev_hash → current_hash → next_current_hash causes deleting any row to break the string — the discrepancy is detectable by traversing the sequence.

Layer 2 — Merkle Tree (L2)

Every 10 log entries are grouped into a Merkle block:
The merkle_root is the root hash that represents the 10 entries. If any entry is altered, the merkle_root changes — invalidating the inclusion test.

Layer 3 — Rekor Anchor (L3)

The merkle_root of each sealed block is sent to Sigstore Rekor, a public append-only log. Rekor returns: Once log_index exists in Rekor, no one can delete it — the Rekor log is public, distributed, and immutable by design.

Transparency Portal (admin)

Access

Admin → AI Gateway → Transparency Portal

Verify a bundle

  1. Type or paste bundle_id into the search field.
  2. Click “Verify Proof”.
  3. You will see the three layers with status badges:
    • Green = verified successfully
    • ⚠️ Yellow = sealing/anchor pending (normal for interactions less than 2 minutes ago)
    • Red = verification failure (warning signal)
When the result is visible, a bar appears with the “Copy public verification URL” button. That link is public — you can send it to an external auditor without requiring a login.
##Public verification page Anyone with a bundle_id can verify the test without access to SecureAI:
The page shows the three layers, a button to download the test JSON, and commands to verify locally. This page does not expose:
  • The content of the message nor the response of the AI
  • User data (name, email, IP)
  • Any personally identifiable information
It only shows hashes, timestamps, indexes and verification status.

Independent verification with curl

An external auditor can verify any bundle without trusting the web interface:

Step 1 — Get the test

Step 2 — Confirm the hash in the Merkle layer

Step 3 — Confirm the anchor in Rekor

A non-empty signedEntryTimestamp field confirms that Rekor has accepted and signed the entry. That timestamp cannot be retroactively altered.

Signed export bundle (auditors and users)

In addition to the public verifier by bundle_id, SecureAI allows you to export cryptographic evidence in a portable ZIP for offline audits.

What does the ZIP include?

When an administrator uses Export signed bundle in Logs or SMLTP, a file is downloaded with:
  • data.csv: exported data.
  • manifest.json: cryptographic metadata (rowCount, merkleRootOfExport, signingKeyFingerprint, timestamp, etc.).
  • manifest.sig: signature Ed25519 of manifest.json.
  • verify.js: offline verifier without dependencies.
  • README.txt: quick instructions.

How to verify (offline)

  1. Unzip the ZIP.
  2. Open a terminal in that folder.
  3. Run:
Expected output on an intact bundle:

What does this verifier detect?

  • Editing any field in data.csv.
  • Deleting or adding rows in data.csv.
  • Modification of manifest.json.
  • Use of incorrect signing key.
If any check appears as FAIL, that export should not be considered trusted.

Quick test for audit

To demonstrate tamper detection:
  1. Run node verify.js on the newly exported ZIP (it should give all PASS).
  2. Edit any character in data.csv and save.
  3. Run node verify.js again.
  4. Must fail at least Merkle root of export.
This confirms evidence of end-to-end integrity for the exported dataset.

Interpretation of states


Complete flow of a message


Supplier compliance

The “Provider Compliance” badge indicates whether the AI ​​provider (OpenAI, Anthropic, etc.) confirmed receiving the SMLTP privacy headers:

Frequently asked questions

Can I verify a bundle without internet? Yes, download the test JSON from the “Download JSON” button while you are online. The merkle_root and hashes are verifiable offline by recomputing the tree. What happens if L3 is pending? This is normal for recent interactions (less than 1 minute). Rekor’s sidecar processes blocks every ~30 seconds. If after 5 minutes it is still pending, verify that the sidecar rekor-anchor is running. How long are records kept? By default, logs are kept based on the configured retentionPeriod. Records marked as compliance (phi, pii, security, authorization) are never automatically deleted. Can I share the verification link with a customer? Yes. The URL /verify/<bundle_id> does not require login and does not expose sensitive data. It is safe to share with auditors, regulators or clients.