76 lines
5.6 KiB
TeX
76 lines
5.6 KiB
TeX
\chapter{Das Diffie-Hellman-Schlüsselaustauschverfahren}
|
|
In allen Fällen, in denen ein symmetrisches Schlüsselverfahren (inkl. MAC-Verfahren) verwendet wird ist es nötig den Schlüssel sicher auszutauschen.
|
|
Eine Möglichkeit ist es diese Übertragung über einen sicheren Kanal (z.B. persönliche Übergabe) zu organisieren.
|
|
Dies ist allerdings mit einem hohen Aufwand verbunden und erlaubt nicht einen sicheren Kanal in Echtzeit (z.B. für HTTPS) aufzubauen.
|
|
Hierfür wurde von W.Diffie udn M.E.Hellman auf Basis der Arbeit von R.C.Merkle ein asymmetrisches Schlüsselaustauschverfahren entwickelt, welches als DH-Verfahren bekannt ist.
|
|
Asymmetrische Verschlüsselungsverfahren zeichnen sich durch die Verwendung von \textbf{Schlüsselpaaren} ($k=(k_{\text{priv}},k_{\text{pub}})$) aus.
|
|
Diese Schlüsselpaare sollten folgende Eigenschaften haben:
|
|
\begin{itemize}
|
|
\item Ein Schlüsselpaar ist genau einem Besitzer zugeordnet
|
|
\item Niemals hat jemand anderes als der Besitzer zugriff auf den privaten Schlüssel $k_\text{priv}$
|
|
\item Der private Schlüssel wird vom Besitzer selber generiert
|
|
\item Der öffentliche Schlüssel $k_\text{pub}$ lässt sich effizient aus $k_\text{priv}$ errechnen
|
|
\item Es gibt keinen effizienten Algorithmus um mithilfe von $k_\text{pub}$ $k_\text{priv}$ zu bestimmen
|
|
\end{itemize}
|
|
Vor dem Austausch eines symmetrischen Schlüssels besitzen beide Seiten jeweils ein unabhängiges asymmetrisches Schlüsselpaar.
|
|
|
|
\section{Das DH-Verfahren in Einzelschritten}
|
|
Im Folgenden werden Alice und Bob als Synonyme für zwei beliebige Sender/Empfänger genutzt:
|
|
\begin{itemize}
|
|
\item Alice und Bob vereinbaren zwei Parameter (meist durch einen Standard spezifiziert):
|
|
\begin{itemize}
|
|
\item eine große Zahl $n\in\mathbb{N}$
|
|
\item eine Zahl $g\in\mathbb{Z}_n^*$ deren Ordnung $o(g)$ mindestens durch eine sehr große Primzahl geteilt wird.
|
|
\end{itemize}
|
|
\item Alice bestimmt eine zufällig Zahl $e_A\in\mathbb{Z}_n^*$ als privaten Schlüssel:
|
|
$$k_{A,\text{priv}}=e_A$$
|
|
und errechnet den öffentlichen Schlüssel $k_{A,\text{pub}}=g^{e_A}\in\mathbb{Z}_n$
|
|
\item Bob bestimmt ebenfalls eine Zufallszahl $e_B\in\mathbb{Z}_n^*$ und damit ein Schlüsselpaar:
|
|
$$(k_{B,\text{priv}},k_{B,\text{pub}})=(e_B,g^{e_B})$$
|
|
\item Alice und Bob tauschen ihre öffentlichen Schlüssel aus.
|
|
\item Alice berechnet in $\mathbb{Z}n$:
|
|
$$s_A:=(g^{e_B})^{e_A}$$
|
|
Bob berechnet in $\mathbb{Z}n$:
|
|
$$s_B:=(g^{e_A})^{e_B}$$
|
|
\item Der gemeinsame Schlüssel (shared secret) ergibt sich durch:
|
|
$$s_A:=(g^{e_B})^{e_A}=g^{e_B\cdot e_A}=g^{e_A\cdot e_B}=(g^{e_A})^{e_B}=s_B$$
|
|
\end{itemize}
|
|
|
|
\section{Das Diskrete-Logarithmus-Problem (DL-Problem)}
|
|
Das Diskrete-Logarithmus-Problem bildet die mathematische Grundlage dafür, dass Schlüssel mittels der DH-Verfahrens über einen potentiell unsicheren Kanal übertragen werden können.
|
|
Das Problem definiert sich wie folgt:
|
|
\begin{mybox}
|
|
\textbf{DL-Problem}\\
|
|
Gegeben seien $n\in\mathbb{N},g\in\mathbb{Z}_n^*$ und eine Potenz von $g$ in $\mathbb{Z}_n$:
|
|
$$a\in\langle g\rangle:=\{g^e\mid e\in\mathbb{N}\}$$
|
|
Als DL-Problem wird die Aufgabe bezeichnet nur mittels $a$ und $g$ einen passenden Exponenten $e$ für $a=g^{e}$ zu finden.\\
|
|
Es wird vermutet, dass es keinen effizienten Algorithmus gibt.
|
|
\end{mybox}
|
|
|
|
\subsection{Das Diffie-Hellman-Problem (DH-Problem)}
|
|
Das DH-Problem ist eine Variante des DL-Problems, bei der zwei Potenzen $g^{e_A},g^{e_B}\in\langle g\rangle$ gegeben sind.
|
|
Hierbei wird die Zahl $g^{e_A\cdot e_B}$ gesucht.
|
|
Auch hier wird vermutet, dass es keinen effizienten Algorithmus gibt.
|
|
|
|
\section{Beispielanwendung des DH-Verfahrens}
|
|
\includegraphics[scale=0.75]{DH-Verfahren.png}
|
|
|
|
\section{Angriffe auf das DH-Verfahren}
|
|
\subsection{Pohlig-Hellman-Reduktion}
|
|
Eine Brute-Force-Suche für das DL-Problem wird dadurch vereinfacht, dass sich die Brute-Force-Suche auf eine Brute-Force-Suche auf die Untergruppen von $\langle g \rangle$ mit maximaler Primzahlpotenz reduzieren lässt.
|
|
Ein optimaler Schutz bietet die Wahl einer Primzahl $n$ bei der $n-1$ die Primfaktorzerlegung $n-1=2\cdot q$ hat ($q$ ist eine Primzahl).
|
|
|
|
\subsection{Shanks' \glqq Baby Steps Giant Steps\grqq-Verfahren (BSGS-Verfahren)}
|
|
Falls die Möglichkeit besteht $\tilde{m}:=\lceil \sqrt{m}\rceil$ viele Zahlen von $\mathbb{Z}n$ in einer Tabelle zu speichern,
|
|
lässt sich ein gesuchter Exponent $x$ mit dem BSGS-Verfahren bereits mit der Berechnung von höchsten $2\tilde{m}$ vielen Potenzen finden.
|
|
Das Verfahren ähnelt dabei dem Meet-in-the-middle-Angriff (siehe \ref{meet-in-the-middle}).
|
|
|
|
\subsection{Pollard's Rho-Methode}
|
|
siehe Skript 3 Kapitel 2.2.3 auf Seite 26(42)
|
|
|
|
\subsection{Zahlkörpersieb}
|
|
Zu Beginn der 1990er Jahre wurde das Zahlkörpersieb (Number Field Sieve (NFS)) als Methode zur Faktorisierung großer Zahlen $n$ und zur Bestimmung diskreter Logarithmen in $\mathbb{Z}_n^*$ entwickelt.
|
|
Die Laufzeit zur Bestimmung diskreter Logarithmen in $\mathbb{Z}_n^*$ mithilfe des Zahlkörpersiebs kann durch
|
|
$$O\left(e^{\left(\left(\frac{64}{9}\right)^{1/3}+o(1)\right)(\ln(n))^{1/3}(\ln(\ln(n)))^{2/3}}\right)$$
|
|
von oben abgeschätzt werden.
|