Kryptografische Hash-Funktionen

Kryptografische Hash-Funktionen sind ein wichtiges kryptografisches Instrument und bilden einen eigenen Bereich in der Kryptografie. Kryptografische Hash-Funktionen generieren aus beliebig langen Datensätzen eine Zeichenkette mit einer festen Länge (Angabe in Bit). Ein Datensatz kann ein Wort, ein Satz, ein längerer Text oder auch eine ganze Datei sein. Die erzeugte Zeichenkette wird als digitaler Fingerabdruck (Fingerprint), kryptografische Prüfsumme, Message Digest (MD) oder Message Authentication Code (MAC) bezeichnet. Gemeint ist damit in der Regel immer der sogenannte Hash-Wert oder auch nur Hash. Das ist ein digitaler Code, der nach Anwendung der kryptografischen Hash-Funktion als Ergebnis herauskommt.

Das Bilden eines Hash-Werts hat erst einmal nichts mit Kryptografie zu tun. Denn nicht alle Hash-Funktionen sind nach den Gesichtspunkten der Kryptografie eine kryptografische Hash-Funktion. Für „echte“ kryptografische Hash-Funktionen gibt es die unterschiedlichsten Begriffe und zusätzlich auch noch Produktbezeichnungen oder Leistungsmerkmale, die allerdings nichts darüber aussagen, ob sie kryptografischen Anforderungen entsprechen.

Hash-Funktion

Eine Hash-Funktion ist eine Funktion, die Zeichenketten neue Zeichenketten einer fest vorgegebenen Länge zuordnet. Man nennt Funktionswerte von Hash-Funktionen auch Hash-Werte.

Im Prinzip erzeugt eine Hash-Funktion aus einem Datensatz, das als Urbild oder im Englischen Preimage bezeichnet wird, eine duale Zahl, die meist in hexadezimaler Schreibweise dargestellt und als Hash-Wert bezeichnet wird. Die Funktionsweise einer kryptografischen Hash-Funktion basiert auf einer Einwegfunktion, die sich sehr einfach rechnen lässt, aber deren Umkehrung dagegen sehr aufwendig bis unmöglich ist. Die Umkehrung vom Hash-Wert auf das Urbild zu schließen ist das was man verhindern möchte.

Hash-Funktion als Einwegfunktion

Die in der Kryptologie benutzten Hash-Funktionen sind in der Regel Einwegfunktionen.

Bei einer Einwegfunktion ist es praktisch unmöglich, aus einem möglichen Zielwert einen Ausgangswert so zu bestimmen, dass der Zielwert Funktionswert zum Ausgangswert ist.

In mathematischer Kurzform kann man das so beschreiben: Eine Funktion f ist eine Einwegfunktion, wenn es praktisch unmöglich ist, zu gegebenem y aus der Zielmenge ein x aus der Definitionsmenge von f zu finden, so dass f(x) = y gilt.

Anforderungen an kryptografische Hash-Funktionen

Nicht alle Hash-Funktionen erfüllen alle diese Anforderungen. Deshalb eignen sich nicht alle Hash-Funktionen für kryptografische Anwendungen, wie Authentisierung und Verschlüsselung.

Reversibilität

Grundsätzlich sollte es nicht möglich sein aus einem Hash-Wert die ursprünglichen Daten zurückzuberechnen. Weil mit der Zeit doch Möglichkeiten gefunden werden und die Rechenleistung steigt, gibt es immer bessere Verfahren aus einem Hash-Wert die ursprünglichen Daten zurück zu berechnen. Deshalb stellt sich mit der Zeit immer wieder heraus, dass Hash-Funktionen reversibel sind.

Kollisionsresistenz

Prinzipiell ist es so, dass ein Urbild beliebig viele Stellen und beliebig viele Werte einnehmen kann. Ein Hash-Wert ist allerdings auf eine bestimmte Länge begrenzt. So kann es vorkommen, dass ein beliebiger Hash-Wert unterschiedlichen Urbildern entspricht. Man spricht dann von einer Kollision. Bei einer guten Hash-Funktion sollte eine Kollision so wenige wie möglich vorkommen. Nehmen wir als Beispiel die Quersummenbildung. Hier kann es vorkommen, dass die Quersumme mehreren Zahlenwerten entsprechen kann. Aus Sicht der Kryptografie ist die Quersummenbildung also keine kryptografische Hash-Funktion. Die Kryptografie stellt an Hash-Funktionen und ihre Anwendungen höhere Anforderungen. Es sollte für einen Angreifer unmöglich sein Kollisionen zu erzeugen.

Um die Wahrscheinlichkeit von Kollisionen zu vermeiden, verwendet man immer bessere Verfahren, die meist längere Hash-Werte erzeugen. Beispielsweise sind die bekannten und beliebten Hash-Funktionen MD5 und SHA1 für Kollisions-Attacken verwundbar. Damit ist gemeint, dass ein anderer Datensatz den gleichen Hash-Wert erzeugen kann. Das heißt, dass ein MD5- oder SHA1-Hash nicht einzigartig ist. Besser ist es, SHA256 oder gleich SHA512 zu verwenden.

Angriffsszenarien

Bei einem Urbildangriff (engl. preimage attack) verfolgt der Angreifer das Ziel, zu einem gegebenen Hashwert einer unbekannten Nachricht (Erster Urbildangriff) oder zu einer gegebenen Nachricht selbst (Zweiter Urbildangriff) eine weitere Nachricht zu konstruieren, die denselben Hashwert besitzt.

Beispiel: Angenommen, ein Angreifer fängt ein signiertes Dokument ab. Er ist dann im Besitz des Dokumenttextes (z.B. „Hiermit bestelle ich 2 Konzertkarten zu je 40 €.“) sowie des zugehörigen Hashwerts. Der Angreifer versucht jetzt, aus der Nachricht oder dem Hashwert eine veränderte Nachricht mit demselben Hashwert zu erzeugen. Eine zusätzliche Schwierigkeit besteht darin, dass die neue Nachricht auch noch Sinn machen soll.

Eine andere Form von Angriff betrifft die Erzeugung von Kollisionen:

Bei einem Kollisionsangriff (engl. collision attack) verfolgt der Angreifer das Ziel, zwei verschiedene Dokumente zu konstruieren, die beide denselben Hashwert besitzen.

Beachte, dass es sich hier um unterschiedliche Angriffsszenarien handelt. Das zeigt sich auch in der Praxis. Während Kollisionsangriffe bei SHA-1 möglich sind, sind Urbildangriffe bei SHA-2 derzeit noch nicht möglich.

Kryptografische Hash-Funktionen

Kryptografische Hash-Funktionen bilden einen eigenen Bereich in der Kryptografie. An deren Entwicklung waren oft bekannte Kryptografen beteiligt, die man von anderen kryptografischen Verfahren her kennt.

Mehr Infos zu MD5 und SHA