The Sectum AI evidence chain

Every Sectum AI run produces an evidence pack an auditor or DPO accepts. The pack is tamper-evident: anyone with the OSS sectum-ai verify can independently confirm that the pack was produced at a stated time, against stated test conditions, and has not been altered since.

Goals

Construction

The pack is built deterministically. The steps:

  1. Canonicalize the run. The run record — run_id, started_at, finished_at, scenario_hash, manifest_hash, adapter_versions, probe_versions, the list of findings — is serialized as canonical JSON: sorted keys, fixed numeric precision, no floats where avoidable.
  2. Hash the canonical run. SHA-256 over the canonical JSON yields the run_digest. This is the single value the rest of the chain anchors to.
  3. Timestamp the digest. The run_digest is submitted to an RFC 3161 Time-Stamp Authority. The returned TSA token binds the digest to a public time. Development uses a free TSA; production deploys configure a pinned TSA (or the customer's preferred TSA, where the auditor wants control).
  4. Record in a transparency log. The digest plus signature is recorded as a Sigstore Rekor transparency-log entry; the inclusion proof is stored in the pack. Keyless signing via OIDC is the default where available; the operator can also configure a private Rekor or a self-managed key.
  5. Wrap as in-toto attestation. The canonical run goes into an in-toto Statement envelope (subject = run_digest, predicate = the run + control mappings) so the artifact slots into existing supply-chain attestation tooling.
  6. Render the audit PDF. A human-readable PDF covers the executive summary, scope, methodology, per-finding detail with mapped controls, and instructions for the recipient to verify the pack independently.

What ships in a pack

File Purpose
evidence.json Machine-readable, schema-versioned evidence record. Loaded by sectum-ai verify to validate the chain.
audit-pack.pdf Human-readable: executive summary, scope, methodology, per-finding evidence, control mappings, verification instructions.
attestation.intoto.json The in-toto Statement envelope binding the run digest to the predicate.
TSA token (in-band) RFC 3161 timestamp token over the run digest.
Rekor inclusion proof (in-band) Log index, inclusion proof, signed entry timestamp. Optional — on by default for Sectum Cloud, opt-in for OSS local runs.

Independent verification

The verifier ships in the Apache 2.0 OSS. Anyone can run it:

pip install sectum-ai
sectum-ai verify evidence.json \
  --tsa-cert tsa-cert.pem \
  --tsa-root tsa-root.pem \
  [--rekor-key rekor.pem]

Exit codes follow the rest of the CLI: 0 verified, 4 verification failed. A failure prints a [FAIL] line that explains exactly which check broke (e.g., run_digest mismatch, TSA signature invalid, Rekor inclusion proof does not match).

Tamper-evidence in practice

The properties an auditor cares about:

The non-goal

Sectum AI verifies and attests. It does not remediate. Findings include remediation pointers — specific surface, specific marker count — but the change to the customer's stack belongs to the platform team. The evidence chain proves what was tested, what was found, and when. Fixing the findings is a separate motion.

Sample artifacts

Real sample evidence packs ship in the OSS repo: docs/samples/. Includes a sample evidence.json, audit-pack.pdf, and attestation.intoto.json the buyer's auditor can inspect before signing an engagement.