Electronic transformation of political systems has become a challenging task in recent years. Applying cryptography to voting and electoral processes is crucial for democracy. The lack of trust placed in Remote Electronic Voting (REV) systems poses the main obstacle to adoption. Transparency measures and additional public security tests (e.g., public intrusion tests), such as the publication of the source-code, actively contribute towards public verifiability, and hence, trust placed in REV systems. Serving as a transparent, immutable, and distributed ledger, Blockchains (BC) offer new benefits for REV. Instead of relying on a single, centralized authority, a system of distributed, equivalent authorities can be used. Further, BCs serve as a highly replicated, tamper-proof audit trail, which enables the verification of cryptographic proofs, crucial for REV.
In order to evaluate the feasibility of deploying a BC-based REV system, in 2018, the first version of Provotum 1.0 was proposed and implemented in the context of a Master's Project. Currently, the Provotum 2.0 prototype is documented below, showing a fully end-to-end verifiable voting process, implemented using a dedicated public permissioned Proof-of-Auhtority BC, based on Ethereum. Also, different new directions are explored as well, for instance, deploying a custom-built BC, developed in Rust, in order to achieve Universal Cast-as-Intended Verifiability.
|Source of funding:
The tutorial on a "Practical Introduction to Blockchain-based Remote Electronic Voting" as presented at the IEEE International Conference on Blockchain and Cryptocurrency (ICBC 2020), May 2-6, 2020, Toronto, Canada, as a Virtual Conference refined the technical details.
git clone email@example.com:christiankiller/master-project-evoting.git
docker ps and verify all components are running by visiting the following links with your favorite web browser
If everything is running smoothly so far, you can continue by following the tutorial steps.
ssh -D 5000 -C -q -N [REMOTE-IP] to enable
-D Dynamic application-level port forwarding,
-C use compression,
-q quiet mode,
-N macOS specific (Do not execute a remote command. This is useful for just forwarding ports.)