📚 The CoCalc Library - books, templates and other resources
License: OTHER
\section{RSA-Verfahren}\label{sec:RSA-Verfahren}1Das RSA-Verfahren ist ein asymmetrisches Kryptosystem, das von2Ronald Linn \textbf{R}ivest, Adi \textbf{S}hamir und Leonard3\textbf{A}dleman entwickelt und im August 1977 veröffentlicht wurde\footnote{[msri], S. 2}.45Da das RSA-Verfahren asymmetrisch ist, wird sowohl ein öffentlicher6Schlüssel als auch ein privater Schlüssel benötigt. Der öffentliche7Schlüssel dient der Verschlüsselung und besteht aus dem RSA-Modul $N$8und dem Verschlüsselungsexponenten $e$. Der private Schlüssel9besteht aus dem Entschlüsselungsexponenten $d$ und dem selben RSA-Modul $N$.1011Die Erzeugung dieser drei Zahlen $N$, $e$ und $d$ für das RSA-Verfahren12kann, in An-lehnung an [wiki-RSA], in fünf Schritte unterteilt werden:1314\begin{description}15\item[Schritt 1:] Als erstes werden zwei große Primzahlen gewählt.16Je größer diese Primzahlen sind, desto sicherer17ist die Verschlüsselung.18(vgl. \cref{sec:Security})19\item[Schritt 2:] In diesem Schritt wird RSA-Modul $N = p \cdot q$20berechnet, das ein Teil des öffentlichen21Schlüssels ist.22\item[Schritt 3:] Schritt 3: Nun wird der Wert der Eulerschen23$\varphi$-Funktion bei $N$ berechnet. Da $p$24und $q$ Primzahlen sind, gilt $\varphi(N) = (p-1) \cdot (q-1)$ (vgl. \cref{sec:Eulersche-Phi-Funktion})25\item[Schritt 4:] Nachdem $\varphi(N)$ ermittelt wurde, kann der26zweite Teil des öffentlichen Schlüssel, der27Verschlüsselungsexponent $e$, ermittelt werden.28Folgende Bedingungen müssen für $e$ gelten:29$1 < e < \varphi(N) $ und $ggT(e, \varphi(N)) = 1$30\item[Schritt 5:] Es folgt die Berechnung des Entschlüsselungsexponenten31$d$ als multiplikativ Inverses von $e$32bezüglich des Modules $\varphi(N)$. Es soll33also folgende Kongruenz gelten:34$e \cdot d \equiv 1 \imod{\varphi(N)}$3536\end{description}373839\subsection{Verschlüsselung mit dem öffentlichen Schlüssel}40Ein Text wird verschlüsselt, indem er in Zahlen umgewandelt wird. Für41diese Umwandlung kann der ASCII-Code verwendet werden. Sobald man42Zahlen hat, kann man den unverschlüsselten Klartext $K$ mit folgender43Kongruenzgleichung in den verschlüsselten Geheimtext $G$ umwandeln: $G \equiv K^e \imod{N}$.\\44Die Zahl $N$ sollte deutlich größer sein als K\footnote{vgl. [Reiss], S. 288}.4546In folgendem Beispiel wird der Klartext "`12"' verschlüsselt. Dazu47werden als Erstes alle benötigten Variablen erzeugt oder berechnet:4849\begin{description}50\item[Schritt 1:] $p := 347$ und $q := 379$51\item[Schritt 2:] $N = p \cdot q = 347 \cdot 379 = 131513$52\item[Schritt 3:] $\varphi(N) = \varphi(131513) = (347 - 1) \cdot (379 - 1) = 346 \cdot 378 = 130788$53\item[Schritt 4:] $1 < (e := 877) < \varphi(N) $54\item[Schritt 5:] $877 \cdot d \equiv 1 \imod{130788}$55\end{description}5657Um ein $d$ zu finden, das diese Kongruenz erfüllt, wird der58erweiterte euklidische Algorithmus angewendet:5960\begin{tabular}{lll}61\textbf{Schritt 1}: euklidischer Algorithmus & & \textbf{Schritt 2}: nach Rest auflösen\\62$130788 = 149 \cdot 877 + 115$ \myDownArrowB & $\rightarrow$ & $115 = 130788 - 149 \cdot 877$ \myUpArrowB\\63$877= 7 \cdot 115 + 72$ & $\rightarrow$ & $72 = 877 - 7 \cdot 115$\\64$115= 1 \cdot 72 + 43$ & $\rightarrow$ & $43 = 115 - 72$\\65$72= 1 \cdot 43 + 29$ & $\rightarrow$ & $29 = 72 - 43$\\66$43= 1 \cdot 29 + 14$ & $\rightarrow$ & $14 = 43 - 29$\\67$29= 2 \cdot 14 + 1$ & $\rightarrow$ & $1 = 29 - 2 \cdot 14$68\end{tabular}6970\textbf{Schritt 3}: so lange Reste einsetzen, bis eine Linearkombination der Form71$1 = x \cdot 877 + y \cdot 130788$ gefunden ist:7273\begin{align*}741 &= 29- 2 \cdot (43-29) \\751 &= 3 \cdot 29 - 2 \cdot (115 - 72) \\761 &= 3 \cdot (72 - 43) - 2 (130788-149 \cdot 877) + 2 \cdot (877 - 7 \cdot 115) \\771 &= 3 \cdot (877 - 7 \cdot 115) -3 \cdot (115 - 72) - 2 \cdot 130788 + 300 \cdot 877 -14 \cdot 155 \\781 &= 303 \cdot 877 - 2 \cdot 130788 - 38 \cdot 115 + 3 \cdot 72 \\791 &= 303 \cdot 877 - 2 \cdot 130788 - 38 \cdot (130788-149 \cdot 877) + 3 \cdot (877 - 7 \cdot 115) \\801 &= 5968 \cdot 877 - 40 \cdot 130788 - 21 \cdot (130788-149 \cdot 877) = 9097 \cdot 877 - 61 \cdot 13078881\end{align*}8283$\rightarrow d = 9097$8485Probe:8687\[\frac{d \cdot e - 1}{\varphi(N)} = \frac{877 \cdot 9097 - 1}{130788} = 61\]8889Nun wird der Geheimtext $G$ mit dem Verschlüsselungsexponenten $e$90aus dem Klartext $K$ berechnet:9192\begin{align*}93G &\equiv K^e \imod{N}\\94G &\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} \\95G &\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} \\96G &\equiv 27077 \cdot 95706^{9} \equiv 27077 \cdot 9189^{3} \equiv 27077 \cdot 56590 \imod{131513} \\97G &\equiv 29467 \imod{131513}98\end{align*}99100\subsection{Entschlüsselung mit dem privaten Schlüssel}\label{sec:Decryption}101\subsubsection{Entschlüsselung ohne den Chinesischen Restsatz}102Der Geheimtext wird entschlüsselt, indem man ihn mit $d$ potenziert103und dann denn kleinsten positiven Repräsentanten der Restklasse $N$104berechnet: $K \equiv G^d \imod{N}$105106Im Folgenden wird die Entschlüsselung auf das vorhergehende Beispiel107angewendet:108109\begin{align*}110G &= 29467 ~~~ N= 131513 ~~~ d = 9097 \\111K &\equiv G^d \imod{N}\\112K &\equiv 29467^{9097} \imod{131513}\\113K &\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} \\114K &\equiv 29467 \cdot 89937^{2 \cdot 3} \equiv 29467 \cdot 88417^3 \equiv 29467 \cdot 24587 \imod{131513} \\115K &\equiv 12 \imod{131513}116\end{align*}117118\subsubsection{Entschlüsselung mit dem Chinesischen Restsatz}119Falls der Entschlüsselungsexponent $d$ sehr groß ist, kann das120Potenzieren lange dauern. Dies kann mit dem Chinesischem Restsatz121beschleunigt werden\footnote{[Paixão], S. 1}.122Diese Idee wurde [Paixão] entnommen:123124Der Geheimtext $G$ und der Exponent $d$ wird folgendermaßen geteilt:125126\begin{tabular}{llll}127$\begin{aligned}128G_p &\equiv G \imod{p} \\129G_q &\equiv G \imod{q}130\end{aligned}$ & und &131$\begin{aligned}132d_p &\equiv d \imod{p-1} \\133d_q &\equiv d \imod{q-1}134\end{aligned}$ &, da $e \cdot d \equiv 1 \imod{(p-1) \cdot (q-1))}$135\end{tabular}136137Dies funktioniert, da der folgende Hilfssatz gilt:138139\begin{mdframed}[tikzsetting={draw=red,ultra thick}, innertopmargin=0.6cm]140$K^ed \equiv G \imod{p \cdot q} \Leftrightarrow K^{ed} \equiv G \imod{p} \land K^{ed} \equiv G \imod{q}$141\end{mdframed}142143Nun wird dieser kleinere Teil von G mit den kleineren Exponenten "`entschlüsselt"':144145\begin{align*}146K_p &\equiv {G_p} ^ {d_p} \imod{p}\\147K_q &\equiv {G_q} ^ {d_q} \imod{q}148\end{align*}149150Der Chinesische Restsatz ermöglicht es nun, eine Lösung $K$ für die151folgenden Kongruenzen zu finden:152153\begin{align*}154K &\equiv K_p \imod{p}\\155K &\equiv K_q \imod{q}156\end{align*}157158Dazu müssen die multiplikativ inversen Elemente ermittelt werden:159\begin{align*}160y_p \cdot p \equiv 1 \imod{q}\\161y_q \cdot q \equiv 1 \imod{p}162\end{align*}163164Nun wird der Klartext zusammengesetzt:165\[K \equiv (K_p \cdot y_p \cdot q + K_q \cdot y_q \cdot p) \imod{N}\]166167Diese Methode ist etwa vier mal schneller als die Entschlüsselung mit $d$\footnote{[Paixão], S. 2}.168169\subsection{Entschlüsselung ohne den privaten Schlüssel}170Ist der Entschlüsselungsexponent $d$ unbekannt, so kann dieser durch171Faktorisierung von $N$ zurückgewonnen werden. Faktorisiert man $N$, so172kann $\varphi(N)$ berechnet werden und die Kongruenz $e \cdot d \equiv 1 \imod{\varphi(N)}$ gelöst werden.173174Als praktische Arbeit wurde mir folgende Aufgabe gestellt:175176\begin{mdframed}[tikzsetting={draw=black,very thick}, innertopmargin=0.6cm]177\begin{verbatim}178N := 65937_24735_90338_11941_75738_06421_27758_89771;179e := 47;180# geheime Botschaft:181y := 65087_24329_19692_65260_21005_67465_76581_27499;182\end{verbatim}183Wie lautet die Botschaft im Klartext?184\end{mdframed}185186Um diese Aufgabe zu lösen, versucht man den privaten Schlüssel mit187Hilfe des öffentlichen Schlüssels wiederherzustellen.188189Der private Schlüssel $d$ muss die Kongruenzgleichung190$e \cdot d \equiv 1 \imod{\varphi(N)}$ erfüllen, allerdings sind191$\varphi(N)$ und $d$ nicht bekannt. Um $\varphi(N)$ zu berechnen,192werden die Primfaktoren $p$ und $q$, aus denen $N$ besteht, benötigt.193$N$ muss also faktorisiert werden. Sobald ein Faktor von $N$ bekannt194ist, kann man $N$ durch diesen Faktor teilen und man erhält den195zweiten Faktor. Dann kann man wie in \cref{sec:RSA-Verfahren} vorgehen und $d$196berechnen. Mit $d$ kann man wie in \cref{sec:Decryption} beschrieben die197Geheimbotschaft entschlüsseln.198199Wird das Aribas-Skript im Anhang ausgeführt, das diese Schritte200ausführt, erhält man den Klartext "`\textbf{RSAribas}"'.201202203\subsection{Sicherheit des RSA-Algorithmus}\label{sec:Security}204Der RSA-Algorithmus kann, wie oben beschrieben, "`geknackt"' werden,205indem der öffentliche Schlüssel faktorisiert wird. Allerdings ist das206bei großen Zahlen nahezu unmöglich, da die Algorithmen sehr lange207Laufzeiten haben\footnote{[RSA-2190]}.208Wie lange die Faktorisierung dauert hängt einerseits vom Algorithmus,209andererseits von der Hardware ab.210211Um ein Gefühl dafür zu bekommen was "`sehr lange"' bedeutet, kann man212die "`RSA Factoring Challenge"' als Beispiel betrachten. Eine213193-stellige Zahl sollte Faktorisiert werden. Für diese Aufgabe214wurde am 18. März 1991 ein Preisgeld von 20.000 US-Dollar215ausgeschrieben. Ein Team des Instituts für Experimentelle Mathematik216in Essen hat am 2. November 2005 diese Aufgabe gelöst und dafür217über fünf Monate benötigt. Der Rechenaufwand betrug etwa 302182.2GHz-Opteron-CPU Jahre\footnote{[RSA-2964]}.219220Das Faktorisieren wird zwar immer schneller, da man über bessere und221billigere Computer sowie effizientere Algorithmen verfügt, allerdings222steigt mit den Hardwareverbesserungen die Sicherheit des223RSA-Algorithmus. Mit einer besseren Hardware können deutlich größere224Primzahlen erzeugt werden und damit auch ein deutlich längerer225öffentlicher Schlüssel generiert werden, der zur Verschlüsselung der226Nachricht dient.227228Ein verbesserter Faktorisierungsalgorithmus würde die Sicherheit des229RSA-Kryptosystems gefährden. Es ist jedoch unwahrscheinlich, dass ein230solcher Algorithmus gefunden wird, da das Problem als schwer231angesehen wird.\footnote{[RSA-2191]}232233Ein weiterer möglicher Angriff auf das RSA-Kryptosystem wäre die234$e$-te Wurzel $\imod{n}$ zu finden. Da $G \equiv K^e \imod{N}$ ist,235wäre $K \equiv \sqrt[e]{K^e} \imod{N}$. Allerdings ist kein Angriff,236der so funktioniert, bekannt4. Um zu veranschaulichen, dass bei einer237Kongruenzgleichung nicht wie gewohnt die Wurzel gezogen werden kann,238betrachte man folgendes Beispiel: $4 \equiv 16 \imod{3}$, aber239$\sqrt{4} \neq \sqrt{16} \imod{3}$.240241\subsection{Warum der RSA-Algorithmus funktioniert}242Der Geheimtext $G$ wird durch potenzieren mit $e$ gewonnen ($G \equiv K^e \imod{N}$)243und der Klartext durch potenzieren mit $d$ ($K \equiv G^d \imod{N}$).244Zu zeigen ist, dass245$K \equiv K^{e \cdot d} \imod{N}$ mit $ed \equiv 1 \imod{\varphi(N)}$ gilt.246247Es kann folgende Umformung durchgeführt werden:248\begin{align*}249ed &\equiv 1 \imod{\varphi(N)}\\250ed &= 1 + x \cdot \varphi(N) \text{mit } x \in \mathbb{Z}251\end{align*}252253Daraus folgt:254\[K^{e \cdot d} = K^{1 + x \cdot \varphi(N)} = K \cdot K^{x \cdot \varphi(N)}\]255256Nun wird der \textbf{Satz von Fermat-Euler} als Hilfssatz eingeführt:257\begin{mdframed}[tikzsetting={draw=red,ultra thick}, innertopmargin=0.6cm]258$K^{\varphi(N)} \equiv 1 \imod{N}$ für $K, N \in \mathbb{N}$ und $ggT(N, K) = 1$259\end{mdframed}260261Beweis nach [Reiss], S. 218 f.:262\hangindent2em263\hangafter=0264Es gibt $\varphi(N)$ verschiedene, zu $N$ teilerfremde Reste. Da $K$265zu $N$ teilerfremd ist, muss auch jedes der Produkte266$K \cdot r_1 , K \cdot r_2 , \dots, K \cdot r_{\varphi(N)}$ zu $N$267teilerfremd sein.268269Es gilt:270\begin{align*}271\prod_{i=1}^{n=\varphi(N)} K \cdot r_i &\equiv \prod_{i=1}^{n=\varphi(N)} r_i \imod{N}\\272K^{\varphi(N)} \prod_{i=1}^{n=\varphi(N)} r_i &\equiv \prod_{i=1}^{n=\varphi(N)} r_i \imod{N}273\end{align*}274275Da alle $r_i$ teilerfremd zu N sind, kann man durch das Produkt teilen. Daraus ergibt sich:276\[K^{\varphi(N)} \equiv 1 \imod{N}\]277278Das bedeutet für den RSA-Algorithmus:279\[K \cdot K^{x \cdot \varphi(N)} \equiv K \cdot (K^{\varphi(N)})^x \equiv K \cdot 1^x \equiv K \imod{N}\]280281282283