Dass eine Blockchain eine Abfolge von Blöcken ist, die jeweils miteinander verkettet sind, ist mittlerweile weitestgehend bekannt. Doch warum ist diese Verkettung sicher vor nachträglicher Manipulation? Die Antwort darauf lautet kryptografische Hashfunktionen.
Hashfunktionen sind mathematische Funktionen mit einer sehr nützlichen Eigenschaft: Sie sind sogenannte Einwegfunktionen. Das bedeutet, dass der Wert der Funktion (in unserem Fall ein Hashwert) "einfach" zu berechnen ist, es aber sehr schwierig (in der Praxis meist unmöglich) ist, vom Hashwert den Ausgangswert zu errechnen. Diese Eigenschaft geht natürlich verloren, sollte ein Weg für die Umkehrbarkeit einer solchen Einwegfunktion gefunden werden.
Eine recht treffende Metapher für Hash-Funktionen ist eine Fabrik, die aus verschiedenen Zutaten Kuchen herstellt. Es ist einfach, die Zutaten zu vermischen und den Kuchen herzustellen und zu backen, aber es ist quasi unmöglich, den Kuchen wieder in seine ursprünglichen Zutaten zu zerlegen.
Des Weiteren sind Hashfunktionen deterministisch, das heißt bei gleicher Eingabe liefert die Funktion immer das gleiche Ergebnis.
Unter optimalen Voraussetzungen erzeugt unsere Kuchen-Fabrik bei exakt gleichen Zutaten und gleicher Verarbeitung den exakt gleichen Kuchen. Werden Zutaten ersetzt, neue hinzugefügt, oder die Mengenverhältnisse verändert, entsteht am Ende auch ein anderer Kuchen. Allerdings, und das ist ein Makel der Kuchen-Metapher, können und sollen minimale Änderungen der Eingabe in eine Hashfunktion signifikant andere Ausgaben erzeugen. Das hieße in etwa, dass bei einer Abweichung von einem Gramm Mehl aus einem Erdbeerkuchen eine Schokoladentorte werden kann, und das ist auch sehr wichtig für die Sicherheit der Funktion.
Eine kryptografische Hashfunktion hat die zusätzliche Anforderung, kollisionsresistent zu sein. Das bedeutet, es ist praktisch unmöglich, zwei unterschiedliche Eingabewerte zu finden, die zu demselben Hashwert führen.
Um zu verstehen, warum Hashfunktionen die Blockchain sicherer machen, müssen wir zunächst betrachten, welche Informationen in der Blockchain stehen. Blöcke bestehen aus einem Kopfteil (Header) und einem Körper (Body). Während im Body die Transaktionen des Blocks stehen, ist der Header für die Sicherheit einer Blockchain entscheidend.
Denn der Header eines jeden Blocks enthält, neben vielen anderen Informationen, den Hash des vorhergehenden Block Headers. Jede Änderung an einem Block in der Kette, egal wo, führt so unweigerlich dazu, dass sich auch der Hashwert des betroffenen Block Headers ändert. So ist es quasi unmöglich, dass ein Block in einer Blockchain im Nachhinein manipuliert wird, da die Blöcke durch die Hashwerte miteinander verkettet sind.