Выбрать главу

Существуют и более серьезные проблемы. В главе 17 подробно рассказывается о том, насколько сомнительно, что пользователи примут правильное и безопасное решение, здесь же достаточно сказать, что большинство людей не беспокоятся о том, каким средствам ActiveX можно доверять, а каким – нет. А это предполагает наличие инфраструктуры открытого ключа (PKI), поддерживающей подписи, о чем я еще буду сокрушаться в главе 15. Существует много возможностей обмануть PKI и заставить ее поверить, что средство управления подписано, когда это не так.

На самом деле ActiveX – это расширение старой системы компонентов Microsoft, так называемой DCOM. Это система, при помощи которой, например, Internet Explorer открывает и показывает таблицы Excel. Большинство используемых программами DLL на самом деле служат только транспортным средством для объектов DCOM. Explorer просто вставляет внутреннее содержимое книги Excel посредством DCOM и ActiveX. Это – невероятно мощная система, более гибкая, более доступная, более интересная архитектурно и невообразимо более опасная, чем аналогичные способы в других операционных системах.

В Java применяется совершенно иная модель. Это – просто язык программирования, специально разработанный для переносимого кода, создатели которого не забывали и о безопасности. Программы Java, запускаемые при помощи веб-браузера, называются апплетами, и им для работы отводится определенный участок памяти, «песочница», которая позволяет ограничить возможные повреждения. «Песочницы» защищаются по трем схемам.

Во-первых, существует так называемый верификатор байтового кода. При каждой загрузке апплета Java верификатор байтового кода сначала проверяет программу. Верификатор гарантирует, что байтовый код имеет правильный формат и не создаст каких-либо общих проблем.

Во-вторых, имеется загрузчик класса. Этот компонент определяет, как и когда апплет может быть добавлен к среде Java. Его задача – убедиться, что апплет не заменит уже существующую важную программу.

И в-третьих, есть администратор безопасности. Это устройство чем-то похоже на мониторы обращений, о которых шла речь в главе 8; к нему обращаются всякий раз, когда апплеты Java пытаются проделать что-то потенциально опасное: открыть файл, установить связь с сетью и т. д. В зависимости от способа установки апплета эти операции будут или разрешены, или запрещены. (Например, апплет, загруженный по Сети, имеет больше ограничений, чем апплет, установленный на компьютер при покупке операционной системы.)

Модель «песочницы» слишком сложна, но это лучшее, что у нас есть в настоящее время. Последние версии Java имели две модификации – хорошую и плохую. В Java 1.1 реализовано подписывание кода, что роднит его с ActiveX. Апплеты, которым пользователи доверяют, могут выходить за пределы «песочницы» и без ограничений работать на машине пользователя. Нужно ли говорить, насколько при этом делаются актуальными все проблемы безопасности модели ActiveX?

В Java 2 усовершенствована модель «песочниц». Вместо подхода «все или ничего» – или в «песочнице», или за ее пределами – Java 2 обеспечивает большую гибкость модели безопасности. Апплеты получают именно такие полномочия, которые необходимы для выполнения их работы. Например, один апплет может иметь доступ к файловой системе компьютера, но не иметь сетевого доступа. Другому разрешен сетевой доступ, но запрещен доступ к файловой системе. Третий апплет может иметь только доступ к определенной части файловой системы. То есть каждому апплету предназначается своя «песочница». Такая система работает намного лучше, но, как оказалось, она сложна в использовании.

Дополнительные модули хуже всего, поскольку они автоматически считаются надежными. Это – программные модули, которые вы можете добавить к своему браузеру, чтобы расширить его функциональные возможности, например средства просмотра файлов формата PDF, медиапроигрыватели или что-нибудь еще. У них нет никакой системы безопасности. Если вы их загружаете и устанавливаете, значит, вы им доверяете. Точка.

Безопасность Веб

HTTP (протокол, используемый в Веб), как и большая часть информации, блуждающей в Интернете, незашифрован и неаутентифицирован. Многие боятся доверять номера своих кредитных карт незашифрованной веб-связи. (Я не думаю, что в этом есть смысл, но кое-что я бы посылать по Сети незашифрованным не стал.) Чтобы решить эту проблему, в ранние версии Netscape Navigator включали специальный протокол, так называемый SSL. Этот протокол, который был со временем переименован в TLS, обеспечивает шифрование и аутентификацию веб-связи. SSL довольно хорош, и все его проблемы касаются сертификатов и их применения (подробности – в главе 15). Некоторые веб-сайты предоставляют вам возможность выбрать защищенный SSL сеанс связи с браузером. (Веб-страница должна иметь этот параметр; браузер не будет использовать SSL, если на сервере нет соответствующих установок.) Браузер и веб-сервер применяют шифрование открытым ключом для обмена ключами и симметричное шифрование для кодирования данных. Присутствие в нижней части браузера зеленого ключа или желтого замка дает пользователю возможность почувствовать себя намного свободнее.