To start with, public-key encryption can serve the obvious purpose of turning any public communication channel into a private and/or authenticated one. In addition, most voting protocols below use the following scheme for encryption and decryption, which has an extremely useful homomorphism property that we will describe afterwards.
The encryption algorithm relies on three publicly known values n,
y, and r. Of these, n must be the product of two large primes
p and q, r should be a prime that divides either p-1 or q-1but not both, and y should be relatively prime to n. To encrypt
any value i mod r, we then pick some x relatively prime to n,
and compute
| (2.1) |
| (2.2) |
Another useful and easily verified property of this encryption scheme
is that the product of two ciphertexts is an encryption of the sum of
the corresponding plaintexts. In other words, if
and
,
then
.
This property, called
the homomorphism property, will allow us to compute the
ciphertext of the tally from the ciphertext of individual votes,
without having to decrypt each individual vote at any point in the
process. We will also use this property heavily in interactive
proofs described below.
For arbitrary i, the value x can be used as a certificate,
or receipt, to prove that w is indeed a proper encryption of i.
Without a certificate, decryption of a ciphertext w can be
accomplished by exhaustively searching over all possible values of imod r, and evaluating the expression
| (2.4) |
One complicating factor remains. As noted above, to prove that w is
an encryption of i, one can simply produce a certificate x, such
that Equation 2.3 holds. Because x is
randomly generated by the entity which encrypted i to w in the
first place, it is information theoretically secure for this entity to
release x mod n as a certificate to the public that
.
However, consider the situation where w is a publicly known
ciphertext, decrypted to i using the exhaustive search procedure
described in the previous paragraph, by an entity that knows the
factorization n=pq. Suppose that the entity wants to prove to the
public that
;
for example, one common case is that the
entity is an election authority who wants to prove its decryption of
the tally is correct. Although the exhaustive search procedure also
produces a certificate x, this x is yet publicly unknown;
therefore, releasing x may give an adversary additional information
for factoring n. Hence, the entity needs to prove that
without releasing x. To do this, the following sub-protocol may be
used; it is a classical interactive proof protocol with exponentially
decreasing probability of non-detection.
| (2.6) |
Note that, even though the verifier in this protocol can be convinced of the decryption to any probability arbitrarily close to 1, the verifier cannot, from executing the protocol, construct a certificate of the decryption. Nor can the verifier derive any information that would allow it to conduct a similar proof of decryption to anybody else.
A special case of the above protocol is particularly useful, namely
when i=0 and w=w1/w2 for some w1, w2. In this special
case, the prover has proven that
.
By the
homomorphism property mentioned above, the prover has proven that
w1 and w2 correspond to the same plaintext, without revealing
the plaintext itself. Of course, this can also be proven by revealing
directly x such that
,
but as we explained above,
this may be information theoretically insecure.