19 понятие дистанционное электронное голосование включает

19 понятие дистанционное электронное голосование включает Праймериз

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Итоги

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

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

Архитектура доверенной электоральной системы

В прошлой нашей публикации — тексте доклада Алексея Щербакова «Уроки электронного голосования в Московскую Городскую Думу 2019 года» на конференции AnalogBytes Conf 2020, проходившей 5 марта — был разобран один из свежих примеров проведения дистанционного электронного голосования (ДЭГ) и показано, почему оснований доверять его результатам не было.

  • Алексей Щербаков — «Уроки электронного голосования в Московскую Городскую Думу 2019 года»
  • Олег Артамонов — «Дистанционные электронные голосования: архитектура доверенной электоральной системы»
  • Круглый стол «Нажми на кнопку: теория и практика электронных голосований»

Подчеркнём: то, что оснований доверять системе нет, не означает, что результаты обязательно фальсифицировались. Это означает, что они могли быть фальсифицированы.

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

19 понятие дистанционное электронное голосование включает

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

«Из коробки» классическое бумажное голосование обеспечивает нам, как минимум:

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

Давайте разбираться, можно ли это всё реализовать в ДЭГ (ответ для нетерпеливых: да).

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

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

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

Вместе с тем, принципиальной необходимости строить ДЭГ именно так нет никакой — кроме, разумеется, логики «нам так проще».

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

Единственным критичным требованием к реализации является наличие двух серверов, находящихся под управлением независимых друг от друга сил (это могут быть, например, две фракции или два комитета внутри партии, если речь о внутрипартийной системе).

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

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

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

В случае тайного голосования сервер учёта голосов только подтверждает серверу аутентификации факт свершившегося голосования.

В остальном же схема с двумя независимыми серверами — и только она! — позволяет реализовать тайну голосования в электронной форме.

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

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

Аутентификация пользователей

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

  • По номеру партбилета пользователя, включая электронный партбилет на базе NFC/RFID (например, текущие внутрипайртийные голосования)
  • По аутентификации в ЕСИА (внутрипартийные праймериз, внепартийные голосования, включая общегосударственные выборы и референдумы)

(ЕСИА — Единая система идентификации и аутентификации — это система авторизации в «Госуслугах»; партиям недавно разрешили использовать её для праймериз и сбора подписей)

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

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

Аудит хода голосования

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

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

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

Предотвратить это можно несколькими способами:

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

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

Аудит результатов голосования

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

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

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

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

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

Голосование под давлением

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

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

Кроме того, постфактумное обнаружение массовых переголосований (база данных фиксирует все голоса, последний отданный учитывается уже при подсчёте) может указывать на наличие явной проблемы и повод для начала расследования.

Заключение

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

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

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

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

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

P.S. Будут ли такие системы кем-либо внедряться на практике — вопрос открытый. Но технологическая возможность их разработки, внедрения и использования есть.

Автор текста — Олег Артамонов (olartamonov), руководитель службы научно-технической экспертизы Партии прямой демократии.

P.S. Завтра в эфире: пока ДИТ Москвы всё обещает, мы уже собираем за одним столом юристов, пиратов, политтехнологов, математиков и хакеров с Хабра.

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

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

19 понятие дистанционное электронное голосование включает

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

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

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

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

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

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

19 понятие дистанционное электронное голосование включает

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

19 понятие дистанционное электронное голосование включает

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

19 понятие дистанционное электронное голосование включает

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

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

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

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

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

19 понятие дистанционное электронное голосование включает

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

19 понятие дистанционное электронное голосование включает

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

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

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

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

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

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

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

19 понятие дистанционное электронное голосование включает

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

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

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

19 понятие дистанционное электронное голосование включает

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

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

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

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

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

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

19 понятие дистанционное электронное голосование включает

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

19 понятие дистанционное электронное голосование включает

19 понятие дистанционное электронное голосование включает

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

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

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

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

19 понятие дистанционное электронное голосование включает

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

19 понятие дистанционное электронное голосование включает

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

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

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

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

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

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

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

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

Выводы

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

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

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

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