Развитие прикладных протоколов
Развитие Internet-приложений определяет необходимость создания новых прикладных протоколов. Традиционный подход к протоколам основан на развитии протоколов TCP и UDP. Ограниченность такого подхода состоит в том, что при появлении новых требований к передаче данных, возникает потребность в создании новых протоколов.
Появившийся недавно структурный или рамочный подход родился из неизбежности постоянного обновления прикладных протоколов. Рамочная конструкция предполагает несколько характеристик: тип системы; язык описания сервисов; адресную модель; связь с транспортными протоколами нижних уровней; решения по безопасности; разбиение сообщений на компоненты. Примерами таких протоколов являются SOAP,WSDL, BEEP/BXXP.
Эти же протоколы могут быть использованы для реализации поддержки веб-сервисов. Веб-сервисы реализуют интерфейсы обмена данными между различными приложениями, которые могут быть написаны на разных языках и распределены на разных узлах сети. На сегодняшний день наибольшее распространение получили следующие протоколы реализации веб-сервисов: Access Protocol (SOAP/WSDL/UDDI), XML-RPC (XML Remote Procedure Call), REST (Representational State Transfer).
Стратегия, опирающаяся на горизонтальный подход REST к протоколам, наиболее радикальна. Слово «горизонтальный» означает сохранение существующего уровня, без выстраивания уровней поверх него. При этом предполагается отказаться от разработки новых протоколов, а использовать несколько хорошо проверенных, считая, что для работы с объектами достаточно уметь выполнять четыре типа действий: создание (Creation), восстановление (Retrieval), изменение (Update) и уничтожение (Destruction). Из этих действий получается так называемый «шаблон проектирования» CRUD. Протокол HTTP определяет методы GET/PUT/POST/DELETE, которые и реализуют шаблон CRUD.
REST — это спецификация, а архитектурный стиль, выстроен на стандартах HTTP, URI, XML и RDF (Resource Description Format). В REST-сервисах акцент сделан на доступ к ресурсам, а не на исполнение удаленных сервисов. В отличие от SOAP-сервисов, REST остается HTTP - запросом. REST по сравнению с SOAP, может оказаться и более производительным, так как не требует затрат на разбор XML команд, а только выполнения обычных HTTP запросов. SOAP, в свою очередь, более надежен и безопасен.
SOAP (Simple Object Access Protocol ) — протокол обмена структурированными сообщениями в распределённой вычислительной среде, был разработан в 1998 году в проекте Microsoft, как протокол доступа к объектам. SOAP применим в сложных архитектурах, где взаимодействие с объектами выходит за рамки теории CRUD. SOAP является расширением протокола XML-RPC. SOAP используется поверх HTTP или другого протокола прикладного уровня. Сообщение SOAP выглядит так:
SOAP опирается на XML для формата сообщения, и на другие протоколы прикладного уровня, в первую очередь HTTP и протокол передачи почты SMTP. SOAP может послужить основой слоя стека протоколов веб-сервисов , обеспечивающих основную структуру сообщений, на которых веб-сервисы могут быть построены. Протокол SOAP состоит из трех частей: конверт, который определяет, состав сообщении, и способ его обработки, набор правил кодирования, а также конвенции для представления вызовов процедур и ответов. SOAP сообщение может быть отправлено на веб-сайт, который имеет включенные веб-сервисы, например, курсы валют. На сайт будет возвращён XML-документ с полученными данными цены, расположения, особенности. Он может быть интегрирован непосредственно в сторонние веб-сайты или приложения.
SOAP архитектура состоит из нескольких слоев: для формата сообщения, модели обработки сообщений, а также протокола расширения.
Определены следующие узлы SOAP:
SOAP отправитель -узел, который передает SOAP-сообщение. Начальный отправитель начинает SOAP-сообщение в начальной точке пути.
SOAP приемник- узел, который принимает сообщения SOAP. Окончательный SOAP приемник является конечным пунктом назначения SOAP сообщений. Он отвечает за обработку содержимого SOAP тела и SOAP заголовки блоков. Оба протокола SMTP и HTTP используются в качестве транспорта для SOAP, но HTTP получил более широкое признание как он хорошо работает с интернет-инфраструктурой и с сетевыми брандмауэрами .
SOAP-посредник обрабатывает SOAP заголовки блоков, направленных на его действия и направляет сообщение SOAP к конечному получателю SOAP.
Все SOAP спецификации поддерживаются протоколом XML, который способствует читабельности, облегчает обнаружение ошибок, но может замедлить скорость обработки.
Безопасность в сети
Компьютерная и информационная безопасность представляют процесс предупреждения и выявления несанкционированного использования компьютера и хранящейся на нем информации. Информационная безопасность касается следующих направлений:
Конфиденциальность - информация должна быть доступна только тем, кто по праву имеет к ней доступ.
Целостность - Информация может быть изменена только теми, кто уполномочен это делать.
Доступность - информация должна быть доступной для тех, кто в ней нуждается.
Злоумышленники пытаются получить или исказить или уничтожить определенную информацию с находящего в сети компьютера. Наиболее распространенные методы, используемые злоумышленниками для получения контроля над компьютерами:
1. Троянский конь
2. Задняя дверь и программы удаленного администрирования
3. Отказ в обслуживании
4. Сетевые и Email-вирусы
5. Сокрытие расширений файлов
6. Скриптовый код (JavaScript и ActiveX)
7. Email спуфинг
8. Перехват пакетов
На компьютерах с Windows для получения удаленного доступа к компьютеру часто используются злоумышленниками программы: BackOrifice, Netbus и SubSeven. Эти программы удаленного администрирования (задняя дверь) позволяют другим людям получить доступ и управлять чужим компьютером.
Еще один вид атаки называется “отказ в обслуживании” (DoS-атака). Этот тип атаки настолько занимает компьютер обработкой данных, что нельзя использовать его по назначению. Целью нападения на компьютер может быть использование его как участника в нападении на другую систему. Примером этого является распределенный отказ в обслуживании (DDoS). Злоумышленники установливают «агент», который работает на зараженном компьютере, ожидая дальнейших инструкций. Когда число агентов, работающих на разных компьютерах, достаточно велико, поступает команда о нападении на другую систему.
Еще одна угроза включает в себя вредоносный и деструктивный код, такие как вирусы и черви. E-mail вирусы часто распространяются в виде вложений в сообщения электронной почты. Вредоносный код может распространяться забавными или заманчивыми программами. Нельзя запускать программы из непроверенных источников.
Операционные системы содержат опцию "Скрывать расширения для зарегистрированных типов файлов". Опция включена по умолчанию, но пользователь может отключить эту опцию. Первая крупная атака, которая воспользовалась сокрытием расширения файла было VBS / LoveLetter червь, который содержал вложения электронной почты под названием "LOVE-LETTER-FOR-YOU.TXT.vbs". Файл прикрепленного к электронной почте сообщения, отправленного этими вирусами может оказаться безвредным или содержать вредоносный сценарий.
Имеются вопросы к безопасности скриптового кода на языках типа JavaScript / ActiveX. Эти языки программирования позволяют веб-разработчикам писать код, который выполняется на веб-браузере. Он может быть использован злоумышленниками для сбора информации или запуска вредоносного кода на компьютере.
Email - спуфингсостоит в том, чтобы отправить "подмены", утверждающие, что сообщение электронной почты, возникло из одного источника, когда оно фактически было направлено из другого источника. Например по электронной почте якобы от системного администратора посылается запрос пользователям изменить свои пароли на указанный с угрозой приостановить учетную запись, или приказ отправлять по указанному адресу копию файла паролей и другой конфиденциальной информации
Перехват пакетов. Пакет снифер это программа, которая собирает данные из информационных пакетов, пока они путешествуют по сети. Эти данные могут включать в себя имена пользователей, пароли и конфиденциальную информацию, которая путешествует по сети открытым текстом. Установка анализатора пакетов не обязательно требует доступ на уровне администратора.
Злоумышленники открывают уязвимости ("дыры") в программном обеспечении компьютера. Когда "дыры" обнаружены, производители программ, как правило, разрабатывают патчи для решения проблемы. Большую часть компьютерных взломов можно было бы предотвратить, если бы пользователи заменили на своих компьютерах программы на исправленные патчи и внесли исправления безопасности.
Отметим, что существует риски даже для компьютеров, не имеющих подключения к сети. Напрмер, отказы жесткого диска являются причиной потери данных на компьютерах. Регулярное резервное копирование системы являются единственным эффективным средством защиты. Мерой, обеспечивающей конфиденциальность информации, является использование шифрования с помощью специальных криптографических средств.
Протокол SSL
Прикладные протоколы HTTP, SMTP, POP3, IMAP были придуманы в хорошие времена, когда в Сети все люди доверяли друг другу. С тех пор Интернет сильно изменился. Так же, как необходимо ставить сигнализацию на автомобили и квартиры, так же необходима и защита передаваемых данных. Имена пользователей, номера кредитных карт и другая информация, передаваемая «открытым текстом» слишком уязвимы для вмешательства со стороны. Содержание транзакции может быть перехвачено и изменено в процессе передачи.
Для обеспечения защиты возникла целая наука - криптография. Если необходима безопасность, то используются протоколы https, smtps, pop3s, imaps, ssh и др., которые будут хранить конфиденциальную информацию с применением SSL шифрования. Протокол SSL (Secure Socket Layer) использует асимметричную криптографию, известную как криптография с открытым ключом. В криптографии с открытым ключом создаются два ключа, один публичный, другой секретный. Данные, которые были зашифрованы секретным ключом сервера могут, быть дешифрованы только с помощью публичного ключа этого же сервера, давая уверенность в том, что данные пришли от него. Протокол SSL, совместно разработанный Netscape Communications и RSA Data Security, обеспечивает установление безопасного cоединения между клиентом и сервером. SSL обеспечивает безопасность, аутентификацию на базе сертификатов и согласование безопасности по установленному сетевому соединению, поэтому множество компаний приняли SSL в качестве коммуникационного протокола. На основании протокола SSL 3.0 был разработан стандарт RFC, получивший имя TLS.
Протокол SSL состоит из протокола записи и протокола рукопожатия. Протокол SSL записи определяет формат, используемый для передачи данных. Протокол SSL включает рукопожатие для обмена сериями сообщений между сервером и клиентом во время установления первого соединения.
Протокол SSL обеспечивает конфиденциальность обмена данными между клиентом и сервером, использующими TCP/IP на основе протокола HTTPS (Hypertext Transfer Protocol Secure), поддерживающего шифрование. Данные, которые передаются по протоколу HTTPS, «упаковываются» в криптографический протокол SSL или TLS. HTTPS поддерживается всеми браузерами. В отличие от HTTP, для HTTPS по умолчанию используется TCP-порт 443 вместо 80. Подключение по SSL всегда инициируется клиентом вызовом URL-адреса, начинающегося с https:// вместо http:// .
SSL поддерживает 3 типа аутентификации:
• аутентификация и клиента и сервера,
• аутентификация сервера с неаутентифицированным клиентом
• полная анонимность.
Когда сервер аутентифицируется, канал безопасен против попытки перехвата данных между веб-сервером и браузером. Аутентифицированный клиент должен предоставить допустимый сертификат серверу. Главная цель процесса обмена ключами — это создание секрета клиента (pre_master_secret), известного только клиенту и серверу. Секрет (pre_master_secret) используется для создания общего секрета (master_secret). Общий секрет необходим для того чтобы создать сообщение для проверки сертификата, ключей шифрования, секрета MAC (message authentication code) и сообщения «finished». При посылке верного сообщения «finished», тем самым стороны докажут что они знают верный секрет (pre_master_secret).
Анонимный обмен ключами
Полностью анонимная сессия может быть установлена при использовании алгоритма RSA или Диффи-Хеллмана для создания ключей обмена. В случае использования RSA клиент шифрует секрет (pre_master_secret) с помощью открытого ключа несертифицированного сервера. Открытый ключ клиент узнает из сообщения обмена ключами от сервера. Результат посылается в сообщении обмена ключами от клиента. Поскольку перехватчик не знает закрытого ключа сервера, то ему будет невозможно расшифровать секрет (pre_master_secret). При использовании алгоритма Диффи-Хеллмана открытые параметры сервера содержатся в сообщении обмена ключами от сервера, и клиенту посылают в сообщении обмена ключами. Перехватчик, который не знает приватных значений, не сможет найти секрет (pre_master_secret).