My website · My blog (older posts) · katzenpost.network · Echomix paper · namenlos mixnet status · Moral character · Chat Control
I'm David Stainton. I work on free software, mix networks and post-quantum cryptography.
I founded and lead Katzenpost, a free software, post-quantum mix network that protects metadata against a global passive adversary. With my coauthors I described its design in Echomix: a Strong Anonymity System with Messaging (Ewa, David, Leif and Threebit Hacker, 2025). For what it's worth, in the before times I wrote code by hand in Lean, Rust, Golang, Nim, Python after abandoning C, C++ and Perl many years ago. These days I'm getting more into formal methods.
💼 Available for consulting and contract work: mix networks, post-quantum cryptography, protocol design and formal verification in Lean. Get in touch via my website.
Since 2019, when its EU research grant ended, Katzenpost has run on volunteers and small foundation grants. If you value this work, sponsoring me keeps it going.
- Pigeonhole on Reticulum: Pigeonhole replicas for Reticulum meshes, in Rust (Reticulum-rs) and Python (pigeonhole_rns), that bridge the mesh to the mixnet; on the mesh, the group chat client katzenrns shares groups with mixnet clients.
- pigeonhole_reticulous: Pigeonhole apps, starting with group chat, for Reticulous devices such as the LilyGO T-Deck Plus, which share groups with mixnet clients through a bridge replica.
- hushphone: group chat and push-to-talk voice for Linux and Android, in Rust and Slint, over the mixnet or a Reticulum mesh.
- pigeonhole_protocols: group chat and mixnet services over Pigeonhole, in Go, Rust and Python, each protocol written as a sans-IO state machine.
- hpqc: the hybrid post-quantum NIKEs, KEMs and signatures that Katzenpost uses, in Go, Python and Rust.
- Cryptlib (GitHub): a Lean library whose primitives are types that carry their own proof obligations; it began as a model of hpqc and now also implements protocols beyond it, such as Katzenpost's Sphinx packet format, checked against Katzenpost's test vectors.
- Formalizing Sphinx in Lean: how Cryptlib's Sphinx is written generically over its primitives and proved correct for any choice of them.
- High assurance in Lean 4: Noise and PQ Noise (uproar), the TLS 1.3 handshake as QUIC carries it (lean_tls) and post-quantum QUIC (lean_quic), all built on Cryptlib.
|
|





