mirror of
https://github.com/MartinThoma/LaTeX-examples.git
synced 2025-04-25 14:28:05 +02:00
facharbeit hinzugefügt
This commit is contained in:
parent
ab551853dd
commit
7e2693dd5e
15 changed files with 780 additions and 0 deletions
3
documents/facharbeit-rsa/Anhang.tex
Normal file
3
documents/facharbeit-rsa/Anhang.tex
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
\section{Anhang}
|
||||||
|
|
||||||
|
\inputminted[linenos, numbersep=5pt, tabsize=4]{pascal}{Factoring.ari}
|
11
documents/facharbeit-rsa/Factoring.ari
Normal file
11
documents/facharbeit-rsa/Factoring.ari
Normal 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)).
|
6
documents/facharbeit-rsa/Kapitel-1.tex
Normal file
6
documents/facharbeit-rsa/Kapitel-1.tex
Normal 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.
|
19
documents/facharbeit-rsa/Kapitel-2.tex
Normal file
19
documents/facharbeit-rsa/Kapitel-2.tex
Normal 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
|
16
documents/facharbeit-rsa/Kapitel-3.tex
Normal file
16
documents/facharbeit-rsa/Kapitel-3.tex
Normal 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.
|
17
documents/facharbeit-rsa/Kapitel-4.tex
Normal file
17
documents/facharbeit-rsa/Kapitel-4.tex
Normal 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.
|
90
documents/facharbeit-rsa/Kapitel-5.tex
Normal file
90
documents/facharbeit-rsa/Kapitel-5.tex
Normal 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.
|
77
documents/facharbeit-rsa/Kapitel-6.tex
Normal file
77
documents/facharbeit-rsa/Kapitel-6.tex
Normal 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}
|
281
documents/facharbeit-rsa/Kapitel-7.tex
Normal file
281
documents/facharbeit-rsa/Kapitel-7.tex
Normal 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}\]
|
||||||
|
|
34
documents/facharbeit-rsa/Literatur.tex
Normal file
34
documents/facharbeit-rsa/Literatur.tex
Normal 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
|
8
documents/facharbeit-rsa/Makefile
Normal file
8
documents/facharbeit-rsa/Makefile
Normal 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
|
10
documents/facharbeit-rsa/Selbststaendigkeitserklaerung.tex
Normal file
10
documents/facharbeit-rsa/Selbststaendigkeitserklaerung.tex
Normal 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
|
28
documents/facharbeit-rsa/Titelseite.tex
Normal file
28
documents/facharbeit-rsa/Titelseite.tex
Normal 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}
|
||||||
|
|
91
documents/facharbeit-rsa/facharbeit-rsa.pyg
Normal file
91
documents/facharbeit-rsa/facharbeit-rsa.pyg
Normal 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
|
||||||
|
|
89
documents/facharbeit-rsa/facharbeit-rsa.tex
Normal file
89
documents/facharbeit-rsa/facharbeit-rsa.tex
Normal 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}
|
Loading…
Add table
Add a link
Reference in a new issue