Экстернат |
Безопасность на транспортном уровне: SSL и TLS
Безопасность транспортного уровня обеспечивает услуги безопасности "из конца в конец" для приложений, которые используют протоколы транспортного уровня, такие как TCP. Основные идеи предназначены для того, чтобы обеспечить услуги безопасности на сети Интернет. Например, когда в сети имеются интерактивно работающие онлайн(online)-магазины, то желательны следующие услуги безопасности:
- Клиент должен убедиться, что сервер принадлежит фактическому продавцу, а не самозванцу. Клиент не хочет сообщать самозванцу номер кредитной карточки (установление подлинности объекта).
- Клиент и продавец должны быть убеждены, что содержание сообщения не изменено в течение передачи (целостность сообщения).
- Клиент и продавец должны быть убеждены, что самозванец не перехватит чувствительную информацию, такую как номер кредитной карточки (конфиденциальность).
Сегодня применяются в основном два протокола обеспечения безопасности на транспортном уровне: Протокол "Уровень безопасных розеток" (SSL - Secure Socket Layer) и Протокол Безопасности Транспортного уровня (TLS - Transport Layer Security). Мы сначала обсудим SSL, затем TLS, а потом их сравним и покажем их отличия друг от друга. рис. 7.1 показывает место SSL и TLS в модели Интернет (модель протоколов TCP/IP).
Одна из целей этих протоколов состоит в том, чтобы обеспечить сервер и клиента услугами установления подлинности, конфиденциальности и целостности данных. Прикладной уровень программ клиент-сервер (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.
NULL (ПУСТОЙ УКАЗАТЕЛЬ)
В этом методе нет никакой смены ключей. Между клиентом и сервером не установлен предварительный главный секретный код.
RSA
В этом методе предварительный главный секретный код - 48-байтовое случайное число, созданное клиентом, зашифрованное открытым ключом RSА-сервера и передаваемое серверу. Сервер должен передать свой сертификат шифрования/дешифрования RSA. рис. 7.3 иллюстрирует идею.
Анонимный протокол Диффи-Хеллмана
Это самый простой и наиболее ненадежный метод. Предварительный главный секретный код устанавливают между клиентом и сервером, используя протокол Диффи-Хеллмана. При этом передают половину ключа в исходном тексте - это называется анонимным протоколом Диффи-Хеллмана, потому что ни одна сторона не известна другой. Как мы уже обсуждали, самый серьезный недостаток этого метода - возможность атаки "посредника". рис. 7.4 иллюстрирует идею анонимного метода.
Кратковременный метод Диффи-Хеллмана
Чтобы сорвать атаку "посредника", может быть использована кратковременная смена ключей методом Диффи-Хеллмана. Каждая сторона передает ключ Диффи-Хеллмана, подписанный своим секретным ключом. На приемной стороне должны проверить подпись, используя открытый ключ передатчика. Обмен открытыми ключами для проверки использует либо RSA-, либо DSS-сертификат цифровой подписи. рис. 7.5 иллюстрирует идею.
Фиксированный метод Диффи-Хеллмана
Другое решение - фиксированный метод Диффи-Хеллмана. Все объекты в группе могут подготовить фиксированные параметры ( g и p). Затем каждый объект может создать фиксированную половину ключа ( gx). Для дополнительной безопасности каждая отдельная половина ключа Диффи-Хеллмана вставляется в сертификат, проверенный центром сертификации (CA). Другими словами, две стороны отдельно не обмениваются полуключами; CA передает полуключи в специальном сертификате RSA или DSS. Когда клиент должен вычислить предварительный главный секретный код, он использует свой собственный фиксированный полуключ и полуключ сервера, полученный в сертификате. Сервер делает то же самое, но в обратном порядке. Обратите внимание, что в этом методе не передаются сообщения смены ключей, а происходит только обмен сертификатами.
Fortezza (образован из итальянского слова "крепость") - зарегистрированная торговая марка американского Агентства Национальной безопасности (NSA - National Security Agency). Это семейство протоколов безопасности, разработанных для Отдела Защиты. Мы здесь не обсуждаем Fortezza из-за его сложности.
Алгоритмы шифрования/дешифрования
Есть несколько возможностей выбора алгоритма шифрования/дешифрования. Мы можем разделить алгоритмы на 6 групп, как это показано на рис. 7.6. Все протоколы блока используют 8-байтовый вектор инициализации (IV), кроме Fortezza, который применяет 20 байтов IV.
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.
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) - это анонимный метод Диффи-Хеллмана.