DesignSpark Electrical Logolinkedin
Menu Suche
Ask a Question

21 Feb 2019, 13:53

Einführung Blockchain – Teil 1

Dem aktuellen Hype nach zu urteilen, könnte man glauben, mit der Blockchain stände uns das Ende von Krankheiten, Armut und Hunger und damit der Eintritt in ein goldenes Zeitalter des Weltfriedens bevor. Aber auch wenn die Blockchain nicht die von einigen Marketingabteilungen beschworene Universallösung aller Probleme ist, ist sie doch ein praktisches Tool, das für viele Anwendungen glaubwürdige Lösungen bietet.

Um entscheiden zu können, für welche Anwendungen die Blockchain geeignet ist (und für welche nicht), ist es hilfreich, die Theorie hinter der Blockchain und deren Implementierung zu verstehen. In diesem Artikel möchte ich Ihnen einen Überblick über die Grundlagen dieser spannenden Technologie vermitteln, damit Sie sich selbst ein Urteil bilden können.

Entstehungsgeschichte

Im Gegensatz zur landläufigen Meinung war die Blockchain keine bereits vollständig ausgearbeitete und funktionsfähige Kopfgeburt von Satoshi Nakamoto – eine Art moderne, softwarebasierte Athene.

Die ursprünglichen Konzepte lassen sich bis zu einer Arbeit von Stuart Haber und W. Scott Stornetta aus dem Jahr 1991 zurückverfolgen. In Ihrem Artikel „How to Time-Stamp a Digital Document“ beschäftigten sie sich mit der Frage, wie man digitale Daten mit einem Zeitstempel versehen könnte, der eine spätere Rückdatierung (oder Vordatierung) unmöglich macht.

Diese Frage war damals, als sich noch nahezu alle digitalen Daten problemlos manipulieren ließen, ein großes Dilemma für die Ingenieure, die die Netzwerktechnologie für verschiedenste Anwendungen nutzen wollten – von kollaborativer Telearbeit bis hin zu digitalen Transaktionen.

Die von Haber und Stornetta entwickelten Sicherheitskonzepte dienten Satoshi Nakamoto (wer auch immer er/sie ist oder sind) als Grundlagen für die Entwicklung von Bitcoin.

Der Genesis-Block

Es gibt zahlreiche sich teilweise überschneidende Definitionen dazu, was eine Blockchain ist. Ich werde mich hier auf die folgende Definition stützen:

„Eine kontinuierlich erweiterbare Liste von Datensätzen, die als Blöcke bezeichnet werden und die mithilfe kryptographischer Verfahren miteinander verkettet und gesichert sind.“

Das Verfahren, über das die Datensätze verkettet und gesichert werden, basiert auf einer Technik, die als Hashing bezeichnet wird. Wir werden uns später noch näher damit befassen, was diese Technik genau beinhaltet. Für den Moment können wir uns den Hash-Algorithmus einfach als ein Verfahren vorstellen, bei dem ein „Fingerabdruck“ eines Datenblocks erstellt wird. Genau wie ein Fingerabdruck ist auch ein Hash (beinahe) einzigartig.

Ein gültiger Block muss mindestens 3 Dinge enthalten:

Die „Daten“ können so ziemlich alles sein, in der Regel handelt es sich dabei jedoch um einen kleinen Satz von Elementen: Informationen, die man früher auf einer Zeile in einem Verzeichnis aus Papier eingetragen hätte. Dazu gehören Datensätze wie Finanztransaktionsdaten, die GPS-Koordinaten für den Standort eines Schiffscontainers oder Herzfrequenz und Blutdruck eines Krankenhauspatienten. Auch eine Leerstelle oder ein Nullwert sind möglich, um anzuzeigen, dass zu einem bestimmten Zeitpunkt keine Daten aufgezeichnet wurden.

Der „Hash“ ist der Hashwert des Blockinhalts. In diesem Fall ist es der Hashwert der Daten und der vorherige Hash.

Der „vorherige Hash“ ermöglicht es uns, Blöcke kryptografisch miteinander zu verketten, beginnend mit dem ersten Block, der als „Genesis-Block“ bezeichnet wird. Der Genesis-Block ist ein Sonderfall und hat keinen vorherigen Hash, da er der erste Block in der Blockchain ist:

Diese kryptografische Verkettung mit dem vorherigen Block verleiht der Blockchain eine wichtige Eigenschaft. Werden beispielsweise die Daten in Block 1 in irgendeiner Form manipuliert, ändert sich der Hashwert für diesen Block. Der neue Hashwert für Block 1 stimmt damit nicht mehr mit dem Wert überein, der in Block 2 als „vorheriger Hash“ gespeichert ist. So ist es leicht, die Manipulation zu erkennen und zu melden, damit diese Änderung abgelehnt wird.

Es ist also die Verkettung der Blöcke, die die Integrität der gespeicherten Daten sicherstellt.

An dieser Stelle werden oft zwei Einwände vorgebracht: „Könnte man nicht einfach den Hashwert manipulieren?“ und „Könnte man nicht einfach die gesamte Kette durchgehen und auch alle Werte der „vorherigen Hashs“ ändern, um die Manipulation zu verschleiern?“

Um zu verstehen, warum keine dieser beiden Vorgehen rechnerisch machbar ist, müssen wir wissen, wie Hash-Algorithmen funktionieren.

Anforderungen an einen Hash-Algorithmus

Es gibt fünf Eigenschaften, die ein Hash-Algorithmus erfüllen muss, um in einer Blockchain effektiv zu sein:

  1. Deterministisch: Die gleiche Dateneingabe in den Algorithmus erzeugt immer dasselbe Hashwert-Ergebnis.
  2. Unidirektional: Die Originaldaten können nicht aus dem Hash rekonstruiert werden.
  3. Chaoseffekt: Selbst die kleinste mögliche Änderung der Originaldaten führt zu einem völlig anderen Hash.
  4. Schnelle Berechnung: Die Anwendung des Algorithmus auf einen Datenblock erfordert nur eine minimale Anzahl von Prozessorzyklen, sodass die Berechnungen schnell durchgeführt werden können.
  5. Kollisionstoleranz: Wenn Datensätze die Gesamtzahl der mit dem Algorithmus erzeugbaren Kombinationen überschreiten, wird ein Hash erzeugt, der mit einem bereits verwendeten Hash identisch ist – eine Kollision. Dies sollte nur äußerst selten auftreten, und der Algorithmus darf keine erzwungenen Kollisionen zulassen, da dies die Fälschung von Daten ermöglichen würde.

Ein Hash-Algorithmus, der diese Vorgaben erfüllt, nimmt Eingabedaten beliebiger Länge – vom Buchstaben „a“ bis zum gesamten Inhalt der Encyclopedia Britannica – und berechnet daraus sehr schnell eine Ausgabe mit fester Länge, die einen repräsentativen Fingerabdruck der Daten darstellt. Idealerweise ist ein sicherer Hash nicht von einer zufälligen Zuordnung zu unterscheiden, und selbst die kleinste Änderung der Daten führt zu einem völlig anderen Hash. Mit diesem Online-Hashgenerator bekommen Sie ein Gefühl dafür, wie Hash-Algorithmen praktisch funktionieren: SHA256 Hash Generator.

Rainbow-Tabellen: Obwohl die Hashfunktion unidirektional ist, die ursprünglichen Daten also nicht aus der Hash-Ausgabe rekonstruiert werden können, ergibt sich aus der deterministischen Eigenschaft von Algorithmen wie dem SHA256 (Secure Hashing Algorithm) der folgende Umstand: Wenn Sie die Eingabedaten bereits kennen (oder zumindest eingrenzen können), können Sie relativ schnell bestätigen, dass die richtigen Daten vorliegen, indem Sie sie mit einer Liste von Hash-Ausgaben für bekannte Eingaben abgleichen. Die letzte Verteidigungslinie zum Schutz von Passwörtern gegen Hacker, besteht darin, sie in gehashter Form zu speichern. Allerdings können Hacker mit den weithin verfügbaren Rainbow-Tabellen, in denen häufig verwendete Kennwörter zusammen mit ihrer Hash-Ausgabe aufgeführt sind, schwache und häufig verwendete Kennwörter leicht extrahieren, indem sie einfach die Tabelle durchgehen, bis sie den entsprechenden Hashwert finden. Ein Schutz gegen dieses Vorgehen besteht darin, den Hash komplexer zu machen, indem dem Passwort vor dem Hashing weitere Zeichensequenzen hinzugefügt werden, wodurch zumindest die gängigsten Rainbow-Tabellen unwirksam werden."


 

Kollisionsresistenz

Der wichtigste Maßstab für die Stärke eines Hash-Algorithmus ist seine Kollisionsresistenz. Sie gibt an, wie unwahrscheinlich es ist, dass zwei verschiedene Eingaben denselben Hash erzeugen.

Nach dem Schubfachprinzip würden wir annehmen, dass wir bei einer Anzahl von n möglichen Hashwerten und einer Anzahl von Eingaben, die um 1 höher ist als n (d. h. n + 1), aller Wahrscheinlichkeit nach einen zweimal auftretenden Hashwert erhalten. Für SHA256 würde das 2256 (oder 6436) möglichen Hashwerten entsprechen.

Allerdings ist das Universum weniger geradlinig als unsere Intuition nahelegen würde. Die Wahrscheinlichkeitsgesetze, insbesondere das sogenannte „Geburtstagsparadox“ (auch als „Geburtstagsproblem“ bezeichnet) besagt, dass die tatsächliche Wahrscheinlichkeit einer Kollision bei großen Zahlen der Quadratwurzel von n entspricht. Das bedeutet, dass wir „nur“ 2 128 Hashwerte berechnen können, bevor mit hoher Wahrscheinlichkeit eine Kollision auftreten wird.

Ein Rechenbeispiel zur Verdeutlichung der Größenverhältnisse: Mit einem Computer, der 232 Hashs pro Sekunde berechnet, dauert es ca. 296 Sekunden, bis eine Kollision auftritt. Das sind etwa 2,5 x 1021 Jahre und damit deutlich mehr als das aktuell angenommene Alter des Universums (1,4 x 1010 Jahre) – ganz sicher mehr als die Garantiezeit eines rund um die Uhr laufenden Computers.

Es gibt noch andere mathematische Operationen, die Hacker für Geburtstagsangriffe und ähnliche Kollisionsangriffe ausnutzen, aber für unsere Zwecke reicht es, zu wissen, dass der SHA256 diesen Angriffen bisher widerstanden hat.

 

Überblick

In diesem Teil haben wir uns mit den theoretischen Grundlagen der Blockchain beschäftigt: wie eine Blockchain Datenblöcke miteinander verkettet und die Daten dabei mithilfe von Hashfunktionen sichert. In Teil 2 beschäftigen wir uns mit dem Mining, der Verteilung aktiver Blockchains über Peer-to-Peer-Netzwerke und dem Umgang mit Fehlern und/oder Angriffen.

Mark completed his Electronic Engineering degree in 1991 and went on to work in real-time digital signal processing applications engineering, later moving into technical marketing.

21 Feb 2019, 13:53

Kommentare