Защита на транспортном уровне
Для защиты на транспортном уровне применяются протоколы TLS и SSL. Особенностью защиты на данном уровне является независимость от прикладного уровня, однако чаще всего технология применяется для защиты данных, передаваемых по протоколу HTTP (режим HTTPS). Подробнее рассмотрим функционирование протокола SSL. Протокол часто применяется для установки защищенного соединения, когда пользователь, обратившийся к Web-серверу, передает или получает конфиденциальные сведения, например об объеме и стоимости покупки в Интернет-магазине, либо получает статистику своих соединений у Интернет-провайдера. В этом случае Web-клиент, например Internet Explorer автоматически переходит в защищенный режим, о чем свидетельствует пиктограмма «замок» в правой нижней части окна.
Рис. 1.39. Сетевой пакет с сертификатом открытого ключа сервера
Протокол SSL предусматривает функции аутентификации, шифрования данных и обеспечения целостности данных. Аутентификация осуществляется путем обмена цифровыми сертификатами при установлении соединения (сессии). Так как Web-сервер обычно принимает запросы от произвольных клиентов, то чаще всего аутентифицируется только сервер. Для шифрования данных применяется стандартный для VPN-соединений подход: для шифрования данных применяется симметричный сеансовый ключ. Обмен симметричными сеансовыми ключами происходит при установлении соединения, при передаче сеансовые ключи шифруются с помощью открытых ключей. Для обеспечения целостности к сообщению добавляется его хэш-код. Рассмотрим этапы установки SSL-соединения. Сначала устанавливается стандартное TCP-соединение с портом сервера 443. Далее клиент передает сообщение «Client-Hello», в котором сообщает поддерживаемую им версию протокола SSL и случайную последовательность «Challenge_Data». В ответ сервер передает сообщение «Server-Hello», в котором указывает версию SSL, идентификатор соединения «Connection_id», список базовых шифров (протоколов) и сертификат сервера (подписанный открытый ключ). Цель следующего сообщения, отправляемого клиентом (сообщение «Client_Master_Key»), — передача симметричного сеансового ключа, зашифрованного открытым ключом сервера. Таким образом, только сервер может расшифровать переданный симметричный ключ.
Рис. 1.40. Зашифрованный HTTP-трафик
Получив ключ, сервер зашифровывает этим ключом отправленную ранее последовательность «Challenge_Data» и передает ее в сообщении «Server-Verify». Получив и расшифровав данное сообщение, клиент уверен, что сеансовый ключ получен и расшифрован сервером правильно. Для того чтобы сервер также мог убедиться в правильности полученного им сеансового ключа, клиент зашифровывает этим ключом идентификатор соединения «Connection_id», полученный от сервера, и передает его в сообщении «Client-Finished». Таким образом, соединение установлено, сервер проверен, сеансовый ключ передан. Теперь весь трафик может передаваться в зашифрованном виде. Для внешнего наблюдателя виден трафик, идущий по 443 TCP-порту между двумя узлами с известными IP-адресами.
|