SSL протокол - это схема шифрования низкого уровня, используемая для шифрования транзакций в протоколах высокого уровня, таких как HTTP, NNTP и FTP. SSL протокол содержит методы для идентификации сервера для клиента, шифрование данных при передаче и дополнительно, верификации клиента для сервера. Из коммерческих систем SSL протокол сейчас реализован в Netscape навигаторах и Netscape серверах. ( Реализованы шифрование данных и авторизация сервера, авторизация клиента нет).
Существует также свободно распространяемая версия SSL, называемая SSLeay. Она содержит исходный код на C, который может быть встроен в такие приложения, как Telnet и FTP. Поддерживаются также свободно распространяемые Unix Web серверы Apache и NCSA httpd и несколько Web клиентов, включая Mosaic. Этот пакет может быть использован бесплатно для коммерческих и некоммерческих приложений.
Механизм открытых ключей обеспечивает шифрование данных при помощи открытого ключа(public key). В традиционных системах шифрования один и тот же ключ использовался для шифрования и дешифрования. В новом открытом или асимметричных системах шифрования ключи идут парами: один ключ используется для кодирования, другой для декодирования. Один из этих ключей, называемый открытым ключом, свободно распространяемый и используется для кодирования сообщений. Другой ключ, называемый личным ключом (private key) засекречен и используется для декодирования поступающего сообщения. В этой системе пользователь, посылающий сообщение второму пользователю может зашифровать сообщение открытым ключом второго пользователя.
Сообщение может дешифровано владельцем секретного личного ключа второго пользователя. Эта система может быть использована для создания неподделываемых цифровых подписей. В Netscape Enterprise Server администраторы могут динамически изменять ключи для сервера, что позволяет оперативно изменять политику авторизации.
Netscape серверы и навигаторы осуществляют шифрование используя или 40-битный ключ или 128-битный ключ. В принципе можно взломать 40-битный ключ, перебирая каждую возможную комбинацию ( всего 2^40 ) пока Вы не обнаружите, что сообщение расшифровано. Взломать 128 битный ключ практически нереально.
3.3.Java, JavaScript и проблема безопасности.
Java и JavaScript - это тот раздел безопасности Web, который касается не администраторов и создателей Web серверов, а пользователей и администраторов пользовательских сетей.
Несмотря на сходство в именах Java и JavaScript это две различных продукта. Java - это язык программирования разработанный SunSoft. Java программы прекомпилируются в компактную форму и хранятся на сервере. HTML документы могут ссылаться на миниприложения, называемые Java аплетами. WWW клиенты, которые поддерживают Java апплеты, загружают откомпилированные Java приложения и выполняют их на машине клиента. JavaScript это набор расширений к HTML, интерпретируемых WWW клиентом. В принципе, несмотря на то что JavaScript имеет более длинную историю проблем, связанных с безопасностью, хакерская программа на Java может активно и успешно вывести пользовательскую систему из строя, про JavaScript до сих пор известны только случаи передачи конфиденциальной информации клиента на Web сервер. Java апплеты выполняются на клиентской стороне, а не на серверной, и поэтому увеличивают риск атаки со стороны сервера. Нужно ли беспокоится об этом ?
В Java встроены средства для ограничения доступа к клиентской машине. Апплетам не разрешается выполнять системные команды, загружать системные библиотеки, или открывать системные устройства, такие как диски. Апплетам, в зависимости от WWW клиента или запрещены все дисковые операции ( Netscape ), или почти все ( HotJava ).Апплетам разрешается устанавливать соединение по сети только к серверу, откуда аплет был загружен. Но Drew Dean ( ddean@cs.princenton.edu ) обнаружил, что можно написать апплет, который будет устанавливать соединение к любому компьютеру в интернете, то есть аплет из Интернета, загруженный на вашу локальную машину WWW клиентом может подсоединиться по TCP/IP к любой машине на вашей локальной сети, даже если она защищена через firewall. Эта проблема связана с тем, что Java выполняет верификацию для соединения через Domain.
Name System (DNS). Взломщик используя свой собственный DNS сервер может создать некорректную ссылку в DNS, чтобы заставить Java систему считать, что апплету разрешено соединение с компьютером к которому у него нет права подсоединяться. Ошибка была исправлена в Netscape навигаторе 2.01 и JDK 1.0.1.
David Hopwood обнаружил, что загружая апплеты с 2 разных WWW серверов хэкер может нарушить пространство имен Java Virtual Machine. Это позволяет преобразовывать типы переменных друг в друга, преобразовывать целые в ссылки и т.д. В результате апплет может читать и писать локальные файлы, выполнять машинный код. Безо всяких проблем в UNIX может быть создан файл .rhosts. Эта ошибка проявляется, как минимум на HotJava, код может быть написан целиком на Java и быть платформонезависимым.
В настоящих версиях Java возможны трюки с вызовом конструктора суперкласса, в результате чего этот вызов может быть пропущен. Это связано с алгоритмом, который сейчас использует интерпретатор Java. Возможные пути для этого:
-super внутри try.
-super внутри if.
-cathcer/thrower.
JavaScript - это встроен в Netscape навигатор. Периодически в Netscape навигаторе обнаруживались проблемы с безопасностью в связи с JavaScript, которые Netscape периодически устраняет в новых версиях навигатора. Andy Augustine в своем JavaScript FAQ описывает следующие проблемы: 1)Чтение пользовательской истории URL - исправлено в Netscape 2.0.
2)Чтение пользовательского кэша URL - исправлено в Netscape 2.0.
3)Чтение пользовательского e-mail адреса и передача его по Интернету исправлено в Netscape 2.01.
4)Получение рекурсивного оглавления файловой системы - исправлено в Netscape 2.01.
5)Открытие окна размером 1 пиксел, получение URL открытых документов и передача их удаленному серверу. Эта общая проблема сетевых графических систем, имеющая длинную историю. Пользователи x-windows, которые запускают команду `xhost +` без аргументов могут столкнуться с чужим невидимым окошком, которое передает ввод пользователя по Интернету хакеру.
Для того чтобы работать с Java и JavaScript приложениями без проблем с безопасностью рекомендуется:
-Не пользоваться старыми версиями WWW клиентов, которые поддерживают Java и JavaScript. Производители web клиентов исправляют свои программы, если обнаруживается новая ошибка в безопасности.
-Следить за текущим состоянием дел с безопасностью Java и Javascript. Javasoft имеет страницу, посвященную Java и безопасности. У netscape есть аналогичная страница про JavaScript. Каждый производитель web клиента имеет на своем сервере страницу посвященную безопасности.
В заключение несколько общих правил, которые помогут Вам избежать многих проблем.
1.При создании web сервера используйте надежный продукт.Используйте web сервер, который подходит под ваши нужды, не обязательно самый всеобъемлющий и модный.
2.Читайте документацию сервера. Недостатки в настройке чаще создают проблемы с безопасностью нежели ошибки в самом сервере.
3.Не забывайте про SSL протокол, если речь идет о коммерческой информации.
4.Заботьтесь о безопасности CGI приложений, так как это части самого сервера. Не забывайте проверять и чужие CGI приложения, если у Вас многопользовательский сервер.
5.Не пользуйтесь старыми версиями Web клиентов с поддержкой Java и JavaScript. Следите за обновлениями.
4.Заключение.
В данной работе мною были рассмотрены проблемы защиты информации в глобальной сети Internet. Проблема эта была и остается актуальной по сей день, так как никто еще не может гарантировать на сто процентов того, что ваша информация будет защищена или в ваш компьютер не попадет вирус. Актуальность этой проблемы подтверждает еще и то, что ей посвещено огромное количество страниц в Internet. Однако большая часть информации идет на английском языке, что затрудняет работу с ней. Разумеется в данной работе рассмотрена лишь часть проблемы (не рассмотрена, например, защита информации при помощи брандмауэров(сетевых экранов)). Проведенные исследования показывают, что разработано множество способов защиты информации: разграничение доступа, защита при помощи паролей, шифрование данных и.т.п. Однако, несмотря на все это, до сих пор мы то и дело слышим о взломах хакерами различных серверов и компьютерных систем. Это говорит о том, что проблема защиты информации еще не решена и на ее решение будет потрачено множество сил и времени.
5. Список специальных терминов
ARP (Address Resolution Protocol) - протокол определения адреса, преобразует адрес компьютера в сети Internet в его физический адрес.
ARPA (Advanced Research Projects Agency) - бюро проектов передовых исследований министерства обороны США.
Ethernet - тип локальной сети. Хороша разнообразием типов проводов для соединений, обеспечивающих пропускные способности от 2 до 10 миллионов bps(2-10 Mbps). Довольно часто компьютеры, использующие протоколы TCP/IP, через Ethernet подсоединяются к Internet.
FTP (File Transfer Protocol) - протокол передачи файлов, протокол, определяющий правила пересылки файлов с одного компьютера на другой.
FAQ (Frequently Asked Qustions) - часто задаваемые вопросы. Раздел публичных архивов сети Internet в котором хранится информация для "начинающих" пользователей сетевой инфраструктуры.
Gopher - интерактивная оболочка для поиска, присоединения и использования ресурсов и возможностей Internet. Интерфейс с пользователем осуществлен через систему меню.
HTML (Hypertext Markup Language)- язык для написания гипертекстовых документов. Основная особенность - наличие гипертекстовых связей между документами находящимися в различных архивах сети; благодаря этим связям можно непосредственно во время просмотра одного документа переходить к другим документам.
Internet - глобальная компьютерная сеть.
IP (Internet Protocol) - протокол межсетевого взаимодействия, самый важный из протоколов сети Internet, обеспечивает маршрутизацию пакетов в сети.
IР-адрес - уникальный 32-битный адрес каждого компьютера в сети Internet.