Голосование по поправкам вскрыло уязвимость в блокчейн-системе

Блокчейн-система, используемая в голосовании по внесению поправок в Конституцию РФ, имела уязвимость, которая позволила расшифровать голоса до их официального подсчета.

Расшифровка по закрытым ключам

Согласно исследованию новостного издания Meduza, когда избиратели проголосовали через специальный веб-сайт, результаты были зашифрованы библиотекой JavaScript под названием TweetNaCl.js.

Реализация  «Сети и криптографии», или «NaCi», созданной математиком Даниэлем Бернштейном и криптографами Таней Ланге и Питером Швабе, опиралась на так называемое детерминированное шифрование, что означает, что использование одинаковых параметров приводит к одинаковым шифротекстам. Отправитель и получатель получили общий ключ, который можно использовать для шифрования или дешифрования сообщения.

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

Чтобы получить закрытый ключ, участник голосования должен был перейти на страницу электронного бюллетеня, открыть консоль разработчика в своем веб-браузере и внести незначительные изменения в библиотеку lection.js (добавить add logpoint, enter: voter secret key is', encryptor.keyPair.secretKey), а затем отдать свой голос.

Meduza провела эксперимент, в котором все участники получили свои закрытые ключи, и, как сообщается, в результате смогли расшифровать свои голоса.

Положительная сторона ошибки

Уязвимость теоретически позволяет работодателям следить за тем, чтобы их сотрудники голосовали, и даже проверять их голоса, побуждая их сохранять свои закрытые ключи.

С другой стороны, та же ошибка может быть использована для повышения прозрачности голосования в сценарии, когда избирательная комиссия отказывается публиковать расшифровку каждого голоса (как это было после выборов в Мосгордуму в 2019 году, где предположительно использовалась аналогичная блокчейн-система).

Meduza уточняет: «К примеру, сторонники одного из кандидатов могут договориться об установке такого же расширения для браузера. В этом случае прямо по ходу голосования они могут отслеживать минимум голосов, который точно должен получить их кандидат после подсчета».

Онлайн голосование и испорченный электронный бюллетень

Электронное голосование проводилось с 25 по 30 июня для жителей Москвы и Нижнего Новгорода и было основано на платформе блокчейна Exonum, разработанной Bitfury. Жители остальных регионов могли проголосовать только оффлайн.

Что касается результатов электронного голосования, то 62,33% московских избирателей поддержали поправки, а 37,37% — проголосовали против. В Нижнем Новгороде результаты были примерно одинаковыми: 59,69% и 40,31% избирателей проголосовали «за» и «против» соответственно.

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

Согласно конституционным поправкам, срок полномочий Владимира Путина будет обнулен в 2024 году, что означает, что он сможет занимать пост президента Российской Федерации до 2036 года.

Источник: AltStake



Самые актуальные новости - в Telegram-канале

Читайте также

Вверх