Outline of a Procedure

An Adder procedure is complicated, and it is important to go through the steps one by one. A graphical depiction of the procedure is shown in Figure 2.1, “A Sequence Diagram of an Adder Procedure”

Figure 2.1. A Sequence Diagram of an Adder Procedure

A Sequence Diagram of an Adder Procedure
  1. Procedure creation. An election begins when an administrator logs onto the bulletin board server and submits the procedure creation data. Among the parameters specified are the procedure identifier, the identities of voters and authorities that are eligible to participate, the authority threshold, the minimum and maximum number of candidates that voters can select, the list of candidates, and the election duration. Once the administrator submits this form, the bulletin board server populates the database with the corresponding information.

    The bulletin board server subsequently generates the cryptographic values for the election.

  2. Authority public key generation. Once the procedure has been created, the authorities collaborate to create the public encryption key of the system. At the end of the election, they each contribute a part to the decryption of the result. Note that no authority has the ability to decrypt a single vote because the actual private key of the system does not exist in the private memory of any one entity. Rather, it is broken up in the form of the authorities' individual private keys. In order to decrypt a single vote, an amount of authorities greater than the authority threshold would all have to collaborate. To counter this, election officials should designate authorities with differing political interests, so they would have no incentive to collude.

    An authority downloads the cryptographic parameters from the bulletin board. He then generates a public key, and stores the corresponding secret key. The public key is stored on the bulletin board. Once all authorities have completed this stage, the public key of each authority is stored on the bulletin board. If not enough authorities complete this step, then the server terminates the procedure.

  3. Polynomial generation. At this stage, the authorities will participate in a protocol that will compute the public key for the election using a distributed key generation protocol.

    An authority logs in, reads the public keys for all authorities, and the authority threshold. The authority creates his secret share information, and publishes a value as a form of encryption using each other authority's public key. Again, if too few authorities participate, the server terminates the procedure.

  4. Private key generation. Each authority connects to the bulletin board server and reads the secret share encryption from each other authority. Note that authority can decrypt all of these values, as they were encrypted with his public key. Thus, he retrieves his private key from his private memory. He decrypts these values, combines them, and stores the result in private memory. Once more, if less than the threshold number of authorities completes this step, the server terminates the procedure.

  5. Public key publication. The bulletin board server combines the secret share information publishes by each authority into a public key, and publishes this value. This key serves as the public key of the procedure, which voters will use when they encrypt their ballots.

  6. Voting. Now, the election may begin. Each voter downloads the public key from the bulletin board, as well as the cryptographic parameters. The voter is permitted to vote between a minimum and maximum number of candidates. The voter thus forms a ciphertext for each candidate, encrypting 1 if the voter votes for that candidate, and 0 otherwise. The encrypted vote is therefore a vector of ciphertexts, one for each candidate. Along with the encrypted vote, the voter computes a proof of ballot validity.

    The bulletin board server then verifies the proof. If the proof is valid, and the voter has not already voted, it posts the vote and proof on the bulletin board. Otherwise, it discards the vote and proof and returns an error.

  7. Result tabulation. When duration of the election has expired, or when an administrator manually ends the election, result tabulation occurs. The encrypted sum of the votes is computed by the bulletin board server combining the votes according to the homomorphic property of the encryption. This combined sum is then posted on the bulletin board.

  8. Authority decryption. Now, each authority logs in again, downloads the encrypted result of the election, and submits his partial decryption. These partial decryptions are posted on the bulletin board.

  9. Result decryption. Once each authority has submitted his partial decryption, the bulletin board server combines the partial decryptions and decrypts the result.

  10. Result publication. The end result is finally published on the bulletin board. The election is over, and no more logins are accepted. Anyone can now view the final result.