Протокол SSL и TLS · Secure Socet Layer · Transport Layer Security
Назначение SSL Архитектура SSL
Сеанс SSL – связь между клиентом (К) и сервером (С). Сеанс определяет набор параметров криптозащиты, которой могут пользоваться несколько соединений. Между парой сторон можно установить несколько соединений. Соединение SSL – транспорт (в терминах модели OSI), обеспечивающий сервис подходящего типа. В SSL соединения – равноправные отношения между узлами. Соединения являются временными. Соединения ассоциируются с одним сеансом.
Протокол записи SSL Обеспечивают поддержку двух следующих сервисов для соединений: · Конфиденциальность. Протокол квитирования SSL определяет общий для К и С секретный ключ для шифрования. · Целостность сообщений. Протокол квитирования SSL определяет секретный ключ для вычисления МАС.
Общая схема работы протокола записи SSL Данные приложения Фрагментация Размер не более 214 байт Сжатие (необязательно) MAC Добавление кода аутентичности (MAC) Шифрование Добавление заголовка записи SSL Алгоритм хеширования на основе MD 5 или SHA-1 c использованием секретного ключа м. б. заполнитель IDEA, DES 3, RC 2
Формат записи SSL
Протокол изменения параметров шифрования (Change Cipher Spec Protocol) Протокол изменения параметров шифрования генерирует однобайтовое сообщение, содержащее значение 1. Единственной задачей этого сообщения является указание начать копирование параметров состояния ожидания в текущее состояние, что приводит к обновлению комплекта шифров, используемых для данного соединения.
Протокол извещения (Alert Protocol) Предназначен для передачи другой участвующей в обмене данными стороне извещений, касающихся работы SSL. Любое сообщение, генерируемое данным протоколом, состоит из двух байтов. Первый байт содержит значение, обозначающее соответственно уровень предупреждения (1) или уровень неустранимой ошибки (2). Второй байт содержит код, обозначающий конкретный смысл извещения.
Извещения, указывающие на неустранимую ошибку: • unexpected_message. Получено непригодное для обработки сообщение. • bad_record_mac. Получено неправильное значение МАC. • decompression_failure. Функция распаковки сжатых данных получила неправильные входные данные (т. е. данные невозможно распаковать или длина получаемых в результате распаковки данных оказывается больше максимально допустимой). Извещения уровня предупреждений: • close_notify. Извещает получателя о том, что отправитель больше не будет отправлять сообщений с использованием данного соединения. Чтобы корректно закрыть режим записи любого соединения, каждая из сторон должна перед этим отправить извещение close_notify. • no_serificate. Может отправляться в ответ на запрос о наличии сертифи ката, если у отвечающей стороны соответствующего сертификата нет. • bad_serificate. Полученный сертификат поврежден (т. е. содержит под пись, верификацию которой выполнить не удалось).
Протокол квитирования (Handshake Prontocol) Позволяет серверу и клиенту выполнить взаимную аутентификацию, а также согласовать алгоритмы шифрования, вычисления МАС и криптографические ключи, которые будут служить для защиты данных, пересылаемых в записи SSL. Протокол квитирования должен использоваться до начала пересылки данных прикладных программ. При этом генерируется несколько сообщений, которыми обмениваются клиент и сервер. • Тип (1 байт). Указывает один из 10 допустимых типов сообщения. • Длина (3 байта). Длина сообщения в байтах. • Содержимое (> 1 байта). Параметры, связываемые с сообщением данного типа.
Типы сообщений протокола квитирования
Схема работы протокола квитирования Клиент Сервер Этап. 1 Определение характеристик защиты Определяют характеристики защиты, включая номер версии протокола, идентификатор сеанса, комплект шифров, метод сжатия и исходные случайные числа. Этап 2. Аутентификация и обмен ключами сервера Сервер может передать сертификат, сообщение обмена ключами и запрос сертификата. Сервер сигнализирует об окончании фазы приветственного сообщения. Этап 3. Аутентификация и обмен ключами клиента Клиент передает сертификат, если он был запрошен. Клиент передает сообщение обмена ключами. Клиент может передать сообщение верификации сертификата. Этап 4. Окончание Клиент передает сертификат, если он был запрошен. Клиент передает сообщение обмена ключами. Клиент может передать сообщение верификации сертификата.
Построение ключей шифрования SSL Предзадачные данные Предварительный мастер-секрет Одноразовое случайное число сервера Одноразовое случайное число клиента Многошаговое хеширование Мастер-ключ - ключ хеширования сервера Многошаговое хеширование - ключ хеширования клиента - выходной ключ сервера - выходной ключ клиента - и т. д.


