Abstract

Electronic online voting has been piloted in various countries in the recent past. These experiments show that further research is required, to improve the security guarantees of such systems, in terms of vote confidentiality and integrity and validity verification. In this paper we argue that blockchain technology, combined with modern cryptography can provide the transparency, integrity and confidentiality required from reliable online voting. Furthermore, we present a decentralized online voting system implemented as a smart contract on the Ethereum blockchain. The system has no hardwired restrictions on possible vote assignments to candidates, protects voter confidentiality by using a homomorphic encryption system and stores proofs for each element of a vote. To the best of our knowledge, our proposed system is the first decentralized ranked choice online voting system in existence. The underlying Ethereum platform enforces the correct execution of the voting protocol. We also present a security and performance analysis, showing the feasibility of our proposed protocol for real-world voting applications at large scale.

Keywords

Appendix

In order to protect the privacy of the voters, each assigned point is encrypted (refer to Eq. 2) before submission. However, voters have to generate corresponding proofs to prove their votes are cast correctly by observing the following: 1. each encrypted score is computed correctly using the voter’s private key \(x^{c_j}_{v_i}\); 2. sum of all encrypted points are equaled to pre-defined total available point P.

Each Encrypted Value is Computed Correctly: We present the proofs generation and verification for an encrypted score in \(\text {Vote}_{v_1}\), where we assume \(v_1\) assigned 5 points to \(c_1\), and the encrypted value should be \(E(5, pk,y^{c_1}_{v_1}, x_{v_1}) = (c_1, c_2)\), where \(c_1 = (y^{c_1}_{v_1})^{x^{c_1}_{v_1}}\cdot g^{r}\), \(c_2 = g^{5}\cdot {pk}^{r}\):

Verifier: compute \(c= Hash(K_1\Vert K_2)\), verify if \((y^{c_1}_{v_1})^{Z_1}g^{Z_2} = K_1 \times (c_1)^{c}\), verify if \(g^{Z_1} = K_2 \times (g^{x^{c_1}_{v_i}})^{c}\), where \(y^{c_1}_{v_i}\) and \(g^{x^{c_1}_{v_i}}\) are public values, and the verifier(s) will never know the value is encrypted from 5.

Sum of All Encrypted Values is Equavelent to Encrypted fromP: We present the proofs generation and verification for the sum of all encrypted points in \(\text {Vote}_{v_1}\), where we assume \(P=10\), and there are 3 candidates \(c_1, c_2\) and \(c_3\). Voter \(v_1\) cast a vote as: