mirror of
https://github.com/saymrwulf/proof-aware-crypto-tooling-agent.git
synced 2026-09-03 19:53:43 +00:00
paper: plain-language explainer for paper 1 and the upcoming paper 2
For newcomers with no Lean and little crypto: the notary-ledger reading of the log paper, the honest-or-caught guarantee in words, the frozen-snapshot note, the two-acts framing of paper 2 — and a straight answer to "which buttons?", since the jargon trips exactly the reader this page is for. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
993cfb85d4
commit
6c587b572b
1 changed files with 144 additions and 0 deletions
144
paper/EXPLAINER.md
Normal file
144
paper/EXPLAINER.md
Normal file
|
|
@ -0,0 +1,144 @@
|
||||||
|
# The plain-language explainer
|
||||||
|
|
||||||
|
*For readers with no Lean background and only a little cryptography. This
|
||||||
|
page translates two papers: the published one about the Lean Transparency
|
||||||
|
Log (currently under journal review), and a second one, in preparation,
|
||||||
|
about what it took to make any of it believable.*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Start here: what is this whole project?
|
||||||
|
|
||||||
|
Software that handles digital signatures — the mathematics that proves an
|
||||||
|
email, a payment, or an update really came from who it claims — is some of
|
||||||
|
the most consequential code in the world. It is usually *tested*: you run
|
||||||
|
it on many examples and see that it behaves. Testing is good, but it can
|
||||||
|
only ever say "we didn't find a bug," never "there is no bug."
|
||||||
|
|
||||||
|
There is a stronger option. You can *prove* a program correct, the way
|
||||||
|
mathematicians prove theorems — covering **every possible input at once**,
|
||||||
|
not just the ones you tried. Doing this by hand would be error-prone, so
|
||||||
|
the proof itself is written for a machine: a small, famously pedantic
|
||||||
|
referee program (ours is called **Lean**) that checks every logical step
|
||||||
|
and refuses anything that doesn't follow. You don't have to understand the
|
||||||
|
proof. You only have to know that the referee — a few thousand lines of
|
||||||
|
code that experts worldwide have stared at for years — accepted it.
|
||||||
|
|
||||||
|
This project did that for real signature-checking code: four independent
|
||||||
|
implementations of **Ed25519** (today's workhorse signature scheme) and one
|
||||||
|
implementation of **SLH-DSA** (a new scheme designed to survive quantum
|
||||||
|
computers). Not toy versions — the actual deployed code, mechanically
|
||||||
|
translated into the referee's language and proven correct there.
|
||||||
|
|
||||||
|
## The uncomfortable question, and paper 1's answer
|
||||||
|
|
||||||
|
So far so good. But now *you* come along, and we tell you: "this code is
|
||||||
|
formally verified." Why should you believe us?
|
||||||
|
|
||||||
|
You weren't there. You didn't watch the referee accept anything. Maybe we
|
||||||
|
proved something *else* than we claim. Maybe we proved it about an *older
|
||||||
|
version*. Maybe we're just lying. "Trust me, it's proven" is exactly the
|
||||||
|
kind of sentence this project refuses to end on.
|
||||||
|
|
||||||
|
**Paper 1 — "the log paper" — is about the machine we built so you don't
|
||||||
|
have to trust us.** Think of a notary's ledger with two unusual properties:
|
||||||
|
|
||||||
|
1. **Pages can be added, never changed or torn out.** Each page (we call it
|
||||||
|
a *leaf*) records one claim: "this exact version of this software was
|
||||||
|
checked, here is exactly what was proven, and here is exactly what was
|
||||||
|
assumed." The exact version matters — the page names a fingerprint of
|
||||||
|
the code, so it can't quietly refer to something else.
|
||||||
|
2. **The whole ledger folds up into one short fingerprint** (via a
|
||||||
|
structure called a Merkle tree — the same trick behind blockchains and
|
||||||
|
Certificate Transparency, the system browsers already use to police
|
||||||
|
HTTPS certificates). We sign that fingerprint. If we ever altered an old
|
||||||
|
page, the fingerprint would change, the old signed fingerprints would
|
||||||
|
stop matching, and anyone holding yesterday's copy could prove we
|
||||||
|
cheated.
|
||||||
|
|
||||||
|
The ledger is public — a website (ltl.zkdefi.org) and an ordinary git
|
||||||
|
repository you can clone. It ships a small program, `verify.py`, that
|
||||||
|
re-checks the entire ledger on **your** machine: every page's fingerprint,
|
||||||
|
every historical signed fingerprint, every receipt. One command, standard
|
||||||
|
tools, no trust in us anywhere in the loop.
|
||||||
|
|
||||||
|
And here is the part that makes paper 1 a *paper* rather than a product
|
||||||
|
page: **the mathematics of the ledger itself is proven, too** — with the
|
||||||
|
same referee, and (this is the pleasingly recursive part) *those proofs are
|
||||||
|
recorded as a page inside the very ledger they are about*. The paper works
|
||||||
|
out precisely what such a log can and cannot promise: it cannot *prevent* a
|
||||||
|
dishonest operator from misbehaving, but it makes every misbehavior
|
||||||
|
**provable by the victim** — cheating produces cryptographic evidence
|
||||||
|
usable against us. "Honest, or caught" is the actual guarantee, and the
|
||||||
|
paper is precise about it.
|
||||||
|
|
||||||
|
One note if you read paper 1 itself: it is frozen while under review, and
|
||||||
|
describes the ledger as of July 2026 (13 pages in the ledger, one signature
|
||||||
|
scheme). The ledger has since grown — 19 pages, including the first
|
||||||
|
post-quantum entry, and every new fingerprint now carries two signatures.
|
||||||
|
Nothing the paper describes was altered; its snapshot sits *unchanged
|
||||||
|
inside* today's ledger, which is exactly what "pages are never rewritten"
|
||||||
|
means. The website's paper section explains this in detail.
|
||||||
|
|
||||||
|
## "The button" — the jargon you will meet everywhere here
|
||||||
|
|
||||||
|
Every verified repository ships a script, `check.sh`. We call it **the
|
||||||
|
button**. It is not on any website; you clone the repository and run it in
|
||||||
|
a terminal. It rebuilds every proof from nothing and asks the referee, for
|
||||||
|
every theorem: *do you accept this — and what exactly does it rest on?*
|
||||||
|
About thirty minutes later it prints **ALL GREEN**, or it fails loudly.
|
||||||
|
Green means: *the proofs re-checked on your machine, resting on exactly the
|
||||||
|
assumptions listed in the repository's own trust document — nothing more,
|
||||||
|
nothing less.*
|
||||||
|
|
||||||
|
Why make jargon of something so simple? Because the button turned out to be
|
||||||
|
the most dangerous component in the whole project. Which brings us to
|
||||||
|
paper 2.
|
||||||
|
|
||||||
|
## Paper 2: the confession
|
||||||
|
|
||||||
|
Here is the asymmetry that paper 2 exists to report. Proving the eleven
|
||||||
|
theorems about the quantum-resistant verifier took **two days**, and no
|
||||||
|
reviewer ever found a flaw in any theorem — not one, in nine rounds of
|
||||||
|
hostile review. Making the *green light believable* took **months**, and
|
||||||
|
the reviewers found problems constantly. Fifty-three of them, all written
|
||||||
|
down. Every single one was in the machinery *around* the proofs, never in
|
||||||
|
the mathematics.
|
||||||
|
|
||||||
|
The emblem of the whole paper: a reviewer once sabotaged a single helper
|
||||||
|
file and the button printed ALL GREEN over deliberately destroyed proofs —
|
||||||
|
in **3.6 seconds** instead of thirty minutes. The referee was never
|
||||||
|
consulted. The light just... turned on. Nothing was wrong with any proof;
|
||||||
|
everything was wrong with the *evidence*.
|
||||||
|
|
||||||
|
Paper 2 says: verification is **two acts**. Act one is the mathematics —
|
||||||
|
the referee accepting your theorems. Act two is everything that binds the
|
||||||
|
referee's verdict to the public claim: the button, the scripts, the
|
||||||
|
documents, the ledger entry — all ordinary, fallible software. The
|
||||||
|
literature celebrates act one. Act two is where all our defects lived, and
|
||||||
|
nobody writes it down. So we did: what the failures look like (they fall
|
||||||
|
into a small number of recurring patterns — lights that turn on when a
|
||||||
|
check *couldn't run*, checkers nothing checks, counting by name instead of
|
||||||
|
by substance, reports that outlive their truth), what rules kill each
|
||||||
|
pattern, and the receipts — every defect dated, in the reviewers' own
|
||||||
|
words, in a public register. A paper of negative results, on purpose:
|
||||||
|
the expensive lessons are the ones worth publishing.
|
||||||
|
|
||||||
|
## The one sentence to take away
|
||||||
|
|
||||||
|
**Act one: machines checked our mathematics. Act two: we built a public,
|
||||||
|
append-only paper trail so you can check *us* — and paper 2 is the honest
|
||||||
|
bill for act two.** If you remember only that, you've understood both
|
||||||
|
papers.
|
||||||
|
|
||||||
|
## If you have fifteen minutes
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone https://github.com/saymrwulf/lean-transparency-log
|
||||||
|
cd lean-transparency-log
|
||||||
|
python3 verify.py --all
|
||||||
|
```
|
||||||
|
|
||||||
|
If that prints `RESULT: OK [full]`, you have personally re-derived every
|
||||||
|
fingerprint, signature, and receipt in the ledger — and you never once had
|
||||||
|
to trust this page.
|
||||||
Loading…
Reference in a new issue