12. Symetrická kryptografie a hashovací funkce
Co se po vás bude chtít?
Úvod do kryptografie
-
Základní pojmy:
- Kryptologie - věda o šifrách (zahrnuje kryptografii i kryptoanalýzu)
- Kryptografie - tvorba šifer a šifrování
- Kryptoanalýza - prolamování šifer
- Plaintext - nešifrovaný text (čitelný)
- Ciphertext - šifrovaný text
- Klíč (key) - tajná informace pro šifrování/dešifrování
- Keyspace - množina všech možných klíčů
-
Cíle kryptografie (CIA triáda):
- Důvěrnost (Confidentiality) - pouze oprávněné osoby mohou číst data
- Integrita (Integrity) - detekce neautorizovaných změn dat
- Autenticita (Authenticity) - ověření původu dat/identity
Historie kryptografie
-
Transpozice:
- Přeuspořádání znaků podle pravidla
- Příklad: sloupcová transpozice, skytala
-
Substituce:
- Nahrazení znaků jinými znaky
- Caesarova šifra - posun písmen v abecedě
- Vigenèrova šifra - polyalfabetická substituce s klíčovým slovem
-
Steganografie:
- Ukrývání zprávy v jiném médiu
- Příklady: neviditelný inkoust, ukrytí v obrázku, textu
-
One-Time Pad (OTP):
- Teoreticky neprolomitelná šifra
- Klíč stejně dlouhý jako zpráva, použitý pouze jednou
- V binárním světě: XOR operace s náhodným klíčem
- Nevýhoda: distribuce klíčů a délka klíče (1Gb soubor = 1Gb klíče)
Symetrická kryptografie
-
Princip:
- Stejný klíč pro šifrování i dešifrování
- Odesílatel i příjemce musí znát tajný klíč
-
Výhody:
- Vysoká rychlost šifrování
- Vhodné pro velké objemy dat
-
Nevýhody:
- Problém distribuce klíčů
- Pro N uživatelů potřeba N*(N-1)/2 klíčů
Blokové šifry
-
Princip:
- Šifrování dat po blocích pevné velikosti (např. 128 bitů)
- Stejný vstup = stejný výstup (při stejném klíči)
-
AES (Advanced Encryption Standard):
- Současný standard pro symetrické šifrování
- Velikost klíče: 128, 192 nebo 256 bitů
- Velikost bloku: 128 bitů
- Bezpečný a rychlý
-
DES (Data Encryption Standard):
- Historický standard (1977)
- Klíč pouze 56 bitů - dnes nebezpečný
- Velikost bloku: 64 bitů
-
3DES (Triple DES):
- Trojnásobná aplikace DES
- Efektivní klíč 112 nebo 168 bitů
- Pomalejší než AES, postupně nahrazován
-
Režimy blokových šifer:
- ECB (Electronic Codebook) - nebezpečný, stejné bloky = stejný ciphertext
- CBC (Cipher Block Chaining) - bloky řetězeny, potřeba IV
- CTR (Counter) - blok jako proudová šifra
- GCM (Galois/Counter Mode) - šifrování + autentizace
Proudové šifry
-
Princip:
- Šifrování bit po bitu nebo byte po bytu
- Generátor pseudonáhodné posloupnosti (keystream)
- XOR s plaintextem
-
Vlastnosti:
- Rychlejší pro menší data
- Nižší latence (proto využíváme pro real-time komunikaci)
- Náchylné na zneužití při opakování klíče
-
Příklady:
- RC4 - historicky populární, dnes považován za nebezpečný
- ChaCha20 - moderní, bezpečná, rychlá (používá Google)
- Salsa20 - předchůdce ChaCha20
Hashovací funkce
-
Princip:
- Jednosměrná funkce - nelze zpětně získat vstup
- Libovolně dlouhý vstup → výstup pevné délky (hash/digest)
- Deterministická - stejný vstup = vždy stejný výstup
-
Důležité vlastnosti:
- Jednosměrnost - z hashe nelze odvodit vstup
- Odolnost proti kolizím - obtížné najít dva vstupy se stejným hashem
- Lavinový efekt - malá změna vstupu = velká změna hashe
-
Kolize:
- Dva různé vstupy se stejným hashem
- U bezpečných funkcí extrémně obtížné najít
Populární hashovací algoritmy
-
MD5:
- Výstup: 128 bitů (32 hex znaků)
- Nebezpečný - nalezeny kolize
- Stále používán pro kontrolní součty (ne pro bezpečnost)
-
SHA-1:
- Výstup: 160 bitů
- Nebezpečný - nalezeny kolize (2017)
- Deprecated, nepoužívat pro nové aplikace
-
SHA-2 (SHA-256, SHA-512):
- Výstup: 256 nebo 512 bitů
- Aktuálně bezpečný a široce používaný
- Standard pro většinu aplikací
-
SHA-3:
- Nejnovější standard (2015)
- Odlišná konstrukce (Keccak)
- Alternativa k SHA-2
-
BLAKE2/BLAKE3:
- Moderní, velmi rychlé
- Bezpečnější než MD5/SHA-1
Využití hashovacích funkcí
-
Ukládání hesel:
- Hesla se neukládají v čitelné podobě
- Ukládá se pouze hash hesla
- Při přihlášení se porovnávají hashe
- Správné funkce: bcrypt, Argon2, scrypt (ne MD5/SHA!)
-
Salt (sůl):
- Náhodná hodnota přidaná k heslu před hashováním
- Chrání proti rainbow tables (předpočítaným tabulkám s hashy a plaintextem)
- Každé heslo má unikátní salt
-
Kontrola integrity souborů:
- Ověření, že soubor nebyl změněn
- Porovnání hashů (checksums)
-
Identifikace malware:
- Porovnání hashe souboru s databází známého malware
- VirusTotal, malware bazaar
Útoky na hashe
-
Brute-force:
- Zkoušení všech možných kombinací
- Časově náročné pro silná hesla
-
Slovníkový útok (Dictionary attack):
- Zkoušení běžných slov a hesel
- Rychlejší než brute-force
-
Rainbow tables:
- Předpočítané hashe pro rychlé vyhledávání
- Salt je účinná obrana
-
Rule-based útoky:
- Modifikace slov podle pravidel (Password → P@ssw0rd)
- Nástroje: Hashcat, John the Ripper
-
Mask attack:
- Definování vzoru hesla (?u?l?l?l?d?d)
- Efektivnější než čistý brute-force
Aplikace symetrické kryptografie
-
Šifrování souborů a disků:
- LUKS (Linux), BitLocker (Windows), FileVault (macOS)
- VeraCrypt - multiplatformní
-
Šifrovaná komunikace:
- TLS/SSL - symetrické šifrování po výměně klíčů
- VPN tunely
-
Bezpečná správa klíčů:
- Generování dostatečně náhodných klíčů
- Bezpečné úložiště klíčů
- Pravidelná rotace klíčů
- Key derivation functions (PBKDF2, scrypt)
Připrav se na HAXAGONu
Kryptografie:
- Kryptografie - historické šifry
- Kryptografie - táborové šifry
- Kryptografie - binární soustava
- Kryptografie - hexadecimální soustava
- Enkódování
- Symetrické šifry 1
- Symetrické šifry 2
- CRC32 collision
- Password cracking 1
Digitální základy:
- Binární soustava
- Hexadecimální soustava