протокол SSL


Криптографический протокол SSL(Secure Sockets Layer protocol, протокол защищенных сокетов) был разработан в 1996 году компанией Netscape.Он может быть помещен в многоуровневой модели протоколов между протоколом обеспечивающим надежное соединение (например, TCP) и прикладным уровнем (например, HTTP). Он предоставляет безопасный канал между клиентам и сервером, предоставляя возможность взаимной аутентификации, использования цифровых подписей для обеспечения целостности и шифрования для конфиденциальности.Этот протокол интегрирован в большинство браузеров и веб серверов и использует ассиметричную криптосистему с открытым ключом, разработанную компанией RSA.

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

Существует несколько версий протокола SSL.

Проблемная группа проектирования Internet (Internet Engineering Task Force, IETF) работает над стандартом TLS (Transaction Layer Security - протокол защиты транспортного уровня).
Протокол SSL обеспечивает защищенный обмен данными за счет сочетания двух следующих элементов:
Аутентификация
Цифровой сертификат привязан к конкретному домену сети Интернет, а центр сертификации проводит проверки, подтверждающие подлинность организации, а уже затем создает и подписывает цифровой сертификат для этой организации. Такой сертификат быть установлен только на тот домен web-сервера, доля которого он прошел аутентификацию, что и дает пользователям сети Интернет необходимые гарантии.
Шифрование
Шифрование - это процесс преобразования информации в нечитаемый для всех вид, кроме конкретного получателя. Оно основывается на необходимых для электронной коммерции гарантиях конфиденциальности передачи информации и невозможности ее фальсификации.
Детальное описание сертификата

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

Так выглядит цифровой сертификат для браузера IE 6.0:

SSL сертификат web-сервера позволяет посетителям Вашего сайта видеть следующую информацию (детальная информация о сертификате представлена на закладке «Состав»):
* Домен сети Интернет, для которого выпущен этот сертификат. Эта информация позволяет убедиться, что данный SSL сертификат web-сервера был выпущен именно для вашего хоста и домена (http://www.mydomain.com/).
* Владелец сертификата. Эта информация является дополнительной гарантией, поскольку посетитель может увидеть имя того, с кем ведет бизнес.
* Город, где зарегистрирована компания-владелец сертификата. Эта информация еще раз убеждает посетителя, что он имеет дело с реальной организацией.
* Срок действия сертификата. Эта информация особенно важна, поскольку показывает пользователю, что ваш цифровой сертификат действующий.
Предупреждения системы безопасности web-браузера.

Ваш web-браузер имеет встроенную систему безопасности. Если вы пытаетесь зайти на web-сайт, который имеет проблемы с сертификатом, эта система безопасности может выдать, например, такое предупреждение.

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

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

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

Протокол квитирования используется клиентом и сервером для:
1. Согласования параметров шифрования (Cipher Suite), которые будут использован при передаче данных
2. Выработки и передачи сеансового ключа между клиентом и сервером
3. Необязательной аутентификации сервера клиентом.
4. Необязательной аутентификации клиента сервером

Рис. 1. Упрощенный порядок квитирования (Handshake)

Согласование набора параметров шифрования позволяет выбрать клиенту и серверу такие параметры, которы е они оба поддерживают. Спецификация SSL 3.0 определяет 31 набора параметров. Набор параметров шифрования состоит из:
1.Метода обмена ключами
2.Симметричного алгоритма шифрования для передачи данных
3.Функции хеширования для создания MAC (Message Authentication Code - код аутентичности сообщения)

Метод обмена ключами определяет, как клиент и сервер согласуют общий ключ для симметричного алгоритма шифрования. The key exchange method defines how the shared secret symmetric cryptography В SSL 2.0 для обмена ключей используется RSA. В SSL 3.0 возможен выбор между RSA, при использовании сертификатов, и методом обмена ключами по Диффи-Хеллману (Diffie-Hellman) для обмена ключами без сертификатов и без предыдущей связи между клиентом и сервером [Kaufman].

Выбор метода обмена ключами включает решение использовать или не использовать цифровые подписи при обмене ключами, и какой способ цифровой подписи использовать. Подпись закрытым ключом защищает от атак человек по середине (man-in-the-middle-attack) во время обмена информацией, используемой для выработки общего ключа.

В SSL используются симметричные алгоритмы шифрования для шифрования данных в течение сеанса. Возможны 9 вариантов, включая отказ от шифрования:
1.Нет шифрования
2.Поточное шифрование
RC4 с ключом 40 бит
RC4 с ключом 128 бит
Алгоритмы используемые в режиме CBC
RC2 с ключом 40 бит
DES40, DES, 3DES_EDE.
Idea
Fortezza

Режим CBC (Cipher Block Chaining - сцепление блоков шифра), предыдущий зашифрованный блок используется при шифровании текущего блока. DES - Data Encryption Standard, имеет множество вариантов (включая DES40 and 3DES_EDE). Idea (один из наиболее стойких алгоритмов) и RC2 являются собственностью компании RSA

Выбор функции хеширования определяет, как будет создаваться хеш блока данных. SSL поддерживает:
Без хеширования
MD5, хеш 128 длиной бит
Secure Hash Algorithm (SHA), хеш 160 бит

SHA был разработан для использования совместно с DSS (Digital Signature Standard - стандарт цифровой подписи).

Протокол квитирования предоставляет множество возможностей, но наиболее распространенная последовательность включает обмен сертификатами и обмен ключами по методу Деффи-Хеллмана. В других случаях порядок квитирования отличается, как описано в спецификации SSL. Последовательность квитирования использует три протокола, протокол квитирования SSL (SSL Handshake Protocol) для открытия сеанса между клиентом и сервером, протокол согласования параметров шифрования (SSL Change Cipher Spec protocol) для согласования набора криптоалгоритмов и их параметров и протокол извещения (SSL Alert Protocol) для обмена сообщениями об ошибках между клиентом и сервером. Эти протоколы инкапсулированы в протокол записи SSL (SSL Record Protocol) как данные прикладного уровня. Инкапсулированный протокол передается как данные нижележащим протоколом, которые не анализирует эти данные. Инкапсулированный протокол ничего не знает о нижних протоколах.

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

Рис. 2. Стек протоколов SSL
Передача данных

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

Рис. 3. Протокол записи SSL

SSL использует хэш-функции сообщения и порядковые номера для вычисления кодов аутентичности сообщения (MAC, Message Authentication Code), которые шифруются, что предотвращает атаки повтора. Блоки протокола записи, сжатые блоки и зашифрованные блоки содержат идентификатор исходного протокола, длину сообщения и данные.
Использование SSL

Одно из распространенных применений SSL - защита данных передаваемых по HTTP между клиентом и веб-сервером. Безопасный вариант URL начинается с “https“, вместо “http“, и используется другой порт (по умолчанию 443)/ Браузер хранит клиентские сертификаты и закрытые ключи, и показывает индикатор защищенного соединения, когда оно используется.
Значимость аутентификации в протоколе SSL

«Спуфинг» (имитация соединения):

Относительно дешевые услуги web-дизайнеров и легкость, с которой могут быть скопированы уже существующие страницы, позволяют создавать нелегальные web-сайты, которые выглядят «официально» и с виду представляют организацию. Реально же это ловушка, чтобы незаконно получить,конфеденциальные данные
Несанкционированные действия:

Конкурент или обиженный пользователь могут изменить ваш web-сайт так, чтобы он давал ложную информацию или отказывался обслуживать потенциальных клиентов.
Неправомочное разглашение информации:

Когда транзакции осуществляются «открытым текстом», хакер может их перехватывать, чтобы получить информацию, важную для ваших клиентов.
Фальсификация данных:

Содержание транзакции может быть перехвачено и злонамеренно либо случайно в процессе передачи изменено. Имена пользователей, номера кредитных карт и финансовая информация, передаваемая «открытым текстом» слишком уязвима для вмешательства со стороны.
Реализация SSL

Хотя возможно написать реализацию SSL “с нуля” по спецификации, значительно проще взять один из готовых пакетов. Дополнительно, из-за патентов необходимо лицензировать некоторые криптографические библиотеки, по крайней мере, в США. Библиотеки SSL содержат функции для шифрования, вычисления хэш-функций, и средства для работы с сертификатами. Каждый пакет так же должен содержать лицензированный модуль для работы с открытыми ключами в США, поскольку существует патент на использование криптографии с открытым ключом.

RSARef Образец реализации RSA, неподдерживаемый исходный код библиотеки, может быть использован в бесплатных и некоммерческих приложениях. Компания Consensus Development Corp. продавала лицензии на коммерческое использование, но сейчас это уже не так.

BSAFE 3.0 Коммерческая реализация RSARef.

Эти пакеты для работы с открытыми ключами включают полный набор несимметричных алгоритмов (включая RSA и метод обмена ключами Деффи-Хеллмана), симметричные алгоритмы, хэш-функции. Они могут быть использованы в реализациях SSL. Наиболее известные библиотеки для работы с SSL:

SSLPlus Коммерческий пакет с исходным пакетом от Consensus Development Corp., улученный SSLRef 3.0. Для использования нужен BSAFE 3.0 (from RSA).

SSLava Реализация SSL 3.0 на языке Java от Phaos Technology.

OpenSSL OpenSSL-0.9.4 (OpenSSL-0.9.4.tar.gz) свободная, не коммерческая реализация SSL 2.0 и SSL 3.0 и TLS 2.0. Включает реализацию несимметричных алгоритмов, которая может быть использована за приделами США. В Штатах из-за патентных ограничений необходимо использовать RSARef или BSAFE3.0. SSLeay предоставляет недорогую возможность для использования SSL.

Обновлено: 11.03.2015