Протокол подтверждения TLS

Протокол TLS отвечает за проверку подлинности и обмен ключами, необходимые для установления или возобновления безопасных сеансов. При создании безопасного сеанса протокол подтверждения управляет следующими параметрами:

  • Согласование набора шифров
  • Проверка подлинности сервера и при необходимости клиента
  • Обмен информацией о ключах сеанса.

Согласование комплекта шифров

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

Проверка подлинности

В TLS сервер подтверждает свое удостоверение для клиента. Клиенту также может потребоваться подтвердить свое удостоверение на сервере. PKI, использование пар открытого и закрытого ключей, является основой этой проверки подлинности. Точный метод, используемый для проверки подлинности, определяется согласованным набором шифров.

Обмен ключами

Клиент и сервер обмениваются случайными числами и специальным номером, который называется секретом предварительного образца. Эти числа объединяются с дополнительными данными, позволяющими клиенту и серверу создавать свой общий секрет, называемый главным секретом. Главный секрет используется клиентом и сервером для создания секрета MAC для записи, который является ключом сеанса, используемым для хэширования, и ключом записи, который является ключом сеанса , используемым для шифрования.

Создание безопасного сеанса с помощью TLS

Протокол подтверждения TLS включает следующие действия.

  1. Клиент отправляет на сервер сообщение "Client hello" вместе со случайным значением клиента и поддерживаемыми наборами шифров.
  2. Сервер отвечает, отправляя клиенту сообщение "Server hello" вместе со случайным значением сервера.
  3. Сервер отправляет свой сертификат клиенту для проверки подлинности и может запросить сертификат у клиента. Сервер отправляет сообщение "Server hello done".
  4. Если сервер запросил сертификат у клиента, клиент отправляет его.
  5. Клиент создает случайный предварительный секрет и шифрует его с помощью открытого ключа из сертификата сервера, отправляя зашифрованный предварительный секрет на сервер.
  6. Сервер получает секрет предварительного образца. Сервер и клиент создают главный секрет и ключи сеанса на основе предварительного секрета.
  7. Клиент отправляет на сервер уведомление "Изменение спецификации шифра", указывающее, что клиент начнет использовать новые ключи сеанса для хэширования и шифрования сообщений. Клиент также отправляет сообщение "Клиент завершен".
  8. Сервер получает "Изменение спецификации шифра" и переключает состояние безопасности уровня записей на симметричное шифрование с помощью ключей сеанса. Сервер отправляет клиенту сообщение "Сервер завершен".
  9. Клиент и сервер теперь могут обмениваться данными приложений через установленный защищенный канал. Все сообщения, отправляемые с клиента на сервер и от сервера к клиенту, шифруются с помощью ключа сеанса.

Возобновление безопасного сеанса с помощью TLS

  1. Клиент отправляет сообщение "Client hello", используя идентификатор сеанса для возобновления.

  2. Сервер проверяет кэш сеансов на наличие соответствующего идентификатора сеанса. Если совпадение найдено и сервер может возобновить сеанс, он отправляет сообщение "Server hello" с идентификатором сеанса.

    Примечание

    Если совпадение с идентификатором сеанса не найдено, сервер создает новый идентификатор сеанса, а клиент TLS и сервер выполняют полное подтверждение.

     

  3. Клиент и сервер должны обмениваться сообщениями "Изменить спецификацию шифра" и отправлять сообщения "Клиент завершен" и "Сервер завершен".

  4. Теперь клиент и сервер могут возобновить обмен данными приложений через безопасный канал.