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
GitLab 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
fd96d160
Commit
fd96d160
authored
Feb 3, 2020
by
koenigl
Browse files
Options
Downloads
Patches
Plain Diff
Add Algebraic Analysis: Groebner & Interpol, move feal 1 Lvl up
parent
c19bbd09
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
main.tex
+202
-1
202 additions, 1 deletion
main.tex
with
202 additions
and
1 deletion
main.tex
+
202
−
1
View file @
fd96d160
...
@@ -405,7 +405,7 @@ können, benötigen wir für eine Erfolgswahrscheinlichkeit von \(\SI{96.7}{\per
...
@@ -405,7 +405,7 @@ können, benötigen wir für eine Erfolgswahrscheinlichkeit von \(\SI{96.7}{\per
für den Angriff
\(
N
/
\lambda
\)
viele Paare.
für den Angriff
\(
N
/
\lambda
\)
viele Paare.
\end{remark}
\end{remark}
\subs
ubs
ection
{
FEAL-4
}
\subsection
{
FEAL-4
}
Der Fast data Encipherment ALgorithm (1978) ist eine Blockchiffre auf
Der Fast data Encipherment ALgorithm (1978) ist eine Blockchiffre auf
Blöcken aus
\SI
{
64
}{
\bit
}
, wobei FEAL-4 einen
\SI
{
64
}{
\bit
}
Rundenschlüssel
Blöcken aus
\SI
{
64
}{
\bit
}
, wobei FEAL-4 einen
\SI
{
64
}{
\bit
}
Rundenschlüssel
nutzt und aus
\num
{
4
}
Runden besteht.
nutzt und aus
\num
{
4
}
Runden besteht.
...
@@ -1183,4 +1183,205 @@ an Variablen die bei der Linearisierung entstehen. Dies geschieht durch einen
...
@@ -1183,4 +1183,205 @@ an Variablen die bei der Linearisierung entstehen. Dies geschieht durch einen
hohen algebraischen Grad der Polynome (potentiell viele Variablen) und dicht
hohen algebraischen Grad der Polynome (potentiell viele Variablen) und dicht
besetzte Polynome (d.
\,
h.
\@
Polynome aus vielen Monomen).
besetzte Polynome (d.
\,
h.
\@
Polynome aus vielen Monomen).
\subsection
{
Gröbner-Basen
}
Wie bei dem Angriff über Linearisierung möchten wir unser Polynomsystem so
umformulieren, dass das Problem einfacher lösbar ist. Während wir bei der
Linearisierung das Gleichungssystem direkt betrachtet haben, werden wir uns
jetzt mit weiteren algebraischen Strukturen beschäftigen um das Problem leicht
anders zu modellieren.
Sind
\(
f
_
1
,
\dotsc
,f
_
n
\)
Polynomfunktionen, deren Nullstellen wir suchen, dann
können wir Linearkombinationen dieser mit weiteren Polynomen aus dem Ring
bilden:
\[
f :
=
\sum
_{
i
=
1
}^
n h
_
i f
_
i,
\qquad
h
_
1
,
\dotsc
,h
_
n
\in
\GF
_
2
[
X
_
1
,
\dotsc
,X
_
l
]
\]
Für jede solche Funktion gilt, dass jede Nullstelle unseres Polynomsystems
\(
f
_
1
,
\dotsc
,f
_
n
\)
ebenfalls eine Nullstelle von
\(
f
\)
ist.
Betrachten wir die Menge
\(
I
\)
aus solchen Linearkombinationen, so bildet
\(
I
\)
ein Ideal in
\(
\GF
_
2
[
X
_
1
,
\dotsc
,X
_
l
]
\)
und
\(
f
_
1
,
\dotsc
,f
_
n
\)
eine Basis:
\[
I
=
\langle
f
_
1
,
\dotsc
,f
_
n
\rangle
:
=
\left\{
\sum
_{
i
=
1
}^
n h
_
i f
_
i
\;\middle
|
\;
h
_
1
,
\dotsc
h
_
n
\in
\GF
_
2
[
X
_
1
,
\dotsc
,X
_
l
]
\right\}
\]
Weiterhin ist die Varietät des Ideals definiert als:
\[
V
(
I
)
:
=
\{
x
\in
\GF
_
2
^
l
\mid
\forall
f
\in
I: f
(
x
)
=
0
\}
\]
Wir können mit diesem Wissen nun unsere Problematik in einen anderen Teil
der Algebra verschieben.
\begin{theorem}
Sei
\(
I
\subseteq\GF
_
2
[
X
_
1
,
\dotsc
,X
_
l
]
\)
ein Ideal und
\(
f
_
1
,
\dotsc
,f
_
n
\)
eine
Basis von
\(
I
\)
. Dann sind die Nullstellen des Polynomsystems
\(
f
_
1
,
\dotsc
,f
_
n
\)
genau die Elemente der Varietät
\(
V
(
I
)
\)
:
\[
f
_
1
(
x
)
=
\dotsb
=
f
_
n
(
x
)
=
0
\Leftrightarrow
x
\in
V
(
I
)
\]
\end{theorem}
\begin{proof}
Wir beweisen in beide Richtungen einzeln. Sei
\(
x
\)
eine Nullstelle des
Polynomsystems
\(
f
_
1
,
\dotsc
,f
_
n
\)
und
\(
f
\in
I
=
\langle
f
_
1
,
\dotsc
,f
_
n
\rangle
\)
eine Funktion aus dem Ideal welches durch die Funktionen dieses Systems als
Basis aufgespannt wird. Nach Definition des Ideals gibt es also Funktionen
\(
h
_
1
,
\dotsc
,h
_
n
\in\GF
_
2
[
X
_
1
,
\dotsc
,X
_
l
]
\)
:
\[
f
=
\sum
_{
i
=
1
}^
n h
_
i f
_
i
\]
Aus
\(
f
_
1
(
x
)=
\dotsb
=
f
_
n
=
0
\)
folgt
\[
f
(
x
)
=
\sum
_{
i
=
1
}^
n h
_
i f
_
i
=
0
\Rightarrow
x
\in
V
(
I
)
\]
Die umgekehrte Richtung folgt direkt aus
\(
x
\in
V
(
I
)
\)
und
\(
f
_
1
,
\dotsc
,f
_
n
\in
I
\)
, schließlich ist die Verietät definiert als die
gemeinsamen Nullstellen der Funktionen des Ideals.
\end{proof}
Damit haben wir eine Erkenntnis gewonnen: Die Nullstellen hängen nur vom Ideal
ab, nicht jedoch von der Basis! Das bedeutet, wir können einen Basiswechsel
durchführen, also andere Basen für das gleiche Ideal finden:
\[
\langle
f
_
1
,
\dotsc
,f
_
n
\rangle
=
\langle
g
_
1
,
\dotsc
,g
_
m
\rangle
\Leftrightarrow
f
_
1
(
x
)
=
\dotsb
=
f
_
n
=
0
\Leftrightarrow
g
_
1
(
x
)
=
\dotsb
g
_
m
(
x
)
=
0
\]
Wir suchen jetzt
\enquote
{
einfache
}
Basen für unser Ideal.
Betrachten wir beispielsweise folgende Polynome über den
\(
\GF
_
2
\)
:
\[
f
_
1
=
x
_
1
x
_
2
+
x
_
1
x
_
3
+
x
_
2
^
2
+
x
_
2
x
_
3
+
x
_
3
^
2
,
\qquad
f
_
2
=
x
_
1
x
_
3
+
x
_
3
^
2
,
\qquad
f
_
3
=
x
_
2
+
x
_
3
^
2
\]
Diese Polynome bilden genauso eine Basis für
\(
I:
=
\langle
f
_
1
,f
_
2
,f
_
3
\rangle
\)
:
\[
g
_
1
=
x
_
1
x
_
3
+
x
_
3
^
2
,
\qquad
g
_
2
=
x
_
2
+
x
_
3
^
2
,
\qquad
g
_
3
=
x
_
3
^
4
\]
Wir können nämlich die einen in die anderen überführen:
\[
f
_
1
=
(
x
_
3
+
1
)
\underbrace
{
(
x
_
1
x
_
3
+
x
_
3
^
2
)
}_{
=
g
_
1
}
+
(
x
_
1
+
x
_
2
+
x
_
3
^
2
+
x
_
3
)
\underbrace
{
(
x
_
2
+
x
_
3
^
2
)
}_{
=
g
_
2
}
+
\underbrace
{
x
_
3
^
4
}_{
=
g
_
3
}
\]
Die Bestimmung der Varietät ist aber über die zweite Basis deutlich einfacher.
%TODO cite
Was sind jedoch
\enquote
{
gute
}
Basen, und wie findet man diese? Für unseren
Nutzen sind sog.
\@
(reduzierte) Gröbnerbasen einfach. Um diese zu finden gibt
es den Buchberger-Algorithmus und den verbesserten
\(
F
_
4
\)
- und
\(
F
_
5
\)
-Algorithmus
von Faugere. Die Laufzeit ist abhängig von der gewählten Monomordnung, aber
ungefähr subexponentiell! Damit haben wir unser Problem auf das
Idealzugehörigkeitsproblem reduziert.
Allgemein gilt, dass unter bestimmten (aber nicht einzuschränkenden)
Voraussetzungen sich eine Gröbnerbasis in der Form
\[
X
_
1
-
g
_
1
, X
_
2
-
g
_
2
,
\dotsc
, X
_{
l
-
1
}
-
g
_{
l
-
1
}
, g
_
l
\]
finden lässt, mit
\(
g
_
1
,
\dotsc
,g
_
l
\in
K
[
X
_
l
]
\)
.
\subsection
{
Interpolationsattacke
}
%TODO cite Jakobsen, Knudsen 1997
Die letzte Attacke auf Blockchiffren basierend auf algebraischer Analyse
ist die sogenannte Interpolationsattacke. Im Gegensatz zu den bisherigen
Angriffen fixieren hier jedoch
\emph
{
nicht
}
die Nachricht und versuchen darüber
den Schlüssel als Lösung eines Gleichungssystems zu berechnen, sondern fixieren
den Schlüssel und betrachten die Abbildung
\begin{align*}
&
\GF
_
2
^
n
\to
\GF
_
2
^
n
\\
&
m
\mapsto
E(m,k)
\end{align*}
% Auch cf. Rijndel über AES im Anhang
Die grundlegende Idee ist, dass wir
\(
\GF
_
2
^
n
\)
als
\(
\GF
_{
2
^
n
}\)
mit
geeigneter Addition und Multiplikation zu einem Körper machen können. Genauer
ist jeder endliche Körper isomorph zu
\(
\GF
_{
p
^
d
}\)
, wobei
\(
p
\)
prim ist und
\(
d
\in\mathbb
{
N
}\)
. Einen solcher Körper besteht aus den Restklassen
des Faktorrings
\(
\GF
_
p
^
d :
=
\GF
_
p
[
X
]/
f
\cdot
\GF
_
p
[
X
]
\)
irreduzible
Polynom
\(
f
\in\GF
_
p
[
X
]
\)
von Grad
\(
\deg
(
f
)
=
d
\)
erzeugt wird.
Ein irreduzibles Polynom
\(
f
\in\GF
_
p
[
X
]
\)
hat keine trivialen Teiler, das bedeutet
aus
\(
gh
=
f
\)
folgt
\(
\deg
(
g
)
=
0
\)
oder
\(
\deg
(
g
)
=
0
\)
. Weiter können wir
jedes Polynom
\(
g
\in\GF
_
p
[
X
]
\)
in Abhängigkeit von
\(
f
\)
eindeutig zerlegen mit
\(
s,r
\in\GF
_
p
[
X
]
\)
und
\(
\deg
(
r
)
<
\deg
(
f
)
\)
:
\[
g
(
X
)
=
s
(
X
)
\cdot
f
(
X
)
+
r
(
X
)
\]
So ist beispielsweise für
\(
g
(
X
)
=
X
^
2
\)
und
\(
f
(
X
)=
X
^
2
\xor
X
\xor
1
\)
:
\[
X
^
2
=
\underbrace
{
1
}_{
s
}
\cdot
\underbrace
{
(
X
^
2
\xor
X
\xor
1
)
}_
f
+
\underbrace
{
(
X
\xor
1
)
}_
r
\]
Wir können also schreiben
\[
g
\bmod
f
=
: r
\]
Betrachten wir
\(
\GF
_{
p
^
d
}
=
\GF
_
p
/
f
\cdot
\GF
_
p
\)
, dann besteht diese Menge
aus den Restklassen bei der Division durch
\(
f
\)
-- das sind all jene Polynome
mit mit einem geringeren Grad als
\(
\deg
(
f
)
\)
, und zwar genau
\(
p
^
d
\)
Stück.
Definieren wir nun die Addition und die Multiplikation modulo
\(
f
\)
, dann ist
das ein
\(
\GF
_{
p
^
d
}\)
ein Körper.
Wir zeigen nun ähnlich zu~
\ref
{
thm:eval
}
, dass wir jede auch jede
Verschlüsselungsfunktion mit fixiertem Schlüssel als Polynomfunktionen schreiben
können.
\begin{theorem}
Jede Abbildung
\(
F:
\GF
_
2
^
n
\to\GF
_
2
^
n
\)
lässt sich als Polynom
\(
f
\)
von Grad
\(
\deg
(
f
)
<
2
^
n
\)
darstellen, d.
\,
h.:
\[
F
(
x
)
=
\sum
_{
i
=
0
}^{
2
^
n
-
1
}
\alpha
_
i x
^
i
\]
Mit Koeffizienten
\(
\alpha
_
0
,
\dotsc
,
\alpha
_{
n
-
1
}
\in\GF
_{
2
^
n
}\)
aus unserem
Körper.
\end{theorem}
Dadurch, dass wir nun unsere Funktion als Polynom schreiben können, eröffnen
sich für uns einige neue Möglichkeiten, und das ist auch der Schlüssel zu dieser
Attacke.
\begin{theorem}
[Lagrange-Interpolationsformel]
Sei
\(
K
\)
ein Körper und
\(
F:K
\to
K
\)
ein Polynom vom Grad
\(
\deg
(
F
)=
t
-
1
\)
Dann
lässt sich
\(
F
\)
aus
\(
t
\)
paarweise verschiedenen Paaren
\(
(
x
_
i, F
(
x
_
i
))
\)
rekonstruieren:
\[
F
(
x
)
=
\sum
_{
i
=
1
}^
t F
(
x
_
i
)
\prod
_{
\substack
{
j
=
1
\\
j
\neq
i
}}^
t
\frac
{
x
-
x
_
j
}{
x
_
i
-
x
_
j
}
\]
\end{theorem}
Ist nun also
\(
F:
\GF
_
2
^
n
\to
\GF
_
2
^
n
\)
ein solches Polynom, dann werden
\(
t
\)
Plaintext-Ciphertextpaare benötigt um
\(
F
\)
vollständig zu rekonstruieren und
somit alle Texte zu entschlüsseln -- ohne den Schlüssel zu kennen!
\paragraph
{
Abwehrmaßnahmen
}
%TODO cite
\(
F
\)
sollte einen hohen algebraischen Grad haben (maximal
\(
2
^
n
-
1
\)
möglich),
jedoch ist
\(
\deg
(
F
)
\)
abhängig von der Definition der Multiplikation (also
der Wahl des irreduziblen Polynoms über das die Multiplikation definiert wird).
Genauer, ist
\(
F:
\GF
_{
2
^
n
}
\to\GF
_{
2
^
n
}\)
ein Polynom und weiter
\(
f
_
1
,f
_
2
\in\GF
_
2
[
X
]
\)
irreduzibel von Grad
\(
\deg
(
f
_
1
)=
\deg
(
f
_
2
)=
n
\)
. Dann gilt
\[
\GF
_
2
[
X
]/
f
_
i
\cdot
\GF
_
2
[
X
]
=
\left\{
g
(
X
)
=
\sum
_{
i
=
0
}^{
n
-
1
}
a
_
i X
^
i
\;\middle
|
\;
a
_
0
,
\dotsc
,a
_{
n
-
1
}
\in\GF
_
2
\right\}
\]
Wir identifizieren
\(
g
\)
mit dem Vektor
\(
(
a
_
0
,
\dotsc
,a
_{
n
-
1
}
)
\)
(und manchmal
auch mit
\(
\sum
a
_
i
\)
. Betrachten nun
\begin{align*}
F(x) = F
_
1(x) :=
&
\sum
_{
i=0
}^{
2
^
n -1
}
\alpha
_
i x
^
i
&&
\text
{
über
}
\GF
_
2[X]/f
_
1
\cdot
\GF
_
2[X]
\\
F(x) = F
_
1(x) :=
&
\sum
_{
i=0
}^{
2
^
n -1
}
\beta
x
^
i
&&
\text
{
über
}
\GF
_
2[X]/f
_
2
\cdot
\GF
_
2[X]
\end{align*}
Betrachten wir beispielhaft
\(
F:
\GF
_{
2
^
4
}
\to\GF
_{
2
^
4
}\)
mit
\(
x
\mapsto
x
^
3
\)
,
wobei die Multiplikation über dem irreduziblen Polynom
\(
f
=
X
^
4
+
X
+
1
\)
definiert
sei. Dargestellt über dem irreduziblen Polynom
\(
g
=
X
^
4
+
X
^
3
+
1
\)
sieht
\(
F
\)
wiefolgt aus:
\[
x
\mapsto
x
+
x
^
2
+
7
x
^
3
+
15
x
^
4
+
5
x
^
5
+
14
x
^
6
+
14
x
^
8
+
2
x
^
9
+
7
x
^{
10
}
+
9
x
^{
12
}
\]
\section
{
Stromchiffren
}
\end{document}
\end{document}
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