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

stream ciphers: korrelations

parent bce1ace6
Branches
Tags
No related merge requests found
......@@ -1584,7 +1584,233 @@ Wir haben nun einen Überblick darüber gewonnen, wie unser Angriff ungefähr
ablaufen wird. Wir möchten uns nun genauere Gedanken über die Periode, die
Spur und die Initialisierungswerte der Chiffre machen.
Wir betrachten LFSRs mit irreduziblen charakteristischen Polynomen \(f\).
Wir betrachten LFSRs mit irreduziblen charakteristischen Polynomen \(f\), da
wir uns nur für LFSRs maximaler Periode interessieren. Wir bewegen uns im
Körper \(\GF(\alpha)=\GF_{2^n} = \GF_2[X]/f \cdot \GF_2[X]\) mit der
Spurfunktion
\[
\Tr(\alpha) := \sum_{i=0}^{n-1} \alpha^{2^i}
= \alpha \xor \alpha^2 \xor \alpha^{2^2} \xor \dotsb \xor \alpha^{2^{n-1}}
\]
Zudem ist \(\alpha\in\GF_{2^n}\) eine (beliebige) Nullstelle von \(f\). Wie
schon angedeutet, korrespondiert \(\theta\) eindeutig mit der dem Schlüssel
\(k_0,\dotsc,k_{n-1}\) (bleibt noch zu zeigen):
%TODO: wo?
\[
\text{LFSR erzeugt Strom } (k_t)_{t\in\mathbb{N}}
\Leftrightarrow
\exists\theta\in\GF_{2^n}: k_t = \Tr(\theta\alpha^t)
\]
Wir können mit diesem Wissen wir einige Sachen über LFSRs und ihre
Periode sagen.
\begin{theorem}
Ein LFSR der Länge \(n\) mit irreduziblem charakteristischen
Polynom \(f\) hat genau dann maximale Periode \(2^n -1\), wenn
alle Nullstellen primitiv sind. Hierbei bezeichnen wir die Ordnung
einer Nullstelle als das minimale \(k\in\mathbb{N}\), sodass
\(a^k = 1\) -- eine Nullstelle ist dann primitiv, wenn ihre Ordnung
\(k=2^n -1\). In diesem Fall erzeugt \(\alpha\) (fast) alle Elemente
unseres Körpers \(\GF_{2^n}\setminus\{0\}\).
\end{theorem}
\begin{proof}
Wir wissen, dass jede vom LFSR erzeugte Folge für eine Nullstelle \(\alpha\)
mit dem Polynom \(f\) und \(\theta\in\GF_{2^n}\) die Form
\(k^t=\Tr(\theta\alpha^t)\) hat. Wir können daraus folgern, dass für die
Ordnung \(k\) der Nullstelle gilt, dass \((\Tr(\theta\alpha^t))_t\) eine Periode
von maximal \(k\) haben muss.
Andersherum, hat \((\Tr(\theta\alpha^t))_t\) eine Periode \(k\neq 0\), dann
gilt \(\Tr(\theta\alpha^{t+k}) = \Tr(\theta\alpha^t)\), somit gilt dank
der Linearität von \(Tr\) (Satz 9.3):
%TODO insert ref
\[
\forall t\in\mathbb{N}:
0 = \Tr(\theta(\alpha^{t+k} +\alpha^t))
= \Tr(\theta\alpha^t(\alpha^k + 1))
\]
Mit Satz 9.7 erhalten wir außerdem
%TODO ref
\[
\Tr(\theta\alpha^0) = \Tr(\theta\alpha^1) = \dotsb = \Tr(\theta\alpha^{n-1} = 0
\Rightarrow
\theta = 0
\]
Nutzen wir dieses Wissen für \(\Theta(a^k +1)\), zeigt es dass gelten muss
\((a^k+1) = 0\), somit würde \(\alpha\) eine Nullstelle haben mit Grad
maximal \(k\).
Somit sehen wir über Kontraposition
\[
\Tr(\theta\alpha^t) \text{ hat Periode von maximal } k
\Leftrightarrow
\alpha \text{ hat Ordnung von maximal } k
\]
\end{proof}
In diesem Beweis haben wir die eindeutige Korrelation von \(\theta\) mit
dem Schlüssel genutzt, sowie die Sätze 9.3 und 9.7. Fangen wir nun an diese
Lücken zu schließen.
% insert ref.
%TODO totales Chaos. Wir haben (?)
%
% 9.1: 9.3, 9.7, 9.4
% F6 = 9.4 9.8
% 9.2: bottom
% 9.3: 9.2
% 9.4: 9.3
% 9.5: 9.2
% 9.6: 9.2
% 9.7: 9.5, 9.6
% 9.8: 9.7
%
% 9.1
% --^-------
% / | \
% | | F6 |
% | |/ \ |
% | 9.4 9.8 |
% |/^ ^\/
% 9.3 9.7
% ^ /^\
% | 9.5 9.6
% | ^ ^
% \------|---/
% 9.2
%
\subsection{Berlekamp-Messay-Algorithmus}
%TODO
\subsection{Korrelationsattacken}
Bisher haben wir uns ausschließlich mit der Analyse eines LFSRs beschäftigt
und mit der Errechnung eines LFSRs für eine gegebene Bitfolge, also gezeigt,
dass die Geheimhaltung der Rückkopplungskoeffizienten keinen Gewinn in
Sachen Sicherheit bringt. Weiterhin wissen wir, dass ein einzelnes LFSR
sowieso unsicher ist, da wir einfach \enquote{zurückrechnen} können. Die
einzige Art wie ein LFSR also sicher sein kann, ist wenn wir mehrere
kombinieren und eine Auswahlfunktion auf diese anwenden um den tatsächlichen
Schlüsselstrom zu geniereren. Haben wir also \(m\) LFSRs, dann ist die
Auswahlfunktion \(f:\GF_2^m\to\GF_2\):
%TODO Grafik
Was sind aber Kriterien für eine \enquote{gute} Auswahlfunktion? Erstmal
sollte \(f\) möglichst gleichverteilt sein, d.\,h.\@ \(\Pr(f(x)=0)=1/2\),
da einzelne LFSRs mit maximaler Periode sehr gute statistische Eigenschaften
haben (d.\,i. ähnlich viele Nullen wie Einsen). Ist nun \(f\) gleichverteilt,
überträgt sich diese Eigenschaft auf den generierten Schlüsselstrom. Des
weiteren soll auch dieser Schlüsselstrom eine große Periode haben.
Wir erinnern uns, eine boolesche Funktion \(f:\GF_2^m\to\GF_2\) lässt sich
eindeutig als Summe einfacher Monome darstellen. %TODO ref
Wir werden nun uns dieses Polynom genauer angucken.
\begin{theorem}\label{thm:stream-lincomp}
Seien \(m\) LFSR \(A_1,\dotsc,A_m\) mit jeweiliger Länge \(n_1\dotsc,n_m >2\)
und maximalen Perioden gegeben. Weiter seien die Längen paarweise teilerfremd.
Sei nun \(F\) das reale Polynom, dass aus \(f\) entsteht, wenn die Addition
im \(\GF_2\) \(\xor\) durch das reguläre \(+\) ersetzt wird. Dann hat die
obige Konstruktion die lineare Komplexität \(F(n_1,\dotsc,n_m)\).
\end{theorem}
Der Beweis wird ausgeführt in Cusick, Stanica: Cryptgraphic Boolean
Functions and Applications.
%TODO ref.
Tatsächlich wird zusätzlich in dem Beweis folgendes über die Periode der
Gesamtkonstruktion gezeigt.
\begin{theorem}
Es gelten die Voraussetzungen des obigen Satzes. Dann hat die obige
Konstruktion eine Periode von mindestens \(2^{F(n_1,\dotsc,n_m)}\).
\end{theorem}
Die Idee von Korrelationsangriffen ist es nun Schwächen in der Funktion \(f\)
zufinden, um weniger Schritte zu benötigen als mit Schlüsselexhaustion
(\(2^{n_1}\cdot \dotsb \cdot 2^{n^m}\)). Angenommen, es gelte für \(f\),
dass dessen Ausgabe nicht unähnlich der des ersten LFSRs ist (d.\,i.\@ sie
korrelieren):
\[
\Pr(f(x_1,\dotsc,x_m) = x_1) =: p \neq \frac{1}{2}
\]
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)
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
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.
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}\)
der erste Teilschlüssel bestimmt werden -- der Gesamtaufwand der Schlüsselsuche
reduziert sich damit auf \(2^{n_1} + 2^{n_2} \cdot\dotsb 2^{n_m}\). In
den Worten der linearen Kryptoanalyse, haben wir eine lineare Relation
\((\alpha,beta)\) für \(f\) gefunden, sodass mit
\((\alpha=(1,0,\dots,0)\in\GF_2^m\) und \(\beta=(1)\in\GF_2\) gilt, dass
\[
\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.
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
beschränkt:
\begin{align*}
g_\alpha: &\;\GF_2^t \to \GF_2 \\
&x\mapsto \sum_{j=1}^t \alpha_{i_j} x_j
\end{align*}
Dann korreliert die Ausgabe von \(f\) mit der von \(g_\alpha\).
%TODO grafik
Es reduziert sich die Schlüsselsuche auf
\(2^{n_{i_1}}\cdot\dotsb\cdot 2^{n_{i_t}} + 2^{n_{i'_1}}\cdot\dotsb\cdot 2^{n_{i'_{m-t}}}\).
\paragraph{Gegenmaßnahmen}
Wir möchten uns nun damit beschäftigen, wie wir solche Korrelationen
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:
\[
\Pr(f(x_1,\dotsc,x_m) = \langle\alpha,x\rangle) = \frac{1}{2}
\]
Eine Funktion \(f\) heißt zudem \(t\)-resilient, wenn \(f\) zusätzlich
gleichverteilt ist.
\end{definition}
Wir möchten möglichst eine \(m\)-resiliente Funktion, dann wäre ein
Korrelationsangriff genauso aufwändig wie Brute-Force. Wie wir aber in
Abschnitt 13
% TODO ref
sehen werden, gibt es keine solcher Funktionen. Nehmen wir das nächstbeste,
also \(m-1\)-resiliente Funktionen. Jedoch sind solche Funktionen
affin, der Schlüsselstrom also weiter linear abhängig vom Schlüssel. Wir
können also höchstens \(m-2\)-resilent fordern.
%TODO im Skript steht hier abwechselnd resilient und korrelationsimmun.
Es gilt sogar nach Siegenthaler 1984, dass eine Funktion \(f\) die
\(t\)-resilient ist, einen algebraischen Grad von maximal \(m-t\) haben
muss.
%TODO ref.
Wir möchten jedoch einen hohen Grad haben um nach Satz~\ref{thm:stream-lincomp}
eine hohe lineare Komplexität des Schlüsselstroms zu erreichen. Dies
verhindert die im nächsten Kapitel algebraischen Angriffe.
Man kann bei Stromchiffren also immer einen Angriff kreieren, der
besser ist als Brute Force -- als Gegenmaßnahmen muss der Schlüssel
entsprechend groß gewählt werden.
\subsection{Algebraische Angriffe}
\end{document}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment