ECH: что он на самом деле решает, а что нет
Про шифрование имени в TLS-рукопожатии говорят как про решение проблемы видимости. Формулировка вида «включим — и не будет видно, куда мы идём» встречается постоянно. Формулировка неверна, и разбор того, почему, полезнее самого механизма: закрывается ровно одно поле, а всё остальное — адрес, форма трафика, отпечаток клиента — остаётся на месте.
Что видно в обычном рукопожатии#
Начало защищённого соединения передаётся открытым текстом — иначе стороны не смогли бы договориться о шифровании.
В этом открытом начале есть поле с именем сайта, к которому клиент обращается. Оно нужно серверу, чтобы понять, какой из размещённых на нём сайтов запрашивают.
клиент ──────────────────────────► сервер
начало рукопожатия
├── адрес назначения ← виден всем
├── ИМЯ САЙТА ← видно всем
├── список алгоритмов ← виден всем
└── ...
Наблюдатель посередине читает имя, не расшифровывая ничего. Отсюда и берётся фильтрация по именам.
Что меняет ECH#
Механизм шифрует ту часть рукопожатия, где лежит имя. Наружу выставляется внешнее имя — общее, публичное, — а настоящее имя едет внутри, в зашифрованном виде.
БЕЗ ECH С ECH
├── адрес ├── адрес ← по-прежнему виден
├── ИМЯ: наш-сайт ├── имя: общее-имя ← видно, но бесполезно
└── ... ├── [зашифровано]
│ └── имя: наш-сайт
└── ...
Видно, что закрылось ровно одно поле. Всё остальное осталось на месте.
Что остаётся видимым#
Это главная часть, и её обычно проговаривают недостаточно.
| Что | Скрыто ECH? |
|---|---|
| Имя сайта в рукопожатии | да |
| Адрес назначения | нет |
| Владелец адреса | нет |
| Размеры и тайминги пакетов | нет |
| Отпечаток клиентской библиотеки | нет |
| Сам факт защищённого соединения | нет |
| Запрос к DNS, если он не защищён | нет |
Адрес назначения — не деталь. Если по адресу расположен один сайт, скрытие имени не даёт ничего: адрес отвечает на тот же вопрос.
Множество анонимности#
Отсюда центральное понятие, определяющее ценность механизма.
Защита ECH равна числу сайтов, неразличимых за одним адресом и одним внешним именем.
СИЛЬНЫЙ СЛУЧАЙ
адрес X ──┬── сайт A
├── сайт B
├── ... тысячи сайтов
└── ваш сайт ⇒ имя скрыто по существу
СЛАБЫЙ СЛУЧАЙ
адрес Y ──── ваш сайт ⇒ имя зашифровано,
но адрес говорит всё
Формулировка, которая экономит много времени: ECH прячет вас в толпе, и вся защита — это размер толпы. Собственный сервер с собственным адресом толпы не образует, и включение механизма там меняет только формат утечки, а не её наличие.
Зависимость от DNS#
Второе ограничение, менее очевидное.
Чтобы зашифровать имя, клиенту нужен открытый ключ сервера. Он публикуется в DNS — в специальной записи, которую клиент запрашивает перед подключением.
Из этого следует цепочка:
Если DNS-запрос виден — виден и запрос ключа для конкретного имени. Утечка перемещается, а не исчезает.
Если DNS-ответ можно подделать или вырезать — клиент не получит ключ и подключится обычным образом, открыв имя. Механизм откатывается тихо, без ошибки.
Отсюда правило: ECH без защищённого DNS не даёт заявленного свойства. Это не рекомендация «желательно», а условие работоспособности.
Почему в части стран это минус?#
Есть эффект, ломающий интуицию. Он касается не свойств самого механизма, а того, насколько широко он распространён в сети вокруг вас.
Механизм полезен, когда он распространён. Если им пользуется большинство, его наличие ничего не говорит о пользователе. Если меньшинство — само использование становится признаком.
В ряде юрисдикций соединения с этим механизмом ограничивают: в России это делают с ноября 2024 года. И тогда получается перевёрнутая картина:
| Ситуация | Эффект механизма |
|---|---|
| Механизм массово используется | скрывает, работает как задумано |
| Механизм редок | выделяет пользователя |
| Механизм ограничивается | соединение не проходит |
Практический вывод неприятный, но однозначный: там, где механизм ограничивают, его включение ухудшает положение. Он не только не помогает, но и добавляет признак.
Отдельно стоит знать про имитацию: браузеры умеют отправлять пустышку — поле, похожее на зашифрованное имя, но не несущее содержимого. Смысл в том, чтобы наличие поля не выделяло тех, кто им реально пользуется. Там, где механизм ограничивают, ограничение обычно распространяется и на пустышку — «замаскироваться под массу» не выходит, потому что массы нет.
Числовой пример#
Сравним три размещения по тому, что даёт включение механизма.
| Размещение | Сайтов за адресом | Что даёт ECH | Итог |
|---|---|---|---|
| Крупный CDN | ~10⁵ | имя скрыто среди множества | существенно |
| Небольшой хостинг | ~50 | сузило до 50 вариантов | немного |
| Свой сервер | 1 | адрес отвечает на вопрос | ничего |
| Свой сервер, страна с ограничением | 1 | добавлен признак | хуже, чем без |
Разброс между первой и последней строкой — это разница между «работает» и «вредит» при одном и том же включённом механизме. Решает не он сам, а контекст размещения.
Когда включать#
Короткий критерий, который заменяет длинное обсуждение.
Включать имеет смысл, если ваш ресурс делит адрес с большим числом посторонних, DNS защищён, и в целевых сетях механизм не ограничивают.
Не имеет смысла, если у ресурса собственный адрес: тогда закрывается поле, дублирующее видимую информацию.
Вредно, если в целевой сети механизм ограничивают: добавляется отличительный признак и вероятность отказа.
Вывод#
Механизм решает узкую и реальную задачу: убирает имя из открытой части рукопожатия. Он не скрывает адрес, не меняет форму трафика и не отменяет остальные признаки.
Две вещи стоит запомнить. Первая: защита равна размеру множества, в котором вы прячетесь — на своём адресе оно равно единице. Вторая: свойство приватности зависит от того, насколько механизм распространён вокруг — редкое средство сокрытия выделяет вместо того, чтобы скрывать.
Термины#
- Множество анонимности - число ресурсов, неразличимых за одним адресом и одним внешним именем.
- Внешнее имя - публичное имя, выставляемое наружу вместо настоящего при шифровании имени в рукопожатии.
- Имитация поля - отправка пустышки, похожей на зашифрованное имя, чтобы наличие поля никого не выделяло.
FAQ: частые вопросы#
Скрывает ли ECH, куда я иду?#
Нет. Он скрывает имя в рукопожатии, но адрес назначения остаётся видимым и часто отвечает на тот же вопрос.
Есть ли смысл включать его на своём сервере?#
Обычно нет. Если за адресом один ресурс, множество анонимности равно единице и скрывать нечего.
Что будет, если механизм в сети ограничен?#
Соединение не пройдёт, а сама попытка добавит отличительный признак. В таких сетях включение ухудшает положение.
Что читать дальше#
- DNS в обходе блокировок
- Сдвиг TLS-отпечатка
- Почему «выглядит случайно» не значит «выглядит нормально»
- Пройдите маршрут от настройки до диагностики в VPN-гайдах GigaTap.
- Выберите следующий шаг с помощью помощника VPN start.
- Импорт профиля под конкретное устройство — в хабе настройки клиентов.