TDWI Blog

Hashing

Im Datenbereich stolpert man immer öfter über den Begriff „Hashing“. Im Data Vault 2.0 wird gehasht. Passwörter werden zusammen mit einem sogenannten Salt gehasht und als Hashwert in der Datenbank gespeichert. Es gibt Hash Joins.. Aber was genau ist Hashing?

Hashing ist der Prozess, bei dem aus einer Eingabe beliebiger Länge mittels einer Hashfunktion bzw. einem Hashalgorithmus ein Hashwert errechnet wird, der eine feste Länge hat. Die Eingabe kann alles Mögliche sein: Ein String, Zahlen, Bytes oder Bits. Die Länge der Eingabe ist beliebig. Die mathematische Funktion, die zum hashen genutzt wird, wird Hashfunktion genannt. Es gibt verschiedene mathematische Verfahren, die für Hashfunktionen verwendet werden. Die mathematischen Details hierzu werden in diesem Beitrag aber ausgeklammert. Hashalgorithmen werden die Implementierung einer Hashfunktion als Algorithmus genannt. Das Ergebnis einer Hashfunktion wird als Hashwert bezeichnet. Hashfunktionen sind deterministisch. Das heißt: dieselbe Eingabe erzeugt immer denselben Hashwert. In der Praxis werden hauptsächlich kryptographische Hashfunktionen verwendet. Diese sind eine besondere Klasse von Hashfunktionen und erfüllen besondere Voraussetzungen:

• Sie sind Einwegfunktionen: Die Eingabe kann nicht aus einem Hashwert „zurückerrechnet“ werden.
• Sie sind kollisionsresistent: Zwei unterschiedliche Eingaben sollten keinen gleichen Hashwert erzeugen.
Avalanche effect: Kleine Änderungen an der Eingabe sollten den erzeugen Hashwert stark verändern.

Veranschaulichung an einem Beispiel

Dieses Beispiel zeigt, was dies in der Praxis bedeutet: In den ersten drei Fällen wurde die Eingabe „Dieter mag Kartoffeln“ nur geringfügig verändert. Einmal ist am Ende ein Punkt, dann ein Ausrufezeichen und im dritten Fall gibt es sogar gar kein Satzzeichen. Trotzdem ändert sich der Hashwert jedes Mal signifikant. Dies ist der oben genannte avalanche effect, der von SHA256, einem kryptographischen Hashalgorithmus, erfüllt wird. Außerdem ist erkennbar, dass in allen fünf Fällen der Hashwert eine fixe Länge von 64 Zeichen hat, trotz unterschiedlicher Eingaben.

Da der Hashalgorithmus deterministisch ist, kann das Beispiel jederzeit reproduziert werden, beispielsweise online unter https://t1p.de/4toch. Jede Anwendung des SHA256-Algorithmus auf den Input „Dieter mag Kartoffeln“ wird exakt denselben Hashwert wie im Beispiel erzeugen.

Anwendungsfälle

  • Beim Laden von Data Vault 1.0 Elementen (Hubs, Links und Satelliten etc.) werden immer zuerst die Hubs aus der Quelle geladen. Alle weiteren Elemente leiten ihren Primärschlüssel dann aus den Hubs ab, weshalb diese erst nach den Hubs geladen werden können. Bei Data Vault 2.0 hingegen werden die Business Keys aus der Quelle direkt gehasht, um den Primarschlüssel zu bilden, der so in jedem Data Vault Element verwendet werden kann. Somit entfallen die Abhängigkeiten der weiteren Data Vault Elemente zu den Hubs und es können alle Elemente direkt und parallel aus der Quelle geladen werden. Dies führt zu deutlich kürzeren Ladezeiten und einer höheren Performance. Diese Abhängigkeitsproblematik von Hubs im Data Vault 1.0 gilt ebenso für Links und Linksatteliten.
  • Ein weiterer Anwendungsfall für Hashing ist das von Apple praktizierte Scannen von Fotos in der iCloud nach Material mit Bezug auf Kindesmissbrauch. Hier werden nicht die Fotos direkt verarbeitet, sondern die Hashwerte der Fotos. Diese werden mit den Hashwerten von bereits bekanntem Material in einer entsprechenden Datenbank verglichen. Gibt es Übereinstimmungen, dann werden diese manuell von den Mitarbeitenden überprüft. Bestätigt sich hierdurch der Verdacht, Material mit Bezug zu Kindesmissbrauch gefunden zu haben, wird der Fall an die entsprechenden Behörden weitergeleitet.

Der Beitrag spiegelt die Meinung der Autoren wider und ist keine allgemeingültige Meinung des TDWI. Als TDWI bieten wir die Plattform, alle Themen und Sichtweisen zu diskutieren. *

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.