upvote
To take it one step further: how does the election authority convince everyone that their vote was counted?

Us "computer folks" convincing ourselves is the easy part. Maybe after enough studying of the system, I'd be absolutely sure that my vote was counted, but what would the other 90 % of the population think? This not a "people are stupid" argument, a brain surgeon or nuclear physicist or philosopher isn't going to put in the effort to understand fully homomorphic cryptography, hardware-based security, etc. Why should they?

The alternative works perfectly fine and it's so easy to explain. It's obvious to anyone, no matter their level or field of education, how their vote makes it from their hand into the tally, what prevents it from being misused and what they can do to further reduce that already tiny probability.

You can see, feel and experience the technical measures keeping your vote safe. The people keeping their eyes on the ballot box alp day may literally be your neighbours, as are the people counting. You can reason about their motivations, you can theorise in your head about what lengths you'd have to go to in order to change even a few votes and how unlikely you would be to succeed.

The biggest danger to elections, ultimately, isn't the risk of cheating. It's the risk of losing the people's trust.

(I'm in the local election commission (that's layer 2 out of 4 in our particular election management hierarcy), we just had a big referendum, everyone keeps asking me about online elections so this rant was fresh on my mind)

reply
In this system: I have no idea.

In any system, I suspect it is possible. There are strategies that allow doing private set intersections (or similar): https://en.wikipedia.org/wiki/Private_set_intersection (i.e. a set with one member is "you", and you can check to see if you're in that 764, without knowing who the others are)

I'm not sure what strategies would also allow you to not reveal to the vote collectors where your vote went, but there might be something.

reply
From that wiki:

> Private set intersection is a secure multiparty computation cryptographic technique[1] that allows two parties holding sets to compare encrypted versions of these sets in order to compute the intersection. In this scenario, neither party reveals anything to the counterparty except for the elements in the intersection.

Revealing even elements in the intersection, if that means revealing individual votes, breaks ballot secrecy.

reply
Exactly, it means someone you could prove to someone else how you voted, which is the sine qua non condition for creating a vote economy. That's actually the main reason behind trying to keep the vote secret, much more than threats of intimidation for opposing parties voters, etc...
reply
There is a separate verification tool I've used that lets me confirm who I voted for, and that the server has registered my vote. Also, like in elections in other places, every election has observers take part. OSCE regularly send their lot, their report on the last parliamentary election can be read here https://odihr.osce.org/odihr/elections/estonia/551179.
reply
So there is a tool that remembers who you voted for. That's great to convince your bully that you actually did what they told you.

However, how do you know you're one of the X votes displayed in the final tally ?

reply
I think this is an easy enough problem to solve, the issue is that someone else can how force you to reveal who you voted for. Spouse, rouge employers, mafia, corrupt politicians. You can now "sell" your vote.

I think such a system could still work, but just like the voter has to go to the booth alone to vote, they must go the booth alone to verify.

reply
Most likely similarly how you know in regular "paper" elections
reply
I've been an overseer at election booths several times. I kept a good look at the transparent ballot box, along with complete strangers. In the end, once, I may even have inadvertently recognized my envelope and bulletin during the opening and counting - because we where very very few people to choose that candidate in my polling station :D And I was lucky enough to follow the president of the polling station to the town hall where armies of public servant where doing the addition, and I checked the CSV on next Monday, etc, etc...
reply
In theory, it's much easier to fake a number stored electronically in a computer than a large number of paper ballots.
reply
In practice too. Elections are worth up to trillions of dollars. That means that agencies like state-level actors, and private actors with the necessary resources, will be tempted to mount supply chain and other attacks, and likely will succeed.

Faking paper ballots is totally doable, but you can take various precautions to make that very difficult. For example, you can deliver ballots to polling locations in sequentially-numbered packs and shuffle them at the voter sign-in desk: by shuffling the packs before delivery, by having the elections judges record which packs they got and which numbers went unused, by making them sign ballots prior to placing them on the sign-in table, and so on, you can make it very difficult for elections administration staff to later replace those paper ballots. But you're going to need timely, partial or full hand-count audits in order to make it necessary to replace paper ballots in order to replace results.

Election security is pretty expensive, but compared to the _value_ of elections, it's nothing.

reply
You convince yourself the way you do with any elections: you trust the people/system that counts the votes. If you think about it for a second, the requirements of a secret ballot (meaning it's not possible to know who voted who) and the fully verifiability you are asking for are mutually exclusive. You can have either one but not both at the same time.

That being said I think the Estonian voting system does a decent job of being trustworthy. Publishing the source code is a big step to the better as well. As far as I knew the system was written in Java but seems like they have upgraded it in Go. Good job! Probably the best in the world.

reply
> If you think about it for a second, the requirements of a secret ballot (meaning it's not possible to know who voted who) and the fully verifiability you are asking for are mutually exclusive.

I might be missing something obvious but I'm not quite seeing the logical inconsistency between their two goals. Note they're only asking to verify their own vote, not to verify every other person's vote. For that, isn't it enough for authorities to announce a product of large primes, letting each person verify that their own prime was in the set? At each stage, the machines only report the product of primes up the chain, not the individual ones.

It seems to me the difficulty is with the fact that we have so many places to hide malicious things with modern technology (tiny electronics, firmware, etc.), not a logical incompatibility between the goals. If you had some sort of abacus that did all this mechanically without reprogrammability... or a large computer whose logic was fully verifiable... then everyone could inspect the machine and verify that it behaves correctly prior to elections, and e.g. a camera/observers/etc. can ensure no tampering occurred with the machine until the tallies were conducted.

reply
Yes. Sorry for the condescending tone of "thinking about if for a second". It is actually an interesting problem worthy for a longer time.

Still, if you had the authorities to announce a product of large primes - whatever that means - how do you know they announced the correct primes and not something they made up? I'm afraid any clever cryptographic scheme you come up with falls the victim of the same dilemma: if you can check that your vote was counted right, you lose anonymity. Also how do you check no fake votes were added?

As far as I know, the Estonian voting system works in two stages. First there is an authenticator, that verifies that each given vote is signed properly, is only given once and can be counted, without looking at the payload. Then it anonymizes the votes and signs the result file which is transferred to another system which counts the votes. The communication is unidirectional so that the front-end doesn't get any feedback from the back end save some data transfer acks.

As I said, a decent job. It's not perfect in any meaning of the word. It's practical and it works. People trust it because they trust the people who designed it and run it.

reply
> Still, if you had the authorities to announce a product of large primes - whatever that means - how do you know they announced the correct primes and not something they made up? I'm afraid any clever cryptographic scheme you come up with falls the victim of the same dilemma: if you can check that your vote was counted right, you lose anonymity. Also how do you check no fake votes were added?

My take is that one should be able to check that a blockchain has not been altered/substituted, and the way to do that is by being able to record encrypted running tally blockchain heads, but this gives you no indication that the published blockchain faithfully represents the cast votes so you have to add paper ballots and an immediate partial manual audit of the paper ballots checked against the digital cast vote record.

reply
You can be a observer in the room when the ballot is counted. So you can monitor if everything was done as intended.

This, and the need for everyday Joe to be able to understand what is done at every step.

reply
All the source code in the world means nothing when it comes to elections. It's the object code, down to firmwares, BMCs/MEs, even microcode that matters. It's hard to establish trust in those things.
reply
I wouldn't say it means nothing, but you are right in that it is not a silver bullet. It is one piece of a chain of custody to build the trust. Having source code is better than not having it. Having verifiable builds is better than not having them. Having trustworthy hardware is better than not having it. You get the gist?
reply
I'd rather have a paper-based system, with machines to do the hard labor of counting, and timely partial manual audits. Then I don't have to inspect any source code.

BTW, the source code we're talking about could easily be enormous, especially if you want the machines' firmware to be open too. Reviewing that source code would be a huge task. And you still have the problem of being unable to validate that the actual object code run in production corresponds to the source code you reviewed. And the public won't believe any of it anyway.

reply
Preferring a paper-based system is your prerogative, that goes without saying. For what it's worth, I'm also partial to the manual system for its robustness.

However, the Estonian governement has made a different choice and I salute that they are at least trying to do everything by the book and in the right way. Publishing the source code is a part of that. Estonia is a high-trust society (which is an incredible achievement in itself, considering they were a province of the Soviet Union only forty years ago) and they have the most functional e-identity system in the World. Voting is just a part of it. It does make many things easier and also helps economy if you can trust - and verify - your fellow man.

reply
Nope. Vote tallying is public with random overseers, in transparent boxes watched by a room of people from diverse opinions, with random inspections - precisely because we DO NOT trust the system or the people who count the vote.

Which has always been my biggest beef about digital vote. I'm all trusting the people writing voting software to do their best, actually. Being a Software engineer myself, I'm more concerned about bugs and hacks than deliberate tampering by the government. Especially in an age where AI agents can access pretty much anything ever connected to an electric plug...

reply
> I'm all trusting the people writing voting software to do their best, actually.

You are aware of malicious hacking.

reply
How do you convince yourself of this in a regular election?
reply
In a paper election, you have a chain of people who supervise each other. Depending on where you live, you can volunteer to be part of that and see it for yourself.

In code, you have no insight into what actually happens.

reply
Let's say you encounter a mob society that is convinced that there is a very high risk of election fraud and will apply unnecessary scrutiny to votes, a little rip in the paper or ink not matching standards.

trivia: did you know that a tear in any of the pages of your passport renders it invalid?

reply
Believe it or not there is a chain of people who supervise each other for this e-voting system as well. Anyone can volunteer to be part of it as well.
reply
How can I volunteer to see the bits in a voting machine's RAM?
reply
Logic tests only show that the machines worked correctly as of the logic test. It's easy enough to design them to behave correctly in all cases except actual elections.
reply
> It's easy enough to design them to behave correctly in all cases except actual elections

How? Any possible scheme I can think of that could theoretically allow a tabulation machine to behave differently on audit ballots than it does on real ballots, can also theoretically be mitigated via audit procedures.

reply