аутентичности.) После этого браузер открывает диалоговое окно и показывает пользователю имя программиста или компании, которые подписали код. Если пользователь соглашается принять код, программа загружается в браузер.
Любой подросток, к которому на вечеринку заявлялись случайные гости не лучшего сорта, знаком с этой проблемой. Безопасность системы полностью находится в руках пользователя. Как только код ActiveX проникает на машину пользователя, он может сделать все что угодно: переформатировать жесткий диск, изменить ваши однодолларовые ставки в тотализаторе на стодолларовые, собрать все ваши полные чувств любовные письма и послать их кинопродюсеру в Лос-Анджелес и пр. и пр.
Microsoft возразила, что подписи, конечно, будут указывать на автора, но это знание будет небольшим утешением человеку, у которого только что «рухнул» компьютер. Это все равно, что обязать преступников носить визитные карточки и перестать запирать двери на замок. «Мы сожалеем, что они вошли в ваш дом, съели всю вашу еду, сломали всю вашу мебель и унесли все ваши ценности. Но, по крайней мере, мы знаем, кто они». Причем в случае Интернета может быть такое уточнение: «Это были два подростка из страны, с которой у США нет договора об экстрадиции. Вам стало легче?» Кроме того, предполагается, что вы сможете определить, какая именно программа из десятков имеющихся у вас на жестком диске вызвала проблемы. Один исследователь показал, что при соединении двух безвредных средств управления ActiveX они способны стать разрушительными; и кто будет виноват в этом случае?
Существуют и более серьезные проблемы. В главе 17 подробно рассказывается о том, насколько сомнительно, что пользователи примут правильное и безопасное решение, здесь же достаточно сказать, что большинство людей не беспокоятся о том, каким средствам ActiveX можно доверять, а каким – нет. А это предполагает наличие инфраструктуры открытого ключа (PKI), поддерживающей подписи, о чем я еще буду сокрушаться в главе 15. Существует много возможностей обмануть PKI и заставить ее поверить, что средство управления подписано, когда это не так.
На самом деле ActiveX – это расширение старой системы компонентов Microsoft, так называемой DCOM. Это система, при помощи которой, например, Internet Explorer открывает и показывает таблицы Excel. Большинство используемых программами DLL на самом деле служат только транспортным средством для объектов DCOM. Explorer просто вставляет внутреннее содержимое книги Excel посредством DCOM и ActiveX. Это – невероятно мощная система, более гибкая, более доступная, более интересная архитектурно и невообразимо более опасная, чем аналогичные способы в других операционных системах.
В Java применяется совершенно иная модель. Это – просто язык программирования, специально разработанный для переносимого кода, создатели которого не забывали и о безопасности. Программы Java, запускаемые при помощи веб-браузера, называются
Во-первых, существует так называемый
Во-вторых, имеется
И в-третьих, есть
Модель «песочницы» слишком сложна, но это лучшее, что у нас есть в настоящее время. Последние версии Java имели две модификации – хорошую и плохую. В Java 1.1 реализовано подписывание кода, что роднит его с ActiveX. Апплеты, которым пользователи доверяют, могут выходить за пределы «песочницы» и без ограничений работать на машине пользователя. Нужно ли говорить, насколько при этом делаются актуальными все проблемы безопасности модели ActiveX?
В Java 2 усовершенствована модель «песочниц». Вместо подхода «все или ничего» – или в «песочнице», или за ее пределами – Java 2 обеспечивает большую гибкость модели безопасности. Апплеты получают именно такие полномочия, которые необходимы для выполнения их работы. Например, один апплет может иметь доступ к файловой системе компьютера, но не иметь сетевого доступа. Другому разрешен сетевой доступ, но запрещен доступ к файловой системе. Третий апплет может иметь только доступ к определенной части файловой системы. То есть каждому апплету предназначается своя «песочница». Такая система работает намного лучше, но, как оказалось, она сложна в использовании.
Дополнительные модули хуже всего, поскольку они автоматически считаются надежными. Это – программные модули, которые вы можете добавить к своему браузеру, чтобы расширить его функциональные возможности, например средства просмотра файлов формата PDF, медиапроигрыватели или что-нибудь еще. У них нет никакой системы безопасности. Если вы их загружаете и устанавливаете, значит, вы им доверяете. Точка.
HTTP (протокол, используемый в Веб), как и большая часть информации, блуждающей в Интернете, незашифрован и неаутентифицирован. Многие боятся доверять номера своих кредитных карт незашифрованной веб-связи. (Я не думаю, что в этом есть смысл, но кое-что я бы посылать по Сети незашифрованным не стал.) Чтобы решить эту проблему, в ранние версии Netscape Navigator включали специальный протокол, так называемый SSL. Этот протокол, который был со временем переименован в TLS, обеспечивает шифрование и аутентификацию веб-связи. SSL довольно хорош, и все его проблемы касаются сертификатов и их применения (подробности – в главе 15). Некоторые веб-сайты предоставляют вам возможность выбрать защищенный SSL сеанс связи с браузером. (Веб-страница должна иметь этот параметр; браузер не будет использовать SSL, если на сервере нет соответствующих установок.) Браузер и веб-сервер применяют шифрование открытым ключом для обмена ключами и симметричное шифрование для кодирования данных. Присутствие в нижней части браузера зеленого ключа или желтого замка дает пользователю возможность почувствовать себя намного свободнее.
Однако нельзя упускать из виду, что пока пользователь не проверит вручную присланный сервером сертификат, он не имеет ни малейшего представления о собеседнике. Я повторяю, SSL устанавливает безопасную связь между браузером и кем-то на другом конце соединения. Если пользователь не проверит, кто находится на другом конце соединения, он не будет знать, с кем он секретничает. Представьте себе, что двое незнакомых друг с другом людей входят в абсолютно темную комнату со звуконепроницаемыми стенами. Они знают, что их разговор никто не подслушает. Но кто доверит свои секреты незнакомцу? Это одна из проблем, возникающих при использовании SSL-сертификатов.
Кроме того, SSL не обеспечивает защиты данных на сервере. В начале 2000 года хакеры неоднократно взламывали веб-сайты и крали информацию: номера кредитных карт, информацию о лицевых счетах и многое другое. SSL не в состоянии это предотвратить.
На унифицированный указатель информационного ресурса (URL) направлен целый ряд атак, некоторые из них рассчитаны на ошибку пользователя, а некоторые – просто на его необразованность. Первый класс – это атаки, при которых разные серверы крадут трафик друг у друга. Может быть, на ваш взгляд, это ерунда – зачем веб-сайту, продающему водопроводное оборудование, трафик веб-сайта финансовых новостей, – но некоторые сайты, например порнографические, таким образом хотят повысить посещаемость своих страниц.
Один из способов получить чужой трафик – обмануть поисковую машину. Машины поиска в большинстве своем довольно глупы: вы спрашиваете их о сайтах про водопроводное оборудование и получаете в ответ все веб-страницы, на которых где-то в тексте есть словосочетание «водопроводное оборудование». (Более современные машины поиска чуть умнее, но основной принцип сохранился.) Некоторые сайты имеют на своих страницах посторонний текст в качестве приманки для поисковой машины. Этот текст не отображается на экране – он может быть спрятан (например, белый текст на белой