|
Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа? |
Спецификация Internet-сообщества TLS
Протокол передачи записей
В общем виде функционирование протокола передачи записей можно представлять себе следующим образом. Сообщение, поступившее для передачи с более высокого протокольного уровня, включает длину, тип и содержимое. Оно разбивается на блоки (записи), допускающие эффективную обработку (или, наоборот, в один блок объединяется несколько небольших однотипных сообщений), сжимается, снабжается имитовставкой, шифруется, затем результат передается. На стороне получателя принятые данные расшифровываются, верифицируются, подвергаются декомпрессии и сборке, и затем сообщение доставляется клиенту на вышележащем протокольном уровне.
Спецификациями TLS предусмотрено четыре вышележащих клиента протокола передачи записей:
- протокол установления соединений;
- протокол оповещения (alert protocol);
- протокол смены параметров шифрования (change cipher spec protocol);
- протокол передачи прикладных данных (application data protocol).
Функции этих протоколов будут рассмотрены в следующем разделе.
С точки зрения протокола передачи записей, каждое соединение является двунаправленным и может находиться в одном из двух состояний: обработки (т. е. быть текущим) и ожидания (быть отложенным). Кроме того, состояние соединения характеризуется применяемыми алгоритмами (сжатия, шифрования, вычисления имитовставки) и их параметрами (секретными ключами и начальными векторами. Наконец, каждому соединению соответствуют четыре экземпляра состояния: по два на клиентской и серверной сторонах (любая из них может передавать и принимать данные).
Перечислим и другие элементы состояния соединения:
- мастер-секрет - 48-байтное значение, разделяемое партнерами по общению и служащее для выработки других общих секретов (ключей шифрования и т.п.);
- два 32-байтных случайных значения, одно из которых предоставляется сервером, а другое - клиентом, но оба участвуют в выработке ключей и начальных векторов;
- два 64-битных порядковых номера передаваемой записи (по одному на сторонах отправителя и получателя) с нулевым начальным значением.
Первоначальное состояние - ожидания - создает протокол установления соединений ; он же ведает переводом отложенных соединений в текущие и наоборот.
Формально процесс обработки данных протоколом передачи записей можно описать как последовательность преобразований структур (в спецификациях [ 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.
Вычисление ключевого блока в протоколе передачи записей.
Затем ключевой блок делится на порции, служащие клиенту и серверу ключами хэш-функций и шифрования, а также начальным вектором (см. листинг 10.4).
client_write_MAC_secret
[SecurityParameters.hash_size]
server_write_MAC_secret
[SecurityParameters.hash_size]
client_write_key
[SecurityParameters.key_material_length]
server_write_key
[SecurityParameters.key_material_length]
client_write_IV [SecurityParameters.IV_size]
server_write_IV [SecurityParameters.IV_size]
/* MAC - Message Authentication Code, */
/* аутентификационный код сообщения */
/* IV - Initialization Vector, */
/* начальный вектор */
Листинг
10.4.
Параметры криптографических операций протокола передачи записей.
С помощью сформированных параметров криптографических операций выполняется третий шаг протокола передачи записи, состоящий в вычислении имитовставки (см. листинг 10.5).
HMAC_hash (MAC_write_secret, seq_num + TLSCompressed.type + TLSCompressed.version + TLSCompressed.length + TLSCompressed.fragment));Листинг 10.5. Вычисление имитовставки в протоколе передачи записей.
Обратим внимание, что в состав аргумента хэш-функции входит порядковый номер записи для защиты от кражи, дублирования и переупорядочения сообщений.
На четвертом шаге выполняется шифрование блока вместе с имитовставкой (см. листинг 10.6).
stream-ciphered struct {
opaque content [TLSCompressed.length];
opaque MAC [CipherSpec.hash_size];
} GenericStreamCipher;
block-ciphered struct {
opaque content [TLSCompressed.length];
opaque MAC [CipherSpec.hash_size];
uint8 padding
[GenericBlockCipher.padding_length];
uint8 padding_length;
} GenericBlockCipher;
struct {
ContentType type;
ProtocolVersion version;
uint16 length;
select (CipherSpec.cipher_type) {
case stream: GenericStreamCipher;
case block: GenericBlockCipher;
} fragment;
} TLSCiphertext;
Листинг
10.6.
Шифрование блока вместе с имитовставкой в протоколе передачи записей.
На стороне получателя действия выполняются в обратном порядке:
- расшифрование;
- контроль целостности;
- декомпрессия;
- сборка сообщений.
Разумеется, и здесь должны быть сформированы параметры криптографических операций.