DC_Zusammenfassung/chapters/RSA-Verfahren.tex

91 lines
6.2 KiB
TeX

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