Zuletzt aktualisiert: 15. April 2021

In der IT-Sicherheit ist Hashing mittlerweile unersetzlich geworden. Klartext, wie zum Beispiel Passwörter und personenbezogene Daten können mittels einer Hashing Funktion in einen Code umgewandelt werden. Anders als bei der Verschlüsselungsmethode, kann der Code nicht in die ursprünglichen Daten zurückgewandelt werden. So sind alle Nutzerdaten vor Hackerangriffen sicher.

In diesem Artikel erfährst Du alles Wichtige, was Du über Hashing wissen musst. Wir erklären Dir genau, worum es sich bei Hashing handel, wie es funktioniert und was es dabei zu beachten gibt. Außerdem wirst Du wichtige Anwendungsbereiche kennenlernen.




Das Wichtigste in Kürze

  • Mittels Hash-Funktionen werden Daten in Codes umgewandelt.
  • Da Hashing ein “Einwegverfahren” ist, können diese Codes nicht in die ursprünglichen Daten zurückgewandelt werden. So können die Daten nicht eingesehen werden und sind vor Angriffen geschützt.
  • Mit Salt und Pepper können Hashs zusätzlich geschützt werden.

Hintergründe: Was Du über Hashing wissen solltest

Im Folgenden werden wir Dir die wichtigsten Fragen rund um das Hashing beantworten. Du wirst erfahren, was es mit dem Hashing auf sich hat, wie es funktioniert und in welchen Bereichen es angewendet wird. Außerdem erklären wir Dir, welche Methoden Hashs zusätzlich absichern.

Was ist Hashing?

Beim Hashing wird ein Input an Daten in eine Hash-Funktion eingegeben, sodass ein Daten-Output herauskommt. Die eingegebene Datenmenge kann dabei größer sein, als die ausgegebene Zielmenge.

Die Eingabemenge kann unterschiedlich lang sein, die Zielmenge hat immer die gleiche Länge. Nur unterschiedliche Hash-Funktionen erzeugen unterschiedlich lange Zielmengen.

Neben konventionellen Hash-Funktionen gibt es auch kryptografische Hash-Funktionen. Kryptografische Hash-Funktionen bilden den Kern von Krypto-Währungen, wie zum Beispiel Bitcoins. Beide Arten von Funktionen haben gemeinsam, dass sie bei gleich bleibender Eingabe immer denselben Output erzeugen.

Mit Hash-Funktionen werden aus Daten Codes generiert. Durch die Einwegfunktion können die Codes nicht wieder zurückgewandelt werden und die Daten bleiben geheim. (Bildquelle: Jae Rue / Pixabay)

Die Algorithmen, die beim Hashing verwendet werden, sorgen dafür, dass es sehr aufwendig ist aufgrund der Zielmenge zu erraten, was die Eingabemenge war. Andererseits ist es sehr einfach aus der Eingabemenge die Zielmenge zu bekommen. Die Hash-Algorithmen haben also eine Einwegfunktion. Das unterscheidet sie von herkömmlichen Verschlüsselungen(1). Sie können leichter geknackt werden(2).

Nun besteht immer noch die Frage, wozu man Hashing eigentlich braucht. Es wird zum Beispiel in der IT-Sicherheit verwendet. Hier wird es genutzt, um Passwörter auf sichere Weise zu speichern. Passwörter als reinen Text oder nur leicht verschlüsselt zu speichern wäre zu unsicher, denn sie könnten leicht geknackt und die zugehörigen Konten gehackt werden(2).

Wie funktioniert eine Hash-Funktion?

Wie bereits erklärt, kann der Input, also die Eingabemenge, in eine Hash-Funktion unterschiedlich lang sein. Der Output, also die Zielmenge, bleibt immer gleich. Allerdings variiert die Länge der Zielmenge je nach verwendeter Hash-Funktion.

Das wollen wir Dir an einem praktischen Beispiel zeigen. Wir geben die Begriffe “Finance”, “finance” und “financial” einmal in den SHA-256-Algorithmus und einmal in den SHA-1-Algorithmus ein und vergleichen die Ergebnisse(3). SHA steht für Secure Hash Algorithm.

Eingabemenge in SHA-256-Algorithmus Zielmenge
Finance b696d75511dc16f2b52563e3113a498311a79866f4672862197aa9a8c5c0da12
finance eab762a03fd979a04cc4706e6536d382bc89d2d1356afcd054a16b2235ecd471
financial fed0e4820af42571c936e28300ccb88026f72e075232358cd1fae4e802fe902b

Wie Du siehst verändert schon alleine der Wechsel von einem Großbuchstaben zu einem Kleinbuchstaben in der Eingabemenge die gesamte Zielmenge. Du kannst auch deutlich erkennen, dass eine Eingabemenge in der Länge variieren kann. Die Größe der Zielmenge bleibt dabei aber immer gleich. Der SHA-256-Algorithmus erzeugt Zielmengen mit 256 Bit (64 Zeichen).

Eingabemenge in SHA-1-Algorithmus Zielmenge
Finance 1b48d3f014245f7c149ce9b77cd815abb0f1994b
finance a1cf62af599e2c2403cd6542a3bbe8f828511be8
financial 43d4991437f61db19aa26b581bd2d4f06d46b104

Sieh Dir wieder die Eingabe- und Zielmengen in der Tabelle genau an. Du kannst wieder erkennen, dass der Wechsel von einem großen F zu einem kleinen f in der Eingabemenge ausreicht, um die Zielmenge zu verändern. Du kannst außerdem wieder sehen, dass die Länge der Eingabemenge unterschiedlich ist, die der Zielmenge aber gleich bleibt.

Wenn Du die unterschiedlichen Zielmengen der Tabellen vergleichst, siehst Du, dass der SHA-1-Algorithmus eine kleinere Zielmenge hat, als der SHA-256-Algorithmus. Seine Ausgabe beträgt 160 Bit (40 Zeichen).

Weitere Hash-Funktionen, die derzeit als sicher gelten und somit für das Speichern von Passwörtern verwendet werden können sind: Argon2, Bcrypt, Scrypt, PBKDF2(2). Argon2 hat momentan den sichersten Algorithmus(4).

Kryptografische Hash-Funktionen

Kryptografie beschäftigt sich mit der Verschlüsselung von Informationen mithilfe mathematischer Theorien(5). Wir haben bereits erwähnt, dass es neben herkömmlichen Hash-Funktionen auch kryptografische Hash-Funktionen gibt. Sie müssen diese drei Eigenschaften erfüllen, um als solche zu gelten(6):

  • Kollisionssicherheit
  • Einwegfunktion
  • Zweiter Vorbildwiderstand

Was diese Eigenschaften im Einzelnen bedeuten, wird in den nachfolgenden Abschnitten erklärt.

Kollisionssicherheit

Es ist theoretisch möglich, dass unterschiedliche Eingabemengen im Input zum selben Hash-Wert im Output führen. Liegt ein solcher Fall vor, spricht man von einer Kollision. Eine Hash-Funktion gilt als kryptografische Hash-Funktion, wenn ausgeschlossen werden kann, dass es bei zwei unterschiedlichen Eingabemengen zu einer Kollision kommt.

Kollisionssicherheit ist gegeben, wenn ausgeschlossen werden kann, dass zwei unterschiedliche Eingabemengen denselben Output haben.

Die SHA-Algorithmen SHA-2 und SHA-3 gelten momentan als kollisionssicher. Dazu gehört auch die Hash-Funktion SHA-256. Bei den Funktionen SHA-0 und SHA-1 wurden jedoch Kollisionen gefunden. Sie gelten darum nicht mehr als sicher.

Einwegfunktion

Bei kryptografischen Hash-Funktionen darf es nicht möglich sein, dass die Eingabemenge ermittelt werden kann, wenn die Zielmenge bekannt ist. Diese Eigenschaft wird auch Vorbildresistenz oder Vorbildwiderstand genannt.

Der Vorbildwiderstand ist sehr wichtig in der IT-Sicherheit, da so zum Beispiel Passwörter ohne Klartextschreibweise, gespeichert werden können. Der Hash beweist die Korrektheit des Inhalts, ohne den Inhalt preis zu geben. So können Daten geschützt gespeichert werden.

Zweiter Vorbildwiderstand

Ein zweiter Vorbildwiderstand-Angriff bedeutet, dass nach einer weiteren Eingabemenge gesucht wird, die dieselbe Zielmenge erzeugt, wie eine bereits bekannte Eingabemenge.

Anstatt nach zwei zufälligen Eingabemengen zu suchen, die dieselbe Zielmenge erzeugen, ist eine bereits bekannt und es wird nach einer zweiten mit demselben Output gesucht. Der zweite Vorbildwiderstand verhindert also das Ausfindigmachen einer Kollision zu einem bereits bekannten Input.

Welche Anwendungsmöglichkeiten gibt es?

Sehr große Mengen an Daten können mit Hash-Funktionen auf weniger Zeichen reduziert werden. Durch die bereits erklärte Kollisionsresistenz kann so eine Art elektronischer Fingerabdruck erzeugt werden. Hash-Funktionen finden darum in den folgenden Bereichen Anwendung(6):

  • Prüfsummen
  • Digitale Signatur
  • Speichern von Passwörtern
  • Data Hashing

Im Folgenden gehen wir auf die verschiedenen Anwendungsmöglichkeiten genauer ein. Die Anwendungsmöglichkeiten von Hash-Funktionen sind sehr breit gefächert. Unsere Liste soll Dir einen Einblick geben, welche Möglichkeiten es für ihre Anwendung geben kann.

Prüfsummen

Mit Hash-Funktionen können Manipulationen bei Downloads aufgedeckt werden. Wenn Du zum Beispiel ein Programm herunterladen willst, möchtest Du Dir dabei sicher sein können, dass es sich um das Original handelt, und es während dem Download Vorgang nicht zu Manipulationen kommt.

Um das zu verhindern, kannst Du vor dem Herunterladen einen Hash-Wert des Programms berechnen. Dieser dient dann als Fingerabdruck. Nach dem Download berechnest Du den Hash-Wert noch einmal mit derselben Funktion. Sind beide Werte gleich, handelt es sich um das Original.

Digitale Signatur

Eine digitale Signatur soll die Integrität einer Nachricht bestätigen. Der Versender einer digitalen Nachricht kann diese mittels einer Hash-Funktion in einen Hash-Wert umwandeln. Diesen Wert verschlüsselt er zusätzlich mit einem privaten Schlüssel. Anschließend schickt er sowohl die Nachricht als auch den verschlüsselten Wert an den Empfänger.

Der Empfänger kann beide Codes vergleichen, um die Integrität einer Nachricht zu bestätigen.

Der Empfänger kann nun folgendes tun, um sicherzugehen, dass die Nachricht, die er liest, nicht beim Versenden manipuliert wurde. Er kann den verschlüsselten Wert mit einem offiziellen Schlüssel entschlüsseln, so erhält er den zuvor berechneten Hash-Wert der Nachricht. Dann kann er die Nachricht selbst mit derselben Hash-Funktion, die auch der Versender verwendet hat, berechnen.

Nun kann der Empfänger beide Werte miteinander vergleichen. Stimmt der Wert, den er bei seiner Berechnung erhält, mit dem Wert, den er durch die Entschlüsselung des mitgesendeten Wertes bekommt, überein, handelt es sich um die Originalnachricht.

Speichern von Passwörtern

Dass Hash-Funktionen zum Speichern von Passwörtern genutzt werden, wurde bereits an verschiedenen Stellen erwähnt. Würden Passwörter als Klartext gespeichert, könnten sie bei einem Angriff gelesen werden. Das kann nicht passieren, wenn Passwörter mittels einer Hash-Funktion in einen Hash-Wert umgewandelt werden und nur dieser Wert gespeichert wird.

Möchte sich ein Benutzer in das System einloggen, gibt er sein Passwort ein. Aus dem eingegeben Passwort wird mit derselben Funktion wie zuvor ein Hash-Wert erstellt. Der Nutzer ist authentifiziert, wenn dieser neu ermittelte Wert und der gespeicherte Wert übereinstimmen.

Data Hashing

Data Hashing kann zum Beispiel bei Onlineshops Anwendung finden. Alle personenbezogenen Daten, wie zum Beispiel der Name oder die Mail-Adresse des Users, werden gehasht. Anstatt des Klartextes wird nur der Hash gespeichert.

So kann der Nutzer des Onlineshops anonym bleiben, während seine Daten, wie zum Beispiel seine Vorlieben, verwendet werden können. Diese Informationen können für ein noch zielgerichteteres Targeting verwendet werden, während der Datenschutz weiterhin gewährleistet ist(7).

Was haben Salz und Pfeffer mit Hashing zu tun?

Um Datenbanken und deren Inhalte, zum Beispiel Passwörter, vor Angriffen von Hackern zu schützen, können neben dem Hashing noch weitere Sicherheitsmaßnahmen ergriffen werden.

Zu diesen Sicherheitsmaßnahmen gehört der Einsatz von Salts. Salts sind zufällig generierte Nummern, von denen jeder Nutzer beziehungsweise jedes Passwort eine zugewiesen bekommt. Jeder Salt ist einzigartig.

Das Passwort wird mit dem Salt kombiniert und dann erst durch die Hash-Funktion zu einem Hash umgeformt. So werden Kollisionen vermieden und es können nie zwei Passwörter denselben Hash erzeugen. Außerdem wird es Hackern so erschwert, die Passwörter der Nutzer zu knacken(8).

Salts sind zufällig generierte, einzigartige Kombinationen, die die Hashs noch sicherer gestalten. Um die Salts zu sichern kann zusätzlich die Pepper-Methode angewendet werden. (Bildquelle: Darwin Laganzon / Pixabay)

Bei den Salts gilt es einiges zu beachten, damit sie sicher vor einem Hacking-Angriff schützen können. Jeder Salt muss einzigartig sein. Kommt ein Nutzer hinzu, oder ändert ein Nutzer sein Passwort, muss ein neuer Salt vergeben werden.

Jeder Salt muss per Zufallsgenerator erzeugt werden. Salts müssen mindestens die gleiche Länge haben, wie die Zielmenge der Hash-Funktion, die verwendet wird. Für die Salts sollte ein Key Stretching Verfahren verwendet werden. So werden die Hashs rechenintensiver und Cracking Softwares benötigen mehr Zeit, um Hashs zu berechnen(8).

Zusätzlich zu Salts können Passwörter auch noch durch Pepper geschützt werden. Pepper ist eine zufällig generierte Zeichenfolge von 32 Zeichen. Anders als der Salt ist der Pepper für alle Passwörter derselbe. Das Ziel des Pepper liegt darin, dem Fall vorzubeugen, dass ein Hacker die Datenbank knackt. Ohne den Pepper, können die Hashs der Passwörter trotzdem nicht geknackt werden.

Hash-Funktionen und Mining

Hash-Funktionen spielen auch beim Mining von Bitcoins eine wichtige Rolle. Das Mining von Blocks wird durch Algorithmen vollzogen. Ein Miner muss dabei einen Hash erzeugen, der am Anfang eine gewisse Anzahl an Nullen stehen hat. Nur so kann er einen Block validieren.

Diese Blocks werden weiterhin in Blockchains abgespeichert. Auch hierbei kommt das Hashing wieder zum Einsatz. In einem Block werden der Reihe nach Daten gespeichert, die nicht wieder verändert werden können. Schließlich wird ein Block als Hash gespeichert und dieser Hash einem neuen Block vorne angestellt.

Bis dieser ebenfalls als Hash gespeichert wird und immer so weiter. Auf diese Weise entsteht eine Blockchain und es können unendlich viele Daten gespeichert werden(9).

Fazit

Hashing ist ein Prozess, bei dem eine Menge an Daten, eine Eingabemenge, durch eine Funktion in einen Code, die Zielmenge, umgewandelt wird. Egal wie groß die Eingabemenge ist, die Zielmenge hat immer die gleiche Größe.

Nur die Verwendung einer anderen Funktion verändert die Größe der Zielmenge. Auf diese Weise kann eine große Datenmenge platzsparend gespeichert werden. Außerdem wird kein Klartext, sondern ein Code gespeichert, wodurch alle Daten geschützt sind.

Hashing wird vor allem in der IT-Sicherheit eingesetzt, um zum Beispiel Passwörter von Nutzern sicher zu speichern. Da Hash-Funktionen immer wieder Sicherheitslücken aufweisen, gibt es verschiedene Möglichkeiten, die Hashs zusätzlich sicherer zu machen. Dazu zählen zum Beispiel die Salt- und Pepper-Methoden.

Bildquelle: 151917772/ 123rf

Einzelnachweise (9)

1. Secure Insider. Was ist ein Hash? Abgerufen am 29.03.2021.
Quelle

2. Computerwoche. Was ist Hashing? Abgerufen am 29.03.2021.
Quelle

3. Online Tools. Abgerufen am 30.03.2021.
Quelle

4. Golem. Hashfunktion Argon2 gewinnt Wettbewerb. Abgerufen am 29.03.2021.
Quelle

5. Binance Academy. Cryptography. Abgerufen am 30.03.2021.
Quelle

6. Dr. Datenschutz. Hashwerte und Hasfunktionen einfach erklärt. Abgerufen am 29.03.2021.
Quelle

7. Adzine. What the hack is...Data -Hashing? Abgerufen am 30.03.2021.
Quelle

8. Code Bude. Grundlagen: Sicheres Passwort Hashing mit Salts. Abgerufen am 30.03.2021.
Quelle

9. Adesso. Wie funktioniert eine Blockchain. Abgerufen am 30.03.2021.
Quelle

Warum kannst du mir vertrauen?

Secure Insider. Was ist ein Hash? Abgerufen am 29.03.2021.
Gehe zur Quelle
Computerwoche. Was ist Hashing? Abgerufen am 29.03.2021.
Gehe zur Quelle
Online Tools. Abgerufen am 30.03.2021.
Gehe zur Quelle
Golem. Hashfunktion Argon2 gewinnt Wettbewerb. Abgerufen am 29.03.2021.
Gehe zur Quelle
Binance Academy. Cryptography. Abgerufen am 30.03.2021.
Gehe zur Quelle
Dr. Datenschutz. Hashwerte und Hasfunktionen einfach erklärt. Abgerufen am 29.03.2021.
Gehe zur Quelle
Adzine. What the hack is...Data -Hashing? Abgerufen am 30.03.2021.
Gehe zur Quelle
Code Bude. Grundlagen: Sicheres Passwort Hashing mit Salts. Abgerufen am 30.03.2021.
Gehe zur Quelle
Adesso. Wie funktioniert eine Blockchain. Abgerufen am 30.03.2021.
Gehe zur Quelle
Testberichte