Beim Hashing wird aus einer Eingabe variabler Größe eine Ausgabe fester Größe generiert. Dieser Prozess wird durch eine mathematische Formel namens „Hash-Funktion“ (implementiert als Hash-Algorithmus) erreicht.
Nicht alle Hash-Funktionen beinhalten den Einsatz von Kryptografie, aber „kryptografische Hash-Funktionen“ sind das Herzstück von Kryptowährungen. Dank kryptografischer Hash-Funktionen kann in Blockchain und anderen verteilten Systemen ein hohes Maß an Datenintegrität und -sicherheit erreicht werden.
Sowohl traditionelle Hash-Funktionen als auch kryptografische Hash-Funktionen sind deterministisch. Determinismus bezieht sich auf die Tatsache, dass ein Hashing-Algorithmus immer die gleiche Ausgabe (auch „Digest“ oder „Hash-Wert“ genannt) erzeugt, solange sich die Eingabe nicht ändert.
Typischerweise sind Kryptowährungs-Hashing-Algorithmen als Einwegfunktionen konzipiert, was bedeutet, dass sie ohne erhebliche Rechenzeit und Ressourcen nicht einfach wiederhergestellt werden können. Mit anderen Worten: Es ist äußerst einfach, aus einer Eingabe eine Ausgabe zu erstellen, es ist jedoch relativ schwierig, umgekehrt aus einer Ausgabe eine Eingabe zu erstellen. Generell gilt: Je schwieriger die Eingabe zu finden ist, desto sicherer ist der Hashing-Algorithmus.
Wie funktioniert eine Hash-Funktion?
Verschiedene Hash-Funktionen erzeugen Ausgaben unterschiedlicher Größe, aber die Ausgabegröße jedes Hashing-Algorithmus ist immer gleich. Beispielsweise kann der SHA-256-Algorithmus nur eine 256-Bit-Ausgabe erzeugen, während SHA-1 immer einen 160-Bit-Digest erzeugt.
Um dies zu veranschaulichen, haben wir die Wörter „Binance“ und „binance“ durch den SHA-256-Hashing-Algorithmus (den in Bitcoin verwendeten Algorithmus) laufen lassen.
Beachten Sie, dass eine kleine Änderung der Groß- und Kleinschreibung des ersten Buchstabens zu einem völlig anderen Hashwert führt. Unabhängig von der Länge des Eingabewerts hat die Ausgabe mit SHA-256 immer eine feste Länge von 256 Bit (oder 64 Zeichen). Darüber hinaus bleibt die Ausgabe beider Wörter gleich, egal wie oft der Algorithmus diese beiden Wörter ausführt.
Wenn Sie umgekehrt dieselbe Eingabe über den SHA-1-Hashing-Algorithmus ausführen, erhalten Sie die folgenden Ergebnisse:
Bitte beachten Sie, dass „SHA“ die Abkürzung für Secure Hash Algorithms ist. Der Algorithmus bezieht sich auf eine Reihe kryptografischer Hash-Funktionen, zu denen die Algorithmen SHA-0 und SHA-1 sowie die Sätze SHA-2 und SHA-3 gehören. SHA-256 gehört zusammen mit SHA-512 und anderen Varianten zur SHA-2-Gruppe. Derzeit gelten nur die Gruppen SHA-2 und SHA-3 als sicher.
Welche Bedeutung haben Hash-Funktionen?
Herkömmliche Hash-Funktionen haben eine Vielzahl von Anwendungsfällen, darunter Datenbanksuche, Analyse großer Dateien und Datenverwaltung. Kryptografische Hash-Funktionen werden häufig in Informationssicherheitsanwendungen wie der Nachrichtenauthentifizierung und dem digitalen Fingerabdruck verwendet. Im Fall von Bitcoin sind kryptografische Hash-Funktionen ein integraler Bestandteil des Mining-Prozesses und wirken sich sowohl auf die neue Adresse als auch auf die Schlüsselgenerierung aus.
Hash-Operationen sind bei der Verarbeitung großer Informationsmengen wirklich leistungsstark. Führen Sie beispielsweise eine große Datei oder einen großen Datensatz über eine Hash-Funktion aus und verwenden Sie dann deren Ausgabe, um schnell die Richtigkeit und Vollständigkeit der Daten zu überprüfen. Hash-Funktionen funktionieren, weil sie deterministisch sind: Eine Eingabe erzeugt immer eine komprimierte, vereinfachte Ausgabe (d. h. einen Hash-Wert). Diese Technologie macht das Speichern und „Merken“ großer Datenmengen überflüssig.
Besonders nützlich sind Hash-Operationen im Bereich der Blockchain-Technologie. In der Bitcoin-Blockchain gibt es viele Operationen, die Hash-Operationen beinhalten, von denen die meisten Teil des Mining-Prozesses sind. Tatsächlich basieren fast alle Kryptowährungsprotokolle auf Hashing, um Gruppen von Transaktionen zu verbinden und sie in Blöcke zu komprimieren, während gleichzeitig kryptografische Verbindungen zwischen einzelnen Blöcken erzeugt werden, wodurch effektiv eine Blockchain entsteht.
kryptografische Hash-Funktion
Ebenso können Hash-Funktionen, die kryptografische Techniken einsetzen, als kryptografische Hash-Funktionen definiert werden. Im Allgemeinen erfordert das Brechen einer kryptografischen Hash-Funktion unzählige Brute-Force-Versuche. Um eine kryptografische Hash-Funktion „wiederherzustellen“, erraten Sie die Eingabe durch Ausprobieren, bis die entsprechende Ausgabe generiert wird. Es ist jedoch auch möglich, dass unterschiedliche Eingaben genau die gleiche Ausgabe erzeugen, sodass ein „Konflikt“ entsteht.
Technisch gesehen muss eine kryptografische Hash-Funktion drei Eigenschaften besitzen, um als wirksam für die Gewährleistung der Sicherheit zu gelten. Die drei Hauptattribute sind Antikollision, Anti-Vorbild und Anti-Sekunden-Vorbild.
Bevor wir jedes Attribut einzeln besprechen, fassen wir kurz die Logik jedes Attributs zusammen.
Kollisionsresistenz: Es ist unmöglich, dass zwei verschiedene Eingaben die gleiche Hashwert-Ausgabe erzeugen.
Anti-Imagefähigkeit: Es ist unmöglich, eine Hash-Funktion „wiederherzustellen“ (d. h. die Eingabe kann nicht aus einer bestimmten Ausgabe gefunden werden).
Zweiter Urbildwiderstand: Es ist unmöglich, eine andere Eingabe zu finden, die mit einer bestimmten Eingabe in Konflikt steht.
Konfliktresistenz
Wie bereits erwähnt, kommt es zu Kollisionen, wenn verschiedene Eingaben genau denselben Hashwert erzeugen. Daher gilt eine Hash-Funktion als kollisionsresistent, solange niemand eine Kollision erkennt. Beachten Sie, dass es immer zu Kollisionen mit Hash-Funktionen kommt, da die möglichen Eingaben unendlich und die möglichen Ausgaben endlich sind.
Unter der Annahme, dass die Wahrscheinlichkeit, eine Kollision zu finden, nur Millionen von Jahren beträgt, kann man eine Hash-Funktion als kollisionsresistent bezeichnen. Obwohl es in der Realität keine kollisionsfreien Hash-Funktionen gibt, gelten einige von ihnen (z. B. SHA-256) als kollisionsresistent, solange sie stark genug sind.
Unter verschiedenen SHA-Algorithmen gibt es Konflikte zwischen den Gruppen SHA-0 und SHA-1, sodass sie nicht mehr sicher sind. Derzeit gelten die Sätze SHA-2 und SHA-3 als kollisionssicher.
Anti-Bilder
Die antiikonische Eigenschaft hängt mit dem Konzept der Einwegfunktionen zusammen. Eine Hash-Funktion wird als Anti-Image-Funktion bezeichnet, wenn man davon ausgeht, dass die Wahrscheinlichkeit, eine Eingabe zu finden, die eine bestimmte Ausgabe erzeugt, äußerst gering ist.
Beachten Sie, dass ein Angreifer eine bestimmte Ausgabe betrachtet, um die Eingabe zu erraten. Daher unterscheidet sich diese Eigenschaft von der Kollisionsresistenz. Darüber hinaus kommt es zu Konflikten zwischen zwei unterschiedlichen Eingaben, die dieselbe Ausgabe erzeugen, es spielt jedoch keine Rolle, welche Eingabe verwendet wird.
Anti-Imageability-Eigenschaften sind für den Schutz von Daten wertvoll, da ein einfacher Hash einer Nachricht ihre Authentizität nachweisen kann, ohne die Informationen preiszugeben. In der Praxis speichern und verwenden viele Dienstanbieter und Webanwendungen aus Passwörtern generierte Hashes anstelle des Passworts im Klartext.
Widerstand gegen das zweite Vorbild
Kurz gesagt, die Resistenz gegenüber zweiten Vorbildern liegt irgendwo zwischen den beiden oben genannten Eigenschaften. Ein zweiter Preimage-Angriff erfolgt, wenn jemand eine bestimmte Eingabe findet, die eine Ausgabe erzeugt, die mit einer anderen bekannten Eingabe identisch ist.
Mit anderen Worten: Beim zweiten Preimage-Angriff geht es darum, Konflikte zu finden. Anstatt jedoch nach zwei zufälligen Eingaben zu suchen, die denselben Hash-Wert generieren, suchen Sie nach einer anderen Eingabe, die angesichts der spezifischen Eingabe denselben Hash-Wert generiert.
Ein zweiter Preimage-Angriff bedeutet normalerweise, dass ein Konflikt vorliegt. Daher ist jede kollisionsresistente Hash-Funktion auch resistent gegen Second-Preimage-Angriffe. Kollisionsresistenz bedeutet jedoch, dass ein einzelner Eingang von einem einzelnen Ausgang gefunden werden kann, sodass ein Angreifer immer noch einen Preimage-Angriff gegen eine kollisionsresistente Funktion starten kann.
Kryptowährungs-Mining
Hash-Funktionen werden in mehreren Schritten beim Bitcoin-Mining verwendet, beispielsweise zum Überprüfen von Guthaben, zum Verketten von Transaktionseingaben und -ausgaben und zum Hashing von Transaktionen innerhalb desselben Blocks, um einen Merkle-Baum zu bilden. Einer der Hauptgründe für die Sicherheit der Bitcoin-Blockchain ist jedoch, dass Miner unzählige Hashing-Vorgänge durchführen müssen, bevor sie endlich eine gültige Lösung für den nächsten Block finden können.
Insbesondere müssen Miner bei der Erstellung von Kandidatenblock-Hashes mehrere verschiedene Eingaben ausprobieren. Im Wesentlichen können Miner einen Block nur dann validieren, wenn der generierte Ausgabe-Hash mit einer bestimmten Anzahl von Nullen beginnt. Die Anzahl der Nullen bestimmt die Mining-Schwierigkeit und ändert sich mit der dem Netzwerk zugewiesenen Hash-Rate.
In diesem Fall stellt die Hash-Rate die Menge an Rechenleistung dar, die in den Bitcoin-Mining gesteckt wird. Wenn die Hash-Rate des Netzwerks steigt, passt das Bitcoin-Protokoll die Mining-Schwierigkeit automatisch an, sodass die durchschnittliche Zeit, die zum Generieren eines Blocks erforderlich ist, bei etwa 10 Minuten bleibt. Im Gegenteil, wenn sich viele Miner dazu entschließen, das Mining einzustellen, was zu einem deutlichen Rückgang der Hash-Rate führt, wird die Mining-Schwierigkeit gesenkt, bis die durchschnittliche Blockzeit wieder 10 Minuten beträgt.
Beachten Sie, dass Miner mehrere Hashes als gültige Ausgabe generieren können (beginnend mit einer bestimmten Anzahl von Nullen), sodass sie nicht nach Kollisionen suchen müssen. Es gibt mehrere mögliche Lösungen für einen Block, aber je nach Schwierigkeitsgrad des Minings müssen Miner nur eine der Lösungen finden.
Bitcoin-Mining ist eine kostspielige Aufgabe, und es besteht keine Notwendigkeit für Miner, das System zu betrügen, was stattdessen zu erheblichen finanziellen Verlusten führen würde. Je mehr Miner der Blockchain beitreten, desto größer und leistungsfähiger wird die Blockchain.
Zusammenfassen
Es besteht kein Zweifel, dass Hash-Funktionen ein unverzichtbares Werkzeug in der Informatik sind und ihre Fähigkeit, riesige Datenmengen zu verarbeiten, besonders herausragend ist. In Kombination mit Kryptografie können Hashing-Algorithmen auf vielfältige Weise eingesetzt werden, um auf unterschiedliche Weise Sicherheit und Authentifizierung bereitzustellen. Für fast alle Kryptowährungsnetzwerke sind kryptografische Hash-Funktionen von entscheidender Bedeutung. Wenn Sie sich für die Blockchain-Technologie interessieren, ist es daher von großem Nutzen, die Eigenschaften und Funktionsweise kryptografischer Hash-Funktionen zu verstehen.

