From fd96d160367029e4afb6e13f932b7f8313ab3b17 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Leonard=20K=C3=B6nig?= <leonard.koenig@fu-berlin.de>
Date: Mon, 3 Feb 2020 23:50:13 +0100
Subject: [PATCH] Add Algebraic Analysis: Groebner & Interpol, move feal 1 Lvl
 up

---
 main.tex | 203 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 202 insertions(+), 1 deletion(-)

diff --git a/main.tex b/main.tex
index 0df093a..e70789a 100644
--- a/main.tex
+++ b/main.tex
@@ -405,7 +405,7 @@ können, benötigen wir für eine Erfolgswahrscheinlichkeit von \(\SI{96.7}{\per
 für den Angriff \(N/\lambda\) viele Paare.
 \end{remark}
 
-\subsubsection{FEAL-4}
+\subsection{FEAL-4}
 Der Fast data Encipherment ALgorithm (1978) ist eine Blockchiffre auf
 Blöcken aus \SI{64}{\bit}, wobei FEAL-4 einen \SI{64}{\bit} Rundenschlüssel
 nutzt und aus \num{4} Runden besteht.
@@ -1183,4 +1183,205 @@ an Variablen die bei der Linearisierung entstehen.  Dies geschieht durch einen
 hohen algebraischen Grad der Polynome (potentiell viele Variablen) und dicht
 besetzte Polynome (d.\,h.\@ Polynome aus vielen Monomen).
 
+
+\subsection{Gröbner-Basen}
+Wie bei dem Angriff über Linearisierung möchten wir unser Polynomsystem so
+umformulieren, dass das Problem einfacher lösbar ist.  Während wir bei der
+Linearisierung das Gleichungssystem direkt betrachtet haben, werden wir uns
+jetzt mit weiteren algebraischen Strukturen beschäftigen um das Problem leicht
+anders zu modellieren.
+
+Sind \(f_1,\dotsc,f_n\) Polynomfunktionen, deren Nullstellen wir suchen, dann
+können wir Linearkombinationen dieser mit weiteren Polynomen aus dem Ring
+bilden:
+\[
+	f := \sum_{i=1}^n h_i f_i, \qquad h_1,\dotsc,h_n \in \GF_2[X_1,\dotsc,X_l]
+\]
+Für jede solche Funktion gilt, dass jede Nullstelle unseres Polynomsystems
+\(f_1,\dotsc,f_n\) ebenfalls eine Nullstelle von \(f\) ist.
+
+Betrachten wir die Menge \(I\) aus solchen Linearkombinationen, so bildet \(I\)
+ein Ideal in \(\GF_2[X_1,\dotsc,X_l]\) und \(f_1,\dotsc,f_n\) eine Basis:
+\[
+	I = \langle f_1,\dotsc,f_n \rangle :=
+	\left\{ \sum_{i=1}^n h_i f_i \;\middle|\; h_1,\dotsc h_n \in \GF_2[X_1,\dotsc,X_l] \right\}
+\]
+Weiterhin ist die Varietät des Ideals definiert als:
+\[
+	V(I) := \{ x \in \GF_2^l \mid \forall f\in I: f(x) = 0 \}
+\]
+
+Wir können mit diesem Wissen nun unsere Problematik in einen anderen Teil
+der Algebra verschieben.
+\begin{theorem}
+Sei \(I\subseteq\GF_2[X_1,\dotsc,X_l]\) ein Ideal und \(f_1,\dotsc,f_n\) eine
+Basis von \(I\).  Dann sind die Nullstellen des Polynomsystems
+\(f_1,\dotsc,f_n\) genau die Elemente der Varietät \(V(I)\):
+\[
+	f_1(x) = \dotsb = f_n(x) = 0 \Leftrightarrow x \in V(I)
+\]
+\end{theorem}
+\begin{proof}
+Wir beweisen in beide Richtungen einzeln.  Sei \(x\) eine Nullstelle des
+Polynomsystems \(f_1,\dotsc,f_n\) und \(f\in I=\langle f_1,\dotsc,f_n\rangle\)
+eine Funktion aus dem Ideal welches durch die Funktionen dieses Systems als
+Basis aufgespannt wird.  Nach Definition des Ideals gibt es also Funktionen
+\(h_1,\dotsc,h_n\in\GF_2[X_1,\dotsc,X_l]\):
+\[
+	f = \sum_{i=1}^n h_i f_i
+\]
+Aus \(f_1(x)=\dotsb=f_n=0\) folgt
+\[
+	f(x) = \sum_{i=1}^n h_i f_i = 0 \Rightarrow x \in V(I)
+\]
+
+Die umgekehrte Richtung folgt direkt aus \(x\in V(I)\) und
+\(f_1,\dotsc,f_n\in I\), schließlich ist die Verietät definiert als die
+gemeinsamen Nullstellen der Funktionen des Ideals.
+\end{proof}
+
+Damit haben wir eine Erkenntnis gewonnen:  Die Nullstellen hängen nur vom Ideal
+ab, nicht jedoch von der Basis!  Das bedeutet, wir können einen Basiswechsel
+durchführen, also andere Basen für das gleiche Ideal finden:
+\[
+	\langle f_1,\dotsc,f_n\rangle = \langle g_1,\dotsc,g_m\rangle
+	\Leftrightarrow
+	f_1(x) = \dotsb = f_n = 0 \Leftrightarrow g_1(x) = \dotsb g_m(x) = 0
+\]
+Wir suchen jetzt \enquote{einfache} Basen für unser Ideal.
+
+Betrachten wir beispielsweise folgende Polynome über den \(\GF_2\):
+\[
+	f_1 = x_1 x_2 + x_1 x_3 + x_2^2 + x_2 x_3 + x_3^2, \qquad
+	f_2 = x_1 x_3 + x_3^2, \qquad
+	f_3 = x_2 + x_3^2
+\]
+Diese Polynome bilden genauso eine Basis für \(I:=\langle f_1,f_2,f_3\rangle\):
+\[
+	g_1 = x_1 x_3 + x_3^2, \qquad
+	g_2 = x_2 + x_3^2, \qquad
+	g_3 = x_3^4
+\]
+Wir können nämlich die einen in die anderen überführen:
+\[
+	f_1 = (x_3 + 1)\underbrace{(x_1 x_3 + x_3^2)}_{=g_1} +
+	      (x_1 + x_2 + x_3^2 + x_3)\underbrace{(x_2 + x_3^2)}_{=g_2} +
+              \underbrace{x_3^4}_{=g_3}
+\]
+Die Bestimmung der Varietät ist aber über die zweite Basis deutlich einfacher.
+
+%TODO cite
+Was sind jedoch \enquote{gute} Basen, und wie findet man diese?  Für unseren
+Nutzen sind sog.\@ (reduzierte) Gröbnerbasen einfach.  Um diese zu finden gibt
+es den Buchberger-Algorithmus und den verbesserten \(F_4\)- und \(F_5\)-Algorithmus
+von Faugere.  Die Laufzeit ist abhängig von der gewählten Monomordnung, aber
+ungefähr subexponentiell!  Damit haben wir unser Problem auf das
+Idealzugehörigkeitsproblem reduziert.
+
+Allgemein gilt, dass unter bestimmten (aber nicht einzuschränkenden)
+Voraussetzungen sich eine Gröbnerbasis in der Form
+\[
+	X_1 - g_1, X_2 - g_2, \dotsc, X_{l-1} - g_{l-1}, g_l
+\]
+finden lässt, mit \(g_1,\dotsc,g_l\in K[X_l]\).
+
+
+\subsection{Interpolationsattacke}
+%TODO cite Jakobsen, Knudsen 1997
+Die letzte Attacke auf Blockchiffren basierend auf algebraischer Analyse
+ist die sogenannte Interpolationsattacke.  Im Gegensatz zu den bisherigen
+Angriffen fixieren hier jedoch \emph{nicht} die Nachricht und versuchen darüber
+den Schlüssel als Lösung eines Gleichungssystems zu berechnen, sondern fixieren
+den Schlüssel und betrachten die Abbildung
+\begin{align*}
+	&\GF_2^n \to \GF_2^n \\
+	&m \mapsto E(m,k)
+\end{align*}
+
+% Auch cf. Rijndel über AES im Anhang
+Die grundlegende Idee ist, dass wir \(\GF_2^n\) als \(\GF_{2^n}\) mit
+geeigneter Addition und Multiplikation zu einem Körper machen können.  Genauer
+ist jeder endliche Körper isomorph zu \(\GF_{p^d}\), wobei \(p\) prim ist und
+\(d\in\mathbb{N}\).  Einen solcher Körper besteht aus den Restklassen
+des Faktorrings \(\GF_p^d := \GF_p[X]/f\cdot \GF_p[X]\) irreduzible
+Polynom \(f\in\GF_p[X]\) von Grad \(\deg(f) = d\) erzeugt wird.
+
+Ein irreduzibles Polynom \(f\in\GF_p[X]\) hat keine trivialen Teiler, das bedeutet
+aus \(gh = f\) folgt \(\deg(g) = 0\) oder \(\deg(g) = 0\).  Weiter können wir
+jedes Polynom \(g\in\GF_p[X]\) in Abhängigkeit von \(f\) eindeutig zerlegen mit
+\(s,r\in\GF_p[X]\) und \(\deg(r) < \deg(f)\):
+\[
+	g(X) = s(X) \cdot f(X) + r(X)
+\]
+So ist beispielsweise für \(g(X) = X^2\) und \(f(X)=X^2\xor X\xor 1\):
+\[
+	X^2 = \underbrace{1}_{s} \cdot \underbrace{(X^2\xor X\xor 1)}_f + \underbrace{(X\xor 1)}_r
+\]
+Wir können also schreiben
+\[
+	g \bmod f =: r
+\]
+Betrachten wir \(\GF_{p^d} = \GF_p/f\cdot \GF_p\), dann besteht diese Menge
+aus den Restklassen bei der Division durch \(f\) -- das sind all jene Polynome
+mit mit einem geringeren Grad als \(\deg(f)\), und zwar genau \(p^d\) Stück.
+Definieren wir nun die Addition und die Multiplikation modulo \(f\), dann ist
+das ein \(\GF_{p^d}\) ein Körper.
+
+Wir zeigen nun ähnlich zu~\ref{thm:eval}, dass wir jede auch jede
+Verschlüsselungsfunktion mit fixiertem Schlüssel als Polynomfunktionen schreiben
+können.
+\begin{theorem}
+Jede Abbildung \(F: \GF_2^n\to\GF_2^n\) lässt sich als Polynom \(f\) von Grad
+\(\deg(f) < 2^n\) darstellen, d.\,h.:
+\[
+	F(x) = \sum_{i=0}^{2^n -1} \alpha_i x^i
+\]
+Mit Koeffizienten \(\alpha_0,\dotsc,\alpha_{n-1}\in\GF_{2^n}\) aus unserem
+Körper.
+\end{theorem}
+
+Dadurch, dass wir nun unsere Funktion als Polynom schreiben können, eröffnen
+sich für uns einige neue Möglichkeiten, und das ist auch der Schlüssel zu dieser
+Attacke.
+\begin{theorem}[Lagrange-Interpolationsformel]
+Sei \(K\) ein Körper und \(F:K\to K\) ein Polynom vom Grad \(\deg(F)=t-1\)  Dann
+lässt sich \(F\) aus \(t\) paarweise verschiedenen Paaren \((x_i, F(x_i))\)
+rekonstruieren:
+\[
+	F(x) = \sum_{i=1}^t F(x_i) \prod_{\substack{j=1\\ j\neq i}}^t \frac{x-x_j}{x_i-x_j}
+\]
+\end{theorem}
+Ist nun also \(F: \GF_2^n \to \GF_2^n\) ein solches Polynom, dann werden \(t\)
+Plaintext-Ciphertextpaare benötigt um \(F\) vollständig zu rekonstruieren und
+somit alle Texte zu entschlüsseln -- ohne den Schlüssel zu kennen!
+
+\paragraph{Abwehrmaßnahmen}
+%TODO cite
+\(F\) sollte einen hohen algebraischen Grad haben (maximal \(2^n -1\) möglich),
+jedoch ist \(\deg(F)\) abhängig von der Definition der Multiplikation (also
+der Wahl des irreduziblen Polynoms über das die Multiplikation definiert wird).
+Genauer, ist \(F:\GF_{2^n}\to\GF_{2^n}\) ein Polynom und weiter
+\(f_1,f_2\in\GF_2[X]\) irreduzibel von Grad \(\deg(f_1)=\deg(f_2)=n\). Dann gilt
+\[
+	\GF_2[X]/f_i\cdot \GF_2[X] = \left\{ g(X) = \sum_{i=0}^{n-1} a_i X^i \;\middle|\; a_0,\dotsc,a_{n-1}\in\GF_2 \right\}
+\]
+Wir identifizieren \(g\) mit dem Vektor \((a_0,\dotsc,a_{n-1})\) (und manchmal
+auch mit \(\sum a_i\).  Betrachten nun
+\begin{align*}
+	F(x) = F_1(x) :=& \sum_{i=0}^{2^n -1} \alpha_i x^i
+	    &&\text{über } \GF_2[X]/f_1 \cdot \GF_2[X] \\
+	F(x) = F_1(x) :=& \sum_{i=0}^{2^n -1} \beta x^i
+	    &&\text{über } \GF_2[X]/f_2 \cdot \GF_2[X]
+\end{align*}
+
+Betrachten wir beispielhaft \(F: \GF_{2^4}\to\GF_{2^4}\) mit \(x\mapsto x^3\),
+wobei die Multiplikation über dem irreduziblen Polynom \(f=X^4+X+1\) definiert
+sei.  Dargestellt über dem irreduziblen Polynom \(g=X^4+X^3+1\) sieht \(F\)
+wiefolgt aus:
+\[
+	x\mapsto x + x^2 + 7x^3 + 15x^4 + 5x^5 + 14x^6 + 14x^8 + 2x^9 + 7x^{10} + 9x^{12}
+\]
+
+\section{Stromchiffren}
+
 \end{document}
-- 
GitLab