Опубликован: 19.01.2010 | Уровень: специалист | Доступ: свободно
Лекция 7:

Безопасность на транспортном уровне: SSL и TLS

7.4. Безопасность транспортного уровня

Безопасность транспортного уровня (TLS - Transport Layer Security) - протокол IEFT, стандартная версия протокола SSL. Эти два протокола очень похожи, но имеют небольшие отличия. Вместо того чтобы описывать TLS полностью, в этой секции мы только отметим отличия между протоколами TLS и SSL.

Версии

Первое отличие - номер версии (основное, но незначительное). Текущая версия SSL - 3.0; текущая версия TLS - 1.0. Другими словами, SSLv3.0 совместим с TLSv 1.0.

Набор шифров

Другое незначительное отличие между SSL и TLS - отсутствие поддержки Fortezza. TLS не поддерживает Fortezza для смены ключей или для шифрования/дешифрования. табл. 7.6 показывает набор шифров для TLS.

Генерация криптографической секретности

Генерация криптографической секретности в TLS более сложная, чем в SSL. TLS сначала определяет две функции: функцию расширения данных и псевдослучайную функцию. Рассмотрим их.

Функция расширения данных

Функция расширения данных использует заранее заданный код аутентификации на основе хэширования (HMAC-HASH-BASED MESSAGE AUTHENTICATION CODE), или MD5, или SHA-1 для того, чтобы расширить информацию засекречивания. Эту функцию можно рассматривать как функцию, содержащую множество секций, где каждая секция создает одно значение хэширования. Расширенная секретность - последовательное соединение значений хэширования. Каждая секция использует два HMAC, информацию засекречивания и начальное число. Функция расширения данных - это формирование цепочки в виде многих секций. Однако чтобы сделать следующую секцию зависимой от предыдущей, второе начальное число - фактически выход первого HMAC предыдущей секции, как это показано на рис. 7.40.

 Функция расширения данных

увеличить изображение
Рис. 7.40. Функция расширения данных

Псевдослучайная функция

TLS определяет псевдослучайную функцию (PRF - PseudoRandom Function), чтобы получить комбинацию двух функций расширения данных: одна из них использует MD5 и другая - SHA-1. На PRF поступает три части информации: секретный код, метка и начальное число.

Таблица 7.6. Набор шифров для TLS
Набор шифров Замена ключей Шифрование Хэш
TLS_NULL_WITH_NULL_NULL NULL NULL NULL
TLS_RSA_WITH_NULL_MD5 RSA NULL MD5
TLS_RSA_WITH_NULL_SHA RSA NULL SHA-1
TLS_RSA_W1TH_RC4_128_MD5 RSA RC4 MD5
TLS_RSA_WITH_RC4_128_SHA RSA RC4 SHA-!
TLS_RSA_WITH_IDEA_CBC_SHA RSA IDEA SHA-1
TLS_RSA_WITH_DES_CBC_SHA RSA DES SHA-1
TLS_RSA_WITH_3DES_EDE_CBC_SHA RSA 3DES SHA-1
TLS_DH_anon_WITH-RC4_l 28_MD5 DH _anon RC4 MD5
TLS_DH_anon_WITH_DES_CBC_SHA DH_anon DES SHA-1
TLS_DH_anon_WITH_3DES_EDE_CBC_SHA DH_anon 3DES SHA-1
TLS_ DHE_ RSA_ WITH_ DES_ CBC_ SHA DHE_RSA DES SHA-1
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA DHE_RSA 3DES SHA-1
TLS_ DHE_ DSS_ WITH_ DES_ CBC_ SHA DHE_.DSS DES SHA-1
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA DHE_DSS 3DES SHA-1
TLS_DH_RSA_WITH_DES_CBC_SHA DH_RSA DES SHA-1
TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA DH_RSA 3DES SHA-1
TLS_ DH_ DSS_ WITH_ DES_ CBC_ SHA DH_DSS DES SHA-1
TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA DH_DSS 3DES SHA-1

Метка и начальное число связаны и служат начальным числом для каждой функции расширения данных. Информация засекречивания разделена на две части; каждая часть используется как информация засекречивания для каждой функции расширения данных. Выходы двух функций расширения данных складывают по модулю два, чтобы создать конечную расширенную информацию засекречивания. Обратите внимание, что поскольку хэш создается MD5 и SHA-1, он имеет различные размеры, поэтому должны быть созданы дополнительные секции функций на базе MD5, чтобы сделать два вывода с одинаковым размером. рис. 7.41 показывает идею применения PRF.

Главный секретный код

TLS использует функцию PRF, чтобы создать главный секретный код от предварительного главного секретного кода. Это можно сделать, используя предварительный главный секретный код как информацию засекречивания, строку "главный секретный код" - как метку и последовательное соединение информации (конкатенацию) случайного числа клиента и случайное число сервера - как начальное число. Обратите внимание, что метка - фактически код ASCII строки "главного секретного кода". Другими словами, метка определяет выход для создания главного секретного кода. рис. 7.42 иллюстрирует идею.

 Генерация главного секретного кода

увеличить изображение
Рис. 7.42. Генерация главного секретного кода

Материал для ключей

TLS использует функцию PRF, чтобы создать материал для ключей от главного секретного кода. На сей раз информация засекречивания содержит: главный секретный код; метку - это строка "расширение ключа"; и начальное число - конкатенацию случайного числа сервера и случайного числа клиента, как это показано на рис. 7.43.

 Генерация материала для ключа

увеличить изображение
Рис. 7.43. Генерация материала для ключа

Аварийный протокол

TLS поддерживает все аварийные сигналы, определенные в SSL, за исключением NoCertificate. TLS также добавляет к списку SSL некоторые новые. табл. 7.7 показывает полный список аварийных сигналов, поддерживаемых TLS.

Таблица 7.7. Аварийные сигналы, определенные для TLS
Значение Описание Содержание
0 CloseNotify Передатчик не будет посылать сообщений
10 UnexpectedMessage Получено несоответствующее сообщение
20 BadRecordMAC Получен некорректный MAC
21 DecryptionFailed Дешифрованное сообщение недействительно
22 RecordOverFlow Размер сообщения больше чем 214 + 2048
30 DecampressionFailure Невозможно соответствующее расширение сообщения
40 HandsHakeFailure Передатчик не может завершить установление соединения
42 BadCertificate Полученный сертификат искажен
43 UnsupportedCertificate Полученный тип сертификата не поддерживается
44 CertificateRevoked Пописавший аннулировал сертификат
45 CertificateExpired Срок сертификата истек
46 CertificateUnknown Сертификат неизвестен
47 IllegalParameter Поле выходит за допустимые пределы или не соответствует им другим
48 UnknownCA CA не может быть идентифицировано
49 AcessDenied Нежелательно для продолжения переговоров
50 Decode Error Полученное сообщение не может быть декодировано
51 DecryptError Расшифровка зашифрованного текста недействительна
60 ExportRestriction Проблемы согласования с ограничениями в США
70 ProtocolVersion Эта версия протокола не поддерживается
71 InsufficientSecurity Требуется больший набор секретных шифров
80 InternalError Местная ошибка
90 UserCanceled Данная сторона хочет прекратить переговоры
100 NoRenegotiation Сервер не может снова начать переговоры по установлению соединения
Евгений Виноградов
Евгений Виноградов
Экстернат
Илья Сидоркин
Илья Сидоркин
Как получить диплом?