2
0
Fork 0
mirror of https://github.com/MartinThoma/LaTeX-examples.git synced 2025-04-25 06:18:05 +02:00

facharbeit hinzugefügt

This commit is contained in:
Martin Thoma 2013-05-07 22:36:03 +02:00
parent ab551853dd
commit 7e2693dd5e
15 changed files with 780 additions and 0 deletions

View file

@ -0,0 +1,3 @@
\section{Anhang}
\inputminted[linenos, numbersep=5pt, tabsize=4]{pascal}{Factoring.ari}

View file

@ -0,0 +1,11 @@
# Gegebener Öffentlicher Schlüssel N = p*q und e sowie Geheimtext y
N := 6593724735903381194175738064212775889771.
e := 47.
y := 6508724329196926526021005674657658127499.
p := ec_factorize(N). # 6890701303127411
q := N div p. # 956207997714884457630761
phi := (p-1)*(q-1). #6588943695914805815679579653627015131600
d := mod_inverse(e, phi).
cc := byte_string(y).
z := y**d mod N.
string(byte_string(z)).

View file

@ -0,0 +1,6 @@
\section{Prinzip der asymmetrischen Verschlüsselung}
Bereits im 5. Jahrhundert v. Chr. war ein Verfahren zur geheimen Weitergabe an Informationen bekannt: Die Skytale\footnote{[Wrixon], S. 21f}. Man wickelte Papier spiralförmig um einen Stab, die Skytale, und schrieb die Nachricht längs der Skytale auf das Papier. Dann wurde das Papier dem Empfänger gebracht, der mit einer gleichen Skytale diese Nachricht entschlüsseln konnte.
Verfahren, die den gleichen Schlüssel zur Ver- als auch zur Entschlüsselung verwenden nennt man symmetrisch\footnote{[Birthälmer], S. 4}. In dem Beispiel ist die Skytale der Schlüssel. Es ist unüblich die Skytale als symmetrische Verschlüsselung zu bezeichnen, normalerweise sind Block- oder Stromchiffren damit gemeint. Diese sind jedoch schwerer zu beschreiben.
Nach Kerckhoffs' Prinzip darf ein Verschlüsselungssystem keine Geheimhaltung erfordern\footnote{[Petitcolas]}, also muss der Schlüssel für die Sicherheit sorgen. Wollen allerdings zwei Personen miteinander geheim kommunizieren, so muss dieser Schlüssel übertragen werden. Bei der Übertragung könnte er abgefangen werden.
Asymmetrische Verschlüsselungsverfahren benutzen einen öffentlichen Schlüssel zum verschlüsseln und einen privaten Schlüssel zum entschlüsseln. Will Alice eine geheime Nachricht von Bob empfangen, so schickt sie Bob ihren öffentlichen Schlüssel. Bob verschlüsselt seine Nachricht mit diesem Schlüssel und schickt die Nachricht an Alice. Der private Schlüssel wird nicht übertragen. In dieser Hinsicht sind asymmetrische Verschlüsselungsverfahren sicherer als symmetrische.
Mithilfe von asymmetrischen Verschlüsselungen kann man auch digitale Signaturen erstellen und sich damit authentifizieren. Im RSA-Verfahren sind privater und öffentlicher Schlüssel austauschbar. Das heißt, wenn eine Nachricht mit dem privaten Schlüssel verschlüsselt wird, kann sie mit dem öffentlichen Schlüssel entschlüsselt werden. Da jedoch nur der Besitzer des privaten Schlüssels eine Nachricht erstellen kann, die man mit dem öffentlichen Schlüssel entschlüsseln kann, ist es so möglich den Absender einer Nachricht zu authentifizieren.

View file

@ -0,0 +1,19 @@
\section{Einwegfunktionen}
Eine Einwegfunktion ist in der Mathematik eine Beziehung zwischen
zwei Mengen, die "`komplexitätstheoretisch "`schwer"' umzukehren ist"'\footnote{[Beutelspacher], S. 114}.
Ein Beispiel für eine Einwegfunktion ist die Multiplikation zweier
Zahlen. Die Laufzeit des Schönhage-Strassen-Algorithmus zur
Multiplikation zweier $n$-stelliger ganzer Zahlen ist mit
$\mathcal{O}(n \cdot \log(n) \cdot \log(log(n)))$\footnote{[Pethö], S. 25}
deutlich kleiner als die Laufzeit von des Zahlkörpersiebs
$\mathcal{O}(e^{(1,92+o(1)) \sqrt[3]{\ln n} \sqrt[3]{(\ln \ln n)^2}})$\footnote{[Rothe], S. 384},
das der Faktorisierung dient.
Die Sicherheit des RSA-Verfahrens zur asymmetrischen
Verschlüsselung basiert auf der Annahme, dass die Faktorisierung
einer großen Zahl deutlich länger dauert als das Multiplizieren der
Primfaktoren. Falls es keinen besseren Algorithmus zur Faktorisierung
als zur Multiplikation gibt, ist diese Annahme korrekt. Nach dem
Stand von 2009 ist dies der Fall.
Weitere Hinweise zur Sicherheit des RSA-Kryptosystems sind in Kapitel 7.4 zu finden. % TODO link zu kapitel 7.4

View file

@ -0,0 +1,16 @@
\section{Restklassen}
Teilt man eine ganze Zahl $a$ durch eine ganze Zahl $m \neq 0$, so
bleibt ein Rest $r \in \mathbb{N}_0$. Anhand aller möglichen Reste
$0 \leq r < m$ teilt man nun alle Zahlen in $|m|$ Teilmengen ein.
Diese Teilmengen nennt man Restklassen. Man sagt, alle Zahlen, die
den selben Rest $r$ beim Teilen durch $m$ lassen, gehören der selben
Restklasse modulo $m$ an\footnote{[Forster], S. 45}.
Ein Beispiel aus dem Alltag sind Zeitangaben. Man schreibt nicht 348
Minuten, sondern 5 Stunden und 48 Minuten. Es wird also modulo 60
gerechnet. Auch in der Grund-schule rechnet man mit Restklassen
modulo 10, wenn man ganze Zahlen in Einer, Zehner und Hunderter
unterteilt.\\
Ein weiteres Beispiel ist die Einteilung in gerade und ungerade
Zahlen. Bleibt bei einer Zahl kein Rest beim Teilen durch zwei, so
wird sie als "`gerade"' bezeichnet und ist in einer Restklasse
modulo 2 mit allen anderen geraden Zahlen.

View file

@ -0,0 +1,17 @@
\section{Eulersche $\varphi$-Funktion}
Die Eulersche $\varphi$-Funktion gibt für jede natürliche Zahl $n$ an,
wie viele positive ganze Zahlen $a \leq n $ zu ihr relativ prim sind\footnote{[Brill], S. 148}.
$a$ ist zu $n$ relativ prim, wenn $ggT(a,n) = 1$ gilt, also wenn $a$
und $n$ keinen größeren gemeinsamen Teiler als $1$ haben. Man sagt
auch "`a und b sind teilerfremd"'.
$\varphi(n)$ ist zugleich die Ordnung der multiplikativen Gruppe $(\mathbb{Z}/n \mathbb{Z})^*$.
$\varphi(n)$ gibt also an, wie viele Zahlen im Restklassenring modulo $n$ ein multiplikativ Inverses haben. Mehr dazu in Kapitel 6. % TODO
Für Primzahlen gilt $\varphi(p) = p - 1$ , da eine Primzahl nur
durch sich und eins teilbar ist. Sei $A$ die multiplikative Gruppe
einer Primzahl $p$, $B$ die multiplikative Gruppe einer Primzahl $q$
und $C$ die multiplikative Gruppe von $p \cdot q$. Dann ist $|C| = |A| \cdot |B|$ und
$\varphi(p \cdot q) = |C|$, $\varphi(p) = |A|$ sowie $\varphi(q) = |B|$.
Daraus folgt, dass $\varphi(pq) = \varphi(p) \cdot \varphi(q) = (p-1) \cdot (q - 1)$ für zwei Primzahlen $p \neq q$ gilt.

View file

@ -0,0 +1,90 @@
\section{Lineare Kongruenzen}
\subsection{Allgemeine Informationen}
Zwei Zahlen $a, b \in \mathbb{Z}$ heißen kongruent modulo $m \in \mathbb{N}$,
falls $a$ und $b$ bei der Division durch $m$ den den gleichen Rest lassen.
Man schreibt $a \equiv b \imod{m}$\footnote{[Reiss], S. 179f}.
Gilt $ax \equiv b \imod{m}$, für $a, b, x \in \mathbb{Z}$ und $m \in \mathbb{N}$,
dann bedeutet das, dass $m | (ax - b)$ für ein passendes $x$.
Man nennt $ax \equiv b \imod{m}$ ein lineares Kongruenzsystem.
\clearpage
\subsection{Chinesischer Restsatz}
Der Chinesische Restsatz sagt, ob lineare Kongruenzsysteme lösbar
sind und wie diese Lösungen aussehen:
\begin{mdframed}[tikzsetting={draw=red,ultra thick}, innertopmargin=0.6cm]
Seien $m_1, m_2, ..., m_n$ paarweise teilerfremde natürliche Zahlen und
$a_1, a_2, \dots, a_n$ ganze Zahlen.
Dann ist das System linearer Kongruenzen
\[x \equiv a_1 \imod{m_1},\;\;\; x \equiv a_2 \imod{m_2},\;\;\;\dots,\;\;\; x \equiv a_n \imod{m_n}\]
lösbar. Alle Lösungen des Systems liegen in einer gemeinsamen
Restklasse modulo $M=\prod_{i = 1}^n m_i$
\end{mdframed}
\textbf{Beweis nach [Reiss], S. 221f:}
\begin{enumerate}[label=(\Roman{*}),labelsep=2em]
\item $M_j = \frac{M}{m_j}$ für $j = 1, \dots, n$
\item $y_j \cdot M_j \equiv 1 \imod{m_j}$, $y_j$ mit dem erweitertem Euklidischem Algorithmus bestimmen
\item $a_j \cdot y_j \cdot M_j \equiv a_j \imod{m_j}$ für $j = 1, \dots, n$\\
Weil $m_j$ für $i \neq j$ ein Teiler von $M_i$ ist, gilt auch:
\item $a_i \cdot y_i \cdot M_i \equiv 0 \imod{m_j}$ für alle $i, j = 1, \dots, n$ mit $i \neq j$
\end{enumerate}
Da alle Summanden bis auf Einen ($j = i$) gleich Null sind, stimmt dieser Ausdruck:
\begin{align*}
a_i \cdot y_i \cdot M_i &\equiv \sum_{j=1}^n {a_j \cdot y_j \cdot M_j} \imod{m_i}\\
a_i &\equiv \sum_{j=1}^n {a_j \cdot y_j \cdot M_j} \imod{m_i}\text{, da }y_i \cdot M_i \equiv 1 \imod{m_i}
\end{align*}
$a_i$ ist die Lösung des Kongruenzsystems. Alle Lösungen liegen in dieser Restklasse.
\subsubsection*{Beispielaufgabe}
Folgende Aufgabe wurde [Berendt] entnommen:
\hangindent2em
\hangafter=0
17 chinesische Piraten erbeuten eine Truhe mit Goldstücken. Beim Versuch, diese gleichmäßig zu verteilen, bleiben 7 Goldstücke übrig. Um diese entbrennt ein heftiger Streit, bei dem einer der Piraten das Leben lässt. Die verbleibenden 16 versuchen erneut, die Goldstücke gerecht zu verteilen, behalten jedoch elf Stücke übrig. Bei der folgenden Auseinandersetzung geht wieder einer der Streitenden über Bord. Den 15 Überlebenden gelingt dann die Teilung. Wie viele Goldstücke müssen es mindestens gewesen sein?
\subsubsection*{Restklassensystem} % This should semantically rather be subsubsubsection
\begin{align*}
x &:= \text{Anzahl der Goldstücke}\\
x &\equiv 7 \imod{17}\\
x &\equiv 11 \imod{16}\\
x &\equiv 0 \imod{15}
\end{align*}
\subsubsection*{Lösung}
I Produkte
\begin{align*}
M &= 17 \cdot 16 \cdot 15 = 4080\\
M_1 &= \frac{4080}{17} = 240\\
M_2 &= \frac{4080}{16} = 255\\
M_3 &= \frac{4080}{15} = 272
\end{align*}
II Multiplikativ Inverses der Restklassensysteme
\begin{align*}
9 \cdot 240 &\equiv 1 \imod{17}\\
15 \cdot 255 &\equiv 1 \imod{16}\\
8 \cdot 272 &\equiv 1 \imod{15}
\end{align*}
III Multiplikation der Restklassensysteme mit $a_j$
\begin{align*}
7 \cdot 9 \cdot 240 &\equiv 7 \imod{17}\\
11 \cdot 15 \cdot 255 &\equiv 11 \imod{16}\\
8 \cdot 272 &\equiv 0 \imod{15}
\end{align*}
IV Berechnung der Lösung des Restklassensystem
\begin{align*}
x = \sum_{j = 1}^3 a_j \cdot y_j \cdot M_j \imod{15 \cdot 16 \cdot 17} = 7 \cdot 240 \cdot 9 + 11 \cdot 255 \cdot 15 = 57195\\
57195 \equiv 75 \imod{4080}\\
75 \text{ ist die kleinste positive Lösung des Kongruenzsystems.}
\end{align*}
\subsubsection*{Antwort:}
Die Anzahl der von den Piraten erbeuteten Goldstücken muss mindestens $75$ betragen, kann aber auch $75 + 1 \cdot 4080$, $75 + 2 \cdot 4080$ oder ein beliebiger anderer positiver Vertreter dieser Restklasse$\imod{4080}$ sein.

View file

@ -0,0 +1,77 @@
\section{Multiplikativ inverses Element}
\subsection{Definition und Beispiele}
Das multiplikativ inverse Element $d$ von $e$ ergibt bei der
Multiplikation mit $e$ das neutrale Element der Multiplikation, also
die Eins: $d \cdot e = 1$
In $\mathbb{R} \setminus \Set{0}$ hat jedes Element ein multiplikativ
Inverses, den Kehrbruch. In $\mathbb{Z}/7 \mathbb{Z}$ ist das
multiplikativ Inverse von zwei in der Restgruppe von vier, da
$2 \cdot 4 = 8$ und $8 \equiv 1 \imod{7}$.
Mit dem erweitertem euklidischem Algorithmus kann man das
multiplikativ Inverse von $a$ in $\mathbb{Z}/n \mathbb{Z}$ finden.
\subsection{Erweiterter euklidischer Algorithmus}
Sind zwei Zahlen $a > b$ gegeben und will deren größten gemeinsamen
Teiler berechnen, so kann man den erweiterten euklidischen
Algorithmus anwenden:
\begin{enumerate}
\item Größtmögliches $q$ wählen, so dass gilt $a = q_1 \cdot b + r_1$
\item $b = q_2 \cdot r_1 + r_2$
\item $r_1 = q_3 \cdot r_2 + r_3$
\item \dots
\item bis $r_{n-2} = q_n \cdot r_{n-1} + r_n$ mit $r_n = 0$
\end{enumerate}
Dann ist $r_{n-1} = ggT(a,b)$
Mit diesem Algorithmus kann man nun das multiplikativ Inverse von $a$
in $\mathbb{Z}/n \mathbb{Z}$ finden, wenn der größte gemeinsame Teiler von $a$ und
$n$ gleich 1 ist. Da im vorletzten Schritt $r_{n - 1} = 1$ ist, kann man 1 als
Linearkombination der Reste von $r_{n - 3}$ und $r_{n - 2}$
darstellen. Diese Reste kann man wiederum als Linearkombination
vorhergehender Reste darstellen. Dies setzt man so lange fort,
bis man eine Linearkombination mit $a$ und $n$ von 1 hat. Da wir im
Restklassenring $n$ sind, muss man nur das Produkt mit $a$ betrachten
und kann das multiplikativ Inverse zu $a$ im Restklassenring
$\mathbb{Z}/n \mathbb{Z}$ ablesen.
Hier ein Beispiel zur Veranschaulichung:
Sei $a = (\text{Primzahl}_1 - 1) \cdot (\text{Primzahl}_2 - 1) =(3 - 1) \cdot (47 - 1) = 92$ und $b=71$
Gesucht ist das multiplikativ Inverse $b \in \mathbb{Z} / a \mathbb{Z}$ von $x \cdot 71 \equiv 1 \imod{92}$:
\begin{tabular}{lll}
\textbf{Schritt 1}: euklidischer Algorithmus & & \textbf{Schritt 2}: nach Rest auflösen\\
$91=1 \cdot 71 + 21$ & $\rightarrow$ & $21 = 92 - 71$\\
$71=3 \cdot 21 + 8$ & $\rightarrow$ & $8 = 71 - 3 \cdot 21$\\
$21=2 \cdot 8 + 5$ & $\rightarrow$ & $5 = 21 - 2 \cdot 8$\\
$ 8=1 \cdot 5 + 3$ & $\rightarrow$ & $3 = 8 - 1 \cdot 5$\\
$ 5=1 \cdot 3 + 2$ & $\rightarrow$ & $2 = 5 - 1 \cdot 3$\\
$ 3=1 \cdot 2 + 1$ & $\rightarrow$ & $1 = 3 - 1 \cdot 2$
\end{tabular}
\textbf{Schritt 3}: so lange Reste einsetzen, bis eine Linearkombination der Form
$1 = x \cdot 92 + y \cdot 71$ gefunden ist:
\begin{align*}
1 &= 3 - (5 - 3) &&= 2 \cdot 3 - 5 \\
1 &= 2 \cdot (8 - 5) - (21 - 2 \cdot 8) &&= 4 \cdot 8 - 2 \cdot 5 - 21 \\
1 &= 4 \cdot 8 - 2 \cdot (21 - 2 \cdot 8) - 21 &&= 8 \cdot 8 - 3 \cdot 21 \\
1 &= 8 \cdot (71 - 3 \cdot 21) - 3 \cdot (92 - 71) &&= 11 \cdot 71 - 24 \cdot 21 - 3 \cdot 92 \\
1 &= 11 \cdot 71 - 3 \cdot 92 - 24 \cdot (92 - 71) &&= 35 \cdot 71 - 27 \cdot 92
\end{align*}
Das bedeutet 35 ist das multiplikativ Inverse zu 71 in
$ \mathbb{Z} / 92 \mathbb{Z}$ und erfüllt damit die Kongruenzgleichung
$35 \cdot 71 \equiv 1 \imod{92}$.
Zusätzlich hat man damit weitere multiplikativ Inverse gefunden:
\begin{itemize}
\item $-27 \cdot 92 \equiv 1 \imod{71}$
\item $-27 \cdot 92 \equiv 1 \imod{35}$
\item $35 \cdot 71 \equiv 1 \imod{27}$
\end{itemize}

View file

@ -0,0 +1,281 @@
\section{RSA-Verfahren}
Das RSA-Verfahren ist ein asymmetrisches Kryptosystem, das von
Ronald Linn \textbf{R}ivest, Adi \textbf{S}hamir und Leonard
\textbf{A}dleman entwickelt und im August 1977 veröffentlicht wurde\footnote{[msri], S. 2}.
Da das RSA-Verfahren asymmetrisch ist, wird sowohl ein öffentlicher
Schlüssel als auch ein privater Schlüssel benötigt. Der öffentliche
Schlüssel dient der Verschlüsselung und besteht aus dem RSA-Modul $N$
und dem Verschlüsselungsexponenten $e$. Der private Schlüssel
besteht aus dem Entschlüsselungsexponenten $d$ und dem selben RSA-Modul $N$.
Die Erzeugung dieser drei Zahlen $N$, $e$ und $d$ für das RSA-Verfahren
kann, in An-lehnung an [wiki-RSA], in fünf Schritte unterteilt werden:
\begin{description}
\item[Schritt 1:] Als erstes werden zwei große Primzahlen gewählt.
Je größer diese Primzahlen sind, desto sicherer
ist die Verschlüsselung.
(vgl. Kapitel 7.4 "`Sicherheit des RSA-Verfahrens"')
\item[Schritt 2:] In diesem Schritt wird RSA-Modul $N = p \cdot q$
berechnet, das ein Teil des öffentlichen
Schlüssels ist.
\item[Schritt 3:] Schritt 3: Nun wird der Wert der Eulerschen
$\varphi$-Funktion bei $N$ berechnet. Da $p$
und $q$ Primzahlen sind, gilt $\varphi(N) = (p-1) \cdot (q-1)$ (vgl. Kapitel 4) % TODO
\item[Schritt 4:] Nachdem $\varphi(N)$ ermittelt wurde, kann der
zweite Teil des öffentlichen Schlüssel, der
Verschlüsselungsexponent $e$, ermittelt werden.
Folgende Bedingungen müssen für $e$ gelten:
$1 < e < \varphi(N) $ und $ggT(e, \varphi(N)) = 1$
\item[Schritt 5:] Es folgt die Berechnung des Entschlüsselungsexponenten
$d$ als multiplikativ Inverses von $e$
bezüglich des Modules $\varphi(N)$. Es soll
also folgende Kongruenz gelten:
$e \cdot d \equiv 1 \imod{\varphi(N)}$
\end{description}
\subsection{Verschlüsselung mit dem öffentlichen Schlüssel}
Ein Text wird verschlüsselt, indem er in Zahlen umgewandelt wird. Für
diese Umwandlung kann der ASCII-Code verwendet werden. Sobald man
Zahlen hat, kann man den unverschlüsselten Klartext $K$ mit folgender
Kongruenzgleichung in den verschlüsselten Geheimtext $G$ umwandeln: $G \equiv K^e \imod{N}$.\\
Die Zahl $N$ sollte deutlich größer sein als K\footnote{vgl. [Reiss], S. 288}.
In folgendem Beispiel wird der Klartext "`12"' verschlüsselt. Dazu
werden als Erstes alle benötigten Variablen erzeugt oder berechnet:
\begin{description}
\item[Schritt 1:] $p := 347$ und $q := 379$
\item[Schritt 2:] $N = p \cdot q = 347 \cdot 379 = 131513$
\item[Schritt 3:] $\varphi(N) = \varphi(131513) = (347 - 1) \cdot (379 - 1) = 346 \cdot 378 = 130788$
\item[Schritt 4:] $1 < (e := 877) < \varphi(N) $
\item[Schritt 5:] $877 \cdot d \equiv 1 \imod{130788}$
\end{description}
Um ein $d$ zu finden, das diese Kongruenz erfüllt, wird der
erweiterte euklidische Algorithmus angewendet:
\begin{tabular}{lll}
\textbf{Schritt 1}: euklidischer Algorithmus & & \textbf{Schritt 2}: nach Rest auflösen\\
$130788 = 149 \cdot 877 + 115$ & $\rightarrow$ & $115 = 130788 - 149 \cdot 877$\\
$877= 7 \cdot 115 + 72$ & $\rightarrow$ & $72 = 877 - 7 \cdot 115$\\
$115= 1 \cdot 72 + 43$ & $\rightarrow$ & $43 = 115 - 72$\\
$72= 1 \cdot 43 + 29$ & $\rightarrow$ & $29 = 72 - 43$\\
$43= 1 \cdot 29 + 14$ & $\rightarrow$ & $14 = 43 - 29$\\
$29= 2 \cdot 14 + 1$ & $\rightarrow$ & $1 = 29 - 2 \cdot 14$
\end{tabular}
\textbf{Schritt 3}: so lange Reste einsetzen, bis eine Linearkombination der Form
$1 = x \cdot 877 + y \cdot 130788$ gefunden ist:
\begin{align*}
1 &= 29- 2 \cdot (43-29) \\
1 &= 3 \cdot 29 - 2 \cdot (115 - 72) \\
1 &= 3 \cdot (72 - 43) - 2 (130788-149 \cdot 877) + 2 \cdot (877 - 7 \cdot 115) \\
1 &= 3 \cdot (877 - 7 \cdot 115) -3 \cdot (115 - 72) - 2 \cdot 130788 + 300 \cdot 877 -14 \cdot 155 \\
1 &= 303 \cdot 877 - 2 \cdot 130788 - 38 \cdot 115 + 3 \cdot 72 \\
1 &= 303 \cdot 877 - 2 \cdot 130788 - 38 \cdot (130788-149 \cdot 877) + 3 \cdot (877 - 7 \cdot 115) \\
1 &= 5968 \cdot 877 - 40 \cdot 130788 - 21 \cdot (130788-149 \cdot 877) = 9097 \cdot 877 - 61 \cdot 130788
\end{align*}
$\rightarrow d = 9097$
Probe:
\[\frac{d \cdot e - 1}{\varphi(N)} = \frac{877 \cdot 9097 - 1}{130788} = 61\]
Nun wird der Geheimtext $G$ mit dem Verschlüsselungsexponenten $e$
aus dem Klartext $K$ berechnet:
\begin{align*}
G &\equiv K^e \imod{N}\\
G &\equiv 12^877 \equiv 12 \cdot (12^6)^{2 \cdot 73} \equiv 12 \cdot 92698^{2 \cdot 73} \equiv 12 \cdot 122810^{73} \imod{131513} \\
G &\equiv 12 \cdot 122810 \cdot 122810^{2 \cdot 2 \cdot 2 \cdot 3 \cdot 3} \equiv 27077 \cdot 122234^{2 \cdot 2 \cdot 3 \cdot 3} \equiv 27077 \cdot 90339^{2 \cdot 3 \cdot 3} \imod{131513} \\
G &\equiv 27077 \cdot 95706^{9} \equiv 27077 \cdot 9189^{3} \equiv 27077 \cdot 56590 \imod{131513} \\
G &\equiv 29467 \imod{131513}
\end{align*}
\subsection{Entschlüsselung mit dem privaten Schlüssel}
\subsubsection{Entschlüsselung ohne den Chinesischen Restsatz}
Der Geheimtext wird entschlüsselt, indem man ihn mit $d$ potenziert
und dann denn kleinsten positiven Repräsentanten der Restklasse $N$
berechnet: $K \equiv G^d \imod{N}$
Im Folgenden wird die Entschlüsselung auf das vorhergehende Beispiel
angewendet:
\begin{align*}
G &= 29467 ~~~ N= 131513 ~~~ d = 9097 \\
K &\equiv G^d \imod{N}\\
K &\equiv 29467^{9097} \imod{131513}\\
K &\equiv 29467 \cdot (29467^2)^{2 \cdot 2 \cdot 3 \cdot 379} \equiv 29467 \cdot (55263^2)^{2 \cdot 3 \cdot 379} \equiv 29467 \cdot 4283^{2 \cdot 3 \cdot 379} \imod{131513} \\
K &\equiv 29467 \cdot 89937^{2 \cdot 3} \equiv 29467 \cdot 88417^3 \equiv 29467 \cdot 24587 \imod{131513} \\
K &\equiv 12 \imod{131513}
\end{align*}
\subsubsection{Entschlüsselung mit dem Chinesischen Restsatz}
Falls der Entschlüsselungsexponent $d$ sehr groß ist, kann das
Potenzieren lange dauern. Dies kann mit dem Chinesischem Restsatz
beschleunigt werden\footnote{[Paixão], S. 1}.
Diese Idee wurde [Paixão] entnommen:
Der Geheimtext $G$ und der Exponent $d$ wird folgendermaßen geteilt:
\begin{tabular}{llll}
$\begin{aligned}
G_p &\equiv G \imod{p} \\
G_q &\equiv G \imod{q}
\end{aligned}$ & und &
$\begin{aligned}
d_p &\equiv d \imod{p-1} \\
d_q &\equiv d \imod{q-1}
\end{aligned}$ &, da $e \cdot d \equiv 1 \imod{(p-1) \cdot (q-1))}$
\end{tabular}
Dies funktioniert, da der folgende Hilfssatz gilt:
\begin{mdframed}[tikzsetting={draw=red,ultra thick}, innertopmargin=0.6cm]
$K^ed \equiv G \imod{p \cdot q} \Leftrightarrow K^{ed} \equiv G \imod{p} \land K^{ed} \equiv G \imod{q}$
\end{mdframed}
Nun wird dieser kleinere Teil von G mit den kleineren Exponenten "`entschlüsselt"':
\begin{align*}
K_p &\equiv {G_p} ^ {d_p} \imod{p}\\
K_q &\equiv {G_q} ^ {d_q} \imod{q}
\end{align*}
Der Chinesische Restsatz ermöglicht es nun, eine Lösung $K$ für die
folgenden Kongruenzen zu finden:
\begin{align*}
K &\equiv K_p \imod{p}\\
K &\equiv K_q \imod{q}
\end{align*}
Dazu müssen die multiplikativ inversen Elemente ermittelt werden:
\begin{align*}
y_p \cdot p \equiv 1 \imod{q}\\
y_q \cdot q \equiv 1 \imod{p}
\end{align*}
Nun wird der Klartext zusammengesetzt:
\[K \equiv (K_p \cdot y_p \cdot q + K_q \cdot y_q \cdot p) \imod{N}\]
Diese Methode ist etwa vier mal schneller als die Entschlüsselung mit $d$\footnote{[Paixão], S. 2}.
\subsection{Entschlüsselung ohne den privaten Schlüssel}
Ist der Entschlüsselungsexponent $d$ unbekannt, so kann dieser durch
Faktorisierung von $N$ zurückgewonnen werden. Faktorisiert man $N$, so
kann $\varphi(N)$ berechnet werden und die Kongruenz $e \cdot d \equiv 1 \imod{\varphi(N)}$ gelöst werden.
Als praktische Arbeit wurde mir folgende Aufgabe gestellt:
\begin{mdframed}[tikzsetting={draw=black,very thick}, innertopmargin=0.6cm]
\begin{verbatim}
N := 65937_24735_90338_11941_75738_06421_27758_89771;
e := 47;
# geheime Botschaft:
y := 65087_24329_19692_65260_21005_67465_76581_27499;
\end{verbatim}
Wie lautet die Botschaft im Klartext?
\end{mdframed}
Um diese Aufgabe zu lösen, versucht man den privaten Schlüssel mit
Hilfe des öffentlichen Schlüssels wiederherzustellen.
Der private Schlüssel $d$ muss die Kongruenzgleichung
$e \cdot d \equiv 1 \imod{\varphi(N)}$ erfüllen, allerdings sind
$\varphi(N)$ und $d$ nicht bekannt. Um $\varphi(N)$ zu berechnen,
werden die Primfaktoren $p$ und $q$, aus denen $N$ besteht, benötigt.
$N$ muss also faktorisiert werden. Sobald ein Faktor von $N$ bekannt
ist, kann man $N$ durch diesen Faktor teilen und man erhält den
zweiten Faktor. Dann kann man wie in Kapitel 7 vorgehen und $d$ % TODO link to kapitel
berechnen. Mit $d$ kann man wie in Kapitel 7.2 beschrieben die % TODO link to kapitel
Geheimbotschaft entschlüsseln.
Wird das Aribas-Skript im Anhang ausgeführt, das diese Schritte
ausführt, erhält man den Klartext "`\textbf{RSAribas}"'.
\subsection{Sicherheit des RSA-Algorithmus}
Der RSA-Algorithmus kann, wie oben beschrieben, "`geknackt"' werden,
indem der öffentliche Schlüssel faktorisiert wird. Allerdings ist das
bei großen Zahlen nahezu unmöglich, da die Algorithmen sehr lange
Laufzeiten haben\footnote{[RSA-2190]}.
Wie lange die Faktorisierung dauert hängt einerseits vom Algorithmus,
andererseits von der Hardware ab.
Um ein Gefühl dafür zu bekommen was "`sehr lange"' bedeutet, kann man
die "`RSA Factoring Challenge"' als Beispiel betrachten. Eine
193-stellige Zahl sollte Faktorisiert werden. Für diese Aufgabe
wurde am 18. März 1991 ein Preisgeld von 20.000 US-Dollar
ausgeschrieben. Ein Team des Instituts für Experimentelle Mathematik
in Essen hat am 2. November 2005 diese Aufgabe gelöst und dafür
über fünf Monate benötigt. Der Rechenaufwand betrug etwa 30
2.2GHz-Opteron-CPU Jahre\footnote{[RSA-2964]}.
Das Faktorisieren wird zwar immer schneller, da man über bessere und
billigere Computer sowie effizientere Algorithmen verfügt, allerdings
steigt mit den Hardwareverbesserungen die Sicherheit des
RSA-Algorithmus. Mit einer besseren Hardware können deutlich größere
Primzahlen erzeugt werden und damit auch ein deutlich längerer
öffentlicher Schlüssel generiert werden, der zur Verschlüsselung der
Nachricht dient.
Ein verbesserter Faktorisierungsalgorithmus würde die Sicherheit des
RSA-Kryptosystems gefährden. Es ist jedoch unwahrscheinlich, dass ein
solcher Algorithmus gefunden wird, da das Problem als schwer
angesehen wird.\footnote{[RSA-2191]}
Ein weiterer möglicher Angriff auf das RSA-Kryptosystem wäre die
$e$-te Wurzel $\imod{n}$ zu finden. Da $G \equiv K^e \imod{N}$ ist,
wäre $K \equiv \sqrt[e]{K^e} \imod{N}$. Allerdings ist kein Angriff,
der so funktioniert, bekannt4. Um zu veranschaulichen, dass bei einer
Kongruenzgleichung nicht wie gewohnt die Wurzel gezogen werden kann,
betrachte man folgendes Beispiel: $4 \equiv 16 \imod{3}$, aber
$\sqrt{4} \neq \sqrt{16} \imod{3}$.
\subsection{Warum der RSA-Algorithmus funktioniert}
Der Geheimtext $G$ wird durch potenzieren mit $e$ gewonnen ($G \equiv K^e \imod{N}$)
und der Klartext durch potenzieren mit $d$ ($K \equiv G^d \imod{N}$).
Zu zeigen ist, dass
$K \equiv K^{e \cdot d} \imod{N}$ mit $ed \equiv 1 \imod{\varphi(N)}$ gilt.
Es kann folgende Umformung durchgeführt werden:
\begin{align*}
ed &\equiv 1 \imod{\varphi(N)}\\
ed &= 1 + x \cdot \varphi(N) \text{mit } x \in \mathbb{Z}
\end{align*}
Daraus folgt:
\[K^{e \cdot d} = K^{1 + x \cdot \varphi(N)} = K \cdot K^{x \cdot \varphi(N)}\]
Nun wird der \textbf{Satz von Fermat-Euler} als Hilfssatz eingeführt:
\begin{mdframed}[tikzsetting={draw=red,ultra thick}, innertopmargin=0.6cm]
$K^{\varphi(N)} \equiv 1 \imod{N}$ für $K, N \in \mathbb{N}$ und $ggT(N, K) = 1$
\end{mdframed}
Beweis nach [Reiss], S. 218 f.:
\hangindent2em
\hangafter=0
Es gibt $\varphi(N)$ verschiedene, zu $N$ teilerfremde Reste. Da $K$
zu $N$ teilerfremd ist, muss auch jedes der Produkte
$K \cdot r_1 , K \cdot r_2 , \dots, K \cdot r_{\varphi(N)}$ zu $N$
teilerfremd sein.
Es gilt:
\begin{align*}
\prod_{i=1}^{n=\varphi(N)} K \cdot r_i &\equiv \prod_{i=1}^{n=\varphi(N)} r_i \imod{N}\\
K^{\varphi(N)} \prod_{i=1}^{n=\varphi(N)} r_i &\equiv \prod_{i=1}^{n=\varphi(N)} r_i \imod{N}
\end{align*}
Da alle $r_i$ teilerfremd zu N sind, kann man durch das Produkt teilen. Daraus ergibt sich:
\[K^{\varphi(N)} \equiv 1 \imod{N}\]
Das bedeutet für den RSA-Algorithmus:
\[K \cdot K^{x \cdot \varphi(N)} \equiv K \cdot (K^{\varphi(N)})^x \equiv K \cdot 1^x \equiv K \imod{N}\]

View file

@ -0,0 +1,34 @@
\section{Literaturverzeichnis}
\textbf{Beutelspacher, A., Neumann, H. B. und Schwarzpaul, T.:}\\
Kryptografie in Theorie und Praxis.\\
Wiesbaden, Vieweg+Teubner Verlag, 2005.
\textbf{Brill, M.:}\\
Mathematik für Informatiker.\\
Wien, Hanser Verlag, 2004.
\textbf{Forster, O.:}\\
Algorithmische Zahlentheorie.\\
Wiesbaden, Vieweg Braunschweig/Wiesbaden, 1996.
\textbf{Pethö, A. und Pohst, M.:}\\
Algebraische Algorithmen.\\
Wiesbaden, Vieweg+Teubner Verlag, 1999.
\textbf{Reiss, K. und Schmieder, G.:}\\
Basiswissen Zahlentheorie.\\
Berlin Heidelberg, Springer-Verlag, 2007.
\textbf{Rothe, J.:}\\
Komplexitätstheorie und Kryptologie.\\
Berlin, Springer, 2008.
\textbf{Wrixon, F. B.:}\\
Geheimsprachen.\\
Königswinter, Tandem Verlag GmbH, 2006.
\newpage
\subsection*{Internetadressen}
TODO

View file

@ -0,0 +1,8 @@
SOURCE = facharbeit-rsa
make:
pdflatex -shell-escape $(SOURCE).tex -output-format=pdf
pdflatex -shell-escape $(SOURCE).tex -output-format=pdf
make clean
clean:
rm -rf $(TARGET) *.class *.html *.log *.aux *.out *.toc

View file

@ -0,0 +1,10 @@
\vspace{10cm}
Ich erkläre, dass ich die Facharbeit ohne fremde Hilfe angefertigt
und nur die im Literaturverzeichnis angeführten Quellen und
Hilfsmittel benützt habe.
\vspace{10cm}
Langweid, 20.01.2010
Ort, Datum Unterschrift

View file

@ -0,0 +1,28 @@
\thispagestyle{empty}
\begin{center}
{\Huge Paul-Klee-Gymnasium}
Facharbeit aus der Mathematik
Thema:
Asymmetrische Verschlüsselungsverfahren
am Beispiel des RSA-Kryptosystems
\begin{tabular}{lll}
Verfasser &:& Martin Andreas Thoma\\
Kursleiter &:& Claudia Wenninger\\
Abgegeben am &:& 20.01.2010 (verändert am 06.04.2010)\\
\\
\\
Erzielte Note &:& \line(1,0){120}\\
Erzielte Punkteanzahl &:& \line(1,0){120}\\
\end{tabular}
\end{center}

View file

@ -0,0 +1,91 @@
\makeatletter
\def\PY@reset{\let\PY@it=\relax \let\PY@bf=\relax%
\let\PY@ul=\relax \let\PY@tc=\relax%
\let\PY@bc=\relax \let\PY@ff=\relax}
\def\PY@tok#1{\csname PY@tok@#1\endcsname}
\def\PY@toks#1+{\ifx\relax#1\empty\else%
\PY@tok{#1}\expandafter\PY@toks\fi}
\def\PY@do#1{\PY@bc{\PY@tc{\PY@ul{%
\PY@it{\PY@bf{\PY@ff{#1}}}}}}}
\def\PY#1#2{\PY@reset\PY@toks#1+\relax+\PY@do{#2}}
\expandafter\def\csname PY@tok@gd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}}
\expandafter\def\csname PY@tok@gu\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}}
\expandafter\def\csname PY@tok@gt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.25,0.82}{##1}}}
\expandafter\def\csname PY@tok@gs\endcsname{\let\PY@bf=\textbf}
\expandafter\def\csname PY@tok@gr\endcsname{\def\PY@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
\expandafter\def\csname PY@tok@cm\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
\expandafter\def\csname PY@tok@vg\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
\expandafter\def\csname PY@tok@m\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
\expandafter\def\csname PY@tok@mh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
\expandafter\def\csname PY@tok@go\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.50,0.50,0.50}{##1}}}
\expandafter\def\csname PY@tok@ge\endcsname{\let\PY@it=\textit}
\expandafter\def\csname PY@tok@vc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
\expandafter\def\csname PY@tok@il\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
\expandafter\def\csname PY@tok@cs\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
\expandafter\def\csname PY@tok@cp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.74,0.48,0.00}{##1}}}
\expandafter\def\csname PY@tok@gi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}}
\expandafter\def\csname PY@tok@gh\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
\expandafter\def\csname PY@tok@ni\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.60,0.60,0.60}{##1}}}
\expandafter\def\csname PY@tok@nl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.63,0.00}{##1}}}
\expandafter\def\csname PY@tok@nn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
\expandafter\def\csname PY@tok@no\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}}
\expandafter\def\csname PY@tok@na\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.49,0.56,0.16}{##1}}}
\expandafter\def\csname PY@tok@nb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@nc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
\expandafter\def\csname PY@tok@nd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
\expandafter\def\csname PY@tok@ne\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.82,0.25,0.23}{##1}}}
\expandafter\def\csname PY@tok@nf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
\expandafter\def\csname PY@tok@si\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}}
\expandafter\def\csname PY@tok@s2\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
\expandafter\def\csname PY@tok@vi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
\expandafter\def\csname PY@tok@nt\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@nv\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
\expandafter\def\csname PY@tok@s1\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
\expandafter\def\csname PY@tok@sh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
\expandafter\def\csname PY@tok@sc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
\expandafter\def\csname PY@tok@sx\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@bp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@c1\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
\expandafter\def\csname PY@tok@kc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@c\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
\expandafter\def\csname PY@tok@mf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
\expandafter\def\csname PY@tok@err\endcsname{\def\PY@bc##1{\setlength{\fboxsep}{0pt}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}}
\expandafter\def\csname PY@tok@kd\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@ss\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
\expandafter\def\csname PY@tok@sr\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}}
\expandafter\def\csname PY@tok@mo\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
\expandafter\def\csname PY@tok@kn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@mi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
\expandafter\def\csname PY@tok@gp\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
\expandafter\def\csname PY@tok@o\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
\expandafter\def\csname PY@tok@kr\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@s\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
\expandafter\def\csname PY@tok@kp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@w\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
\expandafter\def\csname PY@tok@kt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}}
\expandafter\def\csname PY@tok@ow\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
\expandafter\def\csname PY@tok@sb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
\expandafter\def\csname PY@tok@k\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@se\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.13}{##1}}}
\expandafter\def\csname PY@tok@sd\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
\def\PYZbs{\char`\\}
\def\PYZus{\char`\_}
\def\PYZob{\char`\{}
\def\PYZcb{\char`\}}
\def\PYZca{\char`\^}
\def\PYZam{\char`\&}
\def\PYZlt{\char`\<}
\def\PYZgt{\char`\>}
\def\PYZsh{\char`\#}
\def\PYZpc{\char`\%}
\def\PYZdl{\char`\$}
\def\PYZti{\char`\~}
% for compatibility with earlier versions
\def\PYZat{@}
\def\PYZlb{[}
\def\PYZrb{]}
\makeatother

View file

@ -0,0 +1,89 @@
\documentclass[a4paper,12pt]{scrartcl}
\usepackage{amssymb, amsmath} % needed for math
\usepackage[utf8]{inputenc} % this is needed for umlauts
\usepackage[ngerman]{babel} % this is needed for umlauts
\usepackage[T1]{fontenc} % this is needed for correct output of umlauts in pdf
\usepackage[top=3cm, bottom=3cm, left=4cm, right=2cm]{geometry} %layout
\usepackage{hyperref} % links im text
\usepackage{color}
\usepackage{framed}
\usepackage{enumerate} % for advanced numbering of lists
\usepackage{pdfpages} % Signatureinbingung und includepdf
\usepackage{parskip} % spaces instead of intendation between paragraphs
\usepackage{cite}
\linespread{1.45} % 1,45-Facher Zeilenabstand
\usepackage{titlesec}
%\titlespacing{command}{left spacing}{before spacing}{after spacing}[right]
\titlespacing\section{0pt}{12pt plus 3pt minus 2pt}{0pt plus 2pt minus 1pt}
\usepackage[framemethod=tikz,xcolor=true]{mdframed}
\usepackage{enumitem}
\usepackage{braket} % needed for nice printing of sets
\usepackage{fancyhdr} % needed for the footer
\usepackage{lastpage} % needed for the footer
\clubpenalty = 10000 % Schusterjungen verhindern
\widowpenalty = 10000 % Hurenkinder verhindern
\hypersetup{
pdfauthor = {Martin Thoma},
pdfkeywords = {Asymmetrische Verschlüsselungsverfahren; RSA-Kryptosystems},
pdftitle = {Asymmetrische Verschlüsselungsverfahren am Beispiel des RSA-Kryptosystems}
}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancyfoot[R]{Seite~\thepage~von \pageref{LastPage}}
% From http://www.matthewflickinger.com/blog/archives/2005/02/20/latex_mod_spacing.asp
% Thanks!
\makeatletter
\def\imod#1{\allowbreak\mkern10mu({\operator@font mod}\,\,#1)}
\makeatother
\usepackage{minted} % needed for the inclusion of source code
\begin{document}
\setcounter{page}{0}
\pagenumbering{roman}
%\input{Titelseite}
\includepdf[pages=1]{Titelseite.pdf}
\clearpage
\thispagestyle{empty}
\tableofcontents
\clearpage
\pagenumbering{arabic}
\setcounter{page}{2}
% Start der eigentlichen Arbeit
\input{Kapitel-1}
\clearpage
\input{Kapitel-2}
\input{Kapitel-3}
\clearpage
\input{Kapitel-4}
\input{Kapitel-5}
\clearpage
\input{Kapitel-6}
\clearpage
\input{Kapitel-7}
\clearpage
\input{Literatur}
\clearpage
\input{Anhang}
\clearpage
\newpage
\input{Selbststaendigkeitserklaerung}
\end{document}