Paillier/ZKP is an Ada implementation of parts of the Paillier cryptosystem: http://en.wikipedia.org/wiki/Paillier.

The project provides the following functionality:

  • Encryption of a vote and generation of the associated Zero-knowledge proof

  • Zero-knowledge proof verification of a cast vote

  • Weighted tallying of encrypted votes

This project was developed during the course of the master seminar "E-Voting" at the University of Applied Sciences Rapperswil.

Licence

Copyright (C) 2012 Reto Buerki <reet@codelabs.ch>
Copyright (C) 2012 Adrian-Ken Rueegsegger <ken@codelabs.ch>
University of Applied Sciences Rapperswil

This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.

Download

Development version

The current development version of Paillier/ZKP is available through its git repository:

$ git clone http://git.codelabs.ch/git/paillier-zkp.git

A browsable version of the repository is also available here: http://git.codelabs.ch/?p=paillier-zkp.git.

Build

To compile Paillier/ZKP on your system, you need to have the following software installed:

Testing

Paillier/ZKP contains an unit test suite which can be run by entering the following command:

$ make tests

You should then see PASS behind each of the tests.

Documentation

Additional information about the Paillier cryptosystem and e-voting in general can be found here: http://security.hsr.ch/msevote/.

This project is part of a complete Paillier e-voting system implementation and realizes the modules 2 and 3 as described by the presentation found here: http://security.hsr.ch/msevote/fs12/Kickoff.pdf.

Slides

Paillier/ZKP slides

The slides of the presentation about Paillier/ZKP held on June 11, 2012 as part of the master seminar at the University of Applied Sciences Rapperswil can be downloaded here.