*P = D(K, C)
Klíčovým požadavkem je, aby bez znalosti klíče K
bylo výpočetně nemožné
z ciphertextu zrekonstruovat původní zprávu.
===== Výhody a nevýhody =====
^ Výhody ^ Nevýhody ^
| Vysoká rychlost
– vhodné pro šifrování velkých datových proudů (např. souborů, komunikace v reálném čase). | Problém s distribucí klíčů
– obě strany musí mít stejný klíč, což vyžaduje bezpečný způsob jeho výměny. |
| Nízká výpočetní náročnost
– dobře škáluje i na zařízeních s omezenými zdroji (IoT, mobilní zařízení). | Škálovatelnost
– v síti s n
uživateli je potřeba n(n−1)/2
klíčů pro vzájemnou komunikaci, což rychle roste. |
| Dobře ověřené algoritmy
– mnoho standardizovaných a dlouhodobě testovaných šifer. | Žádná vestavěná autentizace
– symetrické šifry samy o sobě neověřují totožnost odesílatele (vyžadují doplnění, např. MAC nebo digitální podpis). |
===== Typy symetrických šifer =====
==== Blokové šifry (Block ciphers) ====
Blokové šifry zpracovávají data po pevně stanovených blocích
(např. 64 nebo 128 bitů). Pokud vstupní data nejsou násobkem velikosti bloku, použije se doplnění (padding)
.
Známé blokové šifry:
* DES
(Data Encryption Standard) – 64bitové bloky, 56bitový klíč; dnes považován za nebezpečný.
* 3DES
(Triple DES) – třikrát aplikovaný DES s různými klíči; pomalejší, ale bezpečnější než DES.
* AES
(Advanced Encryption Standard) – moderní standard; bloky 128 bitů, klíče 128/192/256 bitů; široce používaný v praxi (TLS, diskové šifrování, Wi-Fi, atd.).
* Blowfish
, Twofish
– alternativní šifry, méně běžné, ale bezpečné.
Aby blokové šifry mohly šifrovat data delší než jeden blok, používají se tzv. režimy provozu
:
* ECB
(Electronic Codebook) – každý blok se šifruje nezávisle; nevhodný pro opakující se data (odhaluje vzory).
* CBC
(Cipher Block Chaining) – každý blok se před šifrováním XORuje s předchozím ciphertextem; vyžaduje inicializační vektor (IV)
.
* CTR
(Counter) – převádí blokovou šifru na streamovou; vhodná pro paralelizaci.
* GCM
(Galois/Counter Mode) – poskytuje šifrování i
ověření integrity (AEAD – Authenticated Encryption with Associated Data).
==== Streamové šifry (Stream ciphers) ====
Streamové šifry generují pseudonáhodný klíčový proud
(keystream), který se bit po bitu (nebo bajt po bajtu) kombinuje s otevřeným textem – obvykle pomocí operace XOR
.
Výhody:
* Nevyžadují padding.
* Ideální pro reálný čas a proudová data (např. audio/video streamy).
Příklady:
* RC4
– dříve široce používaná (např. v SSL/TLS), ale dnes považována za nebezpečnou kvůli slabostem.
* ChaCha20
– moderní, rychlá a bezpečná streamová šifra; často používána spolu s Poly1305
pro autentizaci (ChaCha20-Poly1305).
* Salsa20
– předchůdce ChaCha20.
===== Použití v praxi =====
Symetrické šifrování je základem většiny moderních bezpečnostních protokolů
:
* TLS/SSL
: Po výměně klíčů pomocí asymetrické kryptografie (např. RSA nebo ECDH) se komunikace přenáší pomocí symetrické šifry (AES-GCM, ChaCha20-Poly1305).
* Diskové šifrování
: BitLocker (Windows), FileVault (macOS), LUKS (Linux) – všechny využívají AES.
* Wi-Fi zabezpečení
: WPA2 a WPA3 používají AES v režimu CCMP nebo GCMP.
* Šifrované zálohy, e-mailové klienty, messengerové aplikace
(např. Signal) – vnitřně využívají symetrické šifry pro efektivitu.
===== Bezpečnostní doporučení =====
* Nikdy nepoužívej ECB režim
pro citlivá data – odhaluje strukturu zprávy.
* Používej náhodný inicializační vektor (IV)
pro režimy jako CBC nebo CTR – nikdy stejný IV s tím samým klíčem!
* Pro nové projekty upřednostňuj AES-128
nebo AES-256
v bezpečném režimu (GCM, CTR).
* Alternativně zvaž ChaCha20-Poly1305
, zejména na platformách bez hardwarové podpory AES.
* Nikdy neimplementuj vlastní šifrovací algoritmus – používej ověřené knihovny jako OpenSSL
, libsodium
, Bouncy Castle**.