A recovering 7 foot tall cactus
electronic voting.
Every once in a while I read an article on the Internet about electronic voting, and most of the time it is about how bad it is.
Some people seem to want to tie the concept of electronic voting and the current implementations together. That is clearly not a bright idea.
There are two key areas that need to be addressed to make the concept of electronic voting a reality. Those are:
Open Source Software — unlike other entities, like banks where secrecy and obfuscation work in your advantage, voting and polling need full and complete inspection and vetting by the public. Some people argue that security and open source cannot go hand and had, but that argument only relies upon obfuscation. You are betting that someone who does not have access to the code will not be able to easily figure out a vulnerability. Many open source projects have demonstrated that security and open source can actually make us all more secure (e.g. OpenSSH). Voting and government have a full accountability to its citizens to prove they have nothing to hide. The only way to accomplish this is through making all the code publicly available.
Paper Trail — every voting session should produce a paper trail that can be leveraged if there is any concern about the electronic tally. This piece of paper doesn’t need to be fully human readable, but enough to ensure the voter knows this is his/her electronic ballot. Each ballot should contain a GUID and other information to ensure that each vote can be accounted for.
Once we have accomplished this, there are other minor concepts that can help ensure voting that is fully transparent and responsible to the citizens the public officials are accountable to. The reasons why we haven’t progressed far enough is that there is not enough incentive for the brilliant people to work on the problem, where as in banking, the ability to collect or provide money ensures a lot of controls. Also, most other areas can rely upon obfuscation, which basically allows people to make mistakes and not get caught.