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

Софтуер с отворен код за гласуване: необходимост, не мода

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

На 7 януари 2021 г. — сутринта след нарушаването на Капитолия — екип компютърни криминалисти влезе в офиса на избирателната комисия на окръг Кофи, Джорджия и напусна със копие на всичко. Системата за управление на изборите. Устройствата за маркиране на бюлетини. Софтуерът Dominion на щатско ниво. Всичко, записано на устройства и отнесено от дверта.

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

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


Проблемът с тайния код е, че никой не може да го провери

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

Вместо това всички получават обещание: ние го тестирахме, всичко е наред, доверете ни се.

Това не е модел за сигурност. Това е търговско споразумение.

Изследователите от Принстън, които разглобиха машина Diebold AccuVote-TS през 2006 г. — същия вид сензорен екран, внедрен за милионите американски избиратели — открили, че софтуерът може да бъде подкопан в около една минута с карта за памет. Не просто манипулиран: подкопан по начин, който преписа всеки дневник и брояч, за да остане вътрешно последователен, оставяйки без проследяваща следа. Кодът дори можеше да се разпространи на други машини при нормалните трансфери на избирателната нощ. Изследователите публикуваха това, защото притежаваха машината. Можеха да разглеждат софтуера. Повечето хора никога не получават такава възможност.

AccuVote-TS не беше отклонение. То беше прозорец — отворен за кратко — към системи, които обикновено са затворени наглухо.

И ето неудобния въпрос: ако това е това, което един независим анализ откри в една седмица, какво може да остане необнаружено в системи, които никога не са били публично проучени? Нямаме начин да знаем. Това е целия проблем.


„Ние го одитирахме" е твърдение, не заключение

Официалните лица обичат да казват, че одитите след изборите потвърждават резултатите. Понякога това е вярно. Често е по-сложно.

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

След това в декември официалните лица проведоха пълно ръчно броене на всеки президентски бюлетин, за да проверят исправления машинен брой. Ръчното броене се върна с дванадесетгласово отклонение от машинния брой от приблизително 15 700 прехвърлени бюлетини. Дванадесет гласа.

В едностранен избор дванадесет гласа е грешка при закръгляване. Но ето проблемът: в наистина близо разделен избор — един решен петдесет гласа, или двадесет, или пет — ръчен преброй, който сам по себе си отклонява с около дванадесет гласа, не може да разреши нищо. Не може. Не математически. Одитът с „златния стандарт" носи своя собствена неустранима човешка грешка: неясни маркировки, умора в 2 часа сутринта, спорни решения за преглед, взети по различен начин от различни двойки ръце.

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

Реалният аргумент тук не е, че някой измамваше. Аргументът е, че „Държавният секретар казва, че всичко е наред" и „ръчен брой го потвърди" са заместители на независимата проверяемост — и заместителите не са истинското нещо.


Какво наистина означава софтуер с отворен код за система за гласуване

Хората чуват „гласуване с отворен код" и си представят хакери, които са поканени да прекъснат избора. Това е грешната представа.

Отворен код означава, че источният код на софтуера — всяка инструкция, която машината изпълнява — е публикуван където всеки може да го прочете. Експерти по сигурност. Академици. Вашият племенник, който взе два програмни курса. Други производители. Журналисти. Независими групи наблюдатели. Всеки.

Това е важно по причина, която звучи почти твърде просто: вие не можете да скриете задна врата в код, който всички могат да четат. Или по-скоро, можете да се опитате, но вероятността от открытие се срива, когато броят на независимите читатели растет.

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

Ето как частите се вписват:

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

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

Криптографски слой за интегритет отива още по-далеч. Техники като проверяемо гласуване от край до край (E2E-V) позволяват всеки избирател да получи разписка, която им — и на всеки друг — позволява да потвърдят, че техният бюлетин беше хвърлен по предполагане, записан хвърлен и брой записан, без да се разкрива за кого гласуват. Математиката е публична. Проверката е публична. Резултатът не изисква доверие на някой официален лице, никой производител или никой одитор.

Заедно, тези три слоя преместват въпроса от „доверявате ли производителя?" на „можете ли сами да проверите математиката?"

Това преместване е всичко.


Защо Кофи доказва, че тайната е грешната стратегия

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

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

Моделът за сигурност на системата зависеше от софтуера, който остава тайна.

Ако софтуерът беше с отворен код, „те получиха копие на кода" би било значително по-малко тревожно — защото всеки вече би могъл да има копие на кода. Интегритетът на избора не би почивал на пазене кода в тайна. Би почивал на математиката: криптографски ангажименти, публични дневници за одит, проверяеми записи, които всеки би могъл да провери и никой не би могъл в тишина да изменя.

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

Реконструкцията на Lawfare на епизода с Кофи си струва да се прочете докрай. Докладите на Atlanta Journal-Constitution добавят допълнителни подробности за това, какво беше копирано и как се разпространи. Заедно те илюстрират принцип, който специалистите по сигурност разбират от десетилетия: системи, които разчитат на тъмнота, са крехки точно по начините, които имат значение най-много.


Проблемът с възпроизводими сърчилки не е теоретичен

„Възпроизводими сърчилки" звучи като проблем с домакинската поддръжка на софтуерни разработки. Не е.

Ето конкретния проблем, който решава. Представете си производител на машина за гласуване публикува своя исходящ код. Журналисти и изследователи го четат. Изглежда добре. Лабораторията за сертификация го тества. Минава. Държавният секретар го сертифицира.

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

Вие не можете да открийте това без възпроизводими сърчилки. С тях можете: компилирайте сами источния код, сравнете хеша и знайте. Веднага. Без доверие на някого.

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

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

Вижте как това разлика се сравнява в правомощия по света →


Какво наистина означава „проверяемо" — и какво все още не означава

Трябва да бъдем точни тук, защото „проверяемо" се използва вяло.

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

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

Система с отворен код, възпроизводими сърчилки и проверяемост от край до край не замества одитите. Дава на одитите нещо твърдо, на което могат да стоят.

Йерархията изглежда така:

  • Собствен, затворен софтуер: доверете производителя напълно
  • Само отворен код: доверете, че никой не вмъква нещо злонамерено в сърчилката
  • Отворен код + възпроизводими сърчилки: доверете, че публичния код и работещия двоичен файл съвпадат, независимо потвърдимо
  • Отворен код + възпроизводими сърчилки + E2E проверяемост: доверете математиката, не хората

Всеки слой отстранява още едно нещо, което трябва да приемете по вяра. Целта не е перфекция. Целта е да направи въпроса „работи ли това правилно?" отговаримо от всеки с компютър и време да проверят — не само от официалните лица с интерес да казват да.


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

Ето редът, който си струва да бъде направен екранна снимка:

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

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

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

Какво би направило това проверяемо от всеки? Три неща, прав сега неразрешено в повечето САЩ правомощия:

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

Докато тези три неща не съществуват, „одитът го потвърди" е твърдение за това, което официални лица намериха, когато разглеждаха. Не е твърдение, което всеки извън стаята може независимо проверить.

Това не е теория на конспирацията. Това е инженерно изискване.

Прочетете 2-минутната версия на тези разлики → Вижте кои системи и правомощия имат разлики на софтуер с отворен код днес → Разгледайте отказите за възпроизводими сърчилки в атласа на разлики →


Източници