Дистанционное электронное голосование в России

Дистанционное электронное голосование в России Праймериз

Федеральное
агентство по рыболовству

«Астраханский
государственный технический университет»

Кафедра «
Бухгалтерский учет, АХД и аудит»

по дисциплине «Современный электронный
офис»

Астрахань 2011 г.

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

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

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

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

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

Немного из истории электронного голосования. Опыт разных стран

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

В 2002 году ЭГ проводилось в Швейцарии. Здесь уже правительство заранее озаботилось созданием правовой базы. Кроме того, голосование проводилось с использованием универсальных и стандартизированных ID-карт. С одной стороны, они не позволяли голосовать одному человеку дважды. С другой стороны, списки голосовавших состояли не из имен, а из номеров этих карт, что обеспечивало анонимность голосования. Благодаря ЭГ явка повысилась, а 90% швейцарцев сказали, что хотели бы снова принять участие в подобных выборах.

Рис.1. ID-карта избирателя в Швейцарии
Рис.1. I D-карта избирателя в Швейцарии

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

Стандарт слепой подписи и его криптостойкость

Существует множество стандартов электронных цифровых подписей (ЭЦП). Самый последний из них (ГОСТ_34.10-2018) был принят 1 июня 2019 года и применяется в том числе и в отечественной системе электронного голосования. Именно его мы и рассмотрим.

Обговорим параметры, фигурирующие в данном стандарте:

J(E)=1728\cdot \frac{4a^3}{4a^3+27b^2}\ mod p, \qquad 4a^3+27b^2\not\equiv 0\mod p,\qquad a,b\in F_p

  • Порядок группы m
    точек эллиптической кривой — это целое число, отличное от p.

  • Порядок q
    (простое число) некоторой циклической подгруппы группы точек эллиптической кривой, удовлетворяющей следующим условиям: m =nq,\ n\in \mathbb{N}, \qquad 2^{254}< q<2^{256}

  • Так называемый генератор подгруппы q-
    точка P=(x_p,y_p) \in E
    , для которой имеют место равенства q \cdot P =0,\qquad k\cdot P \neq 0, \ k=1,2,...,q-1
    , где 0\:-
    нейтральный элемент.

  • h(M) -
    так называемая хеш-функция. Она отображает сообщение M
    в двоичные векторы длиною в 256 бит.

  • Целое число d\:-
    ключ шифрование, которым обладает любой пользователь, использующий цифровую подпись, и которое лежит в пределах 0<d<q.

  • Точка Q=(x_p,y_p) \in E \:-
    ключ расшифрования, которым также обладает любой пользователь, использующий цифровую подпись, и который равен Q=d\cdot q.

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

p^t \neq 1\; mod\ q, \qquad t=1,...,B \geq31 \ и \ J(E) \neq0,1728

Обратим внимание на хеш-функцию. Она представляет из себя двоичный вектор из 256 компонент: h=(a_{255}, \ ...\ ,a_{0}).
Двоичные векторы можно “сшивать” (операция конкатенации): h_a = (a_{255}, \ ... \ ,a_0), h_b = (b_{255}, \ ... \ ,b_0)x \mapsto (h_a|h_b) = (a_{255}, \ ... \ ,a_0, b_{255}, \ ... \ ,b_0)

А также между ними и целыми числами можно построить биективное отображение по следующему правилу

z= \sum_{i=0}^{255}a_i\cdot 2^i, \qquad z\leqslant 2^{256}.

Биективное оно потому, что формула, его задающая, есть ни что иное, как представление числа z
в двоичном виде h.

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

Начнем с формирования ЭЦП. Наглядная блок-схема представлена на рисунке (см. рис. 4), поэтому распишем только формулы, которые мы применяем на каждом шаге.

  1. e =z \ mod \ q. Если \ e =0, \ то \ e=1.

  2. C = kP \to x_c -координата \ C \to r=x_c \ mod \ q.
    Если r=0
    , то возвращаемся к шагу 3).

  3. s = rd+ke\ mod\ q.
    Если s=0
    , то возвращаемся к шагу 3).

  4. Ставим векторы в соответствие числам r\leftrightarrow h_r = \vec{r}, \ s\leftrightarrow h_s = \vec{s}, \ \xi = (\vec{r}|\vec{s})

Рис. 4. Блок-схема алгоритма формирования ЭЦП
Рис. 4. Блок-схема алгоритма формирования ЭЦП

Теперь проверим ЭЦП. Также сошлемся на наглядную блок-схему (см. рис.5), а каждый шаг опишем сухой формулой.

  1. \vec{h} = h(M).

  2. \nu=e^{-1} \ mod\ q.

  3. C = z_1 P+z_2Q \to x_c \ - координата \ C \to R = x_c \ mod\ q.

  4. R = r \to
    подпись верна, иначе — нет.

Рис. 5. Блок-схема алгоритма проверки ЭЦП
Рис. 5. Блок-схема алгоритма проверки ЭЦП

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

Стойкость хеш-функции: Вероятность того, что хеш-функцию данного стандарта взломают подбором коллизии на фиксированное сообщение, составляет 1,73 \cdot 10^{-77}.
Если заниматься подбором произвольной коллизии, то вероятность повышается до 2,94 \cdot10^{-39},
но все равно остается чрезвычайно малой.

Стойкость алгоритма шифрования: она определяется проблемой дискретного логарифмирования в группе точек эллиптической кривой. Поскольку пока не существует алгоритмов этой оценки, обратимся к наибыстрейшему – методу Полларда. Для него вычислительная сложность оценивается как O(\sqrt{q}).
Следовательно, если положить, что q
имеет 256 разрядов, это обеспечит криптостойкость в 10^{30}
операций.

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

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

В 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 можно посмотреть
видеоверсию


этого поста.

Электронное голосование или электронные выборы.

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

Впервые термин

«элек­тронное голосование» был
введен

в 1960-х

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

, а первые
мас­штабные экспериментальные шаги
в этом направлении были сделаны всего
10 лет назад.

Под электронным
голосованием

понимается
как процесс подсчета голосов электронными
средствами, так и сам процесс подачи
голоса посредством различных
телекоммуникационных средств.

Электронное голосование может проводиться
на избирательном участке с использованием
бумажно-электронной системы голосования
(система оптического сканирова­ния),
системы голосования с пря­мой записью
(прямой записи через сенсорный экран
или кнопочный терминал).

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

Какие же задачи

должны решать электронные выборы и
электронное голосование? 1) быстрее
считать итоги; 2) облегчить гражданам
процедуру участия в выборах; 3) удешевить
организацию выборов.

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

. Т.е.
избирателям предоставляется
воз­можность голосовать не только на
избирательном участке своего
из­бирательного округа, но и в ином
месте; обеспечивается участие в выборах
и референдумах всех граждан, имеющих
право голосовать, в особенности,
проживающих или временно находящихся
за рубежом ( они
представляют «достаточно большую
группу изби­рателей: по состоянию на
1 июля


2009 года
за рубежом находилось более 1 миллиона
650 тысяч избирателей, обладающих активным
избиратель­ным правом. Однако же
голосуют обычно 200-250 тысяч человек

).
Но это далеко не
единственное преимущество.

Считается, что поддержка
электронного голосования должна повысить
явку избирателей

путем
предоставления дополни­тельных
каналов для голосова­ния
за счет заинтересованной
молодежи

и людей
с ограниченными физическими возможностями

,
которые испытывают сложности с
перемещением на избирательный участок.

Одной из целей развития
электронного голосования является
снижение вероятности искажения или
подтасовки результатов за счет уменьшения
влияния на весь процесс так называемого
«человеческого фактора» ( повышение
оперативности и надежности передачи
резуль­татов голосования

).
Также пропагандируется
снижение воздействия на избирателя
местного административного ресурса.

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

общие
расходы


избирательных
органов на проведение выборов или
рефе­рендумов

должны
сократиться)


.

Но все ли так гладко на
практике?

Существует ряд
проблем

, связанных с
введением электронного голосова­ния:

  • техническая сложность процеду­ры
    интернет-голосования;

  • невозможность обеспечения всеобщего
    доступа к каналу для дистанционного и
    электронного голосования;

  • возможность подачи избирате­лем
    голоса посредством более чем одного
    канала для голосования (никто не может
    голосовать дважды);

  • возможность установления связи между
    поданным голосом и кон­кретным
    избирателем (наруше­ние тайны
    голосования);

  • трудность или невозможность по­вторного
    пересчета голосов;

  • сложность контроля и наблюде­ния со
    стороны общественности;

  • попытки блокирования извне до­ступа
    к услугам системы;

возможность фальсификации
данных или несанкциониро­ванного
вмешательства в работу системы.

Показательный
пример:

в
марте 2009 года ЦИК РФ проводил очередной
электронный опрос примерно 30 тысяч
избирателей. Система голосования была
подвергнута хакерским атакам — всего
их насчитали около 270 тысяч раз (часть
из них проводилась с территории России,
часть – из-за рубежа). Никаких нарушений
в работе системы электронного опроса
они не вызвали. Эта цифра настораживает,
так как, если учесть, что проведенный
эксперимент не имел юридической силы,
страшно представить, с какой силой могут
атаковать систему во время реального
голосования. С другой стороны, представители
ЦИК сами призывали активистов попытаться
обмануть компьютерную систему — так как
это позволит наглядно увидеть недочеты
и исправить их. В тюрьму за несанкционированный
доступ к информации ЦИК пообещал не
сажать, а наоборот – поблагодарить за
вклад в развитие избирательных технологий.

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

.
А во время очередного этапов выборов
президента США в 2008 году результаты на
одном из избирательных участков были
фальсифицированы из-за обычного сбоя
электричества

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

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

.

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

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

,

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

А вот обеспечение
анонимности голосования — это
ответственность провайдеров

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

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

Опросы

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

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

Несмотря на все старания разработчиков,
дистанционное волеизъявление пока
остается технически сложным.

В настоящее время многие
стра­ны активно разрабатывают
наци­ональные проекты
электронного голосования избирателей

.

Российская Федерация
на­ряду с
другими странами с развитой
информационно-телекоммуника­ционной
структурой активно осва­ивает
современные информацион­ные технологии
при организации и проведении выборов.

В нашей стране в соответствии

с

Федеральным законом
от 10 ян­варя 2003 года «О Государственной
автоматизированной системе Рос­сийской
Федерации «Выборы» для автоматизации
избирательного процесса применяется
ГАС «Выбо­ры»
,
а также технические средства подсчета
голосов — комплексы обра­ботки
избирательных бюллетеней ( КОИБ
)
— система оптического ска­нирования,
автоматически считы­вающая информацию
с бумажного бюллетеня, а также комплексы
для электронного голосования, ( КЭГ
)
— система прямой записи через сен­сорный
экран (без использования бумажного
бюллетеня).

10 октября 2010 года впервые
в нашей стране так широко приме­нялись
комплексы обработки избирательных
бюллетеней — оптические
сканеры

, считывающие
и до 2015 года этот показатель уве­личить
до
70%,
оставив не оснащенными такой техникой
только участки с малым числом из­бирателей.

После первого использования
КЭГ

в ходе выборов в областную думу в Великом
Новгороде в 2ооб году они были доработаны,
и сейчас каждый такой прибор включает
в себя ми­ни-принтер
,
на фискальной ленте которого избиратель
может видеть подтверждение своего
выбора по каждому бюллетеню. В случае
не­обходимости ленту можно вскрыть
и по ней произвести подсчет голо­сов
вручную. В результате проведен­ной
модернизации комплекс может работать
в автономном режиме
от 6 до 12 часов

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

Можно отметить, что оптические сканеры
(КОИБ) затратны, поскольку сохра­няется
бумажный бюллетень, КЭГ через некоторое
время могут себя окупить, поскольку
исключаются расходы на изготовление и
пере­возку бумажных бюллетеней. А
дистанционное голосование дает
экономический эффект прежде все­го
за счет снижения транспортных издержек,
общих затрат на обеспе­чение голосования
на избиратель­ном участке.

  • #
  • #

    Строительное проектирование / Нойферт Э. .djvu

  • #
  • #
  • #
  • #

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

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

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

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

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

Ключи и замки
Ключи и замки
На самом деле, там чуть сложнее, но суть одна — этот ключ формируется и находится у представителей власти.

В 2022 году ключ разделили на пять частей. Перед подведением итогов голосования его соединяют обратно.

Хранителями пяти частей ключа стали:

• Руководитель Общественного штаба по наблюдению Вадим Ковалев

• Секретарь Мосгоризбиркома Владимир Попов

• Председатель Мосгордумы Алексей Шапошников

• Член ЦИК РФ Антон Лопатин

• Глава городского округа Троицк Владимир Дудочкин.

Почему именно они? Потому что

Достоинства и недостатки ЭГ

Из опыта стран-пионеров ЭГ можно выделить как ряд очевидных достоинств.

  1. Граждане могут участвовать в политической жизни страны где бы они не находились – достаточно просто иметь гаджет под рукой.

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

  3. ЭГ повышает привлекает молодых избирателей.

  4. Выборы становятся прозрачными – сложнее устроить “вбросы” и фальсификацию. 

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

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

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

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

Сосредоточимся на последнем недостатке и рассмотрим решение проблемы, которое он вызывает.

Алгоритм реализации и его криптостойкость

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

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

Реализация слепой подписи на практике

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

Порядок действий будет следующим:          

1) Избиратель авторизуется на официальном портале. В нашем случае это “Госуслуги”. По сути гражданин просто сообщает свои персональные данные.

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

3) На устройстве избирателя генерируются секретный ключ S
и публичный ключ K
. Это происходит в браузере.

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

5) Ключ K'
отсылается на сервер, который выдает бюллетени.

6) Сервер подписывает K'
своим ключом (назовем эту подпись C'
), после чего отсылает ее обратно на устройство голосующего вместе со своим публичным ключом, который абсолютно одинаков для всех пользователей.

7) Бюллетень с выбранным вариантом шифруется публичным ключом с сервера и подписывается ключом S
.

8) На устройстве избирателя снимается маскировка с подписи C'
и ключа K'
. Надо заметить, что процесс устроен таким образом, чтобы получилась действительная для ключа K
подпись C
.

9) Зашифрованный бюллетень с подписью (вместе с K
и C
) отсылается на сервер приема бюллетеней.

10) Сервер по приему бюллетеней не знает публичного ключа, так как он был сгенерирован на устройстве голосующего, но проверяет подпись C
и то, что бюллетень был подписан секретной частью публичного ключа. Таким образом, сервер определяет, что бюллетень был выдан настоящему избирателю, правда, уже непонятно, какому именно.

11) После этой проверки сервер отправляет бюллетень в базу.

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

Более наглядно алгоритм можно представить в виде блок-схемы (см. рис. 6).

Рис. 6. Блок-схема процесса голосования
Рис. 6. Блок-схема процесса голосования

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

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

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

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

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

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

Словарь метафор

Сундук — Зашифрованная информация

Замки и ключи — Ключи шифрования

Блокчейн — Витрина

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

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

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

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

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

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

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

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

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

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

Реальное решение

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

Для начала стоит ненадолго отвлечься от нашей темы и поговорить про слепую более детально.

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

1) Алиса пишет послание и запечатывает его в конверт.

2) Алиса отдает конверт Бобу, чтобы тот убедился в достоверности источника.

3)    Боб понимает, кто такая Алиса, и клеит на письмо марку, тем самым подтверждая достоверность источника.

4)    Алиса забирает письмо с маркой у Боба и отправляет послание Василию (разумеется, без обратного адреса).

5) Василий, получив письмо, видит на нем марку, убеждается в достоверности источника и читает содержимое, не зная при этом отправителя.

Если перевести эти рассуждения на математический язык, то получим следующее:

1) Алиса шифрует послание m
по правилу f,
в результате чего получается зашифрованное сообщение c=f(m).

2) Алиса отправляет шифротекст Бобу.

3) Боб подписывает полученный шифротекст, не зная его содержания, т.к. f
известна только Алисе, функцией g,
получая c'=g(c)=g(f(m))

4) Боб отсылает c'.

5) Алиса убирает свое шифрование с вновь полученного подписанного сообщения c',
получая c'' = g(f(m))*f
-1
= g(m).

Рис.3. Блок-схема слепой подписи
Рис.3. Блок-схема слепой подписи

Таким образом, заменив Алису на Избирателя, послание – на бюллетень, Боба – на систему ЭГ, а Василия – на ЦИК, мы получим отлично работающую процедуру тайного голосования.

Вывод

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

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

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

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

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

  1. Опубликовать исходный код системы электронного голосования для независимого аудита.

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

  3. Опубликовать логи системы за время голосования и подсчета результатов.

  4. Опубликовать алгоритм или таблицу связей подставного и реального номеров кандидатов.

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

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

Протокол двух независимых агентств

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

Рис.2. Блок-схема алгоритма действия протокола двух независимых агентств
Рис.2. Блок-схема алгоритма действия протокола двух независимых агентств

В результате размышлений над реализацией такой процедуры было выдвинуто “идеальное” решение – так называемый протокол двух независимых агентств. Согласно задумке, первое агентство идентифицирует личность избирателя и присваивает ему некий индикатор, по которому второе агентство понимает – является человек валидным избирателем или нет. Идеальным такое решение называется по одной простой причине: в реальной жизни воплотить такое невозможно. Агентства должны быть независимыми и при этом подконтрольными государству (т.е. быть госструктурой), а это два взаимоисключающих понятия. А возлагать полномочия одного из агентств на какую-то коммерческую компанию, или тем более на иностранное государство, никто не будет, поскольку это прямая угроза национальной безопасности. Кроме того, даже если хотя бы одно из агентств будет сливать информацию третьему лицу, то определить кто за что голосовал тоже не составит труда.

Резюме и выводы

Подведем итоги обзора систем электронного голосования. Мы кратко обсудили историю создания и внедрения систем ЭГ в различных зарубежных странах. Отдельно проговорили положительные моменты ЭГ:

  • Нет привязки к определенному месту.

  • Затраты значительно ниже, а скорость обработки результатов выше.

Также обсудили и отрицательные стороны ЭГ:

  • Угроза хакерских атак

  • Утечка данных избирателей

  • Сложность в обеспечении тайности голосования

Далее мы сосредоточились на алгоритме реализации процесса голосования. Было рассмотрено как идеальное решение “протокол двух независимых агентств”, не реализуемое на практике, так и более сложное – “слепая подпись”, которое успешно воплощено в жизни. Мы обсудили ее главные положительные качества, а именно:

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

  • Анонимность. Определить по бюллетеню личность избирателя не представляется возможном, что обеспечивает выполнение закона о тайне волеизъявления.

  • Невозможность фальсификаций. Голоса избирателей невозможно удалить из системы, равно как и изменить их.

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

Наконец, мы на пальцах обсудили процедуру электронных выборов – как именно происходит тайное голосование.

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

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

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

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

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