Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
05-asymmenc.tex: Verbesserte Formulierungen bei Hash-ElGamal.
  • Loading branch information
Felix-Dev committed Apr 13, 2015
1 parent d0fb22d commit f473134
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 18 deletions.
17 changes: 3 additions & 14 deletions 04-hashing.tex
Expand Up @@ -234,22 +234,9 @@ \subsection{Sicherheit von Merkle-Damgård}
\end{beweis}

\subsection{Bedeutung von Merkle-Damgård}
%Es gibt einige bekannte Hashfunktionen, die auf dem Prinzip von Merkle-Damgård basieren. Darunter sind:
%\begin{itemize}
% \item MD5 (vorgeschlagen 1992)
% \item SHA-1 (vorgeschlagen 1995)
% \item SHA-2 (vorgeschlagen 2001)
%\end{itemize}
%MD5 und SHA-1 sind inzwischen gebrochen. Der aktuelle Hash-Standard SHA-3 ("`Keccak"') nutzt keine Merkle-Damgård-Konstruktion.

\subsubsection{Secure Hash Algorithm (SHA)}
%SHA-1 ist gilt inzwischen zwar als gebrochen, war jedoch lange Zeit die wichtigste kryptographische Hashfunktion. Sie teilt die ursprüngliche Nachricht in
%Blöcke zu 512 Bits ein, wobei der letzte Block bei Bedarf auf 512 Bits aufgefüllt wird. Jeder Block durchläuft mit einem Initialisierungsvektor von 160 Bit
%Länge jeweils 20 Runden mit vier verschiedenen Funktionen. Das Ergebnis eines Durchgangs hat eine Länge von 160 Bit und wird rückgekoppelt als Initialwert für
%den nächsten Block genutzt. Das Ergebnis des letzten Durchgangs ist der Hashwert der Nachricht.
%
%Eine Runde von SHA-1 ist schematisch in Abbildung "`"' dargestellt. Abbildung "`"' zeigt die gesamte Kompressionsfunktion.
Im Jahr 1995 \href{http://csrc.nist.gov/publications/fips/archive/fips46-3/fips46-3.pdf}{veröffentlichte} die NIST den von der NSA entworfenen, auf der Merkle-Damgård-Transformation beruhenden, kryptographischen Hashalgorithmus \textit{Secure Hash Algorithm 1} (SHA-1). Lange Zeit war SHA-1 die wichtigste kryptographische Hashfunktion, bis der Algorithmus im Jahr 2005 zumindest theoretisch gebrochen wurde. Es existieren also Angriffe, die schneller als eine Brute-Force-Suche sind, eine explizite Kollision wurde bislang allerdings nicht gefunden. In Folge des Bekanntwerdens der Schwachstellen empfiehlt die NIST auf die Verwendung von SHA-1 zu verzichten. Dennoch hat SHA-1 wenig von seiner Verbreitung eingebüßt und wird heutzutage immer noch weitreichend verwendet, z.B. bei Prüfsummen.
Im Jahr 1995 \href{http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf}{veröffentlichte} die NIST den von der NSA entworfenen, auf der Merkle-Damgård-Transformation beruhenden, kryptographischen Hashalgorithmus \textit{Secure Hash Algorithm 1} (SHA-1). Lange Zeit war SHA-1 die wichtigste kryptographische Hashfunktion, bis der Algorithmus im Jahr 2005 zumindest theoretisch gebrochen wurde. Es existieren also Angriffe, die schneller als eine Brute-Force-Suche sind, eine explizite Kollision wurde bislang allerdings nicht gefunden. In Folge des Bekanntwerdens der Schwachstellen empfiehlt die NIST auf die Verwendung von SHA-1 zu verzichten. Dennoch hat SHA-1 wenig von seiner Verbreitung eingebüßt und wird heutzutage immer noch weitreichend verwendet, z.B. bei Prüfsummen.

\paragraph*{Ablauf des Hash-Vorgangs}

Expand Down Expand Up @@ -363,6 +350,8 @@ \subsubsection{Secure Hash Algorithm (SHA)}
\draw[->, semithick] (plus\lastAddBoxIndex) -- (\xE, {\lastAddBoxYCoord- 0.7})
-- (\xA, {\lastAddBoxYCoord - 1.5}) -- (aNew);

\node (AddModText) at (\xE - 1.4, {\lastAddBoxYCoord - 3.0}) {\scriptsize{Addition ist modulo $2^{32}$ zu verstehen}};

\end{scope}
\end{tikzpicture}
\caption{Schema der Berechnungsrunde}
Expand Down
6 changes: 3 additions & 3 deletions 05-asymmenc.tex
Expand Up @@ -316,20 +316,20 @@ \subsubsection{Nachrichtenumwandlung}
Die Nachrichtenumwandlung erlaubt es, beliebige Nachrichten fester Länge zu verschlüsseln, ohne den eigentlichen Algorithmus anpassen zu müssen. Die Länge der möglichen Nachrichten wird dabei durch die Größe der zugrundeliegenden Gruppe festgelegt.

\paragraph*{Verfahren}
Im Folgenden werde $M$ zunächst als Bit-String aufgefasst. Wir wählen $p > 2 $ prim und setzen $\mathbbm{G} \subset \mathbbm{Z}^*_p$ als Untergruppe der Quadrate von $\mathbbm{Z}^*_p$, wobei $\mathbbm{G}$ die Ordnung $q = \frac{(p - 1)}{2}$ hat.\footnote{Die Untergruppe der Quadrate von $\mathbbm{Z}^*_p$ besteht aus den Elementen $\{y = x^2 \text{ mod } p\ \vert\ x \in \mathbbm{Z}^*_p\}$. Falls $p > 2$ prim ist, besteht diese Untergruppe aus $\frac{p - 1}{2}$ Elementen. Jedes Element, mit Ausnahme der Eins, kann als Gruppengenerator dienen.}
Im Folgenden werde $M$ zunächst als Bit-String aufgefasst. Wir wählen $p > 2 $ prim und setzen $\mathbbm{G} \subset \mathbbm{Z}^*_p$ als Untergruppe der Quadrate von $\mathbbm{Z}^*_p$, wobei $\mathbbm{G}$ die Ordnung $q = \frac{(p - 1)}{2}$ hat.\footnote{Die Untergruppe der Quadrate von $\mathbbm{Z}^*_p$ besteht aus den Elementen $\{x^2 \text{ mod } p\ \vert\ x \in \mathbbm{Z}^*_p\}$. Falls $p > 2$ prim ist, besteht diese Untergruppe aus $\frac{p - 1}{2}$ Elementen. Jedes Element, mit Ausnahme der Eins, kann als Gruppengenerator dienen.}
Es sei $n$ die Länge des Bit-Strings der Gruppenordnung $q$. Dann können wir die Nachricht $M \in \{0, 1\}^{n - 1}$ beliebig wählen und interpretieren sie im weiteren Verlauf als ganze Zahl äquivalent zu ihrer Binärdarstellung. Da $M$ auch die Null darstellen kann und die Null in multiplikativen Gruppen nicht vorhanden ist, setzen wir $\tilde{M} = M + 1$. Folglich ist $ 1 \leq \tilde{M} \leq q$ und daher $\tilde{M} \in \mathbbm{Z}^*_p$. Nach der Eigenschaft einer quadratischen Untergruppe ist somit $\hat{M} = \tilde{M}^2 \text{ mod } p \in \mathbbm{G}$.

Damit kann $\hat{M}$ analog zum obigen Verfahren verschlüsselt werden. Zum Entschlüsseln berechnet der Empfänger aus $\hat{M}$ als Zwischenschritt $\tilde{M} = \sqrt{\hat{M}}\ \text{mod}\ p\ \in [1, q]$ und erhält mit $M = \tilde{M} - 1$ die ursprüngliche Nachricht $M$ in der Binärdarstellung. $\hat{M}$ ist durch normales Entschlüsseln mit ElGamal zu berechnen.

Ein Nachteil dieses Verfahrens ist, dass die Nachrichtenumwandlung, je nach gewählter Gruppe, nicht effizient möglich ist.

\subsubsection{Hash-ElGamal}
Eine weitere Variante, die Einschränkung der Nachrichten auf Elemente der gewählten Gruppe aufzuheben, ist das Hash-ElGamal-Kryptosystem. Es realisiert ein Verfahren, dass zu allen Nachrichten $M \in \{0, 1\}^l$ mit Hilfe der bereits bekannten Bausteine und einer Hashfunktion ein Chiffrat der gleichen Länge bestimmt. Im Gegensatz zur Nachrichtenumwandlung bilden wir $M$ dabei nicht auf die Gruppe ab. Die Sicherheit des Kryptosystems beruht dabei ausschließlich auf der Annahme, dass der diskrete Logarithmus nicht effizient berechnet werden kann und ist nicht abhängig von der Wahl der Hashfunktion. Das Hash-El-Gamal-Verfahren bietet somit Sicherheit auf gleichem Niveau, ist in der Verwendung, aufgrund des größeren Urbildraums, jedoch deutlich flexibler.
Eine weitere Variante, die Einschränkung der Nachrichten auf Elemente der gewählten Gruppe aufzuheben, ist das Hash-ElGamal-Kryptosystem. Es realisiert ein Verfahren, dass zu allen Nachrichten $M \in \{0, 1\}^l$ mit Hilfe der bereits bekannten Bausteine und einer Hashfunktion ein Chiffrat der gleichen Länge bestimmt. Im Gegensatz zur Nachrichtenumwandlung bilden wir $M$ dabei nicht auf die Gruppe ab. Die Sicherheit des Kryptosystems beruht ausschließlich auf der Annahme, dass der diskrete Logarithmus nicht effizient berechnet werden kann und ist, zumindest falls rechtseindeutig, nicht von der Wahl der Hashfunktion abhängig. Das Hash-ElGamal-Verfahren bietet somit Sicherheit auf gleichem Niveau, ist in der Verwendung, aufgrund des größeren Urbildraums, jedoch deutlich flexibler.

\paragraph*{Verfahren}
Es seien die Gruppe $\mathbbm{G} \subset \mathbbm{Z}^*_p$ und das Schlüsselpaar $(pk,sk)$ analog zu ElGamal gewählt und berechnet. Sei zudem $H \colon \mathbbm{G} \rightarrow \{0,1\}^l$ eine beliebige Hashfunktion, die in Bitfolgen der Länge $l$ abbildet.

Wähle, um eine Nachricht $M \in \{0,1\}^l$ zu verschlüsseln, $y \leftarrow \mathbbm{Z}_p$ zufällig gleichverteilt, berechne $Y = g^y\ \text{mod}\ p$ und sende das Tupel
Wähle, um eine Nachricht $M \in \{0,1\}^l$ zu verschlüsseln, $y \leftarrow \mathbbm{Z}_p$ zufällig gleichverteilt, berechne $g^y\ \text{mod}\ p$ und sende das Tupel
\begin{align*}
(Y, H(h^y) \oplus M) = (Y, C)
\end{align*}
Expand Down
Binary file modified skript.pdf
Binary file not shown.
2 changes: 1 addition & 1 deletion skript.tex
@@ -1,5 +1,5 @@
% document options %
\documentclass[11pt]{book}
\documentclass[11pt, oneside]{book}
%%

% used packages %
Expand Down

0 comments on commit f473134

Please sign in to comment.