Как устроено электронное голосование простым языком и в рисунках
В этой статье я хочу рассказать вам, как устроено электронное голосование в Москве, и показать, почему оно абсолютно не защищено от корректировки итогов выборов. Моя задача — не рассказать о том, как конкретно корректировали результаты выборов, а продемонстрировать порочность архитектуры, которая, несмотря на все заявления Департамента информационных технологии (ДИТ) г. Москвы, допускает вмешательство и возможность изменения итоговых результатов электронного голосования.
Но проблема в том, что система достаточно сложна и имеет свои нюансы. Если рассказывать далекому от IT человеку про все тонкости блокчейна и шифрования, то он послушает вас минуту, а потом развернётся и уйдет по своим делам, ничего не поняв. Это одна из главных проблем электронного голосования — 99% избирателей не понимают, как оно работает и где оно может нас обмануть.
Как говорил Стивен Хокинг, любая формула снижает количество читателей вдвое. Мне кажется, что любой IT-термин снижает аудиторию минимум втрое, поэтому я попытался не использовать профильные термины, а объяснил все "на пальцах" и в комиксе! Надеюсь, у меня это получилось.
Если Вы хотите узнать поглубже о проблемах электронного голосования, рекомендую статью Петра Жижина:
Словарь метафор
Сундук — Зашифрованная информация
Замки и ключи — Ключи шифрования
Блокчейн — Витрина
Шаг 1. Формирование списка кандидатов
ДИТ до выборов подготавливает список из кандидатов и каждому из них присваивает уникальный номер. И этот список выкладывают на всеобщее обозрение в витрину, где на него могут посмотреть независимые наблюдатели.
Шаг 2. Формирование ключей и замков
Также до выборов ДИТ формирует часть замка и один из двух ключей. Этот ключ нужен для получения итоговых результатов выборов и до конца голосования он остается у организаторов выборов. Другую часть замка и второй ключ формирует браузер избирателя непосредственно во время голосования.
На самом деле, там чуть сложнее, но суть одна — этот ключ формируется и находится у представителей власти.
В 2022 году ключ разделили на пять частей. Перед подведением итогов голосования его соединяют обратно.
Хранителями пяти частей ключа стали:
• Руководитель Общественного штаба по наблюдению Вадим Ковалев
• Секретарь Мосгоризбиркома Владимир Попов
• Председатель Мосгордумы Алексей Шапошников
• Член ЦИК РФ Антон Лопатин
• Глава городского округа Троицк Владимир Дудочкин.
Почему именно они? Потому что
Шаг 3. Голосование
Избирателю в браузер от ДИТа приходит список кандидатов с их номером и половина замка. Но номера кандидатов не те, что были заявлены публично и лежат в витрине. Они заменены по какому-то внутреннему алгоритму, какому именно — никто не знает, так как открытого кода нигде нет. Видимо, у них внутри есть секретная табличка связей реального номера кандидата и подставного.
После того, как избиратель выберет, за кого он хочет проголосовать, браузер кладет его бюллетень в сундук и запирает его соединенным из двух частей замком. И этот запертый сундук с ключом избирателя отправляется на сервер.
Шаг 4. Секретное шифрование
ДИТ получает этот сундук с ключом и зачем-то вместо того, чтобы сразу положить его на витрину, как это должно быть, он запихивает сундук избирателя и его ключ в свой сундук и вешает на него секретный замок, а ключ от него хранит у себя и никому не показывает. И вот уже этот фальш-сундук ДИТ относит на витрину к наблюдателям вместо настоящего. Получается, что на витрине вроде бы тот же самый сундук, но его не может открыть никто кроме ДИТ даже после конца голосования.
.
Шаг 5. Расшифровка
Итак, голосование заканчивается, надо подводить итоги выборов.
ДИТ берет фальш-сундук из витрины и открывает его секретным ключом, достает из него настоящий сундук и ключ избирателя. Далее он берет свой ключ из пункта 2 и одновременно с ключом избирателя открывает ими двойной замок. И достает из сундука бюллетень с поддельными номерами кандидатов.
Шаг 6. Демонстрация итоговых результатов
Теперь для того, чтобы скрыть подмену, ДИТ меняет номера кандидатов по своей секретной табличке на реальные. Ему ничего не мешает изменить одно число так, чтобы голоса за одного кандидата ушли другому. И уже этот бюллетень с обратно переписанными номерами кандидатов относит на витрину к наблюдателям.
Вывод
Итого: Архитектура электронного голосования не позволяет независимым наблюдателям проверить правдивость результатов голосования. Вся информация о результатах выборов приходит от ДИТ, который никак не ограничен от корректировки итоговых цифр.
Первая проблема: У нас нет открытого кода. Мы не знаем, как он работает на самом деле, все, что вы видите на картинках, получено опытным путем через метод наружного исследования системы электронного голосования.
Вторая проблема: Мы не можем независимо понять, за кого проголосовал избиратель! Технически есть возможность подменить голоса за другого кандидата. Просто в табличке, где есть связка реальных и фальшивых номеров, можно поменять одно число, и голоса уйдут другому кандидату.
Третья проблема: Происходит секретное шифрование тех вещей, которые должны быть доступны для наблюдателей. То есть представьте: Вы приходите на избирательный участок, а Вам на голову надевают черный пакет, чтобы вам ничего не было видно.
Поэтому мы считаем, что чтобы доказать, что ДИТ не подделывал результаты выборов, имея при этом все возможности для этого, должен:
Опубликовать исходный код системы электронного голосования для независимого аудита.
Опубликовать ключ шифрования, которым шифруют транзакцию перед попаданием в блокчейн.
Опубликовать логи системы за время голосования и подсчета результатов.
Опубликовать алгоритм или таблицу связей подставного и реального номеров кандидатов.
Если ДИТ не хочет этого делать, то это говорит только об одном — невозможно исключить вариант непубличной корректировки итоговых результатов голосования, и все заявления о блокчейне и шифровании — лишь пиар-ход.
P.S. Я попытался дать выжимку информации, и некоторые нюансы остались за кадром, если у вас остались вопросы, то смело задавайте их в комментариях — я отвечу на все.
Автор @Peterlos
Техническая консультация @Peter_Zhizhin