Die ex­or­bi­tan­te Zunahme von Da­ten­men­gen, die in welt­wei­ten und lokalen Da­ten­net­zen ver­ar­bei­tet werden, wirft immer wieder aufs Neue die Fragen auf, wie schnell auf große Da­ten­men­gen zu­ge­grif­fen werden kann und wie dabei die Si­cher­heit des Da­ten­aus­tau­sches ge­währ­leis­tet wird. Hier kommt – neben anderen Si­cher­heits­tech­no­lo­gien – die Hash­funk­ti­on ins Spiel. Wir erklären, welche Ei­gen­schaf­ten sie hat und wozu sie gut ist.

Das englische Wort „hash“ bedeutet so viel wie „zerhacken“. Die Daten werden durch die Hash­funk­ti­on also „zerhackt“ und dann auf eine ein­heit­li­che Länge gebracht, egal wie groß der Aus­gangs­wert ist. Eine andere Be­zeich­nung lautet „Streu­wert­funk­ti­on“. Die Funktion wird in sehr vielen Bereichen der In­for­ma­ti­ons­tech­no­lo­gie ein­ge­setzt. Dazu gehören:

  • die ver­schlüs­sel­te Kom­mu­ni­ka­ti­on zwischen Webserver und Browser sowie die Erzeugung von Session-IDs für In­ter­net­an­wen­dun­gen und das Zwi­schen­spei­chern von Daten (Caching)
  • der Schutz von sensiblen Daten wie Pass­wör­tern, Web­ana­ly­sen, Zah­lungs­mit­teln
  • die Signatur von Nach­rich­ten
  • das Auffinden von gleichen oder ähnlichen Da­ten­sät­zen bei Such­funk­tio­nen
De­fi­ni­ti­on: Hash­funk­ti­on

Mit der Hash­funk­ti­on werden Zei­chen­fol­gen mit un­ter­schied­li­cher Länge in Zei­chen­fol­gen mit fester Länge um­ge­wan­delt. So bekommen bei­spiels­wei­se un­ter­schied­li­che Pass­wör­ter mit der Hash­funk­ti­on eine fest­ge­leg­te Menge an zu­ge­las­se­nen Zeichen. Eine Zurück-Um­wand­lung des Hash­wer­tes in die ur­sprüng­li­che Zei­chen­fol­ge ist aus­ge­schlos­sen.

Welche Ei­gen­schaf­ten hat eine Hash­funk­ti­on?

An eine Hash­funk­ti­on werden de­fi­nier­te An­for­de­run­gen gestellt, damit sie die zu­ge­dach­ten Ei­gen­schaf­ten aufweist. Das sind:

Hash­funk­ti­on als Ein­bahn­stra­ße

Aus dem erzeugten Hashwert darf nicht der ur­sprüng­li­che Da­ten­in­halt zu­rück­er­zeugt werden können. Im oben ab­ge­bil­de­ten Beispiel darf es also nicht möglich sein, aus dem erzeugten Hashwert „$P$Hv8rpLanT­SY­SA/2bP1xN.S6Mdk32.Z3“ das Passwort „susi_562#alone“ wie­der­her­zu­stel­len.

Un­fall­freie Hashwerte

Es darf niemals passieren, dass un­ter­schied­li­chen Ur­sprungs­da­ten ein iden­ti­scher Hashwert zu­ge­ord­net wird. Jede Eingabe muss einen anderen Hashwert erzeugen. Wenn das ge­währ­leis­tet ist, spricht man auch von einer kryp­to­gra­fi­schen Hash­funk­ti­on. In der obigen Abbildung gibt es keinerlei iden­ti­sche Hashwerte, somit auch keine Kol­li­sio­nen („Unfälle“) zwischen den erzeugten Daten. Für das Vermeiden solcher Kol­li­sio­nen gibt es wei­ter­ge­hen­de Tech­no­lo­gien.

Hash­funk­ti­on mit Über­schall

Wenn die Um­wand­lung von Eingaben in einen Hashwert viel Zeit benötigt, wäre das Verfahren un­ge­eig­net. Die Hash­funk­ti­on muss also sehr schnell arbeiten. In Da­ten­ban­ken werden Hashwerte in so­ge­nann­ten Hash­ta­bel­len abgelegt, um den schnellen Zugriff zu ge­währ­leis­ten.

Was ist der erzeugte Hashwert?

Der mittels Hash­funk­ti­on erzeugte Hashwert hat eine feste Länge, die durch die ver­wen­de­te Hash-Tech­no­lo­gie fest­ge­legt ist. Dabei ist die Zei­chen­men­ge des Ein­ga­be­werts un­er­heb­lich; es wird immer die gleiche Anzahl an Zeichen aus­ge­ge­ben. Welche Zeichen zu­ge­las­sen sind, ist innerhalb der Hash­funk­ti­on definiert.

Somit ist der Hashwert das Ergebnis, das mit der Hash­funk­ti­on und einem Hash­al­go­rith­mus berechnet wurde. Für den Hashwert wird auch der Begriff „Fin­ger­print“ verwendet. Das sym­bo­li­siert die Ein­zig­ar­tig­keit eines jeden Hash­wer­tes, ver­gleich­bar mit der Ein­zig­ar­tig­keit des mensch­li­chen Fin­ger­ab­drucks. Bei Ver­wen­dung der Klein­buch­sta­ben „a“ bis „f“ und der Zahlen „0“ bis „9“ bei einer Länge des Hashwerts von 64 Zeichen bestehen 1.1579209e+77 Mög­lich­kei­ten, das bedeutet eine 70, gefolgt von 24 Nullen! Daran kann man ablesen, dass auch Zei­chen­ket­ten mit ge­rin­ge­rer Länge und/oder mehr be­nutz­ba­ren Zeichen einen brauch­ba­ren Fin­ger­ab­druck 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 Fin­ger­ab­druck „3a42c503953909637f78dd8c99b3b85ddde362415585afc11901bdefe8349102“.

Dem Befehl „hash“ wurde der Ver­schlüs­se­lungs­al­go­rith­mus „sha256“ für das Wort „apple“ zu­ge­wie­sen.

Hash­funk­ti­on und Webseiten

Bei der SSL-ver­schlüs­sel­ten Da­ten­über­tra­gung wird während der Anfrage beim Webserver das Ser­ver­zer­ti­fi­kat an den Browser des Nutzers gesendet. Dann wird mit einer Hash­funk­ti­on ein Sit­zungs­schlüs­sel erzeugt und zum Server gesendet, dort ent­schlüs­selt und geprüft. Wenn der Server den er­hal­te­nen Sit­zungs­schlüs­sel bestätigt, beginnt der ver­schlüs­sel­te HTTP-Da­ten­ver­kehr, also als HTTPS. Die dabei aus­ge­tausch­ten Da­ten­pa­ke­te sind ebenfalls ver­schlüs­selt, sodass ein Angriff auf den Da­ten­ver­kehr fast unmöglich ist.

Die Sit­zungs­schlüs­sel (Session-ID) werden aus ver­än­der­li­chen Daten eines Website-Besuchs, etwa IP-Adresse und Zeit­stem­pel, generiert und mit der URL über­tra­gen. Benötigt werden solche Session-IDs bei­spiels­wei­se, um Warenkorb-Nutzer eindeutig zu iden­ti­fi­zie­ren. Die Über­tra­gung mit der URL (www.domain.tld/index?sid=d4ccaf2627557c756a0762419a4b6695) wird kaum noch genutzt. Die Iden­ti­fi­zie­rung im Website-Header als Cookie hat sich mehr und mehr durch­ge­setzt.

Die temporäre Ablage von In­for­ma­tio­nen in Caches erfolgt ebenfalls durch mit Hashwerte ver­schlüs­selt, damit un­be­rech­tig­te Nutzer beim Einsehen des Caches keine Rück­schlüs­se auf die besuchten Webseiten und benutze Zugangs- oder Zah­lungs­da­ten ziehen können.

Auf ver­gleich­ba­re Art läuft die Kom­mu­ni­ka­ti­on zwischen FTP-Server und Client bei der Nutzung des SFTP-Pro­to­kolls ab.

SSL-Zer­ti­fi­kat kaufen
Sichern Sie sich Ihr SSL-Zer­ti­fi­kat
  • Ver­schlüs­selt die Website-Kom­mu­ni­ka­ti­on
  • Ver­hin­dert Si­cher­heits­war­nun­gen
  • Ver­bes­sert die Google-Plat­zie­rung

Schutz von ver­trau­li­chen Daten

Zu­gangs­da­ten für Web­ac­counts sind beliebte An­griffs­zie­le von kri­mi­nel­len Hackern. Ziel ist entweder die Störung des Betriebs einer Website, um bei­spiels­wei­se Einnahmen aus traf­fic­ba­sier­ter Werbung zu mindern oder an In­for­ma­tio­nen über hin­ter­leg­te Zah­lungs­mit­tel zu gelangen.

Am Beispiel einer WordPress-Seite ist zu abzulesen, dass ein Passwort immer ver­schlüs­selt hin­ter­legt ist. In Kom­bi­na­ti­on mit den ge­ne­rier­ten Si­cher­heits­schlüs­seln im System wird ein hoher Si­cher­heits­stan­dard erreicht. Das ist vor allem als Schutz gegen so­ge­nann­te Brute-Force-Attacken wichtig. Bei diesen Angriffen probiert ein Angreifer mittels einer eigens pro­gram­mier­ten Hash­funk­ti­on so lange Kom­bi­na­tio­nen durch, bis ein Treffer erzielt wird, der den Zugang er­mög­licht. Lange Pass­wör­ter mit hohen Si­cher­heits­stan­dards er­schwe­ren diese Angriffe, weil die benötigte Re­chen­leis­tung auf Seiten des An­grei­fers dafür ins Un­er­mess­li­che steigen kann. Hier nochmals der Hinweis: Ver­zich­ten Sie auf einfache Pass­wör­ter und verwahren Sie Zu­gangs­da­ten jeglicher Art sicher vor fremdem Zugriff!

Nach­rich­ten signieren

Der E-Mail-Verkehr geht über Server, die speziell auf diese Form der Nach­rich­ten­über­mitt­lung ab­ge­stimmt sind. Für die Da­ten­über­tra­gung kommen ebenfalls per Hash­funk­ti­on erzeugte Schlüssel zum Einsatz, um die Nach­rich­ten digital zu signieren.

Und so läuft der Nach­rich­ten­ver­sand mit einer digitalen Signatur ab:

  • Der Absender berechnet einen Hashwert aus seiner Nachricht und ver­schlüs­selt diesen mit seinem privaten Schlüssel (das ist die digitale Signatur).
  • Die Nachricht wird zusammen mit dem ver­schlüs­sel­ten Hashwert an den Empfänger gesendet.
  • Der Empfänger generiert einen Hashwert der er­hal­te­nen Nachricht und benutzt dazu dieselbe Hash­funk­ti­on. Darüber hinaus ent­schlüs­selt er den er­hal­te­nen Hashwert mit dem öf­fent­li­chen Schlüssel und ver­gleicht beide.
  • Wenn beide Werte über­ein­stim­men, kann der Empfänger davon ausgehen, dass die Nachricht auf dem Über­tra­gungs­weg nicht ma­ni­pu­liert wurde.

Bitte beachten Sie: Eine digitale Signatur ver­schlüs­selt nicht die Nachricht, sondern liefert einen Beweis für die In­te­gri­tät der Nachricht. Ver­trau­li­che Inhalte sollten zu­sätz­lich ver­schlüs­selt werden.

Wie hilft die Hash­funk­ti­on bei Such­funk­tio­nen?

Das Suchen in großen Da­ten­men­gen ist ein res­sour­cen­in­ten­si­ves 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 durch­fors­ten, kann das sehr viel Zeit und Re­chen­leis­tung kosten. Um das zu ver­ein­fa­chen, wird für jedes Da­ten­ob­jekt ein Hashwert berechnet, der einen Eintrag eindeutig iden­ti­fi­ziert. Zum Suchen in der Tabelle wird aus dem Such­be­griff wieder ein Hashwert errechnet, der dann mit den vor­lie­gen­den Hash­wer­ten ver­gli­chen wird. Es wird also eine ein­ge­grenz­te Anzahl von Buch­sta­ben, Ziffern und Zeichen mit vor­lie­gen­den Buch­sta­ben, Ziffern und Zeichen ab­ge­gli­chen. Das geht we­sent­lich ef­fi­zi­en­ter von­stat­ten als die Suche in allen vor­han­de­nen Feldern der Da­ten­ta­bel­le, bei­spiel­wei­se nach allen Vornamen, die mit „Ann“ beginnen.

Fazit

Hash­funk­tio­nen werden zur Ver­bes­se­rung der Si­cher­heit in der elek­tro­ni­schen Kom­mu­ni­ka­ti­on benutzt. Hier haben sich in­zwi­schen sehr hoch­ent­wi­ckel­te Standards etabliert. Aber auch die Hacker schlafen nicht, sodass mit immer aus­ge­feil­te­ren An­griffs­tech­no­lo­gien zu rechnen ist.

Zum Hauptmenü