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

Существуют и более серьезные проблемы. В главе 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?