Что если программное обеспечение изменилось после тестирования?
Программное обеспечение для голосования прошло все тесты. Затем кто-то вошёл в офис избирательной комиссии, скопировал всю систему на жёсткий диск и уехал. Что происходит с «сертификацией» после этого?
Утро 7 января 2021 года. Команда компьютерных криминалистов входит в офис избирательной комиссии округа Коффи, штат Джорджия — её впустили официальные лица округа, у которых были все ключи. Они не следователи. Они не аудиторы. В течение следующих нескольких часов они копируют всё: сервер системы управления выборами, устройства маркировки бюллетеней, высокоскоростной сканер, программное обеспечение Dominion штата Джорджия. Весь пакет. Они выходят с ним на жёстких дисках.
Система, которую они скопировали, была протестирована. Она была сертифицирована. Она провела реальные выборы.
Ничто из этого не помешало тому, что произошло дальше.
Что на самом деле гарантирует «сертификация»
Прежде чем любая система голосования соприкоснётся с реальным бюллетенем, она проходит процесс сертификации. Испытательная лаборатория проверяет аппаратное и программное обеспечение. Она проверяет, что машина делает то, что говорится в документации. Выдаёт отчёт. Юрисдикция принимает систему.
Это звучит основательно. И для моментального снимка во времени это так и есть.
Но сертификация — это фотография, а не видеокамера. Она фиксирует систему такой, какой она была в день, когда её изучала лаборатория. То, что происходит с этой системой между лабораторией и вашим избирательным участком — и между выборами — это совершенно другой вопрос, и сам процесс сертификации на него в значительной степени не отвечает.
Критический разрыв заключается в следующем: никто регулярно не доказывает таким образом, чтобы общественность могла это самостоятельно проверить, что программное обеспечение, работающее в день выборов, — это то же самое программное обеспечение, которое прошло тест.
У этого разрыва есть название. Мы называем это проблемой замены программного обеспечения перед выборами. Это не теория.
Округ Коффи: когда ключи попадают не в те руки
Инцидент в округе Коффи, задокументированный в показаниях в федеральном деле Curling v. Raffensperger и позже в обвинительном заключении округа Фултон, — это самая яркая демонстрация в реальном мире того, почему секретность — это хрупкая стратегия безопасности для программного обеспечения выборов.
Целостность системы основывалась частично на предположении, что только авторизованные лица будут иметь к ней доступ. Это предположение рухнуло в тот момент, когда чиновник округа впустил криминалистов. Несколько человек, причастных к нарушению, позже признали себя виновными. Офис государственного секретаря Джорджии описал это как несанкционированный доступ в нарушение закона штата.
Но вот вопрос, который остаётся после признания вины: что вы делаете с избирательной системой, чьё программное обеспечение было скопировано и теперь находится где-то вне вашего контроля?
Честный ответ в соответствии с текущей моделью сертификации таков: практически ничего. Вы можете изменить пароли. Вы можете установить патчи систем. Вы можете утверждать, как это делали официальные лица, что нарушение не повлияло на целостность последующих выборов. Но вы не можете это доказать никому, кто уже не склонен вам верить — потому что система изначально никогда не была разработана для самостоятельной проверяемости.
Как задокументировано в деле Curling, экспертные показания перед судом включали выводы о том, что кибератака вполне могла бы заменить или удалить голоса и скомпрометировать систему. Суд постановил, что система табуляции на основе QR-кодов «не обеспечивает верифицируемый и проверяемый бюллетень, потому что она полагается на QR-код для табуляции голосов, и сам этот код не может быть прочитан и проверен избирателем». Распечатка на бумаге — это не верифицируемый избирателем бюллетень, если она кодирует фактический голос в штрихкод, который человек не может прочитать.
Безопасность через непрозрачность потерпела неудачу в округе Коффи, потому что непрозрачность всегда в конце концов даёт сбой. У кого-то всегда есть ключи.
Более глубокая проблема: что происходит между сертификацией и днём выборов?
Округ Коффи — это драматическая версия обыденной проблемы.
Избирательные системы получают исправления, изменения конфигурации и обновления программного обеспечения на протяжении всего своего операционного срока. Поставщики выпускают исправления. Округа применяют обновления. Карты памяти перепрограммируются между выборами. Это обычное, разумное обслуживание программного обеспечения — и происходит оно почти полностью вне поля зрения общественности.
Комплексная проверка штата Калифорния в 2007 году, в которой компьютерные учёные Калифорнийского университета изучили исходный код сертифицированных систем голосования, выявила серьёзные уязвимости во всех системах, которые они изучали — включая риски от вредоносного программного обеспечения, которое могло распространяться между машинами. Проверка EVEREST в Огайо в том же году, которая изучала сертифицированные системы трёх крупных поставщиков, пришла к выводу, что все они «обладают критическими дефектами безопасности» и отметила, что журналы аудита обычно были подделываемы или стираемы людьми, за которыми они должны были следить. Это были сертифицированные системы, используемые в деле, изученные независимыми экспертами, которым был предоставлен исходный код.
Вывод из Калифорнии и Огайо такой же, как из округа Коффи: «это было сертифицировано» — это начало вопроса, а не его конец.
Управление отчётности Конгресса США сделало по существу эту же точку в 2005 году — в отчёте, выпущенном более двадцати лет назад — установив, что федеральные усилия по совершенствованию безопасности избирательной системы продолжались, но «ключевые работы остались незавершёнными», включая создание защищённых хранилищ программного обеспечения и обмен информацией об уязвимостях. Некоторые из этих разрывов с тех пор сократились. Структурная проблема — нет.
Эксперимент Принстона и почему он всё ещё имеет значение
В 2006 году исследователи Принстона Ариэль Фельдман, Дж. Алекс Халдерман и Эдвард Фелтен получили реальный Diebold AccuVote-TS — такой тип машины, который использовался по всему Соединённым Штатам — и провели с физическим доступом к нему около минуты. То, что они создали, был вирус для кражи голосов, который мог установить себя через карту памяти, изменять суммы, сохраняя все внутренние записи непротиворечивыми, и распространяться от машины к машине во время обычных операций в день выборов.
Машина была сертифицирована. Программное обеспечение прошло тестирование.
Статья Принстона сейчас почти двадцать лет старая, и избирательные системы изменились. Но структурный вывод остался тем же: если вы не можете самостоятельно проверить, что программное обеспечение, работающее в день выборов, — это программное обеспечение, которое вы проверили, то эта проверка не устанавливает многое.
Система, сертифицированная-затем-обновлённая, сертифицированная-затем-с-патчем, или сертифицированная-затем-скопированная, — это не обязательно система, которую тестировала лаборатория. И в соответствии с большинством текущих структур сертификации, нет регулярного, независимого, общественного механизма для проверки.
Воспроизводимые сборки: техническое решение, которое меняет вопрос
Есть концепция в программной инженерии, которая это напрямую решает. Она называется воспроизводимой сборкой.
Вот идея простыми словами. Когда программное обеспечение компилируется — когда понятный человеку исходный код преобразуется в двоичный файл, который на самом деле работает на машине — этот процесс обычно производит каждый раз немного другой результат в зависимости от временных меток, параметров компилятора и других переменных. Это означает, что даже если вы опубликуете исходный код, независимая сторона, которая скомпилирует его сама, получит двоичный файл, который не совпадает точно с двоичным файлом, работающим на развёрнутой машине. Вы не можете проверить, бит за битом, что работающий код совпадает с опубликованным кодом.
Воспроизводимая сборка меняет это. Когда сборка воспроизводима, любой, кто возьмёт опубликованный исходный код и следует задокументированному процессу сборки, получит точно такой же двоичный файл, байт за байтом. Затем вы можете сравнить криптографический хеш двоичного файла на развёрнутой машине с хешем самостоятельно скомпилированного двоичного файла. Если они совпадают, вы знаете, какой код работает. Если нет, что-то изменилось — и вы сможете выяснить, что.
Это не научная фантастика. Проект Debian Linux преследует воспроизводимые сборки с 2013 года. Tor Browser их достигает. Bitcoin Core их достигает. Это реальные, развёрнутые системы, где независимые стороны могут подтвердить, что двоичный файл совпадает с опубликованным исходным кодом.
Для программного обеспечения выборов воспроизводимые сборки означали бы следующее: после любого обновления или изменения конфигурации юрисдикция публикует хеш двоичного файла. Любой — журналист, исследователь, кампания, группа защиты избирателей — может самостоятельно скомпилировать исходный код и проверить, совпадает ли хеш. Если не совпадает, это общественный, опровержимый факт.
Это то, что означает заменить «доверьте нам» на «проверьте сами». Не аудит официальных лиц, проверяющих свои собственные системы. Не снимок сертификации. Непрерывная, независимая, общедоступная проверяемая цепь от исходного кода до работающей машины. Подробнее об этом разрыве и о том, как выглядит реальное исправление.
Почему открытый код необходим, но недостаточен
Система VSAP Лос-Анджелеса, сертифицированная в 2018 году как первая сертифицированная система открытого исходного кода для подсчёта голосов в Калифорнии, это подлинно позитивное развитие. Публичное владение программным обеспечением для выборов и открытый исходный код означают, что процесс подсчёта может быть проверен независимыми экспертами, а не скрыт как коммерческая тайна поставщика.
Но открытый код решает только первую часть проблемы: может ли кто-нибудь увидеть исходный код? Он не решает автоматически вторую часть: совпадает ли код на машине с кодом в хранилище?
Швейцария открыла эту границу в 2019 году. Swiss Post опубликовала полный исходный код своей системы интернет-голосования для публичной проверки — что-то действительно отважное в плане прозрачности. Независимые исследователи Сара Джейми Льюис, Оливье Перейра и Ванесса Теег прочитали его. То, что они обнаружили, была криптографическая лазейка: орган, знающий секретные значения, мог бы создать доказательство перемешивания, которое прошло бы математическую проверку, но фактически изменило голоса. Дефект был невидим в сертифицированном чёрном ящике. Он стал обнаружимым в тот момент, когда исходный код был опубликован и независимые криптографы посмотрели.
Публикация позволила обнаружить. Но обнаружение произошло, потому что кто-то внимательно посмотрел на сами криптографические доказательства — и обнаружил, что доказательство может лгать.
Вывод: открытый код — предпосылка, а не гарантия. Воспроизводимые сборки добавляют второй уровень — доказывая, что код, который вы прочитали, — это код, который работал. И независимые криптографические аудиты добавляют третий — доказывая, что даже если код работал правильно, его дизайн не позволяет скрытое манипулирование.
Все три необходимы. В большинстве избирательных систем нет ни одного из них.
Что вы не можете проверить прямо сейчас и что бы это сделало проверяемым
Вот как обстоят дела, сказано прямо.
Когда выборы заканчиваются и официальные лица объявляют результат, вы находитесь в положении, в котором можно проверить некоторые вещи: вы можете проверить, совпадают ли итоги бумажных бюллетеней из подсчёта вручную с итогами машины (как показал подсчёт штата-штата вручную в Джорджии в 2020 году, в пределах примерно одной десятой процента). Вы можете проверить логи цепи хранения для бумажных бюллетеней. Вы можете наблюдать подсчёт.
Что вы не можете проверить — в большинстве юрисдикций, каким-либо механизмом, в настоящее время доступным для общественности — является то, было ли программное обеспечение, которое подсчитало эти бюллетени, программным обеспечением, которое тестировала лаборатория, или оно было модифицировано в какой-то момент между сертификацией и днём выборов.
Вы доверяете цепи, которую не видите.
Решение не загадочно. Оно требует:
- Воспроизводимых сборок, чтобы двоичный файл на каждой машине мог быть независимо проверен против опубликованного исходного кода.
- Опубликованных значений хешей, подписанных и с временной меткой, каждый раз, когда программное обеспечение или конфигурация обновляются — до того, как любые выборы, для которых это программное обеспечение будет использоваться.
- Независимых аудитов компиляции, при которых стороны вне поставщика и вне избирательной власти скомпилируют код сами и проверят, совпадают ли хеши.
- Бумажных бюллетеней, которые избиратель может прочитать, чтобы, независимо от того, что делает или не делает программное обеспечение, существовал независимый артефакт — отмеченный избирателем, читаемый человеком, подсчитываемый вручную — который может разрешить вопрос.
Эта последняя пункта имеет наибольшее значение, когда первые три не работают. Подсчёт вручную в Джорджии в 2020 году подтвердил результат машины в пределах одной десятой процента ровно потому, что существовали бумажные бюллетени, отмеченные избирателями и читаемые без программного обеспечения. Забота суда Curling относительно системы QR-кодов Джорджии была в точности в том, что бумажная распечатка кодирует подсчитанный голос в форму, которую человек не может прочитать без машины — что означает, что «подсчёт вручную» этих бюллетеней — это на самом деле повторное сканирование, доверяющее той же цепи программного обеспечения снова.
Бумага недостаточна, если бумага не может быть прочитана. Программное обеспечение недостаточно, если оно не может быть проверено. Единственная система, которая устойчива к замене программного обеспечения, — это система, в которой запись, отмеченная избирателем и читаемая человеком, является как входом для подсчёта, так и независимой проверкой программного обеспечения, которое её подсчитывает.
Никакое заверение государственного секретаря этого не меняет. Никакой пресс-релиз «аудит подтвердил результаты» этого не решает. Вопрос в том, может ли кто-нибудь вне системы самостоятельно проверить, что работало. Прямо сейчас, в большинстве мест, ответ — нет.
Истина, которую легко поделить
Сертификация говорит вам, что программное обеспечение прошло тест один раз. Она не говорит вам, что программное обеспечение, которое работало в день выборов, — это программное обеспечение, которое было протестировано. Этот разрыв — не заговор, это инженерная проблема с известным решением. Юрисдикции, которые создают для проверяемости, не нуждаются в том, чтобы вы им верили. В этом суть.
Изучите разрыв замены программного обеспечения подробно | Посмотрите, как часто встречаются разрывы целостности по всему миру | Версия за две минуты
Источники
- Lawfare — What the Heck Happened in Coffee County, Georgia?
- Atlanta Journal-Constitution — Coffee County was the site of a 2021 election breach
- Curling v. Raffensperger, No. 1:17-cv-2989-AT, Opinion and Order (N.D. Ga. Oct. 11, 2020)
- Feldman, Halderman & Felten — Security Analysis of the Diebold AccuVote-TS Voting Machine (USENIX/EVT)
- California Secretary of State, Top-to-Bottom Review (2007) — decisions and reports
- Source Code Review of the Diebold Voting System (University of California, 2007)
- Source Code Review of the Sequoia Voting System (University of California, 2007)
- Source Code Review of the Hart InterCivic Voting System (University of California, 2007)
- EVEREST: Final Report (December 7, 2007), Ohio Secretary of State
- GAO-05-956, 'Elections: Federal Efforts to Improve Security and Reliability of Electronic Voting Systems Are Under Way, but Key Activities Need to Be Completed' (Sept. 21, 2005)
- Lewis, Pereira, Teague — Ceci n'est pas une preuve (trapdoor commitments in the Scytl-SwissPost Internet voting system), 2019
- California Secretary of State news release (Aug. 21, 2018): certifying LA County VSAP Tally
- Georgia Public Broadcasting — Risk-Limiting Audit Confirms Biden Won Georgia