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.

  • Footprint-Funktion
  • sichere Hash-Funktion
  • Manipulation Detection Code (MDC)
  • Message Integrity Code (MIC)
  • Prüfsummenverfahren

Anforderungen an kryptografische Hash-Funktionen

  • Eindeutigkeit: Eine identische Zeichenfolge muss zum selben Hash-Wert führen.
  • Reversibilität: Der Hash-Wert darf nicht in die ursprüngliche Zeichenfolge zurückberechnet werden können.
  • Kollisionsresistenz: Zwei unterschiedliche Zeichenfolgen dürfen nicht den gleichen Hash-Wert ergeben.

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.

Funktionsweise einer kryptografischen Hash-Funktion

Urbild -> kryptografische Hash-Funktion -> Hash-Wert

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.

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.

  • Statistisch gesehen sollte jeder Hash-Wert etwa gleich oft vorkommen.
  • Der Hash-Wert sollte auch bei kleinen Änderungen des Urbilds anders sein.

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.

Angriffe auf kryptografische Hash-Funktionen

Ein Angriff auf eine kryptografische Hash-Funktion sieht vor, das Urbild zu erhalten. Es sind mehrere Möglichkeiten bekannt.

  • Substitutionsangriff
  • Geburtstagsangriff
  • Wörterbuchangriff
  • Regenbogentabelle

Gegen die ersten beiden Angriffe kann man sich nur durch ausreichend lange Hash-Werte schützen. Diese sollten länger sein, als die empfohlene Schlüssellänge für symmetrische Verfahren. 160 Bit gelten als das absolute Minimum.

Der mit Abstand häufigste Angriff ist der Wörterbuchangriff. Er ist am erfolgreichsten. Er funktioniert dann am besten, wenn das Urbild aus einem Wort besteht. Vielleicht sogar ein Begriff, der sich in einem Wörterbuch befindet.
Wörterbuchangriffe werden besonders auf Passwörter angewendet, die als Hash-Wert in einer Benutzerdatenbank abgelegt sind.
Erschweren kann man es dem Angreifer, wenn man vom erzeugten Hash-Wert mehrmals einen Hash-Wert erzeugt. Auch bei mehreren hundert Durchläufen sollte sich selten ein Performance-Problem einstellen. Ein Angreifer muss allerdings genauso viele Durchläufe machen, um auf den richtigen Hash-Wert zu kommen. Und das für sein ganzes Wörterbuch.

Schlüsselabhängige Hash-Funktionen

Typischerweise arbeiten kryptografische Hash-Funktionen ohne einen Schlüssel. In der Regel ist es egal, wenn der Angreifer weiß, welche Hash-Funktion angewendet wird. Bei den meisten Anwendungen geht es darum, eine Art Prüfsumme zu bilden oder Datenspeicherung oder -übertragung im Klartext zu vermeiden.

Es gibt allerdings auch Anwendungen, wo für die Berechnung eines Hash-Werts ein geheimer Schlüssel von Vorteil wäre, den der Angreifer nicht kennt. Beispielsweise dann, wenn zwei Kommunikationsteilnehmer bereits einen geheimen Sitzungsschlüssel ausgetauscht haben. In so einem Fall spricht man von einer schlüsselabhängigen Hash-Funktion. Wobei häufig von einem Message Authenticaton Code (MAC) gesprochen wird.

Die Frage ist jetzt, warum braucht man eine schlüsselabhängige Hash-Funktion, wenn es Signaturverfahren gibt. Denn ein Signaturverfahren wäre genau das. Allerdings braucht eine schlüsselabhängige Hash-Funktion wesentlich weniger Rechenzeit und kommt mit kürzeren Schlüsseln aus. Die digitale Signatur ist deshalb aber nicht überflüssig. Im Gegenteil. Wenn es um Verbindlichkeit geht, dann kommt man ohne die digitale Signatur nicht aus. Denn die digitale Signatur kann nur derjenige anfertigen, der den privaten Schlüssel des Schlüsselpaares hat. Würden Sender und Empfänger dagegen nur einen Schlüssel vereinbaren und eine schlüsselabhängige Hash-Funktion anwenden, könnte der Empfänger dem Sender nichts beweisen. Weil den geheimen Schlüssel hätte ja jeder haben können.

Der Unterschied zwischen schlüsselabhängiger Hash-Funktion und einer normalen Hash-Funktion liegt im unterschiedlichen Sicherheitsziel. Der bevorzugte Angriff bei der schlüsselabhängigen Hash-Funktion liegt im Herausbekommen des Schlüssels. Bei der normalen Hash-Funktion will der Angreifer Kollisionen finden.
Bei einer schlüsselabhängigen Hash-Funktion ähneln die Angriffe denen bei einer symmetrischen Verschlüsselung. Beispielsweise ein Known-Preimage- oder Chosen-Preimage-Angriff.

Anwendungen von kryptografischen Hash-Funktionen

  • Pseudozufallsgenerator
  • Mischer für Zufallsquellen
  • Sitzungsschlüssel aus Masterschlüssel ableiten
  • Generator für Einmal-Passwörter
  • Verfahren für die Authentifizierung (digitale Signatur)
  • Speichern von Passwörtern
  • Bilden kryptografischer Prüfsummen
  • Integritätsprüfung

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.

  • MD2 - Message Digest 2 mit 128 Bit
  • MD4 - Message Digest 4 mit 128 Bit
  • MD5 - Message Digest 5 mit 128 Bit
  • RIPEMD
  • RIPEMD-160
  • Tiger
  • WHIRLPOOL
  • SHA-1 mit 160 Bit
  • SHA-2 mit 224, 256, 384 und 512 Bit
  • SHA-3 mit 224, 256, 384 und 512 Bit

Kryptografische schlüsselabhängige Hash-Funktionen

Die gängigen schlüsselabhängigen Hash-Funktionen basieren auf anderen kryptografischen Verfahren. Entweder bildet eine kryptografische Hash-Funktion oder ein symmetrisches Verschlüsselungsverfahren die Grundlage. Eine andere seltenere Möglichkeit ist eine Stromchiffre, die zusätzlich einen Hash-Wert generiert.

  • HMAC
  • CBC-MAC
  • UMAC
  • EMAC
  • TTMAC
  • COMP128

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Netzwerktechnik-Fibel

Alles was Sie über Netzwerke wissen müssen.

Die Netzwerktechnik-Fibel ist ein Buch über die Grundlagen der Netzwerktechnik, Übertragungstechnik, TCP/IP, Dienste, Anwendungen und Netzwerk-Sicherheit.

Das will ich haben!

Netzwerktechnik-Fibel

Alles was Sie über Netzwerke wissen müssen.

Die Netzwerktechnik-Fibel ist ein Buch über die Grundlagen der Netzwerktechnik, Übertragungstechnik, TCP/IP, Dienste, Anwendungen und Netzwerk-Sicherheit.

Das will ich haben!

Schützen Sie Ihr Netzwerk

TrutzBox

Die TrutzBox enthält einen leistungsstarken Content-Filter, der Werbetracker blockiert und vor Schadcode auf bösartigen Webseiten schützt.
Alle Internet-fähigen Geräte, egal ob Desktop-PCs, vernetzte Produktionsanlagen und IoT-Geräte, werden vor Überwachung durch Tracker, Einschleusen von Schadsoftware und dem unbedachten Zugriff auf bösartige Webseiten geschützt.

  • Sicheres Surfen mit Content-Filter und Blocker gegen Werbetracker
  • Mehrstufige Sicherheitsarchitektur mit Stateful-Inspection-Firewall und Intrusion-Prevention-System
  • Laufende Aktualisierung gegen neue Bedrohungen

Bestellen Sie Ihre TrutzBox mit integriertem Videokonferenz-Server jetzt mit dem Gutschein-Code "elko50" und sparen Sie dabei 50 Euro.

Mehr über die TrutzBox TrutzBox jetzt mit Gutschein-Code bestellen