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.
Š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.“
| Občanský průkaz | Certifikát serveru |
|---|---|
| jméno a fotka | doména a veřejný klíč |
| vydal úřad | vydala certifikační autorita |
| ochranné prvky proti padělání | digitální podpis CA |
| platnost do | platnost do |
| policie zkontroluje pravost | prohlížeč ověří podpis a platnost |
Odpověz nahlas, pak kartu otoč.
Prohlížeč nedokázal ověřit, s kým mluvíš. Po odkliknutí může útočník číst heslo i když spojení vypadá šifrovaně.
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.
| Chrání | Nechrání |
|---|---|
| obsah komunikace před odposlechem | data 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ší?
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ů.
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.