Only legitimately registered voters are allowed to vote, and only once per person.
A fair election requires that voters can freely choose without anyone learning how they voted.
For widely accepted results, vote totals must be independently auditable for accuracy.
There have already been digital systems in widespread use that offer each of these properties individually. Yet accomplishing all three at the same time has been unusually challenging.
Voter Registration
Election administrator collects list of all valid voters, via the same methods as currently used.
Name | Mailing Address | Email Address | |||||
---|---|---|---|---|---|---|---|
Barton, Adam | ... | ... | |||||
Green, Elissa | ... | ... | |||||
Hauck, Erik | ... | ... | |||||
Schuster, Brad | ... | ... | |||||
Swift, Savannah | ... | ... |
New
Ballot Finalized
The official ballot is finalized, as with traditional paper elections.
There can be multiple questions, as many as the election requires.
Observer Registration
To give voters additional confidence that the election is run fairly, administrators have the option to add SIV “Verifying Observers”.
These are like the observers in our existing paper elections, but SIV Verifying Observers are vastly more powerful, because they use strong cryptography to ensure every vote is private and tamper-free.
After anonymization (Step 4), the Verifying Observers work together to unlock the votes for tallying (Step 5).
Step 1: Invitation to Vote
Election administrator sends individualized invitations to all enrolled voters.
The purpose of this step is to get each voter their Voter Auth Token, highlighted in orange.
Key Properties of Voter Auth Tokens
Here we use an easy distribution channel — a simple email. But election administrators can offer other options, including 2-factor methods with drawn signatures, SMS, TOTP, or IP address geolocation.
Admins can even send Voter Auth Tokens via traditional postal mail. In other words, SIV can match the Voter Authentication requirements of existing processes, while upgrading the return ballot process to be faster, more accessible, and fully verifiable.
See How does SIV ensure One Vote per Person? for more.
From: elections@local.gov
To: you@email.com
Subject: Your Vote Invitation
Voting for our next Mayor is now open.
Votes are accepted for the next 14 days.
Click here to securely cast your vote:
www.local.gov/vote?auth=137a3a06fa
This link is unique for you. Don't share it with anyone, or they'll be able to take your vote. (Help)
Step 2: Mark & Encrypt Your Vote
Voter fills out their ballot, which gets immediately encrypted.
SIV shows voters a simple point-and-click interface to fill out their ballot:
Who should be the next Mayor?
Verification #:
This Verification # will be publicly shown once votes are unlocked. It allows you to easily verify your vote was counted correctly, while protecting your privacy.
This unique value was generated on your own device. Don't share it with anyone.
Encrypted @ Thu Apr 20 2023 16:50:17 GMT+0000 (Coordinated Universal Time)
Encryption Formula
https://en.wikipedia.org/wiki/ElGamal_encryption
in Ristretto255 prime-order subgroup of Elliptic Curve25519
Encrypted = Encoded + (Recipient * randomizer)
Lock = (Generator * randomizer)
Public Key
36535d7cc956b4f64c4b97e313510619f402e7718066d8daa3c4e497332f5b5f
---------
Verification #: 0518-4353-0983
Step 3: Submit Encrypted Vote
The voter sends their encrypted vote, with their Auth Token, to the election administrator.
{ auth: '137a3a06fa', mayor_vote: }
If it passes, the vote is added to a public list of all votes received so far.
{ auth: '165ce01fb3', mayor_vote: { encrypted: 645dc4638740ba83ec8178c50434ae8fe3395fb0802960899d568f5e3363ab5e, lock: ba321a93b9bbeedb58d85662388136258f41509734bd8a04a0ebdca7ae633514 }
{ auth: '63207e5c56', mayor_vote: { encrypted: de08a055a8d82e613a088779bb043b3b958621af856c0dff4055667620b4763e, lock: beb2c4bd5180213c056c9171af99e29ca53160dec758e34c5e66e51f4b8f8733 }
{ auth: 'b883a5d813', mayor_vote: { encrypted: 46ffd9f9edf51cb35a2071db7684cfbfc562fc46c85cff9c712bf75ca53e9315, lock: b4f94d1d7e9c07d83b93c9dd329f7b03a56370433ca42ff900fd47d3b8f59020 }
{ auth: '70e0cc8542', mayor_vote: { encrypted: 325aca80c2585a328d58616fabc3bd6f2bbfb32a25048ff093bc7285be50624f, lock: 04dcf0f2da3f497cd35f93a83b3e4d08a9d27b83a709ca2a6a91138232bbc864 }
{ auth: '137a3a06fa', mayor_vote: undefined }
The voter is sent a confirmation that their encrypted vote has been received and accepted.
Because of the strong encryption, the election administrator still has no way to know how individual voters choose to vote.
From: elections@local.gov
To: you@email.com
Subject: Vote Confirmation
Your vote for mayor has been received. Thank you.
The final results will be posted at www.local.gov/election-results when the election closes.
Here is the encrypted vote you submitted:
{ auth: '137a3a06fa', mayor_vote: }
If you did not submit this ballot, click here to report a problem.
Step 4: Verifiable Shuffle
All the encrypted votes are then anonymized by the Verifying Observers.
{ auth: '165ce01fb3', mayor_vote: { encrypted: 645dc4638740ba83ec8178c50434ae8fe3395fb0802960899d568f5e3363ab5e, lock: ba321a93b9bbeedb58d85662388136258f41509734bd8a04a0ebdca7ae633514 } }
{ auth: '63207e5c56', mayor_vote: { encrypted: de08a055a8d82e613a088779bb043b3b958621af856c0dff4055667620b4763e, lock: beb2c4bd5180213c056c9171af99e29ca53160dec758e34c5e66e51f4b8f8733 } }
{ auth: 'b883a5d813', mayor_vote: { encrypted: 46ffd9f9edf51cb35a2071db7684cfbfc562fc46c85cff9c712bf75ca53e9315, lock: b4f94d1d7e9c07d83b93c9dd329f7b03a56370433ca42ff900fd47d3b8f59020 } }
{ auth: '70e0cc8542', mayor_vote: { encrypted: 325aca80c2585a328d58616fabc3bd6f2bbfb32a25048ff093bc7285be50624f, lock: 04dcf0f2da3f497cd35f93a83b3e4d08a9d27b83a709ca2a6a91138232bbc864 } }
{ auth: '137a3a06fa', mayor_vote: }
{ mayor_vote: { encrypted: 645dc4638740ba83ec8178c50434ae8fe3395fb0802960899d568f5e3363ab5e, lock: ba321a93b9bbeedb58d85662388136258f41509734bd8a04a0ebdca7ae633514 } }
{ mayor_vote: { encrypted: de08a055a8d82e613a088779bb043b3b958621af856c0dff4055667620b4763e, lock: beb2c4bd5180213c056c9171af99e29ca53160dec758e34c5e66e51f4b8f8733 } }
{ mayor_vote: { encrypted: 46ffd9f9edf51cb35a2071db7684cfbfc562fc46c85cff9c712bf75ca53e9315, lock: b4f94d1d7e9c07d83b93c9dd329f7b03a56370433ca42ff900fd47d3b8f59020 } }
{ mayor_vote: { encrypted: 325aca80c2585a328d58616fabc3bd6f2bbfb32a25048ff093bc7285be50624f, lock: 04dcf0f2da3f497cd35f93a83b3e4d08a9d27b83a709ca2a6a91138232bbc864 } }
{ mayor_vote: }
This randomizes the order of the votes, like mixing them up in a hat.
But this alone isn't enough to properly anonymize them, because the encrypted data — the outsides of our metaphorical locked safes — are still distinguishable. Any computer could quickly reconstruct the original list.
{mayor_vote: { encrypted: 645dc4638740ba83ec8178c50434ae8fe3395fb0802960899d568f5e3363ab5e, lock: ba321a93b9bbeedb58d85662388136258f41509734bd8a04a0ebdca7ae633514 } }
{mayor_vote: { encrypted: de08a055a8d82e613a088779bb043b3b958621af856c0dff4055667620b4763e, lock: beb2c4bd5180213c056c9171af99e29ca53160dec758e34c5e66e51f4b8f8733 } }
{mayor_vote: { encrypted: 46ffd9f9edf51cb35a2071db7684cfbfc562fc46c85cff9c712bf75ca53e9315, lock: b4f94d1d7e9c07d83b93c9dd329f7b03a56370433ca42ff900fd47d3b8f59020 } }
{mayor_vote: { encrypted: 325aca80c2585a328d58616fabc3bd6f2bbfb32a25048ff093bc7285be50624f, lock: 04dcf0f2da3f497cd35f93a83b3e4d08a9d27b83a709ca2a6a91138232bbc864 } }
{mayor_vote: { encrypted: 46ffd9f9edf51cb35a2071db7684cfbfc562fc46c85cff9c712bf75ca53e9315, lock: b4f94d1d7e9c07d83b93c9dd329f7b03a56370433ca42ff900fd47d3b8f59020 } }
Now, the shuffled list is cryptographically mixed, with the original Auth Tokens unlinkable.
Their shuffled + re-encrypted list is now published publicly.
For strong cryptographic privacy, Observer #2 then repeats this same shuffle + re-encryption process, starting with the mixed list from Observer #1.
This way, all of the Observers independently shuffle the encrypted votes, like multiple people shuffling a deck of cards, then handing it off to the next person.
This design creates multiple fail-safes. Even if some Observers' devices are compromised, vote privacy can still be protected.
Step 5: Votes Unlocked & Tallied
The Verifying Observers then work together to Unlock the final shuffled list.
Any voter can Search (Ctrl+F) to find their individual submission, via their Verification #, and see that their vote was counted correctly.
Anyone can independently tally the vote totals themselves.
Only submissions from authenticated voters were accepted, which can be verified with standard Risk-Limiting Audits after the election.
{ mayor_vote: 'Jane Kim', verification: '5540-3796-2107' }
{ mayor_vote: 'Mark Leno', verification: '1053-9568-9905' }
{ mayor_vote: 'London Breed', verification: '1885-6886-1916' }
{ mayor_vote: 'London Breed', verification: '4498-3614-6811' }
{ mayor_vote: 'undefined', verification: '0518-4353-0983' }
We've now succeeded to run an election that's authenticated, private, and completely verifiable.
For more information, see the Frequently Asked Questions page, or reach out to team@siv.org.