HTTP Strict Transport Security
HTTP Strict Transport Security (HSTS) je v informatice bezpečnostní mechanismus, který chrání síťovou komunikaci mezi webovým prohlížečem a webovým serverem před downgrade útoky a zjednodušuje ochranu proti únosu spojení (tzv. cookie hijacking). Mechanismus umožňuje, aby webový server vynutil v prohlížeči komunikaci pouze pomocí šifrovaného HTTPS připojení a vyloučil tím přenos dat nezabezpečeným HTTP protokolem. HSTS definuje RFC 6797. Webový server aktivuje HSTS pomocí HTTP hlavičky Strict-Transport-Security, která svou hodnotou definuje časový úsek, po který může prohlížeč přistupovat k serveru výhradně zabezpečeně.

Historie 
Specifikace HSTS byla schválena 2. října 2012 a následně publikována 19. listopadu 2012 jako RFC 6797. Původně autoři odeslali návrh jako Internet-Draft 17. června 2010. V rámci diskuze nad návrhem bylo jméno změněno ze „Strict Transport Security“ (STS) na „HTTP Strict Transport Security“ (HSTS). Důvodem pro změnu bylo, že jde o specifickou záležitost HTTP protokolu (název v HTTP hlavičce zůstal Strict-Transport-Security).

HSTS mechanismus 
Server implementuje HSTS politiku tím, že odesílá hlavičku přes HTTPS připojení (HSTS hlavičky odeslané pomocí HTTP jsou ignorovány). Server může například odeslat hlavičku, která určí, že všechny budoucí dotazy na danou doménu budou používat jen HTTPS připojení po dobu jednoho roku: Strict-Transport-Security: max-age=31536000; includeSubDomains; preload.

Pokud webová aplikace poskytne HSTS politiku user agentovi, agent se chová následovně:

 Automaticky převede všechny nezabezpečené odkazy, které odkazují na webovou aplikaci, na zabezpečené. (http://example.com/some/page/ bude převedeno na https://example.com/some/page/ předtím, než přistoupí na server.)
 Pokud nemůže být navázáno zabezpečené připojení (např. pokud TLS certifikát je podepsaný sám sebou), zobrazí se chybová hláška a uživateli bude zamezen přístup do webové aplikace.

HSTS pomáhá chránit webové aplikace proti některým pasivním (odposlechy) a aktivním síťovým útokům. Díky HSTS mechanismu má útočník, který využívá man-in-the-middle útok, velmi sníženou šanci, že odchytí nějaké žádosti či požadavky odeslané mezi uživatelem a webovou aplikací.

Využití 
Technologie HSTS dokáže odstranit problémy se SSL-stripping man-in-the-middle útokem, který byl poprvé publikován Moxie Marlinspikem v roce 2009 na BlackHat Federal talk pod názvem „New Tricks For Defeating SSL In Practice“. SSL-stripping útoky (na SSL a TLS) transparentně převádějí zabezpečené HTTPS připojení na nezabezpečené HTTP připojení. Uživatel uvidí, že jeho připojení je nezabezpečené, ale v zásadě neví, zda by připojení mělo být zabezpečené nebo ne. Mnoho stránek nevyužívá TLS/SSL, proto není žádný způsob jak zjistit, zda je připojení v nezabezpečeném HTTP kvůli útoku nebo jen proto, že stránky nevyužívají TLS/SSL.

HSTS řeší tento problém tak, že prohlížeči sdělí, že by připojení k serveru mělo vždy využívat TLS/SSL. HSTS hlavička může být útočníkem odstraněna, pokud uživatel na stránku přistupuje poprvé. Prohlížeče Google Chrome a Mozilla Firefox se snaží tomuto předcházet tak, že poskytuje předem načtený seznam HSTS sítí.
Toto řešení bohužel nelze použít pro všechny stránky v Internetu. Více níže v kapitole „Omezení“.

HSTS také pomáhá předcházet krádeži přihlašovacích HTTP cookies pomocí rozšířeného nástroje Firesheep (plugin pro Firefox).

Jelikož je HSTS časově omezeno, je citlivý například na útoky, které posouvají systémový čas cílového počítače využitím falešných NTP paketů.

Omezení 
Původní požadavek zůstává nechráněn proti aktivním útokům, pokud se použije nezabezpečený protokol (HTTP) nebo pokud URI pro původní požadavek byla získána přes nezabezpečený kanál. To samé platí v případě, kdy poprvé přistupujeme na stránky po uplynutí doby stanovené HSTS politikou max-age (tato doba by měla být nastavena na několik dní nebo měsíců v závislosti na aktivitě a chování uživatele). Google Chrome a Mozilla Firefox řeší toto omezení pomocí „STS preloaded list“, což je seznam obsahující známé sítě, které podporují HSTS. Tento seznam je distribuován s prohlížečem, díky čemuž využívá zabezpečené připojení pro sítě v seznamu již při prvním přístupu. Avšak, jak již bylo zmíněno, toto řešení nedokáže pokrýt všechny stránky na internetu. Možným řešením by mohlo být využití DNS záznamů pro deklarování HSTS politiky a přistupovat k nim zabezpečeně pomocí DNSSEC.

Ani využitím „STS preloaded list“ nemůže HSTS předcházet pokročilým útokům proti TLS jako je například BEAST nebo CRIME.

Podpora v prohlížečích 
 Chromium a Google Chrome od verze 4.0.211.0
 Mozilla Firefox od verze 4; společně s Firefox 17, Mozilla integruje seznam stránek podporujících HSTS.
 Opera od verze 12
 Safari od OS X Mavericks
 Internet Explorer HSTS podporuje díky aktualizaci KB3058515 ze dne 9. června 2015 (pro MSIE 11)

Důsledky nesprávného nastavení nebo opomenutí 
Při nasazení HSTS je nutné udržovat platný certifikát, v opačném případě se webová stránka může stát nedostupnou. Poté, co kvůli neschválení rozpočtu USA muselo asi 800 000 zaměstnanců nastoupit dovolenou, do 21. ledna 2019 nebylo obnoveno přes 130 TLS certifikátů vládních webů, přičemž stránky, které jsou v seznamu STS preloaded list se tak staly úplně nedostupnými, protože v tomto případě prohlížeč neumožní přidání výjimky.

Odkazy

Reference 

Kryptografie
HTTP
Počítačová bezpečnost