I just thought of an electronic voting system and wanted to write it down. After writing 1 line in a text editor, I thought I should share it here and ask you about the flaws in it. Let's see if you can find some.
The goals of this system are:
- to make it harder to rig elections.
- to make the flow of the casted votes less obfuscated.
- to give every voter a way of verifying that their vote has been counted.
It's not about finding a perfect method of voting. It's about finding one which is better than the ones currently being used.
- All voters have registered a public key at the state's authorities. Those keys are already being used for legally binding communication and they are used for every election so people only have to do this once.
- All parties create a key pair and register and publish the public key.
- The election authority (I named it to be able to refer to it later) creates 1 256 bit nonce per voter, adds 256 0 bits before it, as well as 256 bit more random data and encrypts those 768 bit with the respective voter's public key. The nonces are put into a random order and saved.
- The election authority publishes a hash of all the saved nonces.
- The election authority publishes a list of all encrypted 0 bits + nonces per constituency.
- Every voter downloads the list of their constituency.
- The software the voters are running finds the nonce of the user by splitting the file into 768 bit segments, decrypting them with the user's private key, and recognizing a nonce as the user's when it finds the first 256 bit of the plain text to be all zeros.
- The user enters their vote into the software.
- The software encrypts the nonce along some new 256 bit nonce with the public key of the party the user voted for and does the same with made-up nonces for all other parties.
- The software sends all the encrypted messages to the servers of the respective parties in random order.
- The parties' servers decrypt the messages and store it in plain text.
- After everyone voted, the parties calculate a hash of all the massages the received and publish it.
- The election authority publishes the nonce files mentioned in point 3.
- The parties publish their nonce files.
- All correct nonces only 1 party has in their file are counted, the others aren't. List of all nonces which have been counted for a given party are published.
- Because of some stupid post-past the pole per constituency "democracy", the same party as last time wins unless the way the winners are chosen is better until then.
Possible problems and why I think they aren't problems
A party can force people to give them their nonces and punish them if they gave them incorrect ones after the correct ones are published in step 13 or if the people gave them their actual ones but also voted for a different party.
This would be obvious election fraud and a single case of this being made public would harm a party seriously so the profit-to-risk ration should be undesirable for all parties.
Someone opposing a party can flood their servers with fake messages.
A party has an interest in gathering votes. It can use anti-spam techniques to a reasonable extend and for example don't accept extraordinary amounts of messages from a single IP address. To verify the sender actually controls that IP address and doesn't just make source IP addresses up, using TCP is enough.
People can make a sit-down strike in front of a polling location.
Why I think this method of electronic voting is superior to voting on paper
I don't have enough fingers and toes to count how many times I heard that voting on paper is so great because everyone can just become an election observer and check whether everything goes the correct way at their local polling station. That's of course stupid argumentation because all one can do as an individual is to make sure that about 1000 of about 100'000'000 votes (orders of magnitudes) aren't rigged. Those 0.001% must be really awesome so that they're being talked about so much. And that's only of one stands by the ballot box all the time, giving no one a chance to take some ballots out of it or to dump a lot of them into it as many of you have probably seen in that recent video of a Russian election. You don't have these problems with the process described above because everything is public.
Furthermore, this is always assuming perfect conditions, for example people going to polling locations, not voting per absentee ballot, and things like identification often aren't even discussed.
Proving that one has voted for a specific party is possible with ballots, too, since we live in a time in which there are tiny cameras and people can just film the process of casting their vote and then send the video to whomever payed or threatened them. I see people spying on what other people voted for without their consent as a much bigger difference between the system described above and using ballots.
It's often discussed that there can be malware on people's computer. But there can also be surveillance in polling locations. There are plenty of countries in which people vote with pen and paper and if you're taking the issue seriously, you probably are familiar with the reason England uses pencil and paper. The big difference is: One as an individual has control over one's computer but doesn't have control over the paper and the pen/pencil used. The pen one is given my have ink which vanishes after a few minutes, the ballot may be made in a way so that after some time a cross one hasn't made appears, making the vote invalid in either case.
Election assistants are just assumed to be able to count the votes correctly (and to not manipulate them) even though they historically have been wrong a lot with recounts yielding different results.
Election results often are transported over an insecure channel. The have seriously been sent via unencrypted email and been given through via telephone.
And it goes on. One has absolutely no guarantee that one's vote has been counted when voting on paper. Not if one chooses absentee voting, not if one goes to a polling location. One's ballot can always just go missing and be replaced by a different one. With the process described above, everyone can check whether their vote actually has counted towards the party they voted for.
Are there any actual problems making this method less desirable than voting on paper?
Note that point 1 is a prerequisite so simply saying that there are people who don't use public-key cryptography is not valid argumentation. Furthermore, let's assume time has progressed far enough for people to be familiar with computers or there to be a rule in place for old people to no longer be eligible to vote (I've heard proposals on this several times but this is not the right place to discuss political opinions on it).