Verificatum Mix-Net (VMN)

The Verificatum Mix-Net (VMN) was the first complete and fully distributed mix-net faithful to cryptographic theory and is unanimously considered the most secure, advanced, and high quality mix-net in the world today.

We provide the source code as repositories that largely adhere to the GNU standard. Third parties may package the software for specific platforms.

You must read the GNU Affero General Public License 3.0 carefully and make sure that you understand the license terms before you download or use our software. You can read about the rationale for using this particular license here.

Source Code

We provide the software as a single file or as the underlying source code repository.


VMN technical fact sheet  

This gives a quick overview of the product on a single sheet of paper.

User manual  

This is a comprehensive user manual for the mix-net and all associated tools. It gives an introduction, explains how to use common options, and contains a worked example.

Definition of universally verifiable proof of correctness  

This is used by third parties to implement verifiers of the tallying of an election. Only parts of it need to be implemented depending on the type of election.

This document is mature and has been used repeatedly by undergraduates to implement verifiers. It is the first document of its kind.

Heuristic complexity analysis and benchmarks  

This explains why it is important that a mix-net is fast in applications, the positive security and economial implications this has, and describes the optimizations we have implemented at a high level.

It also contains a comprehensive benchmark suite for a number of standard parameters from which formulas for the running times of different operations are derived. These are real execution times with remote servers over a heterogeneous network.

Unfortunately, there are no benchmarks from any competitor that we can compare our results with.

Programming philosophy  

This describes at a high level the rationale behind a number of design decisions. Several important choices were made early on. Some of them only makes sense if one takes security very seriously, e.g., eliminating all external dependencies of the code, whereas other rely on understanding real world security, e.g., why choosing an obscure, but technically advanced, programming language is not suitable for software that must be audited widely.

Copyright © Douglas Wikström 2007-2018 All rights reserved