← Всички статии

Ако софтуерът се промени след като е бил тестван?

Софтуерът за гласуване премина всеки тест. След това някой влезе в офиса на избирателната комисия, копира цялата система на външен диск и си тръгна. Какво означава „сертифициран" след това?

Е сутрин на 7 януари 2021 г., и екип за компютърна криминалистика влиза през вратата на офиса на избирателната комисия на Кофи Каунти, Джорджия — пуснати вътре от служители на окръга, които имаха всички ключове. Те не са разследователи. Те не са проверяващи. Изразходват следващите няколко часа копирайки всичко: сървърът на системата за управление на избори, устройствата за отбелязване на бюлетини, високоскоростния сканер, софтуера на държавната система за гласуване Dominion на Джорджия. Целия пакет. Излизат с него на външни дискове.

Системата, която копираха, е била тествана. Е била сертифицирана. Е провела истински избори.

Нищо от това не спря кое се случи после.


Какво всъщност сертифицира "сертификат"

Преди всяка система за гласуване да докосне истински бюлетина, тя преминава през процес на сертификация. Лаборатория за тестване проверява оборудването и софтуера. Проверява дали машината прави това, което документацията казва. Издава доклад. Юрисдикцията приема системата.

Това звучи подробно. И за един момент във времето, е.

Но сертификатът е снимка, не видеокамера. Той улавя системата както е съществувала в деня, когато лабораторията я проверява. Какво се случва със системата между лабораторията и вашето избирателното място — и между избори — е съвсем други въпрос, и той остава до голяма степен без отговор от самия процес на сертификация.

Критичната пропаст е следната: никой редовно не доказва, по начин, който публиката може независимо да провери, че софтуерът работещ в деня на избори е същия софтуер, който премина теста.

Тази пропаст има име. Ние я наричаме проблем със заместването на софтуера преди избори. Това не е теоретично.


Кофи Каунти: когато ключовете попаднат в грешните ръце

Епизодът в Кофи Каунти, документиран в показанията в федералния случай Curling v. Raffensperger и по-късно в обвинение на окръга Фултън, е най-ясната демонстрация в реалния свят защо тайната е крехка стратегия за сигурност на софтуер за избори.

Интегритета на системата се основаваше, отчасти, на предположението, че само упълномощени хора биха имали достъп до нея. Това предположение се разпада в момента, когато служител на окръга пуска форензичния екип вътре. Няколко човека, свързани с нарушението, по-късно признаха вина. Офисът на държавния секретар на Джорджия го описа като неоторизиран достъп в нарушение на държавния закон.

Но тук е въпросът, който остава след признанията на вина: какво правиш със система за избори, чийто софтуер е копиран и е някъде, което не контролираш?

Честния отговор, под текущия модел на сертификация, е: не много. Можеш да смениш пароли. Можеш да поправиш системите. Можеш да потвърдиш, както направиха служителите, че нарушението не повлия на интегритета на последващите избори. Но не можеш да го докажеш на никого, който не е вече склонен да те доверя — защото системата никога не е била проектирана да бъде независимо проверяема.

Както е документирано в случай Curling, експертни показания пред съда включваха констатации, че кибератака би могла правдоподобно да замени или изтрие гласове и да компрометира системата. Съдът счита системата за табулиране, основана на QR кодове, "не предоставя проверяем и одитируем запис на бюлетина, защото разчита на QR кода за табулиране на гласове и този код сам по себе си не може да бъде прочетен и проверен от избирателя." Хартиен отпечатък не е запис, проверяем от избирателя, ако отпечатъкът кодира действителния глас в баркод, който човек не може да прочете.

Сигурност чрез непрозрачност се провали в Кофи Каунти, защото непрозрачността винаги в крайна сметка се проваля. Някой винаги има ключовете.


По-дълбокия проблем: какво се случва между сертификацията и деня на избори?

Кофи Каунти е драматичната версия на един обикновен проблем.

Системите за избори получават закръпления, промени в конфигурацията и актуализации на софтуера през целия си оперативен живот. Производителите натиснат поправки. Окръзите прилагат актуализации. Картите за памет се репрограмират между избори. Това е нормално, разумно поддържане на софтуер — и се случва почти изцяло извън публичния поглед.

Калифорнийският преглед от начало до край през 2007 г., в който компютърни учени от Калифорнийския университет разглеждаха изходния код на сертифицирани системи за гласуване, намериха сериозни уязвимости във всяка система, която изучаваха — включително рискове от вредоносен софтуер, който би могъл да се разпространява между машинки. Преглед EVEREST на Охайо със същата година, който изучаваше сертифицирани системи от трима водещи производители, заключи, че всички те "притежават критични откази в сигурността" и отбеляза, че логовете на одитория често са били подделяеми или изтриваеми от людете, които трябваше да наблюдават. Това бяха сертифицирани системи, в активна употреба, разглеждани от независими експерти, които бяха дали изходния код.

Урокът от Калифорния и Охайо е същият като урокът от Кофи Каунти: "бе сертифицирана" е началото на въпроса, не краят му.

Американското управление за подотчетност на правителството направи по същество тази точка през 2005 г. — в доклад издаден повече от два десетилетия назад — констатирайки, че федералните усилия за подобряване на сигурността на системата за гласуване бяха в ход, но "ключови дейности останаха незавършени," включително установяването на защитени хранилища на софтуер и споделяне на информация за уязвимости. Някои от тези пропасти оттогава са се стеснили. Структурния проблем — не.


Експериментът на Принстън, и защо все още има значение

През 2006 г., изследователите от Принстън Ариел Фелдман, J. Алекс Халдерман и Едуард Фелтен придобиват истинска Diebold AccuVote-TS — машина от вида, използвана в целите на Съединените щати — и прекарват около минута с физически достъп до нея. Какво те построиха беше вирус за кража на гласове, който би могъл да се инсталира чрез картата за памет, да изменя резултатите, докато держи всички вътрешни записи в съответствие, и да се разпространява от машина на машина по време на нормални избори.

Машината е била сертифицирана. Софтуерът премина тестване.

Статията на Принстън е вече почти двадесет години стара, и системите за гласуване са се променили. Но структурния урок не е: ако не можеш независимо да проверяваш, че софтуерът работещ в деня на избори е софтуерът, който инспектира, то инспекцията не установява много.

Система, която е сертифицирана-тогава-актуализирана, сертифицирана-тогава-закръпена, или сертифицирана-тогава-копирана, не е задължително системата, която лабораторията тестваше. И под повечето текущи рамки за сертификация, няма редовен, независим, публичен механизъм за проверка.


Воспроизводими построения: техническото решение, което променя въпроса

Има концепция за компютърно инженерство, която адресира това пряко. Нарича се воспроизводимо построение.

Ето идеята на простия език. Когато софтуерът се компилира — когато четящ човек изходен код се преобразува в двоичния файл, който наистина работи на машина — процесът обикновено производи леко различен резултат всеки път, в зависимост от времеви печати, настройки на компилатора и други променливи. Това означава, че дори ако публикуваш изходния код, независима страна, която го компилира себе си, ще получи двоичен файл, който не съвпада точно с двоичния файл, работещ на развеждената машина. Не можеш проверяваш, бит-за-бит, че работещия код съвпада с публикувания код.

Воспроизводимото построение променя това. Когато построението е воспроизводимо, всеки, който взема публикувания изходен код и следва документирания процес на построение, получава точно същия двоичен файл, байт за байт. После можеш да сравниш криптографски хеш на двоичния файл на развеждената машина с хеша на независимо компилирания двоичен файл. Ако съвпадат, знаеш какъв код се изпълнява. Ако не съвпадат, нещо се промени — и можеш да разбереш какво.

Това не е научна фантастика. Проектът Debian Linux преследва воспроизводими построения от 2013 г. Браузърът Tor ги достига. Bitcoin Core ги достига. Това са истински, развеждени системи, където независимите страни могат да потвърдят, че двоичния файл съвпада с публикувания изходен код.

За софтуер за избори, воспроизводимите построения би означало това: след всяка актуализация или промяна в конфигурацията, юрисдикцията публикува двоичния хеш. Всеки — журналист, изследовател, кампания, група за правата на избирателя — може независимо да компилира изходния код и да проверяваш дали хешът съвпада. Ако не, това е публичен, фалшифицируем факт.

Това е какво означава да замениш "вярвай ни" с "проверяй сам." Не одит от служители, проверяващи своите системи. Не снимка на сертификата. Непрекъсната, независима, публично проверяема верига от изходен код до работещ машин. Прочети повече за тази пропаст и какво е истинско решение.


Защо отворния код е необходим, но не е достатъчен

Системата VSAP на окръг Лос Анджелес, сертифицирана през 2018 г. като първата сертифицирана система за отбелязване на гласове с отворен код на Калифорния, е наистина положително развитие. Публична собственост на софтуер за избори и отворен код означава, че процесът на броене може да се инспектира от независимите експерти вместо да бъде скриден като търговска тайна на производител.

Но отворния код решава само първата част на проблема: може ли всеки да види изходния код? Това не отговаря само по себе си на втората част: кодът на машина същия ли е като кода в хранилището?

Швейцария откри това ограничение през 2019 г. Швейцарската поща публикува целия изходен код на своята система за интернет гласуване за публична проверка — забележителен акт на прозрачност. Независимите изследователи Сара Джейми Люис, Оливие Перейра и Ванеса Теауг го прочетоха. Какво намериха беше криптографска врата: орган, който знае тайните стойности, би могъл да генерира доказателство за разбъркване, което преминава математическа проверка, докато всъщност променя гласове. Дефектът беше невидим в сертифицирана черна кутия. Стал намиран в момента, когато изходния код беше публикуван и независимите криптографи поглеждаха.

Публикуването позволи откритието. Но откритието се случи, защото някой погледна близо криптографските доказателства себе си — и намери, че доказателството би могло да лъже.

Урокът: отворния код е предпоставка, не гаранция. Воспроизводимите построения добавят втория слой — доказвайки кода, който прочети, е кодът, който работи. И независимите криптографски одити добавят третия — доказвайки, че дори ако кодът работи правилно, неговата конструкция не позволява скритата манипулация.

И трите са необходими. Повечето системи за избори нямат нито един от тях.


Какво не можеш проверяваш точно сега, и какво би го направило проверяемо

Ето състоянието на играта, заявено ясно.

Когато един избори завършва и служителите обявят резултата, ти си в позиция да проверяваш някои неща: можеш да проверяваш дали общите суми на хартийни бюлетини от ръчното броене съвпадат с суми от машина (както демонстрира ръчното броене на Джорджия през 2020 г., до около една десета от един процент). Можеш да разглеждаш логове на веригата на отговорност за хартийни бюлетини. Можеш да наблюдаваш броенето.

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

Доверяваш на верига, която не можеш да видиш.

Решението не е мистериозно. То изисква:

  1. Воспроизводими построения, така че двоичния файл на всяка машина да може независимо да бъде проверен срещу публикувания изходен код.
  2. Публикувани хеш стойности, подписани и със времева печат, всеки път когда софтуер или конфигурация се актуализира — преди всеки избори, който този софтуер ще докосне.
  3. Независимо одитиране на компилиране, в което страни извън производителя и извън органа за избори компилират кода себе си и проверяват дали хешовете съвпадат.
  4. Хартийни бюлетини, които избирателят може да прочете, така че кейто софтуерът прави или не прави, има независим артефакт — отбелязан от избирателя, четящ от човек, подлежащ на ръчно броене — който може да уреди въпроса.

Тази последна точка е най-важна когда първите три се провалят. Ръчното броене на Джорджия през 2020 г. потвърди резултата машина до една десета от един процент точно защото хартийни бюлетини съществуваха, които бяха отбелязани от избиратели и четящи без софтуер. Загрижеността на съда Curling за системата на QR кодове на Джорджия беше точно, че хартиената отпечатък кодира табулирания глас в форма, която човек не може да прочете без машина — което означава "ръчно броене" на тези бюлетини е всъщност повторно сканиране, доверяващ същата софтуерна верига отново.

Хартия не е достатъчна, ако хартията не може да бъде прочетена. Софтуер не е достатъчен, ако не може да бъде проверен. Единствената система, която е устойчива срещу подмяна на софтуер, е тази, където запис, отбелязан от избирателя, четящ от човек, е едновременно входа на броенето и независимо проверка на софтуера, който го брои.

Никакво уверение на държавния секретар не променя това. Никакво "одитът потвърди резултатите" прессъобщение не го адресира. Въпросът е дали всеки извън системата может независимо да проверяваш какво работи. Прямо сега, на повечето места, отговорът е не.


Истина, която може да се раздели

Сертификатът казва софтуерът премина един тест веднъж. Не казва, че софтуерът работещ в деня на избори е софтуерът, който е тестван. Тази пропаст не е заговор — е инженерен проблем със известно решение. Юрисдикциите, които построяват за проверяемост, не трябвам да теб доверяват. Това е точката.

Разучи пропастта със заместване на софтуер подробно | Виж как разпространени са пропастите на интегритета по целия свят | Версията от две минути


Източници