Encrypted Tally
encrypted-tally · spec v0.1.0 · 0 implementations · 6 runners
DESCRIPTION
Aggregates encrypted ballots into an encrypted result — counts per option, the winner, or whatever the tally is defined to produce.
Summing is the part homomorphic encryption gives away for free. Everything difficult is around it: turning the counts into a winner needs comparison, checking that a ballot is well-formed needs a predicate over encrypted data, and the result has to be decryptable by the electorate rather than by whoever ran the count.
The kernel is the tally, not the election. Key distribution, threshold decryption and ballot authentication are separate capabilities that a real election composes with this one.
INTERFACE
encrypted_tally( in ct : Ciphertext // the encrypted ballots out ct : Ciphertext // the encrypted result — counts, ranking, or winner ... // anything else the realization needs — keys, context, encoding — is its own concern )
PARAMETER SCHEMA
The schema belongs to the kernel. Each implementation declares which part of it it supports.
CORRECTNESS
SECURITY PROPERTIES
No individual ballot may be recoverable from the result or from the process. Intermediate tallies must not be observable either, since a running count reveals how individuals voted.
ASSUMPTIONS
Ballots are encrypted under a key the electorate controls. Authentication of voters and distribution of keys are separate capabilities.