Вбросы или особенности блокчейна? Разбор главных вопросов к электронному голосованию в Москве
Дистанционное электронное голосование (ДЭГ) стало одним из самых спорных эпизодов прошедших выборов в Думу. Техническая группа Общественного штаба по наблюдению за выборами в Москве после первого аудита не нашла доказательств подделки результатов: эксперты сослались на недостаток данных для анализа. Коммунисты в знак протеста заявили о прекращении сотрудничества с Общественным штабом. RTVi подробно изучил, как устроена столичная система ДЭГ, почему к ней возникли претензии у оппозиции, как на них ответили в мэрии и общественные аудиторы.
Дистанционное электронное голосование (ДЭГ) стало одним из самых спорных эпизодов прошедших выборов в Думу. Техническая группа Общественного штаба по наблюдению за выборами в Москве после первого аудита не нашла доказательств подделки результатов: эксперты сослались на недостаток данных для анализа. Коммунисты в знак протеста заявили о прекращении сотрудничества с Общественным штабом.
RTVi подробно изучил, как устроена столичная система ДЭГ, почему к ней возникли претензии у оппозиции, как на них ответили в мэрии и общественные аудиторы.
Как устроено электронное голосование
ДЭГ ввели в Москве и еще шести регионах. На столичной платформе можно было переголосовать
Электронное голосование в России на выборах 17-19 сентября 2021 года прошло в семи регионах на двух программных платформах.
В Москве - на технологии Департамента информационных технологий (ДИТ) Москвы и «Лаборатории Касперского».
В остальных регионах использовалась платформа от Ростелекома (это Курская, Мурманская, Нижегородская, Ростовская, Ярославская области и Севастополь).
В платформе Ростелекома формировался блокчейн (цепочка блоков информации). Каждая запись в цепочке включала в себя фрагмент предыдущей для защиты от подмены фрагментов. Но блокчейн Ростелекома непубличный, проверить его целостность невозможно.
Основное отличие московского подхода в возможности переголосования (от 3 часов до суток после первого голосования). Для связи между бюллетенями одного пользователя создали два блокчейна.
Перед началом голосования ключ шифрования блокчейна разделили на 7 частей.
В ДИТ заявили RTVI, что не существует никакого «мастер-ключа», которым можно тайно расшифровать блокчейн:
«Мастер-ключа» не существует. К публичному ключу существует единственный приватный ключ, который был разделен на 7 частей и передан хранителям ключа. После окончания голосования все части ключа были соединены, и ключ опубликован в открытом доступе. Расшифровать транзакции можно только по этой единственной паре ключей».
В Москве жаловались на принуждение бюджетников к ДЭГ. Из-за повышенной явки в столице появились «циклопические» УИКи
Согласно итоговым протоколам ЦИК, в ДЭГ участовалили 1,897 млн москвичей (общая явка в столице 3,79 млн).
Для сравнения, в Курской области из 380 тыс. избирателей только 62 тыс. зарегистрировались на ЭГ, в Нижегородской - 126 тыс. из 1,8 млн.
Столичные власти и административные кандидаты усиленно агитировали избирателей голосовать электронно. СМИ сообщали о том, как бюджетников заставляли регистрироваться на электронное голосование.
Электронные избиратели на выборах в Госдуму в Москве приписали 15 УИК (по одному на избирательный округ.) Участки с номерами от 5001 до 5015 курировала одна территориальная комиссия (ТИК ДЭГ) в ЦИК.
В итоге в Москве появились циклопические участки для голосования (по 120 тыс. человек), которые не привязаны к конкретным территориям или учреждениям.
Голосование на электронных УИК трудно сравнивать с офлайном. В онлайне нет данных о распределении избирателей по территории, а в офлайне - почасовых данных о явке с результатом.
Данные об электронных избирателях должны были до 13 сентября записаться на электронное голосование через Госуслуги или mos.ru. Они передавались на офлайновые участки по месту прописки. Там члены участковых комиссий вручную удаляли таких избирателей из списков для защиты от двойного голосования.
В дни голосования десятки пользователей не могли проголосовать онлайн. Глава Общественного штаба по наблюдению за выборами Алексей Венедиктов объяснил это большим наплывом желающих. ДИТ Москвы не сообщал о сбоях.
Итоги ДЭГ перевернули результаты выборов в столице, после чего многие кандидаты и штабы завалили ЦИК жалобами на манипуляции электронными голосами.
В результате Общественный штаб по наблюдению за выборами в Москве создал две группы для проверки ДЭГ – техническую групп для подсчёта голосов и группу общественного аудита, которая должна изучить, корректно ли работала система, чем были вызваны странности ДЭГ. Техническую группу возглавил Владимир Чернецкий из Общественной палаты Москвы. В неё также вошли член Общественной палаты Москвы, эксперт в сфере IT Дмитрий Кузнецов, электоральный эксперт Дмитрий Нестеров, координатор и сопредседатель движения «Голос»* Григорий Мельконьянц и программисты – Евгений Федин и Александр Хованский.
Итоги работы этой группы опубликовали в пятницу, 1 октября.
В УИК жаловались на отключение ноды наблюдателя после закрытия участков. В ДИТ и общественном штабе не увидели проблем
Голосование остановили в 20 часов. В 21 час 19 сентября части ключа шифрования были соединены и началась процедура расшифровки блокчейна и подсчета голосов.
Согласно объяснению ДИТ, при подсчете голосов каждый бюллетень из публичного блокчейна сравнивался с каждой записью из закрытого блокчейна – это 600 млрд операцией.
Эти операции, по версии ДИТ, заняли больше 10 часов (хотя перед расшифровкой в департаменте надеялись уложиться в 1 час 40 минут).
Наблюдатели и члены ТИК ДЭГ Денис Шендерович, Евгений Федин и Илья Сухоруков сообщили, что после окончания голосования, в 20 часов, они потеряли доступ к «ноде наблюдателя». Это рабочее место, подключенное к публичному блокчейну, на котором они могли с небольшой задержкой наблюдать за формированием записей в блокчейн.
Одной из задач рабочей группы штаба стало выяснение, что происходило с блокчейном с 20 до 21 часа - с окончания голосования до начала расшифровки. Для обратного подключения ноды, по словам Федина и Шендеровича, специалистам ДИТ консультировались с ФСБ.
По версии главы управления смарт-проектов ДИТ Артема Костырко, процесс расшифровки блокчейна и подсчета голосов изначально не предполагал подключения ноды наблюдателя. «В будущем мы учтем необходимость такого наблюдения», - уверил он в интервью «Эху Москвы».
Техгруппа Общественного штаба объяснила «провал» наблюдения записью в блокчейн пустых транзакций для контроля его целостности
В рабочей группе добавили, что при обработке голосов по федеральному списку после расшифровки 1 млн голосов процесс замедлился из-за множества «переголосований». Для повышения скорости расшифровки между 22 и 23 часами отключили синхронизацию данных с observer.mos.ru и резервные ноды блокчейн.
В ДИТ заявили RTVI, что никакой проблемы в этой процедуре нет:
«Как и на всех предыдущих выборах, которые проходили с использованием ДЭГ, результаты голосования автоматически были сформированы в системе, после чего согласно требованиям ЦИК был сформирован итоговый протокол голосования. Члены УИК ДЭГ рассмотрели протокол, подписали его и направили в вышестоящие инстанции».
Власти выложили расшифрованную базу данных ДЭГ. Из нее не понять, какой именно бюллетень учтен при подсчете
ДИТ выкладывал на observer.mos.ru дамп (выгрузку) публичного блокчейна в виде файла базы данных. После окончания голосования ДИТ начал выкладывать расшифрованную базу записей.
Но даже через неделю в опубликованном файле расшифрованы не все бюллетени, а только 1,3 млн. Расшифровка остановилась на записях в 17 часов 19 сентября - так датирована последняя расшифрованная запись в опубликованной выгрузке.
По окончании голосования был опубликован ключ шифрования, при помощи которого можно дорасшифровать базу. ДИТ опубликовал собственный код для расшифровки блокчейна. По словам главы ДИТ Эдуарда Лысенко, человек с минимальными знаниями программирования может расшифровать блокчейн и проверить все сам.
«Блокчейн (ДЭГ - ИФ) доступен в интернете, через сайт, к нему в девять часов вечера 19 числа опубликован специальный ключ, который позволяет зайти в блокчейн любому человеку, который хоть немножко обладает навыками программиста, и расшифровать, и увидеть всю статистику реального голосования с 8 утра 17 сентября до 20 часов 19 сентября. Что собственно и сделали некоторые люди из различных партий», - сказал глава ДИТ на Youtube-канале «Соловьев LIVE».
Расшифровка базы ДЭГ действительно возможна: ее провели несколько исследовательских групп: штабы кандидатов и отдельные энтузиасты. Но она не позволяет «увидеть всю статистику», как заявил Лысенко, и пересчитать итоги.
ДИТ публиковал только открытую часть блокчейна с бюллетенями. В ней находятся все бюллетени, записи о которых сделаны системой, в том числе переголосованные.
Какой именно бюллетень учтен при подсчете голосов из открытого блокчейна – выяснить невозможно. Данные об этом хранятся в закрытом блокчейне.
В эфире радиостанции «Эхо Москвы» 21 сентября Артем Костырко заявил, что ДИТ «постарается найти возможность» опубликовать данные из него, однако этого сделано не было.
Но в ответе на вопросы RTVI 28 сентября в ДИТ заявили, что не нашли способа надежно анонимизировать пользователей.
Единственным источником данных о переголосовании являются графики на сайте Общественного штаба. График опубликован на сайте Общественного штаба по наблюдению за выборами, использованные в нем данные есть только в ДИТ и нигде не опубликованы.
Из графиков видно, что в отдельные периоды переголосований было намного (на 10-50%, судя по графику ДИТ) больше, чем в другие.
На графике по часам расписано соотношение общего количества бюллетеней за кандидата («все транзакции, включая переголосование») и количества бюллетеней, учтенных при подсчете голосов («последний по времени голос»).
Разница между показателями - количество бюллетеней, которые сначала отдали за этого кандидата, а потом «переголосовали». Данные о цепочках переголосований ДИТ не раскрывает.
Вопросы, возникшие при разборе итогов голосования и базы данных голосов
В оппозиции выдвинули две версии резких всплесках электронных голосов за ЕР: искусственные вбросы или переголосования
Первые вопросы к организаторам голосования появились 20 сентября, после публикации итогов голосования по цифровым УИК. Результаты на них перевернули исход выборов по всей столице.
КПРФ без учета электронного голосования выигрывала по партийным спискам в столице, после учета электронного голосования – вышла на второе место.
Аналогично с одномандатными округами. В восьми округах без учета электронного голосования первые места занимали политики от КПРФ и другие кандидаты, которых поддержало «Умное голосование» Алексея Навального. Но с учетом ДЭГ на первые места во всех округах вышли кандидаты из списка мэрии.
«Перераспределение» голосов в пользу «Единой России» и системных кандидатов заставило проигравшие штабы и энтузиастов электоральной математики взяться за анализ блокчейна. Они опубликовали данные о выданных бюллетенях, регистрации избирателей и принятых бюллетенях с голосами за партии и кандидатов.
Выяснилось, что в некоторые периоды поведение избирателей «Единой России» и административных кандидатов серьёзно менялось и отличалось от избирателей других партий. В частности, начиная с 2 часов ночи 19 сентября количество голосов за «Единую Россию» и системных кандидатов (из «списка мэрии») резко увеличилось.
Например, в Ленинградском округе №198 в воскресенье утром резко выросло количество голосов за Галину Хованскую. Голоса за «Единую Россию» в воскресенье также резко выросли.
Есть две версии случившегося.
Первую выдвинули штаб кандидата по Ленинградскому округу Анастасии Брюхановой и московский депутат Максим Гонгальский. Они предположили, что в блокчейн попали искусственные записи, то есть был «вброс» голосов.
Вторая версия: искусственные записи в блокчейн, которые поменяли голоса за оппозицию на голоса за административных кандидатов и ЕР.
В ОП объяснили предполагаемые «вбросы» на пиках голосования алгоритмом системы. Она досчитывает голоса с задержкой
Столичный математик, экс-преподаватель РАНХиГС Татьяна Михайлова предположила, что прибавка в голосах за системных кандидатов совпадает с их убылью у их ближайших соперников. Она и другие сторонники версии полагают, что в системе есть прореха, позволяющая делать записи в блокчейне в обход интерфейса избирателя.
В комментарии RTVI ДИТ исключил версию программного вмешательства в блокчейн:
Шифрование голоса происходит на устройстве пользователя, без него невозможно создать транзакцию. Сам блокчейн сохраняет транзакции таким образом, что изменить их невозможно.
По версии технической группы Общественного штаба, то, что в оппозиции назвали «вбросами» - обычные колебания голосов, вызванные социальными механиками сбора, а не манипуляциями.
Техгруппа разбирала один из графиков от ДИТ с поминутным анализом выданных и принятых бюллетеней. Подозрение вызвали минуты, в которые количество записей о принятых бюллетеней составило 5-7 тыс.
В Общественном штабе заявили, что пики на графике показывают алгоритм системы, который не отражает голосование в реальном времени.
Суть в том, что голоса избирателей вначале попадают в программную очередь для ожидания записи в блокчейн. И при высокой нагрузке скорость записи голосов в блокчейн падает. Часть из них позже в ручном режиме повторно направляются в блокчейн.
В эти моменты на графике и возникают пики транзакций, которые показывают время итогового попадания в блокчейн ранее выданных бюллетеней.
Записи о принятых бюллетенях в блокчейне имеют метки времени. В данных ДИТ они указаны с точностью до миллисекунд.
В каждую секунду может быть сделано несколько записей с одним и тем же временем. Вот посекундный график записей о приеме бюллетеней. На нем видно, что «пики» с минутного графика были не едиными крупными пакетами записей - каждый состоит из нескольких пакетов.Никакой системы в этом нет. Вот график записей с 8 до 14 часов 17 сентября без округления времени. На графике видно, что в отдельные периоды времени - продолжительностью до нескольких минут - в базу записывались только данные о приеме бюллетеней по единому округу.
При анализе распределения записей техгруппа при Общественном штабе подчеркивает, что запись в блокчейн производится «в пакетном режиме» и может не соответствовать голосованию в моменте. А «пики» в отдельные минуты - это несколько идущих подряд крупных пакетов записи, происхождение которых вызвано особенностями работы системы записи данных.
Тем не менее, разница в количестве голосов в отдельные часы очевидна.
Особенно выделяются резкие подъемы количества голосов в субботу вечером и в воскресенье, начиная с 7 утра.
По версии источника RTVI в мэрии Москвы, резкое увеличение голосов 19 сентября за системных кандидатов объясняется мобилизацией бюджетников в столице. Работников УИК, мэрии и подведомственных учреждений начальство призывало скорее голосовать.
Чтобы «догнать и перегнать» оппозиционных лидеров, системным кандидатам и «Единой России» потребовалось относительно немного голосов. В восьми одномандатных округах, где оппозиционные лидеры выигрывали офлайн и проиграли онлайн, они потеряли 200 тыс. электронных голосов.
При этом в воскресенье, 19 октября - тот пик, который вызвал больше всего подозрений у оппозиции - перевес кандидатов из списка мэрии над своими оппонентами составил всего 26 тыс. бюллетеней.
Как объяснить всплески переголосований
В ответ на претензии об отсутствии данных о закрытом блокчейне с переголосованием ДИТ опубликовал на сайте Общественного штаба наблюдения новые графики.
На них отражалась разница между общим количеством бюллетеней для каждого кандидата и количеством, учтенным при подсчете голосов. Это вызвало еще больше вопросов.
Появилась версия о вмешательстве в блокчейн путем «переголосования» бюллетеней за оппозиционных кандидатов в пользу системных. Подозрения вызвал воскресный прирост переголосований у оппозиционных кандидатов.
На графиках по всем округам схожая картина: едва ли не каждый третий избиратель оппозиционных кандидатов и КПРФ голосует повторно, в то время как избиратели других кандидатов и партий так себя не ведут.
В итоге у системных кандидатов и оказалось гораздо меньше переголосований, чем у их оппонентов, и особенно кандидатов от «Умного голосования».
По версии аналитиков и кандидатов, это может объясняться техническим вмешательством в блокчейн – голоса «забрали» у оппозиции и отдали «списку мэрии». Технических доказательств этого объяснения нет.
Сделать вывод о том, в чью пользу происходило переголосование, можно было бы при помощи информации о группах бюллетеней, принадлежащих одному и тому же пользователю. Но эти данные ДИТ не публикует.
Рабочая группа Общественного штаба объяснила история с переголосованиями поведением избирателей.
Комментарий технической группы при Общественном штабе:
Возможны различные паттерны поведения избирателей при «переголосовании», в частности избиратель мог поменять свой выбор как однократно, так и несколько раз, в том числе повторно проголосовать за одного и того же кандидата (причины такого поведения могут быть различны, и связаны с различными социально-демографическими факторами).
Среди причин повторного голосования за одного и того же кандидата может быть интерес к предложенной процедуре «переголосования» и заблуждения избирателей о том, что «переголосование» позволяет увеличить шансы победы в проводимой программе «Миллион призов» или увеличить количество голосов в поддержку «своего» кандидата, хотя это не имело практического смысла.
Это не объясняет, почему «оппозиционные» избиратели вели себя так, а другие – нет. Может ли быть, например, что избиратели-бюджетники под давлением начальства вечером в субботу и утром в воскресенье испугались, что об их выборе кто-то узнает, и решили переголосовать в пользу правящей партии и кандидатов мэрии. Но узнать это из имеющихся данных невозможно.
В технической группе Общественного штаба тоже признали, что с имеющимся данными нельзя проверить гипотезы о переголосовании.
Почему снижалась явка у отдельных блоков избирателей
При анализе записей о регистрации избирателей дружественные штабу Брюхановой программисты нашли странные блоки. Избиратели, записанные в шесть блоков по 10-25 тыс. человек, проголосовали намного меньше, чем другие.
Если в других блоках явка колеблется на уровне 96-97%, то в этих блоках она составляет 80%.
Штаб Брюхановой предположил, что это «виртуальные» избиратели для манипуляций с данными.
В рабочей группе Общественного штаба это объяснили разницей систем регистрации на ДЭГ. Одни регистрировались через mos.ru (учетная запись СУДИР), другие через gosuslugi.ru (ЕСИА).
Через Госуслуги избиратели попадали в блокчейн последовательно. У таких избирателей пониженная явка, поскольку они могли попытаться проголосовать через vybory.gov.ru, и не обнаружить там доступных голосований, и в итоге отправиться на mos.ru.
Наконец, для пользователей mos.ru велась более активная информационная кампания.
Вывод технической группы: признаки нарушений не обнаружены, но для точных выводов нет данных
Техническая группа проверки ДЭГ пришла к выводу, что признаки нарушений в ДЭГ не обнаружены. С другой стороны, в докладе отмечается нехватка данных для точных выводов о наличии нарушений в ДЭГ, которые повлияли на результаты.
В своем Telegram-канале участник технической группы Общественного штаба Григорий Мельконьянц сделал несколько основных выводов:
-
большая часть претензий к ДЭГ связана с непониманием его устройства
-
для проверки корректности работы механизма «переголосования» данных для анализа недостаточно
-
для проверки «переголосования» группа предложила провести контрольный запуск системы
-
верифицировать контрольную выборку личных кабинетов избирателей, принявших участие в голосовании
-
в технической группе ОП запросили ряд дополнительных технических сведений для точных выводов.
После заявления Общественного штаба о том, что техническая группа не нашла доказательств нарушениям в ДЭГ, представители КПРФ и программист Евгений Федин заявили о разрыве сотрудничества со штабом. Они считают, что такое заявление техническая группа не могла делать, поскольку её работа сводилась к изучению файла с данными, который предоставил ДИТ, объяснил RTVI замглавы отдела КПРФ по выборам Николай Волков.
Но происхождение этого файла неизвестно и нет доказательств, что он соответствует состоянию системы ДЭГ на момент окончания голосования, утверждает коммунист. А значит, нет уверенности в том, что информация, которую смотрела техгруппа, отражает реальный ход ЭГ.
Программист Евгений Федин, который участвовал в работе технической группы, в беседе с RTVI рассказал, что не согласен с отчётным текстом. Он считает, что на данном этапе нет данных, которые могли бы развеять сомнения в том, что в системе ДЭГ в Москве не было фальсификаций: «Система изначально спроектирована так, что она не была наблюдаемой в процессе. Я спрашивал доступ к серверной инфраструктуре, но в этом отказали. А сейчас, когда система уже отработала, степень доверия к данным будет гораздо меньше, даже если нам их предоставят. И ДИТ это понимает».
КПРФ и Федин заявили, что не будут принимать участие в работе второй группы – по аудиту ДЭГ.
Как сообщил Григорий Мельконьянц, группа аудита при Общественном штабе начнёт работу в начале октября. Она планирует до конца года провести анализ технического решения ДЭГ и полноты инструментов контроля. По итогам группа представит доклад со всеми выводами.
Дарья Бурлакова, Владимир Дергачёв