> Still, if you had the authorities to announce a product of large primes - whatever that means - how do you know they announced the correct primes and not something they made up?
Note, obviously I was not attempting to detail a cryptographic voting system here. My only point was that I don't see what you said as being obviously true, if it is true at all. For the purposes of that point, even an incorrect scheme that isn't trivially disprovable would prove my point.
That said, to answer your question as I think through the details right now...
- Authorities preassign N-digit primes to everybody, one per option on the ballot.
- Find a way to validate the total number of ballots cast in the election. (Assume for simplicity that every question has exactly one answer selected.) Exercise for the reader on how to do this; this ought to be easy. This is important to know how many digits to expect in the product(s).
- You "vote" by submitting the primes corresponding to the option you select, one per question.
- Authorities announce the products of primes corresponding to each option.
- If your prime isn't included in the product, then it's obviously trivial to prove it... you just reveal your number and show the result fails divisibility.
- If they included extra fake primes, then this is harder to prove, but I think you can catch this by looking at how many digits are in the result. I think you can make the error margin arbitrarily sharp by making all the primes lead with 10000000000..., for example, adding however many zeros you need to make sure a single fake number adds a detectable number of digits to the product.
This is just a sketch; fix & fill in details as appropriate. The biggest flaw I see right now is that it's susceptible to whatever eventual algorithm (quantum or otherwise) ends up breaking factoring and leaking everyone's votes. But otherwise, it sounds plausible to me, and there's probably another trapdoor function that can mitigate that better. And as mentioned initially, if you can't easily prove it's impossible to make it work, that's sufficient for my point, even if it is in fact wrong.