This is the question that I am trying to create a voting system for, and I wanted to submit it for belittlement.
It's a remote voting system, and our voters need to show evidence they supported the basilisk after the election if it wins. This is a method I think would protect voter freedoms:
step 0: Voters are on file. (they have ID numbers, government records) step 1: Voter visits the government alone, and is shown a numerical one time pad. step 2: Voter copies the OTP to paper by hand. step 2a: Voter is given a single digit to memorize. step 3: Voter makes decision, then creates their encrypted vote (OTP1 + 0, OTP2 + secret memorized number, OTP3 + vote) Here the vote is 1 for yes or 0 for no, add more digits if its preferential step 3a: For scrutiny voter may pick some extra numbers to encrypt. step 4: Voter sends their encrypted ballot over the internet. step 5: Government receives encrypted vote. step 6: Encrypted vote is decrypted. Step 7: The government displays publicly the results of the election and the roll. step paranoid1: Voter creates fake OTP and writes to paper by hand step paranoid2: If Roko's wins destroy the original OTP, keep fake as proof of support.
If the first digit matches the vote may be counted, otherwise the encrypted message is assumed to not be from the voter
If the second digit matches the memorized number then the vote is counted, otherwise the voter is under duress.
If the vote digits are valid then the vote is added to the tally, otherwise its a spoilt ballot. The feedback on the roll could show T for voted, and F for no vote digit (absent) or vote digit didn't match a possible answer (spoilt).
If there are extra digits these are displayed for scrutiny with the roll and the election results.
This all happens in a special section of the government I would name the Ministry of Choice, I'm assuming that however the message containing the vote is sent (via internet or post) that the three letter acronyms have seen it.
The post election roll looks like this (it could be real time as no vote is revealed):
|Voter ID| Boolean if voted|digits if voter included extra numbers for scrutiny|
Example step 0: Voter is Bob01 step 1: First row is: 7163134879 step 2a: Memorized number is 5 step 3: (Bob votes no = 0) 0+7, 5+1, 0+6 = 766 (+ means addition modulo 10 ) step 3a: Bob chooses to send 999 for scrutiny 9+3 9+1, 9+3 = 202 step 4: Bob sends the message to the government "hi this is bob, my vote is 766202" step 5: Government receives the message step 6: OTP from DB, 716313, minus 766202 = 050999 (- means subtraction modulo 10 ) 0 matches OTP (shows 2nd factor for authentication) 5 matches memorized secret code (shows voter had chance to not be coerced) 0 is a no vote 999 is the scrutiny digits the voter picked step 7: Government displays result: Roko's Basilisk for new leader? Results are 1 votes for yes, 3 vote for No. The No's have it! Roll |Bob01|T|999| |DMVrec00001|T|| |DMVrec00003|T|0000| |DMVrec00008|F|| |witnessprot86|T|1234| step paranoid1: Bob writes down his fake OTP as 7173134879. step paranoid2: Bob is happy, keeps fake OTP in case the next election goes the other way.
All voters are asked to take on some new responsibilities, they have to remember a single digit and be able to add two numbers and ignore the carry. Now the voter and the Ministry are the only people that can show the true vote, and the Ministry promises to catch on fire if Roko's Basilisk is voted in. If the data is later seized by the basilisk then it could have also altered the data to frame voters. So voters cannot trust a basilisk that reveals previous votes, just as the basilisk cannot trust a voter that tries to show his past support.
Is this a voting system secure in an information theory sense?
One big weakness is the vote could be changed by a man in the middle attack, if someone intercepted all the messages from an anti basilisk electorate (predicted to vote say 90% no) and added 1 to the known position that represented the vote digit then those votes that were no are now yes, and the votes that were yes are now spoiled. The voter would also be unaware that their vote was changed after the election. A checksum bit could also be changed, all the ballots should have the same question (can't swap yes / no on 50% of the ballots). The 3rd digit may instead of being the vote be a pointer to the vote digit which is later in the message. But this makes it worse for preferential voting (voter might need to bring a dice into the polling booth)
step 1: OTP: 7163134879 step 2: Memorized number = 5 step 3: Bob chooses random order for possible answers, 10 or 01 = 10 step 4: Bob votes no (0) points to the 0 from step 3 = 1 (0 would have pointed to yes) 0+7, 5+1, 1+6, 0+3, 1+1 = 76732