Для шифрования сообщений рекомендуется «тройной» DEScтремя ключами (tripleDES), но любая гибкая реализация должна поддерживать 40-битовую версию алгоритма RC2. Последний является весьма слабым алгоритмом шифрования, но зато соответствует экспортным требованиям США.
Протокол SSL призван обеспечить возможность надежной защиты сквозной передачи данных с использованием протокола TCP. SSL представляет собой не один протокол, а два уровня протоколов. Протокол записи SSL (SSL Record Protocol) обеспечивает базовый набор средств защиты, применяемых протоколами более высоких уровней. Эти средства, в частности, может использовать протокол передачи гипертекстовых файлов (HTTP), призванный обеспечить обмен данными при взаимодействии клиентов и серверов Web. Частью SSL считаются и три протокола более высокого уровня: протокол квитирования установления связи (Handshake Protocol), протокол изменения параметров шифрования (Change Cipher Spec Protocol) и протокол извещения (Alert Protocol). Эти протоколы служат для управления обменом данными SSL.
Протокол квитирования SSL | Протокол изменения параметров шифрования SSL | Протокол извещения SSL | FTP, SMTP, HTTP. |
Протокол записи SSL | |||
TCP | |||
IP |
Стек протоколов SSL.
Между любой парой обменивающихся информацией сторон (например, приложений типа HTTP клиента и сервера) можно установить много защищенных соединений. Теоретически между сторонами можно установить и несколько одновременно существующих сеансов, но на практике такая возможность не используется.
Соединение (connection) — транспорт, обеспечивающий сервис некоторого подходящего типа (SMTP, HTTPи т.д.) Каждое соединение ассоциируется только с одним сеансом.
Сеанс (session). Сеанс SSL — это связь между клиентом и сервером. Сеансы создаются протоколом квитирования SSL (SSL Handshake Protocol). Сеанс определяет набор параметров криптографической защиты, которые могут использоваться несколькими соединениями. Сеансы позволяют избежать необходимости ведения переговоров об установлении параметров защиты для каждого нового соединения.
Протокол записи SSL (SSL Record Protocol) обеспечивает поддержку двух следующих сервисов для соединений SSL.
• Конфиденциальность. Протокол квитирования SSL (SSL Handshake Protocol) определяет общий для клиента и сервера секретный ключ, используемый алгоритмом традиционной схемы для шифрования данных, передаваемых по протоколу SSL.
• Целостность сообщений. Помимо обеспечения конфиденциальности, протокол квитирования SSL определяет общий секретный ключ для вычисления значений MAC (Message Authentication Code — код аутентичности сообщения).
Порядок отправки данных:
1. Этот протокол, получив сообщение для пересылки другой стороне, сначала фрагментирует данные, разбивая их на блоки подходящего размера;
2. При необходимости выполняет сжатие данных;
3. Применяет алгоритм вычисления MAC;
4. Шифрует данные (MAC +сжатое сообщение);
5. Добавляет заголовок
6. Передает полученные пакеты сегменту TCP.
При принятии данных: данные дешифруются, проверяются, восстанавливаются, собираются вновь и передаются приложениям более высокого уровня.
При вычислении кода аутентичности сообщения используется специальная схема вычисления MAC, в которой используется алгоритм хэширования MD5 или SHA-1.
Сжатое сообщение вместе с добавленным к нему значением MACшифруется.
Используемые алгоритмы шифрования:
Блочное шифрование | Поточное шифрование | ||
Алгоритм | Размер ключа | Алгоритм | Размер ключа |
IDEA | 128 | RC4-40 | 40 |
RC2-40 | 40 | RC4-128 | 128 |
DES-40 | 40 | ||
DES | 56 | ||
3DES | 168 | ||
Fortezza | 80 |
В случае применения алгоритмов поточного шифрования шифруются только сжатое сообщение и добавленное к нему значение MAC.
При использовании алгоритмов блочного шифрования после значения MAC можно добавлять заполнитель. Заполнитель состоит из некоторого числа байтов заполнителя, за которыми следует 1-байтовое значение, указывающее длину заполнителя. Для общей длины заполнителя выбирается наименьшее из значений, при котором общая длина последовательности данных, подлежащих шифрованию (открытый текст + MAC + заполнитель), будет кратна длине блока шифра.
Завершающим шагом в работе протокола записи SSL является создание заголовка, состоящего из следующих полей.
• Тип содержимого (8 битов). Определяет протокол лежащего выше уровня, с помощью которого должен обрабатываться данный фрагмент.
• Главный номер версии (8 битов). Указывает главный номер версии используемого протокола SSL. Для SSLv3 это поле содержит значение 3.
• Дополнительный номер версии (8 битов). Указывает дополнительный номер версии применяемого протокола SSL. Для SSLv3 это поле содержит значение 0.
• Длина сжатого фрагмента (16 битов). Длина в байтах данного фрагмента открытого текста (или сжатого фрагмента при сжатии). Максимально допустимое значение равно 2^14 + 2048.
Для типа содержимого определены значения change_cipher_spec, alert, handshake и application_data. Первые три значения обозначают протоколы стека SSL.
3. 3. Протокол изменения параметров шифрования
Протокол изменения параметров шифрования (Change Cipher Spec Protocol) генерирует однобайтовое сообщение, содержащее значение 1. Единственной задачей этого сообщения является указание начать копирование параметров состояния ожидания в текущее состояние, что приводит к обновлению комплекта шифров, используемых для данного соединения.
Протокол извещения (Alert Protocol) предназначен для передачи другой участвующей в обмене данными стороне извещений, касающихся работы SSL. Как и данные любого другого приложения, использующего SSL, сообщения протокола извещения точно так же сжимаются и шифруются в соответствии с параметрами текущего состояния.
Сообщение, генерируемое данным протоколом состоит из 2-х байтов: первый байт - значение, обозначающее уровень предупреждения или уровень неустранимой ошибки, второй байт – код, обозначающий конкретный смысл извещения. Если в первом байте указан уровень неустранимой ошибки, то протокол SSLразрывает соединение, другие соединения могут продолжать существовать, но нового соединения для данного сеанса создать уже будет невозможно.
В протоколе извещения существует 5 извещений, указывающих на неустранимую ошибку и 7 извещений не указывающих на неустранимую ошибку.
Этот протокол позволяет серверу и клиенту выполнить взаимную аутентификацию, а также согласовать алгоритмы шифрования, вычисления MAC и криптографические ключи, которые будут служить для защиты данных, пересылаемых в записи SSL. Протокол квитирования должен использоваться до начала пересылки данных прикладных программ.
В случае с протоколом квитирования генерируется несколько сообщений, которыми обмениваются клиент и сервер. Любое такое сообщение содержит три следующих поля.
• Тип (1 байт). Указывает один из 10 допустимых типов сообщения.
• Длина (3 байта). Длина сообщения в байтах.
• Содержимое (> 1 байта). Параметры, связываемые с сообщением данного типа.
В содержимом может находится несколько полей, в каждом из которых находятся элементы.
Этапы установления сеанса (session) между клиентом и сервером.
№ этапа | Типы сообщений | Характеристика этапа |
1 | Определяется характеристика защиты, включая номер версии протокола, идентификатор сеанса, комплект шифров, метод сжатия и исходные случайные числа. | |
2 | Сервер может передать сертификат, сообщение обмена ключами и запрос сертификата. Сервер сигнализирует об окончании фазы приветственного сообщения. | |
3 | Клиент передаёт сертификат, если он был запрошен. Клиент передает сообщение обмена ключами. Клиент может передать сообщение верификации сертификата. | |
4 | Смена комплекта шифров и завершение работы протокола квитирования |
1-ый этап – определение характеристик защиты.