← Все уязвимости
💻 Программное обеспечение, которое нельзя проверить

Программное обеспечение, которое вам не разрешено проверять

Машина, которая считает голоса, следует секретным инструкциям. Если никому вне компании не разрешено читать эти инструкции, никто не может быть уверен, что голоса считаются честно.

Что произошло на самом деле

В знаковом исследовании 2006–2007 годов исследователи из Princeton получили широко используемую машину Diebold AccuVote-TS и показали, что кто-то, имея краткий физический доступ, может установить код кража голосов, который перезапишет все собственные записи машины, чтобы скрыть кражу — именно такой тип недостатка, который и существует для поимки при открытом рецензировании исходного кода.

Как обстоит дело сегодня

Та конкретная машина для голосования без бумажного следа сейчас в основном снята с эксплуатации — около 98% голосов на выборах в США в 2024 году были поданы на бумаге. Но сама проблема не закрыта: три поставщика, которые управляют примерно 90% голосования в США сегодня (Dominion, ES&S, Hart) — все частные компании и держат свой исходный код закрытым от открытой проверки. Цифра 86% выше измеряется на основе текущего избирательного законодательства, а не 2006 года.

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

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

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

Почему это важно

Если ошибка (или преднамеренное изменение) спрятана в этом секретном программном обеспечении, нет никого вне компании, кто мог бы её найти. Исследователи неоднократно показывали, что когда им удавалось изучить реальные машины, они находили серьёзные недостатки — и вредоносный код даже может перезаписать собственные журналы машины, чтобы скрыть следы.

Суть не в том, что каждая машина подтасована. Суть проще: если вы не можете это проверить, вы не можете доказать, что это правильно. Доверие не должно требоваться там, где возможно доказательство.

Как TrustVoting это решает

TrustVoting построен на простом обязательстве: код, который считает ваш голос, должен быть открыт — полностью опубликован, с воспроизводимыми сборками, чтобы любой мог его перестроить и получить идентичную программу (не просто прочитать и надеяться).

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

Это цепь, которая заменяет доверие доказательством: открытый код, который может проверить каждый → сборка, которую может воспроизвести каждый → машина, которая доказывает, что она его запускает. Открытый исходный код один недостаточен (исходный код должен совпадать с запущенной машиной), и контрольные суммы одни недостаточны (вы бы доверяли коду, который не можете видеть) — вам нужно оба, и это — замысел.

Как TrustVoting её устраняет

TrustVoting построен так, чтобы опубликовать полный исходный код с воспроизводимыми сборками, чтобы любой — не только поставщик — мог его прочитать и независимо перестроить. Кроме того, криптографический слой целостности (контрольные суммы + аттестованная загрузка) доказывает, что каждая машина запускает именно эту опубликованную, проверенную версию в день выборов. Открытый исходный код — это обязательство; верифицируемая целостность — это доказательство того, что машина его соблюдает.