Breakwater: An Electronic
Voting System
This is a senior project for Cal
Poly State University, San Luis Obispo
The Basic Question and Answers:
I want to see
some code!!! Where is it?!
Here
is the CVS repository. Click on the file name then on
view.
Whats the
current status of the project?
This is a
prototype of a voting machine. It is currently in development.
Why are you
doing a voting machine?
For starters,
this is a way of delving into the complexities inherent in secure
systems. Secondly, as residents of California, we are well aware
of the serious flaws in Diebold's voting software.
What systems
does the voting machine run on?
As it is a
prototype, Linux is the only target platform. A port to other
Unix operating systems should not be difficult.
What have you
learned so far?
We read
through about a dozen papers on what the properties ideal secure,
anonymous voting machine. Practically all papers on the subject
refer to Fujioka, Okamoto, and Ohta's paper titled "A Practical Secret
Voting Scheme for Large Scale Elections". (Published in Lecture Notes
in Computer Science, vol 718)
Another
invaluable resource was Neils Ferguson and Bruce Schneier's book, Practical
Cryptography. This
book discussed the mindset of developing a system, implementation
issues, problems of existing solutions, as well as the foundations
behind authentication, verification, and encryption.
Finally, simply learning by doing such a system, we
see just what is involved in writing a secure system and secure code.
What
functionality is missing in the prototype plan that would be necessary
in a final system?
There are two
significant aspects needed: First, a modified signature mechanism
called Blind Signatures is necessary to disassociate a voter from his
or her vote (Actually, there is an alternative disassociation
mechanism called All or Nothing Disclosure of Secrets that could also
be used in a voting machine). Secondly, requiring signatures on
files to prevent tampering.
Here is the
sourceforge project page for Breakwater