Skip to content
Snippets Groups Projects
Commit fd96d160 authored by koenigl's avatar koenigl
Browse files

Add Algebraic Analysis: Groebner & Interpol, move feal 1 Lvl up

parent c19bbd09
Branches
Tags
No related merge requests found
...@@ -405,7 +405,7 @@ können, benötigen wir für eine Erfolgswahrscheinlichkeit von \(\SI{96.7}{\per ...@@ -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. für den Angriff \(N/\lambda\) viele Paare.
\end{remark} \end{remark}
\subsubsection{FEAL-4} \subsection{FEAL-4}
Der Fast data Encipherment ALgorithm (1978) ist eine Blockchiffre auf 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 Blöcken aus \SI{64}{\bit}, wobei FEAL-4 einen \SI{64}{\bit} Rundenschlüssel
nutzt und aus \num{4} Runden besteht. nutzt und aus \num{4} Runden besteht.
...@@ -1183,4 +1183,205 @@ an Variablen die bei der Linearisierung entstehen. Dies geschieht durch einen ...@@ -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 hohen algebraischen Grad der Polynome (potentiell viele Variablen) und dicht
besetzte Polynome (d.\,h.\@ Polynome aus vielen Monomen). 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} \end{document}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment