← Все статьи

«Сертифицировано» означает, что система прошла тест один раз. Это не означает, что она безопасна сегодня.

Проверка безопасности дала системе зелёный свет. Затем внешние исследователи обнаружили уязвимость — когда 280 000 человек уже голосовали. Слово «сертифицировано» этого не предотвратило.

На третьей неделе марта 2015 года проходит выборы в Новом Южном Уэльсе. Сотни тысяч избирателей уже отдали свои голоса онлайн через систему iVote. Избирательная комиссия провела проверку безопасности. Система прошла аудит. Никто не поднял тревогу.

Затем два исследователя — Дж. Алекс Халдерман из Мичиганского университета и Ванесса Тиг из Австралии — направили браузер на работающую, живую систему.

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

То, что они находят, — это не теоретическая уязвимость, спрятанная в какой-то запутанной спецификации. Это рабочий путь атаки. Система iVote загружала код с внешнего сервера аналитики через соединение, уязвимое к известным на тот момент слабостям TLS — класс атак, известных как FREAK и Logjam. Злоумышленник, расположенный в сети, мог бы использовать этот канал для манипуляции голосами и компрометации приватности бюллетеней. А встроенный телефонный сервис верификации, специально созданный для того, чтобы избиратели подтвердили, что их голос был записан правильно? Он был уязвим для манипуляции, а это означало, что проверка была неэффективна.

Допредвыборная проверка безопасности ничего из этого не обнаружила.

К тому моменту, когда исследователи доложили о своих находках, примерно 280 000 голосов уже было отдано.


Слово «сертифицировано» берёт на себя огромную работу — и не справляется с ней

Вот что на самом деле означает «сертифицировано» в контексте технологий электронных выборов.

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

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

Сертификация — это снимок. Система продолжает работать в мире, который не стоит на месте.

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

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

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

Замок, который вы не можете проверить, — это не замок. Это декорация.


Федеральный суд сделал то же открытие — о бумажном бюллетене, который вы можете держать в руках

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

Но есть проблема.

Устройство печатает два вещи: читаемый человеком текст с вашим выбором и QR-код. Именно QR-код сканер читает при подсчёте голосов. А QR-код не читается человеком. Вы не можете посмотреть на него и подтвердить, что он говорит то же самое, что и текст.

В своём решении от октября 2020 года в деле Curling v. Raffensperger федеральный суд США для Северного округа Джорджии изучил экспертные показания, включая показания доктора Халдермана — того же исследователя, который анализировал iVote — о том, что может сделать кибератака. Суд пришёл к выводу, что система «не обеспечивает проверяемый и поддающийся аудиту запись бюллетеня, так как она полагается на QR-код для подсчёта голосов, и сам этот код не может быть прочитан и проверен избирателем».

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

Прочитайте это предложение ещё раз. Одного тестирования недостаточно для того, чтобы гарантировать, что системы не были скомпрометированы.

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

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

Сертификация дала системе добро. Пробел в верифицируемости системы остался.


Общая модель обоих случаев: проблема снимка и живого состояния

New South Wales iVote и Curling выглядят поверхностно по-разному. Один включает систему интернет-голосования, работающую на сетевых серверах. Другой включает бумажный бюллетень, напечатанный в кабине для голосования.

Но они разделяют одну и ту же структурную ошибку.

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

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

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

Сертификация дала обе системы добро.

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


Что на самом деле мог бы закрыть этот разрыв?

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

Что бы сделало это достаточным?

Три вещи, которые технически достижимы и в настоящее время редки.

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

Во-вторых: независимая внешняя верифицируемость, которая не зависит от поставщика или власти. Урок iVote в том, что сам механизм верификации системы может быть атакован. Проверка, которую сама система администрирует, — это не независимая верификация. Верифицируемость означает, что кто-то снаружи — исследователь, политическая партия, гражданин с ноутбуком — может подтвердить поведение системы в отношении защищённого от подделки записи, которую они не получили от проверяемой системы. Федеральный конституционный суд Германии понял это в 2009 году, когда постановил, что избиратели должны иметь возможность проверить существенные этапы выборов 'без какой-либо специальной подготовки'. Стандарт — это не «эксперты могут это проверить». Это «обычные люди могут это проверить».

В-третьих: артефакт, который подсчитывается, должен быть артефактом, который избиратель может проверить. QR-код, который ни один избиратель не может прочитать, не проходит этот тест. Бумажный бюллетень, который избиратель отмечает вручную, который сканер читает оптически, подходит намного ближе — потому что человек, смотрящий на ту же бумагу, может оценить ту же отметку, которую оценила машина. Нидерландская комиссия, рекомендовавшая вернуться к бумаге в 2007 году, назвала этот принцип controleerbaarheid — проверяемость — и рассматривала его как неотъемлемый: 'нет секретов в избирательном процессе, и вопросы должны быть поддающимися ответу, а ответы — проверяемыми и верифицируемыми.' Это не описание голосования на QR-коде.


Аудиты всё ещё могут оставить вопрос открытым

Возражение, которое вы, вероятно, уже формируете: а что со скрытым аудитом? Что с ручными переподсчётами?

Они помогают. Аудит с ограничением риска, который выборочно проверяет бумажные бюллетени против машинных итогов, как это пионерила Колорадо в 2017 году, обеспечивает реальное статистическое свидетельство того, что машинный подсчёт отражает бумажный запись. Полный ручной пересчёт Джорджией почти 5 миллионов президентских бюллетеней в ноябре 2020 года подтвердил результат машины примерно на одну десятую процента.

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

И аудиты происходят после события. В случае iVote выборы были в процессе до того, как была обнаружена уязвимость. Аудит после выборов онлайн-системы голосования не может восстановить голоса, которые были молча изменены во время передачи, потому что нет независимой копии того, что было отдано для аудита. Вся архитектура интернет-голосования делает модель «бумага как источник истины» недоступной.

Есть также неотъемлемый вопрос о самих ручных переподсчётах. Округ Антрим, Мичиган, провёл полный ручной пересчёт примерно 15 700 президентских бюллетеней в декабре 2020 года — и ручной переподсчёт всё ещё отличался от машинного подсчёта примерно на дюжину голосов. В гонке, решаемой сотнями голосов, дюжина необъяснённых разногласий между переподсчётом «золотого стандарта» и машинным подсчётом не решает вопрос; она его расширяет. Аудит подтвердил, что метод несовершенен. «Аудит это подтвердил» — это успокоение, а не доказательство, когда сама методология аудита несёт неустранимую ошибку.

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


Что вы всё ещё не можете проверить — и что бы это сделало проверяемым

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

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

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

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

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

Что бы сделало эти вещи проверяемыми — независимо, без доверия к поставщику или удостоверяющему органу?

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

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

Исследователи в Новом Южном Уэльсе нашли уязвимость iVote снаружи, без специального доступа, во время живых выборов. Это одновременно и предупреждение, и модель. Предупреждение: закрытая одноразовая проверка оставляет пробелы. Модель: внешние исследователи с доступом к работающей системе могут найти то, что упускают люди изнутри.

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

Сертификация говорит, что система была проверена.

Верифицируемость говорит, что её можно проверить.

Это не одно и то же, и никакое уверение избирательной комиссии, как бы искренне, не может закрыть разрыв между ними.

Посмотрите, насколько распространён этот пробел в верифицируемости во всём мире →

Прочитайте двухминутную версию →

Изучите полную базу данных случаев →


Источники