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

More Stream ciphers

parent a0612e5c
Branches
Tags
No related merge requests found
......@@ -947,7 +947,7 @@ in Abhängigkeit von \(d\) und \(p_\Gamma\) berechnen.
%TODO ref Kap. 13
Der Erfolg unserer Angriffe ist abhängig von den Linearitäten bzw.\@ den
Differenztabellen -- diese werden wir uns später in Kapitel%~\ref{}
Differenztabellen -- diese werden wir uns später in Kapitel 13%~\ref{}
angucken. Auch verringern mehrere aktive parallele S-Boxen die
Erfolgswahrscheinlichkeit (s.\@ Sätze~\ref{thm:piling-up-lemma}
und~\ref{thm:piling-up-lemma-diff}) -- wir möchten also die Permutation
......@@ -1389,11 +1389,11 @@ wiefolgt aus:
\section{Stromchiffren}
Stromchiffren basieren auf der Idee eine pseudozufllige Folge aus einem Schlüssel
Stromchiffren basieren auf der Idee eine pseudozufällige 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
und bieten einen kontinuierlichen Schlüsselstrom. Wir beschäftigen uns nun
zuerst mit dem Aufbau und der mathematischen Modellierung.
\subsection{Linear Feedback Shift Register}
......@@ -1405,6 +1405,57 @@ Vektor aus (öffentlich bekannten) sogenannten Rückkopplungskoeffizienten
\]
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\)
\(a_i=1\) der aktuelle Wert des Registers abgenommen und diese Werte miteinander
addiert. Dieses Ergebnis wird wiederum links ins Register zurück eingespielt.
%TODO grafik
Formal besteht ein LFSR also aus einem Initialzustand \((k_0,\dotsc,k_{10})\in\GF_2^n\)
aus dem eingesetzten Repo bei einer Registerlänge von \(n\), einem ebensolangen
Rückkopplungskoeffizienten \((a_0,\dotsc,a_{10})\). Dann erfüllt der Schlüsselstrom
aus \(k_t\) mit \(t\geq n-1\) nach folgender Gleichung:
\[
k_t := a_0 k_{t-n} \xor \dotsb \xor a_{n-1} k_{t-1}
\]
Erste Beobachtungen ergeben, dass für einen Initialzustand von \((0,\dotsc,0)\)
eine Nullfolge generiert wird. Ist der Initialzustand jedoch nicht der
NUllvektor und ist der \enquote{letzte} Rückkopplungskoeffizient \(a_0\neq 0\),
dann wird der erzeugte Schlüsselstrom nie \(n\) viele Nullen hintereinander
ausgeben, also
\[
(k_{t-n},\dotsc,k_{t-1} \neq (0,\dotsc,0), \qquad \forall t\geq n
\]
Weiterhin ist der Schlüsselstrom periodisch mit einer maximalen Periode von
\(2^n -1\). Dadurch, dass es auch maximal \(2^n -1\) verschiedene \(n\)-Tupel
ungleich des Nullvektors gibt, muss spätestens nach so vielen Takten der erste
Zustand wieder im LFSR\@.
Zudem können wir bei einer gegebenen Bitfolge mit Periode \(N\) ein LFSR mit
Registerlänge \(N\) und der Rückkopplung \(a_0=1\) und \(a_1=\dotsb=a_{N-1}=0\)
bauen, welches diese Bitfolge generiert. Wir werden später den besseren
Berlekamp-Massey-Algorithmus kennenlernen.
Wichtig ist: LFSRs sind alleine nicht sicher, da wir eine einfache known-plaintext
Attacke durchführen können, indem wir \(n\) Plaintexte \(m_t,\dotsc,m_{t+n}\)
mit den zugehörigen Ciphertexten \(c_i=m_i\xor k_i\) sammeln. Wir können nun
direkt einen \(n\) langen Teil des Schlüsselstroms errechnen:
\[
(k_t,\dotsc,k_{t+n}) = (m_t,\dotsc,m_{t+n}) \xor (c_t,\dotsc,c_{t+n})
\]
Mit diesem lassen sich dann auch die Nachfolger (und Vorgänger) berechnen.
Wir nutzen also LFSRs nur als Bausteine für eine komplette Chiffre, indem wir
mehrere kombinieren und eine Auswahlfunktion \(f\) auf die Ausgaben der einzelnen
LFSRs anwenden, die für jedes Output-Bit der Gesamtchiffre spezifiziert, welches
LFSR konkret verwendet wird.
Wir betrachten nun jedoch erstmal einzelne LFSRs und möchten wissen, welche
eine maximale Periode haben um eine möglichst \enquote{gute} Chiffre zu erhalten.
Als Angreifer wollen wir dann untersuchen, wie wir bei einem gegebenen Bitstrom
den Rückkopplungskoeffizienten bestimmen können. Abschließend werden wir uns dann
mit der Auswahlfunktion beschäftigen, und welche Angriffe es darauf gibt.
\paragraph{Algebraische Beschreibung des Schlüsselstroms}
\end{document}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment