verifying-crypto-with-lean/chapters/ch14-attestation-protocol.tex

384 lines
19 KiB
TeX
Raw Normal View History

ch13: The Attestation Protocol — who checks the checker? The book taught act one (getting a kernel to accept a proof) across twelve chapters and never taught act two: the protocol that makes a green light mean something to someone who was not present. ch11 armed the reader to interrogate a CERTIFICATE and left the script that interrogates certificates — software the author wrote, verified by nothing — entirely unexamined. That was the gap eight rounds of external review found in the companion projects, and it is a didactic failure of this book too. ch13 teaches it from the war stories: the two acts and why act one is the easy one (eleven theorems in two days, never disputed; eight review rounds and eighteen defect classes to make the button over them credible); the single shape every failure had (something load-bearing sat outside the binding), with the demonstrated exploits including ALL GREEN over a repository proving False, a certificate reduced to 'the loop equals the loop' with every fingerprint byte-identical, and a stubbed compiler wrapper going green in 3.6 seconds over destroyed proofs; completeness of binding and its four rules (derive the population, fail closed on absence, exact not subset, a stranger must re-derive); and the meta-defect of assertions that pass for the wrong reason, including the tautological assert that appeared twice — the second time inside its own repair. Closes with the habit to carry: ask both questions, and invite someone to attack your button early, because none of the eighteen was found by the author. ch11 now forward-references it at the point where the old blind spot sat. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 14:21:40 +00:00
\chapter{The Attestation Protocol: Who Checks the Checker?}
\label{ch:attestation}
\section{The second act nobody warns you about}
book overhaul move 6: the Second Summit chapter + the book ends once New Chapter 13, 'The Second Summit: A Hash-Based Pyramid' — SLH-DSA (FIPS 205) as the transfer experiment for the whole method: - opens on leaf 18 as the anomaly; correctness-vs-security across the quantum divide ('a correct implementation of a broken lock is still a broken lock') - Lamport -> Winternitz chains with the checksum see-saw run twice on real w=16 numbers, including a concrete failed forgery (480 -> 479, digit 14 -> 13) - FORS worked at napkin scale (k=2, a=2, one reuse = one forgery) and real scale (28 of 57,344, exponent 14) - the virtual hypertree: digest split 21/7/2 to the bit, the 54-bit meter peeled 9 bits per layer, verification priced exactly (254 fixed oracle calls; the see-saw itself caps a layer at 510, so worst case 3,824 — the naive 525*35 bound is unreachable, and the chapter says why); ~2^72 to build vs ~2^12 to check - the eleven certificates, the loop-to-fold bridges, the honest 'visible, not correct' boundary (no second semantics — and why the natural move fails), the cone-growth table, the t_l/t_len naming inversion told as the war story it was, the apex as an audit invitation with the verbatim theorem named - 'The leaf, live': leaf-vs-head precision ('plausible, and wrong twice'), the three-clause self-reference ledger (attested machinery / attested scheme / honest gap), one-command tryit - six exercises with pathway'd solutions; checkpoint hands the who-checks-them question to the finale Structural: attestation renamed ch14 and now carries the book's single ending (where-to-go, further reading, final reframe, prospective checkpoint — moved from ch12); its two interior checkpoints demoted to bigidea/tryit so the terminal checkpoint stands alone; opening now receives ch13's baton. ch12 ends as a chapter. Front matter: three-summit arc, fourteen-week plan, honest discussion-exercise count; ch01 promise ladder extended to Chapters 13/14; glossary +5 entries (and the pre-existing Hasse-bound misordering fixed); README fourteen chapters + build.sh recipe. Every constant verified against fips205-slhdsa-verified and lean-transparency-log by four adversarial checkers; arithmetic independently recomputed; didactic panel scored the chapter 9/8 — the book's high-water mark. Build: 128 pages, zero unresolved refs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-08 08:39:08 +00:00
The question the last checkpoint left you holding --- that script, that
log, who checks \emph{them}? --- has a name, and a body count.
ch13: The Attestation Protocol — who checks the checker? The book taught act one (getting a kernel to accept a proof) across twelve chapters and never taught act two: the protocol that makes a green light mean something to someone who was not present. ch11 armed the reader to interrogate a CERTIFICATE and left the script that interrogates certificates — software the author wrote, verified by nothing — entirely unexamined. That was the gap eight rounds of external review found in the companion projects, and it is a didactic failure of this book too. ch13 teaches it from the war stories: the two acts and why act one is the easy one (eleven theorems in two days, never disputed; eight review rounds and eighteen defect classes to make the button over them credible); the single shape every failure had (something load-bearing sat outside the binding), with the demonstrated exploits including ALL GREEN over a repository proving False, a certificate reduced to 'the loop equals the loop' with every fingerprint byte-identical, and a stubbed compiler wrapper going green in 3.6 seconds over destroyed proofs; completeness of binding and its four rules (derive the population, fail closed on absence, exact not subset, a stranger must re-derive); and the meta-defect of assertions that pass for the wrong reason, including the tautological assert that appeared twice — the second time inside its own repair. Closes with the habit to carry: ask both questions, and invite someone to attack your button early, because none of the eighteen was found by the author. ch11 now forward-references it at the point where the old blind spot sat. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 14:21:40 +00:00
Chapter~\ref{ch:honesty} taught you to interrogate a certificate: ask what it
rests on, and refuse to be impressed by a file that merely compiles. That
chapter had a blind spot, and this one exists because a sequence of external
reviewers found it.
The blind spot is this. \lean{\#print axioms} tells \emph{you}, at \emph{your}
terminal, that a theorem's cone is clean. Then you write a script that runs it
across your project, the script prints \texttt{ALL GREEN}, and you publish that
green light as evidence. Between the kernel's verdict and the reader's belief
sits a piece of software you wrote --- and \emph{that software is not verified
by anything}.
\begin{bigidea}
Verification is \textbf{two acts}, not one.
\textbf{Act one --- proof.} The Lean kernel decides whether a term is a valid
derivation of its statement. This is mathematics. It is what everyone pictures
when they hear ``formally verified''.
\textbf{Act two --- attestation.} Establishing that what the kernel accepted is
what you \emph{claim}, resting only on what you \emph{say} it rests on, about
the artifact you \emph{say} it concerns --- and that a stranger who was not
present and does not trust you can check every part of that for themselves.
\medskip
\textbf{Lean decides whether a proof is valid. The Attestation Protocol decides
whether anyone else can know that.} A proof without an attestation protocol is
a private conviction, not public evidence.
\end{bigidea}
The companion projects learned this expensively. In one campaign, eleven
theorems about a hash-based signature verifier were proved in \textbf{two days}
and no reviewer ever disputed one of them. Making the green light over those
same eleven theorems mean something to a determined skeptic took \textbf{eight
rounds of review} and turned up \textbf{eighteen distinct defect classes} ---
none of them in the mathematics, all of them in act two.
\section{The shape of every failure}
Here is the finding that makes this chapter teachable. All eighteen defects had
\emph{one shape}:
\begin{aha}
\textbf{Something load-bearing sat outside the binding.}
The audit was always \emph{sound} about what it examined. The entire attack
surface was what it did \emph{not} examine.
\end{aha}
Read the greatest hits and watch the pattern repeat. Each of these was
demonstrated end-to-end against a button that was printing \texttt{ALL GREEN}
at the time:
\begin{itemize}
\item \textbf{The certificate list was outside.} Delete one row from the list
of audited theorems and that theorem silently leaves the audit. Nothing
noticed.
\item \textbf{Un-listed declarations were outside.} Add
\lean{axiom cheat : ∀ (P : Prop), P} and
\lean{theorem oops : False := cheat _} to a proof file. The audit
checked the theorems on its list; this one was not on the list.
\textbf{The repository proved \lean{False} and the button stayed
green.}
\item \textbf{Non-theorems were outside.} After that was fixed, the same
payload as a \lean{def} rather than a \lean{theorem} passed --- the
enumeration matched only theorems.
\item \textbf{The auditor was outside itself.} After \emph{that} was fixed,
the same payload placed \emph{inside the audit driver} passed, because
the driver was exempt from its own enumeration.
\item \textbf{Statements were outside.} Replace a theorem's statement with a
tautology that happens to have the same axiom cone. Passes.
\item \textbf{Specifications were outside.} This is the subtle one. Each
certificate said ``the extracted loop equals this hand-written
reference fold''. Redefine the fold to \emph{be} the extracted loop.
The certificate now says \emph{the loop equals the loop} --- vacuous ---
and the axiom cone, the statement hash, and the digest are all
\textbf{byte-identical}.
\item \textbf{The policy was outside.} The audit compared each cone against a
list of permitted axioms. That list was not itself covered by the
digest. Add one name to it and every protection re-opens, digest
unchanged.
\item \textbf{The subject was outside.} The proofs were about a generated
model file. Hand-edit the model; every phase still passes.
\item \textbf{The tools were outside.} Stub the compiler-wrapper script and
the button printed \texttt{ALL GREEN} in \textbf{3.6 seconds} over
deliberately destroyed proofs. Flip two characters in the audit
driver's fail-closed guards and every check switched off with the
digest byte-identical.
\end{itemize}
\begin{pitfall}
Notice what is \emph{not} on that list: a wrong proof, a wrong theorem, a bug in
Lean. The kernel did its job perfectly throughout. Every single failure was in
the apparatus built \emph{around} it --- by the same person who was reporting
the results.
\end{pitfall}
\section{Completeness of binding}
Because the failures all have one shape, the property to design for has one
name. It is not soundness --- soundness was never the problem.
\begin{bigidea}
\textbf{Completeness of binding.} Everything load-bearing is inside the binding:
the statements, the definitions those statements are stated \emph{against}, the
policy that decides what is permitted, the bytes of the artifact being reasoned
about, and the tools doing the checking.
\end{bigidea}
Four rules follow, and each one is the generalisation of a defect above.
\subsection{Derive the population; never keep a list}
A hand-maintained list of ``things that must be checked'' is one more thing that
can fall out of sync --- and did, twice. Derive membership instead:
\begin{itemize}
\item from the \emph{environment}: every declaration in these modules, obtained
by walking the environment, not by naming them;
\item from the \emph{filesystem}: every \lean{.lean} file under the generated
directory must appear in the hash map, so a new file fails closed;
\item from the \emph{type system}: the transitive closure of constants a
statement mentions, so a new reference definition cannot appear
unnoticed;
\item from a \emph{file attribute}: every executable file in the verification
directory must be pinned --- so adding a script fails until you pin it.
\end{itemize}
\subsection{Fail closed on absence}
\begin{pitfall}
The most common bug in an audit script: \emph{nothing found} and \emph{nothing
wrong} share a code path.
A missing report, an empty cone, a truncated line, a renamed theorem, an absent
map key --- each of these must be a build failure. In the campaign above,
fail-open-on-absence was both the \emph{first} defect found and the
\emph{last}.
\end{pitfall}
\subsection{Exact, not subset}
Checking that a cone contains nothing forbidden is not enough. A certificate can
lie by resting on \emph{less} than you declared as well as more --- if your
theorem quietly stopped depending on the hash function, something is very wrong,
and a subset check will smile at you. Require set \emph{equality}.
\subsection{A stranger must be able to re-derive it}
The final rule is the one that separates evidence from assertion. Publish a
digest a reader can recompute; commit the input that digest is taken over, so a
mismatch can be \emph{diffed} rather than merely reported; and record who ran
the check, on what machine, at which commit.
\section{The meta-defect: assertions that pass for the wrong reason}
There is a second lesson, about \emph{tests} rather than about products, and it
is humbling enough to state plainly. Across the same eight rounds, \textbf{eight
separate assertions were found to be checking nothing} --- including two inside
fixes written to repair that very problem.
The purest specimen. A script transformed a data file by dropping one field, and
carried this line:
\begin{lstlisting}[language=Python]
kept = {k: v for k, v in record.items() if k not in DROP}
assert set(kept) == set(record) - DROP # can never fail
\end{lstlisting}
\lean{kept} was built by the comprehension on the line above. The assertion is a
tautology. The first attempt to repair it compared \lean{kept[k]} against
\lean{record[k]} --- tautological for exactly the same reason.
\begin{aha}
\textbf{No check inside a transformer can detect a corrupted input, because the
transformer is what defines the output from that input.}
Faithfulness there is a property a \emph{reviewer reads}, not something the code
can test about itself. What can actually fail --- and therefore what must carry
the weight --- is the pin on the input, the presence and count guards, and an
independent re-derivation.
\end{aha}
\begin{tryit}
Take any test you have written that guards an important property. Now
\textbf{break the thing it guards} and run it.
If it does not go red --- or goes red with a message about something else ---
you have a decoration, not a test. Do this for every guard you own. In the
campaign described here, that exercise would have caught eight defects, and the
people who eventually caught them were strangers.
\end{tryit}
\section{What this means for you}
You will not build an eighteen-attack self-test for a homework exercise, and you
should not. What you should take away is a habit of mind and a vocabulary.
book overhaul move 6: the Second Summit chapter + the book ends once New Chapter 13, 'The Second Summit: A Hash-Based Pyramid' — SLH-DSA (FIPS 205) as the transfer experiment for the whole method: - opens on leaf 18 as the anomaly; correctness-vs-security across the quantum divide ('a correct implementation of a broken lock is still a broken lock') - Lamport -> Winternitz chains with the checksum see-saw run twice on real w=16 numbers, including a concrete failed forgery (480 -> 479, digit 14 -> 13) - FORS worked at napkin scale (k=2, a=2, one reuse = one forgery) and real scale (28 of 57,344, exponent 14) - the virtual hypertree: digest split 21/7/2 to the bit, the 54-bit meter peeled 9 bits per layer, verification priced exactly (254 fixed oracle calls; the see-saw itself caps a layer at 510, so worst case 3,824 — the naive 525*35 bound is unreachable, and the chapter says why); ~2^72 to build vs ~2^12 to check - the eleven certificates, the loop-to-fold bridges, the honest 'visible, not correct' boundary (no second semantics — and why the natural move fails), the cone-growth table, the t_l/t_len naming inversion told as the war story it was, the apex as an audit invitation with the verbatim theorem named - 'The leaf, live': leaf-vs-head precision ('plausible, and wrong twice'), the three-clause self-reference ledger (attested machinery / attested scheme / honest gap), one-command tryit - six exercises with pathway'd solutions; checkpoint hands the who-checks-them question to the finale Structural: attestation renamed ch14 and now carries the book's single ending (where-to-go, further reading, final reframe, prospective checkpoint — moved from ch12); its two interior checkpoints demoted to bigidea/tryit so the terminal checkpoint stands alone; opening now receives ch13's baton. ch12 ends as a chapter. Front matter: three-summit arc, fourteen-week plan, honest discussion-exercise count; ch01 promise ladder extended to Chapters 13/14; glossary +5 entries (and the pre-existing Hasse-bound misordering fixed); README fourteen chapters + build.sh recipe. Every constant verified against fips205-slhdsa-verified and lean-transparency-log by four adversarial checkers; arithmetic independently recomputed; didactic panel scored the chapter 9/8 — the book's high-water mark. Build: 128 pages, zero unresolved refs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-08 08:39:08 +00:00
\begin{bigidea}
ch13: The Attestation Protocol — who checks the checker? The book taught act one (getting a kernel to accept a proof) across twelve chapters and never taught act two: the protocol that makes a green light mean something to someone who was not present. ch11 armed the reader to interrogate a CERTIFICATE and left the script that interrogates certificates — software the author wrote, verified by nothing — entirely unexamined. That was the gap eight rounds of external review found in the companion projects, and it is a didactic failure of this book too. ch13 teaches it from the war stories: the two acts and why act one is the easy one (eleven theorems in two days, never disputed; eight review rounds and eighteen defect classes to make the button over them credible); the single shape every failure had (something load-bearing sat outside the binding), with the demonstrated exploits including ALL GREEN over a repository proving False, a certificate reduced to 'the loop equals the loop' with every fingerprint byte-identical, and a stubbed compiler wrapper going green in 3.6 seconds over destroyed proofs; completeness of binding and its four rules (derive the population, fail closed on absence, exact not subset, a stranger must re-derive); and the meta-defect of assertions that pass for the wrong reason, including the tautological assert that appeared twice — the second time inside its own repair. Closes with the habit to carry: ask both questions, and invite someone to attack your button early, because none of the eighteen was found by the author. ch11 now forward-references it at the point where the old blind spot sat. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 14:21:40 +00:00
When you next read the words ``formally verified'', ask two questions instead of
one.
\textbf{Act one:} what statement did a kernel accept, and what does it rest on?
(Chapter~\ref{ch:honesty} taught you this.)
\textbf{Act two:} what binds that statement to the artifact I care about, who
checked, what did the checker \emph{not} look at, and can I re-derive any of it
myself?
If a project cannot answer the second set, it has done act one and called it
finished --- which is exactly the mistake these chapters were rewritten to
prevent.
book overhaul move 6: the Second Summit chapter + the book ends once New Chapter 13, 'The Second Summit: A Hash-Based Pyramid' — SLH-DSA (FIPS 205) as the transfer experiment for the whole method: - opens on leaf 18 as the anomaly; correctness-vs-security across the quantum divide ('a correct implementation of a broken lock is still a broken lock') - Lamport -> Winternitz chains with the checksum see-saw run twice on real w=16 numbers, including a concrete failed forgery (480 -> 479, digit 14 -> 13) - FORS worked at napkin scale (k=2, a=2, one reuse = one forgery) and real scale (28 of 57,344, exponent 14) - the virtual hypertree: digest split 21/7/2 to the bit, the 54-bit meter peeled 9 bits per layer, verification priced exactly (254 fixed oracle calls; the see-saw itself caps a layer at 510, so worst case 3,824 — the naive 525*35 bound is unreachable, and the chapter says why); ~2^72 to build vs ~2^12 to check - the eleven certificates, the loop-to-fold bridges, the honest 'visible, not correct' boundary (no second semantics — and why the natural move fails), the cone-growth table, the t_l/t_len naming inversion told as the war story it was, the apex as an audit invitation with the verbatim theorem named - 'The leaf, live': leaf-vs-head precision ('plausible, and wrong twice'), the three-clause self-reference ledger (attested machinery / attested scheme / honest gap), one-command tryit - six exercises with pathway'd solutions; checkpoint hands the who-checks-them question to the finale Structural: attestation renamed ch14 and now carries the book's single ending (where-to-go, further reading, final reframe, prospective checkpoint — moved from ch12); its two interior checkpoints demoted to bigidea/tryit so the terminal checkpoint stands alone; opening now receives ch13's baton. ch12 ends as a chapter. Front matter: three-summit arc, fourteen-week plan, honest discussion-exercise count; ch01 promise ladder extended to Chapters 13/14; glossary +5 entries (and the pre-existing Hasse-bound misordering fixed); README fourteen chapters + build.sh recipe. Every constant verified against fips205-slhdsa-verified and lean-transparency-log by four adversarial checkers; arithmetic independently recomputed; didactic panel scored the chapter 9/8 — the book's high-water mark. Build: 128 pages, zero unresolved refs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-08 08:39:08 +00:00
\end{bigidea}
ch13: The Attestation Protocol — who checks the checker? The book taught act one (getting a kernel to accept a proof) across twelve chapters and never taught act two: the protocol that makes a green light mean something to someone who was not present. ch11 armed the reader to interrogate a CERTIFICATE and left the script that interrogates certificates — software the author wrote, verified by nothing — entirely unexamined. That was the gap eight rounds of external review found in the companion projects, and it is a didactic failure of this book too. ch13 teaches it from the war stories: the two acts and why act one is the easy one (eleven theorems in two days, never disputed; eight review rounds and eighteen defect classes to make the button over them credible); the single shape every failure had (something load-bearing sat outside the binding), with the demonstrated exploits including ALL GREEN over a repository proving False, a certificate reduced to 'the loop equals the loop' with every fingerprint byte-identical, and a stubbed compiler wrapper going green in 3.6 seconds over destroyed proofs; completeness of binding and its four rules (derive the population, fail closed on absence, exact not subset, a stranger must re-derive); and the meta-defect of assertions that pass for the wrong reason, including the tautological assert that appeared twice — the second time inside its own repair. Closes with the habit to carry: ask both questions, and invite someone to attack your button early, because none of the eighteen was found by the author. ch11 now forward-references it at the point where the old blind spot sat. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 14:21:40 +00:00
And when it is your own project: invite someone to attack the button, early.
Every one of the eighteen defects was found by a reviewer trying to break it.
\emph{None} was found by the author reviewing their own work --- and the author
looked, repeatedly, with the same care they had used to write the proofs.
ch13: send the reader to the live log — the cross-referencing that did not exist Measured before writing: the book made ZERO references to the transparency log, the live site, leaves, receipts, verify.py, or anything post-quantum — two incidental uses of the word "accumulator" were the entire overlap with the estate's flagship artifact. A book that teaches "who checks the checker" never mentioned that a live log practicing every one of its principles is publicly checkable. New closing section of ch13, "Go and touch the real thing": what a leaf is in the chapter's own vocabulary; the fifteen-minute exercise (clone the mirror, verify.py --all, pin both trust anchors two independent ways, read leaf 18 in full); the map from the log's nineteen leaves onto the book's chapters (leaves 13-16 = the pyramid at 44 certificates with ch11's boundary-exact apex cones in production; leaf 17 = ch13 made literal, the log carrying proofs of its own Merkle machinery; leaf 18 = the first post-quantum subject, FIPS 205 verify path); and the two boundaries a reader must hold — verify proven / signing never, for both algorithms, and the frozen paper as an honestly-aged snapshot contained byte-identical inside today's history. Root cause of the staleness, named: the book has no button. Every other doc surface in the estate is gated or audited; the book froze as a July-6 deliverable plus one chapter. Until it grows a gate, estate doc audits are its only clock (last: 2026-08-08). README: ch13 entry expanded accordingly. PDF still awaits a LaTeX host. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-07 21:29:36 +00:00
\section{Go and touch the real thing}
\label{sec:live-log}
Everything in this chapter runs in production, in public, right now. The
companion estate operates a \emph{transparency log} of its own attestations:
a Merkle accumulator whose leaves are signed statements of the form ``this
repository, at this exact commit, was checked by its own button, and these
are the certificates it proved, on exactly these axiom cones.'' The log is
served at \texttt{ltl.zkdefi.org} and mirrored as an ordinary git repository
(\texttt{github.com/saymrwulf/lean-transparency-log}) that you can clone and
interrogate offline. It is act two, industrialized: every failure class this
chapter catalogued has a gate in that pipeline because a reviewer once got
past the spot where the gate now stands.
book overhaul move 6: the Second Summit chapter + the book ends once New Chapter 13, 'The Second Summit: A Hash-Based Pyramid' — SLH-DSA (FIPS 205) as the transfer experiment for the whole method: - opens on leaf 18 as the anomaly; correctness-vs-security across the quantum divide ('a correct implementation of a broken lock is still a broken lock') - Lamport -> Winternitz chains with the checksum see-saw run twice on real w=16 numbers, including a concrete failed forgery (480 -> 479, digit 14 -> 13) - FORS worked at napkin scale (k=2, a=2, one reuse = one forgery) and real scale (28 of 57,344, exponent 14) - the virtual hypertree: digest split 21/7/2 to the bit, the 54-bit meter peeled 9 bits per layer, verification priced exactly (254 fixed oracle calls; the see-saw itself caps a layer at 510, so worst case 3,824 — the naive 525*35 bound is unreachable, and the chapter says why); ~2^72 to build vs ~2^12 to check - the eleven certificates, the loop-to-fold bridges, the honest 'visible, not correct' boundary (no second semantics — and why the natural move fails), the cone-growth table, the t_l/t_len naming inversion told as the war story it was, the apex as an audit invitation with the verbatim theorem named - 'The leaf, live': leaf-vs-head precision ('plausible, and wrong twice'), the three-clause self-reference ledger (attested machinery / attested scheme / honest gap), one-command tryit - six exercises with pathway'd solutions; checkpoint hands the who-checks-them question to the finale Structural: attestation renamed ch14 and now carries the book's single ending (where-to-go, further reading, final reframe, prospective checkpoint — moved from ch12); its two interior checkpoints demoted to bigidea/tryit so the terminal checkpoint stands alone; opening now receives ch13's baton. ch12 ends as a chapter. Front matter: three-summit arc, fourteen-week plan, honest discussion-exercise count; ch01 promise ladder extended to Chapters 13/14; glossary +5 entries (and the pre-existing Hasse-bound misordering fixed); README fourteen chapters + build.sh recipe. Every constant verified against fips205-slhdsa-verified and lean-transparency-log by four adversarial checkers; arithmetic independently recomputed; didactic panel scored the chapter 9/8 — the book's high-water mark. Build: 128 pages, zero unresolved refs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-08 08:39:08 +00:00
\begin{tryit}
ch13: send the reader to the live log — the cross-referencing that did not exist Measured before writing: the book made ZERO references to the transparency log, the live site, leaves, receipts, verify.py, or anything post-quantum — two incidental uses of the word "accumulator" were the entire overlap with the estate's flagship artifact. A book that teaches "who checks the checker" never mentioned that a live log practicing every one of its principles is publicly checkable. New closing section of ch13, "Go and touch the real thing": what a leaf is in the chapter's own vocabulary; the fifteen-minute exercise (clone the mirror, verify.py --all, pin both trust anchors two independent ways, read leaf 18 in full); the map from the log's nineteen leaves onto the book's chapters (leaves 13-16 = the pyramid at 44 certificates with ch11's boundary-exact apex cones in production; leaf 17 = ch13 made literal, the log carrying proofs of its own Merkle machinery; leaf 18 = the first post-quantum subject, FIPS 205 verify path); and the two boundaries a reader must hold — verify proven / signing never, for both algorithms, and the frozen paper as an honestly-aged snapshot contained byte-identical inside today's history. Root cause of the staleness, named: the book has no button. Every other doc surface in the estate is gated or audited; the book froze as a July-6 deliverable plus one chapter. Until it grows a gate, estate doc audits are its only clock (last: 2026-08-08). README: ch13 entry expanded accordingly. PDF still awaits a LaTeX host. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-07 21:29:36 +00:00
The fifteen-minute exercise, and the best return on time in this book: clone
the mirror and run the verifier.
\begin{itemize}
\item \code{python3 verify.py --all} --- plain Python for the hashing, the
\code{openssl} binary for signatures, and it \emph{fails closed} without
book overhaul move 6: the Second Summit chapter + the book ends once New Chapter 13, 'The Second Summit: A Hash-Based Pyramid' — SLH-DSA (FIPS 205) as the transfer experiment for the whole method: - opens on leaf 18 as the anomaly; correctness-vs-security across the quantum divide ('a correct implementation of a broken lock is still a broken lock') - Lamport -> Winternitz chains with the checksum see-saw run twice on real w=16 numbers, including a concrete failed forgery (480 -> 479, digit 14 -> 13) - FORS worked at napkin scale (k=2, a=2, one reuse = one forgery) and real scale (28 of 57,344, exponent 14) - the virtual hypertree: digest split 21/7/2 to the bit, the 54-bit meter peeled 9 bits per layer, verification priced exactly (254 fixed oracle calls; the see-saw itself caps a layer at 510, so worst case 3,824 — the naive 525*35 bound is unreachable, and the chapter says why); ~2^72 to build vs ~2^12 to check - the eleven certificates, the loop-to-fold bridges, the honest 'visible, not correct' boundary (no second semantics — and why the natural move fails), the cone-growth table, the t_l/t_len naming inversion told as the war story it was, the apex as an audit invitation with the verbatim theorem named - 'The leaf, live': leaf-vs-head precision ('plausible, and wrong twice'), the three-clause self-reference ledger (attested machinery / attested scheme / honest gap), one-command tryit - six exercises with pathway'd solutions; checkpoint hands the who-checks-them question to the finale Structural: attestation renamed ch14 and now carries the book's single ending (where-to-go, further reading, final reframe, prospective checkpoint — moved from ch12); its two interior checkpoints demoted to bigidea/tryit so the terminal checkpoint stands alone; opening now receives ch13's baton. ch12 ends as a chapter. Front matter: three-summit arc, fourteen-week plan, honest discussion-exercise count; ch01 promise ladder extended to Chapters 13/14; glossary +5 entries (and the pre-existing Hasse-bound misordering fixed); README fourteen chapters + build.sh recipe. Every constant verified against fips205-slhdsa-verified and lean-transparency-log by four adversarial checkers; arithmetic independently recomputed; didactic panel scored the chapter 9/8 — the book's high-water mark. Build: 128 pages, zero unresolved refs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-08 08:39:08 +00:00
them (this chapter taught you why ``couldn't check'' must
ch13: send the reader to the live log — the cross-referencing that did not exist Measured before writing: the book made ZERO references to the transparency log, the live site, leaves, receipts, verify.py, or anything post-quantum — two incidental uses of the word "accumulator" were the entire overlap with the estate's flagship artifact. A book that teaches "who checks the checker" never mentioned that a live log practicing every one of its principles is publicly checkable. New closing section of ch13, "Go and touch the real thing": what a leaf is in the chapter's own vocabulary; the fifteen-minute exercise (clone the mirror, verify.py --all, pin both trust anchors two independent ways, read leaf 18 in full); the map from the log's nineteen leaves onto the book's chapters (leaves 13-16 = the pyramid at 44 certificates with ch11's boundary-exact apex cones in production; leaf 17 = ch13 made literal, the log carrying proofs of its own Merkle machinery; leaf 18 = the first post-quantum subject, FIPS 205 verify path); and the two boundaries a reader must hold — verify proven / signing never, for both algorithms, and the frozen paper as an honestly-aged snapshot contained byte-identical inside today's history. Root cause of the staleness, named: the book has no button. Every other doc surface in the estate is gated or audited; the book froze as a July-6 deliverable plus one chapter. Until it grows a gate, estate doc audits are its only clock (last: 2026-08-08). README: ch13 entry expanded accordingly. PDF still awaits a LaTeX host. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-07 21:29:36 +00:00
never print as a pass). It recomputes every leaf hash, every historical
tree head against its recomputed prefix root, every signature, and every
inclusion proof --- your machine, your verdict, nobody's word.
\item Pin the trust anchors \emph{two independent ways}: the keys are served
by the site (\texttt{/log-public-key}, \texttt{/log-slhdsa-public-key})
and shipped in the mirror (\code{provider.ed25519.pub},
\code{provider.slhdsa.pub}). The copies must agree byte-for-byte. If they
ever disagree, you have caught something worth catching.
\item Read one leaf in full --- \code{entries/000018.json} is a good choice
--- and find, inside it, every vocabulary item of this chapter: the pinned
commit, the certificate list, the \emph{observed} axiom cones, the machine
protection, and the stated exclusions.
\end{itemize}
book overhaul move 6: the Second Summit chapter + the book ends once New Chapter 13, 'The Second Summit: A Hash-Based Pyramid' — SLH-DSA (FIPS 205) as the transfer experiment for the whole method: - opens on leaf 18 as the anomaly; correctness-vs-security across the quantum divide ('a correct implementation of a broken lock is still a broken lock') - Lamport -> Winternitz chains with the checksum see-saw run twice on real w=16 numbers, including a concrete failed forgery (480 -> 479, digit 14 -> 13) - FORS worked at napkin scale (k=2, a=2, one reuse = one forgery) and real scale (28 of 57,344, exponent 14) - the virtual hypertree: digest split 21/7/2 to the bit, the 54-bit meter peeled 9 bits per layer, verification priced exactly (254 fixed oracle calls; the see-saw itself caps a layer at 510, so worst case 3,824 — the naive 525*35 bound is unreachable, and the chapter says why); ~2^72 to build vs ~2^12 to check - the eleven certificates, the loop-to-fold bridges, the honest 'visible, not correct' boundary (no second semantics — and why the natural move fails), the cone-growth table, the t_l/t_len naming inversion told as the war story it was, the apex as an audit invitation with the verbatim theorem named - 'The leaf, live': leaf-vs-head precision ('plausible, and wrong twice'), the three-clause self-reference ledger (attested machinery / attested scheme / honest gap), one-command tryit - six exercises with pathway'd solutions; checkpoint hands the who-checks-them question to the finale Structural: attestation renamed ch14 and now carries the book's single ending (where-to-go, further reading, final reframe, prospective checkpoint — moved from ch12); its two interior checkpoints demoted to bigidea/tryit so the terminal checkpoint stands alone; opening now receives ch13's baton. ch12 ends as a chapter. Front matter: three-summit arc, fourteen-week plan, honest discussion-exercise count; ch01 promise ladder extended to Chapters 13/14; glossary +5 entries (and the pre-existing Hasse-bound misordering fixed); README fourteen chapters + build.sh recipe. Every constant verified against fips205-slhdsa-verified and lean-transparency-log by four adversarial checkers; arithmetic independently recomputed; didactic panel scored the chapter 9/8 — the book's high-water mark. Build: 128 pages, zero unresolved refs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-08 08:39:08 +00:00
\end{tryit}
ch13: send the reader to the live log — the cross-referencing that did not exist Measured before writing: the book made ZERO references to the transparency log, the live site, leaves, receipts, verify.py, or anything post-quantum — two incidental uses of the word "accumulator" were the entire overlap with the estate's flagship artifact. A book that teaches "who checks the checker" never mentioned that a live log practicing every one of its principles is publicly checkable. New closing section of ch13, "Go and touch the real thing": what a leaf is in the chapter's own vocabulary; the fifteen-minute exercise (clone the mirror, verify.py --all, pin both trust anchors two independent ways, read leaf 18 in full); the map from the log's nineteen leaves onto the book's chapters (leaves 13-16 = the pyramid at 44 certificates with ch11's boundary-exact apex cones in production; leaf 17 = ch13 made literal, the log carrying proofs of its own Merkle machinery; leaf 18 = the first post-quantum subject, FIPS 205 verify path); and the two boundaries a reader must hold — verify proven / signing never, for both algorithms, and the frozen paper as an honestly-aged snapshot contained byte-identical inside today's history. Root cause of the staleness, named: the book has no button. Every other doc surface in the estate is gated or audited; the book froze as a July-6 deliverable plus one chapter. Until it grows a gate, estate doc audits are its only clock (last: 2026-08-08). README: ch13 entry expanded accordingly. PDF still awaits a LaTeX host. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-07 21:29:36 +00:00
The log's nineteen leaves map onto this book. Leaves 13--16 attest the four
ed25519 repositories whose pyramid you climbed in
Chapters~\ref{ch:modular}--\ref{ch:pyramid}: forty-four certificates each ---
twenty-seven on the main button, thirteen on the scalar button, and the four
apex-tier theorems whose \emph{documented, boundary-exact} cones are
Chapter~\ref{ch:honesty}'s lesson enforced in production. Leaf 17 is this
chapter made literal: the log carries kernel-checked proofs of \emph{its own
Merkle machinery} as one of its own entries --- ``who checks the checker?''
answered by putting the checker's mathematics inside the thing it checks.
book overhaul move 6: the Second Summit chapter + the book ends once New Chapter 13, 'The Second Summit: A Hash-Based Pyramid' — SLH-DSA (FIPS 205) as the transfer experiment for the whole method: - opens on leaf 18 as the anomaly; correctness-vs-security across the quantum divide ('a correct implementation of a broken lock is still a broken lock') - Lamport -> Winternitz chains with the checksum see-saw run twice on real w=16 numbers, including a concrete failed forgery (480 -> 479, digit 14 -> 13) - FORS worked at napkin scale (k=2, a=2, one reuse = one forgery) and real scale (28 of 57,344, exponent 14) - the virtual hypertree: digest split 21/7/2 to the bit, the 54-bit meter peeled 9 bits per layer, verification priced exactly (254 fixed oracle calls; the see-saw itself caps a layer at 510, so worst case 3,824 — the naive 525*35 bound is unreachable, and the chapter says why); ~2^72 to build vs ~2^12 to check - the eleven certificates, the loop-to-fold bridges, the honest 'visible, not correct' boundary (no second semantics — and why the natural move fails), the cone-growth table, the t_l/t_len naming inversion told as the war story it was, the apex as an audit invitation with the verbatim theorem named - 'The leaf, live': leaf-vs-head precision ('plausible, and wrong twice'), the three-clause self-reference ledger (attested machinery / attested scheme / honest gap), one-command tryit - six exercises with pathway'd solutions; checkpoint hands the who-checks-them question to the finale Structural: attestation renamed ch14 and now carries the book's single ending (where-to-go, further reading, final reframe, prospective checkpoint — moved from ch12); its two interior checkpoints demoted to bigidea/tryit so the terminal checkpoint stands alone; opening now receives ch13's baton. ch12 ends as a chapter. Front matter: three-summit arc, fourteen-week plan, honest discussion-exercise count; ch01 promise ladder extended to Chapters 13/14; glossary +5 entries (and the pre-existing Hasse-bound misordering fixed); README fourteen chapters + build.sh recipe. Every constant verified against fips205-slhdsa-verified and lean-transparency-log by four adversarial checkers; arithmetic independently recomputed; didactic panel scored the chapter 9/8 — the book's high-water mark. Build: 128 pages, zero unresolved refs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-08 08:39:08 +00:00
And leaf 18 is the second summit you climbed in
Chapter~\ref{ch:secondsummit} --- the eleven SLH-DSA certificates, the
cone-growth table, the see-saw: you can now read every field of that leaf
against a chapter of your own experience.
ch13: send the reader to the live log — the cross-referencing that did not exist Measured before writing: the book made ZERO references to the transparency log, the live site, leaves, receipts, verify.py, or anything post-quantum — two incidental uses of the word "accumulator" were the entire overlap with the estate's flagship artifact. A book that teaches "who checks the checker" never mentioned that a live log practicing every one of its principles is publicly checkable. New closing section of ch13, "Go and touch the real thing": what a leaf is in the chapter's own vocabulary; the fifteen-minute exercise (clone the mirror, verify.py --all, pin both trust anchors two independent ways, read leaf 18 in full); the map from the log's nineteen leaves onto the book's chapters (leaves 13-16 = the pyramid at 44 certificates with ch11's boundary-exact apex cones in production; leaf 17 = ch13 made literal, the log carrying proofs of its own Merkle machinery; leaf 18 = the first post-quantum subject, FIPS 205 verify path); and the two boundaries a reader must hold — verify proven / signing never, for both algorithms, and the frozen paper as an honestly-aged snapshot contained byte-identical inside today's history. Root cause of the staleness, named: the book has no button. Every other doc surface in the estate is gated or audited; the book froze as a July-6 deliverable plus one chapter. Until it grows a gate, estate doc audits are its only clock (last: 2026-08-08). README: ch13 entry expanded accordingly. PDF still awaits a LaTeX host. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-07 21:29:36 +00:00
Since tree 14 every head also carries an \emph{additive} deterministic
SLH-DSA signature beside the required Ed25519 one; heads published before
then have none, and the verifier reports them as \code{ABSENT} rather than
failing them --- an append-only log keeps its history, including the history
of its own signature scheme.
Two boundaries, so that you read the log the way this book taught you to
read everything. First: for both signature algorithms the estate has proved
\emph{verification} and nothing about \emph{signing} --- the heads are
signed by unproven code and checkable by proven code, and every leaf names
its trusted base; read a leaf's exclusions before believing anything beyond
them. Second: the estate's paper about this log is frozen under journal
review and describes the thirteen-leaf snapshot of July 2026. Nothing it
describes was altered --- the paper-era leaves and heads sit byte-identical
inside today's history, and \code{verify.py --all} checks both eras in one
run. A document that ages honestly inside a system that keeps moving is not
a defect; it is what append-only means.
That is the whole arc of this book in one artifact: arithmetic became
theorems (act one), theorems became certificates with named cones
book overhaul move 6: the Second Summit chapter + the book ends once New Chapter 13, 'The Second Summit: A Hash-Based Pyramid' — SLH-DSA (FIPS 205) as the transfer experiment for the whole method: - opens on leaf 18 as the anomaly; correctness-vs-security across the quantum divide ('a correct implementation of a broken lock is still a broken lock') - Lamport -> Winternitz chains with the checksum see-saw run twice on real w=16 numbers, including a concrete failed forgery (480 -> 479, digit 14 -> 13) - FORS worked at napkin scale (k=2, a=2, one reuse = one forgery) and real scale (28 of 57,344, exponent 14) - the virtual hypertree: digest split 21/7/2 to the bit, the 54-bit meter peeled 9 bits per layer, verification priced exactly (254 fixed oracle calls; the see-saw itself caps a layer at 510, so worst case 3,824 — the naive 525*35 bound is unreachable, and the chapter says why); ~2^72 to build vs ~2^12 to check - the eleven certificates, the loop-to-fold bridges, the honest 'visible, not correct' boundary (no second semantics — and why the natural move fails), the cone-growth table, the t_l/t_len naming inversion told as the war story it was, the apex as an audit invitation with the verbatim theorem named - 'The leaf, live': leaf-vs-head precision ('plausible, and wrong twice'), the three-clause self-reference ledger (attested machinery / attested scheme / honest gap), one-command tryit - six exercises with pathway'd solutions; checkpoint hands the who-checks-them question to the finale Structural: attestation renamed ch14 and now carries the book's single ending (where-to-go, further reading, final reframe, prospective checkpoint — moved from ch12); its two interior checkpoints demoted to bigidea/tryit so the terminal checkpoint stands alone; opening now receives ch13's baton. ch12 ends as a chapter. Front matter: three-summit arc, fourteen-week plan, honest discussion-exercise count; ch01 promise ladder extended to Chapters 13/14; glossary +5 entries (and the pre-existing Hasse-bound misordering fixed); README fourteen chapters + build.sh recipe. Every constant verified against fips205-slhdsa-verified and lean-transparency-log by four adversarial checkers; arithmetic independently recomputed; didactic panel scored the chapter 9/8 — the book's high-water mark. Build: 128 pages, zero unresolved refs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-08 08:39:08 +00:00
(Chapter~\ref{ch:honesty}), the method crossed to a second pyramid with
different mathematics and held (Chapter~\ref{ch:secondsummit}),
certificates became attestations a stranger can re-derive (this chapter)
--- and the attestations went into a structure that remembers everything
and lets anyone catch it lying. When you build your own, you now know what
it costs, and where the bodies are buried.
\begin{aha}
One last reframe, the one this book was secretly about. ``Formal
verification'' sounds like bureaucracy --- forms, stamps, compliance. What
you actually practiced is closer to \emph{engineering's version of the
scientific method}: make the claim precise enough to be falsifiable, then
let an incorruptible referee try to falsify it, then publish the referee's
report with the assumptions itemized. Cryptography needed that discipline
first because its failures are silent and adversarial. It will not need it
last.
\end{aha}
\section*{Where to go from here}
In increasing order of ambition:
\begin{itemize}[leftmargin=1.4em]
\item \textbf{Read a real proof end-to-end.} \code{FieldSpec.lean} in
\code{dalek-ed25519-verified}, top to bottom, with this book as the
decoder ring. Budget an afternoon; expect the odd hour of humility.
\item \textbf{Verify something of yours.} Pick a 200-line pure function you
actually use --- a parser, a checksum, a data structure --- write its
denotation (what does it \emph{mean}?), state the square, prove it.
The first solo bridge is the moment this stops being a course.
\item \textbf{Extend the estate.} Chapter~\ref{ch:pyramid}'s ``Where you
come in'' names the open frontier --- the paused Pasta curve layer ---
and the control repository's method files say exactly what a finished
brick looks like. When yours is done, this chapter told you how to
attest it, and the log is where it goes.
\item \textbf{Go deeper into the theory.} \emph{Theorem Proving in Lean 4}
(the official text), \emph{Mathematics in Lean} (Mathlib's course), and
the Lean Zulip --- an unusually welcoming expert community --- are the
standard next doors.
\end{itemize}
\subsection*{Further reading, annotated}
\begin{itemize}[leftmargin=1.4em]
\item \emph{Theorem Proving in Lean 4} (Avigad, de Moura, et al.; free
online) --- the official text. Read it \emph{after} this book's
Chapters~\ref{ch:lean}--\ref{ch:automation} and it will feel like
meeting the extended family of
ideas you already know; its dependent-type chapters go far beyond our
needs and are worth the trip.
\item \emph{Mathematics in Lean} (the Mathlib community course) ---
hands-on Mathlib fluency: naming conventions, search strategies, the
algebra hierarchy. The fastest cure for ``I know the fact exists but
not its name,'' which will be your main bottleneck after this book.
\item \emph{The Lean Zulip} (\code{leanprover.zulipchat.com}) --- where
the community lives. Unusually welcoming to beginners; search before
asking, then ask well: a minimal example plus the goal state gets
expert answers in hours.
\item Bernstein \& Lange, \emph{Faster addition and doubling on
elliptic curves} (2007) --- the completeness proof
Chapter~\ref{ch:pyramid}'s worked example walked; readable with this
book's preparation, and a model of what ``designed for implementers''
mathematics looks like.
\item The RFC for EdDSA (RFC 8032) and FIPS 205 (SLH-DSA) --- the two
signature schemes as deployed, cofactor-$8$s, encodings, and address
words included. Read their verification sections against
Chapters~\ref{ch:pyramid} and~\ref{ch:secondsummit} and notice how much
sharper your questions have become.
\item Project Everest / HACL$^{*}$ and Fiat Crypto --- the two other
major verified-crypto lineages (F$^{*}$-based and Coq-based
respectively), both shipping in real TLS stacks and browsers. Reading
their claims with your Chapter~\ref{ch:honesty} toolkit is instructive
in both directions: the methods differ, the honest-boundary discipline
rhymes.
\end{itemize}
\begin{checkpoint}
The book's ending is a beginning, so the final checkpoint is prospective:
you should be able to (1) explain the two acts of verification and why
the second one cannot be delegated to the first; (2) audit a stranger's
attestation --- leaf, cones, exclusions, inclusion proof --- in fifteen
minutes with your own machine's verdict; (3) name the frontier brick
\emph{you} could lay, and what the control repository says a finished
one looks like; and (4) name the next proof you intend to write. The
authors of the companion repositories left the scaffolding up on
purpose.
\end{checkpoint}