Hash

Ein Hash ist ein digitaler Fingerabdruck eines binären Inputs.

Die Hash-Funktion ist ein fundamentaler Baustein von Kryptowährungen wie Bitcoin. Allerdings existierte die Funktion schon weit vor dem Aufkommen Bitcoins. Sie ist ein Element der Kryptographie und dient dazu, beliebig große Datensätze in einer festen Länge anzugeben.  

Was ist ein Hash?

Ein Hash ist das Resultat einer mathematischen Hash-Funktion, die eine beliebige Datenmenge in eine feste Zeichenlänge verwandelt.  

Es gibt viele verschiedene Hash-Funktionen, die alle unterschiedliche Eigenschaften aufweisen. Die Hash-Funktion, die in Bitcoin zum Einsatz kommt, ist der SHA-256. SHA steht für Secure Hash Algorithm. Die Spezialität der Funktion ist, Sicherheit zu gewährleisten.  

Wie funktioniert eine Hash-Funktion? 

Eine Hashfunktion kann man sich wie einen Thermomix vorstellen. Man gibt Zutaten hinein und mixt diese dann zu einer Suppe. Das besondere bei einer Hashfunktion: Der Output ist immer gleich groß – 64 Zeichen oder ein metaphorischer Teller Suppe. Eine weitere Besonderheit der Hashfunktion ist, dass sich für jeden Input, jede Zutat, der Output komplett ändert. So kann man Manipulation auf den ersten Blick erkennen. 

Determinismus 

Eine solche Funktion spuckt immer zufällige Ergebnisse aus. Allerdings ist sie deterministisch. Das bedeutet, dass derselbe Input (also das, was wir der Funktion füttern) denselben Output liefert. Unterschiedliche Inputs liefern völlig verschiedene Hashes. Dabei ist die Hash-Funktion hoch sensibel, ändert sich auch nur ein Bit des Inputs, ändert sich der komplette Output (also der resultierende Hash).  

Beispiel für einen Hash:  

Input „BTC-ECHO“ mit SHA-256 ergibt den Output: 4c836b8362d6fb1b56b8ccc7dec360bb45ffb2dad25cf3884b912f1f1baf1483 

Input „btc-echo“ mit SHA-256 ist: 40a00ee50b2b626474f2916f2d154065f5d7baee14d8fcdb3048b25f7a83da61 

Auf den ersten Blick lässt sich erkennen, dass die Hashes unterschiedlich sind. Folglich sind auch die Inputs unterschiedlich. In unserem Beispiel hat sich nur die Großschreibung zur Kleinschreibung geändert.  

Jedoch ist der Output für BTC-ECHO mit der SHA-256-Funktion immer 4c836b8362d6fb1b56b8ccc7dec360bb45ffb2dad25cf3884b912f1f1baf1483. So kann das Ergebnis von allen Menschen auf der Erde unabhängig verifiziert werden.

Einweg-Funktionen 

Hash-Funktionen sind im übertragenen Sinne Einbahnstraßen. Das heißt, sie funktionieren nur in eine Richtung. Mit einem Input und einer Hash-Funktion kann man problemlos in eine Richtung fahren. Allerdings ist es nicht möglich, aus einem Hash, selbst wenn die verwendete Funktion bekannt ist, den ursprünglichen Input zu erzeugen. Hier spricht man auch davon, dass die „nicht-umkehrbar“ ist. 

Ist dir nur ein Hash bekannt, kannst du keine Schlüsse darauf ziehen, welcher Input verwendet wurde.  

0c80304927453c6ac6f4115b88842df7f468e26aeb63f4d54475133b36a0d928 – was ist der Input? 

Wohingegen: „BTC-ACADEMY“ mit SHA-256 = 0c80304927453c6ac6f4115b88842df7f468e26aeb63f4d54475133b36a0d928; das geht ohne Probleme.  

SHA, Secure Hash Algorithm 

Das Kürzel SHA wurde nun öfter genannt und sogar benutzt. Was verbirgt sich dahinter? 

Die SHAs kann man sich wie eine Familie vorstellen. Eine Familie an Algorithmen. Der Fokus liegt bei den SHAs auf kryptographischer Sicherheit. Der Unterschied zwischen den SHAs liegt vor allem in der Länge des resultierenden Hashs (diese Länge wird in Bit angegeben).  

Der älteste der SHAs ist SHA-1. Er hat eine Länge von 160 Bit. Bis vor einigen Jahren war SHA-1 der Industriestandard der Sicherheit im Internet. Jedoch gilt er heutzutage nicht mehr als sicher, da Google es geschafft hat, eine Kollision zu produzieren.

SHA-2 ist eine Verbesserung von SHA-1. Bei den SHA-2s gibt es unterschiedliche Längen. Der bekannteste SHA-2, der auch aktueller Industriestandard bei den SSL-Zertifikaten von Domains und Websites ist, hat eine Länge von 256 Bit. Er heißt deswegen auch SHA-256. Weiter oben kam er schon zum Einsatz um „BTC-ECHO“, „btc-echo“ und BTC-ACADEMY“ haben wir diesbezüglich verarbeitet. Der SHA-256 ist auch der Algorithmus, der beim Bitcoin Proof of Work zum Einsatz kommt.  

Der Vollständigkeit halber sollen auch noch die Geschwister des SHA-256 erwähnt werden: SHA-224, SHA-384 und SHA-512. Die Zahl am Ende gibt hier immer an, wie viel Bit der Output hat.  

Es gibt auch schon die nächste Version des SHA, nämlich SHA-3. Hier gibt es den SHA-3-256. 3 ist wie ein Mittelname. 256 gibt wieder die Länge des Hashes an.  

Wie viele verschiedene Hashes gibt es? 

Ein Bit ist eine Null oder eine Eins. Dies ist die Sprache, in der Computer sprechen. Null heißt Strom aus, Eins heißt Strom an. Es gibt für jedes Bit also 2 mögliche Zustände. Ein Hash mit der Länge von 256 Bit hat damit 2^256 mögliche Zustände.

Was ist eine Kollision bei einer Hash-Funktion? 

Mit dem SHA-256 haben wir also unglaublich viele mögliche Hashes. Doch wenn man etwas weiter über die Sache sinnt, stellt sich die Frage:  

Die Zahl der möglichen Outputs ist gigantisch, aber endlich. Die Zahl der möglichen Inputs ist unendlich. Was heißt das? 

Wenn zwei unterschiedliche Inputs denselben Output erzeugen, spricht man von einer Kollision.  

Was ist eine Kollision einer Hash-Funktion?

Eine Kollision einer Hash-Funktion bedeutet, dass zwei unterschiedliche Inputs denselben Output erzeugen.  

Jede Hash-Funktion kann kollidieren. Die Frage, die sich hier anschließt ist, wie schwierig es ist, eine Kollision zu erzeugen. Bereits erwähnt wurde, dass es Google gelang, den SHA-1 zu kollidieren. Dafür mussten sie allerdings viele Ressourcen aufwenden. Wir merken uns, dass jede Hash-Funktion irgendwann kollidiert – wichtig ist die Frage, wie aufwendig dies ist.  

Sobald Kollisionen bei einer Hash-Funktion bewiesen werden können, ist diese Funktion damit nicht mehr sicher. Sie wird dann von der nächsten Funktion abgelöst, die noch keine Kollisionen aufzeigte.  

Sie zu etablieren erfordert viele Tests. In der Regel brauchen die Funktionen auch einige Zeit, bis sie „finalisiert“ werden. Mit anderen Worten: Es dauert, eine Hash-Funktion zu entwickeln.  

Wo kommt sie zum Einsatz? 

Der SHA-256 kommt beim Bitcoin Proof of Work zum Einsatz. Hier möchte man einen ganz besonderen Hash erzeugen, nämlich einen, der mit einer bestimmten Anzahl von Nullen beginnt. Diesen findet man nur zufällig – man muss raten. Eben das passiert im Bitcoin Mining. Die Miner raten sehr oft pro Sekunde, besser gesagt, sie hashen den selben Block öfters, wobei sich nur eine Variable, die Nonce verändert.  

Eine weitere Verwendung dieser speziellen Funktionen sind SSL-Zertifikate für Webseiten. Um sich sicher zu sein, dass man es auch tatsächlich mit einer Website zu tun hat, gibt es sogenannte SSL-Zertifikate. Hier kommt auch der SHA-256 zum Einsatz. Er hilft dem Betreiber, eine digitale Signatur zu erstellen, mit der er seine Authentizität beweisen kann.

Häufige Fragen (FAQ)

Ähnliche Begriffe