Google zapnul HSTS pro všechny své TLD. Co to znamená?

14.11.2017 | Jindřich Zechmeister

Google oznámil zapnutí HSTS zabezpečení pro všechny své TLD domény, které vlastní a spravuje. V tomto článku připomeneme, co je to HSTS a HPKP a co tento krok Googlu znamená pro internet. Dozvíte se také, že HPKP je dobrý sluha, ale v nepovolaných rukou je velice nebezpečný.

HSTS znamená web dostupný pouze přes HTTPS

HSTS slouží k ochraně webu před útoky a krádeži spojení (cookies). Zjednodušeně řečeno web s HSTS prohlížeči hlásí, že je přístupný pouze přes šifrovaný protokol HTTPS.  Na takový web se návštěvník nepřipojí pomocí HTTP; všechny požadavky jsou automaticky přesměrovány na HTTPS (platí to i pro všechny porty, nejen 80).

HSTS se zapíná v nastavení webového serveru a funguje díky zvláštní HTTP hlavičce, ve které jsou uvedeny informace pro klienty. Browser klienta na základě této obdržené hlavičky ví, že daná doména je dostupná pouze přes HTTPS. V hlavičce je také možné specifikovat otisk klíče, který má prohlížeč na webu očekávat. Této hlavičce se říká HPKP a používá se u zvláště hodnotných domén, které často čelí pokusům o vystavení certifikátu pro phishing (domény a služby Google).

HSTS je ochranou před (záměrným) obcházením HTTP, avšak pro správce serveru je zároveň dost nebezpečným nástrojem. V hlavičce poslané prohlížeči přes HTTPS je uveden čas, po který je web dostupný pouze přes HTTPS. Tento interval může být například rok. Při špatné konfiguraci můžete web s HSTS a HPKP znepřistupnit a způsobit si výrazné problémy.  Pokud o klíč uvedený k HPKP hlavičce přijdete, nedokáže se server s uživatelem bezpečně spojit a návštěvník je odříznutý. Z tohoto důvodu musí být specifikován i záložní klíč a v hlavičce musí být uvedeny minimálně dva otisky klíčů. 

Prohlížeče mají zabudován vlastní seznam domén, tzv. HSTS preload list. Díky seznamu znají domény se zapnutým HSTS (vyžadující šifrování) ještě před jejich návštěvou. Ochrana je pak účinnější. Prohlížeč Chrome od Googlu má též svůj vlastní seznam domén, které HSTS používají a navíc má seznam klíčů HPKP, ve kterém jsou nejvýznamnější domény jako Google.com, Facebook.com, Twitter.com nebo GitHub.com. O uvedení na tento seznam si můžete požádat zde. Je však nemožné, aby v těchto seznamech byly uvedeny všechny domény na světě; přidávají se proto zejména ty, které jsou pro bezpečnost návštěvníků mimořádně důležité (jako například gmail.com).

Vybrané TLD domény budou používat HSTS

Nyní už víme, co HSTS znamená a co se stane, když bude 45 hlavních TLD (domén prvního řádu) uvedeno v prohlížeči v "preload listu". Jakákoliv doména druhého a nižšího řádu v zónách zmíněných 45 TLD bude dostupná pouze přes HTTPS a musí mít vlastní TLS certifikát, protože samotná "koncovka" domény vyžaduje HSTS. Google na těchto doménách záměrně zcela pohřbil HTTP, které zde nejde použít. Tento odvážný krok si Google mohl dovolit i díky tomu, že zajistí sám pro domény TLS certifikáty.

Možná vás napadá, zdali se časem přidají další domény. Podobný postup je však možný pouze u domén, které správce vyčleňuje pro konkrétní účely a nejsou určeny pro koncové zákazníky. Majitel této domény by přišel o svobodu rozhodnutí a i když celý internet směřuje k plošnému nasazení HTTPS, HSTS pro celou doménu prvního řádu je například pro českou doménu CZ stále nereálné. V případě domén spravovaných Googlem se jedná o "koncovky" google, how, soy, foo nebo dev. Kompletní seznam TLD Googlu najdete zde.

Jedním z předpokladů použití HSTS je automatizace nasazení certifikátů a jejich automatická rotace. Tu podporují webhosteři a také CZECHIA.COM; v tomto případě má zákazník k dispozici certifikát Basic DV zdarma, ale HSTS se plošně nepoužívá a využití je na každém zákazníkovi.

HSTS a HPKP není bezpečnostní spása

Stejně jako ostatní bezpečnostní funkce nezajistí samotné HSTS dokonalou ochranu před všemi potencionálními útoky. Při zabezpečení webu je nutné bezpečnostní opatření kombinovat a HSTS je pouze jedním z bezpečnostních nástrojů. Nástroj pomáhá dosáhnout určitého cíle, ale samotné jeho použití nezaručí výsledek; stejně je tomu i u bezpečnosti serveru. Nasazení TLS certifikátu nezaručí neprolomitelné zabezpečení webu, pokud je server nastaven špatně a slabé či zastaralé šifrování oslabuje celkovou bezpečnost a vytváří vektor potenciálního útoku.

Na HSTS je třeba dívat se i lehce skepticky; zabezpečení může být pro administrátora poměrně časově náročné a přináší některá rizika, která jsem již zmínil. Například bezpečnostní výzkumník Scott Helme ve svém článku I'm giving up on HPKP popisuje důvody, proč použití HPKP vzdal. HSTS v kombinaci s HPKP a v nešikovných rukou může webové stránky zcela vyřadit na dlouho z provozu. To se stalo i webu Smashing Magazine, který byl kvůli tomu pět dní nedostupný. Celý jejich příběh a popis chyby najdete v článku Be Afraid Of HTTP Public Key Pinning

Ivan Ristic se v loňském článku Is HTTP Public Key Pinning Dead? zamýšlí nad tím, zdali je tento princip už mrtvý. Upozorňuje na vysoká rizika používání HPKP, která odráží statistika používání HPKP na internetu. Odkazuje se na výzkum 1 milionu nejznámějších domén (dle indexu Alexa), který provedl již zmíněný Scott Helme a při kterém našel pouze 375 webů používajících HPKP (tedy 0,0375 %).

Zvažujete nasazení HSTS nebo HPKP?

Pokud sami zvažujete použití obou technik pro zabezpečení webu, doporučujeme nejprve pročíst detailnější princip fungování a zejména varování před možnými problémy. Při použití HPKP je vysloveně nutné mít k dispozici záložní klíč (tedy certifikát) a uvádět ho v hlavičce; jinak může dojít k fatální nedostupnosti webu. Možné problémy se nikdy nedají plánovat a web nemůže být odkázán pouze na jeden TLS certifikát.

Úspěšné nastavení HSTS si můžete vyzkoušet například v testu SSLlabs; ve výsledku ověření uvidíte detaily nastavení HSTS, případně HPKP. Dalším nástrojem, ve kterém můžete HSTS ověřit, je Securityheaders.io. Pokud uvažujete i o nastavení HPKP hlaviček, může vám přijít vhod online generátor hashů pro HPKP, který pro váš certifikát připraví otisky správných klíčů.

Další zdroje informací:

  1. HTTP Strict Transport Security for Apache, NGINX and Lighttpd. Dostupné na raymii.org
  2. Návod na HSTS pro Wordpress a Drupal - Require HTTPS with the HSTS Header. Dostupné na pantheon.in
  3. Bezpečnější šifrování HTTPS s hlavičkami HSTS a HPKP. Dostupné na Root.cz
  4. Broadening HSTS to secure more of the Web. Dostupné na security.googleblog.com

Ing. Jindřich Zechmeister
Specialista pro bezpečnostní SSL certifikáty
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz