Протоколы безопасного сетевого взаимодействия

Alerts ошибок


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

Во избежание нарушения работы существующих клиентов и серверов эти Alerts не должны посылаться до тех пор, пока отправляющий их участник не получит расширенное сообщение Hello от другого участника.

  • unsupported_extension – данный Alert посылается клиентом, который получил расширенный Server Hello, содержащий расширение, которое он не указывал в соответствующем Client Hello. Данное сообщение всегда фатально.
  • unrecognized_name – данный Alert посылается сервером, который получил запрос с расширением server_name, но не распознал имя сервера. Данное сообщение может быть фатальным.
  • certificate_unobtainable – данный Alert посылается сервером, который не может получить цепочку сертификатов из URL, предоставленного клиентом. Данное сообщение может быть фатальным – например, если серверу требуется аутентификация клиента для продолжения Рукопожатия и сервер не может восстановить цепочку сертификатов, он может послать фатальный Alert.
  • bad_certificate_status_response – данный Alert посылается клиентом, который получил ответ с недействительным статусом сертификата. Данное сообщение всегда фатально.
  • bad_certificate_hash_value – данный Alert посылается сервером, если хэш сертификата не соответствует предоставленному клиентом certificate_hash. Данное сообщение всегда фатально.


Ошибки обрабатываются в протоколе Рукопожатия следующим образом. Когда один из участников соединения обнаруживает ошибку, он посылает соответствующее сообщение другому участнику. При передаче или получении сообщения фатального Alert оба участника немедленно закрывают соединение. Сервер и клиент должны сбросить все идентификаторы сессии, ключи и секреты, связанные с этим соединением.

Для всех ошибок, у которых уровень Alert явно не задан, посылающая сторона сама может определять, является ошибка фатальной или нет. Если получен Alert с уровнем предупреждения, получающая сторона может решать, интерпретировать ли сообщение как фатальное.

Таблица 21.4. Типы Alert ошибок

Unexpected_message Получено неожидаемое сообщение. Этот Alert всегда фатальный и никогда не должен возникать во взаимодействии корректных реализаций
Bad_record_mac Данный Alert возвращается, если полученная запись имеет некорректный МАС. Данное сообщение всегда фатально
Decryption_failed TLSCiphertext дешифрован недопустимым способом: некратная длина блока или недопустимые добавленные значения. Данное сообщение всегда фатально
Record_overflow Полученная TLSCiphertext запись имеет длину больше 214 + 2048 байт, или дешифрованная TLSCompressed запись имеет длину больше 214 + 1024 байт. Данное сообщение всегда фатально
Decompression_failure Функция декомпрессии получила неправильные входные данные. Данное сообщение всегда фатально
Handshake_failure Получение сообщения handshake_failure Alert говорит о том, что отправитель не смог договориться о приемлемом наборе параметров безопасности. Данное сообщение всегда фатально
Bad_certificate Сертификат испорчен, например содержит некорректную подпись
Unsupported_certificate Сертификат неподдерживаемого типа
Certificate_revoked Сертификат отменен тем, кто его подписал
Certificate_expird Срок действия сертификата истек и в настоящее время он недействителен
Certificate_unknown Другой результат (неопределенный), полученный в результате обработки сертификата, сертификат не принимается
Illegal_parameter Некоторое поле находится вне диапазона или не согласуется с другими полями. Данное сообщение всегда фатально
Unknown_ca Получена цепочка законных сертификатов или некоторая часть цепочки, но сертификат не принимается, потому что сертификат СА не соответствует известному СА, с которым установлены доверительные отношения. Данное сообщение всегда фатально
Access_denied Получен законный сертификат, но при применении контроля доступа отправитель решил не продолжать переговоры. Данное сообщение всегда фатально
Decode_error Сообщение не может быть декодировано, потому что некоторое поле находится вне специфицированного диапазона или некорректна длина сообщения. Данное сообщение всегда фатально
Decrypt_error Не выполнена криптогафическая операция Рукопожатия, которая включает проверку подписи, дешифрование обмена ключа и проверку правильности завершающего сообщения
Export_restriction Переговоры не выполнены из-за экспортных ограничений; например, попытка передать 1024-битный ключ RSA для метода Рукопожатия RSA_EXPORT. Данное сообщение всегда фатально
Protocol_version Версия протокола, с которой клиент пытается вести переговоры, распознана, но не поддерживается. Например, старая версия протокола не должна использоваться по причинам безопасности. Данное сообщение всегда фатально
Insufficient_security Возвращается вместо handshake_failure, когда переговоры прекращаются из-за того, что сервер требует более безопасных алгоритмов, чем предложены клиентом. Данное сообщение всегда фатально
Internal_error Внутренняя ошибка, не относящаяся к участникам, но делающая невозможным дальнейшее ведение переговоров (например, невозможность распределения памяти). Данное сообщение всегда фатально
User_canceled Данное Рукопожатие прервано по некоторой причине, не относящейся к падению протокола. Если пользователь прервал операцию после завершения Рукопожатия, то для закрытия соединения больше подходит сообщение close_notify. Данное сообщение обычно является предупреждающим
No_renegotiation Посылается клиентом в ответ на запрос Hello или сервером в ответ на Hello клиента после начала Рукопожатия. Это приводит к невозможности вести новые переговоры; в этой точке тот, кто осуществил первоначальный запрос, может решить продолжать ли использовать данное соеди нение. Одним из случаев, который может соответствовать данной ситуации, может быть порождение сервером нового процесса для удовлетворения запроса; процесс должен при старте получить параметры безопасности (длину ключа, аутентификацию и т.д.), и возможности внести изменения в параметры после этой точки быть не должно. Данное сообщение всегда является предупреждающим



Содержание раздела