Encrypted ClientHello: как прячется SNI в новом TLS
Архитектура ECH, HTTPS DNS-records и совместимость
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). Пошагово:
- Клиент генерирует эфемерный ключ X25519.
- Выводит общий секрет с публичным ключом сервера из ECHConfig.
- Шифрует 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 странах, без логов.
Посмотреть тарифы