Why is e-voting still a problem?

Technically, your solution is pretty similar to CGS97 (note the date) which is the base of Helios and its descendants. As a general approach it's very reasonable, but completely lacking wrt to preventing vote-selling and bribery/threats (Receipt Freeness and Coercion Resistance in the literature):

Lack of RF example: Suppose I promise to give you $100 if you vote for my candidate, and show me the randomness you used (i.e. a receipt) to encrypt your vote as proof. This is a known issue with textbook Helios (mentioned in the original paper) which is fixed in various degrees in later works.

Your suggestion to use a blockchain to implement the bulletin board is reasonable but I would argue people active in the area are aware.

There are a few more issues with your solution:

  • It's trivial to copy other People's votes. This is considered to be bad for privacy. Malleability attacks as well.
  • Requiring that a person's ballot sums up to one is not adequate. Suppose I give -100 votes to candidate X and +101 votes to candidate Y.
  • Combining the above, take all posted the votes on the board and add them up. Let's say there are n of them. Invert the sum. That will produce a ballot summing up to -n. Add n+1 votes to your candidate. You now have a ballot that negates all the previous ballots and moves all their votes to your candidate.
  • Most of the above is solved with Zero Knowledge protocols demonstrating the individual parts of the ballot are 0/1 in addition to summing up to 1, plus some non-malleability requirements.
  • Having the authorities decrypt a mini-sum for every voter can be inefficient. Also, how do you verify they behaved correctly? If your answer is ZK, why not move that to the voter?
  • When you talk about salts and encryption, I think you mean IND-CPA. You probably need NM-CPA though (also take a look at IND-CCA, but it's not strictly necessary).

Going back to big picture stuff, we also want to consider voting from compromised PCs, having an verification process that people can and will follow, the fact that elections would attract state-sponsored adversaries, and the fact that a do-over in case of failure would be extremely costly (in terms of public trust as well as $$$).

TL;DR: There is extensive literature in the area (both in-booth and internet), but it's also a very hard problem.


This algorithm you have proposed is surely a good one. But perhaps it lacks the concept of privacy. This perhaps is the reason, why e-polling is avoided overall.

Privacy here refers to the set of responses/plain text a user might send. {0,1}. This refers to 'known plain text attack'. An adversary, laying a man in middle attack might intercept the cipher code. Now, knowing the plain text, public key and the cipher text, he can use many sophisticates tools, or maybe by simple brute force attack to crack the salt as well as the key used for encryption!(Of course, the time taken to crack would definitely depend upon the length of key and salt).