← Všechny kurzyZpět do simulátoru →

Šifrování v síti: co schová a co ne

Od Cézarovy šifry a frekvenční analýzy až k dnešku: co je vidět na kabelu a co šifrování opravdu skryje, tři vlastnosti (důvěrnost, integrita, autenticita), symetrická a asymetrická šifra a proč se používají dohromady, hashování hesel se solí a pepřem, TLS handshake krok za krokem, co je v certifikátu a proč prohlížeč křičí, řetěz důvěry a interní autorita ve firmě, meze šifrování (napadený počítač, dešifrování na firewallu, metadata) a praktické pořadí, co šifrovat nejdřív.

Tohle je textový náhled lekcí pro čtení. Plná verze – interaktivní simulátor s animacemi, úlohami a kvízy – běží v aplikaci.

▶ Spustit interaktivní verzi

Lekce 1: Od Cézara k dnešku

Cézarova šifra

začínáme obyčejným textem, který chceme schovatotevřený textAHOJtohle by po kabelu přečetl kdokoli po cestě

Šifrování není vynález internetu – lidé si potřebovali psát tak, aby to nepřečetl posel, dávno předtím, než vznikl první kabel. Nejznámější starý příklad se jmenuje po římském vojevůdci: Cézarova šifra. Funguje tak jednoduše, že si ji můžeš vyzkoušet na papíře. Vezmeš abecedu a každé písmeno ve zprávě nahradíš písmenem, které je o pár míst dál. Při posunu o tři se z A stane D, z B stane E a tak dál; na konci abecedy se prostě pokračuje od začátku. Číslo, o kolik se posouvá, je klíč. Kdo ho zná, zprávu snadno přečte: posune písmena zpátky. Kdo ho nezná, vidí nesmyslnou řadu písmen. Už na tomhle jednoduchém příkladu je vidět všechno podstatné, co platí i o dnešních šifrách. Za prvé je oddělený postup (posuň písmena) od klíče (o kolik). Za druhé musí obě strany klíč nějak znát předem – a jak se klíč doručí, je problém, který tě bude provázet celým kurzem. A za třetí: síla ochrany závisí na tom, kolik různých klíčů připadá v úvahu. U Cézara je jich pětadvacet, takže je zvládneš vyzkoušet všechny na papíře dřív, než dopiješ kávu. Právě proto se šifry musely posunout mnohem dál – a proč přesně to nestačí, ukazuje další modul.

Krok za krokem

  1. Začínáme otevřeným textem: obyčejné slovo, které chceme poslat tak, aby ho posel nepřečetl.
  2. Posuneme každé písmeno o tři místa. Z A je D, z B je E – a za posledním písmenem se pokračuje od začátku abecedy.
  3. Cizí člověk vidí jen řadu písmen bez významu. Kdo zná klíč, posune je zpátky a přečte původní zprávu.
  4. Klíč je tu jediné číslo a možností je pětadvacet. Vyzkoušet je všechny je otázka chvilky – a přesně tady začíná problém.

Proč ruční šifry padnou

v každém jazyce jsou některá písmena mnohem častějšíEAONInejčastější písmena běžného textua přesně toho si všimne i ten, kdo klíč nezná

Cézarova šifra padne hrubou silou, protože klíčů je málo. Nabízí se to opravit: nahradit každé písmeno jiným písmenem podle libovolné tabulky, ne jen posunem. Takové substituci odpovídá obrovské množství možných tabulek a vyzkoušet je všechny opravdu nejde. Přesto se taková šifra láme snadno, a to nástrojem, kterému se říká frekvenční analýza. Vtip je v tom, že v každém jazyce se písmena nevyskytují stejně často. V češtině jsou nejčastější E, A a O, v angličtině E, T a A. Když se v zašifrovaném textu objevuje jedno písmeno mnohem častěji než ostatní, je slušná šance, že to je právě to nejčastější písmeno jazyka – a od téhle jedné hádanky se dá rozplést zbytek jako křížovka. Substituce totiž zachovává četnosti: jen jim přemaluje jmenovky. Moderní šifra tohle nedělá. Stejné písmeno se v ní pokaždé projeví jinak podle toho, co bylo předtím, takže výstup vypadá jako naprosto rovnoměrný šum a žádná statistika z něj nic nevytáhne. A ještě jedna věc se z historie ručních šifer naučila, tvrdě: bezpečnost nesmí stát na utajení postupu. Postup se vždycky dřív nebo později prozradí – ukradne se přístroj, přeběhne člověk, někdo si to prostě domyslí. Proto se dnes šifry zveřejňují a nechávají veřejně napadat; tajný má být jenom klíč. Šifře, kterou nikdo neviděl a autor tvrdí, že je bezpečná, se nedůvěřuje – naopak je to varovný signál.

Krok za krokem

  1. V každém jazyce jsou některá písmena mnohem častější než jiná. To je vlastnost textu, ne šifry.
  2. Substituce četnosti nezmění: nejvyšší sloupec zůstane nejvyšší. Stačí uhodnout jedno písmeno a zbytek se rozplete.
  3. Moderní šifra vyrobí rovnoměrný šum: stejné písmeno se pokaždé projeví jinak a statistika nemá o co zavadit.
  4. Poslední lekce z historie: tajný má být jen klíč. Postup se zveřejňuje – ten, který nikdo neviděl, je varovný signál.

Schovat nebo zašifrovat

dva různé způsoby, jak něco utajitzašifrovat„zpráva tu je, ale nepřečteš ji"schovat„žádná zpráva tu není"šifrování chrání obsah, steganografie fakt, že komunikuješjedno druhé nenahrazuje – kdo to myslí vážně, použije obojí

Existuje ještě druhý způsob, jak před někým něco utajit, a plete se se šifrováním překvapivě často. Jmenuje se steganografie a znamená schovat zprávu místo toho, abys ji zašifroval. Šifrování říká: „tady je zpráva, ale nepřečteš ji". Steganografie říká: „žádná zpráva tu není". Klasické provedení je obrázek: fotka vypadá naprosto normálně, ale v datech jednotlivých bodů je nepatrně poschovávaný text. Oko rozdíl nepozná, velikost souboru sedí, formát je v pořádku. Schovat se dá i do zvuku, do videa, do nevyužitých míst v dokumentu nebo do vzorce, ve kterém někdo posílá zdánlivě nezajímavé dotazy. Rozdíl je zásadní a stojí za zapamatování: šifrování chrání obsah, steganografie chrání fakt, že vůbec komunikuješ. Ani jedno nenahrazuje to druhé, a kdo to myslí vážně, použije obojí – zprávu nejdřív zašifruje a teprve pak schová. Pro tebe jako obránce má tenhle pojem hlavně jeden praktický důsledek, na který navazuje kurz o incidentech: steganografie je oblíbený způsob, jak dostat data z firmy ven. Útočník nepošle databázi jako soubor, ale nasype ji po kouscích do obrázků nahrávaných na běžnou fotoslužbu nebo do dotazů na DNS. Obsah nikomu nepřijde divný, protože žádný podezřelý obsah není. Poznat se to dá skoro výhradně z toho, o čem už kurz mluvil: z metadat a objemu – kdo najednou posílá ven mnohem víc dat než dřív a kam.

Krok za krokem

  1. Šifrování říká „zprávu nepřečteš". Steganografie říká „žádná zpráva tu není". Jsou to dvě různé věci.
  2. Klasické provedení je obrázek: text je rozsypaný v datech bodů. Oko rozdíl nepozná a formát i velikost sedí.
  3. Útočník data ven nasype po kouscích do obrázků nebo dotazů. Podezřelý obsah tam není, protože žádný obsah není.
  4. Detekce stojí na metadatech a objemu: kdo najednou posílá ven mnohem víc dat než dřív a kam. Obsah ti nepomůže.

▶ Otevřít v simulátoru

Lekce 2: Proč šifrovat

Co je vidět na kabelu

PCPC2SWFWDPICAWEBNETHTTP: adresa i vyplněné heslo jsou čitelné

Než začneš: tenhle kurz staví na kurzech 1–8 (adresy a maska, brána, porty, DNS, firewall, DPI a sondy) – když ti některý pojem nebude jasný, mrkni napřed do nich. Začneme nepříjemným zjištěním: kabel nic netají. Data, která po síti běží, jsou jen posloupnost bajtů, a kdo se k nim dostane, přečte je přesně tak, jak je odesílatel poslal. Vyzkoušet si to můžeš rovnou v simulátoru: klikni pravým tlačítkem na spoj a zvol Odposlouchávat provoz. Uvidíš, co po tom kabelu putuje – a u starých protokolů to je čtení až nepříjemně srozumitelné. HTTP ukáže celou adresu stránky i vše, co jsi do formuláře vyplnil. Telnet ukáže přihlašovací jméno, heslo i každý příkaz, který jsi na zařízení napsal. FTP se chová stejně: jméno a heslo jdou po drátě v otevřeném textu. Tyhle protokoly nevznikly ze špatnosti – vznikly v době, kdy byla síť malá a všichni v ní si věřili. Kdo dnes potřebuje odposlechnout provoz, nemusí být hacker s drahým vybavením: stačí být na cestě, kudy data tečou. Připojený switch v zasedačce, veřejná Wi-Fi v kavárně, poskytovatel připojení, kdokoli mezi tebou a serverem. Právě proto existuje šifrování: aby ten, kdo se na kabel podívá, viděl jen nesrozumitelnou změť. Zbytek kurzu je o tom, jak se to dělá a – neméně důležité – co to ani tak nezakryje.

Krok za krokem

  1. Po HTTP jde všechno v otevřeném textu: adresa stránky i to, co jsi vyplnil do formuláře. Kdo je na cestě, čte to s tebou.
  2. Telnet a FTP jsou na tom stejně: jméno, heslo i každý napsaný příkaz jdou po drátě tak, jak jsou.
  3. Zkus si to: pravé tlačítko na spoj → Odposlouchávat provoz. Uvidíš přesně to, co by viděl kdokoli na cestě.
  4. Se šifrováním putuje po stejném kabelu totéž spojení, ale odposlech uvidí jen nesrozumitelnou změť bajtů.

Co šifrování řeší a co ne

PCPC2SWFWDPICAWEBNETobsah je skrytý: text, soubor i zadané heslo

Šifrování se v běžné řeči často bere jako kouzelný plášť neviditelnosti: „je to zašifrované, tak je to v bezpečí". Skutečnost je přesnější a je dobré ji znát hned na začátku, aby ses na šifrování nespoléhal tam, kde nepomůže. Šifrování spolehlivě skryje obsah: co jsi napsal, jaký soubor jsi stáhl, jaké heslo jsi zadal, co server odpověděl. Tohle je opravdu silná ochrana a v praxi ji nikdo nerozlomí hrubou silou. Co ale šifrování neskryje, jsou metadata – tedy údaje o spojení samotném: kdo s kým mluvil, kdy to bylo, jak dlouho to trvalo a kolik dat proteklo. Aby data vůbec došla, musí být adresa odesílatele i příjemce čitelná pro každý switch a router po cestě. Šifrovat je nelze, jinak by se paket neměl jak doručit. Z metadat se přitom dá odvodit překvapivě mnoho. Že se počítač účetní každou noc ve tři ráno spojí s adresou v cizině a odešle stovky megabajtů, ti řekne skoro všechno, i když ani jeden bajt nepřečteš. Že se někdo z firmy pravidelně spojuje s webem hledajícím novou práci, taky. A do třetice: šifrování nechrání ani koncové body. Když má útočník tvůj počítač, vidí data ve chvíli, kdy se dešifrují – tedy přesně tam, kde s nimi pracuješ. Šifrování je ochrana na cestě, ne ochrana všeho.

Krok za krokem

  1. Šifrování skryje obsah: co jsi napsal, co jsi stáhl, jaké heslo jsi zadal. Tohle je opravdu silná ochrana.
  2. Adresy zůstat čitelné musí – jinak by paket neměl jak dojít. Každý switch a router po cestě je vidí.
  3. Zůstávají metadata: kdo s kým mluvil, kdy, jak dlouho a kolik dat proteklo. Z toho se dá odvodit hodně.
  4. A koncový bod šifrování nechrání: kdo má tvůj počítač, vidí data ve chvíli, kdy se dešifrují.

Tři vlastnosti

PCPC2SWFWDPICAWEBNETdůvěrnost: nikdo cizí obsah nepřečte

Když se v bezpečnosti mluví o šifrování, myslí se tím skoro vždycky tři různé vlastnosti najednou. Vyplatí se je umět odlišit, protože každou zajišťuje jiná část mechanismu a každá se dá pokazit zvlášť. První je důvěrnost: nikdo cizí nepřečte obsah. To je ta vlastnost, kterou si pod šifrováním představí každý – data se převedou na změť, ze které se bez klíče nedá nic vytáhnout. Druhá je integrita: obsah nikdo po cestě nezmění, aniž by se to poznalo. Kdyby chyběla, útočník by sice tvou zprávu nepřečetl, ale mohl by v ní přehodit bajty a příjemci by dorazilo něco jiného, než jsi poslal. Proto se ke každé zprávě počítá krátký kontrolní údaj, který po jakékoli změně nesedí a příjemce zprávu zahodí. Třetí je autenticita: mluvíš opravdu s tím, s kým si myslíš. Bez ní je i dokonalé šifrování k ničemu – kdyby ses dokonale zašifrovaně bavil s útočníkem, který se za server jen vydává, nepomůže ti to ani trochu. Právě autenticitu řeší certifikáty, kterým je věnovaná polovina tohoto kurzu. Zapamatuj si to jako trojici otázek k jakémukoli spojení: Přečte to někdo? Změní to někdo? A s kým vlastně mluvím? Dobré šifrování odpovídá na všechny tři; když je odpověď jen na první z nich, ochrana je jen zdánlivá.

Krok za krokem

  1. Důvěrnost: obsah se převede na změť, ze které se bez klíče nedá nic vytáhnout. To je první ze tří vlastností.
  2. Integrita: ke zprávě se počítá kontrolní údaj. Když někdo po cestě přehodí bajty, nesedí a příjemce zprávu zahodí.
  3. Autenticita: mluvíš opravdu s tím, s kým si myslíš? Tuhle otázku řeší certifikáty a autority – druhá půlka kurzu.
  4. Trojice otázek ke každému spojení: přečte to někdo, změní to někdo a s kým vlastně mluvím? Dobré šifrování odpoví na všechny.

▶ Otevřít v simulátoru

Lekce 3: Nešifrované protokoly a jejich náhrady

Dvojice, které musíš znát

web: HTTP versus HTTPSHTTP · 80web v otevřeném textuHTTPS · 443tentýž web uvnitř TLSútočník na kabelu: celá stránka i heslo z formulářese šifrováním zbyde jen adresa serveru a objem dat

Většina služeb v síti má dvě podoby: starší, která posílá všechno v otevřeném textu, a novější, která totéž zabalí do šifrování. Simulátor tuhle dvojkolejnost zná – když v testu průchodu pošleš nešifrovanou službu, upozorní tě a rovnou navrhne náhradu. Aby ti to dávalo smysl, projdeme těch šest dvojic, které potkáš nejčastěji. HTTP (port 80) → HTTPS (443): web. Po HTTP by útočník na kabelu viděl celou stránku i heslo, které jsi vyplnil do formuláře. FTP (21) → SFTP nebo FTPS: přenos souborů. Po FTP je vidět jméno, heslo i obsah každého přenášeného souboru. Telnet (23) → SSH (22): vzdálená správa zařízení. Po Telnetu je vidět přihlášení i každý příkaz, který na routeru napíšeš – tedy rovnou klíče od sítě. SMTP (25) → SMTPS, případně STARTTLS: odesílání pošty. Po holém SMTP je vidět odesílatel, příjemce i celé tělo e-mailu. LDAP (389) → LDAPS (636): dotazy do firemního adresáře. Po LDAP je vidět jméno a heslo účtu, kterým se aplikace do adresáře přihlašuje, a odpovědi o uživatelích. SNMP v1 a v2c (161) → SNMPv3: sledování zařízení. Starší verze posílají místo hesla jen řetězec „community" v otevřené podobě, a kdo ho zachytí, může se zařízení ptát sám. Jedna věc na závěr, protože se plete pořád dokola: port sám o sobě nešifruje nic. Číslo 443 je jen dohodnutá zvyklost, kde bývá web přes TLS – šifruje TLS, ne port. (TLS je ta vrstva, která spojení zabalí do šifry; jak přesně funguje, si ukážeme v následujících lekcích – tady stačí vědět, že šifruje ona, ne číslo portu.) Nešifrovanou službu můžeš klidně pustit na 443 a bude čitelná jako předtím.

Krok za krokem

  1. HTTP → HTTPS. Po HTTP by útočník na kabelu viděl celou stránku i heslo, které jsi vyplnil do formuláře.
  2. Telnet → SSH. Po Telnetu je vidět přihlášení i každý příkaz na routeru – tedy rovnou klíče od celé sítě.
  3. FTP → SFTP nebo FTPS. Po FTP je vidět jméno, heslo i obsah každého přenášeného souboru.
  4. SMTP → SMTPS a LDAP → LDAPS. Po holém SMTP je vidět celý e-mail, po LDAP heslo účtu, kterým se aplikace ptá adresáře.
  5. SNMP → SNMPv3. A hlavně: port sám o sobě nešifruje nic. 443 je jen dohodnutá zvyklost – šifruje TLS, ne číslo portu.

Jak poznáš, co ti v síti běží

PCPC2SWFWDPICAWEBNETpodle portu: 23 je Telnet, 21 FTP, 389 LDAP

Vědět, které protokoly mají bezpečnou variantu, je půlka práce. Druhá půlka je zjistit, co ti v síti běží teď – protože nešifrovaná služba se sama nepřihlásí. Existují dvě cesty a obě si zkusíš přímo tady v aplikaci. První je podle portu. Většina služeb sedí na svém obvyklém čísle, takže když v testu průchodu nebo v seznamu otevřených portů uvidíš 23, je to skoro jistě Telnet; 21 je FTP, 161 SNMP, 389 LDAP. Tohle je rychlý přehled, ale není to důkaz: služba se dá pustit na libovolném portu a někdo to občas udělá. Druhá cesta je podle chování, tedy podle toho, co je v provozu opravdu vidět. Když se v odposlechu objeví čitelné jméno a heslo, je jedno, na jakém portu to jelo – je to nešifrované. A tady ti aplikace pomůže sama, na dvou místech. V testu průchodu se u nešifrované služby objeví varování s doporučenou náhradou, takže nemusíš nic hledat zpaměti. A v odposlechu na spoji (pravé tlačítko na spoj) se čitelný provoz označí, takže na první pohled vidíš, který úsek cesty je otevřený. Jeden případ si zaslouží zvláštní zmínku, protože se podle portu poznat nedá: STARTTLS. Spojení začne na stejném, nešifrovaném portu (typicky SMTP na 25) a teprve pak si obě strany řeknou, že přepnou do šifrované podoby. Když je všechno v pořádku, provoz je od té chvíle nečitelný. Když ale druhá strana šifrování nenabídne nebo ho někdo po cestě odstraní, přepnutí se prostě nekoná – a pošta jde dál v otevřeném textu. Proto se u STARTTLS nastavuje, že se má bez šifrování raději neposílat vůbec.

Krok za krokem

  1. Podle portu: 23 je skoro jistě Telnet, 21 FTP, 161 SNMP, 389 LDAP. Rychlý přehled, ale ne důkaz – port se dá zvolit jiný.
  2. V testu průchodu se u nešifrované služby objeví varování rovnou s doporučenou náhradou. Nemusíš si dvojice pamatovat zpaměti.
  3. Podle chování: pravé tlačítko na spoj → Odposlouchávat provoz. Čitelný provoz se označí, takže vidíš, který úsek je otevřený.
  4. STARTTLS je zvláštní případ: stejný port, šifrování se zapne až dodatečně. Když se nezapne, jde provoz dál čitelně.

Migrace bez výpadku

PCPC2SWFWDPICAWEBNET1. zapni bezpečnou variantu vedle té staré

Když v síti najdeš nešifrovanou službu, přijde otázka, co s ní. Odpověď „zakážeme ji v pátek odpoledne" zní rázně a je to nejrychlejší způsob, jak si přidělat práci na víkend. Bezpečná varianta se nasazuje v pořadí, které nikoho neodstřihne, a to pořadí má čtyři kroky. Nejdřív zapni bezpečnou variantu vedle té staré. SSH se dá na routeru zapnout, aniž bys Telnet vypnul; https běží na jiném portu než http. Chvíli tedy poběží obojí naráz a to je v pořádku – je to dočasný stav, ne cílový. Pak ověř, že nová cesta opravdu funguje: přihlas se přes ni, přenes soubor, zkus to i z místa, odkud se běžně připojují ostatní. Tady se nejčastěji ukáže, že chybí certifikát nebo že firewall nový port nepouští. Až potom přepni klienty a aplikace na novou variantu; tenhle krok trvá nejdéle, protože se vždycky najde skript nebo tiskárna, na které nikdo nemyslel. A teprve nakonec starou službu zakaž – vypni ji na zařízení a přidej pravidlo na firewallu, aby se nešifrovaný port nedal použít ani omylem. Proč to opačně bolí, je snadné si domyslet. Když nejdřív vypneš Telnet a teprve pak zjistíš, že SSH na tom zařízení není nastavené, právě sis zavřel dveře do místnosti, ve které je klika jen zevnitř. U vzdáleného routeru to znamená cestu autem. Proto se u správy nikdy neruší poslední funkční přístup dřív, než je nový vyzkoušený. Poslední krok si teď zkus v simulátoru na úloze „Zablokuj Telnet": nešifrovaná správa se má zakázat tak, aby se na zařízení Telnetem opravdu nedalo přihlásit.

Krok za krokem

  1. 1. Zapni bezpečnou variantu vedle. SSH jde zapnout, aniž bys Telnet vypnul. Souběh je dočasný stav, ne cílový.
  2. 2. Ověř novou cestu. Přihlas se, přenes soubor, zkus to i odjinud. Tady se ukáže chybějící certifikát nebo zavřený port na firewallu.
  3. 3. Přepni klienty a aplikace. Tenhle krok trvá nejdéle – vždycky se najde skript nebo tiskárna, na kterou nikdo nemyslel.
  4. 4. Teprve teď zakaž starou službu. Opačně si zavřeš dveře: vypneš Telnet a zjistíš, že SSH nastavené není. U vzdáleného routeru to je cesta autem.

▶ Otevřít v simulátoru

Lekce 4: Jak to funguje bez matematiky

Symetrická šifra

PCPC2SWFWDPICAWEBNETjeden klíč zašifruje i rozšifruje

Nejjednodušší způsob, jak něco zašifrovat, je symetrická šifra: existuje jediný klíč a ten se použije na zašifrování i na rozšifrování. Kdo klíč má, přečte data; kdo ho nemá, vidí změť. Přirovnání, které vydrží: obyčejný zámek s jedním klíčem. Kdo klíč má, dveře otevře i zavře. V praxi se dnes používá především šifra AES, o které stačí vědět dvě věci: je považovaná za bezpečnou a je velmi rychlá. Moderní procesory ji zvládají přímo v hardwaru, takže šifrování velkého objemu dat prakticky nic nestojí – proto se jí šifruje běžný provoz, videohovory i celé disky. Symetrická šifra má ale jednu vadu, a je zásadní: jak dostat klíč k protistraně. Aby ti server mohl posílat šifrovaná data, musíte oba mít stejný klíč – jenže poslat ho po té samé síti, kterou chceš teprve začít chránit, je nesmysl. Kdo tě odposlouchává, klíč zachytí a od té chvíle čte všechno. A poslat ho jinak, například sejít se osobně, je při stovkách serverů, se kterými denně mluvíš, nemožné. Tomuhle problému se říká výměna klíčů a byl po desítky let nejtvrdším oříškem šifrování. Právě ho řeší druhý druh šifry, kterému se říká asymetrická a je na řadě hned v dalším modulu.

Krok za krokem

  1. Symetrická šifra: jeden klíč zašifruje i rozšifruje. Jako obyčejný zámek – kdo klíč má, otevře i zavře.
  2. Používá se hlavně AES: je považovaná za bezpečnou a je velmi rychlá – procesory ji umí přímo v hardwaru.
  3. Vada je zásadní: jak dostat klíč k protistraně? Poslat ho po síti, kterou teprve chceš chránit, je nesmysl.
  4. Kdo klíč po cestě zachytí, čte od té chvíle všechno. Tomuhle problému se říká výměna klíčů – a řeší ho další modul.

Asymetrická šifra

PCPC2SWFWDPICAWEBNETveřejný klíč se smí rozdat komukoli

Asymetrická šifra vypadá na první pohled nesmyslně a na druhý geniálně: místo jednoho klíče má dvojici, která patří k sobě. Jeden z nich je veřejný a smí ho mít kdokoli – klidně ho pověsíš na web. Druhý je soukromý, ten neopustí zařízení, kterému patří. Zásadní je vztah mezi nimi: co zašifruješ veřejným klíčem, otevře jen ten soukromý. A naopak: co zašifruje soukromý klíč, ověří kdokoli veřejným. Z toho plynou dvě různá použití, která se často pletou. První je doručení tajemství: chceš-li něco poslat serveru tak, aby to přečetl jen on, zašifruješ to jeho veřejným klíčem. Kdokoli po cestě má sice ten samý veřejný klíč, ale k rozšifrování je k ničemu. Druhé použití je podpis: server něco zašifruje svým soukromým klíčem a ty to ověříš jeho veřejným. Když ověření vyjde, víš, že to poslal držitel soukromého klíče – a nikdo jiný to udělat nemohl. Přesně takhle fungují certifikáty, ke kterým se dostaneme v lekci o TLS. Háček je jediný, zato praktický: asymetrická šifra je řádově pomalejší než symetrická. Šifrovat jí celé stahování souboru nebo videohovor by bylo nepoužitelné. Proto se v praxi nepoužívá sama – a jak se obě šifry doplňují, je obsahem dalšího modulu.

Krok za krokem

  1. Klíče jsou dva a patří k sobě. Veřejný smí mít kdokoli, soukromý neopustí zařízení, kterému patří.
  2. Chceš poslat tajemství jen serveru? Zašifruj to jeho veřejným klíčem – otevře to jen jeho soukromý.
  3. Druhé použití je podpis: server podepíše soukromým klíčem a ty ověříš veřejným. Nikdo jiný to udělat nemohl.
  4. Háček: asymetrická šifra je řádově pomalejší. Šifrovat jí stahování nebo videohovor by bylo nepoužitelné.

Proč se používají dohromady

PCPC2SWFWDPICAWEBNETasymetricky se na začátku dohodne klíč

Teď se obě šifry spojí a vznikne z nich to, co dnes chrání skoro celý internet. Symetrická šifra je rychlá, ale neumí doručit klíč. Asymetrická umí doručit tajemství, ale je pomalá. Řešení je nasnadě: použij asymetrickou šifru jen jednou, a to na dohodnutí symetrického klíče – a všechno ostatní pak šifruj tím rychlým symetrickým. Přesně tohle dělá TLS, protokol pod zkratkou https. Na začátku spojení proběhne krátká, výpočetně náročnější část, ve které se obě strany domluví na společném klíči a ověří si, s kým mluví. Pak se přepne na symetrickou šifru a zbytek spojení už běží rychle. Přirovnání: asymetrickou šifrou si podáš ruku a bezpečně předáš klíč od trezoru, dál už používáš trezor. Dvě věci k tomu stojí za doplnění. Za prvé se dnes klíč většinou ani neposílá – obě strany si ho spočítají z veřejně vyměněných hodnot tak, že odposlech ho z toho, co viděl, neodvodí. Zní to jako kouzlo, ale je za tím jen matematika, kterou tenhle kurz nepotřebuje. Za druhé se klíč vytváří pro každé spojení nový. Když se ho někdo později zmocní, staré zachycené spojení mu nepomůže – té vlastnosti se říká dopředná bezpečnost (název mate: chrání to, co útočník zachytil dřív – „dopředu" znamená, že ochrana platí i do budoucna, ať se stane cokoli s dnešním klíčem) a je to jeden z hlavních důvodů, proč se staré verze TLS už nepoužívají.

Krok za krokem

  1. Na začátku spojení se asymetricky dohodne společný klíč. Je to krátká, ale výpočetně náročnější část.
  2. Klíč se dnes většinou ani neposílá – obě strany si ho spočítají tak, že odposlech ho z viděného neodvodí.
  3. Pak se přepne na symetrickou šifru a zbytek spojení běží rychle. Podáš si ruku, předáš klíč od trezoru, dál trezor.
  4. Klíč se tvoří pro každé spojení nový. Pozdější únik proto neodhalí dřív zachycený provoz.

▶ Otevřít v simulátoru

Lekce 5: Hashování: otisk, ne šifra

Otisk, ze kterého se zpátky nedostaneš

z dat spočítáš krátký otisk pevné délkyheslo nebo souborlibovolně dlouhý vstupvýpočetvždy stejný postupotiskvždy stejná délkajedno slovo i dvouhodinový film dají výsledek stejné délky

Do téhle chvíle byla řeč o šifrování, tedy o něčem, co se dá zase rozšifrovat. Teď přichází věc, která se šifrováním plete skoro pořád, a přitom je to něco úplně jiného: hash, česky otisk. Otisk vznikne tak, že se data prožene výpočtem, ze kterého vypadne krátký řetězec pevné délky. Ať do něj pošleš jedno slovo nebo film o dvou hodinách, výsledek je vždycky stejně dlouhý. A hlavně: cesta vede jen jedním směrem. Z dat spočítáš otisk snadno, ale z otisku původní data nedostaneš – ne proto, že by to bylo těžké, ale proto, že v otisku prostě nejsou. Je to jako popel z dopisu: vznikl z něj, ale dopis z něj nesložíš. Právě jednosměrnost dělá z otisků ideální nástroj na hesla. Server tvoje heslo vůbec nemusí znát. Při registraci si spočítá jeho otisk a uloží jen ten. Když se přihlašuješ, spočítá otisk znovu z toho, co jsi napsal, a porovná ho s uloženým. Sedí-li, heslo bylo správné. Když někdo takovou databázi ukradne, nemá hesla – má jen otisky. Druhá vlastnost, která se hodí, je citlivost na změnu: drobná změna vstupu udělá úplně jiný otisk. Když v souboru přepíšeš jediné písmeno, výsledek nebude „skoro stejný", ale nepodobný na první pohled. Tuhle vlastnost využívá kontrola integrity, ke které se dostaneme ve třetím modulu.

Krok za krokem

  1. Otisk je krátký výsledek pevné délky. Ať do výpočtu pošleš slovo nebo celý film, výstup je vždycky stejně dlouhý.
  2. Zpátky to nejde: data v otisku prostě nejsou. Proto otisk není šifra – nedá se „rozšifrovat", protože není co.
  3. Server ukládá jen otisk. Při přihlášení ho spočítá znovu a porovná. Kdo databázi ukradne, hesla v ní nenajde.
  4. Změň jediné písmeno a otisk je úplně jiný, ne „skoro stejný". Na tom stojí kontrola, že se soubor po cestě nezměnil.

Sůl a pepř

stejné heslo dá stejný otisk – a to je problémuživatel Aotisk 7c 1e 44 …uživatel Botisk 7c 1e 44 …z ukradené databáze je hned vidět, kdo má heslo shodné s kýma útočníkovi stačí prolomit jedno heslo pro celou skupinu

Ukládat místo hesla jeho otisk je správný nápad, ale samo o sobě to nestačí – a důvod je nenápadný. Otisk se počítá pořád stejně, takže dva stejné vstupy dají stejný výstup. Když si tisíc lidí zvolí totéž oblíbené heslo, mají v databázi tisíckrát stejný řetězec. Útočník, který databázi ukradne, tak rovnou vidí, kdo má heslo shodné s kým – a hlavně nemusí nic počítat znovu. Existují totiž duhové tabulky: obrovské předpočítané seznamy „tenhle otisk patří k tomuhle heslu". Prolomit heslo pak neznamená počítat, ale hledat v seznamu, a to je otázka zlomku vteřiny. Obrana se jmenuje sůl. Ke každému heslu se před výpočtem přimíchá krátký náhodný údaj, u každého uživatele jiný, a uloží se vedle otisku do stejného záznamu. Sůl není tajná – útočník ji s databází ukradne taky, a přesto mu to nepomůže: předpočítaná tabulka platí vždy jen pro jednu sůl, takže by ji musel počítat znovu pro každého uživatele zvlášť. Její smysl tedy není v utajení, ale v tom, že rozbije stejnost: dva lidé se stejným heslem mají díky ní úplně jiné otisky a předpočítaná tabulka je najednou k ničemu, protože by se musela dělat zvlášť pro každou sůl. Doplňkem je pepř: další tajný údaj, který se přimíchá stejně, ale neukládá se do databáze – žije v konfiguraci aplikace nebo v bezpečném úložišti klíčů. Když útočník ukradne jen databázi a k aplikaci se nedostane, chybí mu kus vstupu a nespočítá nic. Sůl je tedy povinnost, pepř příjemné vylepšení navrch.

Krok za krokem

  1. Otisk se počítá pořád stejně, takže stejná hesla dají stejné otisky. Z ukradené databáze je to vidět na první pohled.
  2. Duhová tabulka je předpočítaný seznam „otisk → heslo". Lámání se tím změní z počítání na hledání – otázka okamžiku.
  3. Sůl je náhodný údaj u každého uživatele jiný. Tajná být nemusí; její smysl je, že rozbije stejnost otisků.
  4. Pepř je tajný údaj mimo databázi – v konfiguraci aplikace. Kdo ukradne jen databázi, nemá celý vstup.

Otisk jako kontrola integrity

stejný soubor dá pokaždé stejný otiskotisk na stráncezveřejní ho vydavatel souboruotisk po staženíspočítáš si ho sámsedí-li oba, soubor cestou nikdo nezměnil ani se nepoškodilproto se u souborů ke stažení zveřejňuje kontrolní součet

Otisky se nepoužívají jen na hesla. Druhé velké použití je kontrola integrity, tedy odpověď na otázku, jestli je soubor pořád ten, který někdo vydal. Princip plyne přímo z toho, co už víš: stejná data dají stejný otisk a drobná změna dá otisk úplně jiný. Proto se u souborů ke stažení zveřejňuje kontrolní součet. Stáhneš soubor, spočítáš si z něj otisk sám a porovnáš ho s tím, který je uvedený na stránce. Sedí-li, soubor cestou nikdo nezměnil ani se cestou nepoškodil. Nesedí-li, nespouštěj ho. Stejnou úvahu jsi potkal už u tří vlastností v předchozí lekci – integritu zpráv v TLS hlídá právě krátký kontrolní údaj počítaný z obsahu. Zbývá důležitá poznámka o tom, že ne každý otisk je dnes k něčemu. Starším funkcím MD5 a SHA-1 se podařilo najít kolize – dvojice různých vstupů se stejným otiskem. Pro kontrolu integrity je to smrtelné: útočník může připravit podvrženou verzi souboru, která má stejný kontrolní součet jako ta pravá. Proto se dnes používá SHA-256. A na hesla platí ještě jedna zvláštnost: tam je rychlý výpočet naopak nevýhoda, protože útočník s ukradenou databází zkouší hesla po miliardách. Používají se proto záměrně pomalé funkce, jako je bcrypt nebo argon2, které jsou navržené tak, aby jeden výpočet něco stál. Pravidlo do praxe zní: SHA-256 na integritu, bcrypt nebo argon2 na hesla, MD5 a SHA-1 nikam.

Krok za krokem

  1. Kontrolní součet: vydavatel zveřejní otisk, ty si ho po stažení spočítáš a porovnáš. Sedí-li, soubor je nezměněný.
  2. Když otisky nesedí, soubor je jiný, než jaký vydavatel vydal. Nespouštěj ho – ať už jde o poškození, nebo o podvrh.
  3. U MD5 a SHA-1 se dají najít kolize: dva různé soubory se stejným otiskem. Na kontrolu integrity už tedy nestačí.
  4. Pravidlo do praxe: SHA-256 na integritu, bcrypt nebo argon2 na hesla – ty jsou schválně pomalé. MD5 a SHA-1 nikam.

▶ Otevřít v simulátoru

Lekce 6: TLS v praxi

Co se stane při otevření https

PCPC2SWFWDPICAWEBNET1) prohlížeč řekne, co umí a na jaké jméno se ptá

Napíšeš do prohlížeče adresu začínající https:// a než se stránka objeví, proběhne rozhovor, kterému se říká handshake – v překladu podání ruky. Trvá zlomek vteřiny a má čtyři kroky, které si projdeme bez jediného vzorce. První krok: prohlížeč se ozve serveru a řekne, jaké verze TLS a jaké šifry umí, a hlavně na které jméno se ptá. Jméno je důležité, protože na jedné adrese může běžet víc webů. Druhý krok: server odpoví, kterou šifru z nabídky vybral, a pošle svůj certifikát – tedy dokument, ve kterém stojí jeho jméno, jeho veřejný klíč a podpis autority, která to potvrzuje. Třetí krok: prohlížeč certifikát ověří (sedí jméno? platí? podepsal ho někdo, komu věřím?) a obě strany si dohodnou společný symetrický klíč. Kdyby ověření nevyšlo, uvidíš varování a k dalšímu kroku vůbec nedojde. Čtvrtý krok: obě strany si potvrdí, že mají stejný klíč, a od téhle chvíle je celé spojení šifrované – teprve teď odchází požadavek na stránku. Stojí za to si uvědomit, co z toho plyne prakticky: zámeček v prohlížeči neznamená „tenhle web je poctivý". Znamená jen „spojení je šifrované a certifikát odpovídá jménu, které jsi zadal". Podvodný web může mít platný certifikát úplně stejně jako banka.

Krok za krokem

  1. Prohlížeč se ozve: tyhle verze a šifry umím a ptám se na tohle jméno. Na jedné adrese může běžet víc webů.
  2. Server odpoví, kterou šifru vybral, a pošle svůj certifikát: jméno, veřejný klíč a podpis autority.
  3. Prohlížeč certifikát ověří – sedí jméno, platí, podepsal ho někdo důvěryhodný? – a strany si dohodnou klíč.
  4. Obě strany si potvrdí klíč a teprve teď odchází požadavek – už šifrovaně. Zámeček ale neznamená „poctivý web".

Co je v certifikátu

PCPC2SWFWDPICAWEBNETuvnitř: jméno, veřejný klíč, platnost, podpis

Certifikát zní tajemně, ale je to obyčejný datový soubor s několika údaji a jedním podpisem. Uvnitř najdeš čtyři podstatné věci. Jméno, pro které certifikát platí – například konkrétní doména nebo skupina domén. Veřejný klíč serveru, tedy tu polovinu dvojice, kterou smí mít kdokoli. Dobu platnosti, od kdy do kdy je certifikát považovaný za dobrý; dnes bývá krátká, řádově měsíce. A podpis autority, která to všechno stvrdila – kdyby chyběl, mohl by si takový soubor vyrobit kdokoli o sobě. Podpis je právě to použití asymetrické šifry, které jsi viděl v druhé lekci: autorita podepsala svým soukromým klíčem a ty ověříš jejím veřejným. Slovo platný pak znamená, že sedí tři věci najednou. Za prvé jméno souhlasí s adresou, kterou jsi opravdu zadal. Za druhé doba platnosti běží – nezačíná zítra a neskončila minulý týden. Za třetí podpis vede k autoritě, které tvoje zařízení věří; seznam takových autorit má prohlížeč i operační systém v sobě. Když kterákoli z těch tří podmínek neplatí, spojení se nesmí považovat za ověřené. A ještě jednou to nejdůležitější, protože se to plete i lidem z oboru: platný certifikát potvrzuje jméno, ne poctivost. Že web má správně vystavený certifikát, neříká vůbec nic o tom, co s tvými daty udělá.

Krok za krokem

  1. V certifikátu jsou čtyři podstatné věci: jméno, veřejný klíč, doba platnosti a podpis autority.
  2. Podpis je použití asymetrické šifry: autorita podepsala soukromým klíčem, ty ověříš jejím veřejným.
  3. Platný znamená tři věci najednou: jméno sedí s adresou, doba platnosti běží a podpis vede k důvěryhodné autoritě.
  4. Pozor: platný certifikát potvrzuje jméno, ne poctivost. Podvodný web ho může mít úplně stejně jako banka.

Proč prohlížeč křičí

PCPC2SWFWDPICAWEBNETvypršel: většinou zapomenutá obnova

Varování o certifikátu vídá každý a většina lidí ho odklikne, protože nerozumí tomu, na co se jich prohlížeč vlastně ptá. Přitom jde vždycky o jednu ze tří konkrétních závad – a každá znamená něco jiného. Vypršel. Doba platnosti skončila. Ve valné většině případů to je provozní chyba: někdo zapomněl na obnovu. Riziko samo o sobě malé, ale je to varovný signál o tom, jak se o server pečuje – a nedá se odlišit od situace, kdy certifikát vypršel proto, že server už nikdo nespravuje. Nesedí jméno. Certifikát je vystavený na jinou doménu, než na kterou ses ptal. Tohle je nejvážnější ze tří: přesně takhle vypadá pokus někoho vydávat se za cizí server. Někdy jde jen o přehmat správce (chybí varianta jména), ale rozpoznat obojí od sebe zvenku nejde. Neznámá autorita. Certifikát je podepsaný někým, koho tvoje zařízení nezná – typicky je self-signed, tedy podepsaný sám sebou, nebo pochází z interní firemní autority, kterou zařízení nemá v seznamu. Šifrování v takovém spojení běží normálně, ale autenticita chybí: nikdo nezaručí, že na druhé straně je ten, koho čekáš. Praktické pravidlo pro všechny tři případy zní stejně: varování nikdy neodklikávej u ničeho, kam se přihlašuješ nebo kde zadáváš citlivá data. A když je server tvůj, neuč uživatele klikat „pokračovat" – uč se raději hlídat obnovu.

Krok za krokem

  1. Vypršel: doba platnosti skončila, obvykle proto, že někdo zapomněl na obnovu. Riziko malé, signál o péči velký.
  2. Nesedí jméno: certifikát je na jinou doménu. Takhle vypadá pokus vydávat se za cizí server – nejvážnější ze tří.
  3. Neznámá autorita (často self-signed): šifrování běží, ale autenticita chybí – nikdo neručí za druhou stranu.
  4. Pravidlo pro všechny tři: varování neodklikávej tam, kde se přihlašuješ nebo zadáváš citlivá data.

▶ Otevřít v simulátoru

Lekce 7: Certifikáty a autority

Kdo komu věří

PCPC2SWFWDPICAWEBNETkořenová autorita: podepsaná sama sebou

Zbývá odpovědět na otázku, která visí ve vzduchu od minulé lekce: proč vlastně věříš podpisu autority, kterou jsi v životě neviděl? Odpověď se jmenuje řetěz důvěry a stojí na jednoduchém nápadu: důvěra se nepřenáší přímo, ale po článcích. Na začátku řetězu je kořenová autorita. Její certifikát je podepsaný sám sebou a nikdo ho nepotvrzuje – věří se mu proto, že ho tvůj prohlížeč a operační systém mají zabudovaný v seznamu důvěryhodných autorit. Ten seznam je výsledkem auditů a pravidel; ty ho nespravuješ, ale můžeš do něj přidávat vlastní položky, což se za chvíli bude hodit. Kořenová autorita nepodepisuje běžné certifikáty přímo – její soukromý klíč je příliš cenný, aby se používal denně. Místo toho podepíše mezilehlé autority a ty pak vystavují certifikáty konkrétním serverům. Vzniká tak řetěz: certifikát serveru ← mezilehlá autorita ← kořen. Prohlížeč jde po řetězu odspodu nahoru a hledá článek, který zná. Když ho najde a všechny podpisy sedí, spojení je ověřené. Praktický důsledek, o který se v provozu zakopává nejčastěji: server musí posílat i mezilehlé certifikáty. Když je správce zapomene nastavit, řetěz se přeruší a část zařízení hlásí chybu, zatímco jiná – která si mezičlánek náhodou pamatuje z dřívějška – ne. Odtud pochází klasická věta „mně to funguje".

Krok za krokem

  1. Na začátku je kořenová autorita. Její certifikát je podepsaný sám sebou a věří se mu proto, že je v seznamu.
  2. Kořen nepodepisuje servery přímo. Podepíše mezilehlou autoritu a ta teprve vystaví certifikát konkrétnímu serveru.
  3. Prohlížeč jde po řetězu nahoru a hledá článek, který zná. Když ho najde a podpisy sedí, spojení je ověřené.
  4. Když server neposílá mezilehlé certifikáty, řetěz se přeruší. Část zařízení hlásí chybu, jiná ne – odtud „mně to funguje".

Interní autorita ve firmě

PCPC2SWFWDPICAWEBNETvlastní autorita pro služby, které venku nejsou

Ve firmě běží spousta věcí, které nejsou dostupné z internetu: webové rozhraní switche, interní systém, tiskový server, testovací prostředí. Veřejná autorita jim certifikát nevystaví, protože nemá jak ověřit jméno, které v internetu neexistuje. Firmy proto často provozují vlastní certifikační autoritu. Princip je stejný jako u veřejné: vytvoří se kořenový certifikát, ten se rozdá do všech firemních zařízení (typicky centrální správou) a od té chvíle jim interní certifikáty připadají důvěryhodné. Odměna je slušná: interní služby přestanou hlásit varování, přestaneš uživatele učit odklikávat chyby a získáš i způsob, jak vydávat certifikáty zařízením a lidem, ne jen serverům. Cena za to je ale reálná a je poctivé ji znát dopředu. Za prvé soukromý klíč kořene je klenot: kdo ho ukradne, může se vydávat za jakoukoli interní službu a všechna firemní zařízení mu uvěří. Musí tedy být uložený mimo běžný provoz, ideálně offline. Za druhé je to provoz navíc: vydávání, obnova, evidence, revokace – bez automatizace se z toho rychle stane zapomenutá agenda a certifikáty začnou tiše vypršovat. A za třetí interní kořen platí jen doma: návštěvník ani zákazník ho v zařízení nemá, takže interní autorita se nikdy nesmí použít pro službu, na kterou chodí lidé zvenku. Pro ty je pořád správnou volbou veřejná autorita.

Krok za krokem

  1. Interní služby veřejná autorita nepokryje – jejich jména v internetu neexistují. Firma proto provozuje vlastní autoritu.
  2. Kořenový certifikát se rozdá do firemních zařízení. Od té chvíle jim interní certifikáty připadají důvěryhodné.
  3. Interní rozhraní přestanou hlásit varování a nemusíš uživatele učit odklikávat chyby. To je hlavní odměna.
  4. Cena: soukromý klíč kořene je klenot, je to provoz navíc – a venku ti interní kořen nepomůže, tam patří veřejná autorita.

Kdy certifikát selže

PCPC2SWFWDPICAWEBNETvypršení: služba se rozbije, aplikace se nepřipojí

Certifikát není věc, kterou nastavíš a zapomeneš. Selhává, a to třemi způsoby, které se v praxi liší závažností i tím, co s nimi jde dělat. První a nejčastější je vypršení. Certifikát má omezenou dobu platnosti a ta se dnes záměrně zkracuje – kratší platnost znamená menší škodu, když se něco pokazí. Vypršelý certifikát ale znamená rozbitou službu: uživatelé vidí varování a aplikace, které varování odklikávat neumí, se prostě přestanou připojovat. Obrana je nudná a účinná: automatická obnova a hlídání termínů v monitoringu, ne v hlavě. Druhé selhání je únik soukromého klíče. Když se útočník dostane k soukromému klíči serveru, může se za ten server vydávat a nikdo si toho nevšimne – certifikát je přece platný. Tohle je nejvážnější případ, protože samotné šifrování funguje dál a chybí právě to, na čem stojí důvěra. Třetí věc je revokace, tedy prohlášení certifikátu za neplatný ještě před koncem platnosti. Používá se přesně po úniku klíče nebo když se služba ruší. Problém revokace je praktický: prohlížeč se musí nějak dozvědět, že certifikát už neplatí, a to buď stažením seznamu zneplatněných certifikátů, nebo dotazem na autoritu. Obojí je pomalé a nespolehlivé, takže se v praxi hodně spoléhá na to, že certifikát vyprší sám. To je taky důvod, proč jsou dnes doby platnosti krátké: krátká platnost je lepší než rychlá revokace.

Krok za krokem

  1. Vypršení je nejčastější: uživatelé vidí varování a aplikace, které ho odklikávat neumí, se přestanou připojovat.
  2. Únik soukromého klíče je nejvážnější: útočník se může vydávat za server a certifikát přitom dál platí.
  3. Revokace zneplatní certifikát dřív. Jenže prohlížeč se to musí dozvědět – a to je pomalé a nespolehlivé.
  4. Proto se dnes dělá krátká platnost a automatická obnova: krátká platnost je lepší než rychlá revokace.

▶ Otevřít v simulátoru

Lekce 8: Kde šifrování nestačí

Útočník na koncovém bodu

PCPC2SWFWDPICAWEBNETcesta je chráněná dokonale

Tahle lekce je o mezích šifrování a začneme tou nejtvrdší: šifrování nechrání napadený počítač. Důvod je logický, ne technický. Data se šifrují proto, aby je nikdo nepřečetl po cestě. Na obou koncích ale musí být čitelná, jinak by nešla použít – prohlížeč musí umět stránku vykreslit, ty musíš vidět text zprávy. Kdo tedy sedí na koncovém zařízení, vidí totéž co ty, a je mu úplně jedno, jak dokonalá šifra to spojení chránila. Praktický důsledek je nepříjemný. Napadený počítač se může přihlásit do internetového bankovnictví, přečíst obsah stránky, zapsat, co uživatel píše na klávesnici, a odeslat to pryč – ve zcela korektně šifrovaném spojení. Sonda IDS ani firewall po cestě neuvidí nic zvláštního, protože z jejich pohledu jde o běžný šifrovaný provoz na běžný port. Naopak: útočníkovi šifrování pomáhá, protože skryje, co odesílá. Přesně proto se v kurzu o reakci na incident tolik mluvilo o metadatech a tocích – když nevidíš obsah, zbývá dívat se na to, kdo s kým a kdy mluví. Nedělej z toho ale závěr, že šifrování je zbytečné. Závěr zní jinak a je to jeden z hlavních výstupů celého kurzu: šifrování je jedna vrstva obrany, ne celá obrana. Chrání data na cestě dokonale a všechno ostatní ponechává na ochraně koncových zařízení, kontrole přístupu a monitoringu.

Krok za krokem

  1. Cesta je chráněná dokonale: po kabelu nikdo obsah nepřečte. Na obou koncích ale čitelný být musí.
  2. Kdo sedí na napadeném počítači, vidí totéž co uživatel: obsah stránky i to, co píše na klávesnici.
  3. A odešle to ven v korektně šifrovaném spojení. Sonda ani firewall po cestě nevidí nic zvláštního.
  4. Závěr: šifrování je jedna vrstva obrany, ne celá obrana. Zbytek je na ochraně zařízení, přístupech a monitoringu.

Dešifrování na firewallu

PCPC2SWFWDPICAWEBNETspojení se ukončí u firewallu, ne až u webu

V kurzu o pokročilé bezpečnosti jsi viděl, že DPI se dívá do obsahu paketů a hledá v něm útoky. Jenže když je provoz šifrovaný, DPI nevidí nic než změť – a to je pro obranu problém, protože dnes je šifrované skoro všechno včetně stahování škodlivého softwaru a komunikace s řídicím serverem útočníka. Firmy proto sahají po řešení, kterému se říká TLS inspection: firewall spojení ukončí u sebe, obsah rozšifruje, prohlédne, znovu zašifruje a pošle dál. Aby to fungovalo, musí firewall pro každý navštívený web vyrobit vlastní certifikát – a aby ho prohlížeče přijaly, musí být firemní zařízení nastavená tak, že věří interní autoritě z minulé lekce. Ano, je to přesně to, čemu se v učebnicích říká útok „člověk uprostřed", jen provozovaný vlastní firmou a se souhlasem majitele zařízení. Cena za to je vysoká a je poctivé ji vyjmenovat. Soukromí: firewall vidí obsah veškeré komunikace zaměstnanců, tedy i bankovnictví a zdravotní údaje; proto se citlivé kategorie z inspekce běžně vyjímají. Riziko: firewall se stává místem, kde je celý provoz firmy v otevřené podobě – a jeho kompromitace je katastrofa. Provoz: některé aplikace inspekci odmítají, protože si hlídají, jaký certifikát dostaly. A výkon: dešifrovat a znovu zašifrovat všechno stojí hodně sil. Rozumné nasazení proto inspekci zapíná cíleně, ne plošně.

Krok za krokem

  1. Při TLS inspection spojení nekončí až u webu, ale u firewallu. Ten ho rozšifruje a podívá se dovnitř.
  2. Firewall pak naváže druhé spojení ven a data přepošle. Prohlížeč přitom dostane certifikát vyrobený firewallem.
  3. Teprve teď DPI vidí obsah a může v něm najít škodlivý soubor nebo komunikaci s řídicím serverem útočníka.
  4. Cena je vysoká: soukromí, výkon, odmítající aplikace – a firewall, kde je celý provoz firmy otevřený. Proto cíleně, ne plošně.

Metadata a analýza provozu

PCPC2SWFWDPICAWEBNETkrátká pravidelná spojení pořád na stejnou adresu

K metadatům jsme se dostali hned v první lekci; teď je čas ukázat, jak silná jsou. Když je obsah zašifrovaný, zbývá pozorovat vzorec provozu: kdo se s kým spojuje, jak často, v jakou dobu, jak dlouho spojení trvá a kolik dat kterým směrem teče. Z toho se dá odvodit překvapivě mnoho. Krátká pravidelná spojení každých pár minut na stále stejnou adresu vypadají jako komunikace s řídicím serverem útočníka, i když z nich nepřečteš ani písmeno. Dlouhé spojení s velkým objemem směrem ven uprostřed noci vypadá jako odesílání dat. Nová dvojice „tenhle počítač mluví s tímhle serverem", která se v síti nikdy dřív neobjevila, vypadá jako pohyb útočníka. A do třetice: i to, na jaké jméno se klient ptal, je na začátku spojení často vidět, a dotazy na DNS jsou vidět skoro vždycky. Klíčové je pochopit, že tenhle pohled máš k dispozici stejně jako útočník: přehled spojení v simulátoru ukazuje přesně to, co vidí kdokoli na cestě. Má to dvě strany. Pro obranu je to dobrá zpráva – i v plně šifrované síti se dá detekovat spousta věcí, aniž bys musel cokoli dešifrovat, a je to výrazně levnější a méně invazivní než TLS inspection. Pro soukromí je to zpráva špatná: šifrování obsahu není anonymita. Kdo vidí tvůj provoz, ví, s kým mluvíš a kdy – a to bývá polovina příběhu.

Krok za krokem

  1. Krátká pravidelná spojení každých pár minut na stejnou adresu vypadají jako řídicí kanál útočníka – i bez čtení obsahu.
  2. Nová dvojice „tenhle počítač mluví s tímhle serverem" vypadá jako pohyb útočníka. Přehled spojení ji ukáže.
  3. Objem a čas prozradí hodně: dlouhé spojení s velkým odesíláním ven uprostřed noci vypadá jako únik dat.
  4. Pro obranu dobrá zpráva, pro soukromí špatná: šifrování obsahu není anonymita. Mapa spojení zůstává čitelná.

▶ Otevřít v simulátoru

Lekce 9: Praxe a shrnutí

Co šifrovat přednostně

PCPC2SWFWDPICAWEBNETspráva zařízení: SSH a https místo Telnetu

Šifrovat úplně všechno naráz nejde – tedy jde, ale v reálné firmě to znamená měsíce práce a řadu rozbitých věcí po cestě. Proto se začíná tam, kde je poměr přínosu a námahy nejlepší. První je správa zařízení. Přihlašování na switche, routery, firewally a servery patří k tomu nejcennějšímu v síti: kdo ho odposlechne, získá rovnou administrátorský přístup. Telnet se proto nahrazuje SSH, webová rozhraní se přepnou na https a stará správa se vypne, ne jen „nepoužívá". Druhé jsou hesla a přihlašování obecně. Každý formulář, kde uživatel zadává jméno a heslo, musí běžet přes https – a to i uvnitř firemní sítě, protože útočník uvnitř je pořád ten nejčastější scénář. Třetí jsou zálohy a přenosy dat. Záloha je kopie všeho cenného na jednom místě; když putuje po síti v otevřené podobě nebo leží nezašifrovaná na disku, je to nejlevnější možný cíl. A čtvrté je všechno, co jde přes cizí síť: pobočky, práce z domova, veřejná Wi-Fi. Tam patří VPN nebo aspoň důsledné https. Užitečná zkratka pro rozhodování: seřaď služby podle toho, co by odposlech přinesl útočníkovi, a začni odshora. Ne podle toho, co se šifruje nejsnáz – to je cesta, jak mít krásně zabezpečený tiskový server a Telnet na hlavním switchi.

Krok za krokem

  1. Správa zařízení je první: kdo ji odposlechne, získá administrátorský přístup. Telnet pryč, SSH a https místo něj.
  2. Hesla a přihlašování patří na https i uvnitř firmy: útočník uvnitř sítě je pořád ten nejčastější scénář.
  3. Zálohy jsou kopie všeho cenného na jednom místě. Nešifrovaná záloha je nejlevnější možný cíl útoku.
  4. A všechno, co jde přes cizí síť: pobočky, práce z domova, veřejná Wi-Fi. Tam patří VPN nebo důsledné https.

Časté chyby

PCPC2SWFWDPICAWEBNETself-signed na produkci: uživatelé odklikávají

Chyby v šifrování mají jednu společnou vlastnost: vypadají jako by bylo hotovo. Adresa začíná https, zámeček svítí, nikdo si nestěžuje – a přitom ochrana nefunguje tak, jak si všichni myslí. Čtyři nejčastější stojí za jmenování. Self-signed certifikát na produkci. Vznikne obvykle při testu a nikdo ho už nevymění. Šifrování běží, ale uživatelé se naučí odklikávat varování – a tím je ochrana proti vydávání se za server prakticky zrušená, protože podvod už nikdo nepozná. Zapomenutá obnova. Certifikát tiše vyprší o víkendu a v pondělí ráno nefunguje aplikace, na kterou nikdo nemyslel. Řešení je automatická obnova a hlídání termínů v monitoringu, ne v kalendáři jednoho člověka. Šifrování jen zvenku. Klasika: web má krásné https z internetu, ale za firewallem jde provoz na aplikační server v otevřené podobě, správa běží přes Telnet a databáze mluví bez šifrování. Útočník uvnitř má rázem všechno – přesně proto se v kurzu o Zero Trustu tvrdí, že vnitřní síť není bezpečná zóna. A staré verze a slabé šifry: server, který má léta zapnuté zastaralé protokoly, nabízí útočníkovi cestu, jak spojení stlačit do něčeho slabšího. Kontrola je nudná, ale rychlá: projdi, co server nabízí, a vypni, co tam nemá být.

Krok za krokem

  1. Self-signed na produkci: šifrování běží, ale uživatelé se naučí odklikávat varování – a podvod pak nepoznají.
  2. Zapomenutá obnova: certifikát vyprší o víkendu a v pondělí nefunguje aplikace, na kterou nikdo nemyslel.
  3. Šifrování jen zvenku: https z internetu, ale uvnitř Telnet a nešifrovaná databáze. Útočník uvnitř má všechno.
  4. Staré verze a slabé šifry nabízejí cestu, jak spojení stlačit do slabšího. Projdi, co server nabízí, a vypni zbytek.

Kontrolní seznam

PCPC2SWFWDPICAWEBNETje https všude, kde se zadává heslo?

Na závěr kurzu si shrňme šifrování do seznamu, který projdeš za pár minut a který ti řekne, jak na tom jsi dnes. Běží správa zařízení jen šifrovaně? Zkontroluj, že Telnet je vypnutý, ne jen nepoužívaný, a že webová rozhraní jdou přes https. Tohle je jediná položka, kterou nesmíš odložit. Je https všude, kde se zadává heslo? Včetně vnitřních aplikací – útočník uvnitř sítě je nejčastější scénář. Víš, kdy ti vyprší certifikáty? Pokud odpověď zní „někdo to hlídá", tak to nikdo nehlídá; patří to do monitoringu spolu s automatickou obnovou. Jsou certifikáty od autority, které zařízení opravdu věří? Self-signed na produkci učí uživatele odklikávat varování a tím ruší ochranu proti podvodu. Ukládají se hesla jako otisk se solí? Nikde by neměla ležet v otevřené podobě ani jen jako holý otisk bez soli; na hesla patří bcrypt nebo argon2, ne MD5 a SHA-1. Šifruješ i uvnitř? Projdi cestu od uživatele k databázi a hledej úsek, kde jsou data otevřená. Víš, co prozradí metadata? Otevři přehled spojení a podívej se na dvojice „kdo s kým mluví" – vidíš přesně to, co vidí útočník. A poslední otázka, kterou si lidé nekladou: co bys viděl, kdyby ti někdo poslouchal na kabelu právě teď? Zkus si odposlech na spoji a projdi provoz. Když v něm najdeš čitelné heslo, máš první položku do plánu – a víš, čím začít.

Krok za krokem

  1. Je https všude, kde se zadává heslo? Včetně vnitřních aplikací – útočník uvnitř sítě je nejčastější scénář.
  2. Běží správa jen šifrovaně? Telnet má být vypnutý, ne jen nepoužívaný. Tuhle položku neodkládej.
  3. Víš, kdy ti vyprší certifikáty? Když odpověď zní „někdo to hlídá", nehlídá to nikdo. Patří to do monitoringu.
  4. A poslední: co bys viděl, kdyby ti někdo teď poslouchal na kabelu? Zkus odposlech – čitelné heslo je první úkol do plánu.

▶ Otevřít v simulátoru