I would like to present a research project I’m working on with the security research group at Brno University of Technology. It’s a blockchain-based electronic voting system for large scale elections focused on privacy protection and verifiability.
This research is continuation of the BBB-Voting system with the goal of improving its scalability.
The main features of this e-voting system are:
Advanced voter privacy protection. Ballots are always encrypted. To discover how specific voter voted, all remaining voters would have to actively participate in decrypting her ballot.
Verifiability. Voting process is controlled by smart contracts and every step of the election is recorded on blockchain. Build-in verification steps prevent faulty ballots from being cast or correct ballots from being left out.
Overview of the cryptographic scheme used:
- Each voter holds a public/private key pair.
- Public keys are used to compute multi-party keys.
- Each voter uses her multi-party key and her private key to encrypt the vote.
Every multi-party key is computed using all submitted public keys, thus creating dependency between all ballots. This allows for the results to be tallied without decrypting individual ballots (homomorphic encryption property). Furthermore, no submitted ballot can be left out from the tally (e.g. by a malicious authority trying to sway the results), as this would be immediately discovered.
How blockchain fits in
Blockchain acts as a public bulletin board for keeping records about the voting process. These records include public keys and submitted ballots. This allows for verification but, thanks to the encryption used, does not compromise the voters’ privacy.
The voting process is controlled by smart contracts independently of any election authority.
Challenges and next steps
The biggest challenge for our e-voting system is allowing more voters and more candidates to participate in the election.
In an example case with our current implementation, we considered a vote casting phase lasting 2 days. On a platform with 12.5 mil. block gas limit and 5 second block latency (such as xDai), we could only accomodate ~100K voters.
This is due to several computation-heavy zero-knowledge proofs (ZKPs) that are required in the voting process. These ZKPs are currently computed on-chain which leads to high gas consumption and limits the scalability.
Therefore, our goal is to improve cost-efficiency and scalability by off-chaining computationally intense operations using zk-SNARKs. We are also interested in utilizing Harmony’s sharding to achieve higher throughput. The combination of more efficient implementation and fast blockchain can allow the e-voting system to meet the requirements for large scale (e.g. national) elections, while maintaining the best possible privacy protection and verifiability.