На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

СОЗДАНИЕ  НАДЕЖНЫХ ВЫЧИСЛЕНИЙ

С выходом в свет JDK 1.1 компания Sun добавила к языку Java новый, расши­ренный интерфейс программирования, который позволяет добавить к апплетам огромное количество новых функциональных возможностей. В частности, те­перь апплеты Java поддерживают передачу зашифрованной информации. Одна­ко самым существенным улучшением модели безопасности явилась поддержка файлов JAR (Java Archive). Файл JAR представляет собой архив Java, способ­ный после загрузки выполняться внутри броузера, обладая при этом полными правами доступа. Обычно файлы JAR используются для распространения на­дежных апплетов.
Цифровая подпись файла JAR создается с помощью подписи надежного апплета. Поэтому она уникальна для каждого такого апплета. Как уже говорилось, цифро­вые подписи и сертификаты позволяют найти хозяина апплета. Отметим, однако, что цифровая подпись апплета еще не гарантирует его стопроцентной безопасно­сти. Она лишь является гарантией того, что кто-то зарегистрировал апплет.
Поддержка цифровых подписей позволяет загружать устойчивые и небезопасные апплеты. Поэтому вы должны объяснить всем пользователям сети об опасности
подобных апплетов.
проект KlMERA
Не так давно было создано несколько групп исследователей, занимающихся из­учением вопросов безопасности Java. Одной из наиболее известных является Kimera Java Security Project. В состав этой группы входят ряд исследователей и программистов из Вашингтона. Целью их работы была реализация новой архи­тектуры безопасности Java. Разместив основные службы виртуальной машины Java в рамках сети (например, в брандмауэре), программисты надеются сделать проверку безопасности обязательной. Это намного упростит управление без­опасностью и устранит необходимость выполнения виртуальной машины Java в
броузере пользователя.
Централизованная архитектура безопасности Kimera уменьшает базу надежных вычислений. Более того, эта реализация состоит из маленьких и достаточно простых компонентов, что упрощает управление безопасностью в целом, а пра­вила безопасности становятся обязательными для всех. Кроме того, система проводит аудит независимо от Java. Поэтому журналы регистрации не могут пострадать от некорректного кода. С помощью упреждающей компиляции и раз­дельной верификации системы Kimera снижают требования броузера к памяти и мощности процессора. И наконец, исправления ошибок и обновления системы
больше не потребуют участия пользователя. Основной задачей проекта являлось создание безопасной, высокопроизводительной и масштабируемой инфраструк­туры вычислений. За более подробной информацией о проекте Kimera я отсы­лаю вас на Web-сайт, расположенный по адресу http://kimera.cs.washington.edu.
ИСПОЛЬЗОВАНИЕ ДИЗАССЕМБЛЕРА   И  ВЕРИФИКАТОРА   КЛАССА K/mera
Проект Kimera распространяет через Web две свои наиболее выдающиеся разра­ботки. Первая из них — дизассемблер Kimera. При дизассемблировании скомпи­лированного класса Java вы получаете его виртуальный код. Несмотря на то что обратный компилятор реконструирует исходный текст апплета, дизассемблер
позволяет получить низкоуровневый виртуальный код Java в таком виде, в ка­ком он будет пересылаться по сети. С помощью дизассемблера можно проводить
отладку, аудит и анализ нарушений безопасности системы. Проверяя свой вери­фикатор с помощью автоматически сгенерированных файлов классов, группа
исследователей обнаружила потребность в средстве проверки виртуального кода,
получаемого из созданных файлов. Дело в том, что эти файлы нарушали правила безопасности Java и приводили к генерации ошибок. Прежде всего исследова­тели попробовали воспользоваться программой/отал поставляемой вместе с JDK.
После многочисленных испытаний исследователи пришли к выводу, что полу­ченные с помощью javap данные непригодны для разбора и ассемблирования.
Потребность в корректном дизассемблере заставил разработчиков группы Kimera
создать свое собственное инструментальное средство. Именно так и был создан дизассемблер Java, преобразующий файлы классов Java в совместимые с Jasmin выходные данные. Jasmin — это ветвь компиляторов языка ассемблер. Ассемб­лер — это язык программирования, очень напоминающий машинный код.
С помощью собственного дизассемблера исследователи из Kimera и анализировали последствия атак на виртуальную машину Java. Можно получить
доступ к службе дизассемблирования Kimera через Web. Она позволяет про­тестировать любой класс. Для этого достаточно будет предоставить интересующий вас URL (по умолчанию используется апплет от JavaSoft). Kimera регистрирует все предоставленные ему файлы классов. Чтобы воспользоваться дизассемблером Kimera, обратитесь на Web-сайт, расположенный по адресу http://kimera.cs. washington.edu/disassembler.html.
Кроме дизассемблера разработчики Kimera создали устойчивый и безопасный верификатор. Он входит в разработанную группой архитектуру безопасности.
Исследователи Kimera доказали превосходство своего верификатора над осталь­ными коммерческими реализациями. Для того чтобы продемонстрировать без­опасность верификатора, они запустили специальные программы, которые смогли
обойти коммерческие верификаторы. Ни одна из них не смогла обойти вери­фикатор Kimera. Далее приводится список его преимуществ по отношению к остальным коммерческим версиям:
• В реализации Kimera используется раздельная верификация внутри бранд­мауэра.
• Хакеры не могут воспользоваться ошибкой процессора времени выполнения.
• Неявная семантика не является результатом скрытых интерфейсов.
• Можно проверить на локальной машине только небольшую часть кода. Благодаря этому упрощается процесс тестирования кода.
Малый размер и четкая структура верификатора Kimera позволяет проводить четкое соответствие между спецификациями виртуальной машины Java и реали­зацией аксиом безопасности верификатора. Типичные коммерческие реализации
интегрированной виртуальной машины Java (машины, включенной в броузер)
могут выполнять проверку безопасности посредством верификации, компиля­ции, интерпретации и этапов времени выполнения. С другой стороны, верифи­катор Kimera производит полную верификацию виртуального кода с помощью всего лишь одного компонента. Более того, верификация производится до того, как апплет попадет на машину пользователя. Используемые в проекте Kimera
правила безопасности взяты из спецификаций виртуальной машины Java, что является еще одной гарантией безопасности.
Настоящая реализация верификатора Kimera хорошо соответствует специфика­циям виртуальной машины Java. Этот верификатор проводит процесс проверки в четыре этапа. На первом этапе производится проверка правильности файла класса. На втором определяются границы инструкций виртуального кода и про­веряется безопасность всех ответвлений. Третий и наиболее сложный этап про­верки заключается в анализе потока данных и проверке соответствия типов. Пер­вые три этапа являются гарантией того, что файл класса не производит никаких некорректных действий в изоляции. Четвертый, последний этап проверки га­рантирует, что тестируемый класс не нарушает ни одного из глобальных типов
безопасности или ограничений интерфейса.
Можно получить доступ к службе верификации Kimera через Web и с ее помо­щью протестировать любой класс. Для этого достаточно будет предоставить классу интересующий вас URL (по умолчанию используется простейший апплет Hello World). Как и в случае дизассемблера, Kimera регистрирует все предоставлен­ные файлы классов. Чтобы воспользоваться верификатором Kimera, обратитесь на Web-сайт, расположенный по адресу http://kimera.cs.washington.edu/verifler.html.
НЕКОРРЕКТНЫЕ апплеты
Как уже говорилось, несмотря на достаточную завершенность модели безопас­ности Java, у нее есть некоторые недостатки. Одна из наиболее распространен­ных атак — это атака отказа служб. При ее проведении апплет Java заставляет броузер выполнять копии апплета, что зачастую приводит к сбою операционной системы.
Класс InflniteThreads.java пытается привести броузер к сбою путем многочислен­ных повторных вызовов самого себя и создания огромного количества новых потоков. Эта программа создает новые потоки до тех пор, пока не будет исчер­пана вся память компьютера.
InflniteThreads.java — это простейшая программа для проведения атаки отказа служб. В Internet существует множество апплетов, способных вызвать более серь­езные опасности для операционной системы. Существуют даже такие програм­мы, которые могут уничтожить потоки других апплетов, выполняющихся в броу­зере. Чтобы защитить систему от подобных «гостей», вы должны познакомиться с некоторыми некорректно работающими апплетами, расположенными на ком­пакт-диске. Например, одним из таких апплетов является класс TripleThreatjava.
Класс TripIeThreat.jav более опасен, чем InfmiteThreads.javt Целью этой програм­мы является отключение мыши и клавиатуры. Таким образом у пользователя остается мало шансов остановить работу апплета. Хуже того, при выполнении на машинах Sun SPARCstation, DEC Alpha и Power Macintosh этот апплет может создать огромное количество ненадежных окон, в которых не будет желтых флаж­ков, предупреждающих о ненадежности окна. Класс TripIeThreat.jav создает окна размером миллион на миллион пикселов и помешает их одно на другое. Кроме того, этот апплет добавляет в буфер строк огромные значения, пытаясь тем самым переполнить память машины. И наконец, он закрашивает созданные ненадежные окна. Текст апплета TripleThreatjava располагается на компакт-дис­ке, поставляемом вместе с этой книгой.
Примечание. Автор книги не несет никакой ответственности ни за тексты некор­ректных программ, ни за вред, который они могут нанести вашей системе.
СЕРВЕР JIGSAW
Как уже отмечалось, Java — это полнофункциональный язык программирова­ния. В настоящее время многие компании реализуют Java в приложениях рас­пределенных корпоративных сетей и используют этот язык программирования для управления базами данных, действиями корпоративных сетей и програм­много обеспечения для рабочих групп.
Пожалуй, самой лучшей демонстрацией возможностей Java является созданный World Wide Web Consortium (W3C) сервер Jigsaw. Это приложение представляет
собой полнофункциональный сетевой сервер, в который включены сервер-по­средник и службы управления файлами. W3C создал его с помощью Java. Та­ким образом, сервер может выполняться на любой платформе, поддерживаю­щей виртуальную машину Java.
Чтобы лучше понять потенциальные возможности Java, вы наверняка захотите поближе познакомиться с Jigsaw. Для этого посетите Web-сайт W3C, располо­женный по адресу http://www.w3c.com/).

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика