Когда мне говорят, что электронные выборы защищены блокчейном и поэтому изменить голоса невозможно, я сразу задаю другой вопрос. В какой момент голос попадает в блокчейн и откуда мы знаем, что туда попал именно тот вариант, который выбрал человек? Блокчейн хорошо защищает уже записанные данные от незаметного редактирования, но не превращает весь путь бюллетеня от экрана избирателя до итоговой таблицы в математически безошибочную систему.
Короткий ответ такой. Подменить результаты электронного голосования технически возможно в плохо спроектированной или скомпрометированной системе даже при наличии блокчейна. Можно атаковать устройство избирателя, программу голосования, идентификацию, серверы, ключи, механизм расшифрования или подсчёта. Хорошая криптографическая архитектура должна сделать подобную подмену обнаруживаемой. Сам факт использования блокчейна такой гарантии не даёт. Наличие технической возможности тоже не служит доказательством вмешательства в конкретные выборы.
Где вообще появляется блокчейн
Представим обычное онлайн-голосование. Избиратель входит в систему, подтверждает личность, выбирает кандидата или вариант ответа и нажимает кнопку голосования. Дальше начинается самая интересная часть, которую пользователь обычно не видит.
Избиратель
|
v
программа голосования
|
v
шифрование бюллетеня
|
v
цифровая подпись или подтверждение права голоса
|
v
сервер приёма
|
v
реестр голосов
|
v
анонимизация
|
v
расшифрование или криптографический подсчёт
|
v
результат
Блокчейн обычно появляется примерно посередине. В распределённый реестр записывают зашифрованные бюллетени, их хеши, служебные операции или доказательства проведения операций. Записи связываются криптографически. Изменение старой записи меняет её хеш и нарушает дальнейшую цепочку.
Отсюда вырос популярный рекламный тезис «голос нельзя подменить, потому что блокчейн неизменяем». Формулировка слишком сильная. Реестр знает только то, что ему передали. Если вредоносная программа превратила выбранный вариант А в вариант Б до формирования записи, блокчейн может безукоризненно сохранить неправильный бюллетень.
Похожая ситуация возникает с камерой наблюдения. Защищённое хранилище гарантирует, что видеозапись никто не переписал после сохранения, но ничего не говорит о том, куда смотрела камера и показывала ли правильное время.
У блокчейна есть ещё одна существенная деталь. Для выборов обычно не подходит модель публичной криптовалюты, где тысячи независимых участников конкурируют за право добавить блок. Применяют закрытые или разрешительные распределённые реестры. Узлами управляет ограниченный набор организаций или серверов. Надёжность такой сети зависит от того, кто контролирует узлы, ключи и механизм достижения согласия.
Если все узлы фактически находятся под единым административным контролем, слово «распределённый» само по себе почти ничего не говорит о независимости проверки. Критический вопрос звучит иначе. Может ли сторона, которой мы не обязаны доверять, получить собственную копию данных и независимо убедиться, что опубликованный результат следует из зафиксированных бюллетеней?
Российская опубликованная модель угроз ДЭГ прямо относит к требованиям тайну голосования, разделение ключей, наблюдение и невозможность изменить уже поданный, зафиксированный и учтённый голос. Подобные требования полезно отделять от более сильного утверждения, будто одна конкретная технология автоматически гарантирует корректность всей процедуры.
Как можно атаковать голосование, не ломая блокчейн
Мне кажется полезным мысленно убрать блокчейн и проследить за одним голосом от кнопки на экране до результата. Сразу становится видно, насколько много компонентов должны работать правильно.
| Точка атаки | Что может произойти | Спасает ли блокчейн |
|---|---|---|
| Компьютер или телефон | Вредоносная программа меняет выбор до шифрования | Нет |
| Программа голосования | Интерфейс показывает один вариант, а код формирует другой | Нет |
| Учётная запись | Злоумышленник голосует от имени другого человека | Нет |
| Сервер приёма | Часть бюллетеней отклоняется, задерживается или обрабатывается неправильно | Частично |
| Узлы реестра | Участники сети договариваются цензурировать или переписывать операции | Зависит от архитектуры |
| Ключи | Компрометация ключей нарушает тайну или корректность процедуры | Нет |
| Подсчёт | Верные зашифрованные голоса преобразуют в неверный итог | Нет без проверяемого подсчёта |
| Публикация результата | Пользователю показывают цифры, не связанные с проверяемым протоколом | Нет без независимой проверки |
Хороший пример даёт исследование системы мобильного голосования Voatz. Разработчики использовали разрешительный блокчейн как часть архитектуры, однако специалисты при анализе приложения обнаружили классы уязвимостей, которые позволяли при определённых условиях нарушить тайну, изменить или заблокировать голос. Исследование не доказывает, что блокчейн бесполезен. Оно показывает более важную вещь. Защищённый реестр не компенсирует слабость других компонентов.
Национальные академии США пришли к похожему принципиальному выводу в фундаментальном докладе Securing the Vote. Авторы отдельно разбирают блокчейн и указывают, что технология почти не решает основные проблемы интернет-голосования. Среди них заражённые клиентские устройства, отказ в обслуживании, проверка правильности голоса и другие угрозы.
Особенно неприятна атака на клиентское устройство. Допустим, человек выбирает кандидата А. Вредоносная программа незаметно формирует бюллетень за Б, шифрует его и отправляет в систему. Сервер принимает корректно подписанный криптографический объект, блокчейн честно фиксирует его навсегда. С математической точки зрения цепочка идеальна. С точки зрения избирателя голос украден.
Поэтому фраза «запись нельзя изменить» отвечает лишь на один вопрос. Гораздо важнее проверить, правильно ли запись появилась.
Материал посвящён устройству и проверке защищённых систем голосования. Описанные принципы предназначены для легального анализа и защиты. Не следует применять методы безопасности для несанкционированного доступа, вмешательства в работу избирательных систем, нарушения тайны голосования или других действий, запрещённых законодательством вашей страны, включая законодательство России.
Что сильнее блокчейна
Для серьёзной системы меня интересует не название базы данных, а сквозная проверяемость. В криптографии используется понятие end-to-end verifiability, то есть возможность проверить прохождение голоса через основные этапы без раскрытия его содержания посторонним.
В идеальной схеме избиратель получает возможность убедиться, что система правильно зафиксировала бюллетень. Наблюдатели могут проверить, что все зафиксированные бюллетени попали в подсчёт. Затем любой независимый проверяющий может удостовериться, что из набора бюллетеней получился опубликованный итог.
Появляется кажущееся противоречие. Как проверить голос и одновременно сохранить тайну выбора?
Ответ даёт современная криптография. Вместо публикации открытых бюллетеней система может публиковать шифротексты и математические доказательства правильности операций. Для некоторых схем применяют гомоморфное шифрование. Оно позволяет складывать зашифрованные значения так, что после расшифрования результата получается сумма голосов, хотя отдельные бюллетени никто не открывал.
Другой подход использует перемешивание зашифрованных бюллетеней. Специальный mixnet меняет порядок записей и удаляет связь между личностью избирателя и итоговым анонимным бюллетенем. Криптографические доказательства позволяют проверить корректность преобразования.
Наконец, доказательства с нулевым разглашением позволяют подтвердить правильность вычисления, не показывая скрытые данные. Идея непривычная, но именно подобные механизмы гораздо ближе к решению проблемы доверия, чем фраза «у нас есть блокчейн».
Показательный контраст даёт Эстония. Официальное описание её интернет-голосования строится вокруг шифрования бюллетеня, цифровой подписи, отдельной службы регистрации, разделения персональных данных и голосов, а также проверки через другое устройство. Блокчейн не выступает центральной гарантией такой архитектуры.
Избиратель может воспользоваться отдельным устройством и проверить, какой зашифрованный бюллетень получил сервер. Такой подход пытается решить именно проблему заражённого компьютера. Официальное описание проверки показывает, как приложение получает зашифрованный голос с сервера и сопоставляет его с выбором пользователя.
Система всё равно не становится магически неуязвимой. Дистанционное голосование происходит вне контролируемой кабины. Остаются вредоносные программы, ошибки реализации, атаки на инфраструктуру, давление на избирателя, покупка голосов и отказ в обслуживании. Часть проблем лежит вообще за пределами криптографии.
Мне поэтому ближе формулировка «проверяемое голосование», а не «голосование на блокчейне». Блокчейн описывает способ хранения данных. Проверяемость описывает свойство всей избирательной процедуры.
Так можно ли массово нарисовать другой результат
Однозначного ответа без знания архитектуры конкретной системы нет. В примитивной централизованной системе администратор с достаточными полномочиями потенциально получает огромные возможности. В хорошо спроектированной системе с независимыми наблюдателями, опубликованными криптографическими доказательствами, разделёнными ключами и сквозной проверяемостью изменение большого количества бюллетеней должно оставить обнаруживаемые следы.
Здесь я бы разделил два утверждения. «Подменить невозможно» почти всегда слишком сильная формулировка. «Подменить незаметно должно быть практически невозможно при выполнении определённых криптографических и организационных предпосылок» звучит гораздо точнее.
Причём обнаружить вмешательство и предотвратить вмешательство не одно и то же. Криптография способна показать, что проверка не сошлась. Дальше появляется уже процедурный вопрос, что делать с выборами, если нарушение обнаружили после голосования.
Есть и противоположная опасность. Сам факт наличия сложной криптографии нельзя использовать как доказательство фальсификации. Ошибка программы, найденная уязвимость или теоретическая атака показывают возможность нарушения определённого свойства, но не подтверждают, что кто-либо воспользовался проблемой на реальных выборах. Для такого вывода нужны журналы, независимый аудит, данные наблюдения и другие свидетельства.
Хороший пример необычного эксплуатационного риска уже возникал даже в академической среде. На выборах Международной ассоциации криптологических исследований зашифрованные бюллетени оказалось невозможно открыть из-за проблемы с ключами. Мы разбирали этот случай отдельно. История хорошо показывает разницу между целостностью и доступностью. Система может прекрасно защищать бюллетени от посторонних и одновременно не суметь получить итог.
Поэтому при оценке электронного голосования я смотрел бы не на наличие слова «блокчейн», а на несколько конкретных свойств. Может ли избиратель проверить, что сервер получил именно его выбор. Можно ли независимо проверить полный набор принятых бюллетеней. Публикуются ли доказательства корректного подсчёта. Разделены ли критические ключи между независимыми участниками. Доступны ли спецификации и исходный код для анализа. Может ли наблюдатель получить данные самостоятельно, а не только посмотреть интерфейс, который показывает организатор.
Если ответ сводится к «поверьте, блокчейн изменить нельзя», технического обоснования недостаточно. Если опубликованные данные позволяют независимо воспроизвести проверку и криптографически связать принятые бюллетени с итогом, разговор становится намного предметнее.
Блокчейн способен быть полезным элементом такой архитектуры. Например, как журнал, где несколько независимых сторон фиксируют события и позднее сравнивают свои копии. Но распределённый реестр не проверяет намерение избирателя, не лечит заражённый компьютер, не защищает человека от давления дома и не доказывает правильность программы подсчёта.
Главный вывод у меня простой. Защищённые электронные выборы строятся не вокруг «неизменяемой цепочки», а вокруг возможности не доверять отдельному серверу и всё равно математически проверить результат. Блокчейн может хранить доказательства. Доказательством корректности выборов сам блокчейн не является.
Можно ли изменить голос, уже записанный в блокчейн?
При корректной архитектуре незаметное изменение старой записи должно обнаруживаться по криптографическим связям между блоками и копиям реестра. Но свойства зависят от механизма согласия и от того, кто контролирует узлы сети.
Значит ли блокчейн, что результаты электронного голосования нельзя подделать?
Нет. Блокчейн защищает определённый этап хранения данных. Атакующий потенциально может воздействовать на голос до записи, на идентификацию, ключи, серверы, подсчёт или публикацию результата.
Можно ли проверить свой электронный голос и не нарушить тайну голосования?
Современные криптографические протоколы позволяют проверять регистрацию и подсчёт бюллетеней без публикации открытого выбора конкретного человека. Для подобных схем применяют шифрование, перемешивание бюллетеней и криптографические доказательства.
Что будет, если компьютер избирателя заражён?
Вредоносная программа потенциально способна изменить выбор ещё до шифрования. Поэтому некоторые системы используют независимую проверку через другое устройство и другие механизмы сквозной проверяемости.
Зачем распределять ключ расшифрования между несколькими людьми?
Разделение ключа уменьшает зависимость от одного администратора. Для расшифрования результата можно потребовать участие нескольких держателей частей ключа, поэтому один человек не сможет самостоятельно открыть бюллетени.
Нужен ли блокчейн для безопасного электронного голосования?
Не обязательно. Целостность, тайну голоса и проверяемость можно обеспечивать цифровыми подписями, шифрованием, независимыми журналами, криптографическими доказательствами и аудитом. Блокчейн представляет лишь один из возможных компонентов.
Доказывает ли найденная уязвимость, что результаты выборов изменили?
Нет. Уязвимость показывает техническую возможность атаки при определённых условиях. Для утверждения о реальном вмешательстве нужны отдельные доказательства эксплуатации и изменения данных или процедуры.
Какое свойство электронного голосования важнее самого блокчейна?
Одно из самых полезных свойств для независимой проверки называется сквозной проверяемостью. Избиратель и наблюдатели получают возможность проверить регистрацию и подсчёт голосов, не раскрывая содержимое чужих бюллетеней.
