INTEGRITY Dokumentace

Protokol ECH

ECH je zkratka pro Encrypted Client Hello. Jde o rozšíření protokolu v kontextu Transport Layer Security (TLS). ECH šifruje část handshake a maskuje Server Name Indication (SNI), které se používá k vyjednání relace TLS. To znamená, že kdykoli uživatel navštíví web na Cloudflare s povoleným ECH, zprostředkovatelé uvidí, že navštěvujete web na Cloudflare, ale nebudou schopni zjistit který.

Co dělá ECH

ECH omezuje přístup k informaci o tom, že konkrétní uživatel navštěvuje váš web, a zajišťuje, aby se tato informace zbytečně nesdílela s prostředníky, jako jsou poskytovatelé internetových služeb (ISP). Díky ECH už při přístupu uživatele na váš web neuniknou síťovým prostředníkům konkrétní podrobnosti o jeho návštěvě.

Jak funguje ECH

V typickém TLS handshake, klient odešle serveru zprávu ClientHello, kterou zahájí relaci TLS. Tato zpráva obsahuje důležité informace, včetně seznamu podporovaných kryptografických algoritmů, verze TLS a požadovaného názvu serveru (názvu domény webu, ke kterému se klient chce připojit). Název serveru se uvádí pomocí Server Name Indication (SNI).

U ECH se zpráva ClientHello rozdělí na dvě samostatné části: vnitřní a vnější. Vnější část obsahuje necitlivé informace, jako jsou použité šifry a verze TLS, a tvoří takzvané „outer ClientHello“. Vnitřní část je zašifrovaná a obsahuje „inner ClientHello“.

Vnější ClientHello obsahuje common name (SNI), které vyjadřuje, že se uživatel snaží navštívit šifrovaný web na Cloudflare. Zvolili jsme cloudflare-ech.com jako SNI, které budou sdílet všechny weby na Cloudflare. Protože tuto doménu spravuje Cloudflare, máme příslušné certifikáty potřebné k vyjednání TLS handshake pro tento název serveru.

Vnitřní ClientHello obsahuje skutečný název serveru, který se uživatel snaží navštívit. Ten je zašifrován pomocí veřejného klíče a může jej přečíst pouze Cloudflare. Jakmile se handshake dokončí, webová stránka se načte běžným způsobem, stejně jako jakýkoli jiný web načítaný přes TLS.

V praxi to znamená, že jakýkoli prostředník sledující váš provoz uvidí jen běžné handshaky TLS, s jedním upozorněním: veškerý provoz k názvu serveru s podporou ECH na Cloudflare bude vypadat stejně. Každý handshake TLS bude vypadat identicky, jako by se snažil načíst web pro cloudflare-ech.com, nikoli se skutečným webem.

V následujícím příkladu uživatel navštěvuje example.com. Bez ECH mohou jakékoli mezilehlé sítě zjistit, ke kterému webu uživatel přistupuje. S ECH bude viditelná informace omezena na cloudflare-ech.com místo toho.


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)

Další podrobnosti o technologii protokolu ECH najdete v našem úvodní blog.

Povolení ECH

U zón v plánu Free je ECH ve výchozím nastavení zapnuté. U ostatních plánů ho lze zapnout nebo vypnout podle níže uvedených kroků.

  1. V dashboardu Cloudflare přejděte na Edge Certificates stránce.

    Přejděte na Edge Certificates ↗
  2. Pro Encrypted ClientHello (ECH), změňte nastavení na Enabled.

Použitelnost pro podnikové sítě

Některé podnikové nebo regionální sítě potřebují auditovat provoz procházející jejich sítí nebo na něj uplatňovat filtrovací zásady. Tyto zásady se definují podle názvů domén, nikoli podle IP adres. Nejlépe se proto uplatňují na lokálním DNS resolveru v reakci na A a AAAA dotazy pro jednotlivé názvy domén.

Pro nastavení, kde filtrování založené na DNS nelze použít, existují dva způsoby, jak mohou sítě deaktivovat ECH, aby stávající mechanismy filtrování mohly nadále fungovat podle očekávání.

Nejspolehlivější je to provést přímo na lokálním nebo rekurzivním DNS resolveru, a to vynecháním konfigurací ECH ze záznamů HTTPS vracených klientům, nebo, což je vhodnější, vrácením odpovědi „no error no answer“ nebo NXDOMAIN na dotazy HTTPS. Tím se klientům zabrání získat informace potřebné k použití ECH. Upozorňujeme, že úprava záznamů HTTPS může způsobit chyby u klientů provádějících ověření DNSSEC, takže vynechání odpovědí HTTPS může být vhodnějším přístupem. Tím se použití ECH zabrání i prohlížečům, jako je Chrome.

Druhým způsobem, jak deaktivovat ECH, je použití síťové canary domény. Konkrétně může DNS resolver vaší sítě vracet odpověď „no error no answer“ nebo NXDOMAIN na dotazy směřované na use-application-dns.net canary doména. Tímto se prohlížečům, jako je Firefox, znemožní používat ECH. Další informace najdete v dokumentu Firefoxu stránka s často kladenými dotazy pro Encrypted Client Hello.