diff --git a/01-intro/intro.tex b/01-intro/intro.tex
index b8a6ce7964877e50c7c8fbe9921bdac1ba718907..782f26a8f59aab986825f29b58ba8ad187f2b049 100644
--- a/01-intro/intro.tex
+++ b/01-intro/intro.tex
@@ -137,6 +137,66 @@ slepením podepisovacího klíče se zprávou.
 
 \section{Náhodné generátory}
 
-TODO
+Kryptografické protokoly také často potřebují generátor náhodných bitů \em{(RNG -- random number
+generator)}. Ten má být nejen statisticky rovnoměrný, ale pro vnějšího
+pozorovatele kompletně nepředvídatelný -- i~pokud by pozorovatel znal celou
+historii vygenerovaných bitů, nesmí mu to pomoci zjistit cokoliv o~následujícím bitu.
+
+RNG se používá zejména pro generování klíčů, ale má i jiné zajímavé aplikace.
+
+\examplen{hybridní šifra}{
+Zatímco symetrické šifry obvykle mají lineární časovou složitost, všechny známé asymetrické
+šifry jsou asymptoticky pomalejší. Proto se používá konstrukce, která kombinuje oba druhy šifer.
+Říká se jí \df{hybridní šifra} a funguje následovně:
+
+\tightlist{o}
+\:Značení:
+	\tightlist{o}
+	\:Nechť $E_A$ a $D_A$ je šifrovací a dešifrovací funkce nějaké asymetrické šifry.
+	\:$K_E$ a $K_D$ je šifrovací a dešifrovací klíč pro tuto šifru vygenerovaný Bobem.
+	  Klíč $K_E$ je veřejný a zná ho i~Alice. Klíč~$K_D$ je soukromý Bobův.
+	\:$E_S$ a~$D_S$ je šifrovací a dešifrovací funkce nějaké symetrické šifry.
+	\endlist
+\:Alice chce poslat nějakou zprávu~$x$ Bobovi.
+\:Alice vygeneruje náhodný klíč~$N$ pro symetrickou šifru.
+\:Alice zašifruje zprávu symetricky: $y = E_S(N, x)$.
+\:Alice zašifruje klíč~$N$ asymetricky: $z = E_A(K_E, y)$.
+\:Alice pošle Bobovi $y$ a~$k$.
+\:Bob použije asymetrickou šifru, aby získal klíč $N = D_A(K_D, z)$.
+\:Bob použije symetrickou šifry, aby získal zprávu $x = D_S(N, y)$.
+\endlist
+}
+
+Všimněte si, že pomalou asymetrickou šifru používáme jen na krátký řetězec~$N$ fixní délky,
+zatímco celou dlouho zprávu~$x$ šifrujeme symetricky.
+
+Útočník má následující možnosti:
+
+\tightlist{o}
+\:zaútočit na symetrickou šifru
+\:zaútočit na asymetrickou sifru
+\:zaútočit na náhodný generátor: pokusit se uhodnout klíč~$N$
+\endlist
+
+\examplen{výzva a odpověď}{
+Alice je uživatel a Bob server. Alice chce Boba přesvědčit, že zná heslo, ale nechce mu ho posílat.
+Udělají to následovně: Bob vygeneruje náhodný řetězec -- \em{výzvu (challenge).} Alice výzvu podepíše
+pomocí svého klíče, například zahešováním výzvy spojené s~heslem, a~pošle to jako \em{odpověď (response).}
+Bob také zná heslo, takže může provést stejný výpočet a ověřit, že mu vyšlo totéž.
+}
+
+\examplen{přehrávací útok a nonce}{
+Zamysleme se nad vlastnostmi výzvy v~předchozím příkladu. Především se nesmí opakovat. Jinak by si totiž
+útočník mohl zaznamenávat všechny Aliciny odpovědi a když by později od Boba dostal tutéž výzvu, mohl by
+odpovědět zaznamenanou odpovědí. Tomu se říká \em{přehrávací útok (replay attack)} -- útočník použil
+legitimní zprávu, ale v~jiném kontextu.
+
+To je v~kryptografii velmi typická situace: potřebujeme generovat nějaké řetězce \uv{na jedno použití}.
+Těm se říká \em{nonce} z~anglického \uv{number used once}. My si toto slovo počeštíme a budeme ho skloňovat
+podle vzoru \uv{růže}. Kde takovou nonci sehnat? Buďto si můžeme pořídit počítadlo a postupně ho zvyšovat;
+jak uvidíme v~kapitole TODO, udržování stavu je v~praxi dost problematické. Proto bývá jednodušší nonci
+generovat náhodně. Teoreticky se sice může zopakovat, ale jak uvidíme v~oddílu TODO, stane se to s~velmi
+malou pravděpodobností.
+}
 
 \endchapter