Was ist ein Blockchain-Block?
Was ein Block in einer Blockchain ist, welche Daten er enthält und wie er mit dem vorherigen eine sichere Kette bildet.
Ratgeber lesen
Sprachen
Beim Betrieb digitaler Technologien sind nur wenige Werkzeuge gleichzeitig so wichtig und für den Nutzer so unsichtbar wie Hash-Funktionen. Sie kommen bei der Dateiverifizierung, digitalen Signaturen, Datenbanken, Authentifizierungssystemen und besonders prominent in Blockchain-Netzwerken zum Einsatz. Ein Hash wandelt eine bestimmte Informationsmenge in eine Zeichenfolge fester Länge um, die wie ein mathematischer Fingerabdruck dieser Daten wirkt. Die Operation kann sehr schnell durchgeführt und leicht überprüft werden, während die Rekonstruktion des ursprünglichen Inhalts aus dem Hash bei Verwendung einer geeigneten kryptografischen Funktion rechnerisch nicht praktikabel sein sollte.
Diese Eigenschaft macht den Hash zu einem wesentlichen Bestandteil der Sicherstellung von Datenintegrität. Wenn beispielsweise eine Datei aus dem Internet heruntergeladen wird, kann ihr Ersteller den zugehörigen Hash veröffentlichen. Der Empfänger berechnet anschließend den Hash der erhaltenen Datei und vergleicht beide Ergebnisse. Stimmen sie überein, gibt es mathematische Hinweise darauf, dass die untersuchten Daten genau denen entsprechen, aus denen der Referenzwert erzeugt wurde, vorbehaltlich der Garantien und Annahmen des verwendeten Algorithmus. Eine minimale Änderung an der Datei, selbst nur ein einzelnes Bit, sollte einen völlig anderen Hash ergeben.
Die grundlegende Idee beruht auf einer mathematischen Funktion, die eine Eingabe variabler Größe entgegennimmt und eine Ausgabe bestimmter Größe erzeugt. Die Eingabe kann ein Wort, ein Dokument, ein Foto, eine Finanztransaktion oder sogar ein extrem großer Datensatz sein. Das Ergebnis behält dagegen immer die vom Algorithmus festgelegte Länge. Bei SHA-256, einem der bekanntesten Algorithmen im Kryptowährungsbereich, besteht die Ausgabe aus 256 Bit und wird normalerweise durch 64 Hexadezimalzeichen dargestellt.
Eine der wichtigsten Eigenschaften einer kryptografischen Hash-Funktion ist der sogenannte Avalanche-Effekt. Kleine Änderungen an den Eingabedaten sollten erhebliche und unvorhersehbare Veränderungen der Ausgabe verursachen. Wenn eine Person den Hash eines Satzes berechnet und anschließend einen einzigen Buchstaben ändert, sollte der resultierende Wert dem vorherigen nicht ähneln. Aus praktischer Sicht sollte der neue Hash vollständig anders sein. Diese Eigenschaft macht es schwierig, gezielt abzuleiten, wie Daten verändert werden müssen, um eine bestimmte Ausgabe zu erzeugen.
Allerdings besitzt nicht jede Hash-Funktion zwangsläufig Eigenschaften, die für Sicherheitsanwendungen ausreichen. Manche Hash-Funktionen sind hauptsächlich auf Effizienz und Datenverteilung ausgelegt, etwa solche, die in bestimmten Datenstrukturen von Computern verwendet werden, und bieten nicht die kryptografischen Garantien, die zum Schutz sensibler Informationen erforderlich sind. Sicherheitsanwendungen verwenden Algorithmen, die speziell dafür entwickelt wurden, verschiedenen Angriffsarten zu widerstehen. MD5 und SHA-1 wurden beispielsweise in der Vergangenheit umfassend eingesetzt, gelten aber aufgrund von Schwachstellen im Zusammenhang mit Kollisionen für viele kryptografische Szenarien nicht mehr als geeignet.
Eine Kollision tritt auf, wenn zwei unterschiedliche Eingaben exakt denselben Hash erzeugen. Da die Menge möglicher Eingaben praktisch unbegrenzt sein kann, während die Ausgabe eine endliche Länge besitzt, sind Kollisionen mathematisch unvermeidbar. Von einer kryptografischen Hash-Funktion wird nicht verlangt, dass Kollisionen unmöglich sind, sondern dass ihre absichtliche Suche außerordentlich schwierig ist. Diese Unterscheidung ist grundlegend. Die Systemsicherheit hängt davon ab, dass die Suche nach zwei unterschiedlichen Eingaben mit demselben Ergebnis ausreichend viele Ressourcen erfordert, um einen Angriff unpraktikabel zu machen.
Hash-Funktionen spielen auch in Blockchains eine wesentliche Rolle, weil sie es ermöglichen, verschiedene Teile des Registers kryptografisch miteinander zu verbinden. Jeder Block kann den Hash des vorherigen Blocks enthalten und dadurch eine mathematische Beziehung zwischen beiden herstellen. Wenn ein neuer Block hinzugefügt wird, wird die Referenz auf den vorherigen Block Teil der Informationen, die die neue Einheit definieren. Verändert jemand anschließend Daten in einem alten Block, ändert sich dessen Hash und die im nächsten Block gespeicherte Referenz stimmt nicht mehr überein. Diese Eigenschaft bietet eine effiziente Möglichkeit, Veränderungen der Historie zu erkennen.
Bei Bitcoin ist das Hashing außerdem ein zentraler Bestandteil des Proof-of-Work-Prozesses. Miner suchen nach einem Wert, der dazu führt, dass der Block-Header einen Hash erzeugt, der bestimmte vom Protokoll festgelegte Bedingungen erfüllt. Aufgrund der Eigenschaften des Algorithmus gibt es keine praktikable Möglichkeit, direkt zu berechnen, welche Eingabe das gewünschte Ergebnis liefert. Miner müssen wiederholt unterschiedliche Werte ausprobieren, bis sie eine gültige Kombination finden. Die Schwierigkeit wird regelmäßig angepasst, damit die Geschwindigkeit, mit der das Netzwerk neue Blöcke erzeugt, trotz Veränderungen der verfügbaren Rechenleistung ungefähr stabil bleibt.
Diese Nutzung zeigt, dass Hashing nicht auf die Prüfung der Integrität beschränkt ist. Es kann auch als Bestandteil eines Mechanismus dienen, der die Erstellung bestimmter kryptografischer Nachweise kostspielig macht. Die Arbeit, die zum Finden eines gültigen Ergebnisses erforderlich ist, kann erheblich sein, während die Überprüfung dieses Ergebnisses durch den Rest des Netzwerks vergleichsweise einfach ist. Diese Asymmetrie ist eine der Grundlagen des von Bitcoin verwendeten Sicherheitsmodells.
Eine weitere wichtige Anwendung findet sich in Strukturen, die als Merkle-Trees bezeichnet werden. In einer Blockchain können die Transaktionen eines Blocks über aufeinanderfolgende Hashing-Vorgänge organisiert werden, bis eine einzige Wurzel entsteht, die die gesamte Menge kryptografisch repräsentiert. Eine Änderung einer Transaktion verändert ihren Hash und damit die darüber berechneten Werte, bis sich auch die Wurzel ändert. Dieses Verfahren ermöglicht es, zu prüfen, ob eine Transaktion zu einer Menge gehört, ohne jeden verfügbaren Eintrag verarbeiten zu müssen, was besonders in verteilten Systemen nützlich ist.
Hashes erscheinen auch in Authentifizierungs- und Passwortspeichersystemen, wobei hier eine wichtige Einschränkung notwendig ist. Das Speichern des Hashes eines Passworts kann besser sein, als das Passwort im Klartext aufzubewahren, doch schnelle Hash-Funktionen allein sind heute nicht die geeignete Lösung für eine sichere Passwortspeicherung. Moderne Systeme verwenden typischerweise speziell dafür entwickelte Funktionen wie Argon2, scrypt oder bcrypt, die Mechanismen enthalten, um Brute-Force-Angriffe und groß angelegte Passworttests aufwendiger zu machen.
Der Nutzen eines Hashes liegt in seiner Fähigkeit, komplexe Informationen in eine kompakte, überprüfbare Darstellung zu verwandeln, ohne ihren Inhalt notwendigerweise offenzulegen. Diese Fähigkeit hat den Aufbau von Systemen ermöglicht, in denen Integrität unabhängig von mehreren Teilnehmern geprüft werden kann. Bei einer Blockchain ist dies besonders relevant, weil kein Nutzer sich ausschließlich auf eine zentrale Stelle verlassen muss, um festzustellen, ob bestimmte Daten verändert wurden. Kryptografische Beziehungen liefern Belege, die von jedem Teilnehmer überprüft werden können, der die Regeln des Protokolls ausführen kann.
Trotzdem weist ein Hash für sich allein nicht nach, dass die ursprünglichen Informationen wahr sind. Wenn jemand falsche Daten in ein System eingibt und anschließend ihren Hash korrekt berechnet, bleibt das Ergebnis mathematisch gültig. Hashing schützt grundsätzlich die Integrität und trägt zu bestimmten Sicherheitseigenschaften bei, garantiert aber weder die inhaltliche Echtheit der Daten noch, dass die Aufzeichnung der externen Realität entspricht. Diese Unterscheidung wird besonders wichtig, wenn Blockchains Informationen speichern, die aus Quellen außerhalb des Netzwerks selbst stammen.
Allgemein lässt sich ein Hash als mathematischer Fingerabdruck verstehen, der es ermöglicht, Informationen effizient zu identifizieren und miteinander zu verknüpfen. Seine Eigenschaften erlauben die Erkennung von Änderungen, die Verknüpfung von Datenstrukturen, den Aufbau kryptografischer Nachweisverfahren und die kompakte Überprüfung großer Informationsmengen. In Blockchains gewinnt diese Funktion besondere Bedeutung, weil sie verschiedene Elemente des Systems miteinander verbindet und zur Widerstandsfähigkeit gegen Änderungen der Historie beiträgt.
Zu verstehen, was ein Hash ist, bedeutet daher auch, einen wesentlichen Teil der Sicherheitsarchitektur zu verstehen, auf der viele moderne Technologien aufbauen. Hinter einer scheinbar zufälligen Zeichenfolge steht ein mathematischer Mechanismus, der sorgfältig so entworfen wurde, dass er reproduzierbare Ergebnisse erzeugt, empfindlich auf jede Änderung reagiert und sich nur schwer absichtlich manipulieren lässt. Ein Hash ist nicht nur eine technische Ressource für Programmierer oder Kryptografieexperten. Er gehört zu den Komponenten, die es verteilten Systemen ermöglichen, Informationen zu überprüfen, Verweise zwischen Einträgen aufrechtzuerhalten und bestimmte Integritätsgarantien zu schaffen.