Опубликована часть исходного кода российской системы блокчейн-голосования
В открытом доступе размещены исходные программные коды ключевых алгоритмов системы дистанционного электронного голосования (ДЭГ), которую планируется использовать на довыборах в Госдуму РФ 13 сентября. Они включают серверы подсчета, смарт-контракты и внутренние библиотеки. Обзор системы опубликован в блоге разработавшего ее Ростелекома на Habr.
Публичный тест системы состоялся 31 августа.
Общественное тестирование полностью повторяло все этапы предстоящего электронного голосования: регистрация заявки, авторизация и идентификация с помощью портала госуслуг, онлайн-голосование и подсчет голосов. По утверждению специалистов Ростелекома, за время проведения пробных голосований сбоев и перерывов в работе ДЭГ не было, в пиковые нагрузки система работала устойчиво.
По итогам тестирования улучшен интерфейс пользователя и отображение бюллетеня на экранах мобильных устройств. Усовершенствован дашборд, в котором отображается статистика процесса голосования. Добавлена новая функция — загрузка зашифрованных транзакций, формируемых в ходе голосования, непосредственно из блокчейна. Наблюдатели получили возможность в реальном времени видеть количество авторизаций пользователей, отправленных SMS и успешных подтверждений.
С технической точки зрения система ДЭГ состоит из большого числа программных и аппаратных компонентов и позволяет участникам избирательного процесса взаимодействовать в единой информационной среде, отмечают разработчики.
Блокчейн в системе дистанционного голосования обеспечивает неизменность информации и прозрачность исполнения смарт-контрактов, защищает и децентрализованно хранит данные, в том числе список избирателей и ключи шифрования, а также позволяет отслеживать транзакции внутри сети.
«Без использования данной технологии добиться наличия в системе голосования необходимых свойств, как и доверия к ней, практически невозможно», – указывают разработчики.
Благодаря смарт-контрактам электронная и «слепая» подпись каждой транзакции с зашифрованными бюллетенями проверяется на подлинность, также проводится базовая проверка корректности заполнения зашифрованного бюллетеня.
«Распределенное хранение и подсчет голосов не ограничивается блокчейн-узлами. Для каждого узла может быть развернут отдельный сервер подсчета. Он обеспечивает распределенную генерацию ключа шифрования бюллетеней, расшифровку результатов и подсчет итогов голосования, которые могут быть проверены на корректность», – говорится в обзоре.
На различных этапах процесса голосования используются:
- электронная подпись;
- слепая подпись публичного ключа избирателя;
- схема шифрования Эль-Гамаля на эллиптических кривых;
- доказательства с нулевым разглашением;
- протокол DKG (Distributed Key Generation) Pedersen 91;
- протокол разделения закрытого ключа по схеме Шамира.
Особенностью рассматриваемой системы является использование технологии гомоморфного шифрования.
«Зашифрованные бюллетени можно без расшифровки скомбинировать так, чтобы получить суммированное значение по каждому варианту выбора в бюллетенях. При этом в системе реализованы математические доказательства корректности такого расчета, которые могут быть проверены наблюдателями», – объясняют разработчики.
По словам разработчиков, основными свойствами блокчейн-голосования являются верифицируемость и анонимность избирателей, конфиденциальность голосов, неизменность и проверяемость данных, а также надежность архитектуры сети.
«Система изначально задумывалась и была реализована технически максимально транспарентной и проверяемой, за счет применения технологии блокчейн и специального криптографического протокола. После завершения всех раундов закрытого и открытого тестирования система готова к проведению первого пилотного голосования. Более того, тестирование позволило четко понять точки для дальнейшего масштабирования системы”, – отметил директор по продукту Waves Enterprise Артем Калихов.
У директора и учредителя АНО «Информационная культура» Ивана Бегтина сложилось впечатление, что код писался «на коленках».
«Код совсем не впечатляет. Поверхностная проверка кода инструмента cryptolib на Python через pylint дает качество 3,21 из 10. По остальным «кускам кода» ситуация не сильно лучше – уровень культуры программирования ниже среднего», – написал Бегтин.
Напомним, дистанционное электронное голосование пройдет на сентябрьских довыборах в Госдуму РФ в Ярославской и Курской областях.
Последнее блокчейн-голосование по поправкам в Конституцию РФ состоялось в конце июня 2020 года. В первые часы работы система электронного голосования дала сбой, который объяснили наплывом избирателей. На следующий день сбой коснулся экспорта данных.
Впоследствии неизвестные совершили попытку атаки на сервис наблюдения за голосованием, а найденная уязвимость позволила расшифровать голоса избирателей до подсчета.
В начале июля база паспортов участников блокчейн-голосования стала доступна на одном из форумов. В правительстве Москвы эту информацию опровергли, однако затем взломанный архив оказался в открытом доступе за пределами форума.
Подписывайтесь на новости ForkLog в Telegram: ForkLog Feed — вся лента новостей, ForkLog — самые важные новости и опросы.
Рассылки ForkLog: держите руку на пульсе биткоин-индустрии!