Опубликован: 19.01.2010 | Доступ: свободный | Студентов: 1443 / 200 | Оценка: 4.33 / 4.00 | Длительность: 18:53:00
Лекция 7:

Безопасность на транспортном уровне: SSL и TLS

Протокол ChangeCipherSpec

Мы видели, что переговоры о наборе шифров и генерация криптографической секретности формируются постепенно по ходу выполнения протокола установления соединения. Возникает вопрос: когда две стороны могут использовать эти параметры секретности? SSL утверждает, что стороны не могут использовать эти параметры или секретность, пока они не передали или не получили специальное сообщение: ChangeCipherSpec - сообщение, которым обмениваются клиент и сервер в ходе выполнения протокола установления соединения и которое определено в протоколе ChangeCipherSpec. По этой причине объекты не посылают или не получают сообщение. Передатчик и приемник нуждаются не в одном, а в двух состояниях. Одно - состояние ожидания, при котором сохраняются параметры и секретности. Другое - активное состояние, при котором параметры и секретность используются протоколом передачи записей, чтобы подписаться/проверить или зашифровать/расшифровывать сообщения. Кроме того, каждое состояние содержит два множества значений: читать (входящее), писать (исходящее).

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

 Передвижение параметров из состояния ожидания в активное состояние

увеличить изображение
Рис. 7.20. Передвижение параметров из состояния ожидания в активное состояние

На рисунке показано только несколько параметров. Перед обменом сообщениями ChangeCipherSpec в состоянии ожидания заполнены только значения столбцов.

Сначала клиент передает ChangeCipherSpec-сообщение. После этого клиент перемещает параметры "писать" (исходящие) из состояния ожидания в активное состояние. Теперь он может использовать эти параметры, чтобы подписаться или зашифровать исходящее сообщение. После получения этого сообщения сервер перемещает параметры "читать" (входящие) из состояния ожидания в активное состояние. Теперь сервер может верифицировать и расшифровывать сообщение. Это означает, что сообщение Finished, передаваемое клиентом, может быть подписано клиентом и расшифровано сервером.

Сервер передает сообщение ChangeCipherSpec после получения от клиента сообщения Finished. После передачи этого сообщения он перемещает параметры "писать" (входящие) из состояния ожидания в активное состояние. Сервер может теперь использовать эти параметры для того, чтобы подписать или зашифровать исходящие сообщения. После того как клиент получает это сообщение, он перемещает первый абзац (входящий) из состояний ожидания в активное состояние. Теперь клиент может проверить (верифицировать) и расшифровать сообщения.

Конечно, после обмена сообщениями Finished обе стороны могут работать в обоих направлениях, используя активные параметры для чтения/записи.

Аварийный протокол

SSL использует аварийный протокол для того, чтобы известить об ошибках и ненормальном состоянии устройств. Имеется только один тип аварийного сообщения, которое описывает проблему и ее уровень (опасное или полный выход из строя). табл. 7.4 показывает типы аварийных сообщений, определенных для SSL.

Таблица 7.4. Аварийные сообщения, определенные для SSL
Цифровое обозначение Описание Значение
0 CloseNotify Передатчик больше не будет посылать сообщений
10 UnexpectedMessage Получено несоответствующее сообщение
20 BadRecordMAC Получено некорректное MAC
30 DecompressionFailure Невозможно получить несжатый текст
40 HandshakeFailure Передатчик не может закончить установление соединения
41 NoCertificate Клиент не сертифицировал послание
42 BadCertificate Полученный сертификат искажен
43 UnsupportedCertificate Тип полученного сертификата не поддерживается
44 CertificateRevoked Подписавший аннулирует сертификат
45 CertificateExpired Сертификат просрочен
46 CertificateUnknown Сертификат неизвестен
47 Illegal Parameter Поле не может быть обработано

Протокол передачи записей

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

Процесс работы протокола передачи записей

увеличить изображение
Рис. 7.21. Процесс работы протокола передачи записей

Обратите внимание, однако, что этот процесс может быть выполнен, только когда криптографические параметры находятся в активном состоянии. Сообщения, передаваемые перед перемещением из состояния ожидания в активное состояние, не подписаны и не зашифрованы.

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

Фрагментация/Объединение

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

Сжатие/Расширение

В передатчике все фрагменты прикладного уровня сжаты с использованием метода сжатия, о котором договариваются во время процедуры установления связи. Метод сжатия не должен вносить потери (расширенный фрагмент должен быть точной копией первоначального фрагмента). Размер фрагмента не должен превысить 1024 байта. Некоторые методы сжатия работают только с заранее заданными размерами блоков, и если размер блока меньше, то блок дополняется. Поэтому размер сжатого фрагмента может быть больше, чем размер первоначального фрагмента. В приемнике сжатый фрагмент расширяется, чтобы создать точную копию оригинала. Если размер расширенного фрагмента превышает 214, вырабатывается аварийное сообщение "неправильное расширение" (fatal decompression). Обратите внимание, что сжатие/расширение в SSL - дополнительные функции.

Подписание/Подтверждение

В передатчике метод подтверждения подлинности определяется в течение установления соединения (NULL, MD5 или SHA-1) и создает подпись (MAC), как это показано на рис. 7.22.

Алгоритм хэширования применяется дважды. Сначала хэширование создается путем последовательных соединений (конкатенации) следующих значений:

  • секретный MAC (писать) (ключ подтверждения подлинности для исходящих сообщений);
  • заполнение 1, которое представляет байт 0x36, повторяемый 48 раз для MD5 и 40 раз для SHA-1;
  • порядковый номер этого сообщения;
     Вычисление MAC

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

Второй раз завершающее хэширование (MAC) создается последовательным соединением (конкатенацией) следующих значений:

  • секретный MAC (писать);
  • заполнение 2, которое представляет байт 0x5C, повторяемый 48 раз для MD5 и 40 раз для SHA-1;
  • создание хэша из результата первого шага.

В приемнике проводится верификация - вычисление нового хэша и сравнение его с полученным хэшированием.

Шифрование/Дешифрование

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

Создание кадра

В передатчике после шифрования добавляется заголовок протокола передачи записей. Заголовок удаляется в приемнике перед дешифрованием.

Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?

Мария Архипова
Мария Архипова