Základy kryptografie: šifrování, dešifrování a správa klíčů

Kryptografie

Kryptografie je disciplína, která navrhuje matematické a systémové prostředky pro ochranu informací. Primárními cíli jsou důvěrnost (utajení obsahu), integrita (detekce změn), autenticita (ověření původu) a nepopiratelnost (důkaz o provedené akci). Základními operacemi jsou šifrování (převod čitelné zprávy na šifrovaný text) a dešifrování (opačný proces), přičemž klíčem k bezpečnosti je správná správa a volba klíčů.

Terminologie: zpráva, šifrový text, klíč a algoritmus

  • Otevřený text (plaintext): původní data před šifrováním.
  • Šifrový text (ciphertext): výstup šifrování, pokud možno nerozlišitelný od náhodného šumu.
  • Šifrovací algoritmus (cipher): deterministicky definované funkce pro šifrování/dešifrování.
  • Klíč: tajná (symetrická) nebo neveřejná část páru (asymetrická), která parametrizuje algoritmus.
  • Bezpečnostní parametr λ: obvykle bitová délka klíče a kryptografických hodnot.

Symetrická kryptografie: jeden klíč pro šifrování i dešifrování

Symetrické šifry používají stejný tajný klíč pro obě operace. Dominantní jsou blokové šifry (např. AES) a proudové šifry (např. ChaCha20). Výhodou je vysoká rychlost a nízká režie; nevýhodou je náročná distribuce klíčů mezi mnoha subjekty.

Blokové šifry a režimy provozu

Bloková šifra transformuje blok bitů pevné délky (např. 128 bitů u AES). Protože zprávy mohou mít libovolnou délku, používají se režimy provozu (modes of operation):

  • CBC (Cipher Block Chaining): vyžaduje náhodný inicializační vektor (IV); nezajišťuje integritu.
  • CTR (Counter): z blokové šifry vytváří proudovou; neposkytuje integritu; přísné pravidlo nikdy neopakovat nonce.
  • GCM (Galois/Counter Mode): AEAD režim, poskytuje šifrování i autentizaci; citlivý na opakování nonce.
  • OCB, CCM: další AEAD režimy kombinující důvěrnost a integritu.

Moderní praxe upřednostňuje AEAD (Authenticated Encryption with Associated Data) – obvykle AES-GCM nebo ChaCha20-Poly1305.

Proudové šifry

Proudová šifra generuje klíčový proud, který se kombinuje s otevřeným textem (obvykle XOR). Bezpečnost závisí na nepředvídatelnosti proudu a jedinečnosti nonce. ChaCha20 je populární díky vysoké rychlosti na CPU bez AES-NI a odolnosti vůči některým postranním kanálům.

Integrita a autentizace: MAC a AEAD

MAC (Message Authentication Code) ověřuje původ a neporušenost dat pomocí sdíleného symetrického klíče. Příklady: HMAC (na bázi hashovací funkce), GMAC (součást GCM). AEAD režimy integrují šifrování a MAC do jednotného celku a umožňují autentizovat i nešifrovaná metadata (Associated Data, např. hlavičky protokolu).

Kryptografické hašovací funkce a související primitiva

Hašovací funkce zobrazují zprávy libovolné délky na výstupy pevné délky a musí splňovat odolnost proti kolizím, odolnost proti preimage a druhé preimage. Moderní standardy zahrnují SHA-256/512, SHA-3 (Keccak) a BLAKE2/3. Z hašovacích funkcí se odvozují KDF (Key Derivation Functions), například HKDF pro odvození klíčů, a funkce pro bezpečné hašování hesel (Argon2, scrypt, bcrypt) s vysokou paměťovou náročností proti GPU či ASIC útokům.

Asymetrická kryptografie: pár klíčů a veřejná infrastruktura

Asymetrická kryptografie využívá veřejný klíč pro šifrování nebo ověřování a soukromý klíč pro dešifrování nebo podepisování. Umožňuje bezpečnou výměnu klíčů bez předchozího sdílení tajemství a digitální podpisy. Hlavní rodiny algoritmů jsou RSA, Diffie–Hellman (DH) a eliptické křivky (ECC: ECDH, ECDSA, EdDSA).

RSA: principy a praxe

RSA je založena na obtížnosti faktorizace velkých čísel. Pro šifrování a podpisy se dnes doporučuje používat schémata s OAEP (pro šifrování) a PSS (pro podpisy). Velikost modulu by měla být 2048–3072 bitů (či více, podle požadovaného bezpečnostního horizontu). Kritická je bezpečná generace prvočísel a ochrana proti postranním kanálům.

Diffie–Hellman a eliptické křivky

DH umožňuje dvěma stranám dohodnout sdílené tajemství po nezabezpečeném kanálu. ECDH na eliptických křivkách nabízí kratší klíče při stejné úrovni bezpečnosti. Pro digitální podpisy se široce využívají ECDSA a EdDSA (Ed25519). Výhody ECC zahrnují menší klíče, rychlejší výpočty a menší přenosovou režii, ovšem vyžadují pečlivou implementaci a pečlivý výběr křivky (např. Curve25519, P-256).

Protokoly: šifrování na úrovni kanálu a aplikace

  • TLS 1.3: poskytuje dopřednou bezpečnost (Forward Secrecy) díky (EC)DHE, používá AEAD šifry (AES-GCM, ChaCha20-Poly1305) a zjednodušený handshake.
  • SSH: zabezpečený vzdálený přístup, výměna klíčů (ECDH), AEAD a autentizace pomocí klíčů.
  • PGP/OpenPGP: koncové šifrování a digitální podpisy e-mailů; správa veřejných klíčů nezávislá na centrálním PKI.
  • Signal double ratchet: kombinuje asymetrickou a symetrickou kryptografii s průběžným obnovováním klíčů (post-compromise security, forward secrecy).

PKI a digitální certifikáty

Infrastruktura veřejných klíčů (PKI) propojuje identity s subject public key za pomoci certifikátů podepsaných certifikační autoritou (CA). Zásadní prvky zahrnují kořenové CA, mezilehlé CA, CRL/OCSP pro revokace, zásady (CPS), doménové ověření (DV), organizační validaci (OV) a rozšířenou validaci (EV). Bezpečnost PKI spočívá na důvěryhodnosti CA, bezpečné výrobě klíčů a ochraně soukromých klíčů (např. prostřednictvím HSM).

Modely hrozeb a útočné scénáře

  • Útok s vybraným otevřeným/šifrovým textem (CPA/CCA): vyžaduje schémata odolná i při interakci s útočníkem (bezpečnost CCA2, například RSA-OAEP, AEAD).
  • Man-in-the-Middle (MitM): mitigace skrze ověření klíčů a identity (certifikáty, fingerprinty), PFS.
  • Postranní kanály: analýzy časování, spotřeby energie či elektromagnetického vyzařování; nezbytné je použití konstantního časování, maskování a blindingu.
  • Opakování nonce/IV: fatální v režimech CTR/GCM; vyžaduje jedinečný nonce nebo deterministický AEAD s pečlivou konstrukcí.
  • Slabá entropie: nekvalitní generování náhodnosti ohrožuje všechna primitiva; nezbytný je kryptograficky bezpečný CSPRNG s vysoce entropickým seedem.

Generování klíčů, entropie a CSPRNG

Bezpečnost začíná kvalitou náhodnosti. CSPRNG (například /dev/urandom, moderní knihovny operačních systémů) musí být správně seedován ze zdrojů entropie (klávesnice, hardware TRNG, časování systémů). Klíče se odvozují z hlavního tajemství pomocí HKDF a rotují podle stanovených politik (key rotation). Nedostatečná entropie při startu systému je běžným rizikem zejména u vestavěných zařízení.

Správa klíčů: životní cyklus a úložiště

Životní cyklus klíče zahrnuje generování, distribuci, použití, rotaci, archivaci a likvidaci. Doporučené postupy zahrnují:

  • Oddělení rolí a přístupů (princip nejmenších oprávnění).
  • Bezpečnou distribuci (pro asymetrii veřejný klíč přes PKI, pro symetrii pomocí (EC)DH).
  • Hardwarové úložiště (HSM, TPM, Secure Enclave) pro privátní klíče a operace v chráněném prostředí.
  • Rotaci a expiraci dle politik a kryptoperiod s auditní stopou.
  • Zálohování a escrow šifrovaných klíčů, dělení tajemství (Shamir) pro obnovu po havárii.

Konstrukce protokolů: formální bezpečnost a kompozice

Bezpečná schémata definují přesné security games a požadavky (IND-CPA, IND-CCA, EUF-CMA pro digitální podpisy). Kompozice protokolů musí zohlednit nonce domény, vazbu klíčů na kontext (key binding), domain separation a contextual hashing. Preferujte osvědčené knihovny a standardy (TLS 1.3, Noise, libsodium) před vlastním návrhem.

Autentizace a digitální podpisy

Podpisová schémata (RSA-PSS, ECDSA, EdDSA) poskytují nepopiratelnost a integritu; ověřovací klíč je veřejný. V praxi jsou podpisy spojovány s identitou přes certifikáty a časová razítka (TSA). U dokumentů a software update kanálů je klíčová správná politika správy klíčů a revokace.

Šifrování na úrovni dat vs. transportu

Transportní šifrování (TLS) chrání data mezi uzly, ale koncové body vidí otevřený text. End-to-end šifrování (Signal, PGP) chrání i proti zprostředkovatelům. Šifrování na úrovni polí/databází (TDE, FPE, DAE) řeší specifické regulační a provozní scénáře; pozor na modely hrozeb a únik metadat.

Speciální techniky: perfektní utajení, ZKP a homomorfie

  • Perfektní utajení: One-Time Pad je teoreticky dokonale bezpečný, ale nepraktický kvůli distribuci klíče.
  • Nulové znalosti (ZKP): dokazují pravdivost tvrzení bez odhalení tajemství (např. Schnorr, zk-SNARKs) – využití v autentizaci a blockchainových ekosystémech.
  • Homomorfní šifrování: umožňuje výpočty nad šifrovanými daty; v praxi omezené kvůli výkonnosti, ale perspektivní pro citlivá data.
  • SMPC (Secure Multi-Party Computation): více stran provádí výpočty nad svými vstupy bez vzájemného odhalení těchto vstupů.

Kvantová kryptografie a post-kvantové algoritmy

Široce používané asymetrické algoritmy (RSA, ECC) jsou ohroženy Shorovým algoritmem při dostatečně výkonném kvantovém počítači. Post-kvantové (PQC) přístupy (mřížkové, kódové, hašovací podpisy) se zavádějí postupně; přechod bude vyžadovat hybridní režimy (PQC + klasická asymetrie), inventuru kryptografických metod a klíčů a dlouhodobě bezpečné protokoly.

Implementační zásady a bezpečnostní hygiena

  • Preferujte AEAD (AES-GCM, ChaCha20-Poly1305) a protokoly s Forward Secrecy.
  • Garantujte unikátní nonce pro GCM/CTR; u EdDSA/ECDSA dbejte na bezpečné náhodné nebo deterministické k.
  • Používejte password hashing (Argon2) se solí (salt); nikdy neukládejte hesla v otevřené podobě.
  • Chraňte soukromé klíče v HSM/TPM, oddělujte prostředí (vývoj/test/provoz), auditujte přístupy.
  • Provádějte rotaci klíčů, udržujte inventář algoritmů a verzí (Crypto Agility).
  • Vyvarujte se „roll-your-own crypto“ – spoléhejte na knihovny s auditovanou implementací.
  • Mějte na paměti únik metadat (velikost, časování, vzory provozu), používejte padding a traffic shaping, je-li třeba.

Typ