A Secure electronic voting system

Secure electronic voting system

Background

Ok so E-Voting is not a new idea, at all. Apparently at least 7 US states used some sort of automation even way back in the 1964 presedential election. Today, its actually used in various forms across the world, and some countries even use it for national and parliamentary elections. However, totally reliable and secure electronic voting seems like a bit of holy grail. I think most people are in agreement that it would be a positive development to the electoral systems themselves, but similarly every computer scientist and security researcher has warned against the sheer impossibility of guaranteeing against all possible security flaws and vulnerabilities. I guess that doesnt necessarilly mean its never gonna see wide adoption, but I tend to think that if a new technology is gonna be a hit, its gotta happen fairly quickly after its release. It might be similar to being accused of a crime you didnt commit, once the doubt sets in, its pretty hard to get rid of. And the more serious the crime (or the higher the stakes in the election), it becomes almost impossible to resolve all the residual uncertainty, and in case you were wondering, pairing e-voting with manual voting and giving voters the choice doesnt solve much either. Theres a bunch of different types of e-voting, but one of the main distinctions is the hardware (dedicated device vs computer/web-based), and each has its advantages. Interestingly, some secrity experts claim the problem is not with e-voting, but the inherent unpredictability of computational systems themselves. To be honest, that seems completely ridiculous to me, sure computers can crash randomly or have some untraceable bug, but so can humans ? And the latter actually seems a lot more likely.

I dont doubt that security experts have found security problems in every attempt at online voting, and yes some of these problems simply dont exist in the manual system, but on the whole im not convinced that the traditional system has less flaws.


I think because a lot of people are gonna naturally cautious anyway about any e-voting system, whatever system is used has got to be really really good, and tick all the boxes. Traditional manual voting is definitely susceptible to vote manipulation, miscounting, and so many other security risks. But an e-voting system cant go near any of that stuff, Its gotta be anonymous, accurate, private, tamper-proof, auditable, consistent, available, distributed, and a lot more. Oh, and its gotta do all this whilst also being simple and transparent, and actually usable to the general public whilst also robust to the general public.


Given all that, I thought it would be fun to come up with my own system design and code my own implementation of an evoting system. Im a big fan of keeping things simple, I think its pretty much always a positive attribute to have for several reasons. Having said that, looking back on the same great iventions over the past few hundred years, some of the best ones are extremely complex, which gives me a bit of hope that I didnt totally waste my time trying to create something totally pointless. Either way, I gave up on the complex version, and went back to basics. Now, its just a relatively simple client server system with strong hints of ThreeBallot.

The original implementation for this project was written in Java, and the source code is available from my Github Page