A Peer to Peer Voting Algorithm [pdf]
vixra.org
vixra.org
Shareholders voting for trust of the board (not sure how to say this in English). These votes are usually influenced by who owns how much stock, so it's less about democracy and more about showing publicly that you have the support of the most influential stake holders.
Instead of an open source maintainer making a biased single-person decision how two branches should be merged or how a merge conflict should be resolved it could be done via voting.
Wether a transaction is accepted or not is voted on my distributed ledger participants, wether they know it or not. The moment you put your block on top of what you perceive as the ledgers top you vote for that previous block to be accepted.
Which picture is funny enough to get onto the front page of 9gag is voted on by the viewers.
Given incomplete data and a very short time till death doctors need to make decisions which procedure to apply to an emergency patient. This could be voted on given how many talents could be connected to a case in an instant digitally.
Which players should be matched together for a new round of Dota could be voted on digitally instead of leaving that completely to a digital choice algorithm.
It could be a way to lead humans and AI into a cooperative work environment. Having a few differently trained AIs and experts voting on which path to take with the business for instance.
https://pdfs.semanticscholar.org/e734/d63888d81075efa0402599...
> Elections hold a vulnerability that can bring democracies to a halt. [This vulnerability] makes it possible for people to elect a malicious authority that will later refuse to organize future elections.
> This paper is […] aimed to tackle this problem from a cryptographic point of view. […] The algorithm still requires authorities to inscribe voters.
This sounds pretty useless. First, it requires an _already_ honest authority to register people in the system before any elections can take place. In addition, this authority needs to be trusted _forever_, as it needs to add more people to the system as they are born.
Even if this problem was solved, this paper doesn't even question what power means. If a ruling authority already has the power to stop regular elections from happening, it also has the power to ignore any results that come out of this scheme, to pressure people to not vote through new laws or force, and to imprison anyone who does.
An example (and this applies irrespectively of what opinions you hold about it): in Spain, a referendum was convoked to decide about the independence of the region of Catalonia. The government declared this referendum unconstitutional, although it still took place. People voted for independence and won. Still, the results were void, and the people who convoked the referendum are now sitting in court, charged with rebellion. Does it really matter if this referendum was held using physical ballots and boxes, or using digital signatures? You can't remove a central authority just by pretending it doesn't exist.
But the code appears to be missing from the pdf and the links at the end. Has it been removed, or will it be posted later?
Another solution to adding more trust into the elections: People could be able to annotate their physical ballot with a token, each vote with each token is then published and people can see for themselves that their vote has been taken into account.
It would seem impossible to offer election confidence to the majority of people without a simple system that has this property.
If kidnapping and torture are on the table for your threat model. I think most people's voting record could be figured out with near 100% accuracy if they get access to your computer logins, emails, hacker news account, and all your social media accounts. Which according to your coercion model, they totally could. No need to go after your vote token specifically.
So unless the voting system singles you out in particular (which a random token wouldn't. Every vote would have one). Ruling it out as a solution because of a super low probability scenario seems like a misattribution of probability in the face of clear value (ie. easy and private verifiability by all parties).
Having secure elections is how we create a world where no one has to worry about coercers coming after them.
* In traditional families women will effectively lose their vote.
* Vote buying becomes possible.
* fellow party or church members start to check the votes.
The ability to use smartphones to take pictures in ballot box is already threatening secret ballot. Let's remove secret ballot so that we can have secret ballot is not valid solution.
> In traditional families women will effectively lose their vote.
People can lie. That's the only recourse they have today right? Would producing a "plausible deniability token" to show to adversaries suffice here to provide usable cover?
> Vote buying becomes possible.
This is already possible. Though you are right that it is not strictly verifiable today. But I would argue that we lack data on how many people would take money to vote X in todays system, and then vote Y instead and lie about it. If this set is tiny, then this problem doesn't grow much does it?
> fellow party or church members start to check the votes
This should simply be illegal. Bright line. Your vote is private and no-one or organization shall be allowed to force you to disclose it.
---
It seems again like the arguments here are sort of baby/bath water. There are outlier problems preventing this from being perfect. Yes. But the benefit of a truly verifiable election would inoculate us against mass election hacking. Which increasingly seems like a genuine threat we need to deal with. Are the outlier problems not worth the price of preserving democracy?
These are not outlier problems. I have been election official in Finland and it's not rare to see husband trying to make his wife to show the ballot. Smartphones are already creating problems that are hard to quantify.
The real solution comes from doing basic things right. Electoral observation can be improved. Paper ballots standard where ballots can be quickly counted using electronica counters from multiple suppliers (different parties can bring their own) can make voting both secure and safe.
The way I think about this though is that we should view these concerns as needing tailored (sometimes orthogonal) solutions. There is an analog here to testimony in court. Defendants have the right to know the evidence against them. Including the identity of witnesses and the nature of their evidence and statements. This often puts witnesses at risk for retribution. It's a huge problem. But do we do away with requiring this kind of evidence disclosure? Not having it makes it easy for evidence to be fabricated without consequence. And for defendants to not know who or what is being used against them in court. This would potentially have even more dire repercussions. So currently, we find other ways to help ensure the safety of witnesses and accept this major issue.
In the same way we might find other solutions to the issue of Spousal pressure. Opt-in voting receipt print outs. Support programs for domestic abuse, etc...
This is for sure a problem. And maybe even a major one (like witness safety). But overall, the alternative of having insecure and unverifiable elections is increasingly seeming like the more important issue to address. Most complex systems are about balancing tradeoffs. And it should be unsurprising, that a stable election system is too.
Whereas we know that there are (patriarchal) religious groups that apply huge pressure
Software can never prevent mass election hacking, as hardware can always deliberetly miss-implement your algorithm.
I'm also curious what is supposed to happen if you go check, and your vote doesn't match. Sure, the government investigates, but, a, why would you trust the government, and b, why would they trust that you weren't simply paid to cast doubt on the election?
I agree, but it's not necessary to kidnap the person. It's a scary word.
A personal token makes this too easy. For example, you can be "encouraged" to send an email to bigbrother@example.com with your national ID number and your token. Or the day after the election, in each office at work everyone can just meet and show their token while cheering for the current government.
I guess that in a some society people is more careful with the things they post and the things they like in fb, and the things they say in public. At least the vote can be (almost) secret, and they can disagree safely.
> you can be "encouraged" to send an email to bigbrother@example.com with your national ID number and your token
Would the system providing some sort of plausible deniability token give enough cover for this? Is this a problem at scale?
Also... they can do this to you for your email, and social media logins too right?
> Or the day after the election, in each office at work everyone can just meet and show their token while cheering for the current government.
I don't understand why this is fundamentally different than todays world where people wear MAGA hats or drive around with Obama/Biden bumper stickers. Sure it's not cryptographically verifiable. But it's certainly "good enough" for all practical purposes.
---
If each one has a secret passphrase, nobody can verify that the total is calculated correctly.
If people can choose their own passphrase, they can be forced to use one. I like "Fr33dom!"
If the passphrase is calculated automatically, just make the combination of the token with a different passphrase generate a nonsensical result (if you have 10 parties, generate a number between 1 and 100000 for security reasons), so people can't lie. And make people send the email with the national ID, token and passphrase.
Here in Argentina the old method (100 year ago) to vote was that everyone go to the local voting site, and everyone vote in public raising their hand, someone count the votes and send the result to the central location. (The historical details may be inaccurate. But it was something similar.)
Obviously, people can be forced to not go to vote, or people that voted against the local political chief can be pressure to change their votes, or never vote again, or just hit until they understand their error.
It was a long fight to get secret votes, some people even died for the right of a secret vote. I guess other countries have similar stories.
It's difficult to imagine the problems without a recent similar story in your own country. Let's assume you are from USA. Just imagine that during McCarthyism people that were requested testify in the committee has to first say their national ID, token and passphrase to be sure that they didn't vote for the Communist party. Anyone that refuses gets blacklisted automatically for national security reasons.
Different threats require separate considerations for sure.
To be crystal clear. I'm still for secret voting, and being able to lie about your vote if you want to. But without an ability for the voter to verify their vote, you must trust the entities themselves that are holding the election. Both that they are acting in good faith. AND that they managed to secure the election against outside tampering. The very people that you are worried might compel you to declare your vote are the ones running the election systems themselves in many situations.
We need to be able to operate with less trust here, not more.
> If each one has a secret passphrase, nobody can verify that the total is calculated correctly.
It's possible we are misunderstanding each other. There would be a verifiable ledger. With opaque tokens for each vote. The total can be verified by counting. Just like normal. We could use our signature method of choice to sign and verify the integrity of each vote and all the votes. The body holding the election would be able to verify the total counts are correct and not tampered with.
For a specific vote, an opaque identifier that nobody except the voter can resolve, provides a mechanism for the voter to self verify their vote was counted in the way they expected.
A passphrase was just one idea to avoid printing the token on your vote receipt. But if we really want to go down the rabbit whole of having cover. There are many other ways to provide plausible deniability. You could opt to not get a print out of your token. And your deniability would be you don't have it, and you can simply lie about which vote is yours (even though you know the one that is yours).
> It was a long fight to get secret votes
I'm still saying we keep voting secret. What we are discussing is the ability for a voter to verify their vote was counted. But it's still meant to be secret. In fact, something analogous to the 5th amendment to the constitution could help enshrine the right to a private secret vote as a fundamental right.
> Just imagine that during McCarthyism people that were requested testify in the committee has to first say their national ID, token and passphrase to be sure that they didn't vote for the Communist party.
We make it a constitutional right to have your vote be secret. Make this clearly illegal. If you are worried about the central government not obeying laws, then nothing really helps you. The central government ultimately wields the final say in all matters here. They can put you to death if they like. A verifiable election system is meant to help ensure we never devolve to a government that does what you are worried about.
---
Ultimately all of your examples about being forced to declare things apply also to your credentials to your personal devices and online account. All of which contain more less enough information to both figure out what your vote was, and much more.
Generally this is precisely what you want to avoid because then the parties can verify who cast what vote by simple intimidation. The party in power or with physical control of an area can "check" who you voted for before providing you benefits/take revenge. This is not imagination - a lot of US democracy ran like this well into the 1920s and many non U/Canada/Western Europe democracies face these challenges.
There is a reason Indian elections happens as it does in 6-7 phases with central paramilitary forces essentially flooding the areas that are voting to prevent (realistically reduce) intimidation and strong arm, ensuring voting officials come from a different part of the country to prevent influence and mixing up counts from polling booths to reduce chances of "area" wise retribution by political parties. It is very complex and expensive but the exercise seems to give roughly what majority wants and has seen many cases of powerful strongmen and women being voted out of power.
I maintain that paper ballots are the best voting mechanism. They are cheap, prevent intimidation, scale and reasonably trustworthy.
I say they scale because you can parallelize easily by getting more citizens counting ballots. This is a good thing. The more people involved in counting the more you have to coerce to reasonably affect the outcome.
Electionic voting machines like in the US seem insane to me. All the power is in a select few who create the machines.
If you can't source enough trustworthy volunteers to count paper ballots then your democracy might be screwed anyways.
In my county in California, the first voter to arrive has the responsibility of verifying that the ballot scanner is empty and that its printout reads all 0's. That person then serves as a witness to the poll workers applying tamper-evident seals to the scanner door and data module.
This takes no more than two or three minutes to accomplish, and anyone with reasonably working eyeballs can carry this out. You lose this scrutability when you introduce cryptographic proofs and multi-step algorithms into the process.
I've seen many proposed implementations but they all fail because if I can prove my vote to myself in any way, someone else can make me prove it to them either to buy or coerce my ballot.
If the 'real' code shows one thing and the 'fake' codes another what assurance do you have that the counting was done with your 'real' code and the voting machine didn't put another one in there?
1) When voters enter the booth, they throw a large number of multi-sided dice.
2) The resultant throw is scanned via computer-vision. Voter verifies it is correct, and it becomes the voter's ID. Voter votes normally and the vote is recorded alongside that generated "ID".
3) The voter receives a print-out that contains their (ID, vote), however it is randomly shuffled in among other real (ID, vote) pairs. The print-out is guaranteed to have at least one vote for each candidate.
4) The entire list of (ID, vote) pairs can be published nationally. Everyone can verify that the right number of votes were counted, and that their vote was accurately counted since they can find both their ID and vote in the national list.
They can show their receipt to others but cannot prove which one of the many IDs on the receipt was actually theirs.
I can see that working, particularly part 3 there being key.
Seriously I've been asking for years and this is the first time anyone's actually spelled out a scheme that allows the person to go back and prove the vote to themselves and have genuine plausible deniability to others who may seek to coerce them. Thanks :)
Vote: 0 for Gore, 1 for Bush
Provide, in the polling booth: a random salt of either 0 or 1
Publish: vote XOR salt
Now, if you want to lie about what vote you cast, you also lie about the random salt. But you can always check for yourself.Now, the issue becomes obvious - if someone can falsify votes, why can't they falsify salts as well? Less obviously, this is true of any verification system - abstractly, you can always count the vote one way, and "verify" it the other way. So what you have to do is have completely different possession chains for the vote roll and the salt roll. Make it so that at no point does any one person have access to all three of 1) the voter id, 2) the vote cast, and 3) the salt. This means that nobody has the required information, or access, to undetectably falsify a vote.
Extending this to handle more than two options, and making it easy enough to comprehend that the average voter won't get caught out if they try to lie, is left as an exercise for the reader. But it's possible.
In any case it was only meant as an existence proof, not a practical system. I like aeternus's suggestion much more, since it has the useful property that everyone can see all the votes - just not whose is whose. (Although I'm not sure what function the receipt serves)
There is a way to prove that your vote was counted without being able to prove what you voted for by using homomorphic encryption. So, if someone wanted to coerce you or pay you for voting at all for whomever you want, they could do it, but that's fine. Microsoft is actually working with Galois on a system operating on this principle[1], and here's a good video explaining the basic concepts of how it works[2].
[1] https://blogs.microsoft.com/on-the-issues/2019/05/06/protect...
Now, let's step back and remember that MOST PEOPLE DON'T KNOW WHAT AN URL IS. They can't tell the difference between an app and a web site. Internet, the browser and Google.
A good part of them still think the Sun goes around the Earth.
Even with current simple paper based systems, elections are being influenced. There is no way in hell that anything electronic is going to be kept safe by the general population, unless we duplicate the votes on paper for review, which for me kinda defeat the purpose of going digital.
Elections are not a technical problem. Actually the more technical you get, the smarter you try to make it, the farther away you are from helping society.
Now an electronic system to make polls for the general population, or for small entities, make sense. So it's still a good subject for research.
But if people that have a hard time to read out loud must inspect a hard drive to make sure it hasn't been tempered with, it's game over.
Suppose N=20. Imagine the server and 19 of the voters are compromised, and are trying to de-anonymize your vote. It "randomly" creates a group composed of you and 19 voters that are collaborating with the server to de-anonymize your vote.
Assuming that the server has M collaborators, it can discover the votes of M / (N - 1) of the citizens.