Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
Symmetric Cryptanalysis Script
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
koenigl2
Symmetric Cryptanalysis Script
Commits
d9ffeeb3
Commit
d9ffeeb3
authored
5 years ago
by
koenigl
Browse files
Options
Downloads
Patches
Plain Diff
criteria finished
parent
3b19dcfc
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
main.tex
+250
-0
250 additions, 0 deletions
main.tex
template.tex
+1
-0
1 addition, 0 deletions
template.tex
with
251 additions
and
0 deletions
main.tex
+
250
−
0
View file @
d9ffeeb3
...
@@ -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
=
2
m
\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
^{
2
n
}\)
.
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
^{
2
n
}\)
, 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
^{
2
n
}\)
Operationen benötigen würde, können
wir mittels der FFT die Faltung in
\(
(
3
n
+
1
)
\cdot
2
^
n
\)
Operationen berechnen:
\[
\begin
{
array
}{
ccccc
}
&
&
2
^{
2
n
}
&
&
\\
&
(
f,g
)
&
\to
&
f
\star
g
&
\\
2
n
\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}
This diff is collapsed.
Click to expand it.
template.tex
+
1
−
0
View file @
d9ffeeb3
...
@@ -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
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment