Skip to content

interop: replay independent Measurement Capsule verifier on current main - #197

Open
hippoley wants to merge 9 commits into
mainfrom
interop/measurement-capsule-independent-verifier-v2
Open

hippoley wants to merge 9 commits into
mainfrom
interop/measurement-capsule-independent-verifier-v2

Conversation

@hippoley

@hippoley hippoley commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Purpose

Clean replay of #195 onto current main, now extended only where external evidence justified it.

Independent implementation

Implement the identifier and batch-integrity portions of draft-templeman-scitt-measurement-capsule-00 without importing the CSOAI prototype builder/verifier:

  • RFC 8785/JCS canonicalization via the independent Trail of Bits rfc8785 package;
  • capsule-id recomputation with capsule_id excluded;
  • exact canonical JSONL line checks;
  • no-decision/no-authority boundary checks;
  • digest-only source admission;
  • UNCHECKABLE preservation;
  • RFC 6962/9162 Merkle Tree Hash over sorted capsule-id bytes;
  • duplicate refusal;
  • expected root/count checks.

Real external replay already reached

Against public CSOAI repository commit
85df6bc2ed76450c171d6982bfd39e94d80982d2,
CounterProof now pins the published claim_watch/leaves.json value:

007b0e5ccbb3f86ac587d645dd8df74c689765267eadc09736eb58bf8be95314

and independently recomputes:

SHA-256(0x00 || capsule_id_bytes)

to the published batch root:

5e6440b6f9fbccdc2dca66aff3c79c02f649ccb56cd795d0f043b651dd50c32e.

That is a real external Merkle replay, not a synthetic vector.

Full external replay gate

This PR also adds a dedicated CI job that fetches the exact commit-pinned public:

public/measurement-capsules/v0.2/claim_watch/capsules.jsonl.gz

from CSOAI-ORG/councilof-ai, verifies the published gzip SHA-256, decompresses it, recomputes the capsule id from the real canonical capsule bytes, and requires the resulting batch root/count to match the public record.

Claim boundary

The leaf/root replay alone does not establish the draft's full external-batch experiment because the capsule id is still upstream-provided.

The stronger claim is allowed only if the dedicated external replay CI job passes against the real gzip bytes.

Even a full byte/root match proves binding and reproducibility only. It does not prove that the underlying measurement is true, independent, unbiased, authorised, or endorsed by SCITT/IETF.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant