This repository holds the source code for mixnet zeno, which we used under changed name FTMix as a proof-of-concept mixnet with reliability features at its core in our publication "Strong Anonymity is not Enough: Introducing Fault Tolerance to Planet-Scale Anonymous Communication Systems" (FARES Workshop 2022).
Please mind that while zeno comes with organizational protocols such as VDF-style mix rotations (emulated
as scrypt
calls) intended to reduce the fallout from mix compromise, we do not explain, evaluate, or
discuss these features in the publication. The scope of the ultimately published article narrowed over
time from presenting both aspects (increased fault tolerance and decreased required infrastructure trust)
to only the fault tolerance aspects. We rely only on reliability and general system metrics for FTMix in
the evaluation metrics used in the final publication (e.g., end-to-end transmission latencies across
multiple independent cascades with message transmissions in two consecutive rounds), and make no claims
about lowered infrastructure trust requirements.
Please keep this in mind when reading, running, or modifying this source code artifact, and read "FTMix" when you see "zeno" in this code.
Prototype zeno is an Anonymous Communication System (ACS) that aims to keep one-to-one conversations private and anonymous while tolerating Byzantine conditions. Based on a Chaumian mix-net architecture, zeno relays the messages of conversing users across mixes determined in a bias-resistant way and with redundancy in space and time in order to achieve a high level of fault tolerance. Our goal is to prevent Byzantine failures common to large-scale Distributed Systems from rendering an ACS unavailable to its users, which may eventually force them to switch to less privacy-preserving communication systems. We assess zeno's resource demands and end-to-end transmission latencies in comparison to mix-net Vuvuzela and CPIR system Pung in a planet-scale public cloud evaluation.
This repository holds the Go sources for prototype zeno as well as pseudo-code representations of the four primary algorithms of our fault-tolerant mix-net proposal in ./algorithms.
Warning: This code is written for academic purposes only. Handle with care, treat as insecure, and do not deploy to end users.
Clone the repository and change into the newly created directory. Assuming you have a working Go installation on your machine, run:
$ make
This will create the zeno executable. See the supported arguments:
$ ./zeno -help
This source code artifact does not work without the help of:
github.com/capnproto/go-capnproto2
: Cap'n Proto data interchange format, bindings for Go, licensegolang.org/x/crypto
: Google's supplementary cryptographic libraries for Go, license