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

criteria finished

parent 3b19dcfc
Branches
Tags
No related merge requests found
...@@ -2119,6 +2119,7 @@ finden eine Relation \((\alpha,\beta)\) mit ...@@ -2119,6 +2119,7 @@ finden eine Relation \((\alpha,\beta)\) mit
\Pr(\langle\alpha, x\rangle = \langle\beta,f(x)\rangle) = p \neq \frac{1}{2} \Pr(\langle\alpha, x\rangle = \langle\beta,f(x)\rangle) = p \neq \frac{1}{2}
\] \]
\paragraph{Boolesche Funktionen}
Wir betrachten im ersten Schritt nur Funktionen \(f:\GF_2^n\to\GF_2\) (also Wir betrachten im ersten Schritt nur Funktionen \(f:\GF_2^n\to\GF_2\) (also
für Stromchiffren). für Stromchiffren).
\begin{definition} \begin{definition}
...@@ -2247,5 +2248,254 @@ gelten \(\hat{\chi}_f(1,\dotsc,1)=\pm 2^n\). Damit wäre ...@@ -2247,5 +2248,254 @@ gelten \(\hat{\chi}_f(1,\dotsc,1)=\pm 2^n\). Damit wäre
\(f=\langle(1,\dotsc,1),\cdot\rangle\xor 1\). \(f=\langle(1,\dotsc,1),\cdot\rangle\xor 1\).
\end{proof} \end{proof}
Weiterhin zeigt der Satz von Parseval, dass wenn für eine lineare Relation
\(\alpha\in\GF_2^n\) gilt, dass \(\hat{\chi}_f(\alpha)^2=0\), muss für
andere \(\alpha'\) der Wert \(\hat{\chi}_f(\alpha')^2\) größer sein. Ist
nun \(\hat{\chi}_f(\alpha')^2\) groß, heißt dass, \(f\) ist durch
\(\langle\alpha',\cdot\rangle\) oder \(\langle\alpha',\cdot\rangle\xor 1\)
approximierbar. Anstatt also zu versuchen gegen eine konkrete lineare
Relation zu optimieren, ist es sinnvoller, für alle \(\alpha\) den Wert
\(\hat{\chi}_f(\alpha)^2\) zu minimieren, also
\[
\hat{\chi}_f(\alpha)^2=2^n \quad\text{bzw.}\quad \hat{\chi}_f(\alpha)=\pm 2^{\frac{n}{2}}
\]
Wir möchten nun uns genau solche Funktionen genauer ansehen.
\begin{definition}
Eine Funkton \(f:\GF_2^n\to\GF_2\) heißt \textbf{Bentfunktion} (oder auch krumm),
wenn für alle \(\alpha\in\GF_2^n\) gilt
\[
\hat{\chi}_f(\alpha)=\pm 2^{n/2}
\]
\end{definition}
Wie schon vorher, möchten wir ersteinmal herausfinden, ob es solche Funktionen
gibt. Dafür gucken wir uns an, wie wir eine solche Funktion aus gegebenen Funktionen
konstruieren können.
\begin{theorem}
Sei \(n=2m\geq 2\) gerade, \(\pi:\GF_2^m\to\GF_2^m\) eine bijektive Permutation,
und \(g:\GF_2^m\to\GF_2\) beliebig. Dann ist die Funktion
\begin{align*}
f: &\GF_2^n\to\GF_2 \\
&(x,y) \mapsto \langle \pi(x),y\rangle\xor g(x)
\end{align*}
eine Bentfunktion.
\end{theorem}
\begin{proof}
Es gilt für alle \(\alpha=(\alpha_1,\alpha_2)\in\GF_2^m\times\GF_2^m\):
%TODO typeset cases cleaner
\begin{align*}
\hat{\chi}_f(\alpha)
&= \sum_{(x,y)\in\GF_2^n} (-1)^{\langle(\alpha_1,\alpha_2),(x,y)\rangle\xor f(x,y)} \\
&= \sum_{(x,y)\in\GF_2^n} (-1)^{\langle\alpha_1,x\rangle \xor \langle\alpha_2,y\rangle \xor \langle\pi(x),y\rangle \xor g(x)} \\
&= \sum_{(x,y)\in\GF_2^n} (-1)^{\langle\alpha_1,x\rangle \xor \langle\pi(x)\xor\alpha_2,y\rangle \xor g(x)} \\
&= \sum_{x\in\GF_2^m} (-1)^{\langle\alpha_1,x\rangle \xor g(x)} \cdot \sum_{y\in\GF_2^m} (-1)^{\langle\pi(x)\xor\alpha_2,y\rangle} \\
&= \sum_{x\in\GF_2^m} (-1)^{\langle\alpha_1,x\rangle \xor g(x)} \cdot \begin{cases} 0, &\pi(x)\neq\alpha_2\\ 2^m, &\text{sonst}\end{cases}
&& \mid \text{nach \ref{lem:parseval-1}} \\
&= \sum_{\substack{x\in\GF_2^m\\ \pi(x)=\alpha_2}} (-1)^{\langle\alpha_1,x\rangle \xor g(x)} \cdot 2^m \\
&= (-1)^{\langle\alpha_1,\pi^{-1}(\alpha_2)\rangle \xor g(\pi^{-1}(x))} \cdot 2^m \\
&= \pm 2^m = \pm 2^{\frac{n}{2}}
\end{align*}
\end{proof}
Wir möchten uns nun die genaueren Eigenschaften von Bentfunktionen angucken.
\begin{theorem}
Bentfunktionen sind nicht gleichverteilt.
\end{theorem}
\begin{proof}
Wie wir schon bei der Interpreation der Walshtransformierten gesehen haben, gilt:
\begin{align*}
\hat{\chi}_f(0)
&= |\{ x \mid f(x) = 0\} | - |\{x \mid f(x) = 1\}| \\
&= 2^n \cdot (\Pr(f=0) - \Pr(f=1)) \\
&= 2^n \cdot (\Pr(f=0) - (1-\Pr(f=0)) \\
&= 2^n \cdot (2\Pr(f=0) -1) \\
&= 2^{n+1} \cdot \Pr(f=0) - 2^n
\end{align*}
Da für eine Bentfunktion gilt \(\hat{\chi}_f(0) = \pm 2^{n/2}\), folgt damit
\[
\Pr(f=0) = \frac{1}{2} \pm \frac{2^{\frac{n}{2}}}{2^{n+1}} = \frac{1}{2} \pm \frac{1}{2^\frac{n}{2} +1}
\]
Das heißt Bentfunktion weichen -- geringfügig -- von der Gleichverteilung ab!
\end{proof}
Es gibt noch eine weitere Aussage über den algebraischen Grad, die wir aber ohne Beweis
lassen.
\begin{theorem}
Eine Bentfunktion auf \(\GF_2^n\) hat höchstens einen algebraischen Grad von
\(n/2 + 1\).
\end{theorem}
\paragraph{Boolesche Abbildungen}
Betrachten wir nun boolesche Abbildungen \(f:\GF_2^n\to\GF_2^m\). Hierzu definieren
wir die Indikatorfunktion (oder charakteristische Funktion) um das Problem auf das
von booleschen Funktionen zurückzuführen.
\begin{align*}
I_f: &\GF_2^n\times\GF_2^m \to\GF_2 \\
&(x,y) \mapsto \begin{cases} 1, &y=f(x)\\ 0, &\text{sonst}\end{cases}
\end{align*}
Für die Fouriertransformierte der Indikatorfunktion gilt bspw.:
\begin{align*}
\hat{I}_f(\alpha,\beta)
&= \sum_{(x,y)\in\GF_2^n\times\GF_2^m} I_f(x,y) (-1)^{\langle (\alpha,\beta), (x,y) \rangle} \\
&= \sum_{\substack{(x,y)\in\GF_2^n\times\GF_2^m\\ y=f(x)}} (-1)^{\langle\alpha,x\rangle\xor\langle\beta,y\rangle} \\
&= \sum_{x\in\GF_2^n} (-1)^{\langle\alpha,x\rangle \xor \langle\beta,f(x)\rangle}
\end{align*}
Die Fouriertransformierte der Indikatorfunktion \(\hat{I}_f(\alpha,\beta)\) misst
also, ob sich eine boolsche Abbildung \(f\) über die Relation \((\alpha,\beta)\)
approximieren lässt. Die Sätze und Definition zu Booleschen Funktionen und den
Walshtransformierten lassen sich nun analog übertragen.
\paragraph{Berechnung der Fourier- und Walshtransformierten}
Möchten wir nun die Fourier- bzw.\@ Walshtransformierten benutzen um Konstruktionen
zu bewerten, müssen wir uns auch angucken, wir wir (effizient) diese Transformationen
durchführen können. Die naive Berechnung von Fouriertransformierten \(\hat{f}\) einer
Booleschen Funktion \(f:\GF_2^n\to\GF_2\) bedeutet einen Aufwand für jedes \(\alpha\in\GF_2^n\)
von ungefähr \(2^n\) (Addition der Werte) und somit einen Gesamtaufwand von ca.\@
\(2^n \cdot 2^n=2^{2n}\).
Wir sehen uns nun die Eigenschaften der Fouriertransformation an, um eine effizientere
Berechnung zu finden. Die Abbildung die einer booleschen Funktion ihre Fouriertransformierte
zuweist \(\Fn(\GF_2^n,\GF_2)\to\Fn(\GF_2^n,\GF_2)\) mit \(f\mapsto\hat{f}\) ist linear
(Übungsaufgabe). Wir beschreiben diese Abbildung als Matrix, sodass \(\hat{f}=H_n(f)\) mit
\[
H_n = \bigotimes_{i=1}^n H_1, \qquad H_1 = \begin{pmatrix}1 & 1\\ 1 & -1\end{pmatrix}
\]
Bspw.\@ ist dann
\[
H_2 = \begin{pmatrix*}[r]
1 & 1 & 1 & 1 \\
1 & -1 & 1 & -1 \\
1 & 1 & -1 & -1 \\
1 & -1 & -1 & 1 \end{pmatrix*}
\]
Und für die Funktion \(f:\GF_2^2\to\GF_2\) mit \((x_1,x_2)\mapsto 1\xor x_1 x_2\) gilt:
\[
\begin{pmatrix}
\hat{f}(0,0) \\
\hat{f}(0,1) \\
\hat{f}(1,0) \\
\hat{f}(1,1) \end{pmatrix} = \begin{pmatrix*}[r]
1 & 1 & 1 & 1 \\
1 & -1 & 1 & -1 \\
1 & 1 & -1 & -1 \\
1 & -1 & -1 & 1 \end{pmatrix*} \cdot \begin{pmatrix}
f(0,0) \\
f(0,1) \\
f(1,0) \\
f(1,1) \end{pmatrix} = \begin{pmatrix}
3 \\
1 \\
1 \\
-1 \end{pmatrix}
\]
Der Aufwand ist zwar immernoch \(2^{2n}\), mittels Fast Fourier Transformationen jedoch
nur noch \(n\cdot 2^n\) -- damit können wir auch deutlich größere \(n\) verarbeiten.
\paragraph{Weitere kryptographische Gütekriterien -- Avalanche-Kriterium}
Mittels der FFT können auch weitere Kriterien effizienter bestimmt werden, wie bspw.\@
das Avalanche-Kriterium welches Aussagen trifft über die Unterschiede zwischen zwei
Ciphertexten bei sehr ähnlichen Plaintexten. In anderen Worten, ist unsere Chiffre eine
Abbildung \(f:\GF_2^n\to\GF_2^m\), dann soll eine kleine Änderung (d.\,i.\@ ein Bit) in
der Eingabe eine Änderung von \SI{50}{\percent} der Ausgabebits bewirken. Formal
ausgedrückt, gucken wir uns die Ausgabe des \(i\)-ten Bits als Projektion an
\(f_i := \pi_i \circ f\) an, dann sollte die Wahrscheinlichkeit, dass dieses Bit bei einer
Änderung an der \(j\)-ten Stelle gleich bleibt, \(1/2\) betragen:
\[
\Pr(f_i(x) = f_i(x\xor e_j)) = \frac{1}{2}, \quad e_j := (0,\dotsc,0,\underbrace{1}_j,0\dotsc,0), \quad j\leq n
\]
Anders formuliert, soll die Wahrscheinlichkeit, dass die Bits gleich sind, oder die Bits
unterschiedlich, gleich sein, d.\,h.:
\[
C_{f_i}(e_j) := \Pr(f_i(x) = f_i(x\xor e_j)) - \Pr(f_i(x) \neq f_i(x\xor e_j)) = 0
\]
\begin{theorem}\label{thm:avalanche}
Für alle booleschen Funktionen \(f:\GF_2^n\to\GF_2\) können wir diese Änderungswahrscheinlichkeit
mit dem Faltungsoperator \(\star\) ausdrücken:
\[
C_f(a) = \frac{1}{2^n} \sum_{x\in\GF_2^n} \chi_f(x\xor a)\chi_f(x) =: \frac{1}{2^n} (\chi_f\star\chi_f(a))
\]
\end{theorem}
\begin{proof}
Es gilt
\begin{align*}
C_f(a)
&= \Pr(f=f(\cdot\xor a)) - \Pr(f\neq f(\cdot\xor a)) \\
&= \frac{1}{2^n} \sum_{x\in\GF_2^n} (-1)^{f(x\xor a)\xor f(x)} \\
&= \frac{1}{2^n} \sum_{x\in\GF_2^n} \chi_f(x\xor a)\chi_f(x) = \frac{1}{2^n} (\chi_f\star\chi_f(a))
\end{align*}
\end{proof}
Wir fragen uns nun, wie man die Faltung effizient berrechnet.
\begin{lemma}\label{lem:avalanche-eff}
Seien \(f,g: \GF_2^n\to\GF_2\), dann gilt erstens, dass \(\hat{\hat{f}} = 2^n\cdot f\) und
weiter, dass \(\widehat{f\star g} = \hat{f}\cdot \hat{g}\).
\end{lemma}
\begin{proof}
Wir zeigen erstmal die erste Aussage:
\begin{align*}
\hat{\hat{f}}(x)
&= \sum_{\alpha\in\GF_2^n} (-1)^{\langle\alpha,x\rangle} \hat{f}(L) \\
&= \sum_{\alpha\in\GF_2^n}\sum_{y\in\GF_2^n} (-1)^{\langle\alpha,x\rangle} (-1)^{\langle\alpha,y\rangle} f(y) \\
&= \sum_{y\in\GF_2^n} f(y) \sum_{\alpha\in\GF_2^n} (-1)^{\langle\alpha,(x\xor y)\rangle} \\
&= \sum_{y\in\GF_2^n} f(y) \cdot \begin{cases} 2^n, &x=y\\ 0, &\text{sonst}\end{cases}
&& \mid \text{nach \ref{lem:parseval-1}} \\
&= 2^n \cdot f(x)
\end{align*}
Nun die zweite Aussage:
\begin{align*}
\widehat{f\star g}(\alpha)
&= \sum_{x\in\GF_2^n} (-1)^{\langle\alpha,x\rangle} (f\star g)(x) \\
&= \sum_{x\in\GF_2^n}\sum_{a\in\GF_2^n} (-1)^{\langle\alpha,x\rangle} f(a)g(x\xor\alpha) \\
&= \sum_{a\in\GF_2^n} f(a) \left( \sum_{x\in\GF_2^n} (-1)^{\langle\alpha,x\rangle} g(x\xor a) \right) \\
&= \sum_{a\in\GF_2^n} f(a) \sum_{y\in\GF_2^n} (-1)^{\langle\alpha,(y\xor a)\rangle} g(y) \\
&= \sum_{a\in\GF_2^n} f(a) \left( \sum_{y\in\GF_2^n} (-1)^{\langle\alpha,y\rangle} g(y) \right) (-1)^{\langle\alpha,a\rangle} \\
&= \left( \sum_{a\in\GF_2^n} (-1)^{\langle\alpha,a\rangle} f(a) \right) \hat{g}(\alpha) \\
&= \hat{f}(\alpha)\cdot \hat{g}(\alpha)
\end{align*}
\end{proof}
Während die naive Berechnung der Faltung \(2^{2n}\) Operationen benötigen würde, können
wir mittels der FFT die Faltung in \((3n+1)\cdot 2^n\) Operationen berechnen:
\[\begin{array}{ccccc}
& & 2^{2n} & & \\
& (f,g) & \to & f\star g & \\
2n\cdot 2^n & \downarrow & & \uparrow & n\cdot 2^n \\
& (\hat{f},\hat{g}) & \to & \hat{f}\cdot\hat{g} & \\
& & 2^n & &
\end{array}\]
Nun da wir uns das Avalanche-Kriterium angesehen haben, möchten wir gucken, ob Bentfunktionen
dieses erfüllen. Die Antwort lautet ja, es gilt sogar mehr -- die Funktionen die das
Avalanche-Kriterium erfüllen, \emph{müssen} Bentfunktionen seinen.
\begin{theorem}
\(f\) ist eine Bentfunktion genau dann, wenn \(C_f(a)=0\) für alle \(a\in\GF_2^n\setminus\{0\}\).
\end{theorem}
\begin{proof}
Nach \ref{thm:avalanche} und \ref{lem:avalanche-eff} gilt:
\begin{align*}
\widehat{C}_f
&= \widehat{\left(\frac{1}{2^n}\chi_f\star\chi_f(a)\right)} \\
&= \frac{1}{2^n} \widehat{\left(\chi_f\star\chi_f(a)\right)} \\
&= \frac{1}{2^n} \hat{\chi}_f \cdot \hat{\chi}_f
\end{align*}
und somit \(C_f(0,\dotsc,0)=1\) und \((-1)^{\langle\alpha,(0,\dotsc,0)\rangle} = 1\).
Nun formen wir um:
\begin{align*}
& \forall a\neq 0: C_f(a) = 0 \\
\Leftrightarrow& \forall \alpha\in\GF_2^n: \widehat{C}_f(\alpha) = \sum_{a\in\GF_2^n} (-1)^{\langle\alpha,a\rangle} C_f(a) = 1 \\
\Leftrightarrow& \frac{1}{2^n} \hat{\chi}_f\cdot\hat{\chi}_f = 1 \\
\Leftrightarrow& \hat{\chi}_f^2 = 2^n
\end{align*}
Für die erste Äquivalenz ist die Hinrichtung offensichtlich, für die Rückrichtung berechnet
man nach Lemma~\ref{lem:avalanche-eff}
\[
C_f(a)
= \frac{1}{2^n} \widehat{\widehat{C}}_f(a)
= \frac{1}{2^n} \sum_{\alpha\in\GF_2^n} (-1)^{\alpha,a\rangle}
\]
und wendet dann Lemma~\ref{lem:parseval-1} an.
\end{proof}
\end{document} \end{document}
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
\documentclass{scrartcl} \documentclass{scrartcl}
\usepackage{amsmath} \usepackage{amsmath}
\usepackage{mathtools} % stuff like pmatrix* that should be in amsmath but isn't
\usepackage{amsfonts} \usepackage{amsfonts}
\usepackage{amssymb} \usepackage{amssymb}
\usepackage{amsthm} \usepackage{amsthm}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment