АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Параметры состояния соединения

Читайте также:
  1. DDUTYSPP (НРД. Параметры суммы к оплате наряда)
  2. III. Анализ результатов психологического анализа 1 и 2 периодов деятельности привел к следующему пониманию обобщенной структуры состояния психологической готовности.
  3. ZOSNSP (ЗП.Основания начислений Параметры)
  4. Агрегатные состояния
  5. Агрегатные состояния и термодинамические фазы
  6. Азотсодержащие соединения
  7. АЗОТСОДЕРЖАЩИЕ СОЕДИНЕНИЯ.
  8. Акты гражданского состояния
  9. Анализ движения и технического состояния основных средств
  10. Анализ и диагностика состояния и динамики развития ИП Кулагин С.В.
  11. Анализ и оценка финансового состояния торговой организации
  12. Анализ имущественного состояния и финансовых средств туристической фирмы ООО «МХ-Видео»
Конец соединения Каждый участник является либо «клиентом», либо «сервером»
Алгоритм симметричного шифрования Алгоритм, используемый для симметричного шифрования. Данное описание включает размер ключа алгоритма, тип алгоритма (блочный или поточный), размер блока алгоритма и информацию о том, является ли он «экспортируемым»
МАС алгоритм Алгоритм, используемый для проверки целостности сообщения. Это описание включает размер хэша, который возвращается МАС-алгоритмом
Алгоритм сжатия Алгоритм, используемый для сжатия данных. Данное описание включает всю информацию, необходимую алгоритму сжатия
Мастер-секрет 48-байтный секрет, разделяемый обоими участниками соединения
Случайное число клиента 32-байтное значение, создаваемое клиентом
Случайное число сервера 32-байтное значение, создаваемое сервером
Алгоритм МАС МАС-секрет
Последовательный номер Каждое состояние соединения содержит последовательный номер, который вычисляется независимо для состояний чтения и записи. Последовательный номер должен устанавливаться в ноль всякий раз, когда состояние соединения становится активным, т.е. текущим или ожидаемым. Последовательные номера не могут быть больше 264 - 1. Последовательный номер возрастает после каждой записи

 

Уровень Записи

Уровень Записи получает данные от более высоких уровней в блоках произвольной длины.

Фрагментация

Уровень Записи фрагментирует блоки в записи TLSPlaintext, поддерживая цепочки данных длиной не более 214 байт. Границы записей протоколов более высокого уровня не сохраняются на уровне Записи, т.е. несколько сообщений протокола более высокого уровня некоторого ContentType могут быть размещены в одной записи TLSPlaintext или единственное сообщение может быть фрагментировано в несколько записей.

Компрессия и декомпрессия

Все записи сжимаются с использованием алгоритма сжатия, определенного в текущем состоянии сессии. Первоначально он определяется как CompressionMethod.null. Алгоритм сжатия преобразует TLSPlaintext-структуру в TLSCompressed-структуру[37].

Если функция декомпрессии определяет, что длина декомпрессированного фрагмента превышает 214 байтов, возникает фатальная ошибка декомпрессии.

 

struct {

ContentType type;

/* same as TLSPlaintext.type */

 

ProtocolVersion version;

/* same as TLSPlaintext.version */

 

uint16 length;

opaque fragment[TLSCompressed.length];

} TLSCompressed;

 

length – длина (в байтах) следующего TLSCompressed.fragment.

fragment – сжатая форма TLSPlaintext.fragment.

Защита полезной информации записи

Функции шифрования и МАС преобразуют TLSCompressed-структуру в TLSCiphertext. Функции дешифрования выполняют обратные преобразования. Применение МАС включает последовательный номер, поэтому потерю или повтор сообщений всегда можно обнаружить.

 

struct {

ContentType type;

ProtocolVersion version;

uint16 length;

select (CipherSpec.cipher_type) {

case stream: GenericStreamCipher;

case block: GenericBlockCipher;

} fragment;

} TLSCiphertext;

 

МАС выполняется перед шифрованием. Потоковый шифратор шифрует весь блок, включая МАС. Если CipherSuite есть TLS_NULL_WITH_NULL_NULL, то шифрование состоит из тождественной операции, т.е. данные не шифруются и МАС не используется. TLSCiphertext.length есть сумма TLSCompressed.length и CipherSpec.hash_size[38].

Для блочных алгоритмов функции шифрования и МАС преобразуют TLSCompressed.fragment-структуру из блоков TLSCiphertext.fragment-структур.

Длина зашифрованных данных (TLSCiphertext.length) есть сумма TLSCompressed.length, CipherSpec.hash_size и padding_length.

Вычисление ключей

Протокол Записи использует следующий алгоритм для создания ключей, инициализационных векторов и секретов МАС из параметров безопасности, создаваемых протоколом Рукопожатия.

Из мастер-секрета с использованием хэш-функций создается последовательность байтов, которая представляет собой МАС-секреты, ключи и инициализационные вектора: client write MAC secret, server write MAC secret, client write key, server write key, client write IV и server write IV. Если некоторое значение не используется, то оно является пустым.

Для создания ключа вычисляется:

 

key_block = PRF (

SecurityParameters.master_secret,

"key expansion",

SecurityParameters.server_random +

SecurityParameters.client_random);

 

Вычисления производятся до тех пор, пока не получится выход заданной длины. Затем key_block разбивается на блоки для получения требуемых ключей следующим образом:

 

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]

 

client_write_IV и server_write_IV создаются только для неэкспортируемых блочных алгоритмов. Для экспортируемых блочных алгоритмов инициализационные вектора создаются другим способом. После выполнения данных вычислений вся информация о мастер-секрете и key_block сбрасывается[39].

Для экспортируемых алгоритмов шифрования (для которых CipherSpec.is_exportable есть true) требуется дополнительное вычисление ключей записи:

 

final_client_write_key =

PRF (SecurityParameters.client_write_key,

"client write key",

SecurityParameters.client_random +

SecurityParameters.server_random);

final_server_write_key =

PRF (SecurityParameters.server_write_key,

"server write key",

SecurityParameters.client_random +

SecurityParameters.server_random);

 

Для экспортируемых алгоритмов шифрования инициализационные вектора вычисляются следующим образом:

 

iv_block = PRF ("", "IV block",

SecurityParameters.client_random +

SecurityParameters.server_random);

 

IV_block разделяется на два инициализационных вектора аналогично key_block:

 

client_write_IV [SecurityParameters.IV_size]

server_write_IV [SecurityParameters.IV_size]

 

В данном случае PRF используется без секрета: это означает, что секрет имеет нулевую длину и на результат вычисления PRF не влияет


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.)