diff --git a/main.tex b/main.tex
index 60ba8824e3432845dca460729519db7fbebcdb5e..b8ce081268e3765807a30e57421d48b9191e76d7 100644
--- a/main.tex
+++ b/main.tex
@@ -1450,7 +1450,7 @@ mehrere kombinieren und eine Auswahlfunktion \(f\) auf die Ausgaben der einzelne
 LFSRs anwenden, die für jedes Output-Bit der Gesamtchiffre spezifiziert, welches
 LFSR konkret verwendet wird.
 
-Man könnte meinen, dass es reichen würde, schlicht die Rückkkopplungskoeffizienten
+Man könnte meinen, dass es reichen würde, schlicht die Rückkopplungskoeffizienten
 geheimzuhalten.  Wir werden nun sehen, dass wir anhand eines Schlüsselstroms ein
 entsprechendes LFSR bauen können -- dadurch also nichts gewonnen ist.  Hierzu
 betrachten wir nun was es bedeutet, wenn ein LFSR maximale Periode hat um
@@ -1555,7 +1555,7 @@ Wir wissen also:
 Hierbei ist \(\Tr(\alpha)\) die Spur (Trace) von \(\alpha\).
 
 Während \(\Tr\) unabhängig von jedem LFSR ist, beschreibt die Nullstelle die
-Rückkkopplungskoeffizienten -- und \(\theta\) den Schlüssel.  Was ist aber nun
+Rückkopplungskoeffizienten -- und \(\theta\) den Schlüssel.  Was ist aber nun
 \(\theta\)?  Hierzu nutzen wir die uns bekannten Schlüsselbits und setzen ein:
 \begin{align*}
 	0 &= k_0
@@ -1734,15 +1734,15 @@ korrelieren):
 \]
 Dann wäre ein known-plaintext Angriff mit bekanntem Ausschnitt des
 Schlüsselstroms \(k_i,\dotsc,k_{i+t-1}\) möglich, indem für alle möglichen
-Initialwerte \(k_0^1,\dotsc,k_{n_1}^1\) des ersten LSFRs (Schlüsselexhaustion)
+Initialwerte \(k_0^1,\dotsc,k_{n_1}^1\) des ersten LFSRs (Schlüsselexhaustion)
 die Werte \(k_i^1,\dotsc,k_{i+t-1}^1\) berechnet werden.  Danach berechnet
-man die Korrelation zwischen den Strömen des ersten LSFRs und den bekannten
+man die Korrelation zwischen den Strömen des ersten LFSRs und den bekannten
 der Gesamtkonstruktion:
 \[
 	p' := \frac{|\{j\in{i,\dotsc,i+t-1} \mid k_j^1 = k_i \}|}{2^t}
 \]
 Ist nun \(p'\approx p\), dann ist der geratene Teilschlüssel
-\((k_0^1,\dotsc,k_{n_1}^1)\) der korrekte Schlüssel für das erste LSFR.
+\((k_0^1,\dotsc,k_{n_1}^1)\) der korrekte Schlüssel für das erste LFSR.
 Ist jedoch \(p'\approx\frac{1}{2}\) wird der Schlüssel verworfen.
 
 Damit kann mit einem Aufwand von Schlüsselexhaustion von ca.\@ \(2^{n_1}\)
@@ -1755,14 +1755,14 @@ den Worten der linearen Kryptoanalyse, haben wir eine lineare Relation
 	\Pr(f(x)=\langle\alpha,x\rangle) = \Pr(\langle\beta,f(x)\rangle=\langle\alpha,x\rangle) \neq \frac{1}{2}
 \]
 Dieser Angriff lässt sich natürlich mit Korrelationen für jedes einzelne
-LSFR, also alle \(\alpha\in\GF_2^m\) analog durchführen.
+LFSR, also alle \(\alpha\in\GF_2^m\) analog durchführen.
 
 Wir entfernen uns nun von dem Beispiel und gucken uns allgemein eine
 lineare Relation \(\alpha\in\GF_2^m\) mit \(\Pr(f(x)=\langle\alpha,x\rangle)\neq 1/2\)
 an, wobei \(i_1<i_2<\dotsb i_t\) die Indizes sind, für an denen die Relation
 \(1\) ist, also \(a_k = 1 \leftrightarrow k=i_j\).  Analog seien
 \(i'_1<i'_2<\dotsb<i'_{m-t}\) die Indizes mit \(\alpha_{i'_j}=0\).
-Weiterhin sei die Abbildung die sich nur auf die korrelierenden LSFRs
+Weiterhin sei die Abbildung die sich nur auf die korrelierenden LFSRs
 beschränkt:
 \begin{align*}
 	g_\alpha: &\;\GF_2^t \to \GF_2 \\
@@ -1779,7 +1779,7 @@ verhindern können.
 \begin{definition}
 Sei \(t\leq m\).  Eine Funktion \(f:\GF_2^m\to\GF_2\) heißt
 \(t\)-korrelationsimmun, wenn für alle linearen Relationen \(\alpha\in\GF_2^m\)
-die maximal \(t\) LSFRs auswählen \(1 \leq\sum \alpha_i \leq t\) gilt:
+die maximal \(t\) LFSRs auswählen \(1 \leq\sum \alpha_i \leq t\) gilt:
 \[
 	\Pr(f(x_1,\dotsc,x_m) = \langle\alpha,x\rangle) = \frac{1}{2}
 \]
@@ -1811,6 +1811,223 @@ entsprechend groß gewählt werden.
 
 \subsection{Algebraische Angriffe}
 
+Wir werden nun uns einen anderen Angriff auf Stromchiffren widmen.
+
+Wir bezeichnen die Rückkopplungskoeffizienten des \(j\)-ten LFSRs, mit der
+dazugehörigen Rekursionsgleichung
+\(k_t^j = a_0^j k_{t-{n_j}}^j + \dotsb + a_{n_j -1}^j k_{t-1}^j\).
+Haben wir nun einen \(n_j\) langen Ausschnitt des Schlüsselstroms dieses
+LFSRs \(k_{t-n_i}^j,\dotsc,k_{t-1}^j\), dann lässt sich darüber der Nachfolger
+\(k_{t-n_i+1}^j,\dotsc,k_t^j\) über folgende Matrixmultiplikation berechnen
+bei der jeweils die Koeffizienten den vorherigen Schlüsselwerten zugeordnet
+werden:
+\[
+	(k_{t-n_j+1}^j,\dotsc,k_t^j) =
+	\begin{pmatrix}
+    	0 & 1 & 0 & \dotsb & 0 \\
+    	0 & 0 & 1 & \dotsb & 0 \\
+    	\vdots & \vdots & & \ddots & \vdots \\
+    	0 & 0 & 0 & \dotsb & 1 \\
+        a_0^j & a_1^j & a_2^j & \dotsb & a_{n-1}^j
+	\end{pmatrix} \cdot
+	\begin{pmatrix}
+    	k_{t-n_j+0}^j \\
+    	k_{t-n_j+1}^j \\
+    	\vdots \\
+    	k_{t-2}^j \\
+    	k_{t-1}
+	\end{pmatrix}
+\]
+Wir bezeichnen mit \(L_j\) die obige Matrix für das \(j\)-ten LFSR\@.
+Nutzen wir nun die Projektion auf die \(n_j\)-te Komponente
+\(\pi_{n_j}(x_1,\dotsc,x_{n_j}):=x_{n_j}\), können wir schreiben:
+\begin{align*}
+	k_t^j     &= \pi_{n_j}\circ L_j \cdot (k_{t-n_j}^j,\dotsc,k_{t-1}^j)^T \\
+	k_{t+1}^j &= \pi_{n_j}\circ L_j \cdot (k_{t-n_j+1}^j,\dotsc,k_{t-1+1}^j)^T \\
+	          &= \pi_{n_j}\circ L_j \cdot \left(L_j \circ (k_{t-n_j}^j,\dotsc,k_{t-1}^j)^T\right) \\
+	          &= \pi_{n_j}\circ L_j^2 \cdot (k_{t-n_j}^j,\dotsc,k_{t-1}^j)^T \\
+	          &\vdots
+\end{align*}
+Mit Einsetzen können wir den Schlüsselstrom wiefolgt beschreiben:
+\begin{align*}
+	k_t = f&\left(\pi_{n_1}\circ L_1^t(k_0^1,\dotsc,k_{n_1-1}^1)^T,\right.  \\
+               &\quad\vdots \\
+               &\;\left.\pi_{n_m}\circ L_m^t(k_0^m,\dotsc,k_{n_m-1}^m)^T\right)
+\end{align*}
+Wir wissen, dass sich unsere boolesche Funktion \(f:\GF_2^m\to\GF_2\) als
+über \(\GF_2[X_1,\dotsc,X_m]\) darstellen lässt, mit einem Maximalgrad
+von \(1\) für alle Unbestimmten (d.\,i.\@ einfache Monome).  Wir können
+nun eine known-plaintext Attacke durchführen.  Angenommen Teilschlüssel
+\(k_i,\dotsc,k_{i+t}\) sind bekannt, dann müssen wir folgendes
+Gleichungssystem lösen:
+\begin{align*}
+	f\left(\pi_{n_1}\circ L_1^i(k_0^1,\dotsc,k_{n_1-1}^1)^T,\dotsc,
+               \pi_{n_m}\circ L_m^i(k_0^m,\dotsc,k_{n_m-1}^m)^T\right) &= k_i \\
+	                                                               &\;\;\vdots \\
+	f\left(\pi_{n_1}\circ L_1^{i+t}(k_0^1,\dotsc,k_{n_1-1}^1)^T,\dotsc,
+               \pi_{n_m}\circ L_m^{i+t}(k_0^m,\dotsc,k_{n_m-1}^m)^T\right) &= k_{i+t} \\
+\end{align*}
+Der Grad des Gleichungssystems ist definiert als \(d := \deg(f)\) der des
+Polynoms.  Damit ist der Aufwand zum Lösung ungefähr \((n_{\text{tot}}^d)^3\)
+mit der Gesamtlänge aller LFSRs \(n_{\text{tot}} := \sum n_i\).
+
+Unser Ziel ist es nun, den Grad dieses Gleichungssystems zu reduzieren.
+Hierzu betrachten wir zunächst nur die Gleichungen für die Schlüsselbits
+unseres bekannten Teilschlüssels \(k_i,\dots,k_{i+t}\) den Wert \(1\)
+annehmen, also \(k_j=1\) mit \(i\leq j\leq i+t\).  Finden wir ein
+Annihilatorpolynom \(g\) von \(f\) mit \(\deg(g) < \deg(f)\), so, dass
+\(f\cdot g=0\), d.\,i.\@ wenn \(f(x)=1 \Rightarrow g(x)=0\), dann gilt
+\[
+	f(x)g(x) = k_j g(x) \Leftrightarrow 0 = g(x)
+\]
+Um unsere Schlüsselkandidaten zu finden, ersetzen wir \(f\) durch \(g\)
+und alle \(1\) durch \(0\).
+
+Betrachten wir das an dem Beispiel \(f(x_1,x_2) := x_1 x_2\), dann ist
+\(g(x_1,x_2) := x_1\xor x_2\) Annihilator von \(f\).
+
+Analog lässt sich für die Gleichungen mit \(k_j=0\) der Grad reduzieren.
+Hierfür sei \(g'\) Annihilator von \(f\xor 1\), also
+\[
+	f(x) \xor 1 = 1 \Leftrightarrow f(x) = 0 \Rightarrow g'(x) = 0
+\]
+Es gilt dann auch wieder
+\begin{align*}
+	               &\; f(x) g'(x) = k_j g'(x) \\
+	\Leftrightarrow&\; (f(x)\xor 1) g'(x) = (k_j\xor 1)g'(x) \\
+	\Leftrightarrow&\; 0 = g'(x)
+\end{align*}
+
+Wie finden wir aber Funktionen, für die solche Angriffe schwierig
+umsetzbar sind?
+\begin{definition}
+Sei \(f:\GF_2^m\to\GF_2\) und die Menge aller Annihilatorkandidaten
+\(A(f) := \{ g: \GF_2^m\to\GF_2 \mid fg = 0\}\), dann ist die
+algebraische Immunität definiert als der kleinste Grad aller dieser
+Polynome:
+\[
+	\AI(f) := \min\{\deg(g) \mid g\in A(f) \lor g\in A(f\xor 1)\}
+\]
+\end{definition}
+Die Bestimmung der algebraischen Immunität im Allgemeinen sehr schwer. wir
+können jedoch abschätzen.
+\begin{theorem}[Courtois-Meier, 2003]\label{thm:cm2003}
+Für alle \(f:\GF_2^m\to\GF_2\) ist
+\[
+	\AI(f) \leq \left\lceil\frac{m}{2}\right\rceil
+\]
+\end{theorem}
+Für den Beweis benötigen wir erst noch zwei Lemmata.
 
+\begin{lemma}\label{lem:cm2003-1}
+Sei \(f:\GF_2^m\to\GF_2\). Dann existiert \(g:\GF_2^m\to\GF_2\) mit
+\(g\neq 0\) und \(\deg(g) \leq \lceil m/2\rceil\) so, dass
+\[
+	\deg(f\cdot g) \leq \lceil m/2\rceil
+\]
+\end{lemma}
+\begin{proof}
+Wir erinnern uns an zwei Eigenschaften von Binomialkoeffizienten:
+\[
+	\binom{m}{k} = \frac{m!}{(m-k)!\cdot k!} = \frac{m!}{(m-k)!\cdot (m-(m-k))!} = \binom{m}{m-k} \\
+\]
+\[
+	\sum_{k=0}^m \binom{m}{k} = 2^m
+\]
+Und wir wissen, \(\binom{m}{k}\) ist die Anzahl \(k\)-elementiger Teilmengen
+aus einer \(m\)-elementigen Menge.
+
+Nun betrachten wir die Menge \(A\) aller Monome mit einem Grad von Maximal
+\(\lfloor m/2\rfloor\) und die Menge \(B\) der Multiplikation von \(f\) und
+allen Monomen von Grad Maximal \(\lceil m/2\rceil\):
+\begin{align*}
+	A &= \{ 1, x_1, x_2, \dotsc, x_1 x_2, \dotsc \} \\
+	B &= \{ f(x), f(x)x_1, f(x) x_2, \dotsc \}
+\end{align*}
+Dann gilt für die Summe der Mächtigkeiten der Mengen
+\begin{align*}
+	|A|+|B| &= \sum_{i=0}^{\left\lfloor \frac{m}{2}\right\rfloor} \binom{m}{i} +
+	           \sum_{i=0}^{\left\lceil  \frac{m}{2}\right\rceil } \binom{m}{i} \\
+	        &= \sum_{i=0}^m \binom{m}{i} + \binom{m}{\left\lfloor\frac{m}{2}\right\rfloor} \\
+	        &= 2^m + \binom{m}{\left\lfloor\frac{m}{2}\right\rfloor} > 2^m
+\end{align*}
+Wir wechseln jetzt die Betrachtung und sehen, dass die Menge der
+booleschen Funktionen isomorph zu \(\Fn(\GF_2^m,\GF_2) \cong \GF_2^{2^m}\)
+einem Vektorraum über \(\GF_2\) ist, da die booleschen Funktionen einem
+multivariablem Polynom entsprechen, welches wiederum eindeutig zu Vektoren
+abgebildet werden kann.  Genauer hat \(f:\GF_2^m\to\GF_2\) eine eindeutige
+Darstellung als Polynomfunktion
+\[
+	f(x) = \sum_{I\in\GF_2^m} a_I x^I
+\]
+mit Koeffizienten \(a_I\in\GF_2\) und \(x^I=x_1^{i_1}\cdot\dotsb\cdot x_m^{i_m}\)
+für einen Potenzvektor \(I=(i_1,\dotsc,i_m)\).  Wir können also die
+boolesche Funktion mit den Koeffizienten \((a_{(0,\dotsc,0)},\dotsc,a_{(1,\dotsc,1)})\in\GF_2^{2^m}\)
+identifizieren.
+%TODO bei den vorherigen Kapiteln anpassen, man braucht tatsächlich nur
+% Koeffs, nicht I
+Damit ist die obige Menge \(A=\{(1,0,\dotsc,0),(0,1,0,\dotsc,0),\dotsc\}\)
+linear unabhängig.  Wir schreiben abkürzend \(m_i\) als das \(i\)-te
+Monom, also \(m_1=1\), \(m_2=x_1\), usw\@.  Da nun \(|A|+|B| > 2^m\), sind
+die Vektoren linear abhängig, d.\,h.\@ es existieren
+\[
+	a_1,\dotsc,a_{|A|},b_1,\dotsc,b_{|B|} \in\GF_2^{|A|+|B|}\setminus\{(0,\dotsc,0)\}
+\]
+mit
+\[
+	\sum_{i=1}^{|A|} a_i m_i + \sum_{i=1}^{|B|} b_i f(x) m_i
+	\Leftrightarrow
+	\sum_{i=1}^{|A|} a_i m_i = f(x) \sum_{i=1}^{|B|} b_i m_i
+\]
+Wir wählen nun
+\[
+	g=\sum_{i=1}^{|B|} b_i m_i
+\]
+Nach Konstruktion der Menge \(B\) wissen wir, das \(\deg(g)\leq\lceil m/2\rceil\),
+nach der Konstruktion der Menge \(A\), dass \(\deg(fg)\leq\lfloor m/2\rfloor\).
+Darüber hinaus ist \(A\) linear unabhängig, es gilt somit
+\[
+	fg = \sum_{i=1}^{|A|} a_i m_i \neq 0
+\]
+Und somit auch \(g\neq 0\).
+\end{proof}
+
+\begin{lemma}\label{lem:cm2003-2}
+%TODO im Skript steht fg = h != 0,g -- gemeint != 0 und != g?
+Seien \(f,g,h: \GF_2^m\to\GF_2\) mit \(f\cdot g = h \neq 0\) und \(h\neq g\),
+sowie für die Grade \(\deg(g),\deg(h) \leq d\).  Dann existiert
+\(g':\GF_2^m\to\GF_2\) mit \(\deg(g')\leq d\) und \(f\cdot g' = 0\).
+\end{lemma}
+\begin{proof}
+Wegen \(f=f^2\) gilt
+\[
+	h=f\cdot g = f^2 \cdot g = f\cdot (f\cdot g) = f\cdot h
+\]
+Für \(g'=g\xor h\) erhalten wir damit
+\[
+	f\cdot g'=f\cdot (g\xor h) = f\cdot g\xor f\cdot h = f\cdot g\xor h = 0
+\]
+Wobei \(\deg(g') \leq \max\{\deg(g), \deg(h)\} \leq d\).
+\end{proof}
+
+\begin{proof}[Beweis von Satz~\ref{thm:cm2003}]
+Nach Lemma~\ref{lem:cm2003-1} existiert \(g\neq 0\) dessen Grad
+\(\deg(g) \leq \lceil m/2\rceil\) so, dass \(\deg(f\cdot g)\leq\lceil m/2\rceil\).
+Wir unterscheiden nun drei Fälle:
+\begin{enumerate}
+\item \(f\cdot g = 0\).  Dann folgt die Behauptung sofort.
+\item \(h \neq f\cdot g \neq 0\) und \(h\neq g\).  Dann sind die Voraussetzungen
+    für Lemma~\ref{lem:cm2003-2} gegeben.  Da die Grade \(\deg(g),\deg(h)\leq\lceil m/2\rceil\)
+    existiert also ein \(g'\) mit \(\deg(g')\leq\lceil m/2\rceil\) und
+    \(f\cdot g'=0\).
+\item Ist nun \(h:=f\cdot g\neq 0\), jedoch \(h=g\), dann gilt \(f\cdot g=g\)
+    und damit auch
+    \[
+    	(f\xor 1)\cdot g = f\cdot g \xor g = g\xor g = 0
+    \]
+    Somit ist \(g\) also ein Annihilator von \(f\xor 1\) und es folgt auch
+    hier die Behauptung.
+\end{enumerate}
+\end{proof}
 
 \end{document}
diff --git a/template.tex b/template.tex
index 28434dbe27f2a41f61c4d83dd40e5a84349b0100..150a3e8cc9fdfca059a3ff737beaf823ccea80da 100644
--- a/template.tex
+++ b/template.tex
@@ -16,6 +16,7 @@
 \DeclareMathOperator{\Gen}{Gen}
 \DeclareMathOperator{\Dec}{Dec}
 \DeclareMathOperator{\Enc}{Enc}
+\DeclareMathOperator{\AI}{AI}
 
 
 \newcommand{\Diff}{\Delta}