diff --git a/01-intro/intro.tex b/01-intro/intro.tex
index a6545fbe12d2f9060f8e49d3008007de8d62128a..84f80540c32e0b434a4458f94e8ec4a1613c4730 100644
--- a/01-intro/intro.tex
+++ b/01-intro/intro.tex
@@ -135,7 +135,7 @@ stranami, které si navzájem věří. Konstrukce je snadná: spočítáme otisk
 slepením podepisovacího klíče se zprávou.
 }
 
-\section{Náhodné generátory}
+\section[introrng]{Náhodné generátory}
 
 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
@@ -199,7 +199,7 @@ generovat náhodně. Teoreticky se sice může zopakovat, ale jak uvidíme v~odd
 malou pravděpodobností.
 }
 
-\section{Alice a Bob na dražbě}
+\section[auction]{Alice a Bob na dražbě}
 
 Na závěr této kapitoly zkusíme z~kryptografických primitiv poskládat jeden trochu složitější
 protokol. Budeme (trochu naivně) předpokládat, že primitiva jsou dokonalá, ale i tak se objeví
@@ -391,7 +391,59 @@ Za to ale zaplatíme omezeními použitelnosti šifry.
 
 \subsection{Narozeninové útoky}
 
-TODO
+Může se stát, že protokol má úroveň bezpečnosti výrazně nižší než použitá primitiva.
+
+Představme si protokol, v~němž Alice generuje $b$-bitové nonce a předpokládá,
+že budou unikátní. Útočník si bude pamatovat všechny nonce, které už proběhly,
+a číhat na okamžik, kdy se nějaká nonce zopakuje. Jak dlouho mu to typicky potrvá?
+Zdálo by se, že $2^b$ kroků, ale ve skutečnosti to bude mnohem méně.
+
+To, co útočník pozoruje, můžeme popsat jako náhodnou funkci~$f$ z~množiny $\{1,\ldots,m\}$
+pokusů do množiny $n$ možných noncí (v~našem případě je $n=2^b$). Útok uspěje, pokud
+tato funkce není prostá.
+
+Počítejme pravděpodobnost, že $f$ je prostá, tedy podíl počtu prostých funkcí a počtu
+všech funkcí:\foot{$n^{\underline m}$ je klesající mocnina definovaná jako $n(n-1)(n-2)\ldots(n-m+1)$.}
+$$\eqalign{
+{n^{\underline{m}} \over n^m}
+&= {n\over n}
+   \cdot{n-1\over n}
+   \cdot{n-2\over n}
+   \cdot\ldots
+   \cdot{n-m+1\over n}
+\cr
+&= 1
+   \cdot\left( 1 - {1\over n} \right)
+   \cdot\left( 1 - {2\over n} \right)
+   \cdot\ldots
+   \cdot\left( 1 - {m-1\over n} \right).
+}$$
+Jelikož pro malé~$x$ je $\e^{-x}\approx 1-x$ (to jsou první dva členy Taylorovy řady),
+můžeme pravděpodobnost aproximovat výrazem
+$$
+   1
+   \cdot\e^{-{1\over n}}
+   \cdot\e^{-{2\over n}}
+   \cdot\ldots
+   \cdot\e^{-{m-1\over n}}
+   = \e^{-\left( 1 + 2 + \ldots + m-1 \over n \right)}
+   = \e^{-{m(m-1)\over 2n}}
+   \approx \e^{-{m^2\over 2n}}
+   .
+$$
+Hledejme nyni~$m$, pro které tato pravděpodobnost bude rovna $1/2$. Má platit:
+$$
+   {1\over 2} = \e^{-{m^2\over 2n}}.
+$$
+Zlogaritmováním dostaneme $-\ln 2 = -(m^2/2n)$, tedy $m^2 = (2\ln 2)n$, což po
+odmocnění dá $m = \sqrt{2\ln 2}\cdot\sqrt n \approx 1.18\sqrt{n}$.
+
+Už po řádově odmocninovém počtu pokusů je tedy pravděpodobnost útoku $1/2$.
+Místo očekávaných $2^b$ pokusů jich tedy stačí cca $\sqrt{2^b} = 2^{b/2}$.
+Úroveň bezpečnosti je tedy nejvýše polovina délky nonce.
+
+Útokům tohoto druhu se říká {\I narozeninové} podle známého \uv{narozeninového paradoxu}:
+pravděpodobnost, že ve skupině 23 lidí mají dva narozeniny tentýž den, je větší než $1/2$.
 
 \subsection{Útoky setkáním na půli cesty}
 
diff --git a/tex/adsmac.tex b/tex/adsmac.tex
index f07d7300e1c7b9979e2e0839aec2501939f9bfb7..470c75f82a3ca34d7a8c97c21c45db204ef97d73 100644
--- a/tex/adsmac.tex
+++ b/tex/adsmac.tex
@@ -143,6 +143,9 @@
 % Asymptoticke O-cko
 \protected\def\O{{\cal O}}
 
+% Konkatenace
+\def\concat{\mathop{\Vert}}
+
 % Prirozena a realna cisla
 \def\N{{\bb N}}
 \def\R{{\bb R}}