Секреты и ложь. Безопасность данных в цифровом мире (Шнайер) - страница 232

Это то, что я называю автоматизмом действий пользователя (human-computer transference). Алиса знает, чего она хочет, – подписать документ. Она должна иметь определенные гарантии того, что компьютер сделает именно то, что ей нужно. Однако обеспечить безопасность не так просто.

Предположим, мы хотим заставить Алису подписать нечто, что ей подписывать не хочется. Это легко сделать, если она поверит в то, что подписывает именно тот документ, который видит на экране. Нам нужно заставить компьютер обмануть Алису.

Мы напишем троянского коня, который будет размещаться в программе, создающей цифровую подпись. Этот троянский конь будет содержать документ, который мы хотим подсунуть Алисе, – несомненно, или что-нибудь постыдное, или сулящее выгоду, – и код для его подписания. Единственное, чего не хватает троянскому коню, – это ключа Алисы. Когда она вводит свой пароль, чтобы подписать какое-нибудь сообщение для нас, троянский конь подсовывает вместо него компрометирующий документ. Программа, создающая цифровую подпись, возвращает ее основному приложению, которое присоединяет подпись к документу, который Алиса действительно собиралась заверить. Если она попытается проверить подпись, троянский конь снова подсунет подделку, и программа, создавшая подпись, подтвердит, что она правильная. Таким образом, троянский конь может заставить компьютер солгать Алисе. Затем она отправляет нам свое сообщение с ошибочной подписью – составленной для совершенно другого документа. Мы присоединяем эту подпись к копии нашей подделки и звоним в Washington Post. Тем временем троянский конь самоуничтожается, и все возвращается в исходное состояние.

Это легко реализовать в среде Windows: можно создать макрос, который будет попросту наблюдать за «открытым файлом» диалога PGP, копировать свой собственный файл под именем того, который как раз собирается подписать Алиса, и впоследствии возвращать старый файл на место. Язык макрокоманд программы Word позволяет сделать это, поэтому совсем не трудно создать такой макровирус.

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

В этом нет ничего сложного, программирование – простое дело. Во всяком случае, если мы достигнем успеха, мы завладеем опасным для Алисы документом с ее подписью. Мы можем размахивать им в суде или передать журналистам, обоснованно заявляя, что под документом стоит действительная подпись. Однако вероятнее всего, что нас постигнет неудача. Как только кто-нибудь напишет троянского коня, подделывающего подписи, он распространится повсеместно. И если документ будет предъявлен в суде, одна из сторон может представить свидетельство эксперта о существовании этого троянского коня и о том, с какой легкостью можно заставить кого угодно поставить свою подпись неведомо на чем. Примет ли суд эту подпись в качестве доказательства? Все зависит от обстоятельств, а не от математических методов.