Remix.run Logo
▲ himata4113 4 hours ago

You solve all of these with cryptography.

Your ID card contains a private key, you use that key to sign a transaction. It doesn't matter that machine you are running on is compromised as these details can be verified at a later date.

Example A: You vote for candidate A, but software changes to candidate B and software displays that you voted for candidate A. At any later time you can check with an independent device and look at the transaction finding out that it was altered with and retract your vote / change it.

Example B: How do you know your vote was counted? Publish a hash and the signature of every vote, recompute the final tally and compare with all the votes. If your vote is not in the final tally the hash will be different and you can visibly see your vote in the dataset as every transaction is published. To preserve privacy each round has a number, private key + number -> new key so each fingerprint will be unique between votes.

▲cryptonector 4 hours ago | parent | next [-]

> You solve all of these with cryptography.

I've spent a lot of time thinking about this problem, and my conclusion is that cryptography alone is not the solution, for reasons like:

1. The public needs to believe it, and hypertechnical solutions are a hard sell.

2. Any blockchain approach needs to preserve the secrecy of the ballot, otherwise you get all the problems you can expect of non-secret votes (coercion, vote buying, shaming network effects).

3. You still need to have the cryptographic rubber meet the physical road _somewehere_ -- it has to, otherwise the need for vote secrecy means that the results can be entirely fictitious and pre-programmed and there is no way to check!

I.e., you can have a paperless blockchain solution IFF you abandon vote secrecy. That is a very tough to swallow pill.

On the other hand, if you accept paper ballots and manual partial audits as part of the solution, then blockchain can have a role to play. For example, the machines could display a blockchain head every 50 ballots cast, and voters take a copy of the blockchain head visible to them, then after the election the public can verify the integrity of the blockchain, and the fact that you only get running tallies every 50 ballots means you get vote secrecy.

A system that uses paper ballots and partial manual audits can be explained to the public, and the public can develop confidence in it. Blockchains can then add a good deal of confidence: the blockchain tells you that the tallies were not modified after the fact, and the partial manual audit tells you to an acceptable level of statistical confidence that the digital cast vote record contains the actual paper ballots _as marked and cast_ by voters.

▲sigmoid10 3 hours ago | parent | next [-]

>I.e., you can have a paperless blockchain solution IFF you abandon vote secrecy. That is a very tough to swallow pill.

This is false. I know this is a common thought on HN because some formerly popular youtuber did a video about this topic that is still regularly reposted here, but he was already wrong in theory back then and it is certainly wrong in practice today. Secrecy/anonymity and verifiability are no longer mutually exclusive as anyone who is well versed in modern cryptography will be able to tell you.

▲cryptonector 3 hours ago | parent [-]

I'd appreciate some references. That's not because I'm trying to put you down with a request for references, but clearly you have seen them, and I'd like to see them.

Also, you still have to convince the public.

▲sigmoid10 3 hours ago | parent [-]

I agree that convincing the public is a separate issue. But on a technical level, these problems are solved. See e.g. this modern implementation: https://github.com/vocdoni/davinci-paper This is a pretty recent one, but the mathematical foundation dates back to the late 80s.

There have also been earlier implementations like this one: https://github.com/benadida/helios (corresponding paper https://www.usenix.org/legacy/event/sec08/tech/full_papers/a...), although it still lacked coercion resistance. But it already uses zero knowledge proofs, which is at the core of anonymous yet verifiable systems.

▲cryptonector 3 hours ago | parent [-]

Thanks. Right, this is zero-knowledge proofs. I expected as much. I think that ZK can be made to work for secure voting, though I don't believe that the public can be expected to understand it. I'll have to read this, but I suspect that there is a way for possessors of secret keys to choose to decrypt ballots and violate ballot secrecy.

▲mariofdistrust 3 hours ago | parent | prev | next [-]

the issue isn't that people won't believe it or that blockchain can't preserve secrecy of ballots (it can). it is, in part, that crypto eventually has to meet the real world, but mainly that crypto is hard and governments might not be up to the task. for example, last year the IACR (which had been doing online voting via crypto for more than a decade, and still is) had to void their elections because one of the trustees lost their private key and the results were impossible to decrypt. while it was ultimately fine because the IACR isn't really a high-stakes operation, how would you feel if your government just said "sorry folks, there's been some technical issues and elections will have to be redone"? would you believe them or suspect they're up to no good? what if this happens in a very contended and heated election?

▲varispeed 3 hours ago | parent | prev [-]

> The public needs to believe it, and hypertechnical solutions are a hard sell.

Public doesn't need to know the details. Production of paper, printers is quite complex and so production of the pen. Yet people are not concerned about that when voting and we don't publish schematics of a printer that printed the ballots.

▲cryptonector 2 hours ago | parent [-]

> Public doesn't need to know the details. Production of paper, printers is quite complex and so production of the pen. Yet people are not concerned about that when voting and we don't publish schematics of a printer that printed the ballots.

Except that people know what paper looks and feels like, they know how it absorbs ink, they know its various properties, they can _read_ whatever is printed on them, and they can see that the marks they make (or a ballot marking device does for them) are faithfully visible on the paper. With paperless machines there is nothing comparable.

▲emil-lp 3 hours ago | parent | prev | next [-]

A major problem is that if you are able to verify who you vote for, you can either sell your vote or be coerced (by, say, your abusive husband) to vote a specific way.

▲rustyhancock 3 hours ago | parent | next [-]

We have the solution it's just not practicable. Cryptocurrencies and hardware wallets have solved this problem. But they operate at the scale of people in their bedrooms not hundreds of millions of people voting over one day all over a country.

Passports would need to become like hardware wallets with screens such as Trezor. Who's firmware and design are open source.

The screen means I can see what I'm signing and later be shown what I signed.

Now, I don't want people to know who I vote for. So we make it e-passport gate so that no one can enter with me.

Now I want to be able to verify my vote at a later date but not let others know it was me. Well this too is solved by multiple cryptocurrencies like monero and z-cash.

I can go to my local town hall enter a room alone using a e-passport style gate and check my vote at the machine. My device can verify my vote.

Someone with the vote can only see that 1 of N voters did it. Where N is so large they can't identify me.

No duplicate vote is possible.

Literally no one would agree to this however.

▲dpkirchner an hour ago | parent | next [-]

As long as you can see your own vote, someone can force/coerce you to show them your vote.

▲vntok 3 minutes ago | parent [-]

Not necessarly. For example you could have the machine print a ticket with the vote and show it to the voter behind a window. The voter:

- confirms (paper goes down the box) and exits the booth

or

- cancels (paper is burned) and votes again

▲cryptonector 3 hours ago | parent | prev [-]

Cryptocurrencies mostly are pseudonymous, and, really, not even that. Certainly bitcoin is at best pseudonymous.

▲rustyhancock 2 hours ago | parent | next [-]

There is a reason monero and z-cash are being banned in Europe.

I can't claim to be a crypto expert.

But hiding a transaction and it's value among other transactions is perfect for voting.

As I understand it Monero uses ring signatures to make it so it's not possible to know which individual of a group initiated a transaction, and it's zero knowledge proof system means it can be verified that a particular transaction is valid despite this.

To my layman mind that seems to be good enough, every vote can be verified by any party as valid (no double spending or double voting took place).

You can never narrow down who made a particular vote beyond a large pool of people.

You can't tell where any transaction went (you don't know who was voted for).

At the same time with my private key I can see my vote.

The only thing needed for voting is the e-passport style gates.

Certainly it won't just get a case of use monero, they would need to design the system for voting.

▲ifwinterco an hour ago | parent | prev [-]

True for bitcoin but Monero is legitimately quite anonymous

▲himata4113 2 hours ago | parent | prev | next [-]

You can always include a nonce to decode the votes true value or provide an alternative for people that are vulnerable to coerction. If you need an example: monero crypto currency is the pinnacle of it.

▲resist_futility 3 hours ago | parent | prev | next [-]

You could have verification be done in person and not online with no way to share it.

▲cryptonector 3 hours ago | parent [-]

You'd have to go to your elections authority's location, and very few could do it w/o overwhelming the vote verification rate capacity, and very few would.

▲spiddy 3 hours ago | parent | prev [-]

retraction of vote with a new vote solves this.

Since I'm able to retract my vote, I cannot sell it. And since I can retract my vote, I cannot be coerced in any way.

▲ 24 minutes ago | parent | next [-]
[deleted]
▲cryptonector 3 hours ago | parent | prev [-]

Elections results have to be final at some point, and after that point no further retraction/changes can be made, therefore you can be coerced.

▲himata4113 2 hours ago | parent [-]

coerced at the time of voting, but then you can go back and simply change it again

▲cryptonector 2 hours ago | parent [-]

And then you can be coerced again, and again, until the vote is final.

▲spiddy an hour ago | parent | next [-]

there is a limit of how many people you can be physically present to coerce up to end of election, making it inviable en mass, thus impractical.

▲himata4113 an hour ago | parent | prev [-]

how would one know? they're they know a transaction happened, but they do not see the contents of a transaction

▲matheusmoreira 3 hours ago | parent | prev | next [-]

> software displays that you voted for candidate

This enables coercion of voters. It must be impossible to attribute any vote to any specific person.

▲himata4113 2 hours ago | parent [-]

this is out of context, nobody would see who they have voted for in practice

▲matheusmoreira 2 hours ago | parent [-]

> At any later time you can check with an independent device and look at the transaction finding out that it was altered

This implies there is a record establishing a relationship between person A and vote X.

The fact most people won't bother to check it in practice is irrelevant. It must be impossible, because otherwise people are going to die.

▲patrickmay 3 hours ago | parent | prev | next [-]

Relevant xkcd: https://xkcd.com/2030https://xkcd.com/2030

There is no problem that electronic voting solves that paper ballots and scanners do not, and the latter are not only more secure but are seen to be more secure. Trust is essential in a voting system and only paper ballots provide the necessary level of trust.

▲sam1714 3 hours ago | parent [-]

There are problems that electronic voting does solve: in some countries, moving paper ballots are problematic and subject to tampering. This shows up in mail-in voting, where there's always a risk of loss and delay. Overseas voters are an issue, e.g. deployed military.

There is a specific problem with mail-in voting and disabled voters, for example elderly people who can't go to the polls and can't get an electronic ballot marker. 25 US states deliver ballots electronically and 15 allow electronic voting for this specific case [1].

[1] https://www.ncsl.org/elections-and-campaigns/electronic-ball...

▲cryptonector 2 hours ago | parent [-]

Registration of such voters can be audited and checked carefully to limit their numbers (since they must be inherently limited), and ballots can be delivered to them, or voting equipment can be brought to them (e.g., elderly care homes). I'm not sure much can be done to make voting by the permanently confined secure. For military the military itself can help a great deal. For civilians overseas, either come back to vote, vote at a consulate, or don't vote -- I don't think it's necessary to bend over backwards for civilians who choose to be overseas unless a country has a huge proportion of its population residing abroad.

▲sam1714 2 hours ago | parent [-]

Intentionally limiting access to accessible voting is problematic.

You also have issues of deanonymization if you only get a couple of ballots in via one method. In Maryland, for example, they're supposed to encourage at least 100 random people to use the accessible ballot marker per precinct for this reason.

It's not reasonable to tell people "too bad," fly back to the US as much as 3 times per year. They pay taxes and are subject to US law even though they're overseas, so they get to vote.

Ballot management becomes error prone. My county alone has 25 ballots due to the different combinations of state house, senate, Federal house, municipalities, and _all_ the special districts. (4 members to the board of directors of the Anytown West Memorial District, a.k.a. cemetery, because they had a property tax assessment when they built the thing in 1950)

▲cryptonector 2 hours ago | parent [-]

> Intentionally limiting access to accessible voting is problematic.

I offered nothing of the kind, except as to civilians residing abroad, and even then, I don't think there should be any obligation to provide online voting -- having to travel to a consulate is not too unreasonable.

> It's not reasonable to tell people "too bad," fly back to the US as much as 3 times per year. They pay taxes and are subject to US law even though they're overseas, so they get to vote.

Vote... where? In what state, in what county, in what precinct? The correct answer is that they should not have to pay income taxes while residing abroad, but also not get to vote while residing abroad.

For military the situation is simpler even if the personnel have no US-side residence: use the state/county/precinct of last residence. The same can apply to civilians, but I'd rather let them not pay state and federal income taxes while residing abroad.

> Ballot management becomes error prone. My county alone has 25 ballots due to the different combinations of state house, senate, Federal house, municipalities, and _all_ the special districts. (4 members to the board of directors of the Anytown West Memorial District, a.k.a. cemetery, because they had a property tax assessment when they built the thing in 1950)

That's a small county :)

▲abrezas 2 hours ago | parent | prev | next [-]

How do you know no fake votes were added?

▲himata4113 41 minutes ago | parent | next [-]

This problem is unavoiable as you ultimately have to trust the root, just like with paper ballots, so this is not an applicable problem. Although you could include encrypted metadata for location, id number attached to a real person and other information that would make verification after the fact much, much easier.

▲ 2 hours ago | parent | prev [-]
[deleted]
▲eastbound 2 hours ago | parent | prev | next [-]

> You solve all of these with cryptography.

Or ballot boxes. Where citizen can keep their eyes on their ballot until it is counted.

Even back in 2002, TV channels in France (60m inhabitants) broadcast the winner at 20:00:30, using statistical models.

But recently, they removed the ability for citizen to stay during the counting, relying on designated persons, which breaks the chain of trust. Might as well cast my vote into a black bag or an electronic machine, no trust at all.

Trust was never the goal. As the means of coercion are higher and the capacity of communication is filtered, it becomes unnecessary to involve citizen in voting, isn't it?

▲mmooss 4 hours ago | parent | prev | next [-]

Who makes your ID card, generates the private key, and stores it there? Do you trust them? Did they retain a copy of the key? Did they implement security effectively (a very difficult task, considering the resources of attackers)? What about securing the manufacturing process?

In the end, you always must trust humans.

▲cryptonector 3 hours ago | parent | next [-]

Indeed. The rubber hose always beats cryptography. Always.

▲vincnetas 3 hours ago | parent | prev [-]

So if someone else knows my private key and voted for me not the same way i intended to vote, this will be visible in final results. And then you can start asking questions. If they have my private key and voted the way i intended, then its no problem :)

▲drdexebtjl 3 hours ago | parent [-]

Why would others trust you to be telling the truth and not just lying to attempt to cause mistrust in the election?

Naive solutions have naive problems.

▲thfuran 3 hours ago | parent [-]

I’m not sure what you’re trying to say. That the “solution” to that is just to ignore both votes in the case of multiple votes per id?

▲drdexebtjl 2 hours ago | parent [-]

That this is too simplistic. There are obviously many solutions with different trade offs, but this one sacrifices secrecy to help catch fraud, and it’s not even effective at catching fraud.

▲thaumasiotes 3 hours ago | parent | prev [-]

> Example A: You vote for candidate A, but software changes to candidate B and software displays that you voted for candidate A. At any later time you can check with an independent device and look at the transaction finding out that it was altered with and retract your vote / change it.

This seems to make a pretty dramatic change to the election protocol, no?

Consider example A': You vote for candidate A, but later realize that you hate candidate A. You repudiate your recorded vote for candidate A.

What should happen?

▲devin 3 hours ago | parent | next [-]

How much later? Cryptographic systems certainly have methods for allowing revoting up to a deadline, but endlessly mutable voting is insane. It's also not really any different from today. I can say I didn't vote for candidate A 12 months after the upcoming election and it means... well... nothing.

▲sam1714 3 hours ago | parent | prev [-]

You can do A' in some US states... you can vote by mail/early vote, and then later request they spoil that ballot and do it again, or by voting on election day the mail-in is invalidated.

▲grg0 3 hours ago | parent [-]

The US voting system is probably not a good starting point for modeling such systems :)

▲cryptonector 2 hours ago | parent | next [-]

There is no "US voting system". Each of the 50 States have their own systems, often several systems, and where there are several systems it's the counties that pick a system that suits them.

▲sam1714 2 hours ago | parent | prev [-]

I'm confused. Can you explain the exact issues created by this repudiation system practiced by US states? Maybe there's a real issue that hasn't been addressed that I am unaware of.

Or is this a knee-jerk America Bad?