Общероссийская система электронного голосования

Общероссийская система электронного голосования Праймериз
Содержание
  1. Как устроена федеральная система дистанционного электронного голосования в России
  2. Исходная архитектура WE. Vote
  3. Изменения для федерального ДЭГ
  4. Оптимизация пропускной способности
  5. Мониторинг всей системы ДЭГ
  6. Мониторинг блокчейн-сети
  7. Прозрачность системы
  8. Выводы
  9. Обзор системы дистанционного электронного голосования ЦИК РФ
  10. Требования к системе
  11. Протокол взаимодействия
  12. Компоненты системы
  13. Процесс дистанционного голосования
  14. Блокчейн-платформа
  15. Серверы подсчета
  16. Итоги
  17. Как устроено электронное голосование простым языком и в рисунках
  18. Шаг 1. Формирование списка кандидатов
  19. Шаг 2. Формирование ключей и замков
  20. Шаг 3. Голосование
  21. Шаг 4. Секретное шифрование
  22. Шаг 5. Расшифровка
  23. Шаг 6. Демонстрация итоговых результатов
  24. Дистанционное голосование
  25. Федеральная платформа
  26. Безопасность федеральной платформы
  27. Тайна голосования
  28. Московская платформа
  29. Отличия федеральной платформы от московской

Как устроена федеральная система дистанционного электронного голосования в России

Время на прочтение

В 2019 году к нам обратился «Ростелеком» с предложением принять участие в разработке бэкенда федеральной системы дистанционного электронного голосования (ДЭГ) на основе блокчейна. По сравнению с обычным голосованием ДЭГ на блокчейне явно дешевле и быстрее для подсчета голосов; оно также может обеспечить большую явку. Но при этом для большинства людей блокчейн-голосование — это черный ящик, а в голосованиях такого уровня ящик все-таки должен быть прозрачным. О том, как мы добились этого и выполнили другие требования заказчика, я расскажу далее в посте.

Общероссийская система электронного голосования

Требования к системе ДЭГ формировала Центральная избирательная комиссия. Вот их исходный список на 2019 год.

  • Запуск более 1000 голосований одновременно. Забегая вперед, скажу, что в 2021 году, пока что самом нагруженном для системы, мы одновременно запустили около 1700 голосований.
  • Обработка 10 млн голосов за 12 часов, то есть примерно 230 tps (транзакций в секунду). Впоследствии минимально допустимая скорость выросла в два раза, поскольку, на каждый голос пришлось отправлять дополнительную транзакцию — подтверждающую факт выдачи слепой подписи, то есть выдачи бюллетеня.
  • Гарантированный учет всех голосов.
  • Защита тайны голосования.
  • Защита промежуточных результатов голосования.
  • Защита итогов голосования.
  • Возможность проверки того, как все эти требования соблюдены.

К началу проекта у нас уже был готовый криптографический протокол и собственная блокчейн-платформа Waves Enterprise. Через смарт-контракты в ней можно было сразу развернуть всю необходимую логику и защитить данные в соответствии с требованиями. Но были нюансы.

  • Производительность (пропускная способность). Мы всегда уделяли ей внимание, но к 500 tps с ходу на смарт-контрактах были не готовы.
  • Гарантия исполнения транзакций. По умолчанию блокчейн очень старается исполнять все транзакции, но не гарантирует этого — принцип best effort basis. Для голосования так не пойдет, нужны железные гарантии.

Далее я в общем виде опишу, как работает наша блокчейн платформа WE.Vote для дистанционных голосований, а затем то, как мы ее изменили для ДЭГ, чтобы соответствовать требованиям к федеральной системе.

Исходная архитектура WE. Vote

Общероссийская система электронного голосования

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

Общероссийская система электронного голосования

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

Общероссийская система электронного голосования

Третьим идет классический клиент-серверный слой — веб-интерфейсы администратора и участника голосования, а также некоторые вспомогательные сервисы. Администратор управляет запуском/остановкой голосований через взаимодействие с криптосервисами. Участник отправляет бюллетень напрямую в ноду.

Изменения для федерального ДЭГ

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

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

В рамках федерального ДЭГ создание ключей частично вынесено в офлайн. У избирательной комиссии есть ноутбук со специальной утилитой, которая создает ключ. Затем по схеме разделения секрета Шамира ключ разбивают на несколько частей и на съемных носителях раздают держателям ключа. После завершения голосования ключ снова собирают. Имея ключ системы и собранный ключ комиссии, можно расшифровать итоги голосования. Благодаря распределенному хранению, злоумышленник не сможет манипулировать ключами, даже попав в контур голосования.

Общероссийская система электронного голосования

Следующий шаг — интеграция с компонентами, разработанными «Ростелекомом». Здесь мы создали очередь сообщений. В этой части системы нет ни особых нагрузок, ни секретных данных, сделано это только для упрощения интеграции.

Общероссийская система электронного голосования

Вторая часть пайплайна — это анонимная зона, где избиратель отправляет транзакцию с голосом. Адаптер слушает очередь и отправляет транзакции оттуда в нашу часть системы, которую я описывал выше, а затем проверяет, что голос был успешно принят блокчейном.

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

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

Оптимизация пропускной способности

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

К началу проекта ДЭГ собственная платформа, мейннет Waves Enterprise, обеспечивал всего 10–20 транзакций в секунду. Предстояла большая работа, и мы начали исследование.

Число транзакций в секунду обратно пропорционально размеру транзакции. На размер транзакции мы повлиять не можем, так как бюллетени предоставляет заказчик. Поэтому мы взяли за стандарт бюллетень с выбором одной партии из восьми и сосредоточились на оптимизации. Перевели транзакции в бинарный вид, научили ноды сериализовывать Protobuf и перекодировали криптографические константы в HEX. Ноды получили дополнительную нагрузку в связи с введением сериализации/десериализации, но в итоге пропускная способность выросла примерно в 10 раз.

Общероссийская система электронного голосования

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

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

Попробовали подойти к вопросу через железо. В итоге на самых мощных стендах добивались 500–600 tps. В целом влияние процессора и памяти оказалось не таким значительным, как мы предполагали, так что развивать эту тему мы не стали. Однако с помощью инструментов профилирования мы также нашли пару багов, и после фикса ноды стали работать быстрее.

Общероссийская система электронного голосования

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

Я писал выше, что блокчейн сам по себе не гарантирует, что все транзакции будут проведены. Нашим спасением здесь стала Kafka, с помощью которой мы создали очередь на обработку голосов. Другой сценарий для Kafka здесь — убежище при перезагрузке системы для данных, которые нода не приняла в блокчейн. По умолчанию данные хранятся только в оперативной памяти ноды и при перезагрузке уничтожаются. В этой роли Kafka, к счастью, нам не пригодилась, но перестраховаться стоило. Третий сценарий Kafka — это троттлинг нагрузки для пиковых часов. 40–50% избирателей приходят голосовать в первые часы работы ДЭГ, и Kafka позволяет эту нагрузку сглаживать.

Также ДЭГ стала первым проектом, где мы развернули свою версию CFT-консенсуса, который не приводит к роллбэкам. Когда мы начинали с PoS, роллбэки усложняли взаимодействие компонентов и нам приходилось объяснять, что это не мы выкинули голоса из системы, а потом что-то обратно записали, а это технологическая особенность. Если интересно узнать о нашем CFT-консенсусе подробнее, напишите в комментариях.

На самом масштабном голосовании на данный момент, в 2021 году, мы не потеряли ни одну из 1,5 млн транзакций. Но один голосов пришлось все-таки отклонить — он не прошел проверку ZKP.

Мониторинг всей системы ДЭГ

Фронтенд системы, как я уже писал, был в зоне ответственности «Ростелекома». Нам осталось протестировать только бэкенд — по сути, большую трубу, которая должна обеспечить на выходе столько же голосов, сколько и на входе.

Общероссийская система электронного голосования

Для тестов мы разработали утилиту нагрузки; она умела создавать голосования пачками и прожигать систему как следует. На каждом участке мы повесили счетчики транзакций и стали ждать ошибок майнинга и валидации.

Общероссийская система электронного голосования

Общероссийская система электронного голосования

Если у нас увеличивается число голосов со статусом pending — «было отправлено на ноду, но не обработано» — мы понимаем, что нода не справляется и есть какие-то проблемы. Аналогично мы можем отслеживать и другие этапы. Grafana может мониторить и Kafka: сколько голосов через нее было отправлено, какой лаг вычитки.

Помимо подсчета голосов, мы должны распределить ресурсы по компонентам «трубы» так, чтобы не возникало ботлнеков. Поэтому у каждого компонента предусмотрен мониторинг ресурсов. Удивительно, но инструмент мониторинга местами сам требовал больше ресурсов, чем отдельные компоненты системы, обрабатывающие голоса. Так что счетчики мы повесили и на мониторинг.

Мониторинг блокчейн-сети

Через Grafana мы развернули мониторинг майнинга. Если высота блокчейна на графике равномерно растет, значит, ноды майнят и все работает как надо:

Общероссийская система электронного голосования

Если ноды обрабатывают блоки неравномерно, то сеть начинает разъезжаться и надо принимать меры:

Общероссийская система электронного голосования

Здесь мы столкнулись только с одним интересным эпизодом, на тестовом прогоне. На скорости 200 tps безопасники по ошибке отключили доступ по сети. После восстановления и перезапуска метода отправки все ноды в течение 5–10 минут собрались, синхронизировались и обработали все транзакции из UTX-пула — а их накопилось около полутора тысяч. В итоге не потеряли ни одной.

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

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

Если говорить о боевых метриках, то в этом году голосование было менее масштабным по сравнению с прошлым годом, когда показатели доходили до 120 tps. И у нас всегда имелся большой запас по производительности.

Прозрачность системы

Напоследок — о том, что легко упустить в процессе разработки. Обычно, если для задачи заказчика у нас есть работающее решение, то дело в шляпе. Но в проекте национальных выборов очень важно, чтобы решение было еще и прозрачным. В этом направлении мы ведем активную работу.

В прошлом году за нашей системой ДЭГ следили всего пять наблюдателей, а в этом их их стало уже 109. Для них был разработан портал наблюдения, который подключен к очереди обратной связи и получает данные одновременно с остальными компонентами системы. Выгрузки с этого портала наблюдатели могли загружать в дополнительно разработанную нами open-source утилиту. Сравнивая данные, прозрачно обработанные этой утилитой, и данные блокчейна голосования, наблюдатели могли убедиться, что всё обрабатывается одинаково.

Кроме того, к системе были подключены ноды в режиме наблюдения. Они не обрабатывают транзакции и не синхронизируют UTX, а просто получают данные из блокчейна и применяют их к стейту. Наблюдатели могли подключить к таким нодам свои инструменты мониторинга, сравнить их с общедоступными данными и убедиться, что все совпадает.

Выводы

На основе проекта федеральной системы ДЭГ можно сделать несколько выводов с точки зрения технологии.

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

Для дальнейшего погружения советую свой предыдущий пост о том, как работает дистанционное голосование на блокчейне. Также в сети выходили отчеты независимых наблюдателей о нашей с «Ростелекомом» системе по итогам голосования 2021 и 2022 гг. На Youtube можно посмотреть видеоверсию этого поста.

Обзор системы дистанционного электронного голосования ЦИК РФ

31 августа 2020 состоялся публичный тест системы дистанционного электронного голосования (далее ДЭГ) с применением технологии блокчейн, разрабатываемой по заказу ЦИК РФ.

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

Требования к системе

Основные требования, которые предъявляются к любой системе для голосования, в целом одинаковы и для традиционного очного голосования, и для дистанционного электронного голосования, и определены Федеральным законом от 12.06.2002 N 67-ФЗ (ред. от 31.07.2020) «Об основных гарантиях избирательных прав и права на участие в референдуме граждан Российской Федерации».

  • Голосование на выборах и референдуме является тайным, исключающим возможность какого-либо контроля за волеизъявлением гражданина (ст.7).
  • Возможность голосования должна быть предоставлена только лицам, обладающим активным избирательным правом на этом голосовании.
  • Один избиратель – один голос, не допускается «двойное» голосование.
  • Процесс голосования должен быть открытым и гласным для избирателей и наблюдателей.
  • Должна обеспечиваться неизменность поданного голоса.
  • Должна отсутствовать возможность подсчитать промежуточные итоги голосования до его завершения.

Итак, у нас три участника: избиратель, избирательная комиссия и наблюдатель, между которыми определен порядок взаимодействия. Еще можно выделить четвертого участника – органы, осуществляющие регистрационный учет граждан на территории (прежде всего, органы МВД, а также другие органы исполнительной власти), поскольку активное избирательное право связано с гражданством и местом регистрации.

Все эти участники взаимодействуют друг с другом.

Протокол взаимодействия

Рассмотрим процесс голосования на традиционном участке, с урной и бумажными бюллетенями. В общем упрощенном виде он выглядит так: избиратель приходит на участок и предъявляет документ, удостоверяющий личность (паспорт). На участке работает участковая избирательная комиссия, член которой проверяет личность избирателя и наличие его в списке избирателей, который был составлен ранее. Если избиратель найден, член комиссии выдает избирателю бюллетень, а избиратель расписывается в получении бюллетеня. После этого избиратель отправляется в кабинку для голосования, заполняет бюллетень, и опускает его в урну. Чтобы все процедуры соблюдались строго по закону, за всем этим следят наблюдатели (представители кандидатов, общественных институтов наблюдения). После завершения голосования избирательная комиссия в присутствии наблюдателей производит подсчет голосов и устанавливает итоги голосования.

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

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

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

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

Компоненты системы

С технической точки зрения система ДЭГ представляет из себя программно-технический комплекс (далее ПТК), объединяющий набор компонентов для обеспечения взаимодействия участников избирательного процесса в единой информационной среде.

Схема взаимодействия компонентов и участников системы ПТК ДЭГ приведена ниже на рисунке.

Процесс дистанционного голосования

Теперь подробно рассмотрим процесс дистанционного электронного голосования и его реализацию компонентами ПТК ДЭГ.

Согласно Порядку дистанционного электронного голосования, для включения в список участников дистанционного электронного голосования избирателю необходимо подать заявление на портале Госуслуг. При этом подать такое заявление могут только те пользователи, которые имеют подтвержденную учетную запись и успешно сопоставлены с регистром избирателей, участников референдума системы ГАС «Выборы». После получения заявления данные избирателя еще раз проходят проверку в ЦИК России и загружаются в компонент «Список избирателей» ПТК ДЭГ. Процесс загрузки сопровождается записью уникальных идентификаторов в блокчейн. Доступ к просмотру списка имеют члены избирательной комиссии и наблюдатели с помощью специального АРМ, размещенного в помещении избирательной комиссии.

При визите избирателя на участок происходит его аутентификация (сопоставление с данными паспорта) и идентификация в списке избирателей, а также проверка того, что этот избиратель ранее еще не получал бюллетень. Здесь важный момент – невозможно установить, опустил ли избиратель полученный бюллетень в урну или нет, только факт того, что бюллетень уже выдавался ранее. В случае ПТК ДЭГ визит избирателя представляет собой обращение пользователя на Портал ДЭГ – это сайт, расположенный по адресу vybory.gov.ru Как и на традиционном участке, на сайте размещены информационные материалы о проводимых избирательных кампаниях, сведения о кандидатах и другая информация. Для проведения идентификации и аутентификации используется ЕСИА Портала Госуслуг. Таким образом, сохраняется общая схема идентификации как при подаче заявления, так и при участии в голосовании.

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

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

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

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

Ниже приведена схема процесса голосования.

Блокчейн-платформа

Теперь, когда мы разобрали основные особенности реализации системы дистанционного электронного голосования, ответим на вопрос, с которого начинали – а какую роль в этом играет технология блокчейн и какие задачи она позволяет решить?

В реализованной системе дистанционного голосования технология блокчейн решает определенный круг задач.

  • Базовая задача – обеспечение неизменности информации в рамках голосования, и, в первую очередь, голосов избирателей.
  • Обеспечение прозрачности исполнения и неизменности программного кода, реализуемого в виде смарт-контрактов.
  • Обеспечение защиты и неизменности данных, используемых в процессе голосования: списка избирателей, ключах, используемых для шифрования бюллетеней на различных этапах криптографического протокола, и так далее.
  • Обеспечение децентрализованного хранения данных, при этом каждый участник имеет абсолютно идентичную со всеми копию, подтвержденную свойствами консенсуса в сети.
  • Возможность просматривать транзакции и отслеживать ход голосования, полностью отражающегося в цепочках блоков, от его начала до записи рассчитанных итогов.

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

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

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

Серверы подсчета

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

  • Обеспечение распределённой генерации части ключа шифрования бюллетеней. Процедура генерации ключа будет рассмотрена в следующих статьях;
  • Проверка корректности зашифрованного бюллетеня (без его расшифрования);
  • Обработка бюллетеней в зашифрованном виде для формирования итогового шифротекста;
  • Распределенное расшифрование итоговых результатов.

Каждый этап исполнения криптографического протокола фиксируется в блокчейн-платформе и может быть проверен на корректность наблюдателями.

Для придания системе необходимых свойств на различных этапах процесса голосования используются следующие криптографические алгоритмы:

  • Электронная подпись;
  • Слепая подпись публичного ключа избирателя;
  • Схема шифрования Эль-Гамаля на эллиптических кривых;
  • Доказательства с нулевым разглашением;
  • Протокол разделения закрытого ключа по схеме Шамира.

Более подробно криптографический сервис будет рассмотрен в следующих статьях.

Итоги

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

  • Верифицируемость избирателей. Система принимает голоса только от верифицированных избирателей. Это свойство обеспечивается с помощью идентификации и аутентификации голосующих, а также фиксации списка избирателей и факта предоставления доступа к бюллетеню в блокчейн.
  • Анонимность. Система обеспечивает тайну голосования, закрепленную в законодательстве РФ, личность голосующего невозможно определить по зашифрованному бюллетеню. Реализовано с помощью алгоритма «слепой подписи» и анонимной зоны для заполнения и отправки бюллетеня.
  • Конфиденциальность голосов. Организаторы и другие участники голосования не могут узнать результат голосования до его окончания, подсчета голосов и расшифрования итоговых результатов. Конфиденциальность достигается за счет шифрования бюллетеней и невозможности расшифрования до окончания голосования.
  • Неизменность данных. Данные о волеизъявлении избирателей не могут быть изменены или удалены. Неизменное хранение данных обеспечивается блокчейн-платформой.
  • Проверяемость. Наблюдатель может проверить, что подсчет голосов осуществлялся корректным образом.
  • Надежность. В основе архитектуры системы лежат принципы децентрализации, обеспечивающие отсутствие единой «точки отказа».

Как устроено электронное голосование простым языком и в рисунках

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

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

Как говорил Стивен Хокинг, любая формула снижает количество читателей вдвое. Мне кажется, что любой IT-термин снижает аудиторию минимум втрое, поэтому я попытался не использовать профильные термины, а объяснил все «на пальцах» и в комиксе! Надеюсь, у меня это получилось.

Если Вы хотите узнать поглубже о проблемах электронного голосования, рекомендую статью Петра Жижина:

Сундук — Зашифрованная информацияЗамки и ключи — Ключи шифрованияБлокчейн — Витрина

Шаг 1. Формирование списка кандидатов

Общероссийская система электронного голосования

Демонстрация кандидатов и их номеров наблюдателям

ДИТ до выборов подготавливает список из кандидатов и каждому из них присваивает уникальный номер. И этот список выкладывают на всеобщее обозрение в витрину, где на него могут посмотреть независимые наблюдатели.

Шаг 2. Формирование ключей и замков

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

Общероссийская система электронного голосования

Ключи и замки

На самом деле, там чуть сложнее, но суть одна — этот ключ формируется и находится у представителей власти.В 2022 году ключ разделили на пять частей. Перед подведением итогов голосования его соединяют обратно.Хранителями пяти частей ключа стали: • Руководитель Общественного штаба по наблюдению Вадим Ковалев• Секретарь Мосгоризбиркома Владимир Попов• Председатель Мосгордумы Алексей Шапошников• Член ЦИК РФ Антон Лопатин• Глава городского округа Троицк Владимир Дудочкин.Почему именно они? Потому что

Шаг 3. Голосование

Общероссийская система электронного голосования

Подмена номеров кандидатов

Избирателю в браузер от ДИТа приходит список кандидатов с их номером и половина замка. Но номера кандидатов не те, что были заявлены публично и лежат в витрине. Они заменены по какому-то внутреннему алгоритму, какому именно — никто не знает, так как открытого кода нигде нет. Видимо, у них внутри есть секретная табличка связей реального номера кандидата и подставного.

Общероссийская система электронного голосования

Избиратель запирает бюллетень и прикладывает к сундуку ключ

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

Общероссийская система электронного голосования

Браузер избирателя закрывает сундук на двойной замок, состоящий из половинок Избирателя и половинки ДИТа

Шаг 4. Секретное шифрование

Общероссийская система электронного голосования

ДИТ тайно засовывает настоящий сундук с бюллетенем в свой фальшивый

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

Общероссийская система электронного голосования

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

Шаг 5. Расшифровка

Общероссийская система электронного голосования

ДИТ достает бюллетень из сундуков

Итак, голосование заканчивается, надо подводить итоги выборов.

ДИТ берет фальш-сундук из витрины и открывает его секретным ключом, достает из него настоящий сундук и ключ избирателя. Далее он берет свой ключ из пункта 2 и одновременно с ключом избирателя открывает ими двойной замок. И достает из сундука бюллетень с поддельными номерами кандидатов.

Шаг 6. Демонстрация итоговых результатов

Общероссийская система электронного голосования

Замена фальшивых номеров кандидатов на реальные

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

Общероссийская система электронного голосования

Демонстрация итоговых результатов выборов. Нужно верить ДИТ на слово 🤷‍♂️

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

  • Первая проблема: У нас нет открытого кода. Мы не знаем, как он работает на самом деле, все, что вы видите на картинках, получено опытным путем через метод наружного исследования системы электронного голосования.
  • Вторая проблема: Мы не можем независимо понять, за кого проголосовал избиратель! Технически есть возможность подменить голоса за другого кандидата. Просто в табличке, где есть связка реальных и фальшивых номеров, можно поменять одно число, и голоса уйдут другому кандидату.
  • Третья проблема: Происходит секретное шифрование тех вещей, которые должны быть доступны для наблюдателей. То есть представьте: Вы приходите на избирательный участок, а Вам на голову надевают черный пакет, чтобы вам ничего не было видно.

Поэтому мы считаем, что чтобы доказать, что ДИТ не подделывал результаты выборов, имея при этом все возможности для этого, должен:

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

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

P.S. Я попытался дать выжимку информации, и некоторые нюансы остались за кадром, если у вас остались вопросы, то смело задавайте их в комментариях — я отвечу на все.

Общероссийская система электронного голосования

Общероссийская система электронного голосования

(фото — ikhmao.ru)

Дистанционное голосование

Принять участие в дистанционном электронном голосовании мог любой гражданин РФ, обладающий активным избирательным правом, зарегистрированный по месту жительства на территории одного из семи субъектов, для которых был организован такой вариант голосования: Курской, Мурманской, Нижегородской, Ростовской и Ярославской областей, а также Москвы и Севастополя.

При этом избирателю предоставили право отозвать заявление не позднее 24:00 мск 13 сентября. После формирования списков участников ДЭГ решение изменить уже нельзя. Когда избиратель оказывался зарегистрирован в системе ДЭГ, его фамилию исключали из списка на участке, и он уже не мог голосовать с использованием бумажного бюллетеня.

Федеральная платформа

Федеральную платформу для онлайн-голосования – ПТК ДЭГ – разработал «Ростелеком». Детальное ее описание доступно по ссылке.

В 2020 году ЦИК сообщала, что «Ростелеком» разрабатывает систему по ее заданию. В ЦИК пояснили TAdviser, что «Ростелеком» с 2019 года в соответствии с поручением президента определен правительством единственным исполнителем заказываемых ЦИК работ по цифровизации избирательного процесса, предоставлению цифровых сервисов для участников избирательного процесса и созданию цифровой платформы реализации основных гарантий избирательных прав и права на участие в референдуме граждан РФ.

В ЦИК говорят, что в декабре 2019 года с «Ростелекомом» был заключен контракт на выполнение научно-исследовательских работ в области поиска, обоснования и апробирования организационно-технических решений по дистанционному электронному голосованию, в феврале 2021 года — контракт на выполнение работ по созданию программно-технического комплекса дистанционного электронного голосования (ПТК ДЭГ), в том числе по технической эксплуатации и сопровождению при проведении тренировок и публичного тестирования, а также на выборах 17-19 сентября.

Финансирование работ по указанным контрактам осуществляется в пределах бюджетных ассигнований, выделенных ЦИК России на реализацию результатов федерального проекта «Цифровое государственное управление» нацпрограммы «Цифровая экономика РФ» по предоставлению цифровых сервисов для участников избирательного процесса.

Итоговые суммы контрактов с «Ростелекомом» в ЦИК не раскрыли, и на портале госзакупок эта информация отсутствует. В плане закупок ЦИК на 2019-2021 гг., однако, указано, что совокупно на цифровизацию избирательного процесса в рамках нацпрограммы «Цифровая экономика РФ» изначально предусматривалось финансирование порядка 433,6 млн рублей, из них около 110 млн рублей – на разработку и апробирование комплекса организационно-технических решений.

Инфраструктура федеральной системы ДЭГ на выборах в сентябре 2021 года включала 4 ЦОДа: площадки «Ростелекома» и два дополнительных дата-центра. Система построена с возможностью масштабирования: первые три ЦОДа разворачивались на период голосования, а 4-й ЦОД остался в ведении ЦИК и сохранился и после завершения голосования. При этом у ЦИК остаются и все данные голосования.

Общероссийская система электронного голосования

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

В «Ростелекоме» говорят, что значительная часть инфраструктуры ДЭГ построена на оборудовании, которое находится в реестре отечественной продукции. По сравнению с пилотным проектом ДЭГ, который был реализован в 2020 году, доля такого оборудования и ПО заметно выросла, утверждают в компании. Это и средства информационной безопасности, и сетевое оборудование, а также вычислительная аппаратура и СХД.

В мае 2021 г. проводилась всероссийская тренировка по использованию ДЭГ (в преддверии единого дня голосования 19 сентября). Основной ее целью было нагрузочное тестирование ДЭГ – проверка системы на прочность, а также безопасность, удобство и функционал. На участие в тренировке было подано 2,5 млн заявлений, проголосовали 1,2 млн избирателей, система ДЭГ обработала более 5 млн транзакций. После сборки ключей итоги голосования были подведены менее чем за 15 минут. Разработчик системы заявляет, что время проведения голосования сбои не были зафиксированы, в пиковые нагрузки система работала устойчиво.

А затем по итогам общероссийской тренировки на заседании ЦИК России 25 мая 2021 года были определены семь регионов, где система ДЭГ будет применяться в единый день голосования 19 сентября 2021.

Безопасность федеральной платформы

В «Ростелекоме» и ЦИК уверяют, что система надежно защищена от кибератак, надежна и обеспечивает тайну голосования. Федеральная система ДЭГ использует отечественную блокчейн-платформу Waves Enterprise с применением российских криптографических алгоритмов и средств защиты. Блокчейн позволяет хранить зашифрованные голоса избирателей в неизменном виде.

Шифрование информации производится с помощью специального ключа, загруженного в блокчейн в ходе специальной процедуры, которая проходит в ТИК ДЭГ до начала голосования. Для расшифровки нужен другой специальный ключ, который создается и разделяется на несколько частей в ходе той же процедуры, а собирается только при подведении итогов. Части ключа расшифрования записываются на защищенные носители и передаются на хранение независимым «держателям» до окончания голосования. Одна из частей ключа также хранится в модуле информационной безопасности (Hardware Security Module, HSM) и оттуда не извлекается. Криптографический алгоритм позволяет проводить математические операции с зашифрованными данными, поэтому для подведения итогов расшифровывается суммарный зашифрованный бюллетень. Сами непосредственно бюллетени избирателей не расшифровывается ни во время, ни после установления итогов.

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

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

В ЦИК заявили TAdviser, что доверие к ПТК ДЭГ и реализуемым им алгоритмам обработки информации о результатах волеизъявления участников голосования обеспечивается следующими основными мерами:

  • раскрытием информации о реализуемом ПТК ДЭГ протоколе дистанционного электронного голосования, используемых в нем криптографических алгоритмах и их параметрах;
  • контролем участника голосования над ПО, выполняющемся на его устройстве, а также раскрытием его исходного кода (образцов исходного кода) и интерфейсов его взаимодействия с ПТК ДЭГ;
  • контролем избирательной комиссии дистанционного электронного голосования над техническими средствами и выполняющимся на них программным обеспечением формирования, деления и сборки ключей шифрования, контролем над носителями частей ключей шифрования;
  • предоставлению неограниченному кругу лиц в ходе голосования, при и после подведения итогов голосования информации о поступивших в ПТК ДЭГ зашифрованных результатах волеизъявления участников голосования, а также программного обеспечения с исходными кодами для проверки полноты, целостности и неизменности результатов волеизъявления и корректности подсчета голосов.

Юрий Сатиров, главный архитектор платформы ДЭГ «Ростелекома», утверждает, что в последнее время было принято очень много дополнительных мер, направленных на повышение безопасности учетных записей на портале госуслуг. И многое зависит непосредственно от самого пользователя.

А в ЦИК считают некорректным допущение, что кто-то может изменить номер телефона для получения СМС-кода, который используется для подтверждения личности избирателя. Внесение таких изменений требует обладания мобильным телефоном, ранее указанным в учетной записи, либо внесение таких изменений подтверждается способом, аналогичным подтверждению учетной записи, говорят в ЦИК.

Тайна голосования

В ЦИК заявили TAdviser, что не разделяют утверждения о наличии проблемы в данном случае.

А утверждения и допущения, что у «Ростелекома» есть голоса, поданные в последовательности, и есть возможность понять, какой выбор был сделан конкретным пользователем, в ЦИК считают некорректными. Реализация приведенных допущений теоретически возможна в случае:

  • Получения избыточной идентифицирующей информации от устройств участника голосования — однако, в системе ДЭГ устройство и передаваемая с него информация находится под контролем самого участника голосования; кроме того, участник голосования на произвольном шаге процедуры ДЭГ может воспользоваться дополнительными средствами анонимизации, в том числе сервисами прокси, виртуальных частных сетей и др.;
  • Обладания и свободного использования ключей расшифрования некими заинтересованными лицами — но в системе ДЭГ ключи расшифрования, носители их частей и технические средства их формирования, деления и сборки находятся под контролем избирательной комиссии дистанционного электронного голосования и определенных ей лиц, а зависимые от них ключи узлов ПТК ДЭГ — в неизвлекаемой форме в аппаратных средствах шифрования;
  • Создания вместо ПТК ДЭГ иной системы, задачей которой являлся бы контроль над волеизъявлением участников голосования — запись и обработка избыточной идентифицирующей информации об участниках голосования, произвольный подсчету и расшифрование промежуточных итогов голосования или отдельных бюллетеней. При этом в отношении такой системы было бы невозможно выполнение уже реализованных мер доверия.

Также в качестве мер доверия к ПТК ДЭГ доступ к одному из узлов системы предоставлен группе технического наблюдения Общественной палаты РФ, что позволяет ей контролировать процесс поступления и записи зашифрованных результатов волеизъявления, подведения и расшифрования итогов голосования во всем ПТК ДЭГ. Одновременно в отношении ПТК ДЭГ проведены аттестационные и контрольные испытания, предусматривающие проверку соответствия комплекса рабочей документации и направление отчетной документации по результатам испытаний в уполномоченные госорганы.

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

А сравнивать все по логам, на серверах – это технически крайне сложная задача, хотя не сказать, что нереализуемая, добавил Олег Артамонов.

Он также указал, что в 2020 году на голосовании по поправкам в конституцию дистанционного голосовали более 1 млн человек, и не было ни одного свидетельства того, что кого-то потом вызвал начальник за «неправильное» голосование при том, что подобные случаи обычно быстро становятся достоянием общественности.

Московская платформа

А в мае 2021 года «Лаборатории Касперского» достался подряд на развитие системы столичного дистанционного электронного голосования через интернет. За 160 календарных дней, на которые рассчитан срок работ, компания получит около 270 млн рублей.

Основными задачами работ, как следует из ТЗ, стали обеспечение процесса подачи гражданами заявлений на участие в ДЭГ, автоматизация рассмотрения заявлений на участие в ДЭГ и уведомление заявителей о его ходе, обеспечение формирования списков граждан, допущенных к ДЭГ, обеспечение тайны и анонимность волеизъявления, автоматизация взаимодействия между пользователями системы.

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

«Лаборатория Касперского» располагает собственной блокчейн-платформой на Ethereum для голосований под названием Polys. Кроме того, компания разрабатывает новый продукт для голосований — «Polys.ГОСТ». Но в мае 2021-го в «Лаборатории Касперского» говорили, что в рамках исполнения нового договора с ДИТ для развития системы ни Polys, ни «Polys.ГОСТ» применяться не будут.

Отличия федеральной платформы от московской

Функционально московская система голосования на платформе mos.ru, пожалуй, в первую отличается от голосования на портале госуслуг тем, что московский избиратель может несколько раз переголосовать. В других регионах этой опции пока не предусмотрено. Переголосование означает, что избиратель имеет возможность снова получить электронные бюллетени и поменять свой выбор (или повторить его) через три часа после предыдущего голосования. В итоге будет засчитан последний выбор. Официально это называется «отложенным голосованием».

Обе системы используют блокчейн и смарт-контракты. Но одно из технических ключевых отличий – в московской системе при подсчете голосов сначала предполагается расшифровка бюллетеней, после чего их в расшифрованном виде сгруппируют и определят результаты. А в федеральном ПТК ДЭГ отдельные бюллетени не расшифровываются. Они сначала сгруппировываются в зашифрованном виде, а потом происходит расшифровка суммарного бюллетеня. Это возможно благодаря использованию технологии гомоморфного шифрования.

Также в федеральной системе используется специальный криптографический алгоритм для анонимизации избирателей, который называется «слепая подпись». Этот алгоритм в системе ДЭГ, позволяющий отделить персональные данные избирателя, по которым он получает бюллетень, от идентификатора с которым бюллетень будет записан в систему, достаточно хорошо исследован мировым криптографическим сообществом. В Московской системе используется механизм анонимизации собственной разработки.

Примечательно, что после окончания процедуры голосования ЦИК 17-19 сентября опубликовал результаты ДЭГ из всех регионов, кроме московского – они появились с существенной задержкой днем 20 сентября. При том что ранее после голосования по поправкам к конституции итоги электронного голосования стали известны уже через час.

Оцените статью
Праймериз