diff --git a/main.tex b/main.tex index 00befffa3fa4201a25c5f0bb25c026b90362466f..4a328254c92e6cf20014fdd884e04e8f0fc1326d 100644 --- a/main.tex +++ b/main.tex @@ -1455,7 +1455,113 @@ den Rückkopplungskoeffizienten bestimmen können. Abschließend werden wir uns mit der Auswahlfunktion beschäftigen, und welche Angriffe es darauf gibt. \paragraph{Algebraische Beschreibung des Schlüsselstroms} +Wir werden nun versuchen den generierten Schlüsselstrom über eine +polynomielle Rekursionsgleichung zu beschreiben. +Sei dafür ein LFSR über seine Rückkopplungskoeffizienten \((a_0,\dotsc,a_{n-1})\) +gegeben, welches unsere Rekursionsgleichung erfüllt: +\[ + k_t := a_0 k_{t-n} \xor \dotsb \xor a_{n-1} k_{t-1} +\] +Wir möchten nun ein \(\alpha\) finden, sodass wir alternativ den Schlüsselstrom +also \(k_t=\alpha^t\) für \(t\in\mathbb{N}\) beschreiben können. +Ein solches \(\alpha\) müsste somit die Rekursionsgleichung erfüllen, also +\begin{align*} + k_t &= a_0 k_{t-n} \xor \dotsb \xor a_{n-1} k_{t-1} && \mid k_t = \alpha^t \\ + \alpha^t &= a_0 \alpha^{t-n} \xor \dotsb \xor a_{n-1} \alpha^{t-1} && \mid \xor \alpha^t \\ + 0 &= a_0 \alpha^{t-n} \xor \dotsb \xor a_{n-1} \alpha^{t-1} \xor \alpha^t && \mid \cdot {(\alpha^{t-n})}^{-1} \\ + 0 &= a_0 \alpha^0 \xor \dotsb \xor a_{n-1} \alpha^{n-1} \xor \alpha^n && \mid X:=\alpha\\ + f(X) &= a_0 X^0 \xor \dotsb \xor a_{n-1} X^{n-1} \xor X^n = 0 +\end{align*} +Wir suchen also \(X\), sodass dieses Polynom Null wird, sprich die Nullstelle +von dem sogenannten charakteristischen Polynom des LFSRs, \(f\). + +Wir werden in fast allen Fällen jedoch kein \(X\in\GF_2\) finden, welches diese +Eigenschaft hat, d.\,h.\@ wir können nicht \(\alpha\in\GF_2\) suchen, sondern in +einem anderen Körper. Stattdessen suchen wir unsere Lösung in dem minimalen, +durch Adjunktion mit \(\alpha\) erhaltenen, Erweiterungskörper +\(\GF_2(\alpha) \supseteq \GF_2 \cap \{\alpha\}\). Um diesen zu finden, +betrachten wir das über eine Nullstelle \(\alpha\) definierte Ideal +\[ + I_\alpha := \{ g\in\GF_2[X] \mid g(\alpha) = 0 \} +\] +Da \(I_\alpha\) ein Ideal ist (\(\GF_2[X]\) ist Hauptidealring), existiert ein +eindeutiges, irreduzibles Polynom \(\mu\in\GF_2[X]\), sodass +\[ + I_\alpha = \mu \GF_2[X] +\] +Dieses sogenannte Minimalpolynom spannt also -- wie im vorherigen Kapitel -- einen +Körper \(\GF_2[X]/\mu \cdot \GF_2[X]\) über die Restklassen auf. Da nun auch +\(f\in I_\alpha\) teilt \(\mu\mid f\). Ist nun \(f\) irreduzibel, bedeutet das +\(\mu = f\). Tatsächlich ist der durch \(\mu\) bzw.\@ aufgespannte Körper der +von uns gesuchte minimale Erweiterungskörper: +\[ + \GF_2(\alpha) = \GF_2[X]/f\cdot\GF_2[X] +\] + +%TODO environment +\paragraph{Beispiel} +Gucken wir das an einem Beispiel mit einem LFSR mit Registerlänge \(2\) an +und Rückkopplungskoeffizienten \((a_0,a_1)=(1,1)\): +%TODO grafik + +Die Rekursionsgleichung ergibt sich dann als \(k_t=k_{t-1}\xor k_{t-2}\). +Mit einem Schlüssel von \(k_1=1\), \(k_0=0\) erhalten wir den Bitstrom mit +maximaler Periode \(2^2 -1=3\) +\[ + k_t = 0, 1, 1, 0, 1, 1, 0, 1, 1, \dotsc +\] +Nehmen wir also an, dass es eine Lösung gibt, sodass \(k_t=\alpha^t\), dann ist +\(\alpha\) Nullstelle des charakteristischen Polynoms \(f(X)=X^2\xor X\xor 1\). +Dieses Polynom ist irreduzibel über \(\GF_2\), damit finden wir die Nullstelle +in \(\GF(\alpha)\). Dieser Körper enthält die Polynome von einem Grad maximal +\(1\), d.\,h.: +\[ + \GF_2(\alpha) = \{ 0, 1, X, X\xor 1 \} +\] +Es gelten folgende Äquivalenzen: +\begin{align*} + XX = X^2 = X\xor 1 \mod f \\ + X(X\xor 1) = X^2\xor X = 1 \mod f \\ + (X\xor 1)(X\xor 1) = X^2\xor 1 = X \mod f +\end{align*} +Somit sind \(\alpha_1:=X\) und \(\alpha_2:=X\xor 1 = X^2\) die Nullstellen von +\(f\), sie erfüllen beide die Rekursionsgleichung. Da die Rekursionsgleichung +linear ist, erfüllt auch für beliebige \(a,b\in\GF_2\) jede Kombination +\(a\alpha_1^t\xor b\alpha_2^t\) die Gleichung. + +Nunn möchten wir die Initialwerte \(k_0=0\), \(k_1=1\) berücksichtigen, hierzu +setzen wir ein: +\begin{align*} + 0 = k_0 &= a\alpha_1^0 \xor b\alpha_2^0 = a\xor b \\ + 1 = k_1 &= a\alpha_1^1 \xor b\alpha_2^1 +\end{align*} +Wir erhalten damit \(a=b=1\). Da nach Rekursion \(\alpha_2=\alpha_1^2\), +erhalten wir: +\[ + k_t = \alpha_1^t \xor \alpha_2^t = + \alpha_1^t \xor ((\alpha_1)^2)^t = + \alpha_1^t \xor ((\alpha_1)^t)^2 =: \Tr(\alpha_1^t) +\] +Wir nennen \(\Tr(\alpha)\) die Spur (Trace) von \(\alpha\). Mit dieser können +wir nun die konkreten Werte der Folge berechnen: +\begin{align*} + k_0 =& \Tr(\alpha_1^0) = \alpha_1^0 \xor (\alpha_1^0)^2 = 1\xor 1^2 = 0 \\ + k_1 =& \Tr(\alpha_1^1) = \alpha_1^1 \xor \alpha_1^2 = + \alpha_1 \xor \alpha_1 \xor 1 = 1 \\ + k_2 =& \Tr(\alpha_1^2) = (\alpha_1\xor 1)\xor (\alpha_1\xor 1)^2 = + (\alpha_1\xor 1)\xor \alpha_1 = 1 \\ + k_3 =& \Tr(\alpha_1^3) = \alpha_1^3\xor (\alpha_1\xor 1)^3 = + 1\xor 1 = 0 \\ + \vdots\,& +\end{align*} + +\paragraph{Algebraische Analyse} +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\). \end{document} diff --git a/template.tex b/template.tex index ff063ef4cc5dbdd79fdabef907c626fb78339c3a..28434dbe27f2a41f61c4d83dd40e5a84349b0100 100644 --- a/template.tex +++ b/template.tex @@ -9,15 +9,14 @@ \DeclareMathOperator{\Ima}{Im} \DeclareMathOperator{\rk}{rg} \DeclareMathOperator{\rem}{rem} -\DeclareMathOperator{\Eval}{\mathsf{Eval}} -\DeclareMathOperator{\Gen}{\mathsf{Gen}} -\DeclareMathOperator{\Dec}{\mathsf{Dec}} -\DeclareMathOperator{\Enc}{\mathsf{Enc}} -\DeclareMathOperator{\PrivK}{\mathsf{PrivK}} -\DeclareMathOperator{\eav}{\mathsf{eav}} -\DeclareMathOperator{\mult}{\mathsf{mult}} +\DeclareMathOperator{\Eval}{Eval} +\DeclareMathOperator{\Tr}{Tr} \DeclareMathOperator{\xor}{\oplus} \DeclareMathOperator{\negl}{negl} +\DeclareMathOperator{\Gen}{Gen} +\DeclareMathOperator{\Dec}{Dec} +\DeclareMathOperator{\Enc}{Enc} + \newcommand{\Diff}{\Delta} \newcommand{\diff}{\delta}