diff --git a/main.tex b/main.tex index 0df093a607409e725fce2014bcff4beaa6eb58c7..e70789a57cd8370bddc2d0408cdc89b12e252739 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}