Дэг выборы что это
Блокчейн нас подвёл? Почему ДЭГ — это плохо и можем ли мы адекватно контролировать процесс подсчёта голосов?
Интересно наблюдать, как дискредитируется термин блокчейна на выборах в госдуму. Вроде голосование было на блокчейне, но его якобы подделали. Т.е. блокчейн можно подделать или ЦИК и ДИТ нам подсунули какой-то лохчейн вместо блокчейна. И мало кто обсуждает происходящее по существу без эмоций, связанных с результатами партий и кандидатов.
За последние пару дней уже появилось несколько хороших статей про Дистанционное электронное голосование и анализ его данных. Например, «Что же не так с ДЭГ в Москве?» Так же есть отличные разборы данных на канале Каца. А так же чуть раньше этой опубликованная статья «Что же не так с любыми электронными голосованиями?», поднимающая схожие вопросы о применимости ДЭГ вообще.
Честно скажу, в ДЭГ я не очень верил (голосовал на старом добром участке), не ожидал, что в Москве на ДЭГ запишется так много человек, и никакого интереса к технологии до выборов не проявлял. А зря.
Что не так?
Судя по тем осколкам описаний, что удалось найти, верификацией блоков занимались всего 4 узла валидатора. Кто это были? ДИТ и ЦИК? Почему всего 4?
Чем подписывались голоса, хэши которых кладутся в блоки? Если сертификатом избирателя на Госуслугах, то у большинства сертификат лежит на серверах Госуслуг, входят они по паролю и СМС, и они даже открытого ключа своего не знают, тем более приватного. Или вообще по какому-то специально для этого созданному ключу? В общем, проверить избиратели ничего не могут, а их сертификат всё равно доступен кому-то в системе Госуслуг.
В теории каждый избиратель, зная свой открытый ключ, мог бы проверить, сколько он раз голосовал и как. Это дало бы возможность каждому из нас проверить, что переголосования (для Москвы), неучёта голоса, многократного учёта голоса или иного подлога не произошло. Однако нехватка ответов на вопросы выше мы не можем ничего проверить. Есть инструкция, но как проверить, если не записал на момент голосования номер своей тразакции?
Я лично тоже решил проверить все выводы, которые сделала Брюханова, и не понял как выделить переголосования. Получается, выложенных данных на сайте не хватает для полного анализа данных.
UPD: Доступа к спискам избирателей, я так понял, тоже не было. А это полный аналог доступа к журналам на оффлайн участке. Нет возможности проверить, что эти люди реально существую, и что они имеют право голосовать именно по этому участку.
В итоге от блокчейна и хорошей технологии остались рожки да ножки. Ничего непонимающим в криптографии людям покажется, что фуфло это блокчейн, и доверять ему нельзя. А выборы опять, возможно, фальсифицировали, только во всём этом стало ещё сложнее разбираться даже техническим специалистам.
Из сказанного видно, что сама технология как есть вообще не очень подходит для тайного (анонимного) голосования. Скорее всего из технологии блокчейн применили только термин и кучу бессмысленного шифрования и подписания. В остальном это обычная база данных с возможностью всё переписать/нарисовать/изменить без нашего участия, часть которой нам ещё и не покажут. Код нам тоже не показывают, аудит его сделать нельзя. Технология совсем не выглядит открытой, документации нет, открытого тестирования надёжности алгоритмов нет. И понятно, почему. При детальном изучении скорее всего выяснится, что математически/программно система дырявая, доверия к ней будет столько же, сколько напёрсточнику на рынке в 90-х.
Как хотелось бы
Напомню, что главными критериями тайного голосования являются анонимность волеизъявления (невозможность связать голос с конкретным лицом) и открытость подсчётов (гарантии того, что учтены голоса всех пришедших и только они).
Поэтому в текущую систему следовало бы ввести следующие изменения:
Правильно для голосования требовать делать сертификаты с генерацией на стороне избирателя, а не с хранением сертификата на Госуслугах. Это исключит возможность переголосования за избирателя, которая есть сейчас.
UPD: Уменьшить грануляцию (размер участка) до типичного оффлайн участка (
1000 человек), чтобы были лучше видны статистические отклонения по районам и можно было легче проверять списки избирателей на участках. Это позволит наблюдателям в районах легче отслеживать «мёртвые души». Я например, знаю, кто никогда не голосует в моём доме, и каждые выборы «подсматриваю» в журнал при получении бюллетеня (пока подписываю), чтобы проверить, что за «молчунов» никто ничего не вписал (я прихожу всегда к закрытию участка).
Всё это позволило бы вернуть доверие к ДЭГ. Но, кажется, такой задачи не стоит.
Поэтому пока мы не знаем ни как это работает, не видим полных данных, но конечным числам и графикам должны почему-то доверять. Такой вот zero knowledge и full trust в представлении ЦИК.
Ещё раз про анонимность
Следить тут можно или связав списки (и тогда плакала анонимность), ли выдавать каждому рандомный токен (бюллетень) для голосования (идеально для анонимности человек сам его сгенерирует), не связанный с его личным ключом авторизации на участке, но тогда никто кроме самого избирателя не сможет проверить, что его голос учтён и он за того кандидата, а не за него что-то там вбросили. Т.е. каждый должен стать наблюдателем, а сторонние наблюдатели будут бессильны.
В общем, блокчейн тут вообще не к месту. Хайпанули на нём нормально власти, подменив доверие к системе сложным термином.
Тем, кто интересуется, можно почитать ещё вот эту хорошую статью и полистать краткую доку на официальном сайте.
Картинка от прекрасной petit.pi.
Тем, кто хочет самостоятельно поиграться с данными, прошу под кат
Скрипт для рисования графиков голосования по округам
Распакуйте и загрузите в PostgreSQL в базу deg
Для тех, кто первый раз пользуется PostgreSQL (как я), сразу ставьте Adminer из их репозитория. Будет легче визуализировать данные.
Я рисовал графики в Gnuplot, но вы можете заменить на что угодно.
«Удалёнка» для голосования: КПРФ возмущается, «Единая Россия» скажет, что всё чудесно
Коммунисты внесли в Госдуму законопроект об отмене ДЭГ
Депутаты от КПРФ — Геннадий Зюганов, Юрий Афонин, Николай Коломейцев, Иван Мельников, Валерий Рашкин и Юрий Синельщиков — внесли на рассмотрение Госдумой законопроект об отмене дистанционного электронного голосования (ДЭГ) в России.
В пояснительной записке к документу говорится, что исключить действие определяющих ДЭГ норм законов предлагается «до завершения формирования полноценной системы дистанционного электронного голосования, обеспечивающей на программно-техническом, организационном и правовых уровнях реализацию всех основополагающих принципов выборов».
Электронное голосование применялось на последних думских выборах в семи регионах России: в Курской, Мурманской, Нижегородской, Ростовской и Ярославской области, а также в Севастополе и Москве. Применение ДЭГ выявило серьёзные недостатки этой системы, а в Москве — и вовсе опасения о честности подсчёта голосов избирателей. Среди наиболее скандальных эпизодов применения ДЭГ в столице: возможность переголосования он-лайн, серьёзная задержка с публикацией результатов и сенсационное изменение итогов выборов по одномандатным округам в результате подсчёта голосов из системы ДЭГ.
КПРФ не оставила без внимания результаты в Москве. Коммунисты не признали это голосование. После выборов представители партии провели несколько публичных встреч с избирателями, оспаривали итоги ДЭГ в суде. Негативное отношение партии к процедуре электронного голосования выразил лидер КПРФ Геннадий Зюганов на встрече с Владимиром Путиным.
В регионах России, кроме Москвы, использовали платформу, разработанную Центризбиркомом, Минцифры и «Ростелекомом». Сразу после выборов председатель Центризбиркома Элла Памфилова частично признала недостатки ДЭГ в Москве и заявила, что в будущем столичная платформа применяться не будет.
«Мы проводили электронное голосование в других регионах на федеральной платформе, и ни одного замечания или жалобы ни в одном из регионов нет, ни у кого не вызывают сомнения результаты, — сказала Памфилова в эфире радиостанции „Коммерсантъ FM“. — Дальше, конечно, будет единая федеральная платформа. Мы будем расширять возможность голосования регионов именно на общей платформе. В конце концов, Москве придется подчиняться общим правилам».
Инициатива коммунистов имеет чёткую цель — отменить непроверяемое электронное голосование, чтобы в Государственной Думе не было «фейковых» депутатов, избранных электронными ботами, — заявил член президиума Компартии, секретарь ЦК КПРФ и один из основателей Центра исследований политической культуры России Сергей Обухов.
— В нынешней Думе сидит порядка 50 человек из «Единой России», которые избраны так называемыми надомниками, когда скорость надомного голосования составляла порой 50 секунд! И ещё порядка 20 человек избраны так называемыми электронными ботами. Это пора прекращать! Надо отменять непроверяемое электронное голосование. Никакой общественный контроль за этим невозможен.
Напомним, Конституционный суд Германии и все ведущие страны запретили эту форму голосования как неподдающуюся общественному контролю. Поэтому в данном случае мы в общемировом тренде и защищаем конституционные права наших граждан.
«СП»: — ДЭГ себя полностью дискредитировал или это касается только московского формата?
— То же самое и электронное голосование, которое было в других регионах — его результаты также в корне отличаются от результатов голосования по обычным физическим бюллетеням. И оно также не контролируемо. Поэтому хрен редьки не слаще. Московский ДЭГ построен, как нам представляется, на одном из облаков криптовалюты «Эфириум». Да и вообще у нас есть подозрения, что использовали для майнинга криптовалюты это оборудование (для проведения дистанционного электронного голосования, — ред.). Но это мы будем дальше в судах выяснять и доказывать.
«СП»: — Каковы перспективы внесённого коммунистами законопроекта об отмене электронного голосования?
— В Думе сейчас, когда конституционное большинство у «Единой России», у всех законопроектов известные перспективы. Но это не отменяет политической борьбы и формирования законодательной базы на постолигархический период, когда не будет этой партии олигархата. А это неминуемо и довольно скоро произойдёт.
«СП»: — Что ещё можно сделать для отмены электронного голосования в России, кроме законодательных инициатив?
— Общественная борьба, массовые протесты, борьба за общественное мнение.
«СП»: — КПРФ готова на эти шаги?
— КПРФ только этим и занимается.
Экономист Василий Колташов считает, что закон об отмене ДЭГ в Госдуме принят не будет. Но это не значит, что его не имело смысла подавать.
— Электронное голосование ещё является экспериментальной формой голосования в России. Оно только-только вводится в оборот. И будет продвигаться дальше, несмотря на то, что в Москве было много шума по поводу того, что подсчёт результатов электронного голосования вёлся как-то неправильно. Было понятно, что оппозиционно настроенные избиратели не пойдут на электронное голосование в принципе. И то, что их там не было по итогам голосования, — закономерно.
Критика дистанционного электронного голосования логична, отражает определённые настроение — и поэтому важна. Критика может как-то положительно повлиять на этот процесс — и процедура голосования будет более прозрачной и будет вызывать меньше вопросов. Однако она бесполезна, в том смысле, что законодательство будет всё равно предоставлять возможность электронного голосования, Ограничение ДЭГ специальным законом не пройдёт.
«СП»: — Что мешает утверждению законодательной инициативы коммунистов сейчас?
— Для принятия такого закона необходимо большинство в Госдуме. А у инициаторов такого большинства нет. Поэтому я не ожидаю, что эта тема вообще проживёт долго.
Обзор системы дистанционного электронного голосования ЦИК РФ
31 августа 2020 состоялся публичный тест системы дистанционного электронного голосования (далее ДЭГ) с применением технологии блокчейн, разрабатываемой по заказу ЦИК РФ.
Для знакомства с новой системой электронного голосования и понимания того, какую роль в ней играет технология блокчейн и какие еще компоненты используются, мы начинаем серию публикаций, посвященных основным техническим решениям, применяемым в системе. Начать предлагаем по порядку — с требований к системе и функциям участников процесса
Требования к системе
Основные требования, которые предъявляются к любой системе для голосования, в целом одинаковы и для традиционного очного голосования, и для дистанционного электронного голосования, и определены Федеральным законом от 12.06.2002 N 67-ФЗ (ред. от 31.07.2020) «Об основных гарантиях избирательных прав и права на участие в референдуме граждан Российской Федерации».
Все эти участники взаимодействуют друг с другом.
Протокол взаимодействия
Рассмотрим процесс голосования на традиционном участке, с урной и бумажными бюллетенями. В общем упрощенном виде он выглядит так: избиратель приходит на участок и предъявляет документ, удостоверяющий личность (паспорт). На участке работает участковая избирательная комиссия, член которой проверяет личность избирателя и наличие его в списке избирателей, который был составлен ранее. Если избиратель найден, член комиссии выдает избирателю бюллетень, а избиратель расписывается в получении бюллетеня. После этого избиратель отправляется в кабинку для голосования, заполняет бюллетень, и опускает его в урну. Чтобы все процедуры соблюдались строго по закону, за всем этим следят наблюдатели (представители кандидатов, общественных институтов наблюдения). После завершения голосования избирательная комиссия в присутствии наблюдателей производит подсчет голосов и устанавливает итоги голосования.
Необходимые для проведения голосования свойства в традиционной системе голосования обеспечиваются организационными мерами и установленным порядком взаимодействия участников: проверкой паспортов избирателей, личной росписью за бюллетени, использованием кабинок для голосования и опечатанных урн для бюллетеней, порядком подсчета голосов и т.д.
Для информационной системы, которой является система дистанционного электронного голосования, этот порядок взаимодействия называется протоколом. Поскольку все взаимодействие у нас становится цифровым, этот протокол может рассматриваться как алгоритм, который реализуют отдельные компоненты системы, и комплекс организационно-технических мероприятий, выполняемых пользователями.
Цифровое взаимодействие накладывает определенные требования к реализуемым алгоритмам. Давайте рассмотрим действия, выполняемые на традиционном участке, в терминах информационных систем и то, как это реализовано в рассматриваемой нами системе ДЭГ.
Сразу скажем – технология блокчейн не является здесь «серебряной пулей», которая решает все вопросы. Для создания подобной системы потребовалось разработать большое количество программных и аппаратных компонентов, отвечающих за разные задачи, и связать их единым процессом и протоколом. Но при этом все эти компоненты взаимодействуют с блокчейн-платформой.
Компоненты системы
С технической точки зрения система ДЭГ представляет из себя программно-технический комплекс (далее ПТК), объединяющий набор компонентов для обеспечения взаимодействия участников избирательного процесса в единой информационной среде.
Схема взаимодействия компонентов и участников системы ПТК ДЭГ приведена ниже на рисунке.
Процесс дистанционного голосования
Теперь подробно рассмотрим процесс дистанционного электронного голосования и его реализацию компонентами ПТК ДЭГ.
Согласно Порядку дистанционного электронного голосования, для включения в список участников дистанционного электронного голосования избирателю необходимо подать заявление на портале Госуслуг. При этом подать такое заявление могут только те пользователи, которые имеют подтвержденную учетную запись и успешно сопоставлены с регистром избирателей, участников референдума системы ГАС «Выборы». После получения заявления данные избирателя еще раз проходят проверку в ЦИК России и загружаются в компонент «Список избирателей» ПТК ДЭГ. Процесс загрузки сопровождается записью уникальных идентификаторов в блокчейн. Доступ к просмотру списка имеют члены избирательной комиссии и наблюдатели с помощью специального АРМ, размещенного в помещении избирательной комиссии.
При визите избирателя на участок происходит его аутентификация (сопоставление с данными паспорта) и идентификация в списке избирателей, а также проверка того, что этот избиратель ранее еще не получал бюллетень. Здесь важный момент – невозможно установить, опустил ли избиратель полученный бюллетень в урну или нет, только факт того, что бюллетень уже выдавался ранее. В случае ПТК ДЭГ визит избирателя представляет собой обращение пользователя на Портал ДЭГ – это сайт, расположенный по адресу vybory.gov.ru Как и на традиционном участке, на сайте размещены информационные материалы о проводимых избирательных кампаниях, сведения о кандидатах и другая информация. Для проведения идентификации и аутентификации используется ЕСИА Портала Госуслуг. Таким образом, сохраняется общая схема идентификации как при подаче заявления, так и при участии в голосовании.
После этого начинается процедура анонимизации – избирателю выдается бюллетень, который не содержит никаких идентификационных отметок: у него нет номера, он никак не связан с избирателем, которому он был выдан. Интересно рассмотреть вариант, когда участок оборудован комплексами электронного голосования – в этом случае анонимизация выполняется следующим образом: вместо бумажного бюллетеня избирателю предлагается выбрать из стопки любую карточку со штрих-кодом, с которой он подойдет к устройству для голосования. На карточке нет никаких данных об избирателе, только код, определяющий, какой бюллетень должен быть предоставлен устройством при предъявлении такой карточки. При полностью цифровом взаимодействии основная задача – реализовать такой алгоритм анонимизации, чтобы, с одной стороны, невозможно было установить никакие идентификационные данные пользователя, а с другой стороны – предоставить возможность голосования только тем пользователем, кто ранее был идентифицирован в списке. Для ее решения в ПТК ДЭГ применяется криптографический алгоритм, известный в профессиональной среде как «слепая электронная подпись». Мы подробно расскажем о нем в следующих публикациях, а также опубликуем исходный код, вы тоже можете собрать дополнительную информацию из публикаций в интернете по ключевым словам – «криптографические протоколы тайного голосования» или «слепая подпись»
Затем избиратель заполняет бюллетень в месте, где невозможно увидеть сделанный выбор (закрытая кабинка) – если в нашей информационной системе избиратель голосует дистанционно, то единственное такое место – это личное устройство пользователя. Для этого пользователь сначала переводится на другой домен – в анонимную зону. Перед переходом можно поднять VPN-соединение и сменить IP-адрес. На этом домене и происходит отображение бюллетеня и обработка выбора пользователя. Исходный код, который исполняется на устройстве пользователя, изначально открыт – его можно увидеть в браузере.
После того как выбор сделан, бюллетень зашифровывается на устройстве пользователя с применением специальной схемы шифрования, отправляется и записывается в компонент «Распределенное хранение и подсчет голосов», построенный на базе блокчейн-платформы.
Одна из важнейших характеристик протокола – это невозможность узнать итоги голосования до его завершения. На традиционном участке это обеспечивается опечатыванием избирательной урны и контролем со стороны наблюдателей. В цифровом взаимодействии лучшим решением является шифрование выбора избирателя. Используемый алгоритм шифрования исключает возможность раскрытия результатов до завершения голосования. Для этого используется схема с двумя ключами: одним (открытым) ключом, который известен всем участникам, производится шифрование голоса. Расшифровать его этим же ключом нельзя, нужен второй (закрытый) ключ. Закрытый же ключ разделен между участниками избирательного процесса (членами избирательных комиссий, общественной палаты, операторами серверов подсчета, и так далее) таким образом, что каждая отдельная часть ключа бесполезна. Приступить к расшифровке можно только после того, как закрытый ключ будет собран. В рассматриваемой системе процедура разделения ключей включает в себя несколько этапов: разделение части ключа внутри системы, разделение ключа вне системы и формирование общего публичного ключа. Мы подробно покажем процесс шифрования и работы с криптографическими ключами в следующих публикациях.
После того как ключ собран и загружен, начинается подсчет итогов для их дальнейшей фиксации в блокчейне и последующего оглашения. Особенностью рассматриваемой системы является использование технологии гомоморфного шифрования. Мы подробно опишем этот алгоритм в следующих публикациях и расскажем о том, почему эта технология широко используется для создания систем голосования. А сейчас отметим ее основную особенность: записанные в систему учета зашифрованные бюллетени можно без расшифрования скомбинировать таким образом, что результатом расшифровки такого комбинированного шифротекста будет суммированное значение по каждому варианту выбора в бюллетенях. При этом в системе, конечно, реализованы математические доказательства корректности такого расчета, которые также записываются в систему учета и могут быть проверены наблюдателями.
Ниже приведена схема процесса голосования.
Блокчейн-платформа
Теперь, когда мы разобрали основные особенности реализации системы дистанционного электронного голосования, ответим на вопрос, с которого начинали – а какую роль в этом играет технология блокчейн и какие задачи она позволяет решить?
В реализованной системе дистанционного голосования технология блокчейн решает определенный круг задач.
Функциональность применяемой блокчейн-платформы обогащена использованием смарт-контрактов. Смарт-контракты проверяют каждую транзакцию с зашифрованными бюллетенями на подлинность электронной и «слепой» подписей, а также проводят базовые проверки корректности заполнения зашифрованного бюллетеня.
При этом в рассматриваемой системе дистанционного электронного голосования компонент «Распределенное хранение и подсчет голосов» не ограничивается только блокчейн-узлами. Для каждого узла может быть развернут отдельный сервер, который реализует основные криптографические функции протокола голосования – серверы подсчета.
Серверы подсчета
Это децентрализованные компоненты, обеспечивающие процедуру распределенной генерации ключа шифрования бюллетеней, а также расшифрование и подсчет итогов голосования. В их задачи входит:
Для придания системе необходимых свойств на различных этапах процесса голосования используются следующие криптографические алгоритмы:
Итоги
Давайте подведем некий промежуточный итог рассмотрения системы дистанционного электронного голосования. Мы кратко описали процесс и основные компоненты, которые его реализуют, а также определи средства достижения необходимых для любой системы голосования свойств:
Протокол, который невозможен: как на самом деле в ДЭГ обеспечивают тайну голосования
В предыдущей публикации мы сравнивали российские системы ДЭГ (дистанционного электронного голосования) с эстонскими — и мгновенно залезли в такие технические детали, как слепая подпись, ключевые пары и так далее, то есть, по сути, в архитектуру систем ДЭГ.
Впрочем, залезли мы относительно поверхностно — на самом деле, российская система ДЭГ (для определённости дальше будем описывать федеральную систему, ибо она в целом интереснее московской) с технической точки зрения устроена крайне непросто, но сложность эта имеет причину. И большинство комментариев о том, что «начальнику на стол ляжет список, кто как проголосовал» — из непонимания или нежелания, иногда намеренного, разобраться в этой сложности.
Конкретные объяснения, «почему с ДЭГ всё плохо», зависят от квалификации высказывающегося — и простирается от «какие числа захотят, такие и покажут» (Дарья Митина, «Коммунисты России», на недавнем круглом столе у Александра Асафова) до ссылок на протокол двух агентств с указанием на отсутствие таковых агентств (статья Александра Исавнина на Хабре).
Попробуем разобраться, так ли всё плохо на самом деле, как устроена российская — для определённости возьмём федеральную, которую делает «Ростелеком», она интереснее — система ДЭГ, что там с протоколом двух агентств и что помешает показать такие числа, какие захотят. Ну и заодно — какие есть основания верить, что система реализована действительно так, как говорится в документах.
Надеемся, вам будет интересно — в конце концов, на Хабре можно быть равнодушным к выборам, но не к сложным технологическим системам!
Опираться мы будем на:
презентацию архитектуры федеральной системы ДЭГ, сделанную в конце июля Юрием Сатировым из «Ростелекома» (запись лекции на YouTube, презентация в PDF)
опубликованное ранее ЦИК России официальное описание этой архитектуры (PDF раз, PDF два)
презентацию модели угроз и нарушителя, представленную на одном из заседаний экспертной рабочей группы при ЦИК России
наше прямое общение с «Ростелекомом» и ЦИК России по тем вопросам, которые нам показались неясными
Текст подготовлен при активном участии Олега Артамонова, наблюдателя за ДЭГ в 2020 году и члена ТИК ДЭГ в 2021 году. Выражаем благодарность за оперативные ответы на наши вопросы Юрию Сатирову (Ростелеком), Артёму Калихову (Waves Enterprises) и Георгию Грицаю (ЦИК России).
Начнём с обсуждения того, рассматривают ли вообще авторы системы такие вещи, как возможность нарушения тайны голосования, в качестве угрозы.
Модель угроз и нарушителя
Модель угроз и нарушителя (МУиН) — это достаточно традиционный для IT-систем документ, описывающий, каким именно и с чьей стороны атакам и опасностям они могут подвергнуться. Банальные угрозы в целом всем очевидны — хакеры, DDoS, пожар, наводнение, землетрясение и экскаватор в поисках кабеля.
Значительно интереснее угрозы, специфические для конкретной системы — те, которые повлекут не просто её отказ, а скажем так, недопустимое поведение: утрату или искажение обрабатываемых данных, раскрытие внутренней информации. В случае электоральных систем они крайне критичны, так как подозрение на успешную атаку на систему может привести к срыву выборов.
Вообще говоря, есть три вида угроз:
социальная: т.н. голосование под давлением, когда человека принуждает к определённому выбору руководство или родственники;
электоральная: когда проводятся манипуляции на уровне процедур избирательной системы, например, вброс бюллетеней;
техническая: когда осуществляется непосредственная атака на инфраструктуру ПТК ДЭГ (причём как снаружи, так и изнутри).
Обсуждаемая модель угроз работает с третьей категорией — она описывает, какие именно угрозы от каких именно злоумышленников, от иностранных спецслужб до недобросовестных сотрудников, могут быть направлены против ПТК ДЭГ.
Полный текст модели угроз и нарушителя (это примерно полтораста страниц) пока что ЦИК России не опубликован, однако на одном из заседаний экспертной группы при ЦИК была представлена презентация с основными тезисами, на базе которых МУиН формируется. На днях была выложена также выписка из модели угроз, но ничего принципиально нового она нам не добавляет.
Традиционный вопрос журналистов про МУиН, в принципе, очевиден и предельно банален — «а предусмотрена ли защита от иностранных хакеров?» (интересно, как они представляют себе отрицательный ответ?). Однако нас больше интересует вторая часть таблички — это угрозы внутренние.
Как можно заметить, в число возможных нарушителей включены все, начиная от уборщицы в ЦОД и заканчивая администраторами системы.
Второй слайд — про то, от чего система защищается.
По сути, на нём перечислены требования, которым должна удовлетворять любая (а не только электронная) система голосования:
голосование должно быть тайным;
избиратель не должен иметь возможности проголосовать дважды;
голоса избирателей должны быть учтены именно так, как они были поданы;
не должно быть возможности узнать промежуточный результат голосования.
Например, в бумажном голосовании это реализуется довольно очевидными способами:
на бумажном бюллетене нет никаких отметок, которые позволили бы по нему установить, кому он был выдан;
факт голосования отмечается в списке избирателей, где избиратель расписывается в получении бюллетеня;
пересчёт бюллетеней производится в присутствии наблюдателей;
до окончания голосования бюллетени находятся в опечатанной урне, которую запрещено вскрывать.
С электронными системами всё на порядок сложнее. Больше всего вопросов вызывает сочетание первого и второго пунктов — многие, например, просто априори не верят в возможность соблюдения тайны голосования в системах ДЭГ (более того, как мы видели на примере эстонской системы, она там действительно соблюдается условно: заполненные бюллетени не анонимны сами по себе, но анонимизируются уже на сервере).
Протокол, который невозможен
Итак, нам необходимо сначала выдать избирателю бюллетень, а потом принять его уже заполненным — но по пути забыть, как звали этого избирателя. Но при этом быть уверенными, что заполненный бюллетень мы принимаем именно от избирателя, а не от случайного прохожего.
С цифрой всё намного сложнее — мы не стоим рядом с избирателем, когда он получает бюллетень, мы вообще никак не видим этого процесса. Вот бюллетень выдали — а вот он вернулся заполненным, например, через десять минут. Никакими внешними признаками удостовериться, что вернулся именно выданный бюллетень, невозможно.
Соответственно, сам бюллетень должен нести неподделываемый (sic!) признак собственной валидности, по которому ещё и нельзя отследить его обратно к отправившему этот бюллетень человеку.
Теоретически, вот уже три десятилетия в академической среде пишутся и публикуются работы по протоколам тайных электронных голосований, краеугольным камнем в которых является так называемый «протокол двух агентств»: одно агентство удостоверяет личность человека и выдаёт некий признак, по которому второе может определить, что этот человек имеет право голосовать, не зная его личность.
Критичным — и самым слабым — моментом является независимость этих агентств: если они могут обменяться информацией и выстроить полную цепочку путешествия избирателя по системе, то они смогут и сопоставить конкретный бюллетень с конкретным избирателем, тем самым разрушив тайну голосования.
Проблема в том, что эта красивая конструкция со всей очевидностью не может быть перенесена в реальность: ни в одной стране мира нет таких двух агентств, которые и обладали бы техническими ресурсами и квалификацией для поддержания куска инфрасктруктуры ДЭГ, и не вызывали бы подозрений в попытках, например, саботировать выборы, и были бы абсолютно независимы друг от друга. Государственные агентства никогда не бывают полностью независимы, к коммерческим компаниям нет доверия, у конкурирующих партий нет квалификации и ресурсов.
Более того, утечка информации может произойти и вообще без прямого участия одного из агентств: разработчиком может быть попросту поставлена в одно или в оба агентства система с бэкдором, сливающая информацию об избирателях третьей стороне. Даже если система поставляется в исходных кодах — а это маловероятно, так как накладывает ещё большие требования на квалификацию каждого из агентств в IT — в огромном объёме этого кода бэкдор можно запрятать так, что его не найдут ещё много-много лет.
Иногда этот тезис используется как довод в пользу полного отказа от ДЭГ — и, конечно, он бы был справедлив, если бы другие формы голосования были бы лучше.
Например, доводы сторонников классического бумажного голосования сводятся к тому, что физически присутствующие на участках наблюдатели могут проконтролировать каждое действие комиссии и избирателей, не допустив никакого беззакония.
На практике, однако, в России — примерно 97 тысяч избирательных участков. Чтобы эффективно наблюдать за выборами, особенно с учётом трёхдневного голосования, на каждый участок надо хотя бы по 3 наблюдателя хотя бы от 5 разных партий — то есть почти полтора миллиона человек. Причём это должны быть люди обученные, заинтересованные, знающие формальные процедуры проведения выборов, не состоящие в родстве или подчинённых отношениях с членами комиссии, не состоящие в сговоре друг с другом, и прочая, и прочая.
Очевидно, что подготовить такую армию качественных наблюдателей попросту невозможно — в результате наблюдение за голосованием эффективно работает в городах-миллионниках, а дальше, по мере снижения численности населения и значимости населённого пункта, падает до тех пор, пока не начинаются чудеса.
Более того, и пересчёт бюллетеней — второе средство, должное спасти выборы — в большинстве случаев не поможет, так как многие способы фальсификации результатов оставляют после себя формально валидную стопку бюллетеней, которые уже можно честно считать и пересчитывать сколько угодно раз.
Значит ли это, что выборы вообще надо отменить, так как эффективных средств контроля за ними на практике нет?
Очевидно, нет. Ещё Черчилль отметил, что демократия — худшая форма правления, если не считать всех остальных, испробованных человечеством. Вопрос в том, какими средствами можно улучшить существующую систему голосования, снизив вероятность и масштаб фальсификаций в ней.
Например, в случае бумажного голосования таким средством могут стать КОИБы (комплексы обработки избирательных бюллетеней), подсчитывающие бюллетени в момент их подачи избирателем и тем самым пресекающие постфактумные манипуляции с ними. Да, вопрос доверия к ним — тоже больной (см. скандал с Dominion на последних выборах в США или запрет на использование голландских КОИБов в Германии), но в любом случае КОИБы при их правильной реализации выглядят как шаг вперёд, делая невозможным целый ряд манипуляций с бюллетенями.
То же самое касается и ДЭГ. Главный вопрос не в том, что в Википедии описана реализация сферического ДЭГ в вакууме — вопрос в том, можно ли техническими средствами построить достаточно надёжную систему ДЭГ в реальном мире.
Ослепление избирателя: обеспечение тайны голосования без двух независимых агентств
В Эстонии на данную проблему, как мы выяснили ранее, попросту забили: там избиратель подписывает бюллетень секретной частью ключевой пары, публичная часть которой государству известна и с конкретным физлицом сопоставлена. Потом, уже после завершения голосования, эта подпись уничтожается. В принципе, это всё равно, что вместо записи в книгу избирателей на обычном голосовании прятать свой бюллетень в конверт с ФИО, паспортными данными и подписью — и в таком виде в урну и бросать (собственно, аналогия и взята с эстонских государственных порталов).
В России, где уровень доверия к выборам и комиссиям и так крайне низок, так вряд ли бы получилось.
Поэтому в российском ДЭГ был использован значительно более сложный механизм, именуемый «слепой подписью», смысл которого в том, чтобы в двух агентствах — неважно, независимы они или нет — попросту не существовало бы единого признака, по которому они могли бы сопоставить избирателя и его бюллетень.
Если пытаться изложить это максимально кратко, схема выглядит так:
Избиратель заходит на сайт голосования и авторизуется через ЕСИА (в простонародье «Госуслуги», но мы-то с вами знаем, что это разные системы).
Система ДЭГ, получив из ЕСИА данные учётной записи избирателя, проверяет, есть ли он в книге избирателей, и выдаёт бюллетени, соответствующие выборам, проходящим по его месту жительства. На бюллетенях нет никаких идентификационных признаков, они одинаковы до последнего бита у всех избирателей.
На устройстве избирателя (код выполняется в браузере) генерируется ключевая пара — секретный и публичный ключ. Назовём публичный ключ K, а секретный — S.
Публичный ключ маскируется — например, домножается на какое-то случайное, также только что сгенерированное, число. Таким образом получается ключ K’, восстановить по которому исходный ключ K, не зная параметры маскировки, невозможно.
Замаскированный ключ K’ отправляется на сервер, выдающий бюллетени.
Сервер подписывает этот ключ своим собственным ключом и возвращает подпись (назовём её C’, чтобы подчеркнуть, что она относится к ключу K’) на смартфон избирателя.
Одновременно сервер передаёт на смартфон избирателя свой публичный ключ голосования (одинаковый для всех избирателей).
Заполненный бюллетень на устройстве избирателя шифруется публичным ключом голосования и подписывается секретным ключом избирателя S.
С подписи C’ и ключа K’ на смартфоне избирателя снимается маскировка — этот алгоритм устроен таким образом, что в результате получается подпись C, валидная для ключа K.
Зашифрованный и подписанный бюллетень отправляется на сервер приёма бюллетеней, к нему прикладывается публичный ключ избирателя K и полученная в пункте 9 подпись этого ключа С.
Так как публичный ключ избирателя был создан на его устройстве при получении бюллетеня «с нуля», то сервер приёма бюллетеней ничего о нём не знает — однако может проверить его подпись C, а после этого — проверить, что бюллетень действительно подписан секретной частью этого же ключа. Если на оба пункта ответ положительный — значит, бюллетень был выдан настоящему избирателю (той частью системы, которая ещё знала ФИО этого избирателя).
Система отправляет бюллетень на хранение в блокчейн.
Таким образом, два сервера — выдающий пустой бюллетень и принимающий заполненный — знают об избирателе:
выдающий сервер: ФИО, паспортные данные, адрес проживания, ключ K’, подпись C’;
принимающий сервер: галочки в бюллетене, ключ K, подпись C.
В этой схеме нет ни одного признака, который присутствовал бы одновременно на сервере, выдающем пустые бюллетени, и сервере, принимающем заполненные бюллетени, и позволил бы установить соответствие между бюллетенем и физлицом, его заполнявшим.
Обратите также внимание: анонимизация по сути происходит на устройстве пользователя, большая часть алгоритмов выполняется в его браузере, то есть, их код и состав отправляемых на сервера данных может проверить любой желающий. Соответственно, даже без знания серверной части кода можно с достаточной уверенностью судить о том, корректно или некорректно реализована эта схема.
Итак, зафиксируем первый пункт: в официальном дизайне системы приняты меры к соблюдению тайны голосования даже в том случае, если два агентства не являются независимыми.
Атака сбоку: раскрытие тайны голосования через логгирование
Тем не менее, все мы понимаем, что теоретически бюллетень и избирателя можно сопоставить по косвенным данным — ведя на серверах системы детальные логи: IP-адрес, браузер, время отправки и получения бюллетеня, а потом сопоставив на одном компоненте их с ФИО избирателя, а на другом — с бюллетенем.
Доказать полную невозможность реализации такой схемы нереально. Ни реализация сферического протокола двух агенств в вакууме, ни аудит исходных кодов, ни допуск независимых экспертов в ЦОД — ничто из этого не даёт гарантии, что где-то в системе не осталась хорошо спрятанная закладка, логгирующая и сохраняющая или отправляющая данные, позволяющие идентифицировать избирателя.
Поэтому оценка подобной угрозы также делается по косвенным признакам:
есть ли основания полагать, что в системе предусмотрена такая возможность?
есть ли основания полагать, что в системе использовалась такая возможность?
Естественно, на оба вопроса ответ может быть только вероятностный — но с другой стороны, и ответ на вопрос «нет ли на избирательных участках над кабинкой скрытой камеры, подключённой к системе распознавания лиц» — тоже вероятностный, обследовать помещение вас в общем случае не пустят.
Ответы на подобные вопросы каждый должен дать себе сам, однако приведём наши варианты вместе со стоящей за ними логикой.
таких оснований нет — в первую очередь в силу того, что если бы в систему необходимо было заложить возможность вскрытия тайны голосования, это можно было бы сделать намного надёжнее и проще на уровне её архитектуры; это вызвало бы недовольство некоторого — небольшого — количества экспертов, но в целом уже на уровне СМИ прекрасно зашла бы отсылка, например, к эстонскому опыту и «мы руководствовались международными практиками»;
таких оснований нет — хотя в России прошло уже два крупных голосования в системе ДЭГ (по поправкам к Конституции и ЕДГ 13 сентября 2020), никаких известных нам свидетельств, что кому-то «на стол легли» поимённые списки, кто как голосовал, нет.
Тем не менее, последний вопрос — довольно серьёзный, ведь если такие списки существуют, как утверждает Александр Исавнин в недавней статье, то сам этот факт обнуляет все разговоры о соблюдении тайны голосования. По этой причине мы запросили как у Александра Исавнина, так и у его коллеги, члена ТИК и члена технической рабочей группы ДИТ Москвы по электронному голосованию Евгения Федина, есть ли у них какие-то фактические свидетельства наличия таких списков. Александр Исавнин ответил «Вы — наследники сурковской пропаганды!», Евгений Федин — «именно списки с голосами избирателей мне пока не попадались». Наверное, на этом вопрос можно считать закрытым.
Соответственно, на данный момент можно с увереностью говорить, что:
в заявленном дизайне системы способов нарушить тайну голосования не наблюдается;
так как значительная часть алгоритмов реализована на устройстве пользователя, даже не имея доступа в ЦОД к серверной части системы, можно убедиться, что фактический дизайн системы в части алгоритмов обеспечения тайны голосования соответствует заявленному;
фактических примеров нарушения тайны голосования на предыдущих двух случаях массового использования ДЭГ в России зафиксировано не было.
Скрыть нельзя показать: проверка избирателем собственного голоса
Ещё один интересный вопрос, косвенно относящийся к тайне голосования — это возможность для самого избирателя проверить, был ли учтён его голос.
В московской системе ДЭГ такая возможность есть, хоть и неофициальная — надо было в момент голосования открыть отладочные инструменты браузера и записать передаваемые на сервер параметры, чтобы потом найти по ним свой бюллетень. Бюллетени отправлялись и хранились в блокчейне в зашифрованном виде, однако перед подсчётом голосов они расшифровывались.
Такая схема вызывает опасения в том, что проверка голоса может быть использована для обеспечения голосования под давлением или продажи голосов избирателей — в качестве подтверждения «правильности» голосования заказчик потребует предъявить ему результат проверки. По этой причине, в частности, возможность оставалась доступной только для технарей с высокой квалификацией, и не выносилась в интерфейс пользователя.
В федеральной системе ДЭГ решили совместить несовместимое — и дать пользователю возможность проверить, что его голос действительно хранится в блокчейне, но не давать возможности этот голос посмотреть (и показать другим).
Для этого вместо одного ключа шифрования бюллетеня будут создаваться два:
единый ключ шифрования, создающийся на отключённом от сети ноутбуке в присутствии СМИ и наблюдателей. Его секретная половина разделяется на части и раздаётся на флэшках нескольким людям, публичная же на флэшке переносится на сервер голосования, после чего либо данные на ноутбуке уничтожаются (также в присутствии СМИ и наблюдателей), либо ноутбук опечатывается и убирается в сейф;
ключевые пары, генерирующиеся для каждого проходящего голосования, публичная часть которых передаётся на сервера, а секретная остаётся в HSM — аппаратном модуле, которые позволяет выполнить расшифровку загружаемых в него данных, но не позволяет скачать из него ключ.
Оба публичных ключа при выдаче бюллетеня передаются вместе с ним на устройство избирателя, где бюллетень шифруется ими. Зашифрованные бюллетени складываются в блокчейн.
Просто так взять и расшифровать бюллетени становится невозможным: так как ответная часть одного из ключей хранится в HSM, расшифровка доступна только людям, имеющим к данному HSM доступ. Но для подсчёта голосов это и не требуется: в федеральной ДЭГ используется гомоморфное шифрование, которое позволяет сначала складывать данные, а потом расшифровывать результат.
Чтобы подвести итоги голосования:
бюллетени, зашифрованные двумя ключами, складываются, в результате чего в силу гомоморфности используемых алгоритмов шифрования получается зашифрованный теми же двумя ключами результат сложения;
результат сложения отправляется в HSM, где с него снимается первый ключ;
владельцы флэшек с частями второго ключа собираются вместе (снова в присутствии СМИ) и проводят процедуру сборки ключа из его частей;
собранный ключ публикуется, с его помощью окончательно расшифровывается результат голосования.
Обратите внимание, что в процессе нигде не производится расшифровка индивидуальных бюллетеней, невозможно это сделать и самостоятельно — для этого нужен доступ к HSM.
В результате избиратель может найти в выгрузке блокчейна свой бюллетень и может проверить, что он действительно его и не был никем модифицирован (так как бюллетень подписан на устройстве избирателя) — но при этом не может посмотреть, а также кому-либо показать, как именно в бюллетене были проставлены галочки. В будущем, по словам разработчиков, это может стать базой для функционала выдачи избирателю криптографически подтверждённой квитанции о том, что его голос учтён (принят и загружен в блокчейн).
Остаётся вопрос учёта бюллетеня в финальном подсчёте — теоретически можно предположить, что результат может быть подменён при расшифровке суммаризованного бюллетеня в HSM. На практике, однако, это несложно проверить, взяв результат расшифровки (он публикуется в блокчейн) и зашифровав его обратно публичным ключом данного голосования.
Что дальше?
Надеемся, вопрос о том, как техническими средствами обеспечивается тайна голосования в системах ДЭГ, мы раскрыли.
В следующих статьях попробуем также осветить:
можно ли что-то сделать с угрозами, не входящими в МУиН ПТК ДЭГ;
как наблюдать за ходом голосования в ДЭГ (в том числе не будучи официальным наблюдателем);