Was ist eine Hashfunktion?
Die exorbitante Zunahme von Datenmengen, die in weltweiten und lokalen Datennetzen verarbeitet werden, wirft immer wieder aufs Neue die Fragen auf, wie schnell auf große Datenmengen zugegriffen werden kann und wie dabei die Sicherheit des Datenaustausches gewährleistet wird. Hier kommt – neben anderen Sicherheitstechnologien – die Hashfunktion ins Spiel. Wir erklären, welche Eigenschaften sie hat und wozu sie gut ist.
Das englische Wort „hash“ bedeutet so viel wie „zerhacken“. Die Daten werden durch die Hashfunktion also „zerhackt“ und dann auf eine einheitliche Länge gebracht, egal wie groß der Ausgangswert ist. Eine andere Bezeichnung lautet „Streuwertfunktion“. Die Funktion wird in sehr vielen Bereichen der Informationstechnologie eingesetzt. Dazu gehören:
- die verschlüsselte Kommunikation zwischen Webserver und Browser sowie die Erzeugung von Session-IDs für Internetanwendungen und das Zwischenspeichern von Daten (Caching)
- der Schutz von sensiblen Daten wie Passwörtern, Webanalysen, Zahlungsmitteln
- die Signatur von Nachrichten
- das Auffinden von gleichen oder ähnlichen Datensätzen bei Suchfunktionen
Mit der Hashfunktion werden Zeichenfolgen mit unterschiedlicher Länge in Zeichenfolgen mit fester Länge umgewandelt. So bekommen beispielsweise unterschiedliche Passwörter mit der Hashfunktion eine festgelegte Menge an zugelassenen Zeichen. Eine Zurück-Umwandlung des Hashwertes in die ursprüngliche Zeichenfolge ist ausgeschlossen.
Welche Eigenschaften hat eine Hashfunktion?
An eine Hashfunktion werden definierte Anforderungen gestellt, damit sie die zugedachten Eigenschaften aufweist. Das sind:
Hashfunktion als Einbahnstraße
Aus dem erzeugten Hashwert darf nicht der ursprüngliche Dateninhalt zurückerzeugt werden können. Im oben abgebildeten Beispiel darf es also nicht möglich sein, aus dem erzeugten Hashwert „$P$Hv8rpLanTSYSA/2bP1xN.S6Mdk32.Z3“ das Passwort „susi_562#alone“ wiederherzustellen.
Unfallfreie Hashwerte
Es darf niemals passieren, dass unterschiedlichen Ursprungsdaten ein identischer Hashwert zugeordnet wird. Jede Eingabe muss einen anderen Hashwert erzeugen. Wenn das gewährleistet ist, spricht man auch von einer kryptografischen Hashfunktion. In der obigen Abbildung gibt es keinerlei identische Hashwerte, somit auch keine Kollisionen („Unfälle“) zwischen den erzeugten Daten. Für das Vermeiden solcher Kollisionen gibt es weitergehende Technologien.
Hashfunktion mit Überschall
Wenn die Umwandlung von Eingaben in einen Hashwert viel Zeit benötigt, wäre das Verfahren ungeeignet. Die Hashfunktion muss also sehr schnell arbeiten. In Datenbanken werden Hashwerte in sogenannten Hashtabellen abgelegt, um den schnellen Zugriff zu gewährleisten.
Was ist der erzeugte Hashwert?
Der mittels Hashfunktion erzeugte Hashwert hat eine feste Länge, die durch die verwendete Hash-Technologie festgelegt ist. Dabei ist die Zeichenmenge des Eingabewerts unerheblich; es wird immer die gleiche Anzahl an Zeichen ausgegeben. Welche Zeichen zugelassen sind, ist innerhalb der Hashfunktion definiert.
Somit ist der Hashwert das Ergebnis, das mit der Hashfunktion und einem Hashalgorithmus berechnet wurde. Für den Hashwert wird auch der Begriff „Fingerprint“ verwendet. Das symbolisiert die Einzigartigkeit eines jeden Hashwertes, vergleichbar mit der Einzigartigkeit des menschlichen Fingerabdrucks. Bei Verwendung der Kleinbuchstaben „a“ bis „f“ und der Zahlen „0“ bis „9“ bei einer Länge des Hashwerts von 64 Zeichen bestehen 1.1579209e+77 Möglichkeiten, das bedeutet eine 70, gefolgt von 24 Nullen! Daran kann man ablesen, dass auch Zeichenketten mit geringerer Länge und/oder mehr benutzbaren Zeichen einen brauchbaren Fingerabdruck erzeugen.
Die im obigen Beispiel gezeigten Hashwerte sind mit wenigen Zeilen PHP-Code einfach erzeugt:
<?php
echo hash('sha256', 'apple');
?>
ergibt immer den Hashwert oder Fingerabdruck „3a42c503953909637f78dd8c99b3b85ddde362415585afc11901bdefe8349102“.
Dem Befehl „hash“ wurde der Verschlüsselungsalgorithmus „sha256“ für das Wort „apple“ zugewiesen.
Hashfunktion und Webseiten
Bei der SSL-verschlüsselten Datenübertragung wird während der Anfrage beim Webserver das Serverzertifikat an den Browser des Nutzers gesendet. Dann wird mit einer Hashfunktion ein Sitzungsschlüssel erzeugt und zum Server gesendet, dort entschlüsselt und geprüft. Wenn der Server den erhaltenen Sitzungsschlüssel bestätigt, beginnt der verschlüsselte HTTP-Datenverkehr, also als HTTPS. Die dabei ausgetauschten Datenpakete sind ebenfalls verschlüsselt, sodass ein Angriff auf den Datenverkehr fast unmöglich ist.
Die Sitzungsschlüssel (Session-ID) werden aus veränderlichen Daten eines Website-Besuchs, etwa IP-Adresse und Zeitstempel, generiert und mit der URL übertragen. Benötigt werden solche Session-IDs beispielsweise, um Warenkorb-Nutzer eindeutig zu identifizieren. Die Übertragung mit der URL (www.domain.tld/index?sid=d4ccaf2627557c756a0762419a4b6695) wird kaum noch genutzt. Die Identifizierung im Website-Header als Cookie hat sich mehr und mehr durchgesetzt.
Die temporäre Ablage von Informationen in Caches erfolgt ebenfalls durch mit Hashwerte verschlüsselt, damit unberechtigte Nutzer beim Einsehen des Caches keine Rückschlüsse auf die besuchten Webseiten und benutze Zugangs- oder Zahlungsdaten ziehen können.
Auf vergleichbare Art läuft die Kommunikation zwischen FTP-Server und Client bei der Nutzung des SFTP-Protokolls ab.
- Verschlüsselt Webseiten-Kommunikation
- Verhindert Sicherheits-Warnungen
- Verbessert Google-Platzierung
Schutz von vertraulichen Daten
Zugangsdaten für Webaccounts sind beliebte Angriffsziele von kriminellen Hackern. Ziel ist entweder die Störung des Betriebs einer Website, um beispielsweise Einnahmen aus trafficbasierter Werbung zu mindern oder an Informationen über hinterlegte Zahlungsmittel zu gelangen.
Am Beispiel einer WordPress-Seite ist zu abzulesen, dass ein Passwort immer verschlüsselt hinterlegt ist. In Kombination mit den generierten Sicherheitsschlüsseln im System wird ein hoher Sicherheitsstandard erreicht. Das ist vor allem als Schutz gegen sogenannte Brute-Force-Attacken wichtig. Bei diesen Angriffen probiert ein Angreifer mittels einer eigens programmierten Hashfunktion so lange Kombinationen durch, bis ein Treffer erzielt wird, der den Zugang ermöglicht. Lange Passwörter mit hohen Sicherheitsstandards erschweren diese Angriffe, weil die benötigte Rechenleistung auf Seiten des Angreifers dafür ins Unermessliche steigen kann. Hier nochmals der Hinweis: Verzichten Sie auf einfache Passwörter und verwahren Sie Zugangsdaten jeglicher Art sicher vor fremdem Zugriff!
Nachrichten signieren
Der E-Mail-Verkehr geht über Server, die speziell auf diese Form der Nachrichtenübermittlung abgestimmt sind. Für die Datenübertragung kommen ebenfalls per Hashfunktion erzeugte Schlüssel zum Einsatz, um die Nachrichten digital zu signieren.
Und so läuft der Nachrichtenversand mit einer digitalen Signatur ab:
- Der Absender berechnet einen Hashwert aus seiner Nachricht und verschlüsselt diesen mit seinem privaten Schlüssel (das ist die digitale Signatur).
- Die Nachricht wird zusammen mit dem verschlüsselten Hashwert an den Empfänger gesendet.
- Der Empfänger generiert einen Hashwert der erhaltenen Nachricht und benutzt dazu dieselbe Hashfunktion. Darüber hinaus entschlüsselt er den erhaltenen Hashwert mit dem öffentlichen Schlüssel und vergleicht beide.
- Wenn beide Werte übereinstimmen, kann der Empfänger davon ausgehen, dass die Nachricht auf dem Übertragungsweg nicht manipuliert wurde.
Bitte beachten Sie: Eine digitale Signatur verschlüsselt nicht die Nachricht, sondern liefert einen Beweis für die Integrität der Nachricht. Vertrauliche Inhalte sollten zusätzlich verschlüsselt werden.
Wie hilft die Hashfunktion bei Suchfunktionen?
Das Suchen in großen Datenmengen ist ein ressourcenintensives Verfahren. Wenn man sich vorstellt, alle Einwohner einer Großstadt in einer Tabelle mit vielen Feldern (Name, Vorname, Straße etc.) nach einem Begriff zu durchforsten, kann das sehr viel Zeit und Rechenleistung kosten. Um das zu vereinfachen, wird für jedes Datenobjekt ein Hashwert berechnet, der einen Eintrag eindeutig identifiziert. Zum Suchen in der Tabelle wird aus dem Suchbegriff wieder ein Hashwert errechnet, der dann mit den vorliegenden Hashwerten verglichen wird. Es wird also eine eingegrenzte Anzahl von Buchstaben, Ziffern und Zeichen mit vorliegenden Buchstaben, Ziffern und Zeichen abgeglichen. Das geht wesentlich effizienter vonstatten als die Suche in allen vorhandenen Feldern der Datentabelle, beispielweise nach allen Vornamen, die mit „Ann“ beginnen.
Hashfunktionen werden zur Verbesserung der Sicherheit in der elektronischen Kommunikation benutzt. Hier haben sich inzwischen sehr hochentwickelte Standards etabliert. Aber auch die Hacker schlafen nicht, sodass mit immer ausgefeilteren Angriffstechnologien zu rechnen ist.