Jeder, der sich mit Kryptowährungen beschäftigt, stolpert früher oder später über Begriffe, wie Hash oder Hashrate. In unserem heutigen Blocktrainer 1×1 wollen wir klären, was es mit einem Hash auf sich hat und warum dieser für Kryptowährungen unerlässlich ist.
Doch vorerst solltest du dir noch unser “Blocktrainer 1×1: Was ist eigentlich Kryptographie?” durchlesen. Dieser Artikel wird dir einen perfekten Einstieg geben, um das folgende Thema besser zu verstehen.
Der Name “Hash” bzw. “Hashfunktion” kommt vom englischen Verb “to hash” und bedeutet zu deutsch “zerhacken”. Du nimmst eine Datenmenge und zerhackst und vertauschst sie um sie in eine andere Form zu bringen. Das Ziel einer Hashfunktion ist es, eine große Eingabemenge auf eine kleinere Zielmenge abzubilden. Die Zeichenfolge, die das Ergebnis dieser Funktion darstellt, wird als “Hash” bezeichnet.
In der Kryptographie wird eine Hashfunktion auch als mathematische Einwegfunktion beschrieben. Ein Text lässt sich in eine Richtung über einen Hash einfach verschlüsseln, während sich der verschlüsselte Text nur sehr schwer in den Ursprungstext zurückrechnen lässt.
Auf Blocktrainer.de findest du einen 9408 Wörter langen Artikel über
“Das bullische Plädoyer für Bitcoin” von Vijay Boyapati.
Ich nehme nun diesen Text und hashe ihn mittels SHA-256. (Was das ist werde ich dir später verraten) Dabei kommt folgende Ausgabe heraus:
bcec5ca31ba2793b001a7a3de4e035a6b57fb8a72087bb023aa58f7f26d99eb5
Hier noch weitere Beispiele. Beobachte, wie kleine Unterschiede, den ganzen Hash verändern.
1) Hier das Wort “hallo”, welches über SHA-256 gehasht wurde.
d3751d33f9cd5049c4af2b462735457e4d3baf130bcbb87f389e349fbaeb20b9
2) Hier das Wort “Hallo”, welches über SHA-256 gehasht wurde.
753692ec36adb4c794c973945eb2a99c1649703ea6f76bf259abb4fb838e013e
3) Hier das Wort “hallo!“, welches über SHA-256 gehasht wurde.
f4facd09fc865aa866b1390e02911b27f599bd52793d3835429862f900b76d6c
Egal was wir eingeben, ob lange ob kurze Texte, ob wir ein Wort klein oder groß schreiben, ob wir Zeichen hinzufügen oder weglassen, es wird immer ein neuer individueller Hash generiert werden, der augenscheinlich keine Systematik enthält und eine vordefinierte Länge (hier 64 Zeichen) besitzt.
Versucht eine Entität, den Ursprungstext über eine Umkehrfunktion zurückzurechnen, wird er viel Zeit benötigen, da die Rückrechnung fast unmöglich ist!
Bei den kryptologischen Hashfunktionen, die für Kryptowährungen, wie Bitcoin, verwendet werden, muss sichergestellt werden, dass jede Eingabe eine andere Ausgabe zur Folge hat. Andernfalls entsteht eine sogenannte Hashkollision, wodurch der entsprechende Hashalgorithmus als “broken” und unsicher angesehen wird (im deutschen spricht man auch von einem “Bruch” der Hashfunktion).
In folgender Abbildung wird eine Hashkollision bildlich dargestellt. Alice und Bob haben zwei unterschiedliche Eingaben, bekommen aber als Ausgabe beide den Hash:”xxxyyyzzz“.
Zu den gängigsten Hashalgorithmen gehören mit Abstand die Gruppe der SHA-2-Familie (Secure Hash Algorithm). Die SHA-1-Gruppe gilt heute als unsicher, da in der Vergangenheit mehrmals Kollisionen entdeckt wurden.
SHA256 ist der am meisten genutzte Hashalgorithmus. Daneben gibt es noch SHA-224, SHA-384 und SHA-512, die alle aus der SHA-2-Familie stammen. Die zugefügte Zahl hinter dem SHA gibt die Länge des Hashwerts in Bits an.
Bis heute gilt SHA-256 als sicher. Dies liegt daran, dass eine Brute-Force-Attacke* auf diese Funktion im Durchschnitt 40^38 Versuche erfordern würde um den Eingabewert zu einem vorgegebenen Ergebnis zu erraten. Weil heutzutage diese Rechenleistung nicht aufgebracht werden kann, wird SHA-256 vorerst als kollisionssicher angesehen.
*Schon gewusst!: Eine Brute-Force-Attacke ist nichts anderes, als das alle Möglichkeiten zum knacken eines (z.B. Passworts) nacheinander ausprobiert werden.
Für Kryptowährungen wie Bitcoin werden, allen voran beim Prozess des Minings, Hashfunktionen benötigt. Die sogenannten Miner versuchen hierbei nämlich einen Hash zu finden, der vorgegebenen Voraussetzungen beziehungsweise Regeln entspricht.
Schon gewusst!: Die Mining-Difficulty gibt an, welche Vorraussetzungen ein Hashwert benötigt um als valide zu gelten. Über die Difficulty soll gewährleistet werden, dass unabhängig von der Rechenleistung im Netzwerk, die Blockzeit immer gleich bleibt.
Während des Mining-Prozesses wird im Endeffekt nichts anderes gemacht, als verschiedene Eingaben mit einer Hashfunktion durchzuprobieren um am Ende eine gültige Ausgabe (Hashwert) zu erhalten, die den Anforderungen der aktuellen Mining-Difficulty entspricht.
Diese Aufgaben können über CPUs und GPUs durchgeführt werden. Aber es gibt auch spezielle Mining-Hardware (ASICs), die diese Aufgabe besonders effizient durchführen können. Über ASIC-Miner haben wir bereits in einem früheren Blocktrainer 1×1 einen Artikel verfasst.
Ein kryptographischer Hash sollte folgende fünf Eigenschaften besitzen:
Bist du auch der Meinung dass Quantencomputer eine Gefahr für SHA-256 darstellen werden? Falls “Ja”, was wird in diesem Fall aus Bitcoin? Schreib deine Meinung gerne in unser forum.blocktrainer.de und diskutiere mit uns darüber.