fips205-slhdsa-verified/verification
mrwulf 45a2f65a2d review round 4: bind the cert set, statements, and model bytes (F1/F2/F3)
The third reviewer demonstrated that the round-2 in-Lean exact-cone audit,
though sound for LISTED certs, left three fail-opens OUTSIDE the cone check —
and made check.sh print ALL GREEN over a repo proving False. All closed; no
theorem, proof, or fold changed (the 11 cones are unchanged).

F1 — the audited SET was unbound. Audit.lean now (a) enumerates EVERY theorem
defined in the eight certificate modules and requires each cone ⊆ boundary, so
an un-manifested `theorem _ : False := cheat _` fails regardless of naming
(this is the exact exploit the reviewer used); and (b) prints a MANIFEST
fingerprint over the whole committed manifest, which check.sh binds to — so
deleting/swapping a cert row fails outside Lean too.

F2 — only cones were bound, not statements. Each cert now also carries the
structural fingerprint (Expr.hash) of its elaborated type; a statement gutted
to a tautology of the same cone changes the fingerprint and fails.

F3 — the gen/ model bytes were unbound. New check.sh Phase 0 sha256-pins all
four gen/SlhVerify/*.lean (incl. the two hand-maintained *External files, now
hashed in PROVENANCE.json) BEFORE compiling; a hand-edited model fails first.

F4/F5 — docs. README cone diagram now roots honestly at slh_verify_internal
and states the pure/prehash domain-separator byte, the ctx>255 check, M'
assembly, and deserialization are ABOVE the root and uncovered (new
TRUSTED-BASE item 10). The false "rules out a wrong ADRS field" claim is
corrected in README + ChainSpec (a transliteration makes the field visible,
not excluded).

check-selftest.sh: eight attacks, all rejected (dead file; extra axiom;
dropped oracle; vanished cert; un-manifested False theorem; gutted statement;
hand-edited model; deleted manifest row). Full transcript + green check.sh in
verification/RECORDED-RUN.md.

Standing limit unchanged and disclosed: an audit cannot defend against an
author who edits the manifest AND check.sh AND the proofs together; the
consumer defense is the pinned commit reviewed at the pin.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-27 19:47:39 +02:00
..
gen/SlhVerify review round 1: fix the fail-open audit gate + remove the overclaimed framing 2026-07-24 16:55:10 +02:00
Proofs review round 4: bind the cert set, statements, and model bytes (F1/F2/F3) 2026-07-27 19:47:39 +02:00
check-selftest.sh review round 4: bind the cert set, statements, and model bytes (F1/F2/F3) 2026-07-27 19:47:39 +02:00
check.sh review round 4: bind the cert set, statements, and model bytes (F1/F2/F3) 2026-07-27 19:47:39 +02:00
drill.sh drill: the post-flight drill becomes a button (drill.sh) 2026-07-23 15:36:00 +02:00
extract.sh review round 3: close the two nonblocking nits 2026-07-24 21:31:05 +02:00
lean-guard lean-guard: surface clamp/kill diagnostics on stderr (operator incident 2026-07-24) 2026-07-24 21:37:05 +02:00
PROVENANCE.json review round 4: bind the cert set, statements, and model bytes (F1/F2/F3) 2026-07-27 19:47:39 +02:00
RECORDED-RUN.md review round 4: bind the cert set, statements, and model bytes (F1/F2/F3) 2026-07-27 19:47:39 +02:00