math_rsa/main.tex

580 lines
22 KiB
TeX
Raw Normal View History

\documentclass{math_rsa}
2016-11-26 12:35:02 +01:00
\title{Einführung zu RSA}
\date{\today}
2016-12-17 13:47:45 +01:00
\author{Andreas Zweili, Ismail Cadaroski, Ivan Hörler, Michael Stratighiou}
%\institute{}
% \titlegraphic{\hfill\includegraphics[height=1.5cm]{logo.pdf}}
\numberwithin{equation}{subsection} % IH | Formelnummerierung mit Section Nummer kombiniert
% Developement Helpers
%-------------------------------------------------------------------
\fboxrule=1pt %border thickness der fboxes zum bearbeiten auf 1 setzten
2017-01-11 18:13:32 +01:00
%\usepackage{showframe} %border der Bereiche anzeigen
\begin{document}
\begin{titlepage}
\maketitle
\thispagestyle{empty}
\end{titlepage}
\tableofcontents
\newpage
\section{Einführung}
Diese Arbeit wird eine Einführung zu dem Verschlüsselungsalgorithmus RSA geben.
Anhand von vereinfachten Rechnungen wird die Funktion des Algorthmus
veranschaulicht und erklärt. In der Realität sind die verwendeten Zahlen jedoch
um ein x-faches grösser. Die nachfolgende Zahl ist 1024 Bit gross. Der Leser
kann sich also ungefähr vorstellen wie gross die Zahlen sind wenn die heutige
empfohlene Grösse bei 4096 Bit liegt.
\begin{sexylisting}{RSA-1024 Primzahl}
13506641086599522334960321627880596993888147560566
70275244851438515265106048595338339402871505719094
41798207282164471551373680419703964191743046496589
27425623934102086438320211037295872576235850964311
05640735015081875106765946292055636855294752135008
52879416377328533906109750544334999811150056977236
890927563
\end{sexylisting}
2016-12-16 15:46:48 +01:00
\subsection{Geschichte}
2016-12-16 15:46:48 +01:00
2017-01-08 20:14:37 +01:00
Im Jahre 1976 wurde von Whitfield Diffie und Martin Hellman eine Theorie zu
Publickey-Kryptographie veröffentlicht \cite{ref4}. In welcher sie ein Konzept
Namens ``Falltür'' präsentieren. Dabei handelt es sich um mathematische Probleme
2017-01-08 20:14:37 +01:00
welche in eine Richtung sehr aufwändig und in die andere Richtung viel einfacher
zu lösen sind.
2016-12-28 17:25:41 +01:00
Ronald L. Rivest, Adi Shamir und Leonard Adleman wollten nach der
2017-01-08 20:14:37 +01:00
Veröffentlichung der Theorie von Herrn Diffie und Herrn Hellman beweisen das
2016-12-28 17:25:41 +01:00
solche Falltüren nicht existieren. Dabei entdeckten sie jedoch genau solch eine
Falltür daraus entwickelten sie dann den RSA Algorithmus welchen sie 1977
2017-01-08 20:14:37 +01:00
vorstellten \cite{ref5}. RSA steht dabei für die Anfangsbuchstaben ihrer
2016-12-31 16:51:39 +01:00
Familiennamen.
2016-12-16 15:46:48 +01:00
Im Jahre 2002 erhielten sie den Turing-Award für ihre Arbeit auf dem Gebiet der
2016-12-28 17:25:41 +01:00
Kryptographie. Welcher oft als Nobel Preis für Informatik bezeichnet wird.
\subsection{Verwendung}
2016-12-16 15:46:48 +01:00
2016-12-28 21:27:45 +01:00
RSA wird heute in eine Vielzahl an Programmen eingesetzt. Von besonderer
Wichtigkeit sind hier folgende Systeme zu Erwähnen.
\textbf{Bankkarten nach dem EMV Standard}
Dieser Standard definiert wie der Chip auf den Karten zu funktionieren hat und
wie die Authentifizierung gegenüber den Bankautomaten funktioniert.
\textbf{HTTPS (TLS und X.509-Zertifikate)}
2017-01-08 20:14:37 +01:00
HTTPS garantiert das die Zugriffe auf Website welche es unterstützen, vor
Manipulationen sowie Spionage von Unbefugten geschützt sind. Dies ist
2016-12-28 21:27:45 +01:00
insbesondere bei eBanking oder Websiten mit Logins essentiel wichtig. Ansonsten
ist es ein Leichtes Konten zu übernehmen.
\textbf{SSH (Secure Shell)}
SSH ist ein Protokoll mit welchem man remote auf Unix Systeme Zugreifen kann.
Am häufigsten wird es genutzt zur Administrierung von Servern oder zur
Übertragung von Dateien.
\textbf{OpenPGP}
OpenPGP ist ein Verschlüsselungsverfahren welches hauptsächlich bei der
Verschlüsselung von Emails verwendet wird. Abseits davon wird es auch zur
Signierung von Dateien eingesetzt.
Zusätzlich sollte noch erwähnt werden das RSA in den meisten Fällen nicht
alleine eingesetzt wird da die Performance von RSA im Vergleich zu symetrischen
Verfahren sehr viel schlechter ist. Deshalb wird RSA oftmals nur zum
Schlüsseltausch eingesetzt und eine symetrische Verschlüsselung zum
Verschlüsseln der eigentlichen Daten.
2016-12-16 15:46:48 +01:00
2016-12-31 15:50:00 +01:00
\begin{center}
\includegraphics[width=360pt]{Bilder/RSA-verschluesselungs-Vorgang.png}
\end{center}
2016-12-31 15:50:00 +01:00
\section{Öffentlicher und Privater Schlüssel}
2017-01-08 21:01:48 +01:00
Als erster Schritt muss ein öffentlicher und privater Schlüssel (sozusagen ein
Schlüsselpaar), konstruiert werden. Dazu wählen wir 2 zwei zufällige Primzahlen
2017-01-08 20:14:37 +01:00
die wir in unserem Beispiel zur einfachheit halber klein halten und fangen mit
der Konstruktion an.
\subsection{Schlüsselkontruktion}
% Pfeilbeispiel -------------------------------------------
% tikzmark command
\newcommand{\tikzmark}[2]{%
\tikz[remember picture,baseline=(#1.base)]
\node[text=black,anchor=center,inner sep=1pt] (#1) {#2};}
%Beispiel für Isi:
% \begin{align*}
% \tikzmark{a}{a}+\tikzmark{b}{b} & =\tikzmark{c}{c} \\[1em]
% \tikzmark{sums}{Sumanden} & =\tikzmark{sum}{Summe}
% \phantom{\hspace{8cm}} %%<---versatz von rechts (!)
% \end{align*}
% \tikz[overlay,remember picture]{\draw[blue,thick,->] (sums.north) to [bend left=0] node[anchor=south]{$ $}(a.south);}
% \tikz[overlay,remember picture]{\draw[blue,thick,->] (sums.north) to [bend left=0] node[anchor=south]{$ $}(b.south);}
% \tikz[overlay,remember picture]{\draw[blue,thick,->] (sum.north) to [bend left=0] node[anchor=south]{$ $}(c.south);}
%% Pfeilbeispiel -------------------------------------------
% ------------------------------------------- Makro Definitionen -------------------------------------------
\def\pq{\textit{p} \cdot \textit{q}}
\def\m{\varphi (\textit{p}\cdot\textit{q})} % IH | ich definiere ein Makro das mit "m" heist und mit \m aufgerufen werden kann.
\def\varphipxphiq{\varphi \textit{(p)} \cdot \varphi\textit{(q)}} % IH | ich definiere "phi p x phi q" \varphipxphiq
\def\pmineinsxqmineins{(\textit{p}-1) \cdot (\textit{q}-1)} % IH | ich definiere "p min eins x q min eins" \pmineinsxqmineins
\def\siebenmineinsxelfmineins{(7-1) \cdot (11-1)}
% ------------------------------------------- Makro Definitionen -------------------------------------------
2017-01-08 21:01:48 +01:00
In den folgenden Seiten berechnen wir : \\
\textit{N} = Privatschlüsselanteil \\
2017-01-11 18:36:00 +01:00
\textit{p} = Primzahl \\
\textit{q} = Primzahl \\
\textit{e} = Teilerfremder Wert \\
\textit{d} = modular inverse \\
2017-01-15 13:17:40 +01:00
\ In dem $\textit{e}+\textit{N}$ den öffentlichen und $\textit{d}+\textit{N}$
den privaten Schlüssel bilden. \\
2016-12-13 20:13:32 +01:00
\subsection{Konstruktion \textit{N}}
Es werden zwei verschiedenen Primzahlen, die der Hersteller des Schlüssels
selbst wählt, p = 7 und q = 11 verwendet (in Realen Fällen werden kompliziertere
Zahlen gewählt, jedoch halten wir sie hier der einfachheit halber klein ) und
das Produkt aus diesen beiden Werten berechnet. Dieses Resultat N wird ein
wichtiger Anteil, den wir im Privat und Public Schlüssel brauchen werden.
\begin{center}
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
Theorie:
\begin{align*}
\textit{N} & = \pq
\end{align*}
\end{minipage}%
}
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
Beispiel:
\begin{align*}
77 & = 7 \cdot 11 \\
\textit{N} & = 77
\end{align*}
\end{minipage}%
}\\
\end{center}
\subsection{Konstruktion \textit{m}}
2017-01-08 20:14:37 +01:00
Danach rechnen wir Phi von N um die Anzahl der teilerfremden Zahlen zu
2017-01-08 21:14:50 +01:00
berechnen. Da p und q Primzahlen sind wissen wir das Phi von \(p=p-1\) und Phi
von \(q=q-1\) ist und erhalten als Phi von N = 60 = m.
\begin{center}
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
Theorie:
\begin{align*}
\varphi \textit{(N)} & = \m \\
\varphi \textit{(N)} & = \varphipxphiq \\
\varphi \textit{(N)} & = \pmineinsxqmineins \\
\end{align*}
\end{minipage}%
}
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
Beispiel:
\begin{align*}
\\
\\
\varphi \textit{(N)} & = \siebenmineinsxelfmineins \\
2017-01-15 13:17:40 +01:00
\varphi \textit{(N)} & = 60 \\
\textit{m} & = 60
\end{align*}
\end{minipage}%
}\\
\end{center}
\subsection{Konstruktion \textit{e}}
Wir bestimmen eine zu \textit{m} = 60 teilerfremde Primzahl die grösser 1, aber
2017-01-15 13:17:40 +01:00
kleiner m sein muss. Wir nehmen in unserem Beispiel \textit{e} = 7 da sie nicht durch 60
teilbar ist und beide den ggT 1 besitzen.
2016-11-26 13:11:10 +01:00
2017-01-09 20:41:52 +01:00
\subsection{Konstruktion \textit{d}}
Zuvor haben wir \textit{e} mit der Eigenschaft :
\begin{center}
\fbox{%
\begin{minipage}{0.3\textwidth}
Theorie:
\begin{align*}
ggT(\textit{e},\textit{m})
\end{align*}
\end{minipage}%
}
\fbox{%
\begin{minipage}{0.3\textwidth}
Beispiel:
\begin{align*}
ggT(\textit{7},\textit{60}) =1
\end{align*}
\end{minipage}%
}\\
\end{center}
bestummen. Dies bedeutet, wenn wir \(\bmod \textit{m}\) rechnen, hat
\textit{e} einen Inversis. Wir bestimmen \textit{d} mit:
\begin{center}
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
Theorie:
\begin{align*}
\textit{e} \cdot \textit{d} = 1 \bmod \textit{m}
\end{align*}
\end{minipage}%
}
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
%Beispiel:
\begin{align*}
{}
\end{align*}
\end{minipage}%
}\\
\end{center}
Formen diese nach \textit{d} um :
\begin{center}
2017-01-15 13:17:40 +01:00
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
2017-01-15 13:17:40 +01:00
Theorie:
\begin{align*}
\textit{d} = \textit{e}^{-1} \bmod \textit{m}
2017-01-15 13:17:40 +01:00
\end{align*}
\end{minipage}%
}
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
%Beispiel:
2017-01-15 13:17:40 +01:00
\begin{align*}
\end{align*}
\end{minipage}%
}\\
\end{center}
Danach können wir die Zahlen in die Formel setzen :
\begin{center}
2017-01-15 13:17:40 +01:00
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
%Theorie:
2017-01-15 13:17:40 +01:00
\begin{align*}
\end{align*}
\end{minipage}%
}
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
2017-01-15 13:17:40 +01:00
Beispiel:
\begin{align*}
d &= \textit{7}^{-1} \bmod \textit{60}
\end{align*}
\end{minipage}
}\\
\end{center}
2017-01-11 21:37:18 +01:00
Aus der letzten Gleichung berechnen wir die Inverse, indem wir erstmal aus 60
und 7 den euklidischen Algorithmus formen, als wollten wir den ggT dieser Zahlen
ermitteln. Wir wissen schon dass der ggT(60,7) = 1 ist, brauchen jedoch wie man
gleich sieht einen Teil der kommenden Gleichung.
In der Anwendung bauen wir die Gleichung auf nach :
\begin{center}
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
Theorie: \; ggT(\textit{m},\textit{e})
\begin{align*}
m & = q_1 \cdot e_0 + rest_0 \\
e_0 & = q_2 \cdot rest_0 + rest_1\\
rest_0 & = q_3 \cdot rest_1 + rest_2\\
rest_1 & = q_4 \cdot rest_2 + rest_3
\end{align*}
\end{minipage}%
}
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
Beispiel: \; ggT(60,7)
\begin{align*}
60 & = 8 \cdot \tikzmark{71}{7} + \tikzmark{41}{4}\\
\tikzmark{72}{7} & = 1 \cdot \tikzmark{42}{4} + \tikzmark{31}{3}\\
\tikzmark{43}{4} & = 1 \cdot \tikzmark{32}{3} + \tikzmark{11}{1} \label{eq:bspd1}\\ % IH | Labels können mit \ref{}
\tikzmark{33}{3} & = 3 \cdot \tikzmark{12}{1} + 0 % dynamisch wieder aufgerufen werden
\end{align*}%
\tikz[overlay,remember picture]{\draw[blue,thick,->] (71.south) to [bend left=0] node[anchor=south]{$ $}(72.north);}
\tikz[overlay,remember picture]{\draw[blue,thick,->] (41.south) to [bend left=0] node[anchor=south]{$ $}(42.north);}
\tikz[overlay,remember picture]{\draw[blue,thick,->] (42.south) to [bend left=0] node[anchor=south]{$ $}(43.north);}
\tikz[overlay,remember picture]{\draw[blue,thick,->] (31.south) to [bend left=0] node[anchor=south]{$ $}(32.north);}
\tikz[overlay,remember picture]{\draw[blue,thick,->] (32.south) to [bend left=0] node[anchor=south]{$ $}(33.north);}
\tikz[overlay,remember picture]{\draw[blue,thick,->] (11.south) to [bend left=0] node[anchor=south]{$ $}(12.north);}
\end{minipage}%
}\\[-0.5em]
\end{center}
2017-01-08 20:14:37 +01:00
Der erweiterte euklidische Algorithmus besteht nun darin, ausgehend von der
2017-01-08 20:50:47 +01:00
vorletzten Seite, diese Rechenschritte ''von unten nach oben'' in der folgenden
2017-01-08 20:14:37 +01:00
Weise aufzurollen, indem die einzelnen Zeilen nach den Resten aufgelöst und
diese nacheinander eingesetzt werden:
\begin{center}
\fbox{%
\begin{minipage}[t]{0.95\textwidth}
Erweiterter Euklidischer Algorithmus:\\
\begin{tabular}{|c|c|c|c|c|c|c|c|p{5.5cm}|} \hline% Quelle: http://johannes-bauer.com/compsci/eea/?a=7&b=60&submit=Berechnen
A & B & Q & R & S & T & U & V & Berechnung: \\ \hline
\textit{m} & \textit{e} & & & 1 & 0 & 0 & 1 & Startwerte \\ \hline
60 & 7 & 8 & 4 & 0 & 1 & 1 & -8 & \scriptsize
Q = A / B = 60 / 7 = 8\newline R = A \% B = 60 \% 7 = 4 \newline $S = U_{alt} = 0$ \newline $T = V_{alt} = 1$ \newline 
$U = S_{alt} - (Q \cdot U_{alt}) = 1 - (8 \cdot 0) = 1$ \newline $V = T_{alt} - (Q \cdot V_{alt}) = 0 - (8 \cdot 1) = -8$\\ \hline
7 & 4 & 1 & 3 & 1 & -8 & -1 & 9 & \scriptsize
$A = B_{alt}$ \newline $B = R_{alt}$ \newline Q = A / B = 7 / 4 = 1 \newline R = A \% B = 7 \% 4 = 3 \newline
$S = U_{alt} = 1$ \newline $T = V_{alt} = -8$ \newline $U = S_{alt} - (Q \cdot U_{alt}) = 0 - (1 \cdot 1) = -1$ \newline
$V = T_{alt} - (Q \cdot V_{alt}) = 1 - (1 \cdot -8) = 9$\\ \hline
4 & 3 & 1 & 1 & -1 & 9 & 2 & -17 & \scriptsize
$A = B_{alt}$ \newline $B = R_{alt}$ \newline Q = A / B = 4 / 3 = 1 \newline R = A \% B = 4 \% 3 = 1 \newline
$S = U_{alt} = -1$ \newline $T = V_{alt} = 9$ \newline $U = S_{alt} - (Q \cdot U_{alt}) = 1 - (1 \cdot -1) = 2$ \newline
$V = T_{alt} - (Q \cdot V_{alt}) = -8 - (1 \cdot 9) = -17$\\ \hline
& 1 & & & 2 & -17 & & & Ergebnisse\\ \hline\hline
\end{tabular}
\end{minipage}%
}
\fbox{%
\begin{minipage}[t]{0.4\textwidth}
Theorie:
\begin{align*}
S \cdot \textit{m} + T \cdot \textit{e} &= ggT(60,7) \\
\\
T + \textit{m} \cdot \textit{e} \ mod \ \textit{m} &= ggT(60,7)\\
d \cdot \textit{e} \ mod \ \textit{m} &= ggT(60,7)\\
\\
\textit{e}^{ggT(60,7)} \ mod \ \textit{m} &= d
\end{align*}
\end{minipage}%
}
\fbox{%
\begin{minipage}[t]{0.4\textwidth}
Beispiel:
\begin{align*}
2 \cdot 60 + (-17 \cdot 7) &= 1 \\
120 - 119 &= 1
\\
-17 + 60 \cdot 7 \ mod \ 60 &= 1 \\
43 \cdot 7 \ mod \ 60 &= 1 \\
\\
7^{-1} \ mod \ 60 = 43
\end{align*}
\end{minipage}%
}\\[1em]
\end{center}
Zu beachten ist, dass wir alle Klammern, jedoch nicht alle Produkte %das verstehe ich nicht HI | 10.1.17
ausmultiplizieren.
2017-01-15 13:17:40 +01:00
Da unsere Inverse von \textit{e} positiv und kleiner 60 sein soll, addieren wir \(60 \cdot 7\) auf
der linken Seite. Die rechte Seite verändert sich nicht, da wir mod 60 rechnen.
\begin{center}
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
Theorie:
\begin{align*}
\\
\\ % hier könnte ein Theorieteil eingefügt werden
\\
1 & = \textit{d} ^\textit{e} \, \bmod \textit{N} \\
\textit{d} &= \textit{e} ^\textit{-1} \ \bmod \textit{N}
\end{align*}
2017-01-15 13:17:40 +01:00
\end{minipage}% isi empfielt: https://www.youtube.com/watch?v=Grd-sxx5dEQ
}
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
Beispiel:
\begin{align*}
1 & = 2 \cdot 60 -17 \cdot 7 \,\mid \bmod\\
2017-01-15 13:17:40 +01:00
1 & = -17 \cdot 7 \bmod 60 \mid + 60 \cdot 7\\
1 & = 43 \cdot 7 \, \bmod 60 \,\mid (60 - 17 = 43)\\
\\
\textit{d} & = 7^{-1} \, \bmod 60 \\
\textit{d} & = 43
\end{align*}
2017-01-15 13:17:40 +01:00
\end{minipage}%
}\\[-1em]
\end{center}
% IH | in Formeln werden leerzeichen ignoriert darum kann mit " \, " , " \: " ,
%" \; " erstellt einen "schmalen", "mittleren" und "breiten" Leerschlag. Es geht
%auch mit \thinspace, \medspace oder \thickspace...
Danach lösen wir die Gleichung nach d auf und ergibt .
2016-11-26 13:11:10 +01:00
2017-01-09 20:41:52 +01:00
\section{Verschlüsselung}
2017-01-15 13:17:40 +01:00
Im Beispiel der Schlüsselkonstruktion werden die Variablen \textit{e} und \textit{N} als
2016-12-31 16:46:09 +01:00
öffentlicher Schlüssel festgelegt. Dieser wird benötigt um eine Nachricht für
den dafür entsprechenden Empfänger zu verschlüsseln. Mit der daraus
2017-01-15 13:17:40 +01:00
resultierenden Zahl sowie dem privaten Schlüssel, welcher aus den Variablen \textit{d}
und \textit{N} besteht, kann die Nachricht wieder entschlüsselt werden. \\
\\
In unserem Beispiel lautet der private Schlüssel also: \(43+77\)\\
2017-01-08 21:14:50 +01:00
und der öffentliche Schlüssel: \(7+77\)
\subsection {Der eigentliche Akt der Verschlüsselung}
2016-12-31 16:46:09 +01:00
Wollen wir nun eine Nachricht mit dem öffentlichen Schlüssel verschlüsseln, so
2017-01-15 13:17:40 +01:00
das sie nur noch für den Empfänger mit dem entsprechenden privaten
2016-12-31 16:46:09 +01:00
Schlüssel zu entschlüsseln ist, gehen wir folgendermassen vor:
2017-01-08 21:14:50 +01:00
Wir kennen die beiden Zahlen des öffentlichen Schlüssels: \(7+77\)
2017-01-15 13:17:40 +01:00
Unsere zu verschlüsselnde Nachricht x: 47 (muss kleiner sein als \textit{N})
2016-12-31 16:46:09 +01:00
(Wie bereits in einem früheren Kapitel erwähnt sind solche öffentliche
Schlüssel Primzahlen mit mehreren hundert Stellen, somit ist diese Regel im
Normalfall irrelevant. Da wir aber in unserem Beispiel keine so grossen
Primzahlen verwenden müssen wir diesen Punkt beachten um sicherzustellen das
wir auch ein korrektes Ergebnis erhalten.)
Die Nachricht wird nun mit folgender Formel verschlüsselt:
\begin{center}
2017-01-15 13:17:40 +01:00
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
2017-01-15 13:17:40 +01:00
Theorie:
\begin{align*}
\textit{y} & = \textit{x}^\textit{e} \bmod \textit{N} \\
\\
\end{align*}
\end{minipage}%
}
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
2017-01-15 13:17:40 +01:00
Beispiel:
\begin{align*}
\textit{y} & = 47^{7} \bmod 77 \\
\textit{y} & = 75 \\
\end{align*}
\end{minipage}%
}\\[-1em]
\end{center}
75 (y) ist unsere Verschlüsselte Nachricht, welche an den Empfänger
2016-12-31 16:46:09 +01:00
übermittelt wird.
\section{Entschlüsselung}
2017-01-15 13:17:40 +01:00
Um die Nachricht zu entschlüsseln muss zuerst \textit{d} errechnet werden, dies geschieht
2016-12-31 16:46:09 +01:00
mithilfe des erweiterten euklidischen Algorithmus. Diese Berechnung wurde
bereits im Kapitel \nameref{sec:Schlüsselkontruktion} erledigt.
2017-01-15 13:17:40 +01:00
Unsere gesuchte Zahl lautet demnach 47 (\textit{d})
2016-12-31 16:46:09 +01:00
Da nun alle benötigten Variablen bekannt sind kann die Nachricht mit folgender
Formel entschlüsselt werden.
\begin{center}
2017-01-15 13:17:40 +01:00
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
2017-01-15 13:17:40 +01:00
Theorie:
\begin{align*}
\textit{x} & = \textit{y}^\textit{d} \bmod \textit{N} \\
\\
\end{align*}
\end{minipage}%
}
\fbox{%
\begin{minipage}[t]{0.3\textwidth}
2017-01-15 13:17:40 +01:00
Beispiel:
\begin{align*}
\textit{x} & = 75^{43} \bmod 77 \\
\textit{x} & = 47 \\
\end{align*}
\end{minipage}%
}\\[-1em]
\end{center}
2016-11-26 13:11:10 +01:00
\section{Schwachstellen}
2016-12-31 16:46:09 +01:00
Obwohl schon einige verkündet haben die RSA Verschlüsselung geknackt zu haben
ist es bisher noch niemandem gelungen einer Überprüfung stand zu halten. Es gibt
aber durchaus realistische ideen wie der Code zerbrochen werden kann, nachgehend
stellen wir die Wichtigsten Methoden vor.
2017-01-09 21:00:52 +01:00
\subsection{Brute-force}
2016-12-31 16:46:09 +01:00
Die Methode alle möglichen Primzahlen von $\varphi=\pmineinsxqmineins$
auszuprobieren gilt als nicht einfacher als \textit{N} zu Faktorisieren.
2017-01-08 21:14:50 +01:00
\subsection{Fakturierung durch die Kenntnis von \textit{N}}
2016-12-31 16:46:09 +01:00
Weil die Faktoren von \textit{N} den $\varphi$\textit{N} ermitteln lassen kann
auch \textit{d} ermittelt werden. Die Erfinder RSA selbst, berechneten anhand
eines Algorithmus von Richard Schroeppel und der Annahme das ein
Annäherungsschritt 1ms benötigt die Zerlegung von:
\begin{center}
\begin{tabular}{| l | l | l |} % >{\( }c<{ \)}
\hline
2016-12-31 16:46:09 +01:00
\textbf{Zeichen} & \textbf{Operationen} & \textbf{Zeit} \\
50 & $1.4 \cdot 10^10$ & 3.9 Stunden \\
75 & $9.0 \cdot 10^12$ & 104 Tage \\
100 & $2.3 \cdot 10^15$ & 74 Jahre \\
200 & $1.2 \cdot 10^23$ & $3.8 \cdot 10^9$ Jahre \\
\hline
\end{tabular}
\end{center}
\begin{enumerate}
2016-12-31 16:46:09 +01:00
\item Diese Berechnungen der Entschlüsselungs-Zeiten sind überholt.
(stand 1978)
2016-12-31 16:46:09 +01:00
\item 1996 schreibt der Prof. Johannes Buchmann von der Universität
Saarbrücken das ein Parallelisiertes Netz von 250 Rechnern auf dem
Campusareal für eine 130 Stellige Zahl mehrere Wochen benötigt und sich
mit mit drei zusätzlichen Dezimalstellen verdoppelt.
2016-12-31 16:46:09 +01:00
\item 2003 veröffentlichte Adi Shamir und Eran Tromer einen technischen Report
wie ein RSA Schlüssel von 1024 bit in unter einem Jahr gebrochen werden
kann. \cite{ref10} % <-- bibtex Link
\end{enumerate}
2016-12-31 16:46:09 +01:00
\textbf{Diese drei Beispiele zeigen auf wie unvorhersehbar die Standhaftigkeit
eines Schlüssels in Bezug auf Zeit ist. }
Die Formel zur Zerlegung von $\varphi$\textit{N} lautet:
2016-12-31 16:46:09 +01:00
\begin{equation*}
2017-01-09 20:41:52 +01:00
\varphi=2 \cdot kgV\left(\frac{\textit{p}-1} {2} , \frac{\textit{q}-1}{2}\right)
2016-12-31 16:46:09 +01:00
\end{equation*}
2016-12-31 16:46:09 +01:00
\subsection{Berechnung von $\varphi$\textit{N} ohne Fakturierung von
2017-01-09 21:00:52 +01:00
\textit{N}}
2016-12-31 16:46:09 +01:00
Natürlich lässt sich $\varphi$\textit{N} auch ohne Fakturierung von \textit{N}
ermitteln wenn \textit{d} bekannt ist oder ermittelt werden kann. Da \textit{d}
jedoch ein multiplikator von $\varphi$\textit{N} ist, ist sein wert nicht
leichter zu ermitteln als die Fakturierung von \textit{N} ist.
%IH | Ivan, check ob die Formel auch stimmt sobald Ismail die Section
%Konstruktion von "d" fertig hat!
\subsection{zu kleine Multiplikator-Primzahlen}
2016-12-31 16:46:09 +01:00
Da die Sicherheit von RSA darauf beruht dass die Fakturierung von Primzahlen
Zeit benötigt, ist sie auch nur so stark wie die Grösse der Primzahl \textit{q}
die Multipliziert mit \textit{p} den Modulus ergibt. Ist \textit{q} oder
\textit{p} kleiner als 100 Stellen, wird daraus nicht ein Schlüssel $>10^200$
entstehen und damit die Verschlüsselung zwar schneller geschehen aber sie ist
auch gefährdeter durch Brute-force Attacken oder Fakturierung zerlegt zu werden.
2017-01-09 21:00:52 +01:00
\subsection{Gleiche $\varphi$ \textit{N}}
2016-12-31 15:50:00 +01:00
%IH | ist das je wirklich der Fall?
2017-01-09 21:00:52 +01:00
\subsection{Riehmann Hypotese}
Die Riehmann Hypothese beschreibt ein bisher ungelöstes Mathematisches Problem.
2016-12-31 16:46:09 +01:00
Sollte sich die Theorie der Reihmann Hypothese bewarheiten könnten daraus
Primzahlen abgeleitet werden auf dessen Basis die Zerlegung von \textit{N}
einfacher und schneller ausgeführt werden kann.
\subsection{Social Engineering}
2016-12-31 16:46:09 +01:00
Durch das Abfangen einer Nachricht kann ein Angreifer damit noch nichts anfangen
da sie mit dem Schlüssel des Empfängers Verschlüsselt ist. Möchte er diese nun
entschlüsseln muss er an den Schlüssel des Empfängers kommen. Dazu kann er die
Datei wiederum mit einem Ihm bekannten Schlüssel verschlüsseln und sie dem
Empfänger erneut und gegebenenfalls unter Verschleierung seiner Identität
zustellen. Dieser wird nun die Datei mit seinem Schlüssel entschlüsseln und
nichts damit anfangen können da sie immer noch mit dem Schlüssel des Angreifers
verschlüsselt ist. Bringt nun der Angreifer durch Geschick den Empfänger dazu
Ihm diese entschlüsselte vermeintlich defekte Datei zuzusenden kann er sie mit
seinem Schlüssel entschlüsseln und den Inhalt lesen.
% IH | Ivan finde heraus ob auch der Schlüssel gefunden werden kann...
2016-11-26 13:11:10 +01:00
\newpage
\section{Referenzen}
\nocite{*}
\bibliographystyle{plain}
\bibliography{bib}
\end{document}