← Cloudflare SSL/TLS / ssl / edge-certificates
Протокол ECH
ECH расшифровывается как Encrypted Client Hello ↗. Это расширение протокола в рамках Transport Layer Security (TLS). ECH шифрует часть рукопожатия и маскирует Server Name Indication (SNI), которое используется для согласования TLS-сессии. Это означает, что когда пользователь посещает сайт на Cloudflare с включённым ECH, посредники смогут увидеть, что вы посещаете сайт на Cloudflare, но не смогут определить, какой именно.
Что делает ECH
ECH ограничивает доступ к информации о том, что конкретный пользователь посещает ваш сайт, и не позволяет ей без необходимости передаваться посредникам, например интернет-провайдерам (ISP). Благодаря ECH сведения о посещении сайта больше не попадают к сетевым посредникам при обращении пользователя к вашему сайту.
Как работает ECH
В типичном TLS-рукопожатие ↗, клиент отправляет серверу сообщение ClientHello, чтобы начать сеанс TLS. Это сообщение содержит важную информацию, включая список поддерживаемых криптографических алгоритмов, версию TLS и запрашиваемое имя сервера (доменное имя сайта, к которому подключается клиент). Имя сервера передаётся с помощью Server Name Indication (SNI).
При использовании ECH сообщение ClientHello разделяется на две части: внутреннюю и внешнюю. Внешняя часть содержит несекретную информацию, например используемые шифры и версию TLS, и образует «внешний ClientHello». Внутренняя часть зашифрована и содержит «внутренний ClientHello».
Внешний ClientHello содержит общее имя (SNI), которое указывает, что пользователь пытается посетить зашифрованный веб-сайт на Cloudflare. Мы выбрали cloudflare-ech.com в качестве SNI, общего для всех сайтов на Cloudflare. Поскольку этот домен контролируется Cloudflare, у нас есть необходимые сертификаты для согласования TLS handshake для этого имени сервера.
Внутренний ClientHello содержит фактическое имя сервера, к которому пытается обратиться пользователь. Оно зашифровано с помощью открытого ключа и может быть прочитано только Cloudflare. После завершения handshake веб-страница загружается в обычном режиме, как и любой другой сайт, загружаемый по TLS.
На практике это означает, что любой посредник, наблюдающий за вашим трафиком, увидит лишь обычные TLS handshake с одной оговоркой: весь трафик к имени сервера с включённым ECH на Cloudflare будет выглядеть одинаково. Каждый TLS handshake будет выглядеть так, будто он пытается загрузить сайт для cloudflare-ech.com, а не на настоящий сайт.
В примере ниже пользователь посещает example.com. Без ECH любые промежуточные сети смогут определить, какой сайт посещает пользователь. С ECH видимая информация будет ограничена cloudflare-ech.com взамен.
flowchart LR
accTitle: What intermediaries see with and without ECH
accDescr: This diagram describes what intermediaries see with and without ECH.
A(User visits <code>example.com</code>)
A -- With ECH --> C(intermediaries see <code>cloudflare-ech.com</code>)-->B(Cloudflare)
A -- Without ECH --> D(intermediaries see <code>example.com</code>)-->B(Cloudflare)
Подробнее о технологии протокола ECH см. в нашей вводная статья в блоге ↗.
Включение ECH
ECH включён по умолчанию для зон на тарифе Free. На других тарифах его можно включить или отключить, выполнив приведённые ниже шаги.
-
На панели управления Cloudflare перейдите к разделу Edge Certificates страницу.
Перейдите в Edge Certificates ↗ -
Для Encrypted ClientHello (ECH), измените настройку на Включено.
Применимость для сетей Enterprise
Некоторым корпоративным или региональным сетям может потребоваться проверять или применять политики фильтрации к трафику, который проходит через их сеть. Такие политики описываются в терминах доменных имён, а не IP-адресов, поэтому их лучше всего применять на локальном DNS-резолвере в ответ на A и AAAA запросы для отдельных доменных имен.
Однако если DNS-фильтрация неприменима, есть два способа отключить ECH в сети, чтобы существующие механизмы фильтрации продолжали работать как прежде.
Наиболее надёжный способ: использовать локальный или рекурсивный DNS-резолвер, отбрасывая конфигурации ECH из ресурсных записей HTTPS, возвращаемых клиентам, либо, что предпочтительнее, возвращая на запросы HTTPS ответ «no error no answer» или NXDOMAIN. Это лишает клиентов данных, необходимых для использования ECH. Обратите внимание, что изменение ресурсных записей HTTPS может приводить к сбоям у клиентов, выполняющих проверку DNSSEC, поэтому отбрасывание ответов HTTPS может быть предпочтительным подходом. Такой способ не позволит браузерам, например Chrome, использовать ECH.
Второй способ отключить ECH: использовать canary-домен сети. В частности, DNS-резолвер вашей сети может возвращать ответ «no error no answer» или NXDOMAIN на запросы, отправленные к use-application-dns.net канареечный домен ↗. Это помешает браузерам, таким как Firefox, использовать ECH. Дополнительные сведения см. в страница часто задаваемых вопросов ↗ для Encrypted Client Hello.