Selaa lähdekoodia

facharbeit hinzugefügt

Martin Thoma 12 vuotta sitten
vanhempi
commit
7e2693dd5e

+ 3 - 0
documents/facharbeit-rsa/Anhang.tex

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

+ 11 - 0
documents/facharbeit-rsa/Factoring.ari

@@ -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)). 

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
documents/facharbeit-rsa/Kapitel-1.tex


+ 19 - 0
documents/facharbeit-rsa/Kapitel-2.tex

@@ -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

+ 16 - 0
documents/facharbeit-rsa/Kapitel-3.tex

@@ -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.

+ 17 - 0
documents/facharbeit-rsa/Kapitel-4.tex

@@ -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.

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 90 - 0
documents/facharbeit-rsa/Kapitel-5.tex


+ 77 - 0
documents/facharbeit-rsa/Kapitel-6.tex

@@ -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}

+ 281 - 0
documents/facharbeit-rsa/Kapitel-7.tex

@@ -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}\]
+	

+ 34 - 0
documents/facharbeit-rsa/Literatur.tex

@@ -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

+ 8 - 0
documents/facharbeit-rsa/Makefile

@@ -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

+ 10 - 0
documents/facharbeit-rsa/Selbststaendigkeitserklaerung.tex

@@ -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

+ 28 - 0
documents/facharbeit-rsa/Titelseite.tex

@@ -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}
+

+ 91 - 0
documents/facharbeit-rsa/facharbeit-rsa.pyg

@@ -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
+

+ 89 - 0
documents/facharbeit-rsa/facharbeit-rsa.tex

@@ -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}