Hlavní navigace

HTTPS - bezpečnost jen pro vyvolené?

Dan Lukeš 22. 2. 2001

Snad vlivem nedávno schváleného zákona o Ochraně dat v informačních systémech, snad vlivem kvapem se blížícího kontroverzního "Sčítání lidu, mobilních telefonů a splachovacích záchodů" se v poslední době zvedá vlna povědomí o tom, že existuje něco takového jako citlivá osobní data a že je to něco, co může být vhodné a potřebné chránit.

Zákon o ochraně dat je příliš široké téma a pro Lupu poněkud mimo její záběr. Sčítání lidu snad můžeme zařadit do kategorie přírodních úkazů, které se neobjevují příliš často. Jak je to ale s ochranou dat při přenosu na Internetu – a to při používání jedné z nejrozšířenějších služeb, tedy WWW?

Nejprve trochu historie

HTTP jako protokol používaný pro přenášení prakticky všeho, co běžný uživatel zahrnuje do pojmu „WWW“, je poplatný době svého vzniku. Má podobné vlastnosti jako mnoho dalších používaných protokolů vzniklých v dřívější době – komunikace mezi uživatelem a serverem probíhá v otevřené formě. Požadavky zasílané WWW serveru jsou nejen adresy stránek, které si jeden každý z vás prohlíží – do kategorie požadavků spadá například také každý vyplněný formulář a – v případě, že pro přístup na nějakou stránku je vyžadováno jméno a heslo – pak i toto jméno a heslo (takové heslo je pak v něktrerých případech dokonce zasíláno znovu a znovu s každým dalším požadavkem – tedy nejen v okamžiku, kdy bylo zadáno). Dalšími informacemi přenášenými v rámci požadavku jsou i „cookie“, což jsou drobné informace bez přesně určeného významu, které však v praxi často nesou různé dodatečné informace o uživateli. Nemohou sice obsahovat cokoliv, co by nebylo přeneseno již dříve, jejich nebezpečí však spočívá v tom, že jsou přenášena opakovaně při komunikaci s jedním serverem a opakovaný přenos znamená větší riziko zachycení. Adresy stránek, data z formulářů, hesla a cookie – to všechno jsou data, která mohou být zachycena, aniž o to stojíte. Přitom zachycení není až tak složité, jak by se mohlo zdát – používate-li spojení z firmy, je zde obvykle jeden počítač, který takovou firmu spojuje s Internetem, a na něm je odposlouchávání veškeré komunikace snadné – ať už je způsobeno zvědavostí jeho správce nebo na příkaz majitele společnosti, který prostě jen chce kontrolovat, co zaměstnanci dělají. Další nebezpečí představují různé cache, které dokonce existují v „transparentní“ verzi, tj. v takové, že její užívání nemusí být uživatelem vůbec vyžádáno ani zaznamenáno.

Ačkoliv tento popis situace vypadá poměrně beznadějně, není důvod k panice – nebezpečí, o kterých víme, většinou dokážeme eliminovat nebo se jim vyhnout. Kouzelným slovem, které nás má zachránit, je HTTPS – tedy HTTP data přenášená pomocí Secure (bezpečného) protokolu. Tento protokol vypadá uvnitř vlastně úplně stejně jako původní HTTP, jen před odesláním jsou data zašifrována a elektronicky podepsána. Jako šifrovací a podpisový protokol se dnes používá SSL nebo TLS a o bezpečnosti algoritmů, na nichž jsou založeny, v této chvíli nejsou známy žádné zvláštní pochyby. Šifrování zabraňuje tomu, aby data po cestě mohl okukovat nějaký zvědavec, elektronický podpis nám má zajišťovat, že na druhé straně je právě ten někdo, s kým si chceme povídat, a ne někdo jiný. Je tedy vyhráno. Je však opravdu vyhráno?

Problémem bezpečnosti šifrování nelze omezit na bezpečnost algoritmu jako takového – algoritmus sám žádná data nezašifruje. Data šifruje až nějaký konkrétní program – nějaká konkrétní implementace vybraného algoritmu a ta může být dobrá nebo špatná. Špatnou implementací teď nemyslím ani tak přímé chyby v programování. U některých šifrovacích algoritmů lze zasíláním dat a měřením doby, za kterou se vrátí odpověď (říkající typicky „data chybně kódována“), významě omezit množinu možných klíčů, z nichž je pak možné zkoušením vybrat ten „pravý“. Pokud není zasílání odpovědi zatíženo náhodou prodlevou, je účinnost bezvadného algoritmu v praxi znehodnocena chybnou implementací. Ale ani zkoumáním správnosti implementace algoritmu není možné bezpečnostní otázku uzavřít. I dokonalý algoritmus, který byl dokonale naprogramován, lze použít nevhodným způsobem tak, že celkový výsledek může být katastrofální.

Pro nejčastěji používané prohlížeče současné doby platí, že zatímco vlastní použitý šifrovací algoritmus je považován za bezpečný a ani o jeho konkrétním zaprogramování v současných prohlížečích není ničeho špatného známo, celkový způsob zabezpečení komunikace je proveden tak, že ve skutečnosti je zabezpečení daleko horší, než jak se většina uživatelů domnívá. HTTPS sice data při přenosu šifruje a tak jsou chráněna před náhodným zachycením, to ale nestačí – aby byl přenos chráněn nejen před nikoli náhodným, ale také před záměrným útokem je nutné, abychom dokázali přesně určit identitu protistrany, se kterou komunikujeme – jinak se může stát, že vybaveni dokonalou šifrou, ve skutečnosti komunikujeme bez našeho vědomí přímo s útočníkem, který data zaznamená a pak, uzná-li za vhodné, je znovu pečlivě zašifrované pošle na cílový server, odkud podobným způsobem běží zpět odpověď. Útočník však může také data při průchodu (oběma směry) libovolně pozměnit, případně se může rozhodnout odpověď zcela zahodit a odpovědět podle svých potřeb (tomuto typu útoku se říká man-in-the-middle – muž uprostřed). Současné browsery (mám tím nadále na mysli zejména Internet Explorer a Netscape Navigator) všemožně brání tomu, aby bezpečnostní protokol plnil svoji důležitou úlohu a zajišťoval uživateli jistotu o skutečné identitě protistrany. Situace je o to horší, že dle všeobecného povědomí HTTPS komunikace takovou jistotu dává – a falešný pocit bezpečí je, co se důsledků týče, často horší než poznaný pocit nebezpečí.

Vás jako uživatele zajímá, jestli je certifikát vydaný skutečně té společnosti, které jste rozhodnut poskytnout svoje data (nebo od které hodláte data přijmout a věřit jim). Browsery při určování, zda je komunikace zabezpečená, však hledí na to, jestli je certifikát vydaný důvěryhodnou autoritou a obsahuje v sobě jméno WWW serveru, se kterým komunikujeme. To je ale něco odlišného, než chcete – a je to také něco jiného, než si většina uživatelů myslí, že to je. Další hráč ve hře je certifikační autorita – ta, a to jen v tom nejlepším případě, ověřuje, že žadatel o certifikát skutečně existuje a je držitelem domény, která má být v certifikátu uvedena. To však stále není totéž – víme teď jen, že nějaká autorita tvrdí, že ví jaké společnosti patří doména, na které jsou stránky, které si prohlížíte. Tuto, a právě jen tuto informaci nám sděluje modrý zamčený zámeček. Už v této chvíli je zřejmé, že cosi není v pořádku – zatím je však náprava lehká – při prvním přístupu na stránky dané domény se musíme podívat přímo na vydaný certifikát a ověřit, že na něm uvedená firma je ta, se kterou hodláme komunikovat. Většina uživatelů to však nedělá, protože je přesvědčena, že modrý zámeček znamená, že data jsou chráněna, aniž by tušili, že musí certifikát osobně zkontrolovat. Někteří to možná budou považovat za přehnaně paranoidní přístup. Budiž. Ponechme tedy toto nebezpečí stranou – jednalo se o, z hlediska bezpečnosti, ideální případ, který se v našich zeměpisných délkách stejně prakticky nevyskytuje. Toto nebezpečí můžeme klidně pominout – u nás v reálné praxi hrozí nebezpečí daleko větší.

V dodávaných browserech je po instalaci předdefinovaná sada tzv. certifikačních autorit, které jsou označeny za důvěryhodné – a za důvěryhodné jsou považovány také všechny klíče těmito autoritami ověřené. O důvěryhodnosti těchto autorit však nerozhodl uživatel, o jehož bezpečnost dat jde, ale dodavatel software – navíc jde o software, který je zdarma a za který jeho dodavatel neručí. Přesto tento dodavatel určil, kdo je dostatečně důvěryhodný, aby ovlivňoval bezpečnost našich dat. Můžete namítnout, že každý přeci může seznam těchto autorit „probrat“ – ale ruku na srdce, kdo z vás to udělal? Existencí předdefinovaných autorit s tím, že si je má každý „probrat“, je vážně narušena zásada pasivní bezpečnosti – bezpečný systém musí chránit především laické a neznalé uživatele, kteří nevědí, že pro svoji bezpečnost musí něco udělat – a je krajně nevhodné bez jejich vědomí určit autority, kterým oni údajně důvěřují. Rozhodnout o bezpečnostní politice (v tomto případě schválit autoritu jako důvěryhodnou) může uživatel jen aktivním přístupem – snad ví, co dělá, nebo se před tím někoho zeptá – každopádně, systém by měl být v prvotním nastavení bezpečný a o změně musí rozhodnout aktivně ten, kdo pak za toto nastavení také nese odpovědnost. Současná praxe je ale taková, že laičtí uživatelé mají všeobecný pocit, že komunikace přes HTTPS je bezpečná, přitom ale mají prohlížeč plný autorit, které údajně uznávají za důvěryhodné – ačkoliv o nich nikdy neslyšeli a ačkoliv důvěryhodnost některých z nich je více než pochybná. Mnozí z vás možná stále nevidí, v čem je nebezpečí – v tom, že instalovaným autoritám nebo přinejmenším některým z nich není radno věřit.

V browserech uvedené autority jsou vesměs americké, nemající dobrý přehled ani o právní situaci neamerických zemí ani o doménové praxi v těchto zemích – a přesto, že nejsou schopny skutečně ověřit, zda žadatel nějak souvisí s firmou, která má být na certifikátu uvedena, ani to, zda tato firma skutečně existuje a ani to, zda tato firma je držitelem domény, která má být na certifikátu uvedena, přesto certifikáty žadatelům vydávají – prakticky systémem „kdo požádá a zaplatí, ten dostane“. Detailní návod přesahuje rámec tohoto článku, ale věřte mi, že pro každého z vás je velice jednoduché a laciné získat certifikát vydaný „důvěryhodnou“ autoritou znějící na jakoukoliv kombinaci „existující česká firma“ a „česká doména“ (zde dokonce ani není podmínka „existující“) – a při jeho získávání nebudete muset padělat žádný dokument. Neoponujte mi tím, že snad existují mezi autoritami takové, které dělají kontrolu správně. Není důležité, že pochybuji, že je taková byť jen jediná – důležité je, že stačí, aby mezi uvedenými byla jediná nedůvěryhodná a znehodnocený je celý systém. A já vím, že tam je, protože jsem si získání takového certifikátu vyzkoušel v praxi. Jakákoliv firma, jakákoliv doména, trocha peněz, důvěryhodný certifikát.

S takovým certifikátem, který je pro každý browser stejně pravý jako každý jiný, je pak již snadné stát se „mužem uprostřed“ a monitorovat a případně i modifikovat veškerou procházející komunikaci. Uživatel nejenže uvidí „zamčený zámeček“, ale i když se podívá na detaily certifikátu, uvidí, že je skutečně vydán „správné“ firmě k příslušné doméně. A málokdo ví, aby to mohl zkontrolovat, která autorita vystavila tento certifikát. Bezpečnost je v tomto okamžiku pouhou iluzí – avšak velice nebezpečnou iluzí – modrý zámeček je pevně uzamčen, i ti opatrní, co ověří certifikát, zjistí, že je vystaven té firmě, pro kterou se to očekává – ve skutečnosti však uprostřed stojí útočník a naslouchá a modifikuje.

Co je špatně a jak se bránit?

Pokud máte v browseru autority oprávněné certifikovat klíče WWW serverů, je celková míra spolehlivosti jakékoliv HTTPS komunikace rovna spolehlivosti té nejméně důvěryhodné autority. S předinstalovanou sadou autorit obou majoritních prohlížečů je pak bezpečnost opravdu nulová. Nejlepší obrana je tedy převzít odpovědnost. Odstraňte všechny autority, respektive zrušte veškerá jejich oprávnění certifikovat klíče WWW serverů. Tím dosáhnete situace, že každý jednotlivý certifikát budete muset osobně přijmout. Při kontrole přijímaného certifikátu se rozhodně nespokojte se jménem firmy a domény – ověřte otisk (fingerprint) s hodnotou, kterou získáte nějakým nezávislým kanálem – nejlépe přímo od společnosti, se kterou hodláte komunikovat (nemůžete pochopitelně použít fingerprint případně uvedený na ověřovaném WWW a ani nemůžete použít např. telefonní čísla na něm uvedená). Tím přebíráte absolutní odpovědnost za pravost přijatých certifikátů a tím i za svoji bezpečnost. Pokud se přeci jen rozhodnete nějakou autoritu ponechat, prozkoumejte pečlivě její pravidla, zjistěte, jaké vyžaduje dokumenty, jak ověřuje jejich pravost, zda poskytuje služby i zahraničním subjektům a jak jsou kontrolní opatření účinná v takovém případě. Pokud si nejste naprosto stoprocentně jisti spolehlivostí autority, tak do seznamu „důvěryhodných“ rozhodně nepatří.

Představte si, že kupujete pro banku sejf, který vám firma instaluje „na klíč“. Jednoho dne vám instalatérská firma slavnostně předá jeden klíč. Sejf je nedobytný, klíč nelze nepozorovaně zkopírovat a ani nepozorovaně zneužít. Jediné, co vám firma tak nějak zapoměla sdělit je, že – samozřejmě pro vaši bezpečnost a pohodlí (co kdybyste klíč ztratil nebo zapoměl doma) – udělala několik kopií klíče, které rozdala vašemu náměstkovi, manželce, šéfovi ochranky, uklízečce (pochopitelně poté, co každého z nich prověřila, a zjistila, že je „důvěryhodný“) a další kopie jsou ve třetím květináči a na parapetu (po prověření, že jsou to bezpečná místa). Každý, kdo si pečlivě přečte návod k použití, včetně všech maličkých písmenek pod čarou, ví, kde ty kopie jsou – ta firma je tam dává při instalaci každého sejfu, váš sejf je pro vaše cennosti asi tak stejně bezpečný jako je nainstalovaný browser s předdefinovanými autoritami bezpečný pro vaše data. Jistě – i u sejfu, tedy pokud si návody čtete stejně pečlivě jako útočníci, můžete všechny duplikáty klíčů vyzvednout a zničit. Každý by měl o reálné bezpečnosti takového sejfu oprávněné pochybnosti (ačkoliv teoretická nedobytnost sejfu je nepochybná).

Preventivní bezpečnosti browserů by významně pomohlo, kdyby dovolovaly „uzamknout“ přístup ke konkrétnímu serveru na konkrétní vydaný certifikát (browser by musel hlásit, že komunikace s konkretním serverem teď probíhá s jiným klíčem než minule – to bez ohledu na to, kdo nový klíč vydal a jak důvěryhodně vypadá) a/nebo na konkrétní certifikační autoritu (browser by musel upozornit, že protistrana se autorizuje klíčem certifikovaným jinou autoritou než posledně). Po instalaci samozřejmě musí být oba tyto zámky aktivovány a databáze autorizovaných certifikátů i důvěryhodných autorit musí být prázdná. Pak teprve by HTTPS nebyla nebezpečnou iluzí, ale hodnotným bezpečnostním prvkem. Do té doby je bezpečnost vyhražena jen znalým a poučeným.

Našli jste v článku chybu?

6. 7. 2016 11:21

Dan Lukes (neregistrovaný)

Ciste pro pripad, ze by tento historicky clanek jeste nekdy nekdo cetl ...

Trvalo to ctrnact let, ale nakonec jsem s nazorem, ze se browsery chovaji velmi nebezpecne nezustal osamocen a i jejich vyrobci konecne chovani zmenili.

Mluvim o HTTP Public Key Pinning (HPKP) a funguje to tak, ze behem prenosu zabezpecene stranky se prenasi i seznam certifikatu, ktere by pri jeji ochrane mely byt pouzite. Prohlizec si tenhle seznam na urcenou dobu zapamatuje - a pokud do komunikace nahle vstoupi utocni…

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Měšec.cz: Vklad na cizí účet je draze zpoplatněn (přehled)

Vklad na cizí účet je draze zpoplatněn (přehled)

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Root.cz: Telegram spustil anonymní blog Telegraph

Telegram spustil anonymní blog Telegraph

Vitalia.cz: Jak koupit Mikuláše a nenaletět

Jak koupit Mikuláše a nenaletět

Lupa.cz: Babiš: E-shopů se EET možná nebude týkat

Babiš: E-shopů se EET možná nebude týkat

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Vitalia.cz: Pravda o přibírání na zimu

Pravda o přibírání na zimu

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

120na80.cz: 5 poporodních problémů a jejich řešení

5 poporodních problémů a jejich řešení

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

DigiZone.cz: Digi CZ výrazně zlevnila balíček HBO

Digi CZ výrazně zlevnila balíček HBO

Měšec.cz: Golfové pojištění: kde si jej můžete sjednat?

Golfové pojištění: kde si jej můžete sjednat?

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

120na80.cz: Rovnátka, která nejsou vidět

Rovnátka, která nejsou vidět

Vitalia.cz: Naučí vás péct kváskový chléb bez lepku i s lepkem

Naučí vás péct kváskový chléb bez lepku i s lepkem

Podnikatel.cz: Změny v daních z příjmů u zaměstnávání

Změny v daních z příjmů u zaměstnávání

Podnikatel.cz: Pozor, pojišťovny mění čísla účtů

Pozor, pojišťovny mění čísla účtů

Měšec.cz: Platby do zahraničí: pozor na tučné poplatky

Platby do zahraničí: pozor na tučné poplatky

Vitalia.cz: Znáte „černý detox“? Ani to nezkoušejte

Znáte „černý detox“? Ani to nezkoušejte