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$
1
  • $\begingroup$ I suspect $pk_j$ is a public key, rather than a private key. $\endgroup$
    – D.W.
    Jan 8, 2018 at 16:16

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.