330 likes | 403 Views
Ari Juels. RSA Laboratories. Joint work with Markus Jakobsson. Recipt-free Voting Through Distributed Blinding. Ari Juels. RSA Laboratories. Joint work with Markus Jakobsson. Coercion-free Voting Through Distributed Blinding. Why do we want coercion-free voting?. Blackmail with a long arm
E N D
Ari Juels RSA Laboratories Joint work with Markus Jakobsson Recipt-free VotingThrough Distributed Blinding
Ari Juels RSA Laboratories Joint work with Markus Jakobsson Coercion-free VotingThrough Distributed Blinding
Why do we want coercion-free voting? • Blackmail with a long arm • Vote buying • Anonymous peer-to-peer networks • Vote-buying schemes (e.g., vote-auction.com; http://62.116.31.68/) Receipt-freeness required Coercion-freeness required • Home voting • Shoulder surfing • Proximate coercion
Attack model • Attacker cannot interfere with registration process (otherwise can simulate voter) • Attacker can provide keying or other material to voter prior to vote (even entire ballot) • Two possibilities during vote: • Assume no attacker presence at time of vote (countermeasure: receipt-freeness) • Assume attacker sometimes present (countermeasure: coercion-freeness) • Attacker has access to all public information, i.e., encrypted and decrypted ballots
I Like Ike • Voter (Alice) • Attacker Cast of characters • Voting authority
Ciphertext • Mix network (publicly verifiable) Some visual notation
Designated verifier proofs DV Proof • Untappable channels Hirt-Sako approach • IDEA: Voter commits publicly to vote, but ballot preparation is secret • TOOLS (scheme-specific):
blinded ballot: P = P1 P2 Authority 1 Authority 2 P1 P2 Ballot blinding Bore Gush Nadir
Authority 1 Authority 2 Voting DV Proof of P1 DV Proof of P2 P = P1 P2
Nadir = Gush Bore Alice’s vote Voting Bore = 1 2
Drawbacks • Cost per ballot is linear in number of candidates • Requires untappable channels for vote • Not fully coercion resistant, e.g., not resistant to shoulder surfing • Not resistant to collusion between adversary and authorities • Subject to “randomization” attack
Random choice Randomization attack Gush Now Alice is unlikely to selecther intended choice, Bore
“Proof” that collusion resistance is not possible with public verifiability • We must identify voter in order to have public verifiability • If attacker controls an authority, he can do “spot checking” • In order not to risk “spot checking”, voter must reveal all communication • Thus, untappable channels are breached and all transcripts are revealed
Our scheme represents a counterexample to this “proof”... (and more?)
vali tagi New tool for our scheme • Anonymous credential = Voting key • Essentially a group signature key • Carries hidden, identifying tag, called tagi • Special enhancement: Also includes validatorvali = B(tagi), where B is threshold blinding function
Some notation • Let B’() denote another, independent threshold blinding function • Let E[m] denote El Gamal ciphertext on m: • Private key held distributively • Authorities can jointly decrypt ciphertext • B(E[m]) = E[B(m)] (due to El Gamal homomorphism
Our new scheme • Core ideas: • Voter employs anonymous credential • We don’t know who voted (at time of voting) or what was voted • Validator required for vote to count • Adversary cannot tell whether or not validator is correct • Attacker cannot tell whether a vote is valid or not
validator = B(tagi) tagi vali votei NIZK proof that tagi ciphertext is valid for credential Anonymous credential signature Anatomy of a ballot proofi tagi vali
tag3 tagn tag2 tag1 val3 valn val2 val1 vote3 vote2 vote1 voten proof3 proofn proof2 proof1 Authority 2 Authority 1 Tallying BallotsStep 1: Check group signatures and proofs ? ? ? . . . ?
tag1 tagn’ tag2 tagn’ tag1 tag2 valn’ valn’ val2 val1 val1 val2 vote1 vote1 voten’ vote2 voten’ vote2 Authority 2 Authority 1 re-encryption . . . . . . Tallying BallotsStep 2: Mixing ballots
tagn’ tag2 tag1 tagn’ tag2 tag1 valn’ val1 val2 vote1 vote2 voten’ voten’ vote2 vote1 Authority 2 Authority 1 B’(val1) B’(val2) . . . . . . . . . B’(valn’) Tallying BallotsStep 3: Joint blinding and decryption of validators
tag2 tag3 tagn’ tag1 voten’ vote1 vote3 vote2 Authority 2 Authority 1 equal validators Tallying BallotsStep 4: Elimination of duplicates by validator B’(val1) B’(val2) . . . B’(val3) B’(valn’)
tagi votei If correct, B’(vali) = B’(B(tagi)) E[tag2] Authority 1 Authority 2 Tallying BallotsStep 5: Verification of validators B’(vali) • Authorities compute B’(B(E[tagi])) = E[B’(B(tagi))] and jointly decrypt • If result is B’(vali), then validator is correct • Otherwise ballot is invalid and is thus removed
Authority 1 Authority 2 Tallying BallotsStep 6: Joint decryption of valid votes = vote1 Gush vote2 Bore Bore vote3
Coersion is eliminated • Key idea: Attacker cannot tell a false validator from a real one • If attacker demands voting key, voter can provide false validator • If attacker demands that voter cast a certain type of vote, and demands pointer(s) • Voter can vote as demanded using false validator • Voter can re-vote using correct validator • This holds even if attacker colludes with a minority of authorities Well, there’s always Florida
Features of scheme • Overhead on top of mixing process is minimal, thus the scheme is quite practical • Cost is effectively independent of number of candidates • No need for untappable channels during vote • We need some access to anonymous channels • Resistant to “randomization” attacks • Resistant to collusion with authorities • Potential resistance to shoulder-surfing attack
Additions • Votes can be countersigned by polling station, indicating priority • If registrar publishes voting roll with blinded validators, we can verify publicly that all participants are on roll • Requires an additional mixing step • Validator may be constructed in threshold manner, distributed with proofs and re-encrypted by registrar • Careful modeling required and largely unaddressed
V2 Authority 1 Authority 2 V2 Idea: Secret sharing of vote V1 V1 Vote = V1V2
V2 Authority 1 Authority 2 ZK-DV Proof of correct encryption ZK-DV Proof of correct encryption Idea: Secret sharing of vote V1 Vote = V1V2
And then… x = Vote V1 V2
Remarks • No randomization attack possible • Cost is (1) per vote • By letting Vi = -1 or 1, we can check validity