Was ist ein Hash?
Diese Frage soll dieser Beitrag im Detail beantworten.
+ praktische Anwendungsgebiete (Blockchain) mit Alternativen
Starten wir!
Was ist ein Hash?
Ein Hash ist ein Algorithmus, der einen Bit-String beliebiger Länge auf eine bestimmte Länge komprimiert. Ein Bit-String kann eine Nachricht, ein Dokument oder eine Multimedia-Datei sein.
Ändert der Kriminelle nur einen Buchstaben, dann ändert sich der Hash deutlich (Lawienen-Effekt). Das Rückrechnen von einem Hash zu einer möglichen Ursprungsnachricht soll praktisch nicht möglich sein.
- Ein Hash eignet sich, um zu überprüfen, ob ein Dritter ein Dokument bei der Speicherung oder Übertragung geändert hat.
- Hashes nutzen Authentifizierungsverfahren, um Passwörter zu überprüfen. Auf der Festplatte und in den Datenbanken sollten die Passwörter nur in Form von Passwort-Hashes gespeichert sein. Der Nutzer gibt sein Passwort in die Anmelde-Maske ein, in der die Software das Passwort zu einem Hash umwandelt.
Rein theoretisch gibt es unendlich viele Passwörter, die den gleichen Hash haben. Praktisch ist ein solcher Angriff sehr unwahrscheinlich, wenn nicht der Hash sich bereits in einer Rainbow-Tabelle befindet. - Krypto-Währungen brauchen einen Hash-Algorithmus, um die Verkettung zu erzeugen. Lese weiter unter „Warum braucht die Blockchain“ Hashes.
Welche Hashs sind sicher?
Die Sicherheit eines Hashs hängt von der Länge des Bit-Strings ab.
Steffen Lippke
Je länger, desto schwerer hat es der Hacker eine Datei so zu manipulieren, sodass der gleiche Hash entsteht. Die Cryptographen unterscheiden 3 Arten von Angriffen bzw. Angriffsversuchen:
- Kollision: Der Hacker versucht zwei Dateien herzustellen, die den gleichen Hash haben. Der Angreifer kann beide Dateien auswählen.
- Urbild: Der Hacker hat einen Hash gegeben. Jetzt versucht der Kriminelle eine Datei zu finden, welchen den gleichen Hash hat.
- Zweites Urbild: Der Hacker versucht eine Datei gegeben. Er versucht eine Datei zu erzeugen, die den gleichen Hash hat.
Sicher sind Hash-Funktionen, die mindestens 200-Bits haben (Stand September 2024). Ein weiteres Ausschlusskriterium für einen untauglichen Hash-Algogirhtmus ist, dass dieser nicht reproduzierbare Hashs erzeugt z. B. mit einer Zufallskomponente.
Sicher Hashes
SHA-3-Familie (Keccak)
Das National Insititut of Standards and Technologies (NIST) hat in 2015 den Kekkak Algorithmus als den nächsten sicheren Hash-Algoithmus erklärt (SHA). Dieser arbeitet besonders Hardware-effizient und ermöglicht mit der Schwamm-Technik unterschiedlich lange Hash-Ausgaben.
Unsichere Hashs
- MD5 / SHA-1 / CRC: Diese gelten als veraltet wegen der zu geringen Länge.
- SHA-2: Dieser Algorithmus gilt offiziell noch als sicher. Aber der SHA-3 ist auf den Markt und Hardware-effizienter.
Viele Informatiker nutzen nicht nur einen Hash für eine Datei, sondern Hashen die Datei mit verschiedenen Algorithmen, um eine noch höhere Sicherheit zu gewährleisten.
Wie funktioniert ein Hash?
Im Wesentlichen gibt es zwei Grund-Algorithmen: Merkle Damagrad oder Sponge. Die Implementierungen in der Realität basieren auf diesen Grund-Konzepten.
Der ultra-starke Kompressor: Merkle-Damgard
- Der Algorithmus teilt die Datei in gleich Lange Blöcke und misst die Größe der Gesamtdatei.
- Die Größe in Bytes wird im letzten angefügten Block gespeichert.
- Dann folgt eine XOR mit einem Initialisierungsvektor (ein frei ausgedachter Bitstring von 0en und 1en) mit dem ersten Block. Im zweiten Schritt durchläuft der Block eine Funktion, die die Bitreihenfolge mischt und transformiert. Das Ergebnis dient als Initialisierungsvektor für den nächsten Block.
- Dieser Vorgang wiederholt der Algorithmus, bis keine Blöcke mehr zu bearbeiten sind.
Der unendliche Schwamm: Sponge
Der Schwamm-Algorithmus „saugt“ in der ersten Phase blockweise die Datei auf und gibt am Ende in der „Drück-Phase“ einen Bit-String aus, der für diese Datei typisch ist. Der Algorithmus mischt und transformiert die Bits auf dem Vektor bei jedem Saug-Schritt.
Je länger dieser Vektor ist, desto sicherer ist das Verfahren. Jeder Drück-Schritt generiert neue Bits, die der Algorithmus an den Ergebnis-Hash anfügt.
Dieses Design ermöglicht es, beliebig lange Hashes zu erzeugen.
Anwendung: Warum braucht die Blockchain Hashes?
Blockchains sind eine dezentrale Datenbank, welche die Integrität der Inhalte sicherstellen. Dezentral bedeutet, dass keine einzelne Person eine Hoheit über den Speicher verfügt, sondern jeder eine lokale Kopie speichern kann. Eine Blockchain besteht aus Datentöpfen (den Blöcken), die Transaktionen oder andere Dokumente speichern.
Ein Hash-Algorithmus berechnet von jedem Block der Blockchain einen Hash.
Steffen Lippke
Der berechnete Hash von Block X ist im Folgeblock X+1 gespeichert. Ändert jemand einen Block, dann ändert sich auch der Hash des Blocks. Jeder Teilenehmer kann die Blöcke seiner Blockchain mit den Blöcken der kriminellen Person vergleichen und bemerkt die Änderung anhand der Hashes sofort.
Alternativen zum Hash
Die Informatik bietet andere (schwächere) Alternativen zum Hash an:
#1 Quersumme
Die Quersumme von einer Million ist 1, aber auch von 10 und 100. Eine Quersumme bietet Dir eine schnelle Überprüfung von den Inhalten an. Diese ist sehr einfach fälschbar.
#2 Prüfsumme
Eine CRC-Prüfsumme ist effizient zu berechnen, aber wegen der geringen Länge kann jeder Kriminelle schnell eine Datei erzeugen, die den gewünschten CRC generiert. TCP nutzt CRC-Summen, um Pakete auf die Vollständigkeit zu prüfen. Falls ein Paket beschädigt ist, fragt der Client das Paket nochmals vom Server an.
#3 Error Correcting Codes (ECE)
Das Gleiche gilt für ECE-Codes. Diese können Fehler korrigieren, aber diese Codes sind für einen Kriminellen eine nicht nennenswerte Hürde. ECE setzten Computer ein, um Fehler im Bitstring bei der gestörten Übertragung oder z.B. in einem RAM-Riegel zu korrigieren
Die analoge Welt hält Konzepte bereit, die wie die Hashs die Integrität sicherstellen
#4 Nadeldrucker / Ausdrucke
Alte Bankautomaten und bei manchen Servern findet man noch Nadeldrucker. Diese stanzen bzw. drucken Log-Nachrichten in Papier.
Festplatten haben den großen Nachteil, dass jeder beliebige IO-Prozess dieselben Bits überschreiben kann. Wenn eine Bitstelle auf der Festplatte 2-5x überschrieben ist, kann kaum eine Software erkennen, was vor dem Überschreiben auf der Festplatte stand. Die Log-Dateien soll das Leben den Hackern schwer machen. Forensiker können aus den Logs die Spuren der Hacker ablesen und Hinweise auf ihren Ursprung finden (Lokardsche Austauschprinzip).
Wenn ein Papier einmal gedruckt ist, dann ist die Fälschung durch einen Kriminellen von Remote nahezu unmöglich. Das Papier reißt ab, wenn der Drucker das Papier einziehen und überschreiben sollte.
Die Kriminellen könnten versuchen z.B. den Server durch eine Malware in Brand zu setzen, um die Ausdrucke zu vernichten. Sollten die Hacker so weit gehen, sollte eine Edelgas-Löschung im Rechenzentrum das schlimmste verhindern.
#5 Notar mit Grundbuch
Die Besitztümer der Deutschen sind in Grundbüchern eingetragen. Der Vorteil am Grundbuch ist, dass nur eine begrenzte Personenzahl Zugriff hat. Zweitens ist die Dokumentensammlung in einem Archiv gut geschützt (Brand, Wetter, Katastrophen, Einbruch). Ein Notar kann die Integrität eines Dokumentes sicherstellen, wenn die physischen Sicherungen bestehen bleiben.