- •1. Способы защиты потока данных в Web
- •2. Защита на уровне приложений
- •3. Протоколы ssl и tls
- •Введение
- •Способы защиты потока данных в Web
- •2. Защита на уровне приложений
- •2. 1. Система pgp
- •2. 2. Система s/mime
- •3.1. Архитектура ssl
- •3.2. Протокол записи ssl
- •3. Протоколы ssl и tls
- •3. 3. Протокол изменения параметров шифрования
- •3. 4. Протокол извещения
- •3. 5. Протокол квитирования
- •3. 6. Создание главного секретного ключа
- •3. 7. Генерирование криптографических параметров
- •Заключение
- •Список литературы:
3. 6. Создание главного секретного ключа
Создание главного ключа состоит из двух этапов. На первом этапе согласуется значение предварительного главного ключа (pre_master_secret), а на втором обе стороны вычисляют значение главного ключа (master_secret). Для передачи друг другу значения pre_master_secret у сторон имеется два варианта.
• RSA. Генерируемый клиентом 48-байтовый ключ pre_master_secret шифруется с помощью открытого ключа RSA сервера и отправляется клиентом серверу. Сервер дешифрует полученный шифрованный текст с помощью своего личного ключа и восстанавливает значение pre_master_secret.
• Метод Диффи-Хеллмана. И клиент, и сервер генерируют открытые ключи для алгоритма Диффи-Хеллмана. После обмена этими ключами каждая сторона выполняет определенные вычисления по методу Диффи-Хеллмана, в результате которых получается совместно используемое значение pre_master_secret.
Теперь обе стороны могут вычислить значение master_secret по схеме:
master_secret = MD5 (pre_master_secret ||
SHA ('A' || pre_master_secret || ClientHello.random || ServerHello.random)) ||
MD5 (pre_master_secret ||
SHA ('BB' || pre_master_secret || ClientHello.random || Server Hello.random)) ||
MD5 (pre_master_secret ||
SHA ('CCC' || pre_master_secret || ClientHello.random || ServerHello.random)),
где ClientHello.random и ServerHello.random являются значениями оказий, входящих в оригинальные сообщения приветствия сторон (поле «случайное значение»).1
3. 7. Генерирование криптографических параметров
Для элемента “Параметры шифрования” поля “комплект шифров” требуются секретный ключ MAC клиента для записи, секретный ключ MAC сервера для записи, ключ клиента для записи, ключ сервера для записи, вектор инициализации клиента для записи и вектор инициализации сервера для записи. Все эти параметры генерируются из главного ключа путем применения функции хэширования к главному ключу с целью получения защищенной последовательности байтов достаточной длины.
Процедура генерирования ключей из главного ключа аналогична процедуре генерирования главного ключа из предварительного и показана ниже.
key_block = MD5 (master_secret ||
SHA ('A' || master_secret || ServerHello.random || ClientHello.random)) ||
MD5 (master_secret ||
SHA ('BB' || master_secret || Server Hello, random || ClientHello.random)) ||
MD5 (master_secret ||SHA('CCC' || master_secret || ServerHello.random || ClientHello.random)) || ...
Процедура выполняется до тех пор, пока не будет сгенерирована последовательность достаточной длины. Эта алгоритмическая структура представляет собой псевдослучайную функцию. Значение master_secret можно рассматривать как инициализирующее значение для этой функции. Сгенерированные клиентом и сервером случайные числа можно рассматривать как значения модификаторов (salt values), используемых с целью усложнения криптоанализа.
