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
38c67cf2
Commit
38c67cf2
authored
5 years ago
by
koenigl
Browse files
Options
Downloads
Patches
Plain Diff
More Stream ciphers
parent
a0612e5c
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
main.tex
+55
-4
55 additions, 4 deletions
main.tex
with
55 additions
and
4 deletions
main.tex
+
55
−
4
View file @
38c67cf2
...
...
@@ -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 kontinuierli
e
chen 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}
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