1 · Zabezpečení dat
Zabezpečení dat
- Tohle je úvod do kyberbezpečnosti CS50.
- Minulý týden jsme se zaměřili na účty.
Hesla
- Zaměřili jsme se na naši odpovědnost za bezpečnost vlastních dat.
- Do ukládání našich dat se ale vždy zapojuje také třetí strana.
- Představ si, že systém ukládá uživatelská jména a hesla do textového souboru.
- A představ si, že k takovému souboru získá přístup útočník.
- Můžeme snížit riziko ukládání hesel v otevřeném, nešifrovaném textu?
Hashování
- Hashování je metoda, která převádí otevřený text na hůře čitelnou hashovou hodnotu.
- Hashovací funkce tedy vytváří hash. Zadáme jí heslo a výsledkem je jeho hashová hodnota.
- Původní poznámky uvádějí, že bez přístupu ke konkrétní hashovací funkci nemůže útočník získat správné heslo.
- Obecně chceme, aby výstup hashovací funkce působil velmi nesrozumitelně a neměl zjevný vzor. Útočníci tak nemohou jednoduše odhadnout, co algoritmus dělá.
- Pokud server ukládá uživatelská jména a hashové hodnoty, nemůže se útočník k účtům na serveru dostat tak snadno.
- Když uživatel zadá heslo při přihlášení, systém je znovu předá hashovacímu algoritmu a vytvořený hash porovná s uloženým.
- Zvyšujeme tím náklady, čas a prostředky potřebné k získání přístupu k chráněným datům.
- Slovníkový útok ale může postupně předávat hashovací funkci jednu hodnotu ze slovníku za druhou a snažit se ochranu prolomit.
- Útok hrubou silou může zase zkoušet všechny kombinace znaků a hledat správné heslo.
- Další hypotetickou hrozbou jsou rainbow tables: tabulky předem vypočítaných hashových hodnot. Úplné uložení všech potenciálních hodnot by však vyžadovalo terabajty, nebo dokonce petabajty kapacity.
- Problém nastává také tehdy, když více uživatelů používá stejné heslo a jeho hash je naprosto stejný. Jak to vyřešit?
Přidávání soli (salting)
- Salting je postup, při němž k vstupu hashovací funkce přidáme další hodnotu, „sůl“, a změníme tím výsledný hash.
- Použití různé soli téměř zaručuje, že uživatelé dostanou různé hashe i v případě, že mají stejné heslo.
- Náklady útočníků na prolomení hesel se tím znovu zvyšují.
- NIST doporučuje zapamatovávané tajné údaje hashovat a přidávat k nim sůl.
Jednosměrné hashovací funkce
- Jednosměrné hashovací funkce jsou programy, které přijmou řetězec libovolné délky a vrátí hash pevné délky.
- Držitel samotného hashe a hashovací funkce z nich nemůže přímo obráceným výpočtem získat původní heslo.
- V některých systémech používajících jednosměrné hashování mohou různá hesla vést ke stejné hashové hodnotě.
Kódy
- Kryptografie se zabývá bezpečným přenosem dat mezi stranami.
- Jedním ze způsobů zabezpečení dat jsou kódy.
- Kódy převádějí slova, která chceme sdělit, na méně srozumitelnou posloupnost slov.
- Kódování převádí otevřený text na kódovaný text.
- Dekódování je opačný postup: převádí kódovaný text zpět na otevřený.
Šifry
- Šifrování převádí otevřený text na šifrový text.
- Tento postup se označuje jako encryption, tedy zašifrování. Opačný postup je decryption, dešifrování.
Klíče
- Klíče jsou velmi dlouhé řetězce používané při šifrování a dešifrování.
- Kryptografie s tajným klíčem předává šifrovacímu algoritmu klíč a otevřený text. Výstupem je šifrový text.
- Odesílatel a příjemce v tomto případě sdílejí tajemství: oba mají potřebný klíč i přístup k šifrovacímu a dešifrovacímu algoritmu.
Kryptoanalýza
- Kryptoanalýza je oblast výzkumu a praxe zaměřená na zkoumání šifrování a dešifrování dat, zejména možností, jak jejich ochranu analyzovat.
- Už tím, že studuješ tento kurz, možná projevuješ vlastní zájem o kryptoanalýzu.
Kryptografie s veřejným klíčem
- Představ si, že se odesílatel a příjemce zabezpečených dat nikdy osobně nesetkali. Jak mezi takovými stranami vytvořit sdílené tajemství?
- Tento problém řeší šifrování s veřejným klíčem, nazývané také asymetrické šifrování.
- Odesílatel nejprve předá algoritmu veřejný klíč a otevřený text. Výsledkem je šifrový text.
- Příjemce potom předá algoritmu svůj tajný klíč a šifrový text. Výsledkem je dešifrovaný text.
- RSA je příkladem šifrovacího standardu, který tento postup popisuje.
Výměna klíčů
- Alternativní algoritmus Diffie–Hellman slouží k výměně klíčů.
- Používá dohodnutou hodnotu
ga prvočíslop. - Strany A a B získají sdílenou tajnou hodnotu označovanou
s. - Každá ze stran má také vlastní soukromý klíč.
Digitální podpisy
- Veřejné a soukromé klíče můžeme využít také k podepisování dokumentů.
- Dokument lze podepsat ve dvou krocích.
- Nejprve zprávu, tedy obsah dokumentu, předáme hashovací funkci a získáme hashovou hodnotu.
- Potom předáme soukromý klíč a hash algoritmu pro digitální podpis. Výsledkem je digitální podpis.
- Příjemce může podpis ověřit tak, že obsah dokumentu také předá hashovací funkci. Potom použije veřejný klíč a obdržený podpis v ověřovacím postupu. V původním zjednodušeném popisu získá hash, který se má shodovat s dříve vypočítanou hodnotou.
Přístupové klíče (passkeys)
- Passkeys a technologie WebAuthn jsou stále dostupnější.
- Uživatelská jména a hesla se tak mají postupně používat méně často.
- Passkey souvisí se zařízením. Když například na telefonu navštívíš web, který vyžaduje vytvoření účtu, telefon vytvoří veřejný a soukromý klíč.
- Veřejný klíč potom pošleš webu.
- Při dalších přihlášeních z tohoto zařízení nebo pomocí služby synchronizující passkeys mezi zařízeními využiješ soukromý klíč společně s výzvou, tzv. challenge. Algoritmus vytvoří podpis.
Šifrování při přenosu
- Šifrování při přenosu chrání data, když putují datovými sítěmi tam a zpět.
- Představ si dvě strany, které spolu chtějí komunikovat.
- Chceme zabránit třetí straně, aby jejich data cestou zachytila.
- Prostředníci, například poskytovatelé e-mailu, mohou ve skutečnosti číst tvé e-maily nebo zprávy.
- Koncové šifrování, neboli end-to-end encryption, je způsob, jak zabránit prostředníkům v přečtení obsahu dat.
Mazání
- Teď se podívejme na běžnou situaci: smazání souboru.
- Po smazání mohou v počítači zůstat stopy původního souboru.
- Operační systémy často mažou soubory tak, že pouze „zapomenou“, kde se nacházejí. Nové soubory pak mohou staré přepsat.
- Nemáme ale záruku, že je volné místo na disku zcela zbavené stop starých souborů.
- Bezpečné mazání v tomto příkladu znamená přepsání všech zbytků smazaných souborů nulami, jedničkami nebo jejich náhodnou posloupností.
Šifrování celého disku
- Šifrování celého disku, příklad šifrování uložených dat neboli encryption at rest, zašifruje obsah pevného disku.
- Když ti zařízení někdo ukradne nebo je prodáš, neměl by mít bez potřebných klíčů přístup k zašifrovaným datům.
- Nevýhodou je, že při ztrátě hesla nebo dostatečně velké změně obličeje pro biometrické ověřování se k datům nemusíš dostat ani ty.
- Další nevýhodou je, že stejný druh technologie mohou útočníci využít jako ransomware: zašifrují disk a drží data jako rukojmí.
Kvantové počítače
- Kvantové počítání je rozvíjející se technologie, která by útočníkům mohla poskytnout pro některé problémy výrazně vyšší výpočetní výkon.
- Útočníci by ji mohli využít ke zkrácení času potřebného pro hádání hesel a prolomení některých druhů šifrování.
- Doufejme, že budeme mít k takovému výkonu přístup dříve než oni.
Co jsme probrali
V této lekci jsme se zabývali zabezpečením dat. Probrali jsme:
- Jak weby a služby ukládají hesla.
- Jak lze textové hodnoty hashovat pro ochranu tajných údajů.
- Úlohu soli, jednosměrných hashovacích funkcí, klíčů, šifrování a dešifrování při bezpečném ukládání dat.
- Veřejné a soukromé klíče.
- Jak technologie využívají veřejné a soukromé klíče k ochraně dat.
- Jak zabezpečit vlastní hardware.
- Nové přínosy i hrozby spojené s kvantovými počítači.
Uvidíme se příště!