Кратко

  • STARTTLS запускал TLS внутри уже открытого SMTP-соединения, но не наследовал полномочия первого диалога: после рукопожатия обе стороны удаляли сведения, полученные открытым текстом, и клиент снова посылал EHLO.
  • Сброс не позволял изменяемым заявлениям управлять защищённым каналом. Он не делал шифрование обязательным и не удостоверял весь путь письма; DANE и MTA-STS позднее вынесли запрет на тихий откат во внешнюю политику.

Одно соединение начиналось дважды

SMTP-сервер встречает клиента ответом 220. Клиент представляется командой EHLO, после чего сервер перечисляет расширения. STARTTLS в 1999 году добавил в этот список одно слово без параметров. Клиент отправлял STARTTLS, сервер отвечал 220, и следующие байты уже составляли рукопожатие TLS.

Так сохранились старые порт и система MX. Прежние клиенты продолжали работать, новые обнаруживали шифрование в уже установленном соединении. Для перехода не требовалось делить почтовую сеть надвое.

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

Шифрованию понадобилось забвение

После успешного TLS протокол возвращался в начальное состояние. Сервер отбрасывал первый аргумент EHLO, клиент — первый список расширений. Затем клиент представлялся заново.

Второе EHLO не было церемонией. Оно принадлежало другому контексту доказательств. Сервер мог показать механизм аутентификации лишь после подходящего сертификата клиента. Клиент мог принять функции только после проверки имени сервера. Рукопожатие не удостоверяло прежние слова задним числом — оно прекращало срок их действия.

Граница упорядочивала и байты. После 220 клиент обязан начать TLS до любой другой команды SMTP. В группе PIPELINING STARTTLS ставился последним. Иначе открытая команда могла смешаться с рукопожатием, а выбор из старого состояния — перейти в новое.

Защищённому каналу всё ещё требовался приговор

TLS способен дать конфиденциальность, целостность и аутентификацию узла, но завершённое рукопожатие само не определяет достаточность результата. Ожидаемое имя, доверенные корни, алгоритмы и клиентские удостоверения остаются местной политикой. Любая сторона может прервать сеанс.

Так ограничивается обещание шифрования. Защита от пассивного прослушивания не всегда удостоверяет нужный MX. Удостоверенный ретранслятор не доказывает личность автора. Один защищённый SMTP-переход ничего не гарантирует о предыдущем и следующем.

Ответ 454 делает выбор явным. Если TLS временно недоступен, отправитель решает: продолжить открыто, поставить письмо в очередь или завершить ошибкой. Расширение даёт механизм, но не разрешение на разглашение.

Совместимость ограничила первое требование

Публичный MX должен был принимать письма от ещё не обновлённых отправителей. Поэтому RFC 3207 запретил общедоступному SMTP-серверу на порту 25 требовать STARTTLS как общее условие локальной доставки. Частные серверы и политика ретрансляции могли быть строже.

Компромисс сохранил достижимость и позволил постепенное внедрение. Однако объявление STARTTLS не стало долговременным обязательством. Удалив строку, нападающий мог заставить оппортунистического клиента счесть сервер обычным узлом без TLS и передать письмо открыто.

Сбой находился не в работающем TLS. Само требование использовать TLS передавалось в незащищённом разговоре, который нападающий мог редактировать.

Политика вышла за пределы разговора

DANE для SMTP связал обязательность TLS и материал аутентификации назначения с записями TLSA, проверенными DNSSEC. При наличии безопасной применимой записи исчезновение STARTTLS уже не разрешало открытый текст. Письмо откладывалось до установления нужного канала.

MTA-STS выбрал другой путь доверия. Получатель объявляет политику и выдаёт её по HTTPS; отправитель кэширует допустимые MX, требования PKIX и срок. В режиме принуждения отсутствие STARTTLS или неверный сертификат ведут к отсрочке. Первое обнаружение имеет иной риск, чем удостоверенное DNSSEC отсутствие, а кэш сокращает последующие окна атаки.

Оба механизма сохраняют STARTTLS как переход внутри SMTP. Наружу переносится право решить, допустима ли доставка без этого перехода.

Долговечным изобретением стало второе приветствие

Если помнить STARTTLS только как момент превращения открытого текста в шифр, теряется главный урок. Старое состояние получило срок годности. Возможности обнаруживались снова, личность проверялась по названной политике, а откат отделялся от обычной неисправности.

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

Источники и пределы

Первоначальная схема и предупреждение об удалении объявления содержатся в RFC 2487; обновлённые команды, сброс и граница совместимости — в RFC 3207. RFC 7672 определяет DANE для SMTP, RFC 8461 — MTA-STS. Стандарты не измеряют нынешнее внедрение или мировое число атак.