Вы добавите в этот компилятор еще больше злодейского кода: теперь он замечает, когда компилирует
Отметим, что теперь новый злодейский компилятор ведет себя точно так же, как исходный, кроме двух особых случаев. Компилируя приложения, он, как и прежде, вставляет в них секретный бэкдор для пароля «райанкрутой»:
А когда злодейский компилятор меняет
Шаг З
Ваше преступление близко к завершению. Осталось только удалить злодейские инструкции из исходного кода компилятора – и
Но на самом деле он безнадежно скомпрометирован: он собирает приложения по
И ни в одном исходном коде не остается ни
Ну вот! Готово. Перенесите пример с паролями на «подсчет голосов в свою пользу» – и ваше преступление
А! И поздравляю с успехом в цифровом голосовании,
Это замечательно! Просто замечательно. Вы, конечно, подумаете, что ваши жертвы могли бы просто вручную проверить двоичный код вашей программы, но это проще сказать, чем сделать, особенно если программа достаточно сложная и объемная. Рассмотрим для сравнения полное собрание сочинений Уильяма Шекспира (хотя бы написанных на английском!): оно составляет 6 Мб информации, и нужно несколько дней, чтобы прочесть более 50 млн бит данных. Один только браузер «Файрфокс» требует больше 200 Мб только для установки, а на компьютере есть и другие программы. Скорее всего, во всем мире нет ни одного живого человека, который прочел все 200 Мб этого двоичного кода. Ведь он даже записан на языке не для людей! И да, если кто-то заподозрит, что вы влезли в компилятор (чего никогда не произойдет, если вы все сделали правильно), он может хотя бы сравнить его с известным хорошим компилятором и сверить измененные разделы двоичного кода. Но даже если отложить вопрос, откуда возьмется хороший компилятор, проверка не скажет, в чем изменения, только то, что изменения есть. А чтобы разобраться, нужно переписать двоичный код с самого начала.
Лучшая (или худшая, как посмотреть) часть этого замысла – все это не секрет и известно уже несколько десятилетий. В 1984 году Кен Томпсон – создатель «Юникса», предшественника операционных систем на большинстве компьютеров и смартфонов, – написал статью «Размышления о доверии к доверию» (Reflections on Trusting Trust), где пришел к такому же выводу. «Мораль проста, – написал он. – Нельзя доверять коду, если не написали его сами целиком. (Особенно коду от компаний, где работают такие, как я.) Никакая проверка исходного кода вас не защитит…» Под «написали сами целиком» Томпсон имеет в виду не просто программу, а все, что только можно, вплоть до компилятора. Мало у кого хватит времени, умения и денег, чтобы собрать компьютер с нуля, включая все программное обеспечение. Похоже на контрольный выстрел в голову доверию к компьютерам. И скажем честно: если вам нравится издавать злодейский хохот,
Но, несмотря ни на что, мы все равно доверяем компьютерам во всем! Как так? Почему мы по своей воле пользуемся этими адскими машинами?
Все сводится к тем же требованиям легитимных выборов: открытые, честные, анонимные, прозрачные и точные.