Стандарты информационной безопасности


       султанит - ну. |   

создает протокол установления соединений; он


Первоначальное состояние - ожидания - создает протокол установления соединений; он же ведает переводом отложенных соединений в текущие и наоборот.

Формально процесс обработки данных протоколом передачи записей можно описать как последовательность преобразований структур (в спецификациях [42] для этой цели используется интуитивно понятный C-подобный язык).

На первом шаге выполняется фрагментация (или объединение однотипных) сообщений, предназначенных для передачи, в структуры TLSPlaintext размером не более 16384 байт (см. листинг 10.1).

enum { change_cipher_spec(20), alert(21), handshake(22), application_data(23), (255) } ContentType;

struct { ContentType type; ProtocolVersion version; uint16 length; opaque fragment [TLSPlaintext.length]; } TLSPlaintext;

Листинг 10.1. Начальная структура блока протокола передачи записей.

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

На втором шаге выполняется сжатие данных (естественно, без потери информации). Оно приводит к появлению следующей структуры (см. листинг 10.2).

struct { ContentType type; /* Тот же, что и TLSPlaintext.type */

ProtocolVersion version; /* Та же, что и TLSPlaintext.version */

uint16 length; opaque fragment [TLSCompressed.length]; } TLSCompressed;

Листинг 10.2. Структура блока протокола передачи записей после сжатия.

Далее следуют криптографические операции. К этому моменту на основе мастер-секрета и случайных значений, предоставленных сервером и клиентом, должен быть сгенерирован ключевой блок достаточной длины (см. листинг 10.3).

key_block = PRF (SecurityParameters.master_secret, "key expansion", SecurityParameters.server_random + SecurityParameters.client_random);

/* PRF - псевдослучайная функция */ /* "+" обозначает операцию конкатенации */

Листинг 10.3. Вычисление ключевого блока в протоколе передачи записей.

Затем ключевой блок делится на порции, служащие клиенту и серверу ключами хэш-функций и шифрования, а также начальным вектором (см.

Содержание  Назад  Вперед