
A week passed after the day of voting, and we already understand in detail how, with a high probability, the results of electronic elections were falsified. I demonstrate below confirmation of falsifications I found and experts of the headquarters of Anastasia Bryukhanova. I led this work and I was responsible for the scientific validity of its results (Ilya of the Remochers, the Chat-Botov programmer, Yaroslav Sobolev, also participated in the work, is a senior researcher at Center for Soft and Living Matter (Korea), as well as three more people who wished to remain unnamed).
We estimate the amount of falsifications at about a quarter of a million.
This assessment is based on the fact that the opposition lost about 280 thousand votes for all of Moscow during a break: about 133 thousand for candidates in single -mandate districts and about 147 thousand for a party list. (Detailed calculations are given below.) Believing that part of the “losses” (for example, 10%) could be benign (the voter corrected his mistake), we consider an assessment of at least 250,000 twisted votes with a reliable approximation.
We made all the conclusions on the basis of statistical analysis and mathematical models: to catch the “physical” attacker by the hand full of virtual ballots in the digital world is almost impossible.
The fact that the “stuffing” took place (adding records, and not their deletion or change), follows from the use of the blockchain.
Blockchain is a sequence of blocks (ballots), each of which contains information about all previously added blocks. It is almost impossible to “pull out” the ballot from the middle of such a digital “pack”. But add new ones - you can.
The authors of this investigation
Author: Maxim Gongalsky , candidate of physical and mathematical sciences, researcher at the Faculty of Physics of Moscow State University, head of the Ramenka municipal district-especially for the "new".With the participation of Ilya Rimshchikov and Yaroslav Sobolev .
Edited by Andrei Zazakin .
How to understand that there was a stuffing of digital ballots? For the first time, this became clear when we saw a temporary voting schedule for different candidates. It turned out to be possible to build such graphs, because each bulletin from a public base contains information not only about the candidate for whom the vote is given, but also about the voting time.
Technical details
Technical details
Data for the schedule was obtained from the public SQL dump, downloaded from the server Observer.mos.ru September 20 at 0.49. Voices in the dump are stored in an encrypted form (some of them are deciphered publicly and also in Dampa), so all the voices were deciphered using a public key from the Observer.mos.ru server. For decryption, Golang.org/x/crypto/nacl/Box was used, in which an encryption algorithm, similar to the one that was used to encrypt votes, was implemented.
The database has several tables: Blocks , Transactions and Decrypted_Ballots .
The Transactions table indicates all incoming transactions, they indicate the data of transactions, including hash, TimeStamp (temporary label) and type, for example, issuing a ballot or a vote. The transactions of voice receiving in the original dam were encrypted. The decrypted_ballots table indicates a hash of the vote transaction that was deciphered, as well as the voice itself for a specific candidate. All decrypted voices were recorded in this table, similar to how it was done for some votes. By connecting hashs from the decrypted_ballots and Transactions tables, you can establish at what point in time the transaction with the voice for a specific candidate was processed. This can, for example, make a request using such a SQL:
Select T.Datetime from Transactions t inner Join Decrypted_Ballots b on t.Hash = B.STORE_TX_HASH WHERE B.Decrypted_choice [1] = 153878280
In this request, all Timestamp transactions are collected, the hash of which corresponds to the hash of the decrypted voice for the candidate with ID 153878280 (this is Mitrokhin). All the voices received for a specific candidate were summed up in a 30-minute interval, and then the percentage of the total number of voting in the interval was calculated. This approach allows you to exclude fluctuations in the turnout associated with both different time of the day and with the features of the server.
The most amazing thing is that we saw an almost complete coincidence of abnormal details not only in all 15 single -mandate districts, but also when voting on party lists, and even on the benefits of the Moscow City Duma.
Therefore, for example, we give the 208th single-mandate district-the Central Bank of Moscow , however, all features and conclusions can be transferred to any other Moscow district and party vote in Moscow. This district is considered the most opposition, and its voters are the most wealthy and prosperous in Moscow: voting for United Russia is traditionally low here. In this district, among others, they were nominated:
ex-chairman of the Yabloko party Sergey Mitrokhin,
famous journalist Maxim Shevchenko,
from the Communist Party - Nina Ostanina,
From “Fair Russia” - Magomet Yandiev.
Sergei Sobyanin (that is, de facto party "United Russia") supported the self-nominated Oleg Leonov.
Let's look at the temporary schedule of voting results for the most popular candidates in the 208th district. Voices in 30-minute intervals were summed up and then for each interval a percentage of voter voted for each candidate was calculated. Since at night the voters were few, the error became too high, and these areas were excluded from analysis and marked with gray.
The percentage of voting for a particular candidate, if it changed over time on Friday or Saturday, is slowly. This meets our ideas about reality: no research has been revealed by the correlation, the “lark” you or the “owl” depending on your political views.
From nowhere it follows that the “opposition” loves to sleep more than supporters of the ruling party. Only on Friday, it seems, there are some traces of a possible morning vote of the controlled electorate.
But the Sunday anomaly immediately catches your eye: suddenly on Sunday morning, Leonov’s pro -government candidate votes a one and a half times more voters per unit of time than usual.
Further, at about 14.30, the voting intensity falls to the usual value also sharply.
But the most amazing thing is that this anomaly (shown in red) with exactly the same characteristics was observed simultaneously in all 15 single -mandate districts, in voting for the party and even in the districts in the elections to the Moscow City Duma!
Moreover, it turned out that
From 12.20 to 13.00 there is a temporary decline in the level of support for the ruling batch to about the middle Friday-Subtarny values (shown by a black vertical dashed line)-and it is also repeated in all districts!
In nothing other than organized interference in the database (in the form of adding new lines), we do not manage to explain these anomalies. There is no information that supporters of the ruling party in all 15 districts, for example, conspired: first - all together to vote from eight to half the first, then - just as synchronously, throughout Moscow, to stop voting, and then vote energetically for an hour. Living people acting independently from each other do not behave like that. Living people who force something to do together in an organized manner, usually leave a mark in the visible world-correspondence, chats with curators, buses on which they are taken to a computer of bosses. Nothing of the kind we observed.
The profiles of the anomalies are very sharp: in 5-10 minutes, the level of support of the party in power grows by 50% (we saw this when we did the sorting through 5-minute intervals instead of 30 minute; to increase statistics, the average percentage of all districts was taken, that is, the ratio of the amount of votes for all pro-government candidates in this interval to the sum of all votes).
It follows that the stuffing clearly is programmatic. It is impossible to get from several hundred thousand people dispersed throughout Moscow up to five minutes of execution of the order-“to start doing something suddenly, and to stop just as suddenly”-it is impossible.
The graph shows how robots take a break from 12.20 to 13.00 (shown green) and then resume their work for another one and a half hours.
We asked the head of the Department for Improving the Territorial Administration and the Development of Smart Projects of the Moscow Government Artem Kostyrko, who led the group of electronic voting developers, give explanations as part of the work group for the audit of remote electronic voting under the leadership of the co-chairman of the Voice movement (recognized as an “ino-agent”) Grigory Melchonyanz.
We asked Artem Kostruko the question: can these jumps be explained by malfunctions in the operation of the system? He did not see anything anomalous in sharp jumps and explained them with planned SMS newsletters of the Moscow City Hall. When asked why the percentage of candidates from United Russia increases exclusively, and voters of other candidates do not respond to the call to vote,
He replied that "the pro -government electorate was experiencing a burning desire to vote in response to the newsletter."
Here you need to talk about one election feature in Moscow. In order to protect voters from administrative pressure, the “STATE” function was introduced in Moscow. If a person, for example, votes for a pro -government candidate under duress, then secretly from everyone he can blocked for the candidate that he actually supports. Only the last voice will be counted.
In theory, in order to understand what an earlier voice should “burn” during the vote, an earlier and later voice should have a certain mark that allows them to be identified. If it is not, then these voices cannot be identified. And it is not clear which voice should burn. We do not know where such a label is in the public blockchain record. At the moment, the most realistic is the assumption that
In addition to a public blockchain, there is also a “secret” blockchain, not controlled by the election commission, and Moscow, which was controlled only by the Moscow Information Technology (DIT) Department. And what to install, which voice burns out, you can only tagged in this blockchain.
Dit of Moscow did not reveal many legal and technical details DEG and did not present the public “secret” blockchain. Therefore, the election commission and we, in our analysis of the "burned" ballots rely solely on verbal assurances of the child.
The procedure for separating the “first” votes (that is, the recent) from the “latter” - is completely closed from the public and is made by Moscow, that is, not even by the election commission, as explained in the investigation of Peter Zhizhin (see, for example, the material of Yulia Latynina in Novaya Gazeta ). Recall that precisely during the processing of a public base, the UIK DEG members, when the “dispersed” ballots were detected, access to any information was blocked .
We began to analyze the “percentages of the distillation” (that is, the ratio of “burned” ballots, which were subsequently shedded, to the total number of all received ballots for the candidate). How to get the number of “burned” if they are not in the blockchain? We took the official results of the elections from the protocols (which were not confirmed by anything other than oral assurances) and deducted the number of votes from them, which we learned from the public dump with Observer.mos.ru. According to Artyom Kostyko, this difference is exactly equal to the number of “burned” voices of the candidate due to a parting (which could be for the same or for other candidates-this is not important for our analysis).
So, in fact, with the statistics of the crossings, everything turned out to be exactly a set, if compared with the original idea:
Voters of pro -government candidates canceled their decision less often (!!!) than opposition.
For example, an illustration for the 208th district.
Further, we found that the interest of “burned” votes are almost the same for all opposition candidates (10 - 13%), although Sergey Mitrokhin and Maxim Shevchenko, Nina Ostanina and Magomet Yandiev were completely different campaigns and focused on a different electorate. And Oleg Leonov had only been not 7%. This could be attributed to an accident, but the same situation occurred in all 15 districts of Moscow, as shown on the schedule below!
Well, for sure - "the victim fell chest on the knife and so 15 times."
But in the "Sobyanin list" there were different people as TV presenter Evgeny Popov, actor Dmitry Pevtsov, expert on Anatoly Wasserman, etc., and everyone had a percentage of the one at a narrow range of 7 - 9%. How did it turn out that their electorate is the same in their “mistakes” and “disappointments” (which would be a legitimate reason for senction)?
We managed to explain the paradox only by suggesting that we had falsification. Where exactly the attacker has access to the attacker (so far) we do not know. Suppose the task is to increase the percentage of a pro -government candidate, but there is no access to the content of the ballots themselves. It is impossible to replace the ballots: all of them are encrypted and deciphered only after the end of the vote. What ballots will we get sway? It is incomprehensible.
But you can check for random people in favor of a pro -government candidate.
Look at the scheme: for simplicity, 10 candidates with 10 votes are shown.
If the settlement is 10% of real voters acting independently of each other, and made random mistakes in their choice, then new votes go on average to all candidates; The share of voters who chose this candidate initially, but then changed their decision, remains equal to 10%.
But if there is a stuffing through a break in, then one of the candidates at the end of the vote will have not 10, but 19 votes.
Due to this, it turns out that the percentage of those who initially voted for this candidate, but “burned” their ballot (so that later they will give their vote to the same person), will decrease to 5%.
Apparently, this could happen in the Moscow elections this year. About 130 thousand votes could be “twisted”: about 8 - 10 thousand votes in each district. That is how much it is necessary to add to pro -government candidates so that the percentage of the bloches decreases from 11% to 7% exclusively by adding votes.
However, after we came up with this beautiful theory - how to shift the voices “blindly” - the public headquarters to observe the elections and Artem Kostyko presented graphs that showed that everything is much worse.

Мы снова приводим график для 208-го округа как пример и подчеркиваем, что такая же картина наблюдалась во всех округах, как и в голосовании по спискам (роль административных кандидатов там играет «Единая Россия»). Из графиков видно, что «жгучее желание провластного электората проголосовать в ответ на рассылку» (воскресенье) есть не что иное, как переголосование под видом избирателей, отдавших свой голос Сергею Митрохину (как и всем другим оппозиционным кандидатам во всех округах).
И так получилось, что половина (!!!) субботних вечерних избирателей Митрохина решила отказаться от своего выбора в пользу Леонова. А вот субботние вечерние избиратели Леонова переголосовали только в 7% случаев. И это уже несовместимо с моделью «слепого» переголосования.
Почему несовместимо? Потому что в случае «слепого» мы оценивали отношение: сгоревшие бюллетени за кандидата ко всем бюллетеням за кандидата в дампе. Поэтому при «слепом» перекидывании в пользу власти 10% бюллетеней от всех кандидатов, у кандидата от власти получалась доля 5% сгоревших в дампе, а у оппозиции — по 11%.
Однако с появлением графиков от Костырко мы смогли посмотреть на временную динамику отъема голосов, а не только на усредненные значения по всему периоду. И увидеть, что
в определенные периоды времени у оппозиции голоса «горят» просто мешками и вагонами, а у провластных кандидатов — не так.
Голоса за Митрохина были отданы в период с 16.00 в субботу до 12.00 в воскресенье. А скрутка этих голосов происходила с 08.00 до 15.00 в воскресенье. Переголосование половины голосов за оппозицию, и при этом практически непереголосование за власть — уже невозможно объяснить с помощью «слепой» модели.
Навряд ли можно вообразить ситуацию, что половина оппозиционных избирателей, проголосовавшая субботним вечером и ночью, наутро внезапно разочаровалась в оппозиции и переголосовала за «Единую Россию». Причем те, кто голосовал до 6 вечера, такого разочарования избежали!
Пока Костырко не передал нам свои графики у нас были только сведения ЗА КОГО было голосование, причем «первое» («сгоревшее») и «последнее» (учтенное голосование) лежали в одной куче. И у нас были суммарные цифры «потерь» оппозиции от переголосования. И мы предложили схему (см. предыдущий раздел), как можно было бы организовать такие результаты «вслепую», так, чтобы отнимать у всех, а отдавать единороссу.
Но Костырко своими графиками подтвердил, что отнимали именно у оппозиции.
Это подтверждает, что злоумышленники могли точно знать, кто и как проголосовал на момент вброса. Если бы переголосования происходили «вслепую», как мы предполагали в предыдущей гипотезе, тогда затрагивали бы и провластных кандидатов пропорционально их реальным процентам. Даже если это были переголосования с Леонова на Леонова, на графике, изображенном на рисунке 5 все равно был бы виден пик для Леонова, аналогичный Митрохину. Например, видно, что в пятницу переголосований у Леонова примерно в полтора раза больше, чем у Митрохина. Однако его нет, следовательно, кто-то до окончания голосования мог иметь ключ для расшифровки, анализировал результаты голосования в режиме реального времени и управлял скоростью фальшивого переголосования.
Это означает, что истории про «технические сложности» с расшифровкой результатов, скорее всего, неверны: «кому надо» результаты были известны уже в субботу вечером.
Такой серьезный уровень доступа злоумышленников в систему означает, что никакие акты переголосования не вызывают доверия.
Мы можем выдвинуть гипотезу, что изначально был разработан алгоритм, который эмулировал переголосования в размере 10% от всех проголосовавших. Новые голоса уходили, вероятно, кандидатам от «Единой России» из списка Собянина. Чтобы не возникло подозрений, голоса, отданные за «Единую Россию», переголосовывались тоже: ведь изначально эта опция позиционировалась как полезная для «бюджетников», которые «голосуют под присмотром начальства». Однако в субботу вечером оказалось, что даже заложенных 10% может не хватить для триумфальной победы «списка Собянина». И процент решили увеличить до 50%.
Разумеется, среди переголосований с оппозиции на власть в очень небольшом проценте случаев могли были быть и те, которые были обусловлены ошибками: голосовал за Фому, а галку поставил за Ерему. Процент таких ошибок вряд ли превышает 1 – 2% и в первом приближении не играет роли. Тем более такие ошибки как раз имели бы характер равномерного распределения по всем кандидатам в пользу всех кандидатов, чего не наблюдается. Мы решили оценить такие «доброкачественные переголосования» с запасом. И считать, что 10% всех сгоревших голосов оппозиции обусловлены добросовестными ошибками избирателей. У оппозиции сгорело 280 тысяч голосов: 133 тысячи — по одномандатникам и 147 тысяч — по федеральному списку.
С учетом «доброкачественных ошибок» и округляя в сторону уменьшения, мы оцениваем количество скрученных у оппозиции и накрученных власти голосов в четверть миллиона.
From the editorial office
22 сентября на встрече Общественного штаба по наблюдению за выборами мы предложили Артему Костырко ответить на вопросы «Новой газеты», но с тех пор от него не было реакции. Мы направили наши запросы Артему Костырко в связи с предыдущими публикациями «Новой газеты» и подготовкой этого расследования. Когда ответы поступят, мы их обязательно опубликуем.