mirror of
https://github.com/saymrwulf/swisspost-evoting-go-poc.git
synced 2026-11-03 04:41:16 +00:00
Docs + lecture: the cockpit renders the Bayer-Groth tree live
README cockpit section now lists the deep layers it instruments, named after the Swiss Post crypto-primitives classes (CommitmentService, the five *ArgumentService classes, DecryptionProofService). crypto.html: on the slide that teaches the Bayer-Groth sub-argument tree, add a callout that `evote cockpit` renders exactly that tree as live typeset math in construction order — "the tree is not a diagram of the code; it is the code narrating itself." Root standalone copy synced. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
31e9a25bb8
commit
e8b4247089
3 changed files with 15 additions and 5 deletions
18
README.md
18
README.md
|
|
@ -80,11 +80,19 @@ make test # runs cargo test + go test ./...
|
|||
```
|
||||
|
||||
The `cockpit` command is a teaching instrument: it runs the full multi-party
|
||||
ceremony and streams **every cryptographic operation** — sampling, ElGamal
|
||||
encryption, Fiat-Shamir challenges, the Bayer-Groth shuffle, Ed25519 signatures,
|
||||
X25519 key agreement — as **the mathematics that is executing, with the real
|
||||
runtime values**, the instant it runs. One `pkg/trace` event stream feeds two
|
||||
surfaces:
|
||||
ceremony and streams **every cryptographic operation** as **the mathematics that
|
||||
is executing, with the real runtime values**, the instant it runs. It goes down
|
||||
to the level of the Swiss Post `crypto-primitives` class structure — you can watch
|
||||
the Bayer-Groth shuffle proof being *constructed*, not just referenced:
|
||||
|
||||
- ElGamal encryption, Fiat-Shamir challenges, Ed25519 signatures, X25519 key agreement
|
||||
- **Pedersen matrix commitments** (`CommitmentService`)
|
||||
- **all five Bayer-Groth sub-arguments** (`ShuffleArgument`, `ProductArgument`,
|
||||
`HadamardArgument`, `ZeroArgument`, `SingleValueProductArgument`,
|
||||
`MultiExponentiationArgument`)
|
||||
- **partial decryption + decryption proofs** (`DecryptionProofService`)
|
||||
|
||||
One `pkg/trace` event stream feeds two surfaces:
|
||||
|
||||
- **Browser** (default): a self-contained page renders each operation as typeset
|
||||
MathML (no libraries, offline). A stakeholder sidebar highlights the acting
|
||||
|
|
|
|||
|
|
@ -1016,6 +1016,7 @@ r = <span class="red">833704513946265251405968611993787771762...</span>
|
|||
<span class="cmt">"The output ciphertexts are the correct multi-exponentiations</span>
|
||||
<span class="cmt"> of the inputs with the permutation matrix as exponents."</span></div>
|
||||
<div class="analogy-box"><strong>Simplified intuition:</strong> Imagine you have 6 sealed boxes numbered 1-6. You rearrange them and put them in new boxes. The ProductArgument proves "I used each number exactly once" (it's a valid permutation). The MultiExponentiationArgument proves "the new boxes contain the same items as the old boxes" (the ciphertexts were correctly re-encrypted, not swapped for fakes).</div>
|
||||
<div class="insight-box"><strong>Watch it happen.</strong> Run <code>evote cockpit</code> (browser) or <code>evote cockpit --tmux</code> (terminal): as the mix-net executes, each of these sub-arguments is rendered as live typeset mathematics with the real runtime values, in the order it is constructed — the Pedersen commitment to the permutation matrix, then the Product / Hadamard / Zero / SingleValueProduct / MultiExponentiation arguments, then the partial decryptions. The tree above is not a diagram of the code; it <em>is</em> the code, narrating itself.</div>
|
||||
`
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -1016,6 +1016,7 @@ r = <span class="red">833704513946265251405968611993787771762...</span>
|
|||
<span class="cmt">"The output ciphertexts are the correct multi-exponentiations</span>
|
||||
<span class="cmt"> of the inputs with the permutation matrix as exponents."</span></div>
|
||||
<div class="analogy-box"><strong>Simplified intuition:</strong> Imagine you have 6 sealed boxes numbered 1-6. You rearrange them and put them in new boxes. The ProductArgument proves "I used each number exactly once" (it's a valid permutation). The MultiExponentiationArgument proves "the new boxes contain the same items as the old boxes" (the ciphertexts were correctly re-encrypted, not swapped for fakes).</div>
|
||||
<div class="insight-box"><strong>Watch it happen.</strong> Run <code>evote cockpit</code> (browser) or <code>evote cockpit --tmux</code> (terminal): as the mix-net executes, each of these sub-arguments is rendered as live typeset mathematics with the real runtime values, in the order it is constructed — the Pedersen commitment to the permutation matrix, then the Product / Hadamard / Zero / SingleValueProduct / MultiExponentiation arguments, then the partial decryptions. The tree above is not a diagram of the code; it <em>is</em> the code, narrating itself.</div>
|
||||
`
|
||||
},
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue