Encrypted ClientHello: как прячется SNI в новом TLS

Архитектура ECH, HTTPS DNS-records и совместимость

10 апреля 2026 2 мин чтения TooTimes Team

ECH (Encrypted ClientHello) — расширение TLS 1.3, которое шифрует весь ClientHello, включая SNI и список поддерживаемых протоколов ALPN. С ним оператор, стоящий между клиентом и сервером, видит только IP-адрес и запись example.com на внешней оболочке — но не реальное имя запрашиваемого домена.

Два ClientHello

Ключевая идея ECH — outer и inner ClientHello:

  • Inner ClientHello — настоящий, со всеми расширениями. Шифруется ключом из ECHConfig.
  • Outer ClientHello — декоративный. В нём указан публичный домен (обычно CDN), а внутри — зашифрованный inner.

Если сервер поддерживает ECH, он расшифровывает inner и отвечает по настоящему домену. Если нет — сработает как обычный TLS по outer.

Откуда берётся ключ — ECHConfigList

Ключ шифрования публикуется в DNS в специальной записи HTTPS RR (тип 65):

example.com. 3600 IN HTTPS 1 . alpn="h2" ech="AEX+DQBB.."

Клиент получает DNS-ответ (через DoH/DoT, чтобы сам DNS не утекал), читает поле ech, из него — ECHConfig: список публичных ключей HPKE, параметры KDF и AEAD. Затем собирает inner ClientHello и шифрует.

Как именно шифруется inner

Схема опирается на HPKE (RFC 9180) — гибридное шифрование, объединяющее эллиптические кривые (X25519) и AEAD (например, AES-GCM). Пошагово:

  1. Клиент генерирует эфемерный ключ X25519.
  2. Выводит общий секрет с публичным ключом сервера из ECHConfig.
  3. Шифрует inner и кладёт шифртекст в расширение outer ClientHello.

Кто поддерживает

На стороне сервера — Cloudflare (глобально), ряд провайдеров CDN. На стороне клиента — Firefox 118+, Chrome с флагом, последние версии iOS Safari частично. На уровне ОС поддержка появляется в macOS Sonoma/Ventura и Windows 11 (через обновлённый Schannel).

Что будет, если что-то сломалось

ECH спроектирован с учётом отказов: если ECHConfig устарел, сервер отвечает специальным расширением retry_configs с новыми ключами. Если ECH вообще не поддерживается — клиент тихо деградирует до обычного TLS.

Ограничения

  • Нужна доверенная DNS-резолюция (DoH/DoT).
  • Нужно, чтобы сервер делился IP с другими доменами (shared hosting / CDN), иначе скрывать всё равно нечего.
  • Не все провайдеры публикуют HTTPS-записи.

Итого

ECH — логичное продолжение эволюции TLS 1.3. Он закрывает один из последних открытых метаданных современного интернета. Понимание ECH полезно любому инженеру, чтобы корректно проектировать системы мониторинга, безопасности и пользовательской приватности.

Нужен стабильный защищённый доступ к интернету?

TooTimes — зашифрованный туннель до серверов в 9 странах, без логов.

Посмотреть тарифы
✎ Панель блога