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