CPA secure since they do not respect the DDH as-
sumption. On one hand, some implementations do
not employ safe primes, an essential condition to form
subgroups of large prime order in which the DDH as-
sumption holds. On the other hand, other implemen-
tations do not apply message encoding mechanisms or
use Quadratic Residue Generators. As a consequence,
20 out of the 26 analyzed libraries may leak one bit of
information about the original message and therefore,
may endanger the validity of an election. Finally, af-
ter comparing four different message encoding tech-
niques that satisfy the DDH assumption, we conclude
which implementation is most convenient for voting
systems. We focused the current study on manually
analyzing the IND-CPA security of open source code
libraries of ElGamal encryption scheme. However, it
is also possible to check the IND-CPA (in-) security
when source code is not available. In fact, by applying
the technique discussed in the Example 4.2 of Section
4, one can black-box test applications. In particular,
such tests can be applied to ElGamal encryptions ob-
tained by Hardware Security Modules (HSM) (Volka-
mer, 2009; Orr and Liam, 2016), which are used
e.g. in the Estonian I-voting system (Springall et al.,
2014). We leave this as future work.
REFERENCES
Adida, B. (2008). Helios: Web-based open-audit voting. In
USENIX ’08, pages 335–348.
Alves, P. (2015). Public source code of library n.5.
https://github.com/pdroalves.
Babenko, L., Pisarev, I., and Makarevich, O. B. (2017). A
model of a secure electronic voting system based on
blind intermediaries using russian cryptographic algo-
rithms. In SIN ’17, pages 45–50.
Barthe, G., Gr
´
egoire, B., and B
´
eguelin, S. Z. (2009). Formal
certification of code-based cryptographic proofs. In
POPL ’09, pages 90–101.
Belenios (2016). Public source code of library n.1.
https://github.com/glondu/belenios.
Bernstein, D. J., Hamburg, M., Krasnova, A., and Lange, T.
(2013). Elligator: elliptic-curve points indistinguish-
able from uniform random strings. In ACM SIGSAC
’13, pages 967–980.
Botan (2018). Public source code of library n.2.
https://github.com/randombit/botan.
Chevallier-Mames, B., Paillier, P., and Pointcheval, D.
(2006). Encoding-free elgamal encryption without
random oracles. In PKC ’06, pages 91–104.
Cortier, V., Fuchsbauer, G., and Galindo, D. (2015). Be-
leniosrf: A strongly receipt-free electronic voting
scheme. IACR, 2015.
Cortier, V., Galindo, D., K
¨
usters, R., M
¨
uller, J., and
Truderung, T. (2016). Sok: Verifiability notions for
e-voting protocols. In IEEE, SP ’16, pages 779–798.
Cramer, R., Gennaro, R., and Schoenmakers, B. (1997). A
secure and optimally efficient multi-authority election
scheme. In EUROCRYPT ’97, pages 103–118.
Cramer, R. and Shoup, V. (1998). A practical public key
cryptosystem provably secure against adaptive chosen
ciphertext attack. In CRYPTO ’98, pages 13–25.
Diaz, A. (2017). Public source code of library n.4.
https://github.com/vrnvu/elgamal-ap.
Diffie, W. and Hellman, M. E. (1976). New directions in
cryptography. IEEE Trans. Inf. Theory ’76, pages
644–654.
ElGamal, T. (1985). A public key cryptosystem and a sig-
nature scheme based on discrete logarithms. IEEE
Trans. Inf. Theory ’85, pages 469–472.
Elgamir (2016). Public source code of library n.14.
https://github.com/d5c5ceb0/elgamir.
Estonia (2017). Public source code of library n.15.
https://github.com/vvk-ehk/ivxv.
Fadavi, M., Farashahi, R. R., and Sabbaghian, S. (2018).
Injective encodings to binary ordinary elliptic curves.
In SAC ’18, pages 434–449.
Farashahi, R. R. (2014). Hashing into hessian curves. IJACT
’14, pages 139–147.
Faz-Hernandez, A., Scott, S., Sullivan, N., Wahby, R. S.,
and Wood, C. A. (2019). Hashing to Elliptic
Curves. https://datatracker.ietf.org/doc/html/draft-irtf-
cfrg-hash-to-curve-05. Technical report.
Gaudry, P. (2019). Breaking the encryption scheme of the
moscow internet voting system. CoRR ’19.
Goldwasser, S. and Micali, S. (1982). Probabilistic encryp-
tion and how to play mental poker keeping secret all
partial information. In ACM ’82, pages 365–377.
Haines, T., Gor
´
e, R., and Tiwari, M. (2019). Verified ver-
ifiers for verifying elections. In ACM SIGSAC, CCS
’19, pages 685–702.
Helios (2008). Public source code of library n.16.
https://github.com/benadida/helios-server.
Ioannou, O. (2014). Public source code of library n.24.
https://github.com/oorestisime.
Koblitz, N., Menezes, A., and Vanstone, S. A. (2000). The
state of elliptic curve cryptography. Des. Codes Cryp-
togr. ’00, pages 173–193.
Kubjas, I., Pikma, T., and Willemson, J. (2017). Estonian
voting verification mechanism revisited again. IACR,
2017.
Lee, R. (2017). Public source code of library n.7.
https://github.com/rayli-bot/modulus-calculation.
Libgcrypt (2013). Public source code of library n.17.
https://github.com/gpg/libgcrypt.
Lipton, R. J. (1981). How to Cheat at Mental Poker. In
Proceeding of AMS short course on Cryptology ’81.
Microsoft (2019). Public source code of library n.18.
https://github.com/microsoft/electionguard-verifier.
Miller, V. S. (1985). Use of elliptic curves in cryptography.
In CRYPTO ’85, pages 417–426.
Milne, J. S. (2011). Fields and galois theory (v4.22).
Moscow (July, 2019a). Public source code of library n.19.
https://github.com/moscow-technologies.
SECRYPT 2020 - 17th International Conference on Security and Cryptography
320