Helios Voting


Helios Voting is an open-source, web-based electronic voting system, primarily developed by Ben Adida. The front-end browser code is written in both JavaScript and HTML, while the back-end server code is written in python. The Ballot Preparation System guides voters through the ballot and records their choices. The process to create the ballot and process the votes is based on Benaloh's Simple Verifiable Voting Protocol.
Users can vote in elections and users can create elections. Anyone can cast a ballot; however, for the final vote to be counted, the voter's identification must be verified. Helios uses homomorphic encryption to ensure ballot secrecy.

Creating an Election

A user must have a Helios account in order to create an election. A Helios account requires a user to provide an email address, name, and a password. The registered user can then create an election by specifying a name and time period. The user who created the election is known as the administrator of the election. Once an election is created, Helios provides a public key to the administrator. The administrator prepares the ballot and creates a voter roll—these can be edited at any time before voting starts. The administrator freezes the election when the election is ready for voters to cast ballots. When the election is frozen, no changes can be made to the ballot, voter roll, or election time frame

Voting Process

A voter, from the voting roll created by the administrator, receives an email with the voter's username, a random password for that specific election, a URL to the voting booth, and an SHA-1 hash of the election parameters. The voter follows the link in the email and begins the voting process. Once the voter finishes and has reviewed the ballot, the voter seals the ballot which triggers Helios to encrypt it and display a ciphertext.
At this point the voter can either audit or cast the ballot. Auditing the ballot allows the voter to verify that the ciphertext is correct. Once ballot auditing is complete, that ballot is discarded and a new ballot is constructed. When the voter is ready to cast their ballot, they must provide their login information. Helios authenticates the voter's identity and the ballot is cast. All votes are posted to a public online bulletin board which displays either a voter name or a voter ID number with the encrypted vote.

Tallying Process

After an election ended, the Helios 1.0 system shuffled the ballots, decrypted all the votes, and made the shuffle publicly accessible for interested parties to audit. Auditing allowed anyone to verify that the shuffle is correct. Once a reasonable amount of time for auditing had passed, Helios decrypted the ballots and tallied the votes. Anyone could download the election data to verify that the shuffle, decryptions, and tally were correct. Helios 2.0, designed in 2008 and currently in use, abandoned the shuffling and switched to a homomorphic encryption scheme proposed by Cramer, Gennaro and Schoenmakers.

Deployment

The International Association for Cryptographic Research has used Helios annually since 2010 to elect board members, the Association for Computing Machinery used Helios for their 2014 general election, the
Universite Catholique de Louvain used Helios to elect its university president in 2009, and Princeton University has used Helios since 2009 to elect student governments.

System limitations

The Helios platform is intended to be utilized in low-coercive, small scale environments such as university student governments. The following limitations are known.
Privacy:
Verifiability: