HACKER Q&A
📣 speedgoose

Will online voting require to trust crypto experts?


I voted online for the first time this morning, mostly by curiousity.

I got a receipt with 2 huge hex numbers and one large base64 blob. The receipt also had a link to an online website to verify that my vote has been registered, and that it will be counted. The website is relatively easy to use, I copy paste my use base64 blob and I get a green success message. It's source code is also available online, in OCaml.

Now, I have no good understanding about all of this work. The information page is helpful to get a vague idea of the concepts: https://verifiabilite-legislatives2022.fr/informations.html However you actually need to be a crypto expert to understand it fully, and I'm not one. "More experienced readers may be confronted with a more technical description in English." https://hal.inria.fr/hal-01576379/file/ZK-securityproof.pdf The paper contains crypto math proofs, it looks fancy and has nice concepts such as homomorphic encryption, zero knowledge proofs and so on. At my level I can only say that my base64 blob contains a JSON document consisting of a few numbers, one huge hex number with homomorphic properties, a schnorr signature, and a public key of something.

Moreover, the system has strong limitations because as thex explain, you cannot know that the candidate you selected is the candidate actually registered in your electronic vote, and they cannot ensure that all the registered votes are legitimate.

The traditional voting system for French citizen is a transparent box with paper voting ballots in an envelop. You can count the votes later in a group of random citizens, I did it twice personnally, and it's very easy to understand. Most people in my country side village could trust the process with no prior knowledge.

I find the online voting part convenient, but I'm afraid people will not trust it because they cannot understand it.


  👤 dividuum Accepted Answer ✓
Ah yes. That explains how my ballot is well-formed (formatting completely messed up by copy/paste, but probably 99% of all people couldn't tell a difference anyhow):

> gρi α−σi = gw+rσi α−σi = gwασi α−σi = gw = Ai and hρi (β/gMi )−σi = hw+rσi β−σi gσiMi = hwhrσi (hrgm)−σi gσiMi = hwg−mσi gσiMi = hw

I'm sure there's some way to implement a somewhat working online voting process, but all those suffer from a major problem you already stated: the majority of people won't be able to understand or verify that their vote was counted. Your expected to fully trust that some machine took your intent and counted it correctly. I wouldn't for important votes.

An important side effect is also that you make the process more scalable which IMHO isn't something you want in important votes as that makes the system more open to attacks. Consider tampering with the voting machine manufacturer to how difficult it is to manipulate distributed vote counting by random citizens. In Germany everyone can apply as "Wahlhelfer" (person helping with the voting process) and then both make sure the voting process is followed as well as count votes in a peer reviewed process.


👤 necovek
With most things, trust is established "by proxy" (by trusting someone who trusts whatever you worry about).

In free software world, we generally trust that free software is well-meaning and contains no backdoors because we assume that someone else has reviewed the code: we don't go reviewing each and every library or app we use.

Sometimes that trust is misplaced, particularly with small, unused apps or libraries, but in a grand scheme of things, it works.

Elections are slightly different in that you want precision and guarantees. I think electronic voting can and should be introduced with a fully open source stack even for important votes, but it should never be mandatory: in theory, for those who understand the process, verifying their vote is much easier electronically. This would enable trust-by-proxy to work as well for the technically inclined.

There is the trouble of verifying that the software any voting system is running matches the source code you are given access to. In that sense, having public access to a full database of votes (or at least electronic ones) would help quell that concern as well — at the very least, each competing political party could run their own system to verify your vote.

Still, I think the easiest way to manipulate votes today, and how it's usually done in democracies, is by media manipulation (by selective reporting or over-reporting to drive a narrative), and no voting system can help with that :)


👤 trompetenaccoun
Online voting is a horrible idea, anyone who tells you it's secure has no idea what they're talking about. Even if we were to assume a hypothetical future where it's implemented as an immutable smart contract on a widely used blockchain that's large enough to be too costly even for state actors to attack. Then the attacker just targets the devices citizens use to access the vote. Currently we have two mobile OS and not much more in the PC world. An exploit in just a single one of them would open the door for massive manipulation.

On top of that there's the trust issue, which I find absurd that this isn't more often discussed even with other forms of voting. For example in the US they use those idiotic electronic voting machines with catastrophic consequences for people's trust in the system. All this should be banned and only paper ballots allowed. Then when it comes to counting, citizens need to be allowed to observe the process (without interfering of course). That's the only way to do it and ensure both security and trust. The process must be easy enough that most voters can understand it. Electronic voting is the exact opposite, almost no one understands how it works on a technical level and even fewer people are going to be able to verify the code. Such a system is begging for collusion and fraud.


👤 logicalmonster
> I find the online voting part convenient, but I'm afraid people will not trust it because they cannot understand it.

Forget about having a trustworthy system: regardless of mathematical proofs or observers or anything else you can come up with, many people will not trust the election system after last time. You need a system that helps take into account this lack of trust.

Regardless of the voting system, one potential big missing ingredient IMO is individual auditability, and I don't mean the ability by a state to perform a "recount" that could be just as flawed or rigged as the original count.

There should arguably be a private method using cryptography where citizens should be able to individually privately verify that their vote was registered, and to see that their votes counted towards their intended candidate. People should be able to do this instantly and repeatedly after any vote cast. If you have 84 people who say their vote was registered wrong after a state election, maybe you chalk it up to user error and somebody choosing the wrong field. But if you have tens of thousands of people for one party come out in a state after an election and sign some legal document that says that they checked and their vote wasn't registered or went to the wrong candidate, you'd at least know there's likely some big flaw somewhere in the system.

Of course, even this doesn't guarantee an accurate election because votes could always be manufactured out of thin air using fake people and that's where things like observers might help, but at least you can largely deal with the issue of votes being changed with an individual audit system.


👤 ls15
I hope there will be a push back to paper ballots.

Electronic voting is eroding democracy, because it introduces intransparency via complexity.


👤 dontbenebby
>The traditional voting system for French citizen is a transparent box with paper voting ballots in an envelop. You can count the votes later in a group of random citizens, I did it twice personnally, and it's very easy to understand.

That sounds lovely, maybe keep doing it that way.

You shouldn't treat online voting as something inevitable with phrasing like "will online voting require" if you want to continue living in a democratic republic.

"Crypto" (as in cryptography) experts have repeatedly briefed you people on this multiple times in multiple languages.

Stop misunderstanding on purpose, lest folks just do whatever they want (IMHO.)

But I'm not French, so I have no horse in this race... you can do whatever you want OP.


👤 yakak
It's a difficult problem because easy proof of who you truly voted for is not desirable (it makes it easier to use money or intimidation on individual voters.)

The old Schneier crypto bible had an interesting introduction to trying to create the right properties to prove things in aggregate without revealing individual votes. It is certainly very interesting but hard to setup in a way where anyone who develops the expertise can independently inspect the properties of an election.


👤 car_analogy
> you cannot know that the candidate you selected is the candidate actually registered in your electronic vote

Does that mean your vote could be altered at time of voting if your computer is compromised? Would that make this voting system, and therefore country, completely defenseless against attackers able to compromise large numbers of computers, such as Microsoft, Apple, Intel[1], AMD[2], and nation states with strong cyber-warfare abilities?

[1] https://en.wikipedia.org/wiki/Intel_Management_Engine

[2] https://en.wikipedia.org/wiki/AMD_Platform_Security_Processo...


👤 tromp
Refreshing to see the word crypto used in its original meaning of cryptography!

👤 Jhsto
This also applies in more general sense: will some aspects of formal verification (thus programmers) turn into tools of legislation and government oversight? In the other crypto field, cryptocurrencies, some have called for formal specifications to be one aspect that projects should include to become available in certain legislations. Although, the problem remains the same as with the OP: only a handful of people are able to review the proofs, which partly renders the usefulness of the proofs obsolete.

👤 randomhodler84
I think few understand the math behind these systems, and faulty implementations are indistinguishable from faulty ideas to the non-cryptographer. And ignoring the accidentally faulty case, there is a real chance that a malicious operator could steal an election. You might need more than a few PhDs to prove it.

Back to paper voting.


👤 throwaway4good
Traditional voting also relies on "trust"; in the sense that various parties involved have to follow the laws that guide them for things to work.

You could do online voting without cryptography simply by relying on a legal system that enforced secrecy and fairness by threat of legal consequence.


👤 Vladimof
We could use a secure end-to-end verifiable e-voting system using zero knowledge based blockchain: https://eprint.iacr.org/2018/466.pdf

👤 pjc50
Online voting is just handing the election over directly to hackers - not necessarily of the voting system, but the devices people are accessing it from.