next up previous contents
Next: 3.3 Real Networks Up: 3. Hierarchical elections Previous: 3.1 Public district tallies

3.2 Private district tallies

A more interesting requirement for a hierarchical election scheme is that the district tallies remain secret. To satisfy this requirement, we first modify Protocol 7 to produce encrypted masked shares of the district tally, rather than unencrypted masked shares. This can be achieved by encrypting the votes sent from the voter to the authorities.

In this scheme, to submit a secret vote $s\in\{0,1\}$ for which the voter has chosen the shares $\ensuremath{\mathrm{share}} _j(s)$ with Shamir secret sharing, the voter no longer sends $\ensuremath{\mathrm{share}} _j(s)
+ x_j$ publicly to authority tj (where xj is the private masking value transmitted by authority tj to the voter), as in Protocol 7. Instead, the voter sends an encryption $ a_j(s) \in E_j(\ensuremath{\mathrm{share}} _j(s) +
x_j) $, which can be decrypted only by tj. As we will see below, this ensures that district tallies remain secret. Note that the encryption parameters used by voters to encrypt the votes are different from the parameters used by authorities to publicly commit to the masking values; if the same set of parameters were used, uncoercibility would be lost. We detail the modifications below.

Protocol 8 (District Election Scheme)    The notation is same as that in Protocol 7, except we use Ej in addition to E*j to denote the encryption function using the parameters (nj,yj) posted by authority tj. The global r value is common between the two sets of parameters (and across all authorities, as usual).
1.
Authorities each construct and prove the validity of encryption parameters (nj,yj) and (n*j,y*j), using one of the previously described protocols.
2.
For each voter, each authority tj randomly selects a masking value xj and other values c1, ..., ck1. The plaintext values xj, c1, ..., ck1 are transmitted privately to the voter in the voting booth, while the encrypted values $z^*_j\in E^*_j(x_j)$, $s_1\in E^*_j(c_1)$, ..., $s_{k_1}\in E^*_j(c_{k_1})$ are publicly broadcast. Just as in step 3 of Protocol 7, the authority interactively proves that the plaintext values actually correspond to the encrypted values.
3.
Each voter now creates k2+1 ballots, B0, B1, ..., Bk2, each comprised of a 0-vote and a 1-vote. Again, note that each vote now consists of T shares which are encrypted (using Ej) and masked. Each voter publicly distributes to each authority its encrypted masked share of both halves of the ballot, each component masked using different masking values. There are T(k2+1) masking values involved in total for each voter; denote the masking value for ballot Bi and authority tj as xij, an encryption $z^*_{ij} \in
E^*_j(x_{ij})$ of which is publicly released ( $0\le i\le k_2$, $1\le j\le T$). With the use of k2 beacon bits, the following interactive proof is then executed for each ballot B1, ..., Bk2, which will show with high probability that B0 is a valid ballot:
  • If the ith beacon bit is 0, each authority tj decrypts its masking value xij, and the voter decrypts the encrypted masked share that it previously sent to each authority. The authorities certify their decryption of the masking values using a certificate with respect to E*j; the voter certify its decryption of the ballot shares using a certificate with respect to Ej. Everyone can then subtract xij from the decrypted masked shares to obtain unmasked shares, and reconstruct the secret vote pair to verify that one vote is 0 and the other is 1.
  • If the ith beacon bit is 1, the voter shows that the two halves of B0 correspond to the two halves of Bi by instructing the authorities as to which half of one corresponds to which half of the other. For each pair of votes

    \begin{eqnarray*}\bigl(a_1(s), a_2(s), \ldots, a_T(s)) &\mbox{in}& B_0, \\
\bigl(a_1(s'), a_2(s'), \ldots, a_T(s')) &\mbox{in}& B_i
\end{eqnarray*}


    (where

    \begin{eqnarray*}&a_j(s) \in E_j\bigl(\ensuremath{\mathrm{share}} _j(s)+x_{0j}\b...
...)\in E_j\bigl(\ensuremath{\mathrm{share}} _j(s')+x_{ij}\bigr),&
\end{eqnarray*}


    for each j) which the voter claims to be of the same type (i.e., s=s'), each authority tj reveals x0j-xij and certifies that $z^*_{0j}/z^*_{ij} \in E^*_j(x_{0j}-x_{ij})$, without revealing x0j or xij. The voter, on the other hand, reveals

    \begin{displaymath}\bigl( \ensuremath{\mathrm{share}} _j(s) + x_{0j} \bigr)
- \bigl( \ensuremath{\mathrm{share}} _j(s') + x_{ij} \bigr)
\end{displaymath} (3.1)

    and certifies that

    \begin{displaymath}\frac{ a_j(s) }{ a_j(s') }
\in E_j\bigl(
\bigl( \ensuremath...
...l( \ensuremath{\mathrm{share}} _j(s') + x_{ij} \bigr) \bigr),
\end{displaymath} (3.2)

    without revealing $\ensuremath{\mathrm{share}} _j(s) + x_{0j}$ or $\ensuremath{\mathrm{share}} _j(s')
+ x_{ij}$. Everybody can then compute
    $\displaystyle {
\bigl( \ensuremath{\mathrm{share}} _j(s) + x_{0j} \bigr)
- \big...
...remath{\mathrm{share}} _j(s') + x_{ij} \bigr)
- \bigl( x_{0j} - x_{ij} \bigr) }$
        $\displaystyle = \ensuremath{\mathrm{share}} _j(s) - \ensuremath{\mathrm{share}} _j(s') = \ensuremath{\mathrm{share}} _j(s-s')$ (3.3)

    for each j, thereby reconstructing s-s', which should be zero (mod r).
4.
Each voter selects half of B0 and submits it as its actual vote. To vote $s\in\{0,1\}$, the voter selects the half

\begin{displaymath}\left( a_1(s), a_2(s), \ldots, a_T(s) \right)
\end{displaymath} (3.4)

from B0.
5.
Everybody can now calculate the products over all voters

\begin{displaymath}\left(\prod a_1(s), \prod a_2(s), \ldots, \prod a_T(s) \right).
\end{displaymath} (3.5)

Everybody can also calculate the products over all voters

\begin{displaymath}\left(\prod z^*_{01}, \prod z^*_{02}, \ldots, \prod z^*_{0T} \right)
\end{displaymath} (3.6)

in which

\begin{displaymath}\prod z^*_{0j} \in E^*_j\left(\sum x_{0j}\right)
\end{displaymath} (3.7)

for each j. Each authority tj now decrypts $\prod z^*_{0j}$, revealing $\sum x_{0j}$ and certifying that $\prod z^*_{0j} \in E^*_j
(\sum x_{0j})$. Each authority (or somebody other random entity) then encrypts and certifies $\sum x_{0j}$ into $z_{0j} \in E_j(\sum x_{0j})$ (note the transition between encryption parameters, from E*j to Ej, at this stage). Because for all voters

\begin{displaymath}a_j(s) \in E_j\bigl(\ensuremath{\mathrm{share}} _j(s)+x_{0j}\bigr)
\end{displaymath} (3.8)

and the homomorphism properties of Ej and $\ensuremath{\mathrm{share}} $, we have

\begin{displaymath}\prod a_j(s) \in E_j\left( \ensuremath{\mathrm{share}} _j(Y) + \sum x_{0j} \right)
\end{displaymath} (3.9)

for each j, where Y is the correct tally. Hence, again by the homomorphism property of Ej, everybody can calculate

\begin{displaymath}Z_j = \frac{\prod a_j(s)}{\prod z_{0j}}
\in E_j\left( \ensuremath{\mathrm{share}} _j(Y) \right).
\end{displaymath} (3.10)

6.
  The general public now knows with high probability the encrypted but unmasked shares

\begin{displaymath}\bigl( Z_1, Z_2, \ldots, Z_T \bigr)
\end{displaymath} (3.11)

of Y. If we wish to know the actual tally Y, we can simply ask each authority tj to decrypt (by exhaustive search) $\ensuremath{\mathrm{share}} _j(Y)$ and execute Protocol 4 to prove the correctness of the decryption. Everybody then knows the unencrypted, unmasked shares

\begin{displaymath}\bigl( \ensuremath{\mathrm{share}} _1(Y), \ensuremath{\mathrm...
...re}} _2(Y), \ldots, \ensuremath{\mathrm{share}} _T(Y) \bigr),
\end{displaymath} (3.12)

from which everybody can reconstruct the tally Y. However, for use as a sub-protocol in the hierarchical election protocol below, this step must not be executed. The privacy of the district tally is preserved in the same way in which the privacy of each individual voter's vote is preserved, namely Shamir secret sharing (or any other secret sharing scheme that is plugged in).$\Box$

Based on Protocol 8 for running each district election, we can then run a hierarchical election using the following protocol.

Protocol 9 (Hierarchical Election Scheme)    Denote the intermediate authorities in the election by t1, ..., and the global authorities by t'1, ..., t'U. Denote by Y1, ..., YD the district tallies, and $Y=\sum_{d=1}^D Y_d$the global tally. We use Ei to denote the encryption function using the parameters (nj,yj) posted by intermediate authority ti, and the global r value. We use E'i to denote the encryption function using the parameters (n'j,y'j) posted by global authority t'i, and the global r value. Note that, unlike with public district tallies, r here must be chosen to be larger than the total number of voters in the global election.

1.
For each district, run a district sub-election using Protocol 8. However, stop before step 6. At this point, each authority tj has a secret share $\ensuremath{\mathrm{share}} _j(Y_d)$ of the district tally Yd, and encryptions

\begin{displaymath}Z_j \in E_j\bigl(\ensuremath{\mathrm{share}} _j(Y_d)\bigr)
\end{displaymath} (3.13)

are publicly known. (Here d denotes the district to which tj belongs.)

2.
  Global authorities each construct and prove the validity of encryption parameters (n'j,y'j), using one of the previously described protocols.

3.
Each intermediate authority tj privately creates shares $\ensuremath{\mathrm{share}} '_i(\ensuremath{\mathrm{share}} _j(Y_d))$ for i=1, ..., U using a secret sharing scheme, and (publicly) sends

\begin{displaymath}A_{ij} \in E'_i\bigl(\ensuremath{\mathrm{share}} '_i(\ensuremath{\mathrm{share}} _j(Y_d))\bigr)
\end{displaymath} (3.14)

to the global authority t'i.

4.
Each tj also privately picks K random numbers c1, c2, ..., ck3 and releases encryptions $C_k \in
E_j(c_k)$ for k=1, 2, ..., K. For each k, tj privately creates shares $\ensuremath{\mathrm{share}} '_i(c_k)$ for i=1, ..., U using a secret sharing scheme, and (publicly) sends

\begin{displaymath}B_{ijk} \in E'_i\bigl(\ensuremath{\mathrm{share}} '_i(c_k)\bigr)
\end{displaymath} (3.15)

to the global authority t'i. In order for tj to prove that the encrypted shares Aij are distributed properly (as opposed to just being random numbers), the beacon now generates K random bits. For each k=1, 2, ..., K, one of the following is performed:
  • If the kth beacon bit is 0, tj reveals ck and certifies that

    \begin{displaymath}C_k \in E_j(c_k).
\end{displaymath} (3.16)

    It also reveals

    \begin{displaymath}\ensuremath{\mathrm{share}} '_i(c_k)
\end{displaymath} (3.17)

    for all i, certifying that

    \begin{displaymath}B_{ijk} \in E'_i\bigl(\ensuremath{\mathrm{share}} '_i(c_k)\bigr).
\end{displaymath} (3.18)

    Everybody can then verify that $\ensuremath{\mathrm{share}} '_i(c_k)$ are indeed properly constructed shares for ck.
  • If the kth beacon bit is 1, tj reveals $c_k -
\ensuremath{\mathrm{share}} _j(Y_d)$ and certifies that

    \begin{displaymath}C_k/Z_j \in E_j(c_k - \ensuremath{\mathrm{share}} _j(Y_d).
\end{displaymath} (3.19)

    It also reveals

    \begin{displaymath}\ensuremath{\mathrm{share}} '_i(c_k) - \ensuremath{\mathrm{sh...
...mathrm{share}} '_i(c_k - \ensuremath{\mathrm{share}} _j(Y_d))
\end{displaymath} (3.20)

    for all i, certifying that

    \begin{displaymath}\frac{B_{ijk}}{A_{ij}} \in E'_i\bigl(
\ensuremath{\mathrm{sh...
...ath{\mathrm{share}} '_i(\ensuremath{\mathrm{share}} _j(Y_d)).
\end{displaymath} (3.21)

    Everybody can then verify that $\ensuremath{\mathrm{share}} '_i(c_k -
\ensuremath{\mathrm{share}} _j(Y_d))$ are indeed properly constructed shares for $c_k -
\ensuremath{\mathrm{share}} _j(Y_d)$.

5.
The global authorities now need to secretly compute $Y=\sum_{d=1}^D Y_d$. Before doing so, it must secretly reconstruct Yd for each district d. Denote the ``reconstruction function'' for reconstructing shared secrets as R[list of intermediate authorities]. More precisely, let $R[j_1,j_2,\ldots,j_l]$ denote the unique function such that for any shared secret x among the intermediate authorities tj1, tj2, ..., tjl, the secret can be reconstructed with the identity

\begin{displaymath}R[j_1,j_2,\ldots,j_l] \bigl(
\ensuremath{\mathrm{share}} _{j...
...), \ldots,
\ensuremath{\mathrm{share}} _{j_l}(x) \bigr) = x.
\end{displaymath} (3.22)

Here l is the exact minimum number of intermediate authorities that are required to collaborate in order to reveal the shared secret (i.e., the number k chosen in Protocol 1). The key here is that, for any given set of authorities $j_1,j_2,\ldots,j_l$, the function $R[j_1,j_2,\ldots,j_l]$ is linear with respect to the l-vector of shares

\begin{displaymath}\bigl( \ensuremath{\mathrm{share}} _{j_1}(x),
\ensuremath{\m...
...2}(x), \ldots,
\ensuremath{\mathrm{share}} _{j_l}(x) \bigr).
\end{displaymath} (3.23)

Since each share of Yd is available as a shared secret among the global authorities (the shares are simply Aij for each global authority t'i and each intermediate authority tj in district d), Yd itself can be computed as a shared secret among the global authorities. Moreover, because addition and public-scalar multiplication of shared secrets correspond homomorphically to multiplication and raising to public power of the encryptions of shared secrets, respectively, the computation of Yd can be done by manipulating the publicly known encrypted shares Aij. In this way, everybody (not just the global authorities) is able to calculate, for each global authority t'i and each district d, the encrypted share

\begin{displaymath}Z'_{id} \in E'_i\bigl(\ensuremath{\mathrm{share}} '_i(Y_d)\bigr).
\end{displaymath} (3.24)

This accomplishes the goal of passing the shared secrets Yd from the district authorities to the global authorities. If the secret sharing parameters are chosen so that more than one reconstruction of Yd for the same district d are available (i.e., if k < n in Protocol 1 at the district level), the multiple reconstructions can be checked against each other for robustness by computing the differences between pairs of reconstructions (i.e., quotients of the encrypted shares), again as shared secrets, then decrypting and comparing with zero.

6.
Everybody is now able to calculate

\begin{displaymath}Z'_i = \prod_d Z'_{id} \in E'_i\bigl(\ensuremath{\mathrm{share}} '_i(Y)\bigr).
\end{displaymath} (3.25)

7.
  Each global authority t'i now decrypts Z'i into $\ensuremath{\mathrm{share}} '_i(Y)$ and executes Protocol 4 to prove the decryption. Everybody can then reconstruct Y from the global shares.$\Box$

While Protocol 9 describes a hierarchical election with only one level of indirection, i.e., only one intermediate layer, it easily generalizes to multi-level hierarchical elections, i.e., elections in which there are more than one level of intermediate authorities. More specifically, such an election would start at the level of actual voters, and steps 2 through 7 of Protocol 9 would be used to verifiably and securely propagate each sub-tally up a level to higher authorities. The difference is that, in all but the highest level of the hierarchy, step 7 is not executed. This keeps all sub-tallies in intermediate layers secret. Only at the final, global level are the shares decrypted and used to reconstruct the global tally.


next up previous contents
Next: 3.3 Real Networks Up: 3. Hierarchical elections Previous: 3.1 Public district tallies
Ken Shan (ken@digitas.harvard.edu), 1998-05-15