Was ist Hashing? Erklärung für Krypto & Blockchain
Crypto Fundamental Analysis

Was ist Hashing? Erklärung für Krypto & Blockchain

Basics

Hashing ist ein Verfahren zur Erzeugung einer Ausgabe fester Größe aus einer Eingabe variabler Größe mithilfe mathematischer Formeln, die als Hash-Funktionen bezeichnet werden. Es gibt sowohl konventionelle als auch kryptografische Hash-Funktionen, wobei letztere im Kern von Kryptowährungen stehen. Diese Funktionen ermöglichen es Blockchains und anderen verteilten Systemen, ein hohes Maß an Datensicherheit und Integrität zu erreichen.

Hash-Funktionen sind deterministisch, das heißt, bei gleicher Eingabe erzeugen sie stets die gleiche Ausgabe. Diese Ausgabe wird auch als Digest oder Hash bzw. Hashwert bezeichnet.

Kryptografische Hash-Algorithmen sind als Einwegfunktionen ausgelegt, was bedeutet, dass sie ohne erheblichen Rechenaufwand und Ressourcen schwer umkehrbar sind. Es ist relativ einfach, aus einer Eingabe eine Ausgabe zu erzeugen, doch die Rückwärtsrichtung — also aus dem Hash allein die ursprüngliche Eingabe zu rekonstruieren — stellt eine Herausforderung dar. Die Sicherheit einer Hash-Funktion bemisst sich meist daran, wie schwierig es ist, die Eingabe zu finden: Je höher die erforderliche Rechenleistung, desto sicherer die Funktion.

How Does a Hash Function Work? 

Hash-Funktionen liefern Ausgaben in festgelegten Größen, die je nach Algorithmus variieren, aber für den jeweiligen Algorithmus konstant bleiben. Zum Beispiel erzeugt SHA-256 stets eine 256-Bit-Ausgabe, während SHA-1 nur einen 160-Bit-Digest liefert. Der Hash selbst besteht aus einer Zeichenfolge aus Buchstaben und Zahlen.

Schon eine geringfügige Änderung der Eingabe, etwa die Groß-/Kleinschreibung des ersten Buchstabens, führt zu einem völlig anderen Hashwert. Trotz dieser Sensitivität hat SHA-256 immer eine feste Größe von 256 Bit (oder 64 Zeichen), unabhängig von der Größe der Eingabe. Ebenso spielt es keine Rolle, wie oft dieselben Worte durch den Algorithmus laufen; die Ausgabe bleibt gleich. Bei einem anderen Algorithmus wie SHA-1 würden dieselben Eingaben jedoch zu anderen Hashwerten führen.

Wichtig ist, dass SHA für Secure Hash Algorithms steht — eine Familie kryptografischer Hash-Funktionen, zu der die SHA-0- und SHA-1-Algorithmen sowie die SHA-2- und SHA-3-Gruppen gehören. Der SHA-256-Algorithmus gehört zur SHA-2-Gruppe, ebenso wie SHA-512 und weitere Varianten. Aktuell gelten vor allem die SHA-2- und SHA-3-Gruppen als sicher.

What Is Hashing Significance?

Hashing hat zahlreiche Anwendungsfälle, von der Analyse großer Dateien und Datenverwaltung bis hin zu IT-Sicherheitsanwendungen wie Nachrichten-Authentifizierung und digitaler Fingerabdruckbildung. Kryptografische Hash-Funktionen spielen eine zentrale Rolle im Bitcoin-Mining sowie bei der Erstellung neuer Adressen und Schlüssel. Die Stärke des Hashings zeigt sich besonders bei großen Datenmengen: Hash-Funktionen kondensieren Eingaben zu einer kompakten Ausgabe (Hash), sodass Daten überprüft werden können, ohne große Mengen an Rohdaten speichern zu müssen. Die Blockchain-Technologie profitiert von Hashing, da Transaktionen in Blöcken verknüpft und verdichtet werden, wodurch eine Blockchain entsteht. Die Bitcoin-Blockchain nutzt Hashing in zahlreichen Operationen, vor allem beim Mining, um kryptografische Verknüpfungen zwischen den Blöcken zu erzeugen. Zusammengefasst ist Hashing ein essenzieller Bestandteil von Kryptowährungsprotokollen zur Gewährleistung von Datenintegrität, Sicherheit und Unveränderbarkeit.

Hash Functions 

Hash-Funktionen finden in vielen Bereichen Anwendung, darunter Datenverwaltung, Datenbank-Lookups und die Analyse großer Dateien. In der Informationssicherheit werden kryptografische Hash-Funktionen häufig für digitale Fingerabdrücke und Nachrichten-Authentifizierung verwendet. Sie sind unverzichtbar im Bitcoin-Mining und bei der Erzeugung von Schlüsseln und Adressen.

Hashing ist besonders nützlich im Umgang mit enormen Datenmengen. Indem eine große Datei oder ein Datensatz durch eine Hash-Funktion gejagt wird, kann man die Genauigkeit und Integrität der Daten schnell anhand der Ausgabe verifizieren. Das ist möglich wegen der deterministischen Eigenschaft von Hash-Funktionen: dieselbe Eingabe liefert immer denselben kompakten Hash. So entfällt die Notwendigkeit, umfangreiche Rohdaten zu speichern oder zu merken.

Für die Blockchain-Technologie ist Hashing besonders relevant. Die Mehrheit der Kryptowährungsprotokolle nutzt Hashing, um Gruppen von Transaktionen in Blöcken zu verdichten und kryptografische Verknüpfungen zwischen den Blöcken zu erzeugen, was die Blockchain bildet.

Damit eine kryptografische Hash-Funktion als sicher gilt, muss sie drei Eigenschaften erfüllen: Kollisionsresistenz, Preimage-Resistenz und Second-Preimage-Resistenz. 

  • Kollisionsresistenz bedeutet, dass es praktisch unmöglich ist, zwei verschiedene Eingaben zu finden, die dieselbe Ausgabe erzeugen. 
  • Preimage-Resistenz bedeutet, dass es nahezu unmöglich ist, aus einer gegebenen Ausgabe die ursprüngliche Eingabe zu rekonstruieren. 
  • Second-Preimage-Resistenz bedeutet, dass es unmöglich ist, zu einer bekannten Eingabe eine zweite Eingabe zu finden, die denselben Hash erzeugt.

Collision Resistance

Eine Hash-Funktion gilt als kollisionsresistent, solange niemand eine Kollision gefunden hat, bei der verschiedene Eingaben denselben Hashwert erzeugen. Kollisionen sind prinzipbedingt unvermeidbar, da die möglichen Eingaben unbegrenzt sind, die möglichen Ausgaben jedoch endlich. Hash-Funktionen gelten als kollisionsresistent, wenn die Wahrscheinlichkeit, eine Kollision zu finden, so gering ist, dass dies Millionen von Jahren an Rechenzeit erfordern würde. Zu den Funktionen, die diesem Standard entsprechen, zählt unter anderem SHA-256.

Die SHA-0- und SHA-1-Gruppen gelten nicht mehr als sicher, da für sie Kollisionen gefunden wurden. Im Gegensatz dazu gelten die SHA-2- und SHA-3-Gruppen als widerstandsfähig gegen Kollisionen.

Kryptografische Hash-Funktionen nutzen kryptografische Techniken; ihr Brechen erfordert zahlreiche Brute-Force-Versuche. Um eine kryptografische Hash-Funktion umzukehren, müsste man durch Trial-and-Error die Eingabe erraten, bis die zugehörige Ausgabe erzeugt wird. Unterschiedliche Eingaben können jedoch dieselbe Ausgabe produzieren, was eine Kollision zur Folge hat.

Preimage resistance 

Einwegfunktionen und Preimage-Resistenz sind Eigenschaften von Hash-Funktionen, die sicherstellen, dass es nahezu unmöglich ist, die Eingabe zu bestimmen, die eine bestimmte Ausgabe erzeugt hat. Das Konzept entspricht Einwegfunktionen: die Ausgabe ist leicht zu berechnen, die Rückrechnung auf die Eingabe ist hingegen schwierig.

Beachten Sie, dass Preimage-Resistenz sich von Kollisionsresistenz unterscheidet: Bei ersterer versucht ein Angreifer, anhand einer vorgegebenen Ausgabe die ursprüngliche Eingabe zu erraten. Bei letzterer geht es darum, zwei verschiedene Eingaben zu finden, die dieselbe Ausgabe produzieren.

Preimage-Resistenz ist wichtig zum Schutz von Daten, weil ein Hash einer Nachricht deren Echtheit nachweisen kann, ohne die Nachricht selbst preiszugeben. 

Second-preimage resistance 

Die Second-Preimage-Resistenz liegt zwischen den beiden anderen Eigenschaften. Sie betrifft das Finden einer spezifischen Eingabe, die denselben Hash erzeugt wie eine bereits bekannte Eingabe. Ein Second-Preimage-Angriff ähnelt dem Finden einer Kollision, nur sucht man hier nach einer Eingabe, die mit einer bestimmten gegebenen Eingabe kollidiert, statt zwei beliebige Eingaben zu finden, die denselben Hash liefern.

Da ein Second-Preimage-Angriff immer eine Kollision impliziert, ist jede kollisionsresistente Hash-Funktion auch resistent gegen Second-Preimage-Angriffe. Dennoch kann eine kollisionsresistente Funktion anfällig für Preimage-Angriffe sein, da diese das Auffinden einer einzelnen Eingabe aus einer einzelnen Ausgabe verlangen. Daher ist Preimage-Resistenz eine entscheidende Eigenschaft von Hash-Funktionen und wird oft zum Schutz von Daten genutzt. Viele Dienstleister und Webanwendungen speichern und verwenden z. B. die aus Passwörtern generierten Hashes statt der Passwörter im Klartext. So lässt sich die Echtheit beweisen, ohne sensible Informationen offenzulegen.

Mining 

Beim Bitcoin-Mining sind mehrere Schritte nötig, bei denen Hash-Funktionen zum Einsatz kommen. Dazu gehören die Überprüfung von Kontoständen, das Verknüpfen von Transaktionseingängen und -ausgängen sowie das Hashen von Transaktionen innerhalb eines Blocks zur Bildung eines Merkle-Baums. Einer der Hauptgründe, warum die Bitcoin-Blockchain sicher ist, liegt darin, dass Miner zahlreiche Hash-Operationen durchführen müssen, um eine gültige Lösung für den nächsten Block zu finden.

Um einen Hashwert für ihren Kandidatenblock zu erzeugen, muss ein Miner viele verschiedene Eingaben ausprobieren. Miner validieren ihren Block nur dann, wenn sie einen Output-Hash produzieren können, der mit einer bestimmten Anzahl führender Nullen beginnt. Die Anzahl der Nullen bestimmt die Mining-Schwierigkeit, die sich je nach im Netzwerk eingesetzter Rechenleistung (Hashrate) verändert.

Die Hashrate bezeichnet die Menge an Rechenleistung, die in das Bitcoin-Mining investiert wird. Steigt die Hashrate des Netzwerks, passt das Bitcoin-Protokoll automatisch die Mining-Schwierigkeit an, sodass die durchschnittliche Zeit zur Findung eines Blocks bei rund 10 Minuten bleibt. Sinkt die Hashrate durch das Aussteigen vieler Miner erheblich, wird die Schwierigkeit so angepasst, dass das Mining einfacher wird, bis die durchschnittliche Blockzeit wieder bei 10 Minuten liegt.

Wichtig ist, dass Miner keine Kollisionen finden müssen, da sie viele Hashes erzeugen können, die als gültige Ausgaben gelten (mit einer bestimmten Anzahl führender Nullen). Für einen gegebenen Block existieren daher viele mögliche Lösungen, und Miner müssen nur eine dieser Lösungen finden, basierend auf dem durch die Schwierigkeit gesetzten Schwellenwert.

Da das Bitcoin-Mining kostenintensiv ist, haben Miner keinen Anreiz, das System zu betrügen, da ein Betrug erhebliche finanzielle Verluste nach sich ziehen würde. Je mehr Miner an einer Blockchain teilnehmen, desto größer und robuster wird sie.

Conclusion

Für alle, die sich mit Blockchain-Technologie beschäftigen, sind kryptografische Hash-Funktionen grundlegend. In Kombination mit Kryptographie bieten diese Algorithmen Sicherheit und Authentizität und sind sehr vielseitig im Umgang mit großen Datenmengen. Hash-Funktionen spielen in nahezu allen Kryptowährungsnetzwerken eine zentrale Rolle. Das Verständnis ihrer Eigenschaften und Funktionsweise ist eine wichtige Grundlage der Informatik.

Hashing