Live data from Hacker News

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

news.ycombinator.com

11–20 of 30 posts

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

#11
I started thinking about this a few months ago when I voted by email as an overseas voter. Essentially, our state has an online-to-offline process to convert digital votes to a PDF that can be emailed or faxed, then printed and processed like any other vote.

We could immediately open this system up to every American with a small number of technical & legal changes.

Most of my thoughts about a more complex system are probably not unique, but thinking about this generated a few details that may be interesting.

The obvious final conclusion (for me) was that we could digitize our entire system in a few election cycles, without throwing out the entire system and starting over.

Just 1. Set minimum requirements federally for voter registration systems, 2. Create digital tools for creating and tabulating votes (form to PDF software, public ledgers), & 3. Allow everyone to cast a digital vote which can be converted to a normal paper ballot.

Then, at some point in time, you reverse the system, and make your digital ledger your source of truth, instead of your paper ballot counts.

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

#12
post #11

I started thinking about this a few months ago when I voted by email as an overseas voter. Essentially, our state has an online-to-offline process to convert digital votes to a PDF that can be emailed or faxed, then printed and processed like any other vote. We could immediately open this system up to every American with a small number of technical & legal changes. Most of my thoughts about a more complex system are…

Imagine a simple, digital, public ledger:

1. Each existing voter registration generates a unique, anonymous identifier. They probably already do, you just have to standardize it and create an API to verify it. Cryptographic verification solutions would improve this even more.

2. Create a simple, open source public ledger with an open API. Something where any software that knew enough of the voter registration details combined with that identifier could submit or update a ballot.

3. Give voters multiple systems for voting, to ensure everyone has access to a system that meets their needs. No reason to restrict who can create a system, just set federal minimums for each of this systems & let any tech company build a competing app.

4. A public / private key signature process could be used to ensure the validity of both a "local copy" of the vote stored on the user's device, and that the vote was cast, for future auditing. You could create APIs for validating a vote.

Once you get everyone a unique voter registration identifier, Voters could download the database and use simple tools to audit their vote as part of the final, public count. Any irregularities would be publishable and verifiable.

Independent groups could use samples of volunteers (who would essentially agree to publish their voter ID & local copy of their choices for that year) to further validate the integrity of the result.

You could even plant fake votes that cancelled each other out to facilitate an audit.

I'm sure there are details I'm getting wrong (like how to protect someone's identity in a world where all your voter registration details are able to be purchased in legal and illegal markets).

My only point is, anyone could start working on this kind of system as an open source project, validate it works, and start "patching" our existing voting processes with more accessible or more efficient digital replacements.

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

#14
I'd keep it offline but allow for online lookups to make sure your vote is cast.

For example, at the end of the process the election counters release a file called "results.txt".

Inside that file is a data structure like: { huid: "123-456-789-ABC", vote: "Biden" }

Then you grep for the secret huid that you wrote on your paper ballot and that make sure that your vote was counted correctly.

This is a simplified concept without eg. PK crypto. Microsoft's ElectionGuard is an actual cutting edge implementation of how to do it well: https://github.com/microsoft/electionguard

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

#15
post #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…

Those statements apply to in-person voting, too, don't they?

How do you verify the identity of a person at the polling station?

I'm not sure how it's done in the US specifically but in general it boils down to the voter handing over a piece of paper that's been mailed to them by some government agency and optionally, in places where such provisions exist, producing an ID card or social security ID.

That's nothing more than the real-world equivalent of "but cannot verify that the correct human who should legally have the secret is indeed the one entering the secret."

It's admittedly much more difficult to pull off at scale in an in-person setting, though.

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

#16

"Online voting" is a solution in search of a problem. A pencil and paper does the job better, cheaper, and more securely.

Except when it doesn't.

Take the current elections in the US as an example. Yes, the system's working and it has proven to be quite resilient but those shenanigans involving mail-in ballots and the uncertainty that came with that for example could've been avoided with a properly designed digital system.

Most of those problems could of course be solved with a properly designed non-digital system, too.

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

#17
I wouldn't design it but I could contribute to it. I would look for the proverbial pony express friendly features and check if they actually make sense in 2020. For example: remove the requirement for it all to happen at the same time. This is clearly a feature that makes paper voting work. In 2020 we should be able to change our vote when we like and have a threshold at which a candidate or party is replaced. (This also gets rid of the election circus and make election promises more binding (rather than the "say whatever you like" paradigm) If you need to make decisions that are unpopular you will just have to work harder to inform and educate people about the logic behind it.)

If it is not in real time voting in person is not a problem. A secure room (phones and cameras not allowed) where no one can see what you've voted. (a bus would do fine)

4 separate systems with a 5th that checks if they all got the same vote from you. At the regional level the votes are counted continuously, if one of the 4 system produces a different result an investigation is triggered and huge prison sentences may follow.

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

#18

"Online voting" is a solution in search of a problem. A pencil and paper does the job better, cheaper, and more securely.

The problem solved by cryptographic electronic voting is secure remote elections. Mailed ballots cannot be secured from tampering, since they cannot be observed. I voted remotely this selection, and I have no way to verify my ballot was counted correctly by my county registrar, or even received.

Another minor problem cryptographic electronic voting solves is inaccurate vote counts.

If we allow vote-by-mail we should allow cryptographic voting over the Internet. I agree in-person voting is the most secure, but we already use a less secure system.

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

#20

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 themselve…

A simpler variation on this system is for the ballot keypair to be generated by the voter, and then the public key given to the registrar to "register" for the election. The registrar publishes all the registered ballots signed by their key. All the registrar does is ensure eligible voters submit a public key to register. This would require a voter to register in person or a national ID card that could be used to sign the ballot public key.
Post reply on HN