Протокол подтверждения TLS
Протокол TLS отвечает за проверку подлинности и обмен ключами, необходимые для установления или возобновления безопасных сеансов. При создании безопасного сеанса протокол подтверждения управляет следующими параметрами:
- Согласование набора шифров
- Проверка подлинности сервера и при необходимости клиента
- Обмен информацией о ключах сеанса.
Согласование комплекта шифров
Клиент и сервер связываются и выбирают набор шифров, который будет использоваться во время обмена сообщениями.
Проверка подлинности
В TLS сервер подтверждает свое удостоверение для клиента. Клиенту также может потребоваться подтвердить свое удостоверение на сервере. PKI, использование пар открытого и закрытого ключей, является основой этой проверки подлинности. Точный метод, используемый для проверки подлинности, определяется согласованным набором шифров.
Обмен ключами
Клиент и сервер обмениваются случайными числами и специальным номером, который называется секретом предварительного образца. Эти числа объединяются с дополнительными данными, позволяющими клиенту и серверу создавать свой общий секрет, называемый главным секретом. Главный секрет используется клиентом и сервером для создания секрета MAC для записи, который является ключом сеанса, используемым для хэширования, и ключом записи, который является ключом сеанса , используемым для шифрования.
Создание безопасного сеанса с помощью TLS
Протокол подтверждения TLS включает следующие действия.
- Клиент отправляет на сервер сообщение "Client hello" вместе со случайным значением клиента и поддерживаемыми наборами шифров.
- Сервер отвечает, отправляя клиенту сообщение "Server hello" вместе со случайным значением сервера.
- Сервер отправляет свой сертификат клиенту для проверки подлинности и может запросить сертификат у клиента. Сервер отправляет сообщение "Server hello done".
- Если сервер запросил сертификат у клиента, клиент отправляет его.
- Клиент создает случайный предварительный секрет и шифрует его с помощью открытого ключа из сертификата сервера, отправляя зашифрованный предварительный секрет на сервер.
- Сервер получает секрет предварительного образца. Сервер и клиент создают главный секрет и ключи сеанса на основе предварительного секрета.
- Клиент отправляет на сервер уведомление "Изменение спецификации шифра", указывающее, что клиент начнет использовать новые ключи сеанса для хэширования и шифрования сообщений. Клиент также отправляет сообщение "Клиент завершен".
- Сервер получает "Изменение спецификации шифра" и переключает состояние безопасности уровня записей на симметричное шифрование с помощью ключей сеанса. Сервер отправляет клиенту сообщение "Сервер завершен".
- Клиент и сервер теперь могут обмениваться данными приложений через установленный защищенный канал. Все сообщения, отправляемые с клиента на сервер и от сервера к клиенту, шифруются с помощью ключа сеанса.
Возобновление безопасного сеанса с помощью TLS
Клиент отправляет сообщение "Client hello", используя идентификатор сеанса для возобновления.
Сервер проверяет кэш сеансов на наличие соответствующего идентификатора сеанса. Если совпадение найдено и сервер может возобновить сеанс, он отправляет сообщение "Server hello" с идентификатором сеанса.
Примечание
Если совпадение с идентификатором сеанса не найдено, сервер создает новый идентификатор сеанса, а клиент TLS и сервер выполняют полное подтверждение.
Клиент и сервер должны обмениваться сообщениями "Изменить спецификацию шифра" и отправлять сообщения "Клиент завершен" и "Сервер завершен".
Теперь клиент и сервер могут возобновить обмен данными приложений через безопасный канал.