The rise and fall of Internet voting in Norway: Evaluating a complex cryptographic implementation

Presented at 31C3 (2014), Dec. 30, 2014, 11:30 a.m. (60 minutes)

In the parliamentary elections of September 2013, more than 250 000 Norwegians in selected municipalities were able to vote from home. They were taking part in a national trial of Internet voting, building on an advanced cryptographic protocol.

The Norwegian e-vote project started in 2008, and was used for live election trials in 2011 and 2013. By using cutting-edge cryptography and committing to a high degree of openness in all parts of the execution, the project aimed to overcome public concerns about security risks and lack of verifiability.

To promote security, the entire voting system was implemented using a complex and verifiable cryptographic protocol, with no assumed trust between different system functions. To promote openness, the entire election system source code is publicly available, as well as most project documentation. The voting system would published the SHA-256 hashes of encrypted ballots on GitHub every hour, and detailed instructions were provided to voters on how to verify that their vote had been submitted.

In the run-up to the 2013 elections, the author audited the cryptographic Java implementation of the back-end election system, making a number of surprising findings. During the actual elections, a major encryption bug was discovered in the Javascript frontend code, potentially revealing the preferences of a large number of voters.

Most hackers and cryptographers are highly sceptical of Internet voting, due to legitimate security concerns. Even so, insufficient technical security, or even the perception of such, does not appear to be a main reason for why the project was discontinued.

The aim of this talk is twofold. First, we shall look at Norway's Internet voting project in its social and political context, highlighting the reasons why it came to be, and some of the key forces shaping the project throughout. Secondly, we discuss the findings, experiences and lessons learned from attempting to audit a large, public, complex and security-critical code base.


  • Tor E. Bjørstad
    Tor got his first UNIX account at age 4, for consolation after burning his fingers on his father's soldering iron. He works as a cryptographer and security consultant for a security company in Oslo, Norway. 31C3 will be his 6th CCC. Tor got started with security after accidentally implementing a major security hole for a local student festival in 2001. Eventually he worked his way through a degree in mathematics, and later on a Ph.d. in cryptography. He has worked full-time in security since 2006, with everything from theoretical crypto protocols to hands-on penetration testing.


Similar Presentations: