Project Admins:
e-Voting Application is an open source project aiming to create an e-voting system which complies to European e-Voting standard and EML specification.
e-Voting Application Components
- Client side applications:
- Vtoken Generating application (VG). √
- e-Voting Machine application (EVM). √
- Vote Counting application (VC).
- Server side systems:
- e-Voting Tabulation system (EVT).
e-Voting Scenario
- Voting opening
- Administrator opens voting process on the machine by pressing an open voting button on VG/EVM.
- When opening voting process, VG/EVM:
- Activates and deactivates some functions.
- Generates a pair of private key – public key for digital signature:
- VG: vtoken-private.bin and vtoken-public.bin
- EVM: private.bin and public.bin
- vtoken-public.bin is then copied from VG machine to each EVM machine.
- Before administrator open voting process:
- VG cannot be used to generate vtoken.
- VG can be used to reset ballot box.
- EVM cannot be used to cast votes.
- EVM can be used to view result.
- EVM can be used to reset ballot box.
- After administrator open voting process:
- VG can be used to generate vtoken.
- VG cannot be used to reset ballot box.
- EVM can be used to cast votes.
- EVM cannot be used to view result.
- EVM cannot be used to reset ballot box.
- Voting process
- Voter verification
- Before voter casts a vote, administrator verifies for two things:
- voter's identity, and
- whether voter is eligible to vote.
- Administrator performs voter verification:
- manually using traditional identity card, or
- electronically using digital identity card, or
- combination of both.
- Vtoken generation
- Vtoken is a proof of right-to-vote for voter.
- It is issued by administrator after voter verification.
- It is generated by Voter Generator (VG) application as a unique random number.
- It is validated by EVM before voter casts vote.
- Vtoken validation
- Before EVM can be used to cast vote, it should validates vtoken of the voter.
- Voter can use EVM to cast a vote, if:
- Vtoken is validated as the right one issued by administrator.
- Vtoken is validated as the one that is not already used before.
- Voting
- Voter uses EVM to cast a vote by:
- Scanning vtoken barcode.
- Choose a candidate with a touch.
- Confirm the choice with a touch.
- Take paper audit trail and put it in audit box.
- Vote sealing
- Each vote casted by voters is combined by their unique vtoken and sealed.
- By sealing it means:
- Encrypts “vtoken + vote”.
- Makes it hard-to-read by bad guys.
- Digitally signs the encrypted “vtoken + vote”.
- Makes it cannot be altered (integrity).
- Makes it cannot be denied as coming from the machine (non-repudiation).
- Vote collection
- Each sealed vote (encrypted and digitally signed) is collected into electronic ballot box.
- Technically speaking, they are collected in a table in MySQL database.
- Sealed votes are collected in random order such that it cannot be traced down to the voter.
- After each vote the table storage is physically reordered according to some random number.
- Voting closing
- Administrator closes voting process on the machine by pressing a close voting button on VG/EVM.
- When closing voting process, VG/EVM:
- Activates and deactivates buttons.
- Generates a result file:
- vtokens.bin containing vtokens generated.
- result.bin containing voting result.
- Before administrator close voting process:
- VG can be used to generate vtoken.
- VG cannot be used to reset ballot box.
- EVM can be used to cast votes.
- EVM cannot be used to view result.
- EVM cannot be used to reset ballot box.
- After administrator close voting process, VG:
- VG cannot be used to generate vtoken.
- VG can be used to reset ballot box.
- EVM cannot be used to cast votes.
- EVM can be used to view result.
- EVM can be used to reset ballot box.
- Result management
- Administrator sends voting results from each machine to election body.
- Each EVM machine generates voting result:
#-*-result.bin: a binary file containing all sealed votes casted by voters on the machine.
- #-*-public.bin: a binary file containing key to verify and decrypt the sealed votes.
- VG and each EVM also generates audit result:
- #-vtokens.bin with #-vtoken-public.bin
- #-vtoken-audit.log, #-*-audit.log
- Voting Result Management
- Files result.bin contains sealed votes which are encrypted and digitally signed.
- To verify and decrypt this sealed votes, the suitable public key is needed.
- Therefore each #-*-result.bin should always be accompanied by corresponding #-*-public.bin.
- Audit Result Management
- File vtokens.bin contains generated vtokens which are digitally signed.
- To verify this vtokens, the suitable public key is needed.
- Therefore each #-vtokens.bin should always be accompanied by corresponding #-vtoken-public.bin.
- Files #-vtoken-audit.log, #-*-audit.log contains record of all actions taken by user along with its timestamp.
- These could be used to reconstruct all actions happened during evoting process for audit purpose.
- Since all sensitive information related to vote confidentiality is not recorded, these cannot be used to trace down voters and their choice.
- Key Management
See attachments for presentations.