Экстернат |
Безопасность на транспортном уровне: 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.
TLS определяет псевдослучайную функцию (PRF - PseudoRandom Function), чтобы получить комбинацию двух функций расширения данных: одна из них использует MD5 и другая - SHA-1. На PRF поступает три части информации: секретный код, метка и начальное число.
Набор шифров | Замена ключей | Шифрование | Хэш |
---|---|---|---|
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 иллюстрирует идею.
TLS использует функцию PRF, чтобы создать материал для ключей от главного секретного кода. На сей раз информация засекречивания содержит: главный секретный код; метку - это строка "расширение ключа"; и начальное число - конкатенацию случайного числа сервера и случайного числа клиента, как это показано на рис. 7.43.
Аварийный протокол
TLS поддерживает все аварийные сигналы, определенные в SSL, за исключением NoCertificate. TLS также добавляет к списку SSL некоторые новые. табл. 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 | Сервер не может снова начать переговоры по установлению соединения |