Podívejte se raději na online verzi přednášky, slajdy mohly být aktualizovány nebo doplněny.

Detail přednášky

Lehce osvětová přednáška o tom, proč by HTTPS mělo být úplně všude, nejen na přihlašovacím formuláři. A že šifrování není jenom o HTTPS. Jako obvykle si něco i ukážeme.

O vývoji bezpečných webových aplikací se více dozvíte také na školení Bezpečnost webových aplikací (březen 2020 Praha), přijďte. Šifrování webových stránek se věnujeme na školení HTTPS (18. prosince 2019 Praha). Všechny kurzy nabízím i firmám.

Datum a akce

17. května 2019, Fresenius Kabi 2019 (délka přednášky 60 minut, 27 slajdů)

Slajdy

Šifrování všude 🔐

#1 HTTPS zajišťuje šifrování přenosu webových stránek proti odposlechu i modifikaci a ověřuje protistranu, uživatelé tak vědí s kým komunikují. Bylo by trochu hloupé, kdyby šifrovaná data posílali mizerovi a ten si je v klidu rozšifroval a přečetl nebo změnil.

Apple: Vaše taška je prázdná 🔒

#2 Šifrování na webu se obvykle označuje ikonou zámku 🔒 a tvrdí se, že uživatelé mají tu ikonu hledat a když ji najdou, tak že je všechno v pořádku. Ale taková ikona, to není jen tak. Pro někoho vypadá 🔒 jako nákupní taška a ani se nelze moc divit. Některé stránky tomu docela nechtěně napomáhají.

HTTP Secure, ne HTTP over SSL

#3 To S v HTTPS neznamená SSL, ale Secure. Protokol SSL už by se používat neměl, jeho poslední verze 3 je z roku 1996 a není úplně bezpečná, prohlížeče už ho od roku 2015 ani nepodporují. Místo SSL dnes používáme protokol TLS. Je v tom trochu zmatek, spousta produktů totiž má v názvu jen SSL, ale podporují i TLS, například knihovna OpenSSL, mod_ssl pro Apache apod.

HTTPS = How To Transfer Private Sh⭐⭐

#4 Aby se vám to nepletlo, tak vám nabízím alternativní význam zkratky HTTPS. HTTPS slouží k ochraně přenášených informací, jak z browseru na server, tak ze serveru do browseru. Co je komu do toho, co si na daném webu čtu. HTTPS zabrání odposlechu odesílaných dat i změně stahovaného obsahu.

Ondřej Závodský: "Vy už jste někdy šifroval? Nikdo nešifruje samozřejmě."

#5 V roce 2016 vstoupil v platnost zákon o blokaci hazardních her, o kterém by se v podstatě dalo hovořit jako o cenzuře. Zavedl totiž blokaci stránek, které nemají licenci od ministerstva financí. Při diskuzi o něm pronesl Ondřej Závodský, tehdejší náměstek pro hazard a majetek státu, tyto legendární věty. Šifrování je totiž jeden ze způsobů, jak podobné blokace obcházet nebo rychle detekovat.

Чарас

#6 Toto je stránka na ruské Wikipedii, je o droze jménem Чарас (Charas). Ruským cenzorům z úřadu Roskomnadzor se článek nelíbil a chtěli ho znepřístupnit. Jenže namísto blokace pouze tohoto nepohodlného článku zablokovali v srpnu 2015 celou Wikipedii. Wikipedie totiž běží na HTTPS a cenzoři nemohou zjistit, kterou stránku si uživatel do prohlížeče stahuje. Blokace celé Wikipedie tak vydržela jen pár hodin.

Procento stránek načtených v Chromu přes HTTPS podle země

#7 Šifruje dnes každý a ani o tom neví, pan Závodský to jen potvrdil. Uživatelé prohlížeče Chrome načetli v USA v únoru 2019 89 % všech stránek po HTTPS a tohle číslo pořád roste. Není to ovšem počet webů, které HTTPS používají, těch bude méně. Pokud si přečtete dva články na webu, který HTTPS používá, tak to bude započítáno jako dvě stránky. Když na web bez HTTPS nikdo nepřijde, tak nebude započten vůbec. Počet webů na HTTPS zas není tak důležitý, podstatnější je kolik stránek se po HTTPS přenáší.

Percentage of Web Pages Loaded by Firefox Using HTTPS

#8 U uživatelů Firefoxu je to číslo dost podobné. V únoru 2019 bylo 86 % všech stránek načtených po šifrovaném HTTPS. Dnes se šifruje všude a šifrujeme všichni a ani o tom nevíme. A tak by to mělo být.

Přihlašovací formulář

#9 Šifrovaně se přenáší například uživatelské jméno a heslo, když se někam přihlašujete. Teda ne vždy, ve výjimečných případech ne, ale v takových vám prohlížeč oprávněně zobrazí varování ⚠ Not secure.

Hacking Team: "Exploit the target transparently by injecting a browser based exploit while he's surfing the web"

#10 Zmiňoval jsem, že HTTPS také zabrání změně obsahu. Na začátku července 2015 se díky obrovskému úniku dat ukázalo, jak přesně funguje špehovací software od firmy Hacking Team. Ten si pořídila i česká policie. Do zařízení se potichu nainstaluje například díky chybě ve Flashi nebo Wordu, kterou zneužije exploit vložený do stránky na úrovni poskytovatele. Slovenská policie používá jiný špehovací software, FinFisher, ale ten bude fungovat podobně. Do HTTPS provozu by takto jednoduše nic vložit nešlo.

Cizí banner na kasa.cz

#11 Ale asi (snad?) nikdo z nás není takový zloduch, aby po něm šla policie. Jenže do stránek se dají vkládat i jiné věci, například reklama. Jednou jsem stál kdesi na benzínce a připojil se na místní free Wi-Fi. Zjistil jsem, že do stránek na HTTP provozovatel vkládal bannery. Všimněte si té reklamy na auto dole. Ta v původní stránce není, nacpal ji tam provozovatel Wi-Fi, aby připojení k Internetu nemusel platit ze svého. Do stránek by mohl strkat třeba viry nebo malware, to vydělává trochu víc, než reklama. Kasa.cz od té doby již na HTTPS přešla.

Vážení studenti, v areálu VŠE se delší dobu pohybovala cizí osoba

#12 Vážení studenti, v areálu VŠE se delší dobu pohybovala cizí osoba… Pro získání přístupových údajů používala falešný přístupový bod, ze kterého vysílala eduroam. Útoky využívající falešné Wi-Fi a přístupové body nejsou jen záležitostí mých vystoupení, ale jsou vidět i v praxi. Na podzim 2016 někdo odchytával hesla na Vysoké škole ekonomické v Praze.

App ↔ Wi-Fi ↔ web

#13 Jak to funguje, jak je to vůbec možné? Za normálních podmínek váš počítač a telefon posílá na web nebo stahuje data ze serveru přes nějakou Wi-Fi, třeba nějak takhle.

App ↔ mizera ↔ web

#14 Jen často nevíte, komu ta Wi-Fi patří a jaký má její majitel úmysly. Může to být klidně Wi-Fi moje, nebo nějakého (jiného) mizery. A ten zloduch může odposlouchávat nebo měnit data nebo do webu třeba vkládat vlastní reklamu, viz příklad dříve.

WiFi Pineapple

#15 Na free Wi-Fi se nepřipojujete, policie po vás nejde, žijete v zemi, kde není (skoro) žádná cenzura, tak jak by vás mohl někdo odposlouchávat? Třeba pomocí této krabičky kdokoliv, kdo jí má. Třeba já. Jmenuje se WiFi Pineapple, stojí $99.99 a umí pomocí útoku nazvaného Karma přesvědčit vaše počítače a telefony, aby se připojily na útočníkem ovládanou Wi-Fi. Tato krabička odpoví kladně na dotaz, jestli náhodou nevysílá síť, kterou má váš počítač uloženou. A to i přesto, že takovou síť vlastně nezná. Pokud se na podobnou krabičku připojíte, tak mizera může číst a měnit veškerý nezašifrovaný provoz. Tedy data, která váš počítač nebo telefon stahuje a odesílá.

App ↔ HTTPS ↔ web

#16 Pokud aplikace nebo web budou načítat stránky nebo obecně jakákoliv data po šifrovaném protokolu HTTPS, tak má mizera smůlu. Data sice uvidí, ale budou šifrovaná a protože nezná šifrovací klíče, tak je nemůže rozšifrovat. Může maximálně vidět, komu data posíláte.

App ↔ HTTPS ↔ mizera ↔ HTTPS ↔ web

#17 Jenom HTTPS ale nestačí. Mizera může vaše zařízení přesvědčit, že místo původního serveru má komunikovat s ním, zkrátka se za ten web bude vydávat. Zařízení mu pošle data šifrovaná klíčem 1, mizera ho zná, data rozšifruje, přečte a zašifruje klíčem 2 a pošle na původní server. To samé udělá, když server bude odpovídat. Win-win-win situace.

Nope ↔ HTTPS ↔ mizera ↔ HTTPS ↔ web

#18 Prohlížeč nebo mobilní aplikace takové spojení nesmí přijmout. Pozná ho podle toho, že certifikát nejspíš nevystavila žádná důvěryhodná certifikační autorita. V prohlížeči se pak zobrazí varování, v aplikaci musí vývojáři obranu (např. certificate pinning, označení toho jediného správného certifikátu) implementovat sami.

"Vidím jeho e-mail a heslo."

#19 A jak se můžete bránit jako uživatelé různých webů nebo aplikací, které na HTTPS prdí nebo ho mají udělané blbě? Česká televize před pár lety odvysílala reportážhackování Wi-Fi, ale ona to byla reportáž spíš o hackování lidí, ani nebyla moc dobrá, spousta věcí byla nafejkovaných, ale tak aspoň něco. Doporučovali v ní, ať se nepřipojujete k nezabezpečeným Wi-Fi sítím, to jsou prý ty, co nechtějí žádné heslo pro připojení.

U soudku WiFi 🔒 / U soudku WIFI FREE HIGH SPEED

#20 Jenže mizera může v klidu přijít do hospody U soudku, obsluhy se zeptat na heslo k jejich Wi-Fi a poté udělat vlastní Wi-Fi s lákavým názvem a nastavit tam stejné heslo. Nebo to může udělat i bez hesla. Návštěvníci se raději připojí k síti, která se jmenuje U soudku WIFI FREE HIGH SPEED, protože FREE a protože HIGH SPEED. To je to hackování lidí. Dobře udělaný útok na uživatele Wi-Fi v podstatě nemáte šanci poznat.

Šedý zámeček na PayPalu

#21 Pro správnou funkčnost HTTPS je potřeba tzv. certifikát. Dnes se dají sehnat i zdarma a to díky certifikační autoritě Let's Encrypt (za den vystaví kolem milionu certifikátů) i dalším. To se pochopitelně nelíbí prodejcům certifikátů, jejichž zlatý důl se postupně zavírá. A tak vám chtějí něco prodat, třeba tzv. EV (Extended Validation) certifikáty, někdy též jako „zelené certifikáty“, podle barvy ikony zámečku.

Své argumenty někdy dokonce podpoří i studiemi, ze kterých vyjde, že lidé by ve velkém váhali nakupovat v e-shopech, které dříve používaly „zelené certifikáty“ a nyní je nemají. Mno, tak za prvé: v Chrome už to opravdu zelené není a za druhé: web PayPalu. Ten se v majoritním prohlížeči Chrome na majoritní platformě Windows (jinde ano) z nějakého důvodu neukazuje s názvem firmy, ačkoliv dřív tomu tak bylo. A PayPalu je to jedno, vůbec je to netrápí, jinak by s tím něco už dávno udělali. A netrápí je to proto, že to netrápí ani jejich uživatele, ti PayPal používají úplně v klidu dál, EV, ne-EV. Zámečky (ani názvy firmy) nikoho nezajímaj'

🔒 https://ib.airbank.cz.smp...

#22 Asi se shodneme na tom, že kromě všech ostatních stránek, tak by na HTTPS měly být i stránky bank a internetová bankovnictví, jako např. tohle íbé tečka airbank tečka cézet tečka cototamje?

Tohle je adresa phishingové stránky, která se od klientů Air Bank snažila vylákat přihlašovací údaje. I phishingové stránky by měly být na HTTPS, což zní možná trochu nelogicky, ale dejte mi šanci to vysvětlit. Pokud se máme snažit, aby všechny webové stránky byly zabezpečené pomocí HTTPS, tak to znamená, že i podvodné stránky budou HTTPS využívat.

TLS/SSL System with Certificate Transparency (X.509v3 Extension)

#23 A navíc, pokud jsou phishingové stránky na HTTPS, tak se dají najít včas. To umožní systém Certificate Transparency (CT), díky kterému jsou všechny certifikáty zapsány do více CT logů. Účast v Certificate Transparency byla pro většinu certifikačních autorit (CA) nepovinná, nicméně od dubna 2018 Chrome vyžaduje, aby v CT logu byly již všechny nově vydané certifikáty.

Prohlížeč dostupnost certifikátu v logu může zkontrolovat bez ztráty rychlosti načítání stránek např. následovně: před vydáním certifikátu zapíše CA do CT logu tzv. „předcertifikát“ (precertificate), log jako odpověď pošle Signed Certificate Timestamp (SCT), podepsaný čas uložení certifikátu. CA poté SCT přidá do certifikátu a ten konečně vydá žadateli, který ho umístí na server. Prohlížeč poté při každé návštěvě stránky dostane od serveru certifikát i s časem SCT, který může ověřit a pokud je čas např. v budoucnosti, nebo v certifikátu není SCT vůbec (což může znamenat, že certifikát nebyl zalogován), tak může spojení odmítnout. Další možnosti ověření jsou uvedeny na stránce How Certificate Transparency Works a více technických detailů o Certificate Transparency se dozvíte i v RFC 6962.

Identity LIKE 'ib.airbank.cz%'

#24 CT logy jsou z principu veřejné a je možné je prohledávat. K tomu se dá použít např. vyhledávač crt.sh (jakože CeRTificate SearcH), který provozuje certifikační autorita Sectigo (dříve známá jako Comodo CA). Na obrázku je výsledek vyhledávání certifikátů pro domény, které začínají na „ib.airbank.cz“, všimněte si těch několika phishingových adres. Banka tak může podvodné stránky odhalit ihned po vydání certifikátu a může začít jednat. Nemusí čekat, až je na stránky upozorní nějaký klient, stačí prohledávat CT logy a nechat si posílat notifikace.

Zámečky, zámečky všude

#25 Co teda bychom měli dělat? Měli bychom používat HTTPS (a šifrování) naprosto všude, aby někdo nemohl odposlouchávat a vkládat do stránek reklamu nebo viry. Ale to jako uživatelé na spoustě webů neovlivníte. Weby zavedou HTTPS až ho zavedou, ale ani o minutu dříve. Pro mobilní aplikace je HTTPS a obecně šifrování dat během přenosu naprostá nutnost. U nich naštěstí výrobci ovládají obě strany, jak aplikaci, tak server, takže v pohodě.

Dříve jsem doporučoval používat VPN. Tu zkratku už možná znáte, pokud pracujete pro nějakou větší firmu. Jen to pro vás možná bude jenom synonymum k „práce z domova“. VPN funguje tak, že vytvoří jakýsi tunel mezi vaším zařízením a VPN serverem, ten tunel je šifrovaný a všechno je uděláno (většinou) správně a další spojení pak jdou až z toho VPN serveru. Takže útočník na Wi-Fi v hospodě má smůlu. Jenže dnes je nabídka takových VPN spíš jako minové pole. Spousta VPN služeb je anonymních (což se zdá být jako dobrý nápad, ale přes ně nechcete posílat všechna svá data), některé nástroje data ani nešifrují, jiné vám do stránek začnou vkládat vlastní reklamu. Rozhodně nechoďte na vyhledávač nebo do nějakého stóru a nepište tam „vpn“, protože je tu jistá nemalá šance, že vám doporučí zrovna nějakou takovou zákeřnou aplikaci.

Počet stránek na HTTPS navíc prudce stoupl a stále stoupá, viz grafy dříve, takže mizera v hospodě s vlastní Wi-Fi už má stejně skoro vždy smůlu. Navíc ne v každé hospodě sedí nějaký mizera s vlastní Wi-Fi. VPN už jsem přestal doporučovat.

📮📬

#26 Šifrovat byste měli nejenom web, ale i třeba přenášení emailů. Co se totiž stane, když se připojíte na nějakou zákeřnou Wi-Fi? Váš telefon začne stahovat emaily a pokud nepoužíváte šifrované spojení k poštovním serverům, tak majitel té zákeřné sítě má najednou vaše heslo k emailu a to nechcete. Takže si nastavte vaše zařízení, aby se připojovala na IMAPS, POP3S a SMTPS (kde to koncové S znamená „Secure“). Pokud třeba používáte mobilní appku Gmailu, tak vás takové technikálie jako šifrování nemusí ani zajímat.

🔒 Shrnutí

#27 HTTPS by mělo být na naprosto každém webu, aby útočník nemohl podstrčit falešné přihlašovací formuláře, změnit stahované programy apod. Nebojte se použít certifikáty zdarma, technicky jsou stejné jako ty placené a navíc mají např. lepší automatizaci vydávání a obnovy (obnova certifikátů není práce pro nás, ale pro stroje). „Zelené“ EV certifikáty jsou vyhozený prachy, uživatele to nezajímá a ani vlastně neví, co mají dělat, když tam název firmy najednou není, nebo když tam není na mobilu, ale na počítači jo, takže všechna doporučení stejně budou ignorovat.

Zámečky z prohlížečů zmizí, takže nemá cenu učit uživatele, aby se jimi jakkoliv řídili (stejně to nedělají, takže v pohodě). Pokud budete chtít vědět, jaké stránky a jak se načítají, tak už dnes stejně musíte použít developer tools, adresnímu řádku se nedá tak úplně věřit už nějaký ten pátek. Pro vyhledávání certifikátů použijte crt.sh a HTTPS si otestujte pomocí SSL Labs. Měli byste mít známku A nebo A+, získat ji není zas tak těžké, ukazuju to v jiné přednášce. Vysvětlení části SSL Labs testu najdete v mém článku o vypnutí TLS 1.0 a 1.1 a pokud vás HTTPS zajímá víc, tak vás rád přivítám na dalším školení HTTPS pro vývojáře a správce (18. prosince 2019 Praha).

Michal Špaček

Michal Špaček

Vyvíjím webové aplikace, zajímá mě jejich bezpečnost. Nebojím se o tom mluvit veřejně, hledám hranice tak, že je posouvám. Chci naučit webové vývojáře stavět bezpečnější a výkonnější weby a aplikace.

Veřejná školení

Zvu vás na následující školení, která pořádám a vedu:

HTTPS pro vývojáře a správce
(18. prosince 2019 Praha)

Bezpečnost PHP aplikací
(březen 2020 Praha)