Электронное голосование (ЭГ) – это дистанционное голосование, позволяющее не привязывать волеизъявление граждан к фактическому месту их нахождения. В силу того, что интернет-технологии не только развиваются с невероятной скоростью, но и становятся все более неотъемлемой частью жизни для простого обывателя, их применение в политических процессах более чем обоснованно и естественно. Однако, как и любое другое техническое решение, электронное голосование создает ряд трудностей и проблем, которые необходимо преодолеть. В данной работе мы не только обсудим достоинства и недостатки ЭГ, но также заострим особое внимание на реализацию алгоритмов, обеспечивающих главный критерий избирательной системы – тайну волеизъявления, и обсудим уязвимые с сточки зрения защиты информации в них места.
Немного из истории электронного голосования. Опыт разных стран
Первое в мире электронное голосование было проведено в США в 2000 году. Недостаток системы в Америке заключался в отсутствии федеральных стандартов избирательных технологий, то есть в стране не была подготовлена законодательная база, учитывающее эту принципиально новую технологию.
В 2002 году ЭГ проводилось в Швейцарии. Здесь уже правительство заранее озаботилось созданием правовой базы. Кроме того, голосование проводилось с использованием универсальных и стандартизированных ID-карт. С одной стороны, они не позволяли голосовать одному человеку дважды. С другой стороны, списки голосовавших состояли не из имен, а из номеров этих карт, что обеспечивало анонимность голосования. Благодаря ЭГ явка повысилась, а 90% швейцарцев сказали, что хотели бы снова принять участие в подобных выборах.
Нечто подобное было внедрено и в Эстонии: для участия в голосовании избиратель должен был иметь компьютер с доступом в интернет, уникальное бумажное персональное удостоверении и специальный считыватель этого удостоверения.
Достоинства и недостатки ЭГ
Из опыта стран-пионеров ЭГ можно выделить как ряд очевидных достоинств.
Граждане могут участвовать в политической жизни страны где бы они не находились – достаточно просто иметь гаджет под рукой.
Время проведения выборов и подсчета голосов происходит на порядок быстрее. А затраты на проведение процедуры значительно уменьшаются.
ЭГ повышает привлекает молодых избирателей.
Выборы становятся прозрачными – сложнее устроить “вбросы” и фальсификацию.
И, разумеется, недостатки тоже имеют место быть. Помимо каких-то юридических моментов (например, частичное или полное отсутствие законодательной базы для регулирования процедуры) есть ряд вопросов по информационной безопасности этого процесса, которые и представляют для нас главный интерес.
Информация, передаваемая по интернету, очевидно, гораздо уязвимее с точки зрения потенциальных хакерских атак или же банальных компьютерных сбоев – то есть возможно внешнее вмешательство в ход выборов.
Есть риск получения и использования злоумышленниками в корыстных целях персональных данных избирателей.
Из-за того, что каждый избиратель обладает уникальным номером, то не составляет труда идентифицировать личность конкретного голосовавшего по этому самому номеру, что уничтожает тайну волеизъявления.
Сосредоточимся на последнем недостатке и рассмотрим решение проблемы, которое он вызывает.
Идеальное решение: протокол двух независимых агентств
Будем называть валидным избирателем, во-первых, человека, который является избирателем в прямом смысле этого слова, а, во-вторых, человека, который еще не голосовал. Тогда, когда к нам приходит избиратель, мы проверяем его на валидность, если он не является таковым, то не даем ему право голоса, если является, то даем ему бюллетень, после принимаем его обратно и заносим результат в базу, параллельно забывая имя избирателя, давшего нам этот бюллетень. Собственно говоря, именно так и реализованы классические очные выборы: избиратель приходит на участок, идентифицируется по паспорту, получает бюллетень, заходит в закрытую кабинку и делает свой выбор – проголосовать два раза он не может, да и нарушить тайну волеизъявления тоже практически невозможно.
В результате размышлений над реализацией такой процедуры было выдвинуто “идеальное” решение – так называемый протокол двух независимых агентств. Согласно задумке, первое агентство идентифицирует личность избирателя и присваивает ему некий индикатор, по которому второе агентство понимает – является человек валидным избирателем или нет. Идеальным такое решение называется по одной простой причине: в реальной жизни воплотить такое невозможно. Агентства должны быть независимыми и при этом подконтрольными государству (т.е. быть госструктурой), а это два взаимоисключающих понятия. А возлагать полномочия одного из агентств на какую-то коммерческую компанию, или тем более на иностранное государство, никто не будет, поскольку это прямая угроза национальной безопасности. Кроме того, даже если хотя бы одно из агентств будет сливать информацию третьему лицу, то определить кто за что голосовал тоже не составит труда.
Реальное решение: слепая подпись
Поскольку описанное выше решение невозможно реализовать на практике, а решать проблему все-таки нужно, в отечественной системе ЭГ был внедрен более сложный алгоритм, который называется слепой подписью. По сути идея там такая же, как и в случае протокола двух агентств, но с одной оговоркой – агентства могут быть не независимыми.
Для начала стоит ненадолго отвлечься от нашей темы и поговорить про слепую более детально.
Слепая подпись – это цифровая подпись, которая отличается тем, что подписывающее некий документ лицо не знает что именно оно подписывает. Можно разобрать алгоритм слепой подписи на конкретном примере. Допустим, Алиса хочет отправить тайное послание Василию, но Василий принимает информацию только от достоверных отправителей. Достоверен отправитель или нет определяет Боб, который в свою очередь не может прочитать письмо, а лишь проверяет, что отправитель тот, за кого себя выдает. Чтобы решить такую задачку, нужно действовать следующим образом:
1) Алиса пишет послание и запечатывает его в конверт.
2) Алиса отдает конверт Бобу, чтобы тот убедился в достоверности источника.
3) Боб понимает, кто такая Алиса, и клеит на письмо марку, тем самым подтверждая достоверность источника.
4) Алиса забирает письмо с маркой у Боба и отправляет послание Василию (разумеется, без обратного адреса).
5) Василий, получив письмо, видит на нем марку, убеждается в достоверности источника и читает содержимое, не зная при этом отправителя.
Если перевести эти рассуждения на математический язык, то получим следующее:
1) Алиса шифрует послание по правилув результате чего получается зашифрованное сообщение
2) Алиса отправляет шифротекст Бобу.
3) Боб подписывает полученный шифротекст, не зная его содержания, т.к.известна только Алисе, функциейполучая
4) Боб отсылает
5) Алиса убирает свое шифрование с вновь полученного подписанного сообщения получая -1
Таким образом, заменив Алису на Избирателя, послание – на бюллетень, Боба – на систему ЭГ, а Василия – на ЦИК, мы получим отлично работающую процедуру тайного голосования.
Стандарт слепой подписи и его криптостойкость
Существует множество стандартов электронных цифровых подписей (ЭЦП). Самый последний из них (ГОСТ_34.10-2018) был принят 1 июня 2019 года и применяется в том числе и в отечественной системе электронного голосования. Именно его мы и рассмотрим.
Обговорим параметры, фигурирующие в данном стандарте:
Длина секретного ключа составляет 256 бит.
Модуль эллиптической кривой удовлетворяет двум условиям: , простое число.
Эллиптическая кривая задается своим инвариантом на конечном поле , состоящим из элементов, по формуле
Порядок группы точек эллиптической кривой - это целое число, отличное от
Порядок (простое число) некоторой циклической подгруппы группы точек эллиптической кривой, удовлетворяющей следующим условиям:
Так называемый генератор подгруппы точка , для которой имеют место равенства , где нейтральный элемент.
так называемая хеш-функция. Она отображает сообщение в двоичные векторы длиною в 256 бит.
Целое число ключ шифрование, которым обладает любой пользователь, использующий цифровую подпись, и которое лежит в пределах
Точка ключ расшифрования, которым также обладает любой пользователь, использующий цифровую подпись, и который равен
Кроме того, для математической корректности алгоритма (в нюансы которой мы не будем погружаться), необходимо выполнение условий
Обратим внимание на хеш-функцию. Она представляет из себя двоичный вектор из 256 компонент: Двоичные векторы можно “сшивать” (операция конкатенации):
А также между ними и целыми числами можно построить биективное отображение по следующему правилу
Биективное оно потому, что формула, его задающая, есть ни что иное, как представление числа в двоичном виде
Итак, мы ввели все требуемые параметры и величины, поэтому теперь можем рассмотреть алгоритм действия стандарта.
Начнем с формирования ЭЦП. Наглядная блок-схема представлена на рисунке (см. рис. 4), поэтому распишем только формулы, которые мы применяем на каждом шаге.
Если , то возвращаемся к шагу 3).
Если , то возвращаемся к шагу 3).
Ставим векторы в соответствие числам
Теперь проверим ЭЦП. Также сошлемся на наглядную блок-схему (см. рис.5), а каждый шаг опишем сухой формулой.
подпись верна, иначе - нет.
Что же касается криптостойкости данного стандарта, то она определяется, во-первых, стойкостью алгоритма шифрования, а во-вторых, стойкостью хеш-функции.
Стойкость хеш-функции: Вероятность того, что хеш-функцию данного стандарта взломают подбором коллизии на фиксированное сообщение, составляет Если заниматься подбором произвольной коллизии, то вероятность повышается до но все равно остается чрезвычайно малой.
Стойкость алгоритма шифрования: она определяется проблемой дискретного логарифмирования в группе точек эллиптической кривой. Поскольку пока не существует алгоритмов этой оценки, обратимся к наибыстрейшему – методу Полларда. Для него вычислительная сложность оценивается как Следовательно, если положить, чтоимеет 256 разрядов, это обеспечит криптостойкость в операций.
Реализация слепой подписи на практике
В предыдущем параграфе был рассмотрен конкретный стандарт, в соответствии с которым функционирует российская система электронного голосования. Теперь обсудим, как именно происходит процесс голосования по этапам.
Порядок действий будет следующим:
1) Избиратель авторизуется на официальном портале. В нашем случае это “Госуслуги”. По сути гражданин просто сообщает свои персональные данные.
2) Система электронного голосования, обращаясь к этим персональным данным, определяет, является избиратель валидным или нет, после чего при положительном ответе выдает бюллетень. Последний, кстати, является абсолютно одинаковым для всех голосующих.
3) На устройстве избирателя генерируются секретный ключ и публичный ключ. Это происходит в браузере.
4) Ключ маскируется случайным образом, в результате чего получаем замаскированный ключ , по которому определить исходный возможно, только зная параметры данной маскировки.
5) Ключ отсылается на сервер, который выдает бюллетени.
6) Сервер подписываетсвоим ключом (назовем эту подпись), после чего отсылает ее обратно на устройство голосующего вместе со своим публичным ключом, который абсолютно одинаков для всех пользователей.
7) Бюллетень с выбранным вариантом шифруется публичным ключом с сервера и подписывается ключом.
8) На устройстве избирателя снимается маскировка с подписии ключа. Надо заметить, что процесс устроен таким образом, чтобы получилась действительная для ключа подпись .
9) Зашифрованный бюллетень с подписью (вместе с и ) отсылается на сервер приема бюллетеней.
10) Сервер по приему бюллетеней не знает публичного ключа, так как он был сгенерирован на устройстве голосующего, но проверяет подпись и то, что бюллетень был подписан секретной частью публичного ключа. Таким образом, сервер определяет, что бюллетень был выдан настоящему избирателю, правда, уже непонятно, какому именно.
11) После этой проверки сервер отправляет бюллетень в базу.
Получается, что сервера не владеют ни одним общим параметром, что, с одной стороны, допускает только валидных избирателей, с другой же, - сохраняет тайну волеизъявления.
Более наглядно алгоритм можно представить в виде блок-схемы (см. рис. 6).
Резюме и выводы
Подведем итоги обзора систем электронного голосования. Мы кратко обсудили историю создания и внедрения систем ЭГ в различных зарубежных странах. Отдельно проговорили положительные моменты ЭГ:
Нет привязки к определенному месту.
Затраты значительно ниже, а скорость обработки результатов выше.
Прозрачность.
Также обсудили и отрицательные стороны ЭГ:
Угроза хакерских атак
Утечка данных избирателей
Сложность в обеспечении тайности голосования
Далее мы сосредоточились на алгоритме реализации процесса голосования. Было рассмотрено как идеальное решение “протокол двух независимых агентств”, не реализуемое на практике, так и более сложное – “слепая подпись”, которое успешно воплощено в жизни. Мы обсудили ее главные положительные качества, а именно:
Валидность голосующего. Голосовать может только человек, обладающий избирательным правом и еще не принимавший участия в данных выборах.
Анонимность. Определить по бюллетеню личность избирателя не представляется возможном, что обеспечивает выполнение закона о тайне волеизъявления.
Невозможность фальсификаций. Голоса избирателей невозможно удалить из системы, равно как и изменить их.
После того, как мы поняли, что такое решение нам подходит, мы подробно разобрали один из действующих стандартов, а именно ГОСТ_34.10-2018. И, как показала оценка вероятности его взлома, поняли, что этот стандарт обеспечивает очень высокую надежность.
Наконец, мы на пальцах обсудили процедуру электронных выборов – как именно происходит тайное голосование.
Подводя итого, можно сказать, что рассмотренные алгоритмы и стандарты удовлетворяют всем требованиям к системе голосования, обеспечивая ей верифицируемость избирателей, анонимность, конфиденциальность голосов и надежность.
Комментарии (40)
tyomitch
12.12.2021 14:54+2Не вижу, что мешает Бобу удостоверить 100500 конвертов, созданных им самим, и переслать их Василию как будто бы от 100500 валидных избирателей.
eugene_feo Автор
12.12.2021 15:40-4Если бы Боб был человеком, то, разумеется, ничего. Но здесь это лишь пример на пальцах для лучшего понимания. В технической реализации же в качестве Боба выступает система ЭГ, которая лишена такой способности.
tyomitch
12.12.2021 15:51+13Как можно узнать, лишена ли она такой способности?
Если мы ей доверяем, то все навороты со слепыми подписями незачем. Если не доверяем — то все навороты со слепыми подписями ничего не дают.
Daddy_Cool
12.12.2021 15:54+2Как-то очень сложно. Почему нельзя проще?
1. Человек заходит на «Госуслуги», видит список для голосования. Голосует. Его IP, ФИО, выбор — сохраняется в базе и далее передается для анализа настроений в стране.
2. Результаты голосования непрерывно корректируются на основании онлайн-голосования и экзит-поллов в соответствии с требованиями заказчика.
А шифрование — да… это конечно хорошо…
— А если серьёзно — как ПОТОМ независимому агентству проверить, что каждый проголосовал так как хотел? Потому что 90% будет лениво проверять не утек ли куда-нибудь его голос и не оказалось ли так, что кто-то проголосовал хотят вовсе не собирался этого делать.
tyomitch
12.12.2021 16:00+3И ещё одно мутное место: после пункта «11) После этой проверки сервер отправляет бюллетень в базу.» как избиратель может узнать, что его голос а) учтён в принципе; б) учтён верно?
Mairon
12.12.2021 16:11+5Все попытки техническими методами прикрыть фундаментальные изъяны современных демократических голосований - мёртвому припарки.
Почему-то по умолчанию считается, что голосование должно быть:
1). Тайным;
2). Необязательным.
Хотя никаких бесспорных аргументов, почему это должно быть так, не существует.
tyomitch
12.12.2021 16:19+1Это не «по умолчанию» считается, это прямым текстом вписано во Всеобщую декларацию прав человека, статья 21.
Mairon
12.12.2021 17:02+3О том и речь - почему-то было решено так, а с чего это должно быть так - никаких бесспорных аргументов не существует.
tyomitch
12.12.2021 21:30Как и все остальные положения Декларации, начиная со «Все люди рождаются свободными и равными в своем достоинстве и правах.» — это вопрос нравственного, а не рационального выбора.
iboltaev
12.12.2021 21:34+4да как сказать не существует. Если голосование будет не тайным - будет конфликт в обществе, притеснение голосующих меньшинств, дискриминация, торговля голосами, перекосы в пользу доминирующего кандидата из-за страха перед дискриминацией и тд. Насчет необязательности голосования явных аргументов нет.
tyomitch
12.12.2021 22:04Обязательное голосование применяется, например, в Австралии, Бельгии, Люксембурге, и одном швейцарском кантоне.
en.wikipedia.org/wiki/Compulsory_voting#Enforced
Нетайного нет нигде.
ifap
12.12.2021 22:43+1Насчет необязательности голосования явных аргументов нет.
Эмм… свобода воли и свобода ее изъявления, не?
Mairon
12.12.2021 22:51"Если голосование будет не тайным - будет конфликт в обществе, притеснение голосующих меньшинств, дискриминация, торговля голосами, перекосы в пользу доминирующего кандидата из-за страха перед дискриминацией и тд"
А где-то было открытое и публичное голосование, чтобы утверждать, что произойдёт именно это? Это же совершенно непроверяемое утверждение. ЕМНИП, в истории были примеры открытого и публичного голосования - в полисах Эллады и некоторые формы голосований в Швейцарии, и я не слышал исследований о том, что там кто-то кого-то притеснял или дискриминировал.
rinaty
12.12.2021 23:56+5и не надо никого притеснять, просто достаточно:
а) знать, что твой работодатель одобряет кандидата А
б) знать, что твой работодатель узнает как ты проголосовал
все, после этого 90% проголосует за А. Тех кто так или иначе работает на государство у нас пол страны.
Mairon
14.12.2021 11:22И работодатель возьмёт и уволит 90% сотрудников по основанию "проголосовал не так"? Так не бывает.
Ну и в целом, если в стране такие риски на самом деле есть, то тайна голосования не в состоянии защитить волеизъявление, а становится ещё одним инструментом фрода в условиях разложившихся и неработающих общественных институтов.
Wesha
13.12.2021 02:24+2Почему-то по умолчанию считается, что голосование должно быть:
1). Тайным;
2). Необязательным.
Хотя никаких бесспорных аргументов, почему это должно быть так, не существует.1) Потому что осознание того, что все знают, за кого ты проголосовал (а некоторые, имея такое знание, могут основательно подпортить тебе жизнь), мягко говоря, не всех устраивает.
2) Если сделать голосование обязательным, то те, кто ранее голосовать не желал по той или иной причине, могут протестно проголосовать за фугу в мундире.Mairon
14.12.2021 11:271). На нормальных выборах есть много опций проголосовать так, чтобы к тебе не подкопались: "против всех", "воздержаться", "вписать произвольное имя".
2). Как я писал выше — обязанностей, от которых нельзя отказаться, в стране много. Налоги, служба в армии и т.п. Обязанность проголосовать при этом — куда более важная для общества, чем год красить газоны.
Wesha
15.12.2021 02:40На нормальных выборах есть много опций проголосовать так, чтобы к тебе не подкопались: "против всех", "воздержаться", "вписать произвольное имя".
Ну вот в вышеприведённом рассказе как раз "по приколу вписали произвольное имя", и оказалось, что Петросянов в стране многовато...
valis
12.12.2021 16:23+7Ключевая "особенность" голосование в том, что это по сути игра против действующей власти, которая обеспечивает проведение самого голосования. Поэтому власть не может быть в данном случае доверенным лицом.
В офлайн голосовании доверенными лицами являются наблюдатели за голосованием. Которые в теории независимы.
Как же обеспечить наблюдателей в онлайн голосовании? Классические централизованные системы в данном случае не подходят ибо они не прозрачны для наблюдателя.
На поле выходят системы на основании блокчейн. Но в данном случае подтверждение транзакций выполняется не PoW а PoS. Т/е каждому наблюдателю должно выдавится некий пул, человек выполняет голосование, наблюдатели подтверждают.
Технически как это реализовать я слабо представляю, но концептуально должно выглядеть так.
tyomitch
12.12.2021 16:36+1Блокчейн мало чем помогает, потому что все самые мутные вещи происходят до записи в него.
Физический наблюдатель на физическом участке может видеть, что голоса подают живые люди; «наблюдатели за блокчейном» такой возможности лишены.Tarakanator
13.12.2021 11:16+1Но помогает. Сложнее фальсифицировать в том планет, что левые данные внести конечно можно. Но вот если ты занёс очевидно левые данные, то удалить оттуда их уже нельзя.
JediPhilosopher
13.12.2021 13:16+1Это при условии, что ноды блокчейна есть в том числе у независимых организаций.
В ситуации, когда весь блокчейн держит государство, оно там может переписывать что угодно и как угодно. В этом плане блокчейн ничем не лучше обычной SQL БД.
Tarakanator
13.12.2021 13:20+1Даже если ноды у государства, достаточно доступа на чтение, чтобы вначале скачать блокчейн, а потом смотреть что с ним происходит.
tyomitch
13.12.2021 13:26В этом плане блокчейн ничем не лучше обычной SQL БД.
Tarakanator
13.12.2021 13:47Я не знаком с SQL, поправьте если я ошибаюсь:
Сама логика работы с обычной БД подразумевает возможность удаления информации. Так что удалённые записи ещё не означают фальсификацию выборов. Может это аннулированные голоса отбросили и потёрли их из базы?
А в случае с блокчейном пришлось извращаться. И вводить ещё одну не афишируемую БД со списком недействительных голосов.Т.е. формально голосование проходило через блокчейн, но при этом в блокчейн положили не всю информацию, что оставило возможность махинаций.
Я на всякий случай уточню, чтоб не получилось что я про Фому, а вы про Ерёму.
Я не утверждаю что блокчейн необходим или достаточен для правильного хранения информации.
Я утверждаю что он содержит в себе принципы, которые этому заметно помогают.В моих глазах практически невозможно случайно сделать некорректную БД для голосования через блокчейн.
А вот через обычную БД легко пост фактум заявить что мы не подумали о такой фозможности, поэтому защиту от вот этого не предусмотрели.
Elsajalee
12.12.2021 16:46+1Даём каждому избирателю идентификатор, абсолютно случайный, одноразовый, уникальный. При личной явке - на листочке написан, вытягивается как лотерея; при электронном голосовании, очевидно, на экране (кстати, при электронном - прощай анонимность; вы же голосуете авторизованным). Далее голосование идёт "под копирку", т.е. у избирателя остается за кого он проголосовал и в ящик тоже самое (сей факт тоже может проверятся электроникой, без участия человека). Итог голосования: полный список (идентификатор)=(за кого). Так каждый человек может проверить, верно ли учтён его голос. Но не проверить вбросы (которые всё равно не проверить при электроном голосовании). Если идентификатор снабдить номером участка, т.е. (номер участка)(идентификатор)=(за кого), то независимые наблюдатели хоть что-то (количество пришедших избирателей соответствует опубликованному списку) смогут подтвердить.
iboltaev
12.12.2021 21:37как избиратель потом докажет, что он голосовал на самом деле по-другому?
Elsajalee
12.12.2021 21:44голосование идёт "под копирку", т.е. у избирателя остается за кого он проголосовал
2 копии бюллетеня же. Принимается автоматом, только если заполнено одинаково (как и ранее - исправления не допускаются); одна остается на руках, одна в урне.
Поиск на сайте ЦИК- ввел идентификатор бюллетеня - получил результат + полный список в виде txt|csv|...
vasilevss
12.12.2021 21:31Все эти писульки и агитки для любителей овсяных хлопьев'ов.
Нужен блокчейн с открытым кодом для реестра голосов
Нужна вебморда с открытым кодом для бабушек
Нужен прозрачный деплой всего этого дела.
И последнее, приступать к такому голосованию после десятка выполненных аудитов и десятков тестов на выборах в местное самоуправление.
Daddy_Cool
12.12.2021 23:38Первый абзац вот этого комментария объясняет почему это очень трудно сделать.
habr.com/ru/post/594995/#comment_23812337
maslyaev
13.12.2021 11:38Напомню, что в РФ всем, что имеет хоть какое-то отношение к криптографии, занимается ФСБ - структура, о доверии к которой говорить просто смешно.
DaturInnoxia
13.12.2021 14:58+2Любые попытки сделать анонимное голосование достоверным нивелируются рукой власть имущего, который имеет прямой доступ к этому самому голосованию и может подрисовать любые цифры.
Довод про то, что анонимность чего-то там решает - полная ерунда. Спросите своих родителей, бюджетников, военнослужащих, как их отправляли на участок делать "правильный" выбор.
ifap
TL; TR: Новорег публикует духоподъемную статью про электронное голосование; ГОСТ 34.10-2018 — рулит!
eugene_feo Автор
Большое спасибо за такую оценку!