7. Протокол диалога TLS
Протокол диалога TLS содержит набор из трех суб-протоколов, которые используются, чтобы партнеры могли согласовать используемые параметры безопасности для уровня записи, аутентифицировать себя, и уведомлять друг друга об ошибках.
Протокол диалога ответственен за согласования характеристик сессии, куда входят следующие объекты:
идентификатор сессии |
Произвольная последовательность байтов, выбранная сервером для идентификации состояния сессии (активная/ возобновляемая). |
сертификат партнера |
X509v3 [X509] сертификат партнера. Этот элемент состояния может быть равен нулю. |
метод сжатия |
Алгоритм, используемый для сжатия информации перед шифрованием. |
спецификация шифра |
Специфицирует алгоритм массового шифрования (такой как нуль, DES, и т.д.) и алгоритм MAC (такой как MD5 или SHA). Она определяет также криптографические атрибуты, такие как hash_size. (Смотри приложение A.6) |
мастерный секретный код |
48-байтовый секретный код, общий для сервера и клиента. |
'is resumable' |
Флаг, указывающий, может ли сессия использоваться для инициализации нового соединения. |
Эти объекты используются затем для определения параметров безопасности для уровня записей при защите прикладных данных. Многие соединения могут реализоваться в рамках той же сессии с помощью процедуры возобновления (resumption) протокола диалога.
7.1. Протокол изменения спецификации шифра
Протокол изменения спецификации шифра предназначен для оповещения об изменении стратегии шифрования. Протокол использует одно сообщение, которое зашифровано и архивировано в рамках текущего состояния соединения. Сообщение состоит из одного байта со значением 1.
struct { enum { change_cipher_spec(1), (255) } type;} ChangeCipherSpec;
Сообщение изменения спецификации шифра посылается как клиентом, так и сервером, для того чтобы уведомить партнера о том, что последующие записи будут защищены с помощью только что согласованных ключей и спецификации CipherSpec. Получение этого сообщения заставляет получателя на уровне записей немедленно скопировать состояние ожидания чтения в текущее состояние чтения.