СМИ: уязвимость московского блокчейн-голосования позволила расшифровать голоса до подсчета
Схема шифрования в системе блокчейн-голосования по поправкам в Конституцию РФ позволяла расшифровать голоса избирателей до официального подсчета. На баг указали журналисты «Медузы».
Шифрование голоса в браузере пользователя происходит с помощью JavaScript-библиотеки TweetNaCl.js – компактной реализации программы Networking and Cryptography library, разработанной известными криптографами Дэниелом Бернштейном, Таней Ланге и Питером Швабе.
Программа использует эллиптическую кривую Curve25519 для согласования ключей, алгоритмы Poly1305 для аутентификации сообщений и Salsa20 для шифрования.
На выборах в Мосгордуму в августе 2019 года блокчейн-система шифровала голоса с помощью адаптированной реализации схемы Эль-Гамаля. Из-за вероятностного шифрования, каждый раз создающего новый шифротекст даже при одинаковых параметрах, дешифровка сообщений не всегда была возможна без приватного ключа избиркома.
Новая система использует детерминированное шифрование: идентичные шифротексты при одинаковых параметрах. У отправителя и получателя формируется общий ключ (shared key), пригодный как для шифрования, так и для расшифровки сообщения, пишет «Медуза».
Для расшифровки сообщений до официального подсчета и публикации приватного ключа избиркома избирателю достаточно было сохранить приватный ключ, формируемый в браузере на странице электронного бюллетеня.
Как получить приватный ключ?
Журналисты «Медузы» провели эксперимент в браузере Google Chrome. На странице с электронным бюллетенем открыли «Инструменты разработки», во вкладке Sources нашли библиотеку election.js, а в ней строку с генерацией открытого и приватного ключей. Поставили после нее logpoint (точка, дойдя до которой браузер запишет в консоль требуемую отладочную информацию): ‘voter secret key is’, encryptor.keyPair.secretKey, после чего проголосовали.
Таким образом им удалось расшифровать голоса избирателей, участвовавших в эксперименте.
Без приватного ключа избирателя расшифровать голос до публикации приватного ключа избиркома не получится.
По данным ЦИК, после обработки 99,97% протоколов поправки в Конституцию РФ одобрили 77,92% участников голосования. Против высказались 21,27%. Явка, предварительно, составила 64,99%.
Ранее эксперты подробно рассказали ForkLog о рисках электронного блокчейн-голосования в РФ.
Подписывайтесь на новости ForkLog в Telegram: ForkLog Feed — вся лента новостей, ForkLog — самые важные новости и опросы.
Рассылки ForkLog: держите руку на пульсе биткоин-индустрии!