Описание протокола SSL

Криптографический протокол SSL (Secure Socket Layer) был разработан компанией Netscape в 1996 году и быстро стал наиболее популярным методом обеспечения защищенного обмена данными через Интернет. Протокол SSL интегрирован в большинство браузеров и в web-сервера. Правительство США в 2014 году сообщило об уязвимости в текущей версии SSL протокола (3.0), на смену которому предложен протокол TLS.

Защищенный обмен данными обеспечивается двумя элементами протокола SSL :

  • аутентификация клиента;
  • шифрование данных.

SSL использует симметричный шифр для обеспечения конфиденциальности, асимметричную криптографию для аутентификации ключей обмена и коды аутентификации сообщений для целостности сообщений.

Для осуществления SSL соединения необходимо на сервере инсталлировать цифровой сертификат, который «привязан» к конкретному домену сети интернет. Центр сертификации проводит проверки, подтверждающие подлинность организации, и после этого создает и подписывает цифровой сертификат для этой организации/сайта. Цифровой SSL сертификат следует устанавливать только на тот домен WEB-сервера, для которого он прошел аутентификацию; это даёт пользователям сети Интернет необходимые гарантии чистоты WEB-сервера.

Центры сертификации

Прежде чем продолжать повествование о соединениях SSL, необходимо несколько слов сказать о центрах сертификации.

Центр сертификации CA (certificate authority) — это организация, имеющая право выдачи цифровых сертификатов. Эта организация производит проверку данных запроса на сертификацию в CSR перед выдачей сертификата. Имеется несколько разновидностей цифровых сертификатов, отличающихся содержащейся в них информацией, и, соответственно, ценой. В самых простых сертификатах CA проверяет только соответствие доменного имени; в самых дорогих выполняется комплекс проверок самой организации, запрашивающей сертификат.

Отличие самоподписанного сертификата от выданного центром сертификации платного связано с тем, что при использовании такого сертификата на сайте (сервере), браузер будет открывать страницу с предупреждением, что этот сайт не использует безопасное соединение SSL. Браузер предложит покинуть сайт или продолжить просмотр, но с большой осторожностью; решение за посетителем сайта.

И так, при установлении SSL соединения, т.е. при открытии начинающейся с https://... страницы, браузер должен выполнить проверку цифрового сертификата сервера. Данная проверка выполняется с использованием доверенных сертификатов, размещенных в хранилище браузера. На следующем скриншоте представлена вкладка страницы настроек браузера Google Chrome «Доверенные корневые центры сертификации». Чтобы открыть данную вкладку необходимо проделать следующий путь : Chrome Настройки -> Дополнительные -> Настроить сертификаты. В Chrome установлено более 45 корневых сертификатов. В этом хранилище браузер с Вашего согласия также размещает сертификаты, которым Вы доверяете.

Имеется большое количество различных центров сертификации. Наиболее популярные :

  • Comodo — штаб-квартира в Jersey City, New Jersey, США.
  • Geotrust — штаб-квартира Mountain View, California, США
  • Symantec — бывший Verisign в состав которого входит и Geotrust.
  • Thawte — основан в 1995, продан Verisign в 1999.
  • Trustwave — штаб-квартира Chicago, Illinois, США.

Этот список можно было бы и продолжить. Вы можете самостоятельно просмотреть установленные в Вашем браузере цифровые сертификаты корневых центров.

На заметку
Иногда возникает ситуация, при которой браузер выдает предупреждение, несмотря на то, что на серверe SSL сертификат установлен. Данная ситуация возникнает либо при отсутствии корневого сертификата, центра выдавшего сертификат, либо из-за того, что закончился срок действия корневого сертификата. Помните, что корневые сертификаты в браузерах обновляются при обновлении браузера.

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

Многослойная среда SSL

Разобравшись, с точки зрения необходимого понимания, с центрами сертификации и подписываемыми ими цифровыми сертификатами, вернемся к описанию SSL-соединения

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

Структурно протокол SSL размещается между протоколом, используемым клиентами (HTTP, FTP, IMAP, LDAP, Telnet и т.д.) и транспортным протоколом TCP/IP. Таким образом SSL обеспечивает защиту и передачу данных на транспортный уровень. Благодаря многослойной структуре SSL протокол может поддерживать разные протоколы программ-клиентов.

Протокол SSL условно можно разделить на два уровня. Первый уровень обеспечивает подтверждение подключения и включает три подпротокола : протокол подтверждения подключения (handshake protocol), протокол определения параметров шифра (change cipher spec protocol) и предупредительный протокол (alert protocol). Второй уровень включает протокол записи. На следующем рисунке схематично изображена структура взаимосвязи слоев SSL.

Уровень подтверждения подключения включает три части протокола :

1. Подтверждение подключения
используется для согласования данных сессии между клиентом (браузером) и сервером. Сессия включает следующие данные :

  • идентификационный номер сессии;
  • сертификаты обеих сторон;
  • параметры используемого алгоритма шифрования;
  • алгоритм сжатия информации;
  • симметричный ключ шифрования.

Уровень подтверждения подключения обеспечивает реализацию нескольких функций безопасности. Так он формирует цепочку обмена данными и согласовывает шифрование, алгоритмы хеширования и сжатия. При определении подлинности участников обмена данных уровень подтверждения подключения использует сертификат стандарта Х.509.

Таким образом, на первом шаге при установке соединения стороны (браузер и сервер) договариваются о возможных механизмах шифрования, поддерживаемых каждой из сторон, длине используемого ключа, режиме шифрования и производят обмен сертификатами. Такой начальный обмен данными называется handshake. Во время handshake генерируется симметричный ключ, который действует только для одной SSL сессии и устаревает, как только сессия становится неактивной.

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

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

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

Два вида SSL соединения

SSL соединение может быть двух видов : простая (односторонняя) SSL аутентификация и двусторонняя SSL аутентификация.

Односторонняя SSL аутентификация

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

  • действителен ли сертификат, т.е. не окончился ли срок действия сертификата;
  • соответствие сертификата имени хоста;
  • наличие в списке клиента/браузера центра сертификации, выдавшего сертификат;
  • действительность цифровой подписи на сертификате.

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

Если сервер аутентифицирован, то его сообщение о сертификации должно обеспечить сертификационную цепочку, ведущую к доверенному центру сертификации. То есть, аутентифицированный сервер должен отправить клиенту сертификат, подписанный одним из центров сертификации.

Двусторонняя SSL аутентификация

При двусторонней аутентификации обе стороны (и сервер, и клиент) предоставляют сертификаты для проверки подлинности друг друга при установке шифрованного соединения, как это представлено на следующем рисунке.

Шифрование пересылаемых данных

Для шифрования данных можно использовать два способа : симметричный и ассиметричный.

Симметричное шифрование
При симметричном способе шифрования используется один и тот же ключ как для шифрования, так и для дешифрирования. Если две стороны договариваются обмениваться симметрично зашифрованными сообщениями в безопасном режиме, то они должны иметь одинаковые ключи. Так как процесс симметричного шифрования и дешифрирования проходит быстрее, чем при ассиметричном шифровании, то симметричное шифрование обычно используется для кодирования большого объема данных. Обычно используются алгоритмы DES (Data Encryption Standard), 3-DES (тройной DES), RC2, RC4, и AES (Advanced Encryption Standard).

Ассиметричное шифрование
При ассиметричном шифровании используется пара ключей : открытый/публичный (public) и закрытый (private). Открытый ключ центр сертификации размещает в самом сертификате владельца (заголовок subject). Секретный ключ не должен никому окрываться. Эти ключи работают в паре и используются для выполнения противоположных функций второго ключа. Так, например, если открытым ключом зашифровать данные, то расшифровать их можно будет только закрытым ключом. И наоборот, если данные шифруются закрытым ключом, то открытый ключ должен данные дешифрировать.

Взаимосвязь открытого и закрытого ключей позволяет производить обмен открытыми ключами между сторонами (сервер и клиент), чтобы они могли

  • отправлять на сервер шифрованные данные, которые может дешифрировать только сервер и
  • получать от сервера шифрованные данные, которые они могут дешифрировать.

В случае двустороннего обмена ключами (двусторонняя аутентификация) обе стороны выступают и в качестве сервера, и в качестве клиента.

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

Самым распространенным алгоритмом при ассиметричном шифровании является RSA, названный в честь разработчиков Rivest, Shamir, Adleman.

  Рейтинг@Mail.ru