Мы напишем троянского коня, который будет размещаться в программе, создающей цифровую подпись. Этот троянский конь будет содержать документ, который мы хотим подсунуть Алисе, – несомненно, или что-нибудь постыдное, или сулящее выгоду, – и код для его подписания. Единственное, чего не хватает троянскому коню, – это ключа Алисы. Когда она вводит свой пароль, чтобы подписать какое-нибудь сообщение для нас, троянский конь подсовывает вместо него компрометирующий документ. Программа, создающая цифровую подпись, возвращает ее основному приложению, которое присоединяет подпись к документу, который Алиса действительно собиралась заверить. Если она попытается проверить подпись, троянский конь снова подсунет подделку, и программа, создавшая подпись, подтвердит, что она правильная. Таким образом, троянский конь может заставить компьютер солгать Алисе. Затем она отправляет нам свое сообщение с ошибочной подписью – составленной для совершенно другого документа. Мы присоединяем эту подпись к копии нашей подделки и звоним в Washington Post. Тем временем троянский конь самоуничтожается, и все возвращается в исходное состояние.
Это легко реализовать в среде Windows: можно создать макрос, который будет попросту наблюдать за «открытым файлом» диалога PGP, копировать свой собственный файл под именем того, который как раз собирается подписать Алиса, и впоследствии возвращать старый файл на место. Язык макрокоманд программы Word позволяет сделать это, поэтому совсем не трудно создать такой макровирус.
Это всего лишь один пример. Троянский конь может подсунуть для подписи оба документа и переслать подделку позже, в подходящий момент. Или просто похитить ключ Алисы.
В этом нет ничего сложного, программирование – простое дело. Во всяком случае, если мы достигнем успеха, мы завладеем опасным для Алисы документом с ее подписью. Мы можем размахивать им в суде или передать журналистам, обоснованно заявляя, что под документом стоит действительная подпись. Однако вероятнее всего, что нас постигнет неудача. Как только кто-нибудь напишет троянского коня, подделывающего подписи, он распространится повсеместно. И если документ будет предъявлен в суде, одна из сторон может представить свидетельство эксперта о существовании этого троянского коня и о том, с какой легкостью можно заставить кого угодно поставить свою подпись неведомо на чем. Примет ли суд эту подпись в качестве доказательства? Все зависит от обстоятельств, а не от математических методов.
Суть фундаментальной проблемы состоит в том, что у нас нет никакого представления, что же в действительности делает компьютер по нашей команде. Когда мы приказываем ему сохранить документ, или зашифровать файл, или сложить числа в столбце, у нас нет уверенности в том, что этот «черный ящик» выполнит задание правильно или даже вообще его выполнит. Мы вынуждены все принимать на веру. Насколько трудно поймать за руку вороватого работника, настолько же трудно выловить разрушительную программу. Дело обстоит даже хуже. Представьте себе, что этот сотрудник работает в одиночестве и за ним некому уследить, Все средства наблюдения, которые мы можем установить, – скрытые камеры и микрофоны – управляются самим же этим работником. Все, что мы можем сделать, – это сравнивать поступающие к нему («на входе») материалы с производимым им продуктом («на выходе»). Но и этого недостаточно для полной уверенности в его честности.
Если Алиса не может доверять компьютеру, на котором работает, то она не может быть уверена в том, что он точно выполняет ее команды. Хотя бы потому, что когда она велит ему подписать документ, это не означает, что он не способен поставить ее подпись под другим документом. Проблему можно исчерпать, когда Алиса станет подписывать документы лишь на совершенно надежном компьютере, а это трудно осуществить. Если речь идет о компьютере общего назначения, я никогда не поверю в то, что он достаточно надежен.
Вот если бы у Алисы был маленький компьютер с единственным назначением – создавать цифровые подписи, – тогда было бы на что надеяться. Я в состоянии представить карманное устройство с миниатюрной клавиатурой и экраном, в которое можно перенести документ с компьютера общего назначения. Алиса сможет просмотреть документ на экране – так как нет никакой гарантии, что «большой» компьютер загрузит именно то, о чем его попросят, – и ввести пароль с клавиатуры. Устройство создаст подпись под документом и передаст ее назад компьютеру общего назначения. Нам остается молиться о том, чтобы такая система была безопасной. Можно сконструировать ее так, чтобы устройство использовало только заводское программное обеспечение, а независимая проверяющая компания будет выдавать свидетельство о том, что программа работает правильно.
Читать дальше