Skip to content
@katzenpost

Katzenpost

Traffic Analysis Resistant Messaging, a Sphinx based mixnet

Katzenpost

A post-quantum mix network providing strong metadata privacy against global passive adversaries.

📄 Paper · 🌐 Website · 📚 Docs · 💬 Community


Repositories

Core

  • katzenpost — monorepo:
    • Mix network: mix server, directory authority
    • Pigeonhole protocol: courier, replica. Uses the mixnet as transport for clients to talk to couriers.
    • Client daemon (kpclientd): mixnet client used by applications, including to reach Pigeonhole couriers.
  • hpqc — hybrid post-quantum cryptography library. Provides KEM, NIKE, and signature schemes behind clean interfaces, plus the pieces that make them composable:
    • a KEM combiner that is provably IND-CCA2 in the QROM, based on the KEM Combiners paper
    • a NIKE-to-KEM adapter (an ad-hoc ElGamal construction) so any NIKE can be used as a KEM, and combined with other KEMs via the combiner
    • a signature scheme combiner
    • BACAP, a blinding-and-capability scheme used by Pigeonhole

Clients

  • kpclientd — the Katzenpost client daemon. Lives in the monorepo at cmd/kpclientd; build with make kpclientd from the repo root. Required by katzenqt.
  • katzenqt — Qt group chat client. Talks to kpclientd.

Thin clients

Language bindings for building applications that talk to kpclientd:

Project

  • website — source for katzenpost.network

New here?


Full repository catalogue

The sections above are the curated front door. Below is every repository in the organisation, grouped by purpose, so a newcomer can find the right place quickly and so dead wood is plainly labelled.

Cryptography libraries and vendored crypto

Live dependencies of hpqc:

  • circl: fork of Cloudflare's CIRCL, carried for use with hpqc.
  • falcon: Go bindings for the Falcon padded post-quantum signature (C vendored from PQClean).
  • sphincsplus: fork of the SPHINCS+ reference code.
  • sntrup4591761: Go Streamlined NTRU Prime 4591^761.

Live dependencies of `katzepost':

  • nyquist: fork of Yawning Angel's Nyquist Noise library, from the pqnoise branch; supplies the PQ Noise wire protocol.
  • trunnel: actively maintained Go port of Tor's trunnel binary-serialisation code generator; used for Sphinx and Pigeonhole wire types.

Standalone crypto:

  • NoiseFramework: fork of the Python Noise Protocol Framework. Not yet used.

Research, formal methods and analysis

  • cryptoproofs: machine-checkable ProVerif models and measurement data.
  • formal_specifications: ProVerif/Noise models for BACAP, client2, MKEM, Sphinx and the Noise handshakes.
  • CryptWalker: a Lean cryptography library for prototyping protocols and proving properties about them.
  • lean-ffi: Lean FFI examples (to Rust and C), supporting the Lean modelling work.
  • reunion: the REUNION PAKE rendezvous protocol.
  • napkin-math: back-of-the-envelope latency and sizing calculations.
  • talek: fork of the Talek PIR private publish/subscribe system, kept for reference.
  • echo: small Rust example service built on the thin_client library.

Operations and visualisation

  • ansible-playbooks: Ansible playbooks for deploying Katzenpost mix networks.
  • status: mixnet diagnostics and status page (uses the thin client).
  • worldmap: draws a world map with mix-network nodes overlaid (uses the thin client).

Project, documentation and outreach

  • website: source for katzenpost.network.
  • .github: this organisation profile and shared community files.
  • diagrams: design diagrams and conceptual imagery.
  • zine: LaTeX source for the Katzenpost zine.

Housekeeping

These repositories are dormant or superseded or obsolete. We should think about deleting them.

Already archived (read-only)

  • katzen: former Gio messaging client, superseded by katzenqt.
  • client: old client library, superseded by the monorepo client2/kpclientd.
  • mixnet_uprising: historical task tracker.
  • slides: old presentation slides.
  • nixops / nixpkgs: abandoned Nix deployment configuration (last touched 2018).

Candidates for archival or deletion

  • quic-go: fork of quic-go.
  • katzen.chat: website for the retired katzen app; obsolete with katzen.
  • fdroiddata: stale fork of F-Droid metadata for the old katzen Android build.
  • bfg: unlabelled Rust experiment, no README, untouched since 2024; purpose unclear.
  • mceliece, chacha20, chacha20poly1305: standalone crypto that hpqc/circl appear to have superseded; verify no remaining dependants before archiving.
  • qrterminal: fork with no current consumer.

License

GNU AGPL-3.0 across the org. A small number of submodules use different licenses; see the LICENSE file inside each repository.

Pinned Loading

  1. katzenpost katzenpost Public

    Katzenpost is a free and open source software project dedicated to researching and developing mix network protocols

    Go 148 19

  2. hpqc hpqc Public

    Hybrid Post Quantum Cryptography

    Go 23 6

  3. thin_client thin_client Public

    thin client library

    Python 1 1

  4. katzenqt katzenqt Public

    Python 6

Repositories

Showing 10 of 40 repositories

Top languages

Loading…

Most used topics

Loading…