92 lines
7.1 KiB
TeX
92 lines
7.1 KiB
TeX
\chapter{Verschlüsselungsverfahren}
|
|
\section{Das Kerckhoffs'sche Prinzip}\label{kerckhoff}
|
|
\say{Ein Verschlüsselungssystem darf nicht der Geheimhaltung bedürfen und soll ohne Schaden in Feindeshand fallen können.}\\
|
|
|
|
\noindent Folglich ist für die Entschlüsselung der Nachricht nicht die Kenntnis über das Verfahren, sondern der Schlüssel die relevante Information.\\
|
|
|
|
\noindent\say{Es soll nicht möglich sein, einen Geheimtext ohne Kenntnis des hierfür vorgesehenen Schlüssels \textbf{effizient} zu entschlüsseln.}
|
|
|
|
\section{Mathematische Modelierung von Verschlüsselungsverfahren}
|
|
Klartextnachrichten und Geheimtextnachrichten sind Elemente einer Menge $\mathscr{M}$.\\
|
|
Schlüssel sind Elemente eines Menge $\mathscr{K}$, die als Schlüsselraum bezeichnet wird.\\
|
|
Die Verschlüsselungsverfahren bestehen aus einem Paar von Funktionen zur Verschlüsselung ($E$) und Entschlüsselung ($D$):
|
|
$$E:\mathscr{K}\times\mathscr{M}\rightarrow\mathscr{M}$$
|
|
$$D:\mathscr{K}\times\mathscr{M}\rightarrow\mathscr{M}$$
|
|
Hierbei sind die definierten Abbildungen bijektiv ($D_k:=E_k^{-1}$):
|
|
$$E_k:\mathscr{M}\rightarrow\mathscr{M},\space E_k(m):=E(k,m)$$
|
|
$$D_k:\mathscr{M}\rightarrow\mathscr{M},\space D_k(m):=D(k,m)$$
|
|
Die Nachrichtenmenge $\mathscr{M}$ besteht in Realität aus einer endlichen Folgen (Tupeln) von Bit- oder Bytewerten.
|
|
Diese können entweder die gleiche Länge besitzen (Blockverschlüsselung) oder von beliebiger Länge sein (Stromverschlüsselung).
|
|
$$\mathscr{M} = \mathscr{Z}^n = \{(z_1,z_2,...,z_n)\mid z_i\in\mathscr{Z}\} \text{ für ein festes } n\in \mathbb{N} \text{ (Blockverschlüsselung)}$$
|
|
$$\mathscr{M} = \mathscr{Z}^{>0} = \bigcup_{n\in\mathbb{N}} \mathscr{Z}^n = \{(z_1,z_2,...,z_n)\mid z_i\in\mathscr{Z}, n\in\mathbb{N}\} \text{ (Stromverschlüsselung)}$$
|
|
|
|
\section{Schlüsselaustausch}
|
|
Um mithilfe eines symmetrischen Schlüssels Daten austauschen zu können muss der Schlüssel auf eine Sichere Art und Weise ausgetauscht werden.
|
|
Dies ist zwar offline möglich, stellt allerdings kein praktikables Verfahren für die Kommunikation im Internet dar.
|
|
Daher werden für einen sicheren Schlüsselaustausch über eine unsichere Infrastruktur asymmetrische Verschlüsselungsverfahren benötigt.
|
|
|
|
\section{Angriffsszenarien}
|
|
Da für eine effiziente Entschlüsselung einer Geheimtextnachrichten die Kenntnis des Schlüssels essentiell ist versuchen die meisten Angriffe diesen herauszufinden.
|
|
|
|
\subsection{Ciphertext-only Angriffe}
|
|
\begin{tabbing}
|
|
Vorraussetzung: \= ein oder mehrere Geheimtexte $c_i=E_k(m_i)$ bekannt\\
|
|
Angriffsziel: \> Bestimmung von $m$ oder von $k$
|
|
\end{tabbing}
|
|
|
|
\subsection{Known-plaintext Angriffe}\label{known-plaintext}
|
|
\begin{tabbing}
|
|
Vorraussetzung: \= Geheimtext $c=E_k(m)$ und eine Reihe von bekannten Paaren $(m_i,E_k(m_i))$ sind bekannt\\
|
|
Angriffsziel: \> Bestimmung von $m$ oder von $k$
|
|
\end{tabbing}
|
|
|
|
\subsection{Chosen-plaintext Angriffe}\label{chosen-plaintext}
|
|
\begin{tabbing}
|
|
Vorraussetzung: \= Geheimtext $c=E_k(m)$ und für eine Reihe von beliebig vorgegebenen Klartextnachrichten $m_i$ kann die zugehörige Geheimtextnachricht $c_i=E_k(m_i)$ errechnet werden\\
|
|
Angriffsziel: \> Bestimmung von $m$ oder von $k$
|
|
\end{tabbing}
|
|
|
|
\section{Brute-Force Angriffe}\label{brute-force}
|
|
Da die Vorraussetzung für ein gutes Verschlüsselungsverfahren ist, dass es nicht \textbf{effizient} entschlüsselt werden kann (siehe \ref{kerckhoff}) muss die \textbf{Effizienz} definiert sein.
|
|
An dieser Stelle setzen Brute-Force Angriffe an.
|
|
Sie versuchen wie der Name schon sagt mit roher Rechenleistung den Schlüssel zu ermitteln.\\
|
|
\subsection{Beispiel: Brute-Force Angriff auf $k$}
|
|
Unter der Annahme, dass ein known-plaintext Angriff (siehe \ref{known-plaintext}) vorliegt lässt sich der Schlüssel bestimmen,
|
|
indem alle möglichen Schlüssel $k$ des Schlüsselraums $\mathscr{K}$ \say{ausprobiert} werden.
|
|
Hierbei können für die einzelnen bekannten Klartextnachrichten mehrere Schlüssel passen:
|
|
$$\mathscr{K}_i := \{\tilde{k}\in \mathscr{K} \mid E_{\tilde{k}}(m_i)=c_i\}$$
|
|
Bei einer ausreichenden Menge bekannter Klartextnachrichten lässt sich der Schlüssel aus der Schnittmenge der möglichen Schlüssel bestimmen:
|
|
$$\bigcap_{i=1}^N \mathscr{K}_i=\{k\}$$
|
|
|
|
\subsection{Beispiel: Brute-Force Angriff auf $m$}
|
|
Liegen die Vorraussetzungen für einen chosen-plaintext Angriff vor, so kann die Klartextnachrichten herausgefunden werden,
|
|
indem alle möglichen Klartextnachrichten $\tilde{m}\in\mathscr{M}$ \say{ausprobiert} werden:
|
|
$$E_k(\tilde{m}) = c = E_k(m) \Longrightarrow \tilde{m}=m$$
|
|
|
|
\subsection{Anforderungen zum Schutz vor Brute-Force}
|
|
\begin{enumerate}
|
|
\item Es soll keinen Angriff auf den Schlüssel $k$ geben, der durchschnittlich weniger als $\frac{|\mathscr{K}|}{2}$ Ver- oder Entschlüsselungsoperationen braucht.
|
|
\item Es soll keinen Angriff auf die Klartextnachricht $m$ geben, der durchschnittlich weniger als $\min \big\{\frac{|\mathscr{K}|}{2}, \frac{|\mathscr{M}|}{2} \big\}$ Ver- oder Entschlüsselungsoperationen braucht.
|
|
\end{enumerate}
|
|
|
|
\section{Wörterbuchangriffe}
|
|
Nachrichtenpaare (Geheim- und Klarttext), die mithilfe eines Schlüssels $k$ verschlüsselt wurden können in einem Wörterbuch abgespeichert werden.
|
|
Mithilfe des Wörterbuchs können diese Paare jederzeit entschlüsselt werden.
|
|
Zudem kann für einen chosen-plaintext Angriff (siehe \ref{chosen-plaintext}) ein Wörterbuch mit häufig vorkommenden Wörtern erstellt werden,
|
|
sodass eine Entschlüsselung in wesentlich kürzerer Zeit möglich wird.
|
|
|
|
\subsection{Schutz vor Wörterbuchangriffen}
|
|
Um einem Wörterbuchangriff vorzubeugen ist es wichtig, dass sich der Geheimtext bei jeder Verschlüsselung des gleichen Klartextes unterscheidet.
|
|
Dies wird meist dadurch erreicht, dass die Klartextnachricht vor Anwendung des Verschlüsselungsverfahrens abgeändert wird.
|
|
Meist wird hierfür eine Nonce (Number used Once) verwendet.
|
|
Die Nonce kann ein Zähler, ein Zeitstempel oder eine Zufallszahl sein.
|
|
Der Nonce-Wert muss beiden Seiten bekannt sein.
|
|
Hierbei kann er entweder mitverschlüsselt übertragen werden oder besteht aus einem Wert (z.B. Zähler), der beiden Seiten bekannt ist.
|
|
|
|
\subsubsection{Nonce-Verschlüsselung}
|
|
Ein Nonce-Wert $v\in\mathscr{M}$ wird dazu genutzt die Klartextnachricht $m\in\mathscr{M}$ abzuändern:
|
|
$$\tilde{m}=m+v$$
|
|
Anschließend wird die veränderte Nachricht verschlüsselt:
|
|
$$c = E_k(\tilde{m})$$
|
|
Für die Entschlüsselung wird der Schlüssel $k$ und der Nonce-Wert $v$ benötigt:
|
|
$$m=D_k(c)+v$$ |