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

criteria: Parseval

parent a9f515a7
No related branches found
No related tags found
No related merge requests found
...@@ -1446,7 +1446,7 @@ direkt einen \(n\) langen Teil des Schlüsselstroms errechnen: ...@@ -1446,7 +1446,7 @@ direkt einen \(n\) langen Teil des Schlüsselstroms errechnen:
\] \]
Mit diesem lassen sich dann auch die Nachfolger (und Vorgänger) berechnen. 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 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 mehrere kombinieren und eine Kombinierfunktion \(f\) auf die Ausgaben der einzelnen
LFSRs anwenden, die für jedes Output-Bit der Gesamtchiffre spezifiziert, welches LFSRs anwenden, die für jedes Output-Bit der Gesamtchiffre spezifiziert, welches
LFSR konkret verwendet wird. LFSR konkret verwendet wird.
...@@ -1455,7 +1455,7 @@ geheimzuhalten. Wir werden nun sehen, dass wir anhand eines Schlüsselstroms ei ...@@ -1455,7 +1455,7 @@ geheimzuhalten. Wir werden nun sehen, dass wir anhand eines Schlüsselstroms ei
entsprechendes LFSR bauen können -- dadurch also nichts gewonnen ist. Hierzu entsprechendes LFSR bauen können -- dadurch also nichts gewonnen ist. Hierzu
betrachten wir nun was es bedeutet, wenn ein LFSR maximale Periode hat um betrachten wir nun was es bedeutet, wenn ein LFSR maximale Periode hat um
dann bei gegebenen Bitstrom die Koeffizienten bestimmen zu können. Abschließend dann bei gegebenen Bitstrom die Koeffizienten bestimmen zu können. Abschließend
werden wir uns dann mit der Auswahlfunktion beschäftigen, und welche Angriffe es werden wir uns dann mit der Kombinierfunktion beschäftigen, und welche Angriffe es
darauf gibt. darauf gibt.
\paragraph{Rekursive Beschreibung von LFSRs} \paragraph{Rekursive Beschreibung von LFSRs}
...@@ -1692,12 +1692,12 @@ dass die Geheimhaltung der Rückkopplungskoeffizienten keinen Gewinn in ...@@ -1692,12 +1692,12 @@ dass die Geheimhaltung der Rückkopplungskoeffizienten keinen Gewinn in
Sachen Sicherheit bringt. Weiterhin wissen wir, dass ein einzelnes LFSR Sachen Sicherheit bringt. Weiterhin wissen wir, dass ein einzelnes LFSR
sowieso unsicher ist, da wir einfach \enquote{zurückrechnen} können. Die 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 einzige Art wie ein LFSR also sicher sein kann, ist wenn wir mehrere
kombinieren und eine Auswahlfunktion auf diese anwenden um den tatsächlichen kombinieren und eine Kombinierfunktion auf diese anwenden um den tatsächlichen
Schlüsselstrom zu geniereren. Haben wir also \(m\) LFSRs, dann ist die Schlüsselstrom zu geniereren. Haben wir also \(m\) LFSRs, dann ist die
Auswahlfunktion \(f:\GF_2^m\to\GF_2\): Kombinierfunktion \(f:\GF_2^m\to\GF_2\):
%TODO Grafik %TODO Grafik
Was sind aber Kriterien für eine \enquote{gute} Auswahlfunktion? Erstmal Was sind aber Kriterien für eine \enquote{gute} Kombinierfunktion? Erstmal
sollte \(f\) möglichst gleichverteilt sein, d.\,h.\@ \(\Pr(f(x)=0)=1/2\), sollte \(f\) möglichst gleichverteilt sein, d.\,h.\@ \(\Pr(f(x)=0)=1/2\),
da einzelne LFSRs mit maximaler Periode sehr gute statistische Eigenschaften da einzelne LFSRs mit maximaler Periode sehr gute statistische Eigenschaften
haben (d.\,i. ähnlich viele Nullen wie Einsen). Ist nun \(f\) gleichverteilt, haben (d.\,i. ähnlich viele Nullen wie Einsen). Ist nun \(f\) gleichverteilt,
...@@ -2030,4 +2030,222 @@ Wir unterscheiden nun drei Fälle: ...@@ -2030,4 +2030,222 @@ Wir unterscheiden nun drei Fälle:
\end{enumerate} \end{enumerate}
\end{proof} \end{proof}
\section{Effiziente Berechnung kryptographischer Gütekriterien}
Nachdem wir uns mit den einzelnen Chiffren, Angriffen auf diesen und
Kriteren für die Durchführbarkeit dieser beschäftigt haben, möchten wir
uns nun ansehen wie wir \emph{effizient} die Qualität einer Chiffre
berechnen können (also ohne einen gesamten Angriff zu fahren oder zu
simulieren). Einige Kriterien für die Güte haben wir dabei schon
kennengelernt, wie den Grad einer booleschen Funktion, die Möglichkeiten
der Approximation von \(f\) durch lineare Funktionen, die stochastische
Verteilung von \(f\), Korrelationsimmunität, Immunität gegen differenzielle
Attacken, noch nicht (direkt) jedoch das Avalanche-Kriterium.
Wir werden nun auf einige dieser detaillierter eingehen.
\subsection{Algebraische Normalform}
Gucken wir uns die Problematik ersteinmal an einem Beispiel an und
betrachten \(f(x_1,x_2)=x_1\cdot x_2\xor 1\). Durch Auswertung erhält man
die Wertetabelle von \(f\): \(f(0,0)=1\), \(f(0,1)=1\), \(f(1,0)=1\) und
\(f(1,1)=0\). Wir fragen uns wie man aus der Wertetabelle die
Polynomdarstellung -- ud damit den algebraischen Grad -- von \(f\)
bestimmt. Unser Ansatz ist eine Basistransformation durchzuführen.
Die Menge der booleschen Funktionen \(\Fn(\GF_2^n,\GF_2)\cong\GF_2^{2^n}\)
isomorph zu einem Vektorraum über den \(\GF_2\). Die Basis für die
Darstellung über Wertetabelle ist \(\Base_W = \{\chi_p \mid p\in\GF_2^n\}\),
während die für die Darstellung über Polynome
\(\Base_P = \{x_i^{i_1}\dotsb x_n^{i_n} \mid i_1,\dotsc,i_n\in\GF_2\}\) ist.
Wir führen nun einen Basiswechsel durch, über die Matrix:
\[
S_n = \bigotimes_{i=1}^n S_1, \qquad
S_1 = \begin{pmatrix}
1 & 0 \\
1 & 1\end{pmatrix}
\]
D.\,h.\@ bspw.\@ für \(S_2\):
\[
S_2 = \begin{pmatrix}
1\cdot S_1 & 0\cdot S_1 \\
1\cdot S_1 & 1\cdot S_1
\end{pmatrix} = \begin{pmatrix}
1 & 0 & 0 & 0 \\
1 & 1 & 0 & 0 \\
1 & 0 & 1 & 0 \\
1 & 1 & 1 & 1 \end{pmatrix}
\]
Beispielsweise für \(f(x_1,x_2)=x_1 x_2\xor 1\) gilt
\[
f=\begin{pmatrix}
f(0,0) \\
f(0,1) \\
f(1,0) \\
f(1,1)\end{pmatrix} = \begin{pmatrix}
1 \\
1 \\
1 \\
0 \end{pmatrix}
\]
Also \(f=1\chi_{00} + 1\chi_{01} + 1\chi_{10} + 0\chi_{11}\).
Umgekehrt gilt
\[
S_2 \cdot f = S_2 \cdot \begin{pmatrix}
1 \\
1 \\
1 \\
0 \end{pmatrix} = \begin{pmatrix}
1 \\
0 \\
0 \\
1 \end{pmatrix}
\]
Die Polynomdarstellung von \(f\) ist somit
\[
f = 1x_1^0 x_2^0 + 0x_1^0 x_2^1 + 0x_1^1 x_2^1 + 1x_1^1 x_2^1
\]
Der Aufwand für die berechnung ist der einer \(2^n\times 2^n\)-Matrix und
\(2^n\)-Vektor, dementsprechend \(2^{2n}\) Operationen. Mit der schnellen
Fouriertransformation ist dies sogar reduzierbar auf \(n2^n\) Operationen.
\subsection{Approximation durch lineare Funktionen}
Bei einer linearen Attacke auf Blockchiffre haben wir die lineare Approximationen
für die linearen Abbildungen der nichtlinearen S-Boxen \(\GF_2^n\to\GF_2^m\) gesucht,
bei Stromchiffren ging es um die booleschen Funktionen der nichtlinearen
Kombinierfunktionen \(\GF_2^n\to\GF_2\). Die Grundidee war die selbe, wir
finden eine Relation \((\alpha,\beta)\) mit
\[
\Pr(\langle\alpha, x\rangle = \langle\beta,f(x)\rangle) = p \neq \frac{1}{2}
\]
Wir betrachten im ersten Schritt nur Funktionen \(f:\GF_2^n\to\GF_2\) (also
für Stromchiffren).
\begin{definition}
Sei \(f:\GF_2^n\to\GF_2\). Wir nennen nun \(\hat{f}\) die Fouriertransformierte
von \(f\) mit
\begin{align*}
\hat{f}: &\GF_2^n\to\mathbb{Z} \\
&\alpha\mapsto\sum_{x\in\GF_2^n} (-1)^{\langle\alpha,x\rangle} f(x)
\end{align*}
und \(\hat{\chi}_f\) die \textbf{Walshtransformierte} von \(f\) mit
\begin{align*}
\hat{\chi}_f: &\GF_2^n\to\mathbb{Z} \\
&\alpha\mapsto\sum_{x\in\GF_2^n} (-1)^{\langle\alpha,x\rangle\xor f(x)}
\end{align*}
Hierbei ist \(\hat{\chi}_f\) die Fouriertransformierte von
\(\chi_f(x)=(-1)^{f(x)}\).
\end{definition}
Wir können mit der Walshtransformierten viele Informationen über \(f\)
gewinnen, so misst \(\hat{\chi}_f(0)\) die Verteilung von \(f\):
\[
\hat{\chi}_f(0) = \sum_{x\in\GF_2} (-1)^{f(x)}
= |\{x \mid f(x) = 0 \}| - |\{x \mid f(x) = 1 \}|
\]
Ist \(\hat{\chi}_f(0)=0\) ist \(f\) gleichverteilt.
Die Auswertung \(\hat{\chi}_f(\alpha)\) misst dagegen die Übereinstimmung
von \(f\) mit der linearen Abbildung \(x\mapsto\langle\alpha,x\rangle\):
\[
\hat{\chi}_f(\alpha) = \sum_{x\in\GF_2^n} (-1)^{\langle\alpha,x\rangle \xor f(x)}
= |\{ x\mid \langle\alpha, x\rangle = f(x)\}| - |\{x\mid \langle\alpha, x\rangle \neq f(x)\}|
\]
Es gilt also \(-2^n\leq\hat{\chi}_f(\alpha)\leq 2^n\) mit
\(\hat{\chi}_f(\alpha)=2^n\), wenn \(f=\langle\alpha,\cdot\rangle\) und
\(\hat{\chi}_f(\alpha)=-2^n\), wenn \(f=\langle\alpha,\cdot\rangle\xor 1\).
Unser Ziel ist es nun \(f\) zu finden mit keiner Übereinstimmung, also
\(\hat{\chi}_f(\alpha)=0\). Dann gilt \(\Pr(\langle\alpha,x\rangle=f(x))=\frac{1}{2}\),
d.\,h.\@ \(f\) ist nicht durch \(\langle\alpha,\cdot\rangle\) approximierbar.
Nur: Geht das für alle Relationen \(\alpha\in\GF_2^n\)?
\begin{theorem}[Parseval]\label{thm:parseval}
Für alle booleschen Funktionen \(f:\GF_2^n\to\GF_2\) gilt
\[
\sum_{\alpha\in\GF_2^n} \hat{\chi}_f(\alpha)^2 = 2^{2n}
\]
\end{theorem}
Die Antwort lautet also nein. Für den Beweis benötigen wir aber erst
folgendes Lemma.
\begin{lemma}\label{lem:parseval-1}
Lineare Funktionen ungleich Null, die von \(\GF_2^n\) auf \(\GF_2\) abbilden,
sind gleichverteilt, d.\,h.:
\[
\forall\alpha\in\GF_2^n: \sum_{x\in\GF_2^n} (-1)^{\langle\alpha,x\rangle}
= \begin{cases} 0, &\alpha \neq 0 \\
2^n, &\text{sonst}
\end{cases}
\]
\end{lemma}
\begin{proof}
Wir unterscheiden zwei Fälle. Betrachten wir erstmal den Nullvektor
\(\alpha=(0,\dotsc,0)\in\GF_2^n\), dann gilt
\[
\sum_{x\in\GF_2^n} (-1)^{\langle (0,\dotsc,0),x\rangle}
= \sum_{x\in\GF_2^n} (-1)^0 = 2^n
\]
Nun alle anderen Vektoren \(\alpha\in\GF_2^n\setminus\{(0,\dotsc,0)\}\). Dann
existiert \(c\in\GF_2^n\) mit \(\langle\alpha,c\rangle\neq 0\). Seien weiter
die Meng der Werte, sodass \(\alpha\) auf Null abbildet
\(F_0 := \{ x \mid \langle \alpha,x\rangle = 0 \}\) und analog
\(F_1 := \{ x \mid \langle \alpha,x\rangle = 1 \}\). Es gilt \(F_0\cup F_1=\GF_2^n\).
Wir müssen also \(|F_0|=|F_1|\) zeigen. Zunächst gilt:
\begin{align*}
\langle\alpha,x\rangle = 0 \Leftrightarrow
\langle\alpha,x\xor c\rangle = \langle\alpha,x\rangle\xor\langle\alpha,c\rangle = 0 \xor 1 = 1
\end{align*}
Also ist die Abbildung \(f:F_0\to F_1\) mit \(x\mapsto x\xor c\) wohldefiniert.
Die Umkehrabbildung lautet, wegen \(c\xor c = 0\), schlicht \(f:F_1\to F_0\)
mit ebenfalls \(x\mapsto x\xor c\). Somit ist \(f\) also bijektiv und es
folgt die Behauptung.
\end{proof}
\begin{proof}[Beweis von \ref{thm:parseval}]
Es gilt
\begin{align*}
\sum_{\alpha\in\GF_2^n} \hat{\chi}_f(\alpha)^2
&= \sum_{\alpha\in\GF_2^n} \left( \sum_{x\in\GF_2^n} (-1)^{\langle\alpha,x\rangle\xor f(x)} \right)^2 \\
&= \sum_{\alpha\in_GF_2^n} \left( \sum_{x\in\GF_2^n} (-1)^{\langle\alpha,x\rangle\xor f(x)} \cdot
\sum_{y\in\GF_2^n} (-1)^{\langle\alpha,y\rangle\xor f(y)} \right) \\
&= \sum_{x\in\GF_2^n} (-1)^{f(x)} \sum_{y\in\GF_2^n} (-1)^{f(y)} \sum_{\alpha\in\GF_2^n} (-1)^{\langle\alpha,x\xor y\rangle}
\end{align*}
Aus Lemma~\ref{lem:parseval-1} folgt
\[
\sum_{a\in\GF_2^n} (-1)^{\langle\alpha,x\xor y\rangle} =
\begin{cases}
0, & x\xor y \neq 0 \\
2^n, & x=y
\end{cases}
\]
Das heißt:
%TODO check whether \chi_f or not \hat{\chi}_f
\begin{align*}
\sum_{a\in\GF_2^n} \chi_f(\alpha)^2
&= \sum_{x\in\GF_2^n} (-1)^{f(x)} \sum_{\substack{y\in\GF_2^n\\x=y}} (-1)^f(y) 2^n \\
&= 2^n \sum_{x\in\GF_2^n} (-1)^{f(x)\xor f(x)} = 2^n 2^n = 2^{2n}
\end{align*}
\end{proof}
Wir haben mehrere Folgerungen vom Satz von Parseval~\ref{thm:parseval}.
\begin{theorem}
Es gibt keine \(n\)-resilienten Funktionen.
\end{theorem}
\begin{proof}
Wäre \(f:\GF_2^n\to\GF_2\) eine \(n\)-resiliente Funktion, dann folgte
\(\hat{\chi}_f(\alpha) = 0\) für alle linearen Relationen \(\alpha\in\GF_2^n\).
\end{proof}
\begin{theorem}
Ist \(f:\GF_2^n\to\GF_2\) eine \(n-1\)-resiliente Funktion, dann ist
\(f\) affin.
\end{theorem}
\begin{proof}
Da die Funktion gleichverteilt ist, bedeutet das, dass \(\hat{\chi}_f(0)=0\).
Da \(n-1\)-kor\-re\-la\-ti\-ons\-im\-mun, ist \(\hat{\chi}_f(\alpha)=0\) für alle
\(\alpha\in\GF_2^n\) für die \(|\alpha|\leq n-1\) gilt. Nach Parseval muss
gelten \(\hat{\chi}_f(1,\dotsc,1)=\pm 2^n\). Damit wäre
\(f=\langle(1,\dotsc,1),\cdot\rangle\) oder
\(f=\langle(1,\dotsc,1),\cdot\rangle\xor 1\).
\end{proof}
\end{document} \end{document}
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
\newcommand{\GF}{\mathbb{F}} \newcommand{\GF}{\mathbb{F}}
\newcommand{\Fn}{\mathcal{F}} \newcommand{\Fn}{\mathcal{F}}
\newcommand{\Idx}{\mathcal{I}} \newcommand{\Idx}{\mathcal{I}}
\newcommand{\Base}{\mathcal{B}}
\usepackage{iftex} \usepackage{iftex}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment