After hackers break Moscow's prototype Internet voting, city officials stop sharing contest results on GitHub
In late July, Moscow’s Information Technology Department held public intrusion tests on GitHub to check the reliability of a new Internet voting system it’s designed for September’s City Duma elections. During the tests, officials updated the public code daily, proposing new public keys and new encrypted data, while revealing the private keys and original data from the day before. Testers were challenged to decrypt the data, which represented people’s votes, in less than 12 hours (the duration of the elections).
On August 8, French cryptographer Pierrick Gaudry revealed that his team of researchers found that Moscow officials had designed an encryption scheme that was “completely insecure,” stating that it could be broken in “about 20 minutes using a standard personal computer.” Meduza verified that the public keys generated by Moscow’s voting-system decryption were enough to compute its private keys, making it possible to decrypt the data as quickly as they were created. The main problem with the code, Gaudry found, was that the blockchain key sizes were less than 256 bits, which is “way too short to guarantee any security.”
In a letter published through Medium on August 12, Moscow’s Information Technology Department promised to change the private key length to 1024 bits, arguing somewhat incoherently that the shorter implementation was “used only in a trial period.”
Moscow’s Information Technology Department responded to Gaudry’s findings by ceasing to publish the private keys and original data from its previous “issue.” In a new post on August 18, the city mysteriously shared only new encrypted data and public keys, withholding the “answers” to the issue it posted on August 7. In other words, City Hall isn’t releasing the information needed to confirm the unreliability of its voting system, rendering the tests on GitHub largely meaningless.
In the data shared on August 18, Moscow officials also changed the nature of the system’s public key, replacing three 256-bit keys with one 1024-bit key (as promised in their letter on August 12). At the same time, however, the “smart contract” code for using this new key hasn’t been updated, and it’s still designed for the three 256-bit keys.
Meanwhile, representatives of Moscow’s Information Technology Department insist that Pierrick Gaudry didn’t actually break their voting system, and claim that he merely identified a “weak spot.” A working group nevertheless agreed to award the French scholar 1 million rubles ($14,950) for his discovery and for drawing attention to the public intrusion tests.
Photo on front page: Pixabay
Meduza survived 2024 thanks to its readers!
Let’s stick together for 2025.
The world is at a crossroads today, and quality journalism will help shape the decades to come. The real stories must be told at any cost. Please support Meduza by signing up for a recurring donation.