Кратко
- Finished подтверждает transcript текущего рукопожатия с использованием согласованного секрета; прикладные данные до renegotiation от этого не входят в доказательство.
- RFC 5746 переносит прежние
verify_dataи связывает новое рукопожатие с предшественником. Principal, буфер, авторизация, commit и внешний эффект требуют своих чеков.
Корректное доказательство поверх чужого начала
Соединение уже несёт защищённые данные. Приходит новый ClientHello, сервер может запросить клиентский сертификат, ключи меняются, Finished проходит. TLS сообщает об успехе.
В RFC 5246 verify_data вычисляется из master secret и сообщений рукопожатия. Проверка подтверждает общий transcript и ключевое состояние. Обычные прикладные байты, пришедшие раньше, в него не входят.
Изначально второе рукопожатие также не было криптографически связано с предыдущим соединением. Посредник мог открыть канал к серверу, отправить начало запроса, а затем присоединить аутентифицированное рукопожатие другого клиента. Сервер мог прочесть префикс и продолжение как одно сообщение. Finished был подлинным, приписанная беседа — нет.
Непрерывность сокета не равна непрерывности полномочий
TLS 1.2 хранит текущее и ожидающее состояния. Рукопожатие готовит алгоритмы и секреты, ChangeCipherSpec активирует новое состояние, Finished проверяет его под новой защитой.
Это отвечает на вопрос о ключах последующих records. Оно не решает, можно ли завершить анонимно начатый запрос под идентичностью сертификата, появившейся позже. Дескриптор тот же, основание полномочий внутри него изменилось.
Парсер способен держать половину команды дольше, чем существует прежняя TLS-генерация. Если терминатор экспортирует только последний principal, новые права распространяются назад на старые байты. Локальные успехи складываются в решение, которого никто не принимал.
Обратная связь RFC 5746
Secure Renegotiation добавляет renegotiation_info и TLS_EMPTY_RENEGOTIATION_INFO_SCSV. В первом рукопожатии стороны показывают поддержку пустым значением. При renegotiation расширение содержит предыдущие Finished-verify_data клиента и сервера.
Новое рукопожатие обязано знать результат старого. Несовпадение со значениями удерживаемого соединения позволяет его отвергнуть. Вместо предположения по одному сокету появляется проверяемая связь между двумя переговорами.
Поддержка расширения не является исполнением. Библиотека может знать его, а policy запрещать renegotiation; SCSV может присутствовать без второго рукопожатия. Нужны отдельные записи о возможности, загруженной настройке, сигнале, ответе, фактическом событии и сравнении старых значений.
Исправленный TLS не владеет границей запроса
RFC 5746 не выбирает судьбу команды, начатой до смены principal. Её можно отбросить, завершить со старой идентичностью или потребовать новое полное сообщение. Это политика приложения.
Каждый разобранный запрос должен иметь security generation и principal. Для смены личности нужна явная буферная политика. Finished не выдаёт старым байтам разрешение задним числом.
Channel bindings из RFC 5929 дают верхнему протоколу значение, связанное с каналом. Получить его и действительно передать, проверить и применить к операции — разные свидетельства.
EMS связывает другую пару объектов
Extended Master Secret из RFC 7627 выводит master secret из хеша transcript и отвечает на проблемы session hash и triple handshake. Он не заменяет RFC 5746.
EMS связывает секрет с его рукопожатием. Secure Renegotiation связывает новое рукопожатие с прежним соединением. Один флаг «TLS hardened» скрывает, какая связь была проверена.
Объяснимая трасса отдельно хранит EMS, сигнал и исполнение secure renegotiation, связующие значения, путь сертификата и прикладной principal, не раскрывая секретов.
TLS 1.3 убрал механизм, но не старый контур
В TLS 1.3 renegotiation нет. Подвижный шов исчезает из протокола. Но способность говорить TLS 1.3 не доказывает отключение 1.2: proxy может принимать 1.3 и использовать 1.2 к origin, а fallback оставаться загруженным.
RFC 9851 замораживает обычную разработку новых функций TLS 1.2, но не останавливает listener. Миграцию доказывают инвентарь, фактическая policy, наблюдаемые handshakes, владельцы зависимостей и сервисные canaries на реальном пути.
Пока renegotiation остаётся, реестр беседы должен соединять первоначальные handshake и Finished, диапазоны байтов, триггер, безопасный сигнал, сравнение, новую идентичность, активацию, новый Finished, principal mapping, границу запроса, авторизацию, commit и внешний итог.
Это операционный анализ BTW, а не формат журнала из RFC 5246. Он не позволяет сильному криптографическому чеку присвоить решение, которого тот не наблюдал.
Источники
- RFC 5246, обычный текст, карточка, Datatracker, история, исправления и ссылки из других документов
- RFC 5746 и её карточка; RFC 7627; RFC 5929
- RFC 8446; RFC 9325; RFC 7301; RFC 6066; RFC 5077
- RFC 2119; RFC Editor, что такое RFC; IANA, параметры TLS; RFC 9851
- Lu Heng: реальность, а не агитация, приоритет работающего кода и проблема агентских отношений
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
