Občanka pro server

O čem to je

Připojíš se k Wi-Fi v kavárně a otevřeš banku. Jak víš, že mluvíš opravdu s bankou, a ne s útočníkem, který sedí u vedlejšího stolu a předstírá, že je banka? Odpověď je v zámku v adresním řádku: certifikát a protokol TLS.

Nové pojmy

Veřejný a soukromý klíčPřipomenutí: v asymetrické kryptografii má každý pár klíčů. Veřejný zná každý, soukromý jen majitel. Co podepíše soukromý klíč, ověří veřejný.Server banky má svůj pár klíčů.
Digitální podpisPřipomenutí: hash dokumentu zpracovaný soukromým klíčem. Veřejným klíčem kdokoli ověří, že dokument podepsal majitel klíče a nikdo ho nezměnil.Podepsaná aktualizace programu.
Útok MitM (muž uprostřed)Útočník se vloží mezi tebe a server. Tobě předstírá, že je server, serveru, že je ty, a vidí a mění vše, co jde mezi vámi.Falešná Wi-Fi „Kavarna_Free“ v rukou útočníka.

Problém: komu patří veřejný klíč?

Šifrovat pro banku umíš jejím veřejným klíčem. Jenže útočník uprostřed ti může podstrčit svůj veřejný klíč a tvrdit, že je bankovní. Potřebujeme, aby někdo důvěryhodný potvrdil: „Tento klíč opravdu patří doméně banka.cz.“

Řešení: občanka pro server

CertifikátElektronický doklad (standard X.509), který spojuje veřejný klíč s identitou – u webu s doménou. Obsahuje doménu, veřejný klíč, vydavatele, dobu platnosti a podpis vydavatele.Certifikát pro www.banka.cz vydaný certifikační autoritou.
Certifikační autorita (CA)Důvěryhodná organizace, která ověří, že žadatel doménu opravdu ovládá, a pak certifikát podepíše svým soukromým klíčem.Let's Encrypt (zdarma, automaticky), DigiCert, v ČR např. PostSignum.
Občanský průkazCertifikát serveru
jméno a fotkadoména a veřejný klíč
vydal úřadvydala certifikační autorita
ochranné prvky proti padělánídigitální podpis CA
platnost doplatnost do
policie zkontroluje pravostprohlížeč ověří podpis a platnost

Proč prohlížeč autoritě věří

Kořenový certifikát a řetězec důvěryProhlížeč nebo operační systém má zabudovaný seznam kořenových certifikátů důvěryhodných autorit. Kořenová CA obvykle podepíše mezilehlou CA a ta teprve certifikát serveru. Prohlížeč ověří celý řetězec až ke kořeni.Kořen ISRG Root X1 → mezilehlá CA Let's Encrypt → certifikát www.skola.cz
Útočník v kavárně podvrhne vlastní certifikát pro www.banka.cz, který si sám podepsal. Co udělá prohlížeč?
Prohlížeč se pokusí sestavit řetězec ke kořenové CA ve svém seznamu. Podpis útočníka k žádné důvěryhodné CA nevede, takže zobrazí varování „Připojení není soukromé“. Kdo varování odklikne, pustí útočníka doprostřed spojení.
Certifikát je platný a od důvěryhodné CA, ale je vydaný pro www.banka.cz a ty jsi otevřel www.banka-login.cz. Co se stane?
Prohlížeč kontroluje i shodu domény. Certifikát pro jinou doménu na této adrese neplatí → varování. Pozor ale: www.banka-login.cz si může podvodník zaregistrovat a získat pro ni vlastní platný certifikát. Pak varování nebude.
  • Co certifikát spojuje? – Veřejný klíč s identitou (doménou).
  • Kdo certifikát podepisuje? – Certifikační autorita svým soukromým klíčem.
  • Kde má prohlížeč seznam důvěryhodných CA? – V úložišti kořenových certifikátů (prohlížeč nebo systém).
  • Co dělat při varování o certifikátu na bance? – Nepokračovat, odpojit se z podezřelé sítě a zkusit to jinde.

Odpověz nahlas, pak kartu otoč.

✗Varování o neplatném certifikátu je jen technická chyba, klidně kliknu na „Přesto pokračovat“.
✓U přihlášení, banky nebo e-mailu nepokračuj. Varování může znamenat útok MitM.

Prohlížeč nedokázal ověřit, s kým mluvíš. Po odkliknutí může útočník číst heslo i když spojení vypadá šifrovaně.

Certifikát (X.509) spojuje veřejný klíč s doménou a je podepsaný certifikační autoritou. Prohlížeč ověří řetězec až ke kořenovému certifikátu, platnost a shodu domény. Tím brání útoku MitM.

Průběh spojení

O čem to je

Než prohlížeč pošle první požadavek na https:// stránku, proběhne krátký rozhovor se serverem. Během něj se strany dohodnou na šifrování, prohlížeč ověří server a obě strany získají společný tajný klíč. Tomu rozhovoru se říká TLS handshake.

Nové pojmy

TLSTransport Layer Security, protokol, který zabezpečuje spojení mezi dvěma programy: šifruje data, chrání je před změnou a ověřuje server. Nástupce zastaralého SSL.HTTPS = HTTP přes TLS. Šifruje se tak i e-mail mezi klientem a serverem.
Certifikát a certifikační autoritaCertifikát je doklad, že veřejný klíč patří dané doméně. Vydává a podepisuje ho certifikační autorita (CA), které prohlížeč věří.Certifikát www.skola.cz od Let's Encrypt.
Symetrická a asymetrická kryptografiePřipomenutí: symetrická šifra (AES) má jeden sdílený klíč a je rychlá. Asymetrická (RSA, ECC) má pár klíčů a hodí se na ověřování a dohodu klíče.TLS kombinuje obojí.
Výměna klíčů (Diffie–Hellman)Postup, kterým si dvě strany přes veřejnou síť dohodnou společný tajný klíč, aniž by ho kdy poslaly. Kdo komunikaci jen odposlouchává, klíč nespočítá.V TLS 1.3 se používá varianta s eliptickými křivkami (ECDHE).

TLS handshake zjednodušeně (TLS 1.3)

Prohlížeč pošle pozdrav: jaké verze a šifry umí a svou část výměny klíčů.
Server odpoví: vybranou šifru a svou část výměny klíčů.
Server pošle svůj certifikát a podpisem svým soukromým klíčem dokáže, že k certifikátu patří.
Prohlížeč ověří certifikát: řetězec ke kořenové CA, platnost, shodu domény.
Obě strany z výměny klíčů spočítají stejné symetrické klíče relace.
Další data (požadavky HTTP, hesla, stránky) jdou zašifrovaná rychlou symetrickou šifrou, např. AES.
Proč TLS nešifruje celou komunikaci asymetricky, když certifikát obsahuje veřejný klíč?
Asymetrická kryptografie je pomalá. Použije se jen na ověření serveru a dohodu klíče. Samotná data se šifrují symetricky (AES), což je mnohonásobně rychlejší. Je to hybridní přístup.

Co TLS chrání a co ne

ChráníNechrání
obsah komunikace před odposlechemdata uložená na serveru (únik databáze)
data před změnou po cestěpřed podvodnou stránkou, která má vlastní platný certifikát
před podvržením serveru (MitM)před škodlivým programem (malwarem) v tvém počítači
skrytí toho, se kterým serverem komunikuješ (IP adresa a obvykle i doména jsou vidět)

Roztřiď situace. Která z nich je pro uživatele nejnebezpečnější?

Platnost a odvolání

Certifikáty pro weby mají omezenou platnost, řádově měsíce, a pravidla ji postupně zkracují. Proto se obnovují automaticky (např. protokolem ACME u Let's Encrypt). Když soukromý klíč unikne, CA certifikát odvolá a prohlížeče se to dozví ze seznamu odvolaných certifikátů.

Správce zjistí, že unikl soukromý klíč serveru. Co musí udělat?
1) Nechat certifikát u CA odvolat. 2) Vygenerovat nový pár klíčů. 3) Získat nový certifikát a nasadit ho. 4) Vyšetřit, jak klíč unikl. Bez odvolání by útočník mohl s ukradeným klíčem a stále platným certifikátem předstírat server.
✗Zámek u adresy znamená, že web je bezpečný a poctivý.
✓Zámek znamená jen šifrované spojení a ověřenou doménu. O poctivosti majitele domény neříká nic.

Certifikát ověřený jen kontrolou domény (doménově validovaný) si zdarma pořídí kdokoli, i podvodník pro svou podobně znějící doménu.

TLS handshake: dohoda šifer, výměna klíčů, ověření certifikátu serveru, výpočet symetrických klíčů relace; pak jdou data šifrovaná symetricky. TLS chrání data po cestě a brání podvržení serveru, ale nechrání před podvodnou stránkou s vlastním certifikátem ani před únikem dat ze serveru.