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

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

Аннотация: Эта лекция имеет несколько целей: обсудить потребности в услугах безопасности на транспортном уровне модели Интернет, обсудить общую архитектуру SSL, обсудить общую архитектуру TLS, сравнить и показать отличия SSL и TLS.
Ключевые слова: протокол "Безопасность транспортного уровня", TCP, Интернет, онлайн, online, установление подлинности объекта, протокол "Уровень безопасных розеток", SSL, TLS, место, сервер, прикладной уровень, client-server, протокол передачи гипертекста, URL, протокол передачи гипертекста (HTTP), безопасность, фирма, предварительный главный секретный код, анонимный Диффи-Хеллман, кратковременный Диффи-Хеллман, фиксированный Диффи-Хеллман, Fortezza, NSA, national security, agency, CBC, алгоритмы хэширования, набор шифров, message authentication, главный секретный код, хэш-функция SHA-1, материал для ключей, соединение, Состояние сеанса, подключение, состояние соединения, код установления подлинности сообщения, шифровальный ключ, транспортный уровень, протокол Записи, протокол установления соединения, аварийный протокол, протокол ChangeCipherSpec, протокол передачи записей, decompress, Transport layer, security, функция расширения данных, псевдослучайная функция (PRF), протокол безопасности транспортного уровня, протокол "Уровень Безопасных Розеток" (SSL - Secure Sockets Layer)

Безопасность транспортного уровня обеспечивает услуги безопасности "из конца в конец" для приложений, которые используют протоколы транспортного уровня, такие как TCP. Основные идеи предназначены для того, чтобы обеспечить услуги безопасности на сети Интернет. Например, когда в сети имеются интерактивно работающие онлайн(online)-магазины, то желательны следующие услуги безопасности:

  1. Клиент должен убедиться, что сервер принадлежит фактическому продавцу, а не самозванцу. Клиент не хочет сообщать самозванцу номер кредитной карточки (установление подлинности объекта).
  2. Клиент и продавец должны быть убеждены, что содержание сообщения не изменено в течение передачи (целостность сообщения).
  3. Клиент и продавец должны быть убеждены, что самозванец не перехватит чувствительную информацию, такую как номер кредитной карточки (конфиденциальность).

Сегодня применяются в основном два протокола обеспечения безопасности на транспортном уровне: Протокол "Уровень безопасных розеток" (SSL - Secure Socket Layer) и Протокол Безопасности Транспортного уровня (TLS - Transport Layer Security). Мы сначала обсудим SSL, затем TLS, а потом их сравним и покажем их отличия друг от друга. рис. 7.1 показывает место SSL и TLS в модели Интернет (модель протоколов TCP/IP).

Место SSL и TSL в модели Интернет

Рис. 7.1. Место SSL и TSL в модели Интернет

Одна из целей этих протоколов состоит в том, чтобы обеспечить сервер и клиента услугами установления подлинности, конфиденциальности и целостности данных. Прикладной уровень программ клиент-сервер (client-server), таких как Язык передачи гипертекста (HTTP), который использует услуги TCP, может инкапсулировать свои данные в пакеты SSL. Если сервер и клиент согласованы с функционирующими программами SSL (или TLS), то клиент может использовать URL https: // ... вместо http:// ..., для того чтобы разрешить сообщениям HTTP инкапсулироваться в пакеты SSL (или TLS). Например, номера кредитной карточки могут быть безопасно переданы через Интернет для онлайн-покупателей.

7.1. SSL-архитектура

SSL разработан, чтобы обеспечить безопасность и услуги сжатия данным, сгенерированным прикладным уровнем. Как правило, SSL может получить данные от любого протокола прикладного уровня, но обычно он получает их от протокола HTTP. Данные, полученные от приложения, сжаты (дополнительно), подписаны и зашифрованы, а затем их передают к протоколу транспортного уровня, такому как TCP. Фирма Netscape разработала SSL в 1994 году . Версии 2 и 3 были выпущены в 1995 году. В этой лекции мы рассмотрим только SSL V. 3.

Услуги

SSL обеспечивает несколько услуг для данных, полученных от прикладного уровня.

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

Сначала SSL делит данные на блоки 214 байтов или меньше.

Сжатие

Каждый фрагмент данных сжат с использованием одного из методов сжатия без потери методом, согласованным по договору между клиентом и сервером. Эта услуга является дополнительной.

Целостность сообщения

Чтобы сохранять целостность данных, SSL использует ключевую хэш-функцию для создания кода проверки подлинности (MAC).

Конфиденциальность

Чтобы обеспечить конфиденциальность, первоначальные данные и код проверки подлинности (MAC) зашифрованы, с использованием криптографии с симметричными ключами.

Организация кадра

К зашифрованной полезной нагрузке добавляется заголовок. Полезную нагрузку затем передают достоверному протоколу транспортного уровня.

Алгоритмы смены ключей

Как мы увидим позднее, для обмена подлинными и конфиденциальными сообщениями клиенту и серверу нужны шесть криптографических объектов секретности (четыре ключа и два вектора инициализации). Однако чтобы создать их, между этими двумя сторонами должен быть установлен один предварительный главный секретный код (pre-master secret). SSL определяет шесть методов обмена ключами, чтобы установить этот предварительный объект секретности: NULL, RSA, анонимный Диффи-Хеллман (Diffie-Hellman), кратковременный Диффи-Хеллман, фиксированный Диффи-Хеллман и Fortezza, как это показано на рис. 7.2.

Методы замены ключей

увеличить изображение
Рис. 7.2. Методы замены ключей

NULL (ПУСТОЙ УКАЗАТЕЛЬ)

В этом методе нет никакой смены ключей. Между клиентом и сервером не установлен предварительный главный секретный код.

И клиент и сервер должны знать значение предварительного главного секретного кода.

RSA

В этом методе предварительный главный секретный код - 48-байтовое случайное число, созданное клиентом, зашифрованное открытым ключом RSА-сервера и передаваемое серверу. Сервер должен передать свой сертификат шифрования/дешифрования RSA. рис. 7.3 иллюстрирует идею.

RSA-смена ключа; открытый ключ сервера

Рис. 7.3. RSA-смена ключа; открытый ключ сервера

Анонимный протокол Диффи-Хеллмана

Это самый простой и наиболее ненадежный метод. Предварительный главный секретный код устанавливают между клиентом и сервером, используя протокол Диффи-Хеллмана. При этом передают половину ключа в исходном тексте - это называется анонимным протоколом Диффи-Хеллмана, потому что ни одна сторона не известна другой. Как мы уже обсуждали, самый серьезный недостаток этого метода - возможность атаки "посредника". рис. 7.4 иллюстрирует идею анонимного метода.

Анонимный протокол Диффи-Хеллмана смены ключей

Рис. 7.4. Анонимный протокол Диффи-Хеллмана смены ключей

Кратковременный метод Диффи-Хеллмана

Чтобы сорвать атаку "посредника", может быть использована кратковременная смена ключей методом Диффи-Хеллмана. Каждая сторона передает ключ Диффи-Хеллмана, подписанный своим секретным ключом. На приемной стороне должны проверить подпись, используя открытый ключ передатчика. Обмен открытыми ключами для проверки использует либо RSA-, либо DSS-сертификат цифровой подписи. рис. 7.5 иллюстрирует идею.

Кратковременный протокол Диффи-Хеллмана смены ключей

Рис. 7.5. Кратковременный протокол Диффи-Хеллмана смены ключей

Фиксированный метод Диффи-Хеллмана

Другое решение - фиксированный метод Диффи-Хеллмана. Все объекты в группе могут подготовить фиксированные параметры ( g и p). Затем каждый объект может создать фиксированную половину ключа ( gx). Для дополнительной безопасности каждая отдельная половина ключа Диффи-Хеллмана вставляется в сертификат, проверенный центром сертификации (CA). Другими словами, две стороны отдельно не обмениваются полуключами; CA передает полуключи в специальном сертификате RSA или DSS. Когда клиент должен вычислить предварительный главный секретный код, он использует свой собственный фиксированный полуключ и полуключ сервера, полученный в сертификате. Сервер делает то же самое, но в обратном порядке. Обратите внимание, что в этом методе не передаются сообщения смены ключей, а происходит только обмен сертификатами.

Fortezza

Fortezza (образован из итальянского слова "крепость") - зарегистрированная торговая марка американского Агентства Национальной безопасности (NSA - National Security Agency). Это семейство протоколов безопасности, разработанных для Отдела Защиты. Мы здесь не обсуждаем Fortezza из-за его сложности.

Алгоритмы шифрования/дешифрования

Есть несколько возможностей выбора алгоритма шифрования/дешифрования. Мы можем разделить алгоритмы на 6 групп, как это показано на рис. 7.6. Все протоколы блока используют 8-байтовый вектор инициализации (IV), кроме Fortezza, который применяет 20 байтов IV.

Алгоритмы шифрования/дешифрования

увеличить изображение
Рис. 7.6. Алгоритмы шифрования/дешифрования

NULL

NULL - категория, которая просто определяет отсутствие алгоритма шифрации/дешифрации.

Поток RC

В режиме потока RC определены два потока алгоритма: RC4-40 (ключ на 40 битов) и RC4-128 (ключ на 128 битов).

Блок RS

В режиме блока RC определен один алгоритм: RC2_CBC_40 (ключ на 40 битов).

CBC (Cipher Block Chaining) - сцепление шифрованных блоков.

DES

Все алгоритмы DES определены в режиме блока. DES40_CBC использует ключ на 40 битов. Стандартные DES определены как DES_CBC. 3DES_EDE_CBC используют ключ на 168 битов.

IDEA

В режиме блока IDEA определен один алгоритм - IDEA_CBC, с ключом на 128 битов.

Fortezza

В режиме блока Fortezza определен один алгоритм - FORTEZZA_CBC, с ключом на 96 бит.

Алгоритмы хэширования

SSL использует алгоритмы хэширования, чтобы обеспечить целостность сообщения (установление подлинности сообщения). Имеются хэш-функции, показанные на рис. 7.7.


Рис. 7.7.

Null (Пустой указатель)

Две стороны могут отказаться использовать алгоритм хэширования. В этом случае сообщение не заверено.

MD5

Две стороны могут выбрать MD5 как алгоритм хэширования. В этом случае используется алгоритм хэширования MD5 - 128-битовый.

SHA-1

Две стороны могут выбрать SHA как алгоритм хэширования. В этом случае используется алгоритм хэширования SHA-1 на 160 битов.

Набор шифров

Комбинация смены ключей, хэширования и алгоритмов шифрования определяет набор шифров для каждого сеанса SSL. табл. 7.1 показывает наборы, применяемые в Соединенных Штатах. Мы не включили наборы, которые используются для экспорта. Обратите внимание, что в списке находятся не все комбинации смены ключей, целостности сообщения и установления подлинности сообщения.

Каждый набор начинается термином "SSL", сопровождаемым алгоритмом смены ключей. Слово "WITH" отделяет алгоритм смены ключей от алгоритмов шифрования и хэширования.

Например,

SSL_DHE_RSA_WITH_DES_CBC_SHA

определяет DHE_RSA (кратковременный метод Диффи-Хеллмана ( Diffie-Hellman ephemeral)) с цифровой подписью RSА для смены ключей, DES_CBC - в качестве алгоритма шифрования и SHA - как алгоритм хэширования.

Обратите внимание, что сокращения DH (Diffie-Hellman) - это фиксированный метод Диффи-Хеллмана, DHE (Diffie-Hellman Ephemeral) - это кратковременный метод Диффи-Хеллмана и DH-anon (anonymous Diffie-Hellman) - это анонимный метод Диффи-Хеллмана.

Таблица 7.1. Список набора шифров SSL
Набор шифров Смена ключей Шифрование Хэш
SSL-NULL-WITH-NULL- NULL 
SSL_RSA_WITH_NULL_MD5 
SSL_RSA_WITH_NULL_SHA 
SSL_RSA_WITH_RC4_128_MD5 
SSL_RSA_WITH_RC4_128_SHA 
SSL_RSA_WITH_IDEA_CBC_SHA 
SSL_RSA_WITH_DES_CBC_SHA 
SSL RSA WITH 3DES EDE CBC SHA
NULL
RSA 
RSA 
RSA 
RSA 
RSA
RSA 
RSA
NULL
NULL
NULL
RC4
RC4
IDEA
DES 
3DES
NULL 
MD5 
SHA-1
MD5 
SHA-1 SHA-1 
SHA-1 
SHA-1
SSL_ DH_anon_ WITH_ RC4_128_ MD5
DH anon
RC4
MD5
SSL_ DH_ anon WITH_ DES_ CBC_ SHA
DH anon
DES
SHA-1
SSL _DH_ anon_ WITH_ 3DES_ EDE_ CBC SHA
DH anon
3DES
SHA-1
SSL_ DHE_ RSA_ WITH_ DES_ CBC_ SHA
DHE RSA
DES
SHA-1
SSL_ DHE_RSA_ WITH_3DES_ EDE CBC SHA
DHE RSA
3DES
SHA-1
SSL_DHE_DSS_ WITH_ DES_ CBC_ SHA
DHE DSS
DES
SHA-1
SSL_ DHE_ DSS_ WITH_ 3DES_ EDE_ CBC_ SHA
DHE DSS
3DES
SHA-1
SSL_ DH_ RSA_ WITH_ DES_ CBC_ SHA
DH RSA
DES
SHA-1
SSL_ DH_ RSA_ WITH_ 3DES_ EDE_ CBC_ SHA
DH RSA
3DES
SHA-1
SSL_ DH_ DSS_ WITH_ DES_ CBC_ SHA
DH DSS
DES
SHA-1
SSL_ DH_ DSS_ WITH_ 3DES_ EDE_ CBC_ SHA
DH DSS
3DES
SHA-1
SSL_FORTEZZA_DMS_WITH_NULL_SHA 
SSL_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA 
SSL_FORTEZZA_DMS_WITH_RC4_128_SHA
Fortezza
Fortezza
Fortezza
NULL 
Fortezza
RC4
SHA-1 
SHA-1 
SHA-1
Евгений Виноградов
Евгений Виноградов
Экстернат
Илья Сидоркин
Илья Сидоркин
Как получить диплом?
Сергей Огородников
Сергей Огородников
Россия, Сыктывкар
Дмитрий Карпов
Дмитрий Карпов
Россия, Нижний Новгород