amincd



Offline



Activity: 772

Merit: 500







Hero MemberActivity: 772Merit: 500 A fraud-proof voting system based on Bitcoin and Zerocoin January 13, 2014, 05:07:55 AM

Last edit: January 13, 2014, 05:23:23 AM by amincd #1



I believe this is possible using a blockchain modeled on Bitcoin and the Zerocoin extension.



Here's how it would work:



There would be a public record showing the name of each voter and the public key that is linked to them. The public key is provided by the voter themselves, so they can be certain that only they have the private key for it.



It would be something like this, just more comprehensive in terms of the personal details posted about the voter (it has to be enough information to identify each person):



Voter name Voter pubkey Alice 1D7JGuHSq3oTzLPnD4VEFuGhunM2FcMfMq Bob 1FxpXuFQw5nVHBt5rdmC4c8FgCbZ9NXQ1a Carol 12aTDVyvthfLtxSeJHVbJ8MG5GRhVJr6Lo Dan 12bKM37peormM5anhKeBB4qVdVKotmfNUw Erin 186P6ZnpiERtpcv5GoVQiW3ns5DK1pQL8D

Next, each voter would be credited with 1 VoteCoin to their public address. Before a certain date, all voters would be required to mint a ZeroVoteCoin, which must be paid for with their 1 VoteCoin (which they can spend using their private key), similar to the Zerocoin scheme where a bitcoin is spent to mint a zerocoin. They would save the secret serial number they used to mint the ZeroVoteCoin, for later use.



On election day, each voter uses their secret serial number to create a zero knowledge proof that they minted a ZeroVoteCoin, in order to redeem their ZeroVoteCoin for a VoteCoin, and credits the new VoteCoin to the public key of the candidate they want to vote for. The candidate with the most VoteCoins is elected. Since the Zerocoin scheme obscures which VoteCoin credited the ZeroVoteCoin that was later redeemed, the public knows that a particular VoteCoin was used, by a particular person, but not which candidate they voted for.



See a graphical representation below (click for large version):









This post in Reddit inspired me to come up with a way to use Bitcoin technology to create a voting system that is both fraud proof and private (conceals who people voted for).I believe this is possible using a blockchain modeled on Bitcoin and the Zerocoin extension.Here's how it would work:There would be a public record showing the name of each voter and the public key that is linked to them. The public key is provided by the voter themselves, so they can be certain that only they have the private key for it.It would be something like this, just more comprehensive in terms of the personal details posted about the voter (it has to be enough information to identify each person):Next, each voter would be credited with 1 VoteCoin to their public address. Before a certain date, all voters would be required to mint a ZeroVoteCoin, which must be paid for with their 1 VoteCoin (which they can spend using their private key), similar to the Zerocoin scheme where a bitcoin is spent to mint a zerocoin. They would save the secret serial number they used to mint the ZeroVoteCoin, for later use.On election day, each voter uses their secret serial number to create a zero knowledge proof that they minted a ZeroVoteCoin, in order to redeem their ZeroVoteCoin for a VoteCoin, and credits the new VoteCoin to the public key of the candidate they want to vote for. The candidate with the most VoteCoins is elected. Since the Zerocoin scheme obscures which VoteCoin credited the ZeroVoteCoin that was later redeemed, the public knows that a particular VoteCoin was used, by a particular person, but not which candidate they voted for.See a graphical representation below (click for large version):

remotemass



Offline



Activity: 980

Merit: 1003









LegendaryActivity: 980Merit: 1003 Re: A fraud-proof voting system based on Bitcoin and Zerocoin January 13, 2014, 05:24:19 AM #3 Could the same key-pair be used for different votings or for each voting you would need a new key-pair to be associated with each voter identity? Would be great there was a torrent file of all referenced materials of the paper: "How to Build Time-Lock Encryption" by Tibor Jager. And having its magnet link published on bitcoin blockchain!

amincd



Offline



Activity: 772

Merit: 500







Hero MemberActivity: 772Merit: 500 Re: A fraud-proof voting system based on Bitcoin and Zerocoin January 13, 2014, 07:15:39 AM

Last edit: January 13, 2014, 07:40:11 AM by amincd #9 Quote from: remotemass on January 13, 2014, 05:45:46 AM Seems good, despite the fact that you could still sell your voting right to someone else...

True, if you consider vote buying a type of electoral fraud, the scheme is not fraud-proof. I think a variation of this scheme could probably be made that's resistant to vote buying too, using tamper-resistant hardware devices that generate and store a random private key and serial number, and limit the voter's access to them. The device could be designed to destroy the private key and serial number upon use, and each voter would return their device to the electoral body, who would be responsible for verifying that it hadn't been tampered with, after they've voted. True, if you consider vote buying a type of electoral fraud, the scheme is not fraud-proof. I think a variation of this scheme could probably be made that's resistant to vote buying too, using tamper-resistant hardware devices that generate and store a random private key and serial number, and limit the voter's access to them. The device could be designed to destroy the private key and serial number upon use, and each voter would return their device to the electoral body, who would be responsible for verifying that it hadn't been tampered with, after they've voted.

domob



Offline



Activity: 1117

Merit: 1116







LegendaryActivity: 1117Merit: 1116 Re: A fraud-proof voting system based on Bitcoin and Zerocoin January 13, 2014, 07:26:39 AM #10 I always thought that it would be possible to implement a public, verifiable and still "private" voting system based on blind signatures only, without the need of such complicated constructs like Zerocoin? It needs a central authority, but I presume that this is inevitable for votes anyway because someone must be in charge of putting the voted-for government into office and things like this. (And one needs a registry of voters, as already specified in the OP.)



Then each voter can (authenticated by their public key) can have their vote blind-signed by the authority, which keeps track that no-one votes twice. But because of the blinding, they cannot determine who voted for which candidate. In the end, everyone publishes their unblinded vote through some anonymous channel (e. g., Tor). All votes are displayed publicly, such that everyone can check the result, that each vote is signed by the authority, that their own vote is contained and that the number of votes matches that of participants and whatever else they want.



What's the advantage of a blockchain based protocol?

Donations: 1domobKsPZ5cWk2kXssD8p8ES1qffGUCm | NMC: NCdomobcmcmVdxC5yxMitojQ4tvAtv99pY

BM-GtQnWM3vcdorfqpKXsmfHQ4rVYPG5pKS | GPG Use your Namecoin identity as OpenID: https://nameid.org/ Donations: 1KsPZ5cWk2kXssD8p8ES1qffGUCm | NMC: NCcmcmVdxC5yxMitojQ4tvAtv99pYBM-GtQnWM3vcdorfqpKXsmfHQ4rVYPG5pKS | GPG 0xA7330737

gollum



Offline



Activity: 434

Merit: 250





In Hashrate We Trust!







Sr. MemberActivity: 434Merit: 250In Hashrate We Trust! Re: A fraud-proof voting system based on Bitcoin and Zerocoin January 13, 2014, 03:32:24 PM #17



We need a new coin with unlimited inflation to keep it's price at 0$ so it can be used for coloring without any other costs than transaction fees. So I need to buy 1 BTC for 1000$ to make a vote?We need a new coin with unlimited inflation to keep it's price at 0$ so it can be used for coloring without any other costs than transaction fees.

amincd



Offline



Activity: 772

Merit: 500







Hero MemberActivity: 772Merit: 500 Re: A fraud-proof voting system based on Bitcoin and Zerocoin January 13, 2014, 09:36:49 PM

Last edit: January 13, 2014, 09:49:18 PM by amincd #18 Quote from: domob on January 13, 2014, 09:55:00 AM This is partially true (and may indeed be an advantage of the blockchain-based system, although I would still accept it if my government did the blind-signature thing). However, even in the system described by me (which is of course not my invention, but I don't find a good link at the moment) every participant can check that their vote was actually counted, and that not too many votes have been cast in total. It is true, though, that the authority could publish fake votes for those voters that don't exercise their right to vote (and that it could get away with forging votes if the voters don't check them). It needs active control by the voters, but the possibility is there to uncover any fraud attempts.



Not having to trust a government at any stage of the election is tremendously valuable. It eliminates one of the major sources of civil strife, by elevating the perceived legitimacy of elections, and guarantees that one man indeed = one vote.



Quote from: gollum on January 13, 2014, 03:32:24 PM



We need a new coin with unlimited inflation to keep it's price at 0$ so it can be used for coloring without any other costs than transaction fees.

So I need to buy 1 BTC for 1000$ to make a vote?We need a new coin with unlimited inflation to keep it's price at 0$ so it can be used for coloring without any other costs than transaction fees.

This would be its own blockchain. There's also probably no need to use proof of work for a block chain that's used only within one country. Not having to trust a government at any stage of the election is tremendously valuable. It eliminates one of the major sources of civil strife, by elevating the perceived legitimacy of elections, and guarantees that one man indeed = one vote.This would be its own blockchain. There's also probably no need to use proof of work for a block chain that's used only within one country.