Live data from Hacker News

Ask HN: How would you design an secure online voting system?

news.ycombinator.com

1–10 of 30 posts

Re: Ask HN: How would you design an secure online voting system?

#3
> How would you design an secure online voting system?

You don't. Anything done "online" simply verifies that "some human at a keyboard" has the requisite "secret" -- but cannot verify that the correct human who should legally have the secret is indeed the one entering the secret.

I.e. Bob gives Joe his "voting secret" and now Joe can log in as "Joe" and vote his legal vote, and also log in as "Bob" and cast a second vote, all while the online system believes "Bob" is casting that second vote.

Also, if you want to maintain the secrecy of the ballot then you simply can not perform online voting, because with the machines there can always be some trail to trace between "ballot X" and "Fred" to show who cast that ballot.

Re: Ask HN: How would you design an secure online voting system?

#4
Estonia has online voting. Approximately 30% of votes are cast via that medium. There have been past concerns about the security, but they are supposedly resolved now. They use a smartcard and blockchain as part of the system. I don't remember the rest.

So if I were building a system for voting online, I would audit that system and improve on any security deficiencies.

Re: Ask HN: How would you design an secure online voting system?

#5
E2EVIV - end to end verified internet voting, is an open field of research. there's a company out of Portland that is working on implementations from publications called Free and Fair. The IVF internet voting foundation has some good documentation on this as well.

Re: Ask HN: How would you design an secure online voting system?

#6
The process is actually quite straightforward:

- Every citizen is issued ID that includes a hardware embedded public/private key pair. A YubiKey essentially. This step is optional, but allows ballots to be assigned remotely.

- Election commission creates and maintains their own key pair.

- Ballots are assigned remotely to eligible voters by encrypting with citizens public key, or assigned in person. Ballots themselves are key pairs, and the commission throws away the private keys after assigning them. The list of ballots is published signed by commission’s key.

- Votes are the position + a secret encrypted by a voter’s private key, signed with the ballot. Votes sent to the commission and published.

Everyone can see which ballot voted which way, verified by the ballot public key. Voters can verify the commission didn’t keep the private key by verifying their encrypted secret. Votes are anonymous, cryptographically verified, and if a citizen ID system is used ballots can be assigned remotely so the entire election is remote.

No blockchain or specific applications are required for this system, just agreed upon key algorithms. The downside is keeping private keys secure is difficult compared to watching over physical ballots.

A system similar to this was used in the recent Hong Kong protest election, with the ballots issued in person.

Estonia’s system is insecure, relying on private closed systems to store, transmit, and tally votes. They have made changes, but AFAIK they don’t provide a way to publicly cryptographically verify votes or vote counts, and voting has to be done through a specific app.

Re: Ask HN: How would you design an secure online voting system?

#9
I would look at works in other countries and see how we can adopt or improve on that and our existing system.

Some things that come to mind: - National voter ID card. Countries like Mexico and India have this for everyone. You can’t vote without it. - Fingerprint of some sort. Either retina or fingerprint scan to verify identity. This opens up a civil liberties can of worms but we would need to secure this somehow. - I’ve read of some startups looking to us blockchain, but not sure how that would work. - I read an article about a company called Unum ID that was looking to address this problem. You sign up, give an address, they mail you a card with verification of your address to put into their app. The app then has a unique QR code that gets scanned. Similar verification setup to Nextdoor or buying ads on Facebook. They verify your identity by mailing you a unique code that needs to be entered into an app or page to verify your address and who you are.

I think the key components are, verify the address of the person, confirm it, secure/uniquely store the identity in a service.

The biggest problem we face is fraud. Double votes, voting for others, voting as dead people. California had to purge their roster after being sued for the data being inaccurate. I think 300k names were removed or asked to verify. 300k wrong voters can swing a local or state election. That’s big.

Post reply on HN