Опубликован: 19.01.2010 | Доступ: свободный | Студентов: 1539 / 214 | Оценка: 4.33 / 4.00 | Длительность: 18:53:00
Лекция 7:

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

Алгоритмы сжатия

Как мы уже говорили, сжатие является дополнительной услугой в SSLv3. Для SSLv3 не определен алгоритм сжатия. Поэтому заданным по умолчанию методом сжатия служит NULL. Однако система может использовать любой алгоритм сжатия по выбору сторон.

Генерирование криптографических параметров

Чтобы обеспечить целостность и конфиденциальность сообщения, в SSL необходимо иметь: шесть криптографических объектов секретности, четыре ключа и два инициализирующих вектора (IV). Клиенту нужно: один ключ для передачи сообщения установления подлинности (HMAC - HASH-BASED MESSAGE AUTHENTICATION CODE), один ключ для шифрования и один IV для шифрования блока. Сервер нуждается в том же самом. SSL требует, чтобы ключи для одного направления отличались от ключей для другого направления. Если будет атака в одном направлении, она не затронет другое направление. Для генерации параметров используют следующую процедуру:

  1. Клиент и сервер обмениваются двумя случайными числами, одно из которых создано клиентом, а другое - сервером.
  2. Клиент и сервер обмениваются одним предварительным главным секретным кодом, используя один из алгоритмов смены ключей, которые мы обсуждали раньше.
  3. Создается 48-байтовый главный секретный код (master secret) из предварительного главного секретного кода (pre-master secret), с применением хэш-функций (SHA-1 и MD5), как это показано на рис. 7.8.
     Вычисление главного секретного кода из предварительного главного секретного кода

    увеличить изображение
    Рис. 7.8. Вычисление главного секретного кода из предварительного главного секретного кода
  4. Главный секретный код используется для того, чтобы создать материал для ключей (key material), который имеет переменную длину. Для этого применяют то же самое множество хэш-функций, что и в предыдущем случае, и подставляют спереди различные константы, как это показано на рис. 7.9. Алгоритм повторяется, пока не получится материал для ключа адекватного размера.

    Обратите внимание, что длина блока материала для ключей зависит от выбранного набора шифра и размера ключей, необходимых для этого набора.

     Вычисление материала для ключей из главного секретного кода

    увеличить изображение
    Рис. 7.9. Вычисление материала для ключей из главного секретного кода
  5. Из материала для ключей извлекаются шесть различных ключей, как показано на рис. 7.10.
     Извлечение криптографических секретных кодов из материала

    Рис. 7.10. Извлечение криптографических секретных кодов из материала

Сеансы и соединение

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

Для двух объектов, чтобы начать обмен данными, установление сеанса необходимо, но не достаточно; они должны создать между собой соединение. Эти два объекта обмениваются двумя случайными числами и создают, используя главный секретный код, ключи и параметры, необходимые для того, чтобы обмениваться сообщениями, включая установление подлинности и секретность.

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

Чтобы создавать новый сеанс, эти две стороны должны пройти процесс переговоров. Чтобы возобновлять старый сеанс и создавать только новое соединение, эти две стороны могут пропустить часть переговоров, что уменьшает время вхождения в связь. Не надо создавать главный секретный код, когда сеанс продолжается.

Разделение сеанса от соединения предотвращает высокую стоимость создания главного секретного кода. Если мы разрешаем приостановления и продолжения сеанса, процесс вычисления главного секретного кода может быть устранен. рис. 7.11 иллюстрирует идею сеанса и соединения в этом сеансе.

В сеансе одна сторона играет роль клиента и другая - роль сервера. При соединении обе стороны имеют равные роли, они равны по уровню.
Сеанс и соединение

увеличить изображение
Рис. 7.11. Сеанс и соединение
Состояние сеанса

Сеанс определяется состоянием сеанса - это множество параметров, установленных между сервером и клиентом. табл. 7.2 показывает список параметров для состояния сеанса.

Таблица 7.2. Параметры состояния сеанса
Параметры Описание
ID сеанса Случайное 8-битовое число, выбранное сервером и определяющее сеанс
Сертификат уровня Сертификат типа X509 .v.3. Этот параметр может быть пустым (null)
Метод сжатия Метод сжатия
Набор шифров Согласованный набор шифров
Главный секретный код 48-байтовый секретный код
Возможность повторения Флаг "Да, Нет", который разрешает новое соединение в старом сеансе
Состояние соединения

Подключение определяется состоянием соединения - это множество параметров, установленных между двумя равными по уровню объектами. табл. 7.3 показывает список параметров для состояния соединения.

SSL использует два признака, чтобы отличить криптографическую секретность: писать и читать. Термин писать определяет ключ, используемый для того, чтобы подписать или зашифровать исходящее сообщение.Термин читать определяет ключ, используемый для того, чтобы подтвердить или расшифровывать прибывающие сообщения. Обратите внимание: писать-ключ клиента - тот же самый, что и ключ- читать сервера; ключ- читать клиента - тот же самый, что и ключ- писать сервера.

Клиент и сервер имеют шесть различных криптографических объекта: три объекта секретности читать и три писать. Секретность читать для клиента та же самая, что и секретность писать для сервера, и наоборот.
Таблица 7.3. Параметры состояния соединения
Параметры Описание
Случайные числа клиента и сервера Последовательность байтов, выбранная для каждого соединения серверу и клиенту.
Записанный сервером секретный код подлинности сообщения Ключ кода установления подлинности сообщения исходящего сервера для сохранения целостности сообщения.. Используется сервером для подписи, а клиентом для верификации.
Записанный клиентом секретный код установления подлинности сообщения Ключ кода установления подлинности сообщения исходящего сервера для сохранения целостности сообщения.. Используется сервером для подписи, а клиентом для верификации.
Секретный код, записанный сервером Ключ шифрования исходящего сервера для сохранения целостности сообщения
Секретный код, записанный клиентом Ключ шифрования исходящего сервера для сохранения целостности сообщения
Вектор инициализации Блочные шифры в режиме "цепочки блочных шифров" I (CBC) используют векторы инициализации. (IV). Для каждого шифровального ключа путем переговоров определен один вектор инициализации, который используется первым блоком обмена ключами. Зашифрованный текст из блока используется как вектор инициализации ( IV) для следующего блока.
Порядковый номер Каждая сторон имеет порядковый номер. Он начинается с 0 и увеличивается на 1. Он не должен быть больше 264 - 1.
Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?

Мария Архипова
Мария Архипова