Криптографический протокол SSL(Secure Sockets Layer protocol, протокол защищенных сокетов)
был разработан в 1996 году компанией Netscape.Он может быть
помещен в многоуровневой модели протоколов между протоколом обеспечивающим надежное соединение
(например, TCP) и прикладным уровнем (например, HTTP). Он предоставляет безопасный канал между
клиентам и сервером, предоставляя возможность взаимной аутентификации, использования цифровых подписей для
обеспечения целостности и шифрования для конфиденциальности.Этот протокол интегрирован в
большинство браузеров и веб серверов и использует ассиметричную
криптосистему с открытым ключом, разработанную компанией RSA.
Протокол позволяет использовать по выбору различные алгоритмы для шифрования, хеширования,
цифровой подписи. Это позволяет выбрать алгоритм исходя из
юридических, экспортных или других ограничений, а так же позволяет протоколу использовать
преимущества новых алгоритмов. Выбор согласуется между клиентом
и сервером на стадии установки сеанса.
* Срок действия сертификата. Эта информация особенно важна, поскольку показывает
пользователю, что ваш цифровой сертификат действующий.
Предупреждения системы безопасности 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