\chapter{Das RSA-Verfahren} Das nach seinen Erfindern R. Rivest, A. Shamir und L. Adleman benannte Verfahren kann sowohl als asymmetrisches Verschlüsselungsverfahren als auch als Signatur-Verfahren verwendet werden. Die Funktionsweise basiert auf der folgenden Implikation des kleinen Satzes von Fermat: \begin{mybox} Es seien $p$ und $q$ verschiedene Primzahlen und $n:=p\cdot q$. Es wird ein $r\in\mathbb{Z}$ definiert für das gilt: $$\begin{aligned} r\equiv&1\hspace{10mm}&(\textbf{mod }(p-1))\\ r\equiv&1&(\textbf{mod }(q-1))\\ \end{aligned}$$ Dann folgt: $$z^r=z\hspace{5mm}\forall z\in\mathbb{Z}_n$$ \end{mybox} Zudem stützt sich das RSA-Verfahren für die nicht effiziente Berechenbarkeit des privaten Schlüssel auf das folgende ungelöste Problem: \begin{mybox} \textbf{Faktorisierungs-Problem (Integer Factorization Problem (IF-Problem))}\\ Es ist eine Zahl $n\in\mathbb{N}$ gegeben, die mindestens zwei große Primteiler $p$ und $q$ ($p\neq$) hat. Das Problem besteht darin nur auf Basis von $n$ die Primteiler zu ermitteln. \end{mybox} \section{RSA-Schlüsselpaare} Im folgenden wird das Verfahren zur RSA-Schlüsselerstellung anhand der Analogie von Alice und Bob erläutert: \begin{itemize} \item Alice bestimmt zwei verschiedene Primzahlen $p$ und $q$.\\ Um zu überprüfen, ob eine Zufallszahl eine Primzahl ist wird ein probabilistisches Verfahren angewandt. \item Alice berechnet $n=p\cdot q$ \item Alice berechnet $v=\text{kgV}(p-1,q-1)$\\ Alternativ kann Alice auch ein Vielfaches von $\text{kgV}(p-1,q-1)$ für $v$ wählen. Wichtig ist, dass $r=1+v$ die Bedingungen $r\equiv1\hspace{5mm}(\textbf{mod }(p-1))$ und $r\equiv1\hspace{5mm}(\textbf{mod }(q-1))$ erfüllt. Beliebt ist auch $v=(p-1)(q-1)$ zu wählen. \item Alice wählt einen \textbf{öffentlichen Exponenten} $e\in\mathbb{Z}_v^*$.\\ Häufig wird hier in der Praxis die Fermat'sche Primzahl $F_4={2^2}^4+1=2^{16}+1=65537$ gewählt. Hierbei muss darauf geachtet werden, dass $e=F_4$ kein Teiler von $p-1$ oder $q-1$ ist. \item Alice bestimmt als \textbf{privaten Exponenten} die Inverse $d=e^{-1}\in\mathbb{Z}_v^*$ zu $e$. \item Der öffentliche Schlüssel ist $k_{A,\text{pub}}=(n,e)$ \item Der private Schlüssel ist $k_{A,\text{priv}}=(n,d)$ \end{itemize} \subsection{Beispiel für die Schlüsselpaarerstellung} \includegraphics[scale=0.75]{RSA-Schlüsselpaar.png} \section{RSA-Verschlüsselungsverfahren} Im folgenden wird das RSA-Verschlüsselungsverfahren anhand der Analogie von Alice und Bob erläutert:\\ Ausgangssituation: Bob möchte eine Nachricht $m$ an Alice schicken \begin{itemize} \item Bob benötigt den öffentlichen Schlüssel $k_{A,\text{pub}=(n,e)}$ von Alice \item Die Nachricht $m$ ist eine Bitfolge, die kleiner ist als $n$ ($m\in\mathbb{Z}_n$) \item Bob berechnet die Geheimtextnachricht $c=E_{k_{A,\text{pub}}}(m):=m^e\mod n$ und verschickt sie an Alice \item Alice berechnet mit dem privaten Schlüssel $k_{A,\text{priv}}$ die Klartextnachricht: $$m=D_{k_{A,\text{priv}}}(c):=c^d\mod n$$ \end{itemize} {\color{red}\textbf{Achtung:}}\\ Das RSA-Verschlüsselungsverfahren ist, wenn es direkt verwendet wird anfällig für Wörterbuchangriffe, da sich vermutete Nachrichten mit dem öffentlichen Schlüssel verschlüsseln und mit der Geheimtextnachricht $c$ abgleichen lassen. \subsection{Beispiel für die Verschlüsselung} \includegraphics[scale=0.75]{RSA-Verschlüsselung.png} \section{Padding} Um die Nachrichten vor Wörterbuchangriffen zu schützen ist es sinnvoll sie durch ein Paddingverfahren zu verändern. \subsection{Padding nach PKCS\#1} Die RSA Laboratories veröffentlichen regelmäßig Public Key Encryption Standards (PKCS).\\ Im Folgenden wird auf die erste Variante dieser Standards eingegangen:\\ Eine Nachricht $m$, die als Byte-Array \texttt{M} eine Länge $\text{mLen}\le k-11$ ($k:=\lfloor log_2(n)/8\rfloor+1$) wird wie folgt erweitert: $$\texttt{EM}=\texttt{0x00}||\texttt{0x02}||\texttt{PS}||\texttt{0x00}||\texttt{M}$$ Hierbei ist \texttt{PS} eine Byte-Array, welches aus mindestens 8 Zufallsbytes $\ne\texttt{0x00}$ besteht. \texttt{0x02} gibt die Variante der Kodierung an und die \texttt{0x00}-Bytes dienen der Kennzeichnung des Paddings für die Entschlüsselung.\\ Das PKCS\#1 Verfahren ist potentiell mit dem Bleichenbacher-Angriff (siehe Skript 3 Seite 48(54)) angreifbar, falls sich anhand des Verhalten des Empfängers ein Orakel dafür bilden lässt, ob eine gewählte Nachricht $\tilde{c}$ eine gültig kodierte Nachricht ist. \subsection{Optimal Asymmetric Encryption Padding(OAEP)} siehe Skript 3 Kapitel 3.2 Beispiel 3.6 (Seite 49(55)) \section{Das RSA-Signaturverfahren} Das RSA-Verfahren kann auch für das Erstellen und Verifizieren einer Signatur (siehe \ref{signature}) verwendet werden. Im folgenden wird das RSA-Signaturverfahren anhand der Analogie von Alice und Bob erläutert:\\ Ausgangssituation: Alice möchte Bob eine Nachricht $m$ schicken, sodass Bob von der Authentizität überzeugt ist und diese auch anderen nachweisen kann. \begin{itemize} \item Bob benötigt den öffentlichen Schlüssel $k_{A,\text{pub}=(n,e)}$ von Alice \item Die Nachricht $m$ ist eine Bitfolge, die kleiner ist als $n$ ($m\in\mathbb{Z}_n$) \item Alice erzeugt eine Signatur $s=S_{k_{A,\text{priv}}}(m):=m^d\mod n$ und schickt $m$ und $s$ an Bob \item Nach Empfang errechnet Bob mithilfe des öffentlichen Schlüssels $\tilde{m}=s^e\mod n$ und vergleicht $\tilde{m}=m$ \end{itemize} \subsection{Beispiel für ein RSA-Signaturverfahren} \includegraphics[scale=0.75]{RSA-Signatur0.png}\\ \includegraphics[scale=0.75]{RSA-Signatur1.png}