Эксперты: у организаторов электронного голосования есть техническая возможность подтасовывать результаты

Фото: Артем Геодакян / ТАСС

Члены рабочей группы продемонстрировали, как можно подменить голос избирателя во время ЭГ. Уязвимость системы сохранилась с выборов-2019.

Сегодня заканчивается последний из шести дней дистанционного электронного голосования по поправкам к Конституции, в котором уже успели принять участие более миллиона москвичей и жителей Нижегородской области. Всего на ЭГ зарегистрированы 1 190 726 избирателей, из них более 1 080 000 уже проголосовали.

Онлайн-голосование вызывает немало вопросов у экспертов и наблюдателей — в частности, телеканал «Дождь» установил, что на личные данные москвичей при помощи сим-карт можно зарегистрировать до нескольких десятков аккаунтов на mos.ru, чтобы потом принять участие в голосовании. Но главная проблема, по мнению технических и электоральных экспертов, с которыми поговорили «Открытые медиа», в том, что процедуру подсчёта голосов трудно проконтролировать, а сама система вовсе не защищена от подтасовок.

Система, закрытая для проверки

Начиная с прошлогоднего «эксперимента» на выборах Мосгордумы, прошедших в сентябре 2019 года, систему онлайн-голосования последовательно критикуют эксперты, в том числе члены технической рабочей группы, в которую входят IT-специалисты и члены избирательных комиссий: эту группу Департамент информационных технологий Москвы (ДИТ) собрал весной 2019 года для консультаций и наблюдения за процедурой голосования.

«Открытые медиа» поговорили с членами рабочей группы и выяснили, что за время подготовки к плебисциту в ДИТ не выполнили ни одного из действительно важных предложений группы, которые могли бы сделать систему прозрачнее. Кроме того, чиновники так и не устранили критическую уязвимость, позволяющую подтасовывать голоса избирателей, хотя знают о ней с прошлого года — об этом ОМ рассказал член рабочей группы, программист и член территориальной избирательной комиссии Евгений Федин, и подтвердили и его коллеги по группе.

На одной из последних встреч ДИТ с технической рабочей группой в июне этого года, перед стартом голосования, начальник отдела систем электронного голосования в МГТУ им. Баумана и один из разработчиков комплексов «КОИБ» Виктор Толстогузов в очередной раз обратили внимание главы смарт-проектов Москвы Артема Костырко на то, что процедура не предусматривает никакой защиты избирателя от административного давления. На том же заседании этот вопрос несколько раз повторили его коллеги по группе и спросили, почему организаторы ЭГ до сих пор не устранили эту уязвимость. Костырко настаивал, что это «политический» вопрос, и просил собеседников концентрироваться на «технологиях».

Кроме этого, эксперты указывали и на невозможность наблюдать за ходом голосования более чем миллиона избирателей на одном участке — специально образованном для этого ТИК ДЭГ.

Как рассказывали ОМ, в этой комиссии есть только один профильный специалист — руководитель IT-проектов «Единой России» Вячеслав Сатеев, весь остальной состав набран из малозаметных членов системных партий, большинство из которых в прошлом баллотировались на муниципальных и федеральных выборах, но так и не смогли получить мандат.
Чтобы можно было вручную пересчитать бумажные распечатки голосов и эффективно работать с жалобами избирателей, один избирательный участок должен работать не более чем с 5000 голосами, отмечает в разговоре с ОМ Толстогузов. О сложности парной сверки таких распечаток эксперты говорили ещё в прошлом году, но с тех пор процедура не изменилась.

Часть экспертов из числа рабочей группы по итогам прошлого года подготовила по просьбе Костырко список требований к тому, как должно выглядеть техническое задание к системе онлайн-голосования (есть в распоряжении ОМ). Согласно документу, статистические данные о ходе голосования должны состоять из 17 связанных между собой переменных, которые детально отображают весь процесс получения бюллетеня избирателем и его отправку в систему, и дают точно понять, на каком этапе произошёл сбой. Сейчас же система отображает только 5 пунктов.

Ещё одно ключевое требование к ТЗ — доступ экспертов и наблюдателей ко всей технической документации и исходному коду программного обеспечения и возможность в любой из дней голосования проверить, что в запущенной системе используется то же ПО и оборудование, что демонстрировалось до старта голосования. По словам Толстогузова, члены рабочей группы за время подготовки к плебисциту не увидели ни одного технического документа. У экспертов не было возможности проверить, что неполный код, выложенный на github, является тем же исходным кодом, что используется для организации голосования.

Соавтор требований к ТЗ, кандидат физико-математических наук и координатор «Голоса» Дмитрий Нестеров отмечает, что не были учтены и аналогичные предложения осенью 2019 года. По словам Толстогузова, в части открытости и гласности в этот раз стало даже хуже.

Как организаторы ЭГ могут подменять голоса

У системы онлайн-голосования есть и более серьёзная уязвимость, не связанная с административным ресурсом или особенностями технологии шифрования голосов. Речь идёт о возможности подмены голоса в бюллетене, о которой эксперты из технической рабочей группы предупреждали ещё во время выборов Мосгордумы осенью 2019 года, рассказали «Открытым медиа» эксперты из рабочей группы. По данным Федина, часть программного кода оставляет за оператором голосования — то есть мэрией Москвы — техническую возможность подменять выбор в бюллетене до того, как он зашифровывается и отправляется в систему блокчейн на хранение.

В ДИТ обещали избавиться от уязвимости до начала общероссийского голосования, но так этого и не сделали. На заседании рабочей группы 18 июня Федин обратил на это внимание главы смарт-проектов мэрии Костырко. Чиновник назвал проблему «ошмётком» с прошлогоднего исполнения системы и попросил своих коллег из ДИТ проверить, «чтобы эту штуку убирали».

Речь идёт о фрагменте в исходном коде web-страницы бюллетеня для голосования, с помощью которого можно подключить дополнительный скрипт (программу) и манипулировать любыми элементами страницы. Такая опция может существенно искажать волеизъявление ещё на этапе отправки заполненного бюллетеня, то есть до того, как голоса зашифровываются и отправляются в блокчейн.

Федин обратил внимание на этот фрагмент, когда в июне ДИТ разместил на сервисе github материалы к общероссийскому голосованию. По словам эксперта, ДИТ возразил, что уже не использует такой код в рабочем варианте программы, но это невозможно проверить. «Они могут просто убрать фрагмент из публикуемых исходников, но по факту оставить. Поймать на этом можно исключительно по счастливой случайности, если кто-то откроет исходный код страницы бюллетеня и найдёт там подключение лишнего скрипта», — заключает эксперт.

Фрагмент кода с возможностью вызова дополнительного скрипта. Фото: «Открытые медиа»
С помощью скрипта на странице бюллетеня можно управлять её элементами, меняя их местами, изменяя их свойства и параметры, объясняет Федин: «Самое опасное, что можно делать — это записывать другой голос вместо поданного избирателем, но с помощью дополнительного скрипта можно делать и другие вещи: убрать вариант „Нет“, или сделать так, чтобы по наведению на один из квадратиков для отметки он перемещался, не давая ставить в себя галочку. Это было бы хулиганство, конечно, но технически сделать легко».

«Это принципиальная возможность — если в каком-то из скриптов, подключенных на страницу, добавить что-то для изменения страницы, оно сработает. Поэтому нельзя говорить, что использование блокчейна и шифрование на стороне пользователя гарантирует, что голос записывается правильно. При желании можно просто зашифровать не тот голос», — добавляет эксперт.

На эту уязвимость Федин впервые обратил внимание ещё летом 2019 года во время подготовки эксперимента по ЭГ на выборах Мосгордумы. Он продемонстрировал возможность подключения скрипта, подменяющего выбор в бюллетене через расширение в браузере на устройстве пользователя: при нажатии на кнопку «проголосовать» эксперт менял отправляемое значение (выбор данного кандидата из списка в бюллетене) на другое значение (другого кандидата) или другую опцию.

Федин предоставил ОМ видео, на котором пошагово продемонстрировал, как срабатывает такой скрипт на практике

Во время финального тестирования системы в конце августа прошлого года Федин вместе с членами технической рабочей группы Дмитрием Кузнецовым и Виктором Толстогузовым в присутствии представителей ДИТ и ЦИК проголосовали одним образом, а в систему блокчейн был записан другой выбор.

После демонстрации ДИТ изменил фрагмент кода на тот, что действует и сейчас. Но он стал ещё менее прозрачным с точки зрения контроля, говорит Федин: теперь специальная переменная в строке кода отсылает к внутренним настройкам системы, которые ДИТ не показывает даже членам технической рабочей группы, а значит, проконтролировать возможное подключение на страницу дополнительного скрипта практически невозможно. У оператора голосования есть теперь возможность дистанционно подключать внешнюю программу, причём для этого уже не потребуется подключаться к конкретному устройству пользователя (избирателя).

В случае, если скрипт задействуют, избиратель никаких дополнительных активностей на странице не увидит и даже сможет проверить адрес транзакции в блокчейне, чтобы убедиться, что его голос «учтён», объясняет Федин.

Как можно задействовать «троянского коня»

Оценивая риски, независимые эксперты из числа рабочей группы ещё в прошлом году пришли к выводу, что такой уязвимостью можно злоупотребить, настроив компьютеры на предприятиях или сделав скрипт частью популярных среди пользователей mos.ru расширений и других программ таким образом, чтобы избиратели, сами того не осознавая, установили себе этот код. Ещё один вариант — добавить в шаблон страницы бюллетеня вызов подменяющего голоса скрипта, но сделать это лишь для части избирателей «с целью затруднения обнаружения».

Актуальность проблемы на нынешнем голосовании подтверждают все независимые технические эксперты из группы, с которыми поговорил корреспондент ОМ. «Да, опасность остаётся. Не просто остаётся, а сейчас она значительно выросла: поскольку нет возможности проверки избирателем собственного голоса, и в системе нет встроенных механизмов внешнего контроля целостности системы, у организаторов не возникает рисков „подменить“ хоть 100% голосов», — считает Нестеров.

Ведущий инженер-программист и член ТИК с правом решающего голоса Дмитрий Кузнецов также признаёт проблему: по его мнению, такой способ подмены голосов может быть решением «под ключ» для тех случаев, когда бюджетников принуждают голосовать с рабочих компьютеров. Именно поэтому нужно пресекать принуждения к голосованию по месту работы, а также напоминать избирателям голосовать с домашних устройств, отмечает Кузнецов.

Однако, как считает Федин, с появившейся опцией подключения дополнительного скрипта стало возможным использовать его на любом устройстве и без предварительной подготовки, единственная опасность для организатора — если вдруг получивший бюллетень изучит код страницы и обнаружит что-то, чего в нём быть не должно.

Федин полагает, что если организатор захотел бы воспользоваться такой возможностью и минимизировать риск, то у него было бы сразу несколько способов: например, подключать дополнительный скрипт не всегда, а с заданной вероятностью лишь для доли бюллетеней или для определенного диапазона ip-адресов, или подключать его только для голосующих с мобильных устройств, пользователи которых с меньшей вероятностью станут заглядывать в исходный код.

Гендиректор Unwired Devices Олег Артамонов, возглавляющий службу научной экспертизы в «Партии прямой демократии» и участвующий в работе технической группы, также признаёт наличие уязвимости, хотя и считает сценарий, при котором бы ДИТ решил её использовать, маловероятным.

«С учётом того, какое количество людей на ДЭГ сейчас под микроскопом рассматривают всё, что происходит, такой скрипт будет однозначным свидетельством стороны обвинения. При миллионе голосующих даже один из тысячи, работающий программистом в „Яндексе“ и рефлекторно не закрывающий инструменты разработчика в браузере — это неприемлемый риск», — рассуждает эксперт.

По его мнению, причина, по которой ДИТ до сих пор не устранил эту возможность, могла заключаться в скорости, с которой чиновникам пришлось разрабатывать систему и адаптировать её к плебисциту: «На них всё это повесили буквально в апреле по принципу „ну вы же уже делали“, поэтому сейчас там ещё много неразберихи, смотрите на те же отсутствующие даты в выгрузке из блокчейна при шестидневном голосовании».

«Я бы не сказал, что в текущей системе есть какие-то возможности по масштабной манипуляции, не требующие, например, сговора между несколькими министерствами и ЦИК, — говорит Артамонов. — Но это не значит, что система идеальна и не компрометируема. Если говорить про подгрузку произвольного скрипта — от этой возможности надо избавиться, она ни для чего не нужна».

«Открытые медиа» направили вопросы главе смарт-проектов правительства Москвы Артёму Костырко, к моменту публикации он не ответил.

Разблокировать push-уведомления

Следуйте инструкциям, чтобы активировать push-уведомления