0

I have seen in some videos and blogs that Blockchain can be used in our election voting system for example here:

Another company working on creating a platform that uses Blockchain technology to replace and/or enhance the current voting methods used today is BitCongress, which released a White Paper on its approach.

The company uses the Blockchain technology with a token based system to control the voting system ensuring one person, one “unchangeable” vote.

This token is called a VOTE and by using the blockchain to permanently record each vote, it ensures that there can be no manipulation of those votes or voting twice

As far as I understand it, the company would assure that each person that is allowed to vote gets a unique token and can only vote once.

Then each block of the blockchain contains the information for which party one voted and the unique token. But I don't understand the following:

  • If there is a company who assigns each user a unique token, then how can I possibly check if the token actually belongs to a human?
  • How can we check that the company does'nt create some fake tokens that do not belong to a user?
  • How can we prevent a Brut force attack that someone just tries billions of possible tokens to make their vote?
  • Have you actually read the white paper in question? – Nate Eldredge Dec 20 '17 at 17:25
  • For the last part, presumably it's the usual thing in cryptography: make the key space bigger. If there are 10^100 possible keys, then trying "billions" (10^9) has a negligible chance of hitting a valid one. – Nate Eldredge Dec 20 '17 at 17:27
1

E-voting is a hard problem. There are three major sub-problems: (with two extras if you use a Bitcoin-based system)

  1. How do you provide a trustworthy computing environment?
  2. How do you distribute voting keys to voters? (Or, how does the government get an accurate list of keys that belong to real voters, with no duplicates?)
  3. How do you prevent denial of service attacks against the network being used to send completed ballots, and the network that announces the results?
  4. (Bitcoin only) Does it scale?
  5. (Bitcoin only) What's the preference of the hashpower majority?

Actually counting the vote is a comparatively simple problem.

Trustworthy Computing Environment

Most people's computers are not very secure. Depending on who you ask, between 30%-48% (1), (2) of computers are infected with some kind of malware.

If there's some kind of malware on a computer, how do you prevent it from altering the vote before it's signed and sent out?

As far as I can tell, the linked whitepaper doesn't address this.

Getting Keys to Voters

I don't think this part is any more difficult than distributing absentee ballots.

You keep a list of voters along with contact information and addresses. If there's a question about whether two people are the same, or whether a person exists, or whether a person is qualified to vote, you use a series of gradually more expensive identity verification methods.

Denial of Service

Some of the people who tamper with an election do so to alter the result. However, some people are satisfied with preventing the election from completing, or calling the results of the election into question. This could be something like BGP hijacking, or a denial of service attack against the DNS servers that introduce new nodes into the network. Or, as a more targeted option, find a list of people who are likely to vote for Candidate A based on what Facebook groups they're a member of, then send a denial of service attack to their home internet connections.

(Bitcoin only) Scale

Let's do some back of the envelope math. You need to count 150 million votes. A bitcoin transaction takes about 200 bytes per vote. Multiply those two numbers. That's 30 GB. Bitcoin has a block size limit of 1-4MB, meaning that a day of blocks can contain 600 MB at most. Even if you make some very optimistic assumptions, it's an order of magnitude too small.

This implies that you need something more efficient than 'broadcast all votes to everybody.'

The whitepaper suggests using simplified payment verification, but since Counterparty rules are not consensus rules, an invalid Counterparty transaction can be included in a block without making that block invalid. Therefore, even if every miner is honest, SPV cannot be trusted.

(Bitcoin only) Hashpower preference

What happens if a majority of hashpower have a preference for who should win the election, and they decide to rig the election in that person's favor?

Well, they can. They can exclude any opposition votes from their blocks, and refuse to build on blocks that contain opposition votes. It's not clear how you could punish them for doing this, or that it's even illegal.

If that's too overt for your tastes, you could exclude opposition votes from blocks you mine, but still build on the longest chain. This doesn't even require a majority of hashpower, but it could still change the final tally.


Things that aren't problems

  1. Brute force attacks

    There are certain physical limits about how efficient computers can be. There is also a limited (but very big) amount of energy in the universe. Therefore, there's also a limit on the number of bruteforce attacks you can attempt, which is smaller than the number of keys in a 256 bit keyspace. There's a more detailed version of this argument here.

    The bottom line is that you shouldn't worry about brute-force attacks. Instead, worry about attacks which are more efficient than brute-force.

  • One of the hardest problems in electronic voting is making it impossible for people to prove what they voted for. This may sound contradictory, but it's essential to avoid vote buying (if you can't prove who you voted for, you can't be paid based on it). Any system that relies on publishing the votes (blockchains are about publishing) very fundamentally undermines that. – Pieter Wuille Dec 20 '17 at 20:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.