In February of 2007 I attended my second Pycon, a conference devoted to the open source programming language Python. One of the coolest system of presentations I saw were the lightning talks. Each presenter gets only 5 minutes to give his spiel. The one that made the biggest impression on me was by Ka-Ping Yee. He demonstrated how using less than 300 lines of code could make electronic voting much more secure. Consider this. A voting machine made by Diebold (now Premier Election Solutions) has over 31,000 lines of code. Some machines have over 100,000 lines of code. Which do you think would be easier to audit and certify?
As we get closer to the election, voting security becomes more important. Ka-Ping Yee is getting some news coverage. Since that talk his pvote code has ballooned to just under 500 lines of code, still somewhat under that 100K mark.
No matter what system is used, transparency and the ability to audit the system and the votes is of paramount importance. No one should trust any system to work. Proper checks and balances need to be in place, so that should questions arise, people can see what happened.
Yee was interviewed during Pycon 2008 in Chicago: In Voting Software We Trust?
Ira Flatow also interviews Ka-Ping Yee in this recent segment of Science Friday. Comes in at 13:30.
E-Voting Update (broadcast Friday, October 24th, 2008)
One thing to note about the electronic voting systems mentioned in the podcast was calibration. They use touch screens. If they are not calibrated properly, voters thinking they selected their candidate of choice may show they’ve selected a different candidate. The co-ordinates of the selections you see on the screen should be synced up with the co-ordinates of the touch display. This is a separate issue that needs to be addressed, but as long as it can be calibrated visually and on the spot this should not be a serious technical issue. The only downside is that voters may not be paying attention to their choices or summary.
Yee didn’t mention anything about a paper audit, but it would be trivial to add a few lines of code to print out the cast ballot. Not only does this make it possible to vote more securely—by an order of magnitude—his system makes it easier for the voter to cast a vote, including those requiring accessibility.
You can also view his Pycon slide show. It will walk you through the steps, and you’ll see how it is possible to make electronic voting far more secure than it is now. With the proper checks and balances people can be sure their vote is counted. These checks are sadly lacking in Diebold’s and others voting machine technology.