Research by: Alesya Sokolova, Peter Zhizhin, Kseniia Zhizhina
This research was presented at the E-Vote-ID International Conference in Tarragona, Spain, 2024
Introduction
In the Moscow City Duma elections 2024, for the first time, voters had to apply in advance to cast a paper ballot. This year, 95% of voters in Moscow used remote electronic voting (REV). REV has been conducted in Russia since 2019, in elections ranging from local to presidential. However, until now, REV has only been an option, with in-person voting at polling stations remaining the default method.
Russian courts have never ruled against the use of REV or annulled its results, despite numerous reports of violations [1,2] that had likely influenced election outcomes. Under the full control of the Russian state apparatus, the REV system complements traditional tools of fraud [3], such as ballot stuffing and protocol tampering. Proving electronic violations is much more difficult. Despite the lack of direct evidence, we see anomalies in the election data and can speculate about how these anomalies occurred.
For example, investigations [4,5] into the 2021 State Duma elections revealed that Moscow's remote electronic voting system was manipulated through a re-voting mechanism (which was deprecated afterwards). In 2022 new technical changes were introduced to Moscow's remote electronic voting system, allowing for vote tampering. Different candidates were assigned different identifiers for each voter [6], which were later likely matched with an unpublished internal mapping table. This table could be altered after vote decryption to manipulate results. This form of tampering probably caused anomalies in the 2022 [7,8] and 2024 elections [9].
This paper aims to provide evidence and analysis of how candidate identifier substitution was used to manipulate results in Moscow's e-voting system.
Overview of Moscow’s E-voting System
Russia uses two independent e-voting systems: the Moscow system and the federal system. The Moscow system was developed by the Moscow Department of Information Technology (DIT). Until 2021, the operators of the Moscow e-voting systems partially published their source codes [10]. Based on this code, observers were able to conclude about the structure of the system.
During an election, the vote being recorded into the system contains the identifier of the candidate. The list of candidates and their corresponding identifiers could be observed on the REV website [6]: they are not displayed in the browser interface but can be accessed through the developer tools.
When a user casts their vote, the browser sends a request to obtain the candidate IDs for the ballot. In response, it receives a JSON mapping the candidate's full name to the deputyID. During the voting process, the array of deputyIDs selected by the voter is then encrypted and sent to the server.
One would expect that the candidates' identifiers should not differ for different voters. Before municipal elections in 2022 in Moscow, these candidate IDs always matched the unique ones recorded in the blockchain at the time the vote was created. However, since 2022, we have determined that every voter has had different identifiers for the same candidates.