Обеспечение безопасности передачи данных. Протокол HTTPS

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

Самым простейшим является расширение HTTPS, при котором данные, передаваемые по протоколу HTTP, «упаковываются» в криптографический протокол SSL или TLS, тем самым обеспечивая защиту этих данных. В отличие от HTTP для HTTPS по умолчанию используется ТСР-порт 443. Чтобы подготовить web-сервер для обработки HTTPS соединений, администратор должен получить и установить в систему сертификат для этого web-сервера.

SSL (Secure Sockets Layer — уровень защищенных сокетов) — криптографический протокол, обеспечивающий безопасную передачу данных по сети Интернет. При его использовании создается защищенное соединение между клиентом и сервером. SSL изначально разработан компанией Netscape Communications. Впоследствии на основании протокола SSL 3.0 был разработан и принят стандарт RFC, получивший название TLS. TLS (Transport Layer Security — безопасность транспортного уровня) — этот протокол использует шифрование с открытым ключом для подтверждения подлинности отправителя и получателя. TLS поддерживает надежность передачи данных за счет использования корректирующих кодов и безопасных хэш-функций. На нижнем уровне многоуровневого транспортного протокола (например, TCP) он является протоколом записи и используется для инкапсуляции различных протоколов (POP3, IMAP, SMTP или HTTP). Для каждого инкапсулированного протокола TLS обеспечивает условия, при которых сервер и клиент могут подтверждать друг другу свою подлинность, выполнять алгоритмы шифрования и производить обмен криптографическими ключами, прежде чем протокол прикладной программы начнет передавать и получать данные.

Для доступа к web-страницам, защищенным протоколом SSL, в URL вместо схемы http, как правило, подставляется схема https, указывающая на то, что будет использоваться SSL-соединение. Стандартный ТСР-порт для соединения по протоколу https — 443. Для работы SSL требуется, чтобы на сервере имелся SSL-сертификат.

Как известно, существуют классические криптостойкие алгоритмы шифрования, которые шифруют данные на основе существующего ключа. Для шифрования и расшифровки данных используется один и тот же ключ. Ключ — это обычная последовательность бит определенной длины. Чем больше длина ключа, тем сложнее взломать алгоритм шифрования. Если передавать этот ключ в открытом виде, то смысл шифрования пропадает, поэтому используют дополнительно другой вид шифрования — асимметричный. В этом случае существует пара ключей — открытый и закрытый. С помощью открытого ключа можно только зашифровать информацию, а с помощью закрытого — расшифровать. Обычно при таком подходе закрытый ключ хранится в секрете, а открытый ключ — общедоступным. Однако асимметричный алгоритм работает медленнее, чем симметричный, поэтому его используют для первоначального обмена симметричными ключами.

Одна из наследственных проблем протокола HTTP заключается в непостоянстве соединения между клиентом и сервером, т.е. для каждого документа (или файла) при передаче по протоколу HTTP посылается отдельный запрос. Иначе говоря, транзакция завершается после того, как браузер сделал запрос, а сервер выдал соответствующий ответ. Сразу после этого сервер «забывает» о пользователе и каждый следующий запрос того же пользователя считает новым пользователем. Включение в протокол HTTP cookie дало частичное решение этой проблемы.

Cookie — это небольшая порция текстовой информации, которую сервер передает браузеру. Браузер хранит эту информацию и передает ее серверу с каждым запросом как часть HTTP заголовка. Одни значения cookie могут храниться только в течение одной сессии, они удаляются после закрытия браузера. Другие, установленные на некоторый период времени, записываются в файл.

Используя cookie, можно эмулировать сессию по протоколу HTTP: на первом запросе выдается соответствующее значение cookie, а при каждом последующем запросе это значение читается из переменной окружения (HTTP COOKIE) и соответствующим образом обрабатывается.

Простой пример: есть форма, где пользователю предлагается указать свое имя, из нее вызывается небольшая программа (скрипт/ сценарий), прописывающий значение cookie в браузер пользователя. При каждом последующем заходе на основе анализа значения cookie из браузера пользователя на странице появляется либо именное приветствие (если есть установленное значение cookie), либо первоначальная форма с запросом имени пользователя (если значение cookie не установлено).

Сами по себе cookies не могут делать ничего, это только лишь некоторая текстовая информация. Однако сервер может считывать содержащуюся в cookies информацию и на основании ее анализа совершать те или иные действия. Например, в случае авторизованного доступа к чему-либо через WWW в cookies сохраняется login и password в течение сессии, что позволяет пользователю не вводить их снова при запросах каждого документа, защищенного паролем. На использовании cookies также часто строят функции оформления заказов в онлайновых магазинах. Еще одна распространенная область использования cookies — при настройке индивидуального профиля каждого зарегистрированного пользователя.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >