Jak zajistit bezpečné spojení se serverem aneb HSTS a HPKP

Klient by měl vědět, že daný web je dostupný pouze přes HTTPS protokol a v okamžiku, kdy zjistí, že se k němu připojil přes nezabezpečený protokol HTTP, tak by měl zpozornět, protože je možné, že je na něj právě veden MITM útok.

K deklaraci tohoto, že je web dostupný pouze přes HTTPS slouží tzv. HSTS (HTTP Strict Transport Security) mechanismus popsaný v RFC6797, který do hlavičky, která odchází ze serveru, přidává záznam, že daný server je dostupný pouze přes HTTPS protokol. Klient si tuto informaci uloží a příště již ví, že daný server je dostupný pouze přes HTTPS.

No jo, jenže co když je na klienta onen MITM veden hned jak se pokusí poprvé připojit k serveru, ke kterému se ještě nikdy nepřipojoval, co pak? Pak zaleží na tom, zda si uživatel všimne, že přistupuje přes HTTP místo HTTPS anebo zda si toho všimne prohlížeč. Uživatele skutečně může zachránit prohlížeč, který v sobě má zakódován seznam domén dostupných pouze přes HTTPS.

Pokud daná doména v pre-load listu není, tak pak je možné vést útok MITM, kdy je klient přesměrován na web se stejným názvem, ale který je pod kontrolou útočníka. Pokud je daná doména na seznamu tak dojde i po zadání HTTP k internímu přesměrování přes HTTPS na správný server. V pre-load listu je momentálně několik tisíc různých webů, takže je otázka, jestli je tohle ta správná cesta.

Problém je, že o přidání dané domény na seznam, tzv. pre-load list, musí nejprve její správce požádat přes webový formulář a potom ještě nějakou dobu čekat, než doje k přidání záznamu a než si klient stáhne prohlížeč nebo provede jeho aktualizaci. Cesta je to tedy poměrně dlouhá.

Žadatel musí mít platný certifikát na dané doméně a HSTS v hlavičce musí mít uvedeno: add_header Strict-Transport-Security „max-age=31536000; includeSubDomains; preload“; To proto, že požadavek na přidání do seznamu může vznést kdokoliv, a pokud by server neměl tuto hlavičku, tak už by se na něj nikdo nepřipojil.

To, že útočník nezíská validní certifikát pro svou falešnou doménu, by mělo být zaručeno tím, jak funguje CA. Tedy že nepodepíše veřejný klíč pro doménu, aniž by si neověřila, že tato doména již není podepsána. Pokud by však podepsala, nebo by byla CA hacknuta, jako se to v minulosti stalo již několikrát, např. viz kauza DigiNotar, nebo teď naposledy WoSign, tak by to byl problém.

V takovém případě je potřeba na klienta dostat nejen doménu, ale i otisk certifikátu, kterému může věřit, protože pak ani podvodně nebo chybně vydaný certifikát na stejnou doménu útočníkovi v MITM útoku nepomůže, neboť spojení s daným serverem se vůbec nenaváže. K tomu slouží HPKP (HTTP Public Key Pinning), který je popsán v RFC7469.

V zásadě jde o to, že v okamžiku, kdy se uživatel nebo aplikace připojuje přes internet do aplikace běžící na serveru a je použit HTTPS resp. TLS protokol a dochází k ustanovení bezpečného šifrovaného spojení, tak se aplikace nespokojí s jakýmkoliv certifikátem, ale pouze s jedním konkrétním.

To zabraňuje některým typům útoků MITM, které zneužívaly skutečnosti, že pokud útočník přesměroval oběť na svůj server, který byl rovněž opatřen certifikátem, a to od jakékoliv důvěryhodné certifikační autority, a že jich je, tak došlo k navázání spojení s tímto serverem bez ohledu na to, jaká certifikační autorita daný certifikát vystavila a komu.

HPKP pak v praxi funguje tak, že při prvním spojením si aplikace uloží otisk hashe serverového certifikátu, doslova si ho přišpendlí (z anglického pinning) a při dalším pokusu o sestavení spojení pak vyhodnotí, zda se na daném serveru nachází certifikát s odpovídajícím hashem nebo ne.

Jestliže je MITM zahájen už během registrace služby, tak nás ani PKP neochrání. Ovšem aplikace jako je prohlížeč pak může mít otisky certifikátů pro některé weby v sobě již uloženy. Nativní aplikace na mobilní platformě, která se připojuje k serveru, pak může mít otisk v sobě rovněž přišpendlen.


Pokud vás tento příspěvek zaujal, sdílejte ho!
Share on FacebookShare on LinkedInTweet about this on TwitterShare on Google+Email this to someonePrint this page

Štítky:


K článku “Jak zajistit bezpečné spojení se serverem aneb HSTS a HPKP” se zde nenachází žádný komentář - buďte první.

Diskuse na tomto webu je moderována. Pod článkem budou zobrazovány jen takové komentáře, které nebudou sloužit k propagaci konkrétní firmy, produktu nebo služby. V případě, že chcete, aby z těchto stránek vedl odkaz na váš web, kontaktujte nás, známe efektivnější způsoby propagace.

Přihlášeným uživatelům se tento formulář nezobrazuje - zaregistrujte se.

Jméno:(požadováno)
E-mail:(požadováno - nebude zobrazen)
Web:

Text vaší reakce: