diff --git a/main.tex b/main.tex index e70789a57cd8370bddc2d0408cdc89b12e252739..4fd48769ab4a04b351121c37e7c4d08d054b1bb3 100644 --- a/main.tex +++ b/main.tex @@ -313,7 +313,7 @@ Dann gilt \langle\alpha_1,k^0\rangle \xor \dotsb \xor \langle\beta_r,k^r\rangle \] mit einer Erfolgswahrscheinlichkeit \(p\) aus den kombinierten -Einzelwahrscheinlichkeiten der Runden \(p_i\): +Einzelwahrscheinlichkeiten der Runden \(p_i\) sind unabhängig von den Schlüsseln: \[ p \geq 1/2 + 2^{r-1} \prod_{i=1}^r \varepsilon_i \] @@ -739,12 +739,14 @@ Wir definieren nun die linke Hälfte als Funktion \(A\) und die rechte als Funkt \] Das bedeutet, \(f\) hängt von dem Plaintext \((L_0,R_0)\), dem Ciphertext \((L_4',R'_4)\) und \(K_0\) ab, während der \(A\) von den Subkeys \(K_1,K_3,K_L,K_R\) -abhängt (also bei festem Schlüssel konstant). +abhängt, also bei festem Schlüssel konstant -- und durch die Gleichheit muss auch +der erste Term für unterschiedliche Plaintexte gleich bleiben! Wir können mit dieser Erkenntnis nun folgenden Angriff durchführen, sofern -\(n\) Paare \(( ({L'_0}^i,{R'_0}^i), ({L'_4}^i, {R'_4}^i) )_{i\leq n}\) bekannt sind: - -%TODO Algo doesn't make sense +\(n\) Paare \(( ({L'_0}^i,{R'_0}^i), ({L'_4}^i, {R'_4}^i) )_{i\leq n}\) bekannt sind. +Dafür probieren wir für jeden \(K_0\in\{0,1\}^{32}\) wiederum jeden Plaintext +durch und berechnen \(f(L_0^i, R_0^i, L_4^i, R_4^i, K_0)\). Wir verwerfen nun alle +die Teilschlüssel, für die nicht alle Auswertungen gleich sind. \subsection{Differentielle Kryptoanalyse} @@ -893,10 +895,9 @@ Rundenfunktionen \(R_i(m) := R(m\xor k^i)\): \Pr(\diff^1\mapsto\diff'^r \mid E) \geq \prod_{i=1}^r \Pr(\delta^i\mapsto\delta'^i \mid R) \] -%TODO wo sind die schlüssel hin? Auch dieser Beweis ist analog zu dem in der linearen Kryptoanalyse~\ref{thm:piling-up-lemma'}, und wir haben genauso eine -untere Schranke! +untere Schranke die unabhängig von den konkreten Schlüsseln ist. \end{theorem} \subparagraph{Induktive Konstruktion} @@ -1051,7 +1052,8 @@ diese strukturerhaltend ist. Wir möchten zeigen, dass es für jede boolesche Funktion ein Polynom im Ring gibt, dessen mit \(\Eval\) zugeordnete Funktion eben unsere Funktion ist. Wir -definieren hierzu die charakteristische (Indikator-)funktion: +definieren hierzu die charakteristische (Indikator-)funktion \(\chi_p\), welche genau +dann zu \(1\) auswertet, wenn ihre Eingabe \(x=p\) ist. \begin{align*} \chi_p:\, &\GF_2^l\to\GF_2 \\ &x\mapsto \begin{cases} @@ -1059,14 +1061,18 @@ definieren hierzu die charakteristische (Indikator-)funktion: 0, &\text{sonst} \end{cases} \end{align*} -Wir können nun jede boolesche Funktion \(F\in\Fn(\GF_2^l,\GF_2)\) über die -Auswertung selbiger für alle \(p\in\GF_2^l\) zusammen mit \(\chi_p\) darstellen: +Wir können nun jede boolesche Funktion \(F\in\Fn(\GF_2^l,\GF_2)\) als eine +Kombinationen von charakteristischen Funktionen darstellen: \[ F(x) = \sum_{p\in\GF_2^l} F(p) \chi_p(x) \] -%TODO \Ima(\Eval) Unterring, abgeschlossen bzgl. + -% f(x) := \Prod_{i=1}^l (X_i\xor p_i\xor 1); \Eval(f) = \chi_p -% \chi_p \in \Ima(\Eval) +Da nun das Bild von \(\Ima(\Eval)\) ein Unterring ist, muss auch \(F(x)\) im +Unterring sein, wenn \(\chi_p\in\Ima(\Eval)\). Da nun für jede beliebige +charakteristische Funktion wir ein Polynom bauen können, dass zu dieser abbildet, +ist \(\Eval\) surjektiv: +\[ + f(X) := \prod_{i=1}^l (X_i\xor p_i\xor 1) \Rightarrow \Eval(f) = \chi_p +\] Nun möchten wir zeigen, dass die erhaltene Darstellung einer booleschen Funktion also Polynom in eine Darstellung mit ausschließlich einfachen Monomen überführt @@ -1109,11 +1115,10 @@ Sei \(F\in\Fn(\GF_2^l,\GF_2)\) eine boolesche Funktion, dann ist der Grad \(f\) mit \(\Eval(f) = F\), welches nur aus einfachen Monomen besteht. \end{definition} -%TODO ist das gemeint? Wir nutzen nun diese Definition des Grades einer booleschen Funktion um eine Korrelation zwischen dem Grad und der Affinität einer Abbildung herzustellen. Wir bezeichnen hierbei eine Abbildung \(f\) als affin-linear, wenn eine lineare -Funktion \(g(x)=mx\) existiert, sodass \(f(x) = g(x) +m\). +Funktion \(\langle a,x\rangle\) existiert, sodass \(f=\langle a,x\rangle\xor 1\). \begin{lemma}\label{lem:affin} Eine Funktion \(f\) ist genau dann affin, wenn \(\deg(f) \leq 1\). Zudem gilt für alle \(f\in\Fn(\GF_2^l,\GF_2)\), dass ihr Grad abhängig von der Eingabelänge @@ -1384,4 +1389,19 @@ wiefolgt aus: \section{Stromchiffren} +Stromchiffren basieren auf der Idee eine pseudozufllige Folge aus einem Schlüssel +abzuleiten -- diese wird dann mit dem zu chiffrierenden Text verknüpft. Eine +übliche Art Stromchiffren zu bauen sind Linear Feedback Shift Registers (LFSRs). +Sie können sehr einfach in Hardware über eben Shift Register realisiert werden +und bieten einen kontinuierliechen Schlüsselstrom. Wir beschäftigen uns nun +zuerst mit dem Aufbau und der mathematischen Modellierung. + +\subsection{Linear Feedback Shift Register} + +Gucken wir uns LFSRs zuerst anhand eines Beispiels an. Wir definieren einen +Vektor aus (öffentlich bekannten) sogenannten Rückkopplungskoeffizienten +\((a_0,\dotsc,a_{10})=(0,0,1,0,0,1,0,0,0,0,1)\). Der Schlüsselstrom wird +berechnet, indem das Shiftregister mit dem Schlüssel \(k_0,\dotsc,k_{10}\) +initialisiert wird. In jedem Takt wird an den Stellen mit \(a_i=1\) + \end{document}