То же самое можно сказать и о средствах компьютерной безопасности. Разыщите людей, которые работали на компьютерах еще в ту эпоху, когда не существовали пароли, допуски и ограничения. Спросите их, как им понравилось введение мер безопасности? Поинтересуйтесь, не пытались ли они обойти средства безопасности просто потому, что так проще работать? Даже сегодня, когда неумолимо приближается срок сдачи работы, люди не долго думая легко игнорируют средства защиты. Они оставят открытым черный ход, облегчая посторонним проникновение внутрь здания, и выдадут свой пароль или уберут брандмауэр, лишь бы работа была выполнена. Джон Дейч (John Deutch), бывший директор ЦРУ, приносил домой секретные файлы на своем незащищенном портативном компьютере просто потому, что так было удобнее.
Безопасность – это некоторый компромисс. Средства безопасности проще в тех случаях, когда они видны пользователю и он вынужден иметь с ними дело, принимая адекватные решения, как, например, при проверке имени на цифровом сертификате. С другой стороны, пользователям не хочется иметь дело со средствами безопасности. Тот, кто разрабатывает защиту смарт-карты, тоже не хочет, чтобы средства безопасности были видны клиенту. Он знает, что люди считают меры безопасности обременительными и стараются обходить их по мере возможности, поэтому они каждый раз будут обманывать систему защиты карты. Людям нельзя доверить реализацию политики компьютерной безопасности, поскольку они столь безответственны, что оставляют незапертыми двери своих автомобилей, теряют бумажники и не могут удержаться и не выболтать кому попало девичью фамилию матери.
Люди ненадежны и не поступают должным образом. Исследования, проводившиеся в университете Карнеги-Меллона (Carnegie Mellon University) в 1999 году, показали, что большинство людей не умеют правильно использовать программу шифрования электронной почты PGP. Из двенадцати человек, участвовавших в эксперименте, восемь так и не удосужились узнать, как работает PGP 5.0. Четверо случайно отправляли незашифрованными сообщения, содержавшие конфиденциальную информацию. И это при том, что программа имеет удобный графический интерфейс (справедливости ради следует отметить, что версия PGP 6.0 и более поздние имеют лучший пользовательский интерфейс).
И конечно, от них нельзя ожидать разумных решений в вопросах безопасности. Можно было предположить, что после паники 1999 года в связи с вирусами Melissa и Worm.ExploreZip люди не станут открывать вложения, которых не ожидали увидеть в своей почте. Однако темпы распространения червя ILOVEYOU (и десятков его разновидностей) свидетельствуют о том, что люди ничему не учатся… особенно когда многие компании зарабатывают на том, что пользователи обмениваются любопытными вложениями.
Браузеры используют цифровые сертификаты для того, чтобы обеспечить безопасность соединений. Когда они получают сертификат, они не обязательно предоставляют сведения об идентификации тому, кто находится на другом конце соединения. Это имеет существенное значение для безопасности, поскольку соединение не может считаться безопасным, пока не будет известно, кто находится на другом его конце. Большинство людей не беспокоятся о том, чтобы взглянуть на сертификат, и даже не знают, что это следовало бы сделать (или как это можно сделать).
Те же браузеры могут выводить на экран предупреждения перед загрузкой апплетов Java. Пользователя спрашивают, доверяет ли он некоторому веб-серверу, с которого отправляется апплет. Пользователь не имеет представления о том, стоит ему доверять ему или нет. Или не беспокоится об этом. Если некто, бесцельно блуждающий по Интернету, щелкает на кнопке, обещающей вывести на экран пляшущих поросят, и получает предупреждение о возможных опасностях апплета, он сделает выбор в пользу поросят, а не стабильной безопасности своего компьютера. Если его попытаются образумить предупреждением вроде: «Апплет DANCING PIGS может содержать вредоносный код, способный вызвать непоправимые повреждения вашего компьютера, похитить все ваши сбережения и лишить вас способности к деторождению», он щелкнет ОК, даже не прочитав его. Через тридцать секунд он и не вспомнит, было ли подобное предупреждение.
Автоматизм действий пользователя
Когда в главе 6 я излагал основы криптографии, я говорил о том, как Алиса и Боб шифруют, расшифровывают, подписывают и верифицируют сообщения и документы. Например, я упоминал, как Алиса может применять шифрование с помощью открытого ключа: если она найдет ключ Боба в телефонной книге, она может использовать его для шифрования своего сообщения Бобу. На самом деле все совсем не так. Алиса никогда не шифрует и не подписывает свои сообщения Бобу. Она никогда не расшифровывает входящие сообщения. Она вообще не занимается криптографией. Все, что она делает, так это щелкает на соответствующей кнопке, а компьютер шифрует или подписывает сообщения и вообще делает то, чего хочет Алиса. В этом состоит принципиальное отличие.
Представьте себе, что в будущем мы будем постоянно подписывать цифровые документы. Как это будет выглядеть? Алиса составит документ с помощью некоторого приложения – текстового редактора, почтовой программы и т. п. – и щелкнет на определенном значке, чтобы сообщить о своей готовности подписать его. Приложение вызовет некоторую программу, которая создаст подпись. Алиса введет свой пароль (слово или целую фразу) или приложит палец к устройству идентификации, или еще каким-либо способом подтвердит, что она именно та, за которую себя выдает. Программа составит цифровую подпись и передаст ее вызвавшему приложению для присоединения к документу. Вуаля – подпись готова. Возможно, Алиса даже проверит подпись (снова с помощью компьютера), чтобы убедиться, что она правильная.
Это то, что я называю автоматизмом действий пользователя (human-computer transference). Алиса знает, чего она хочет, – подписать документ. Она должна иметь определенные гарантии того, что компьютер сделает именно то, что ей нужно. Однако обеспечить безопасность не так просто.
Предположим, мы хотим заставить Алису подписать нечто, что ей подписывать не хочется. Это легко сделать, если она поверит в то, что подписывает именно тот документ, который видит на экране. Нам нужно заставить компьютер обмануть Алису.
Мы напишем троянского коня, который будет размещаться в программе, создающей цифровую подпись. Этот троянский конь будет содержать документ, который мы хотим подсунуть Алисе, – несомненно, или что-нибудь постыдное, или сулящее выгоду, – и код для его подписания. Единственное, чего не хватает троянскому коню, – это ключа Алисы. Когда она вводит свой пароль, чтобы подписать какое-нибудь сообщение для нас, троянский конь подсовывает вместо него компрометирующий документ. Программа, создающая цифровую подпись, возвращает ее основному приложению, которое присоединяет подпись к документу, который Алиса действительно собиралась заверить. Если она попытается проверить подпись, троянский конь снова подсунет подделку, и программа, создавшая подпись, подтвердит, что она правильная. Таким образом, троянский конь может заставить компьютер солгать Алисе. Затем она отправляет нам свое сообщение с ошибочной подписью – составленной для совершенно другого документа. Мы присоединяем эту подпись к копии нашей подделки и звоним в Washington Post. Тем временем троянский конь самоуничтожается, и все возвращается в исходное состояние.
Это легко реализовать в среде Windows: можно создать макрос, который будет попросту наблюдать за «открытым файлом» диалога PGP, копировать свой собственный файл под именем того, который как раз собирается подписать Алиса, и впоследствии возвращать старый файл на место. Язык макрокоманд программы Word позволяет сделать это, поэтому совсем не трудно создать такой макровирус.
Это всего лишь один пример. Троянский конь может подсунуть для подписи оба документа и переслать подделку позже, в подходящий момент. Или просто похитить ключ Алисы.