1
$\begingroup$

I am trying to implement a secure elecetronic voting system. Therefore I found the Damgard and Jurik Cryptosystem. In their paper the authors describe a secure protocol for "A Length-Flexible Threshold Cryptosystem with Applications" (PDF).

I am an experienced Java programmer with more than 10 years of professional experience. But my math and number theory is a bit rusty. :-) So I do have some questions about the math details of the paper:

In chapter 5 Damgard and Jurik describe a "Self-Tallying Elections with Perfect Ballot Secrecy". I already have implemented the Voter Registration in the Setup Phase. But I do not quite understand the formular (algorithm) for encrypting a vote. In Chapter 5.1 the paper says:

The voter i publishes the encryptions $$c_{ij} = (G_{ij}, H_{ij}) = E^\pm_{s,pk_j}(s_{ij}, r_{ij})$$ for all $j \in R_0$ along with a proof, that these are indeed legal encryptions and the sum of the plaintexts is $0 \space mod \space n^s$.

In a previous chapter (on page 10) a function $E^\pm_{s}$ is defind as

$$E^\pm_{s}(m,r,b_0,b_1) = \\ ((-1)^{b_0} g^r)\space mod \space n, \space (-1)^{b_1} (h^{4 \Delta^2 r} \space mod \space n)^{n^s} (n+1)^m \space mod \space n^{s+1}) $$

Most of the variables are defined. But not all of them.

My questions

  1. As you can see, the paper doesn't exactly define the function $E^\pm_{s,pk_j}$. It only definces a (similar but not equal) function $E^\pm_{s}(m,r,b_0,b_1)$. => How should I use the private key $p_{ki}$. Which values shall I use for the parameters $b_0,b_1$ ?
  2. What is $G_{ij}$ ? Is that a number or a function?
  3. What is $H_{ij}$ ? Is that a number or a function? What is the variable "h" in the formula for encryption? It is defined nowhere in the paper.

Or on general: Can someone please describe the protocoal (the algorithm) for casting votes in a way, so that it can be implemented in Java? I am not interested in in any mathematical proofs. I'd just like to implement this.

$\endgroup$
  • $\begingroup$ I suspect $pk_j$ is a public key, rather than a private key. $\endgroup$ – D.W. Jan 8 '18 at 16:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.