Blockchain Technologie - Prof. Dr. Norbert
Pohlmann
Blockchain Technologie
Inhaltsverzeichnis
Was ist eine Blockchain Technologie?
Mit Hilfe der Blockchain Technologie werden Vertrauensdienste angeboten, die neue Möglichkeiten im Rahmen der Digitalisierung für mehr IT-Sicherheit und Vertrauenswürdigkeit anbieten. In einer Blockchain werden die Zusammenarbeit oder das Eigentum von digitalen Werten durch die Nodes eines Peer-to-Peer Netzwerkes mithilfe von smarten Cyber-Sicherheits- und Vertrauenswürdigkeitsmechanismen verwaltet und verifiziert.
Unterschiedliche Blickwinkel einer Blockchain
Die verschiedenen Disziplinen können die Blockchain Technologie aus sehr unterschiedlichen Blickwinkeln betrachten und bewerten.
Für einen Informatiker produziert die Blockchain-Technologie eine einfache Datenstruktur, die Blockchain, die Daten als Transaktionen in einzelnen Blöcken verkettet und in einem verteilten Peer-to-Peer-Netz redundant verwalten. Die Alternative wäre eine konventionelle Datenbank, die kontinuierlich von allen Teilnehmern repliziert wird.
Für die Cyber-Sicherheitsexperten hat die Blockchain Technologie den Vorteil, dass die Daten als Transaktionen in den einzelnen Blöcken manipulationssicher gespeichert werden können, das heißt, die Teilnehmer der Blockchain sind in der Lage, die Echtheit, den Ursprung und die Unversehrtheit der gespeicherten Daten (Transaktionen) zu überprüfen. Die Alternative wäre hier zum Beispiel ein PKI-System als zentraler Vertrauensdienstanbieter.
Für den Anwendungsdesigner bedeutet die Nutzung der Blockchain-Technologie eine vertrauenswürdige Zusammenarbeit zwischen verschiedenen Organisationen, ohne die Einbindung einer zentralen Instanz, eines PKI-Systems, Notars usw. Die Alternative könnte hier ein kostenintensiver Treuhänder sein, der die Zusammenarbeit und Eigentumsübertragung zwischen den verschiedenen Organisationen verwaltet und verifiziert. Da die Blockchain Technologie dies automatisiert macht, werden durch die vertrauenswürdige Zusammenarbeit die Prozesse auch sehr viel schneller und effektiver.
Die Blockchain Technologie als Kollaborations-Tool
Grundsätzlich wird mit der Blockchain Technologie eine Blockchain erzeugt, in der fälschungssichere, verteilte Datenstrukturen und in denen Transaktionen in der Zeitfolge protokolliert nachvollziehbar, unveränderlich und ohne zentrale Instanz abgebildet sind. Die Cyber-Sicherheitseigenschaften einer Blockchain-Technologie werden prinzipiell mit den folgenden Cyber-Sicherheitsmechanismen umgesetzt:
„verteilte/redundante Datenstrukturen (Verfügbarkeit der Daten)“, viele Nodes des Peer-to-Peer-Netzwerkes haben die Daten/Transaktionen in der Blockchain verteilt und redundant gespeichert
„Transaktionen in der Zeitfolge protokolliert nachvollziehbar, unveränderlich“, wird durch die Art der Verkettung mithilfe der Hashwerte „HashPrev“ und „Merkle Hash“ (Bitcoin-Technologie) über die Daten in den Transaktionen sichergestellt
„ohne zentrale Instanz abgebildet sind“, wird durch geeignete verteilte Vertrauenswürdigkeitsverfahren wie verteilte Konsensfindungsverfahren und verteilte Validierungsprozesse erzielt.
Mit der Blockchain Technologie werden neben der vertrauenswürdigen Zusammenarbeit auch Eigentumsverhältnisse (Digital Assets) direkter und effizienter als bislang gesichert und geregelt, da eine lückenlose und unveränderliche Datenaufzeichnung hierfür die Grundlage schafft. Alle Beglaubigungsprozesse werden schneller, sicherer und billiger. Aus diesem Grund wird die Blockchain auch als „Internet der Werte“ bezeichnet. Die Blockchain-Technologie stellt mit den unterschiedlichen Cyber-Sicherheitsmechanismen ein „programmiertes Vertrauen“ zur Verfügung, weil alle Cyber-Sicherheitseigenschaften als Security-by-Design inhärent in der Blockchain Technologie eingebunden sind.
Bei der Nutzung der Blockchain Technologie werden die Daten redundant, dezentral und manipulationssicher gespeichert, das heißt, die Teilnehmer an der Blockchain sind in der Lage, die Echtheit, den Ursprung und die Unversehrtheit der gespeicherten Daten jederzeit zu überprüfen.
Was sind Anwendungsbereiche einer Blockchain?
Insbesondere im Bereich der Verifizierung von Zeugnissen, Berechtigungen, Beglaubigungen, … wird es in der nahen Zukunft viele Anwendungen geben, die die Digitalisierung von Verwaltungsprozessen vertrauenswürdig und sicher möglich machen. Ein weiterer wichtiger Anwendungsbereich der Blockchain Technologie ist eine vertrauenswürdige und automatisierte Zusammenarbeit zwischen verschiedenen Organisationen, die Prozesse sehr viel schneller, effektiver und kostengünstiger umsetzen lässt. In der Zukunft wird Self-Sovereign Identity auf der Basis von Blockchain Technologie eine wichtige Rolle spielen. Eine „Self-Sovereign Identität (SSI)” erlaubt Anwendern, die Kontrolle über ihre eigenen Daten zu behalten. Die Anwender bestimmen selbst, welche Attribute (persönliche Daten) bei einem Authentifizierungsvorgang oder welche digitalen Nachweise übermittelt werden.
Aufbau einer Blockchain Technologie
Im Folgenden werden Elemente, Prinzipien, Strukturen und Architektur einer Blockchain-Technologie als Grundlagenwissen beschrieben.
Blockchain: Daten
Mit der Blockchain-Technologie wird eine gemeinsame Blockchain erzeugt, die eine einfache Datenstruktur darstellt. Die Daten werden in der Blockchain in einzelnen, chronologisch miteinander verketteten Blöcken als Transaktionen verwaltet. Die Daten werden in Transaktionen manipulationsgesichert in Blöcken der Blockchain gespeichert, siehe auch Abschnitt Transkationen. Jede Node hat eine eigene Blockchain-Version, daher sind die Daten verteilt und redundant vorhanden, das heißt, es besteht eine sehr hohe Verfügbarkeit der Daten. Eine Blockchain kann sehr groß werden, wie beispielsweise die Bitcoin-Blockchain etwa 354G Byte groß ist (Stand: Juli 2021).
Die grauen rechteckigen Kästchen in der Abbildung sind Transaktionen, die gelben Quadrate sind die Daten in der Transaktion, der grüne Schlüssel ist der öffentliche Schlüssel des Blockchain-Teilnehmers, der die Transaktion erstellt und signiert hat. Das rote „Sign“-Symbol ist die Signatur unter der Transaktion. Der rote „HashPrev“ ist der Hashwert über den Vorgänger-Block-Header, mit dem die Verkettung umgesetzt wird. Alle Blöcke zusammen bilden die Blockchain (Block (1) bis Block (n)).
Blockchain: Block
Ein Block in einer Blockchain ist ein strukturierter Datensatz, der im Prinzip beliebige Transaktionen mit Daten enthalten kann und vor Manipulationen gesichert ist.
Erstellung eines neuen Blockes In definierten Zeitintervallen wird ein neuer Block von der Node erstellt, die im Konsensfindungsverfahren ausgewählt wurde. Diese wählt aus, welche Transaktionen in welcher Reihenfolge in diesem Block enthalten sind (zumindest bei den gängigsten Konsensverfahren für öffentliche Blockchains). Nachdem dieser neue Block von der Node versandt wurde, verteilt er sich anschließend über das Peer-To-Peer-Netzwerk weiter. Alle anderen Nodes validieren auch den empfangenen neuen Block. Die verteilte Validierung aller Blöcke in den verschiedenen Nodes ist wichtig, um Vertrauen aufzubauen. Zum Beispiel wird bei der Bitcoin-Blockchain alle zehn Minuten ein neuer Block erstellt. Was die Blockchain interessant macht, ist der sogenannte Block-Header. In der Abbildung ist ein Bitcoin-Blockchain-Block dargestellt.
Im Block-Header ist die „Version“ und ein „Zeitstempel“ sowie ein „Difficulty“ und „Nonce“ enthalten. „Difficulty“ und „Nonce“ sind für das Konsensfindungsverfahren wichtig. Der Hashwert „HashPrev“ realisiert die Blockverkettung und der „Merkle Hash“ sorgt für die Integrität der Transaktionsdaten in einem Block. Durch die clevere Nutzung von Hashfunktionen können interessante Cyber-Sicherheitseigenschaften umgesetzt werden.
Element: HashPrev Im Element „HashPrev“ wird der jeweilige aktuelle Hashwert des Block-Headers vom Vorgänger Block (Block-Headern−1) gespeichert. Dieser Hashwert, Hash-Prevn, wird dabei über den gesamten letzten Block-Header – inklusive des Hashwertes des Vorgängerblockes (HashPrevn−1) – generiert, wodurch die Verkettung der Blöcke manipulationssicher umgesetzt werden kann.
Jeder Block in der Blockchain kann im Prinzip gelesen und überprüft werden. In den Blöcken finden sich die verschiedenen Daten in Transaktionen, die in der Blockchain gespeichert werden. Blöcke können auf ihre Integrität geprüft werden, indem getestet wird, ob der aktuelle Hashwert eines Blockes (Aktueller-Hashwertn) mit dem gespeicherten Hashwert im Folgeblock (HashPrevn+1) übereinstimmt. Der erste HashPrev1 wird mit einem definierten Wert vorgegeben.
Dies ist für jede Node ohne Weiteres möglich, da jede Node im Normalfall alle Informationen innerhalb eines Blockes lesen kann. Soll ein neuer Block hinzugefügt werden, so kann dieser nicht einfach an die Blockchain angehängt werden. Für jeden neuen Block muss die Richtigkeit des Blockes geprüft und validiert und mithilfe eines Konsensfindungsverfahrens bestimmt werden, welche Node des P2P-Blockchain-Netzwerkes einen Block mit ausgewählten Transaktionen hinzufügen darf, damit es nicht möglich ist, die Blockchain zu manipulieren. Die Blockverkettung mithilfe HashPrev-Hashwerte sorgt für die Cyber-Sicherheitseigenschaft, dass in einer Blockchain keine Daten gelöscht werden können. Diese Cyber-Sicherheitseigenschaft kann in einer rechtlichen Situation problematisch sein, wie zum Beispiel bei der EU-Datenschutzgrundverordnung, bei der ein Recht auf Löschen besteht, aber auch, wenn nicht gewollte Daten, wie zum Beispiel Kinderpornografie, in der Blockchain gespeichert sind. Durch die Blockverkettung können die Daten in einer Blockchain nicht gelöscht werden.
Element: Merkle Hash Der „Merkle Hash“ wird verwendet, um aus den vielen Transaktionen (T) in einem Block einen zusammenfassenden Hashwert zu bilden (Merkle Hash). Die Blätter des Merkle-Baums sind die Hashwerte der Transaktionen hi = H (Ti). Jeder Knoten im Merkle-Baum wird als Hashwert H (h1 || h2) seiner Kinder h1 und h2 gebildet. Dabei ist h1 der Hashwert der Transaktion 1 und h2 der Hashwert der Transaktion 2 und „||“ die Verkettung, Konkatenation der Hashwerte und so weiter.
Der „Merkle Hash“ steht im Block-Header und kann daher für die Überprüfung der Integrität der Daten und Transaktionen in einem Block verwendet werden. Damit kann die Cyber-Sicherheitseigenschaft „Transaktionen in der Zeitfolge protokolliert nachvollziehbar, unveränderlich“ realisiert werden.
Blockchain: Transaktionen
Alle Daten innerhalb der Blöcke werden als Transaktionen gespeichert. Transaktionen enthalten Daten, die in der Zeitfolge protokolliert (chronologisch), nachvollziehbar, unveränderlich und ohne zentrale Instanz in der Blockchain abgebildet sind. Transaktionen werden vom Blockchain-Teilnehmer erstellt und signiert. Die Daten in den Transaktionen können Kontostände, Werte, Attribute, Zertifikate, Sensor-Daten, Industrie-Daten, Quelltexte, Merkmale usw. oder allgemein digitale Werte sein. Eine Transaktion enthält auch immer den Public-Key der entsprechenden Blockchain-Adresse sowie die Signatur des Blockchain-Teilnehmers, der die Transaktion erstellt und signiert hat.
Die Transaktionen enthalten bei Bitcoin im Wesentlichen folgende Inhalte: • die ID der Transaktion (Hashwert) • Meta-Data • Inputs • Outputs
Die Meta-Daten beinhalten die Versionsnummer, die Anzahl der eingehenden Beträge, die Anzahl der ausgehenden Beträge sowie die Transaktionsgröße in Bytes. Bei den Inputs handelt es sich um die eingehenden Beträge, das sind die Anzahl der zu verschickenden Bitcoins und die Blockchain-Adresse (Kontonummer), von der diese verschickt werden. Außerdem steht hier die vom Blockchain-Teilnehmer erstellte Signatur. Die einzelnen Outputs enthalten jeweils die Beträge, die verschickt werden und die jeweiligen Empfänger-Adressen.
Signatur unter einer Transaktion Jede Transaktion, die einer Blockchain hinzugefügt werden soll, muss zunächst mit dem Private-Key für die entsprechende Blockchain-Adresse m aus der eigenen Wallet (GSAm) des Blockchain-Teilnehmers signiert und an alle Nodes über das P2P- Blockchain-Netzwerk gesendet werden. Alle Nodes sammeln die Transaktionsdaten, damit sie in der Lage sind, einen Block daraus erstellen zu können.
sx Signatur der Transaktionx S Signaturfunktion H One-Way-Hashfunktion Daten Daten, die zu einer Transaktion gehören (Coins, Programme, Werte, …) GSAm Geheimer Schlüssel aus der Wallet, der die Adresse „m“ zugeordnet ist ÖSAm Öffentlicher Schlüssel aus der Wallet, der die Adresse „m“ zugeordnet ist
Jede Node im P2P-Blockchain-Netzwerk kann die Identität der Blockchain-Adresse, welche die Transaktion erstellt und abgesendet hat, und den Inhalt der Transaktion verifizieren.
Blockchain-Adresse „m“ = fa ( ÖSAm )
fa Funktion zur Berechnung der Blockchain-Adresse ÖSAm steht in der Transaktion (Öffentlicher Schlüssel der Blockchain- Adresse „m“)
Verifikation, dass die Transaktion des Eigentümers der Blockchain-Adresse „m“, Blockchain-Teilnehmer, signiert worden ist:
V ( Transaktionx, sx, ÖSAm ) = true?
V Verifikationsfunktion ÖSAm Öffentlicher Schlüssel aus der Wallet/Transaktion, ist Blockchain-Adresse „m“ zugeordnet
In der Abbildung unten wird eine neue und signierte Transaktion Tx vom entsprechenden Blockchain-Teilnehmer über die Node N4 über das P2P-Blockchain-Netzwerk an alle Nodes verteilt, die zu dieser Blockchain gehören. Die Nodes, die nicht direkt mit der N4 verbunden sind, bekommen die Transaktion von einer direkt verbundenen Node weitergeleitet. Alle Nodes speichern diese Transaktion in ihrem Transaktionsspeicher, bis das Konsensfindungsverfahren eine Node bestimmt, die einen neuen Block erstellen soll. Durch diese Verfahren sind im Prinzip alle Nodes in der Lage, einen neuen Block zu verifizieren, zu erstellen und zu verteilen. Jede Node, die dann den Block anhängen darf, bestimmt, welche Transaktionen in einen neuen Block aus dem Transaktionsspeicher mit aufgenommen werden. Kriterien sind: maximale Größe der Blocks, Transaktionsgebühren usw. In dieser Zeit gilt die Transaktion noch als pending, das heißt, auch noch nicht als unumkehrbar in der Blockchain verstetigt. In dieser Wartezeit im Transaktionsspeicher können die Transaktionen durch eine sogenannte Double-Spend-Transaktion durch den jeweiligen Blockchain-Teilnehmer rückgängig gemacht werden. Double-Spend bedeutet, dass eine Transaktion doppelt gesendet wird und dadurch ungültig wird. Das heißt, um eine Transaktion rückgängig zu machen, kann der Initiator der Transaktion zum Beispiel eine zweite Transaktion mit den gleichen Inputs, die er sich selbst überweist, umsetzen. Wichtig ist, dass diese zweite Transaktion höhere Gebühren haben muss, um sicherzustellen, dass diese Transaktion vor der ursprünglichen ausgeführt wird und somit die ursprüngliche ungültig wird.
Jede Blockchain hat Nodes mit der entsprechenden Blockchain-Technologie, die als Peer-to-Peer-Blockchain-Netzwerk die vielfältigen Mechanismen der Blockchain-Technologie umsetzen. Jede Node hat eine aktuelle Blockchain-Version mit allen Blöcken gespeichert, die fortlaufend erweitert wird. Jede Node, die zu einer bestimmten Blockchain gehört, hat im Prinzip die gleichen Rechte, die Blockchain und neue Transaktionen zu speichern und neue Blöcke hinzuzufügen (validieren). Jede Node kann signierte Transaktionen mit Daten im Peer-to-Peer-Blockchain-Netzwerk verteilen. Die Transaktionen werden mit dem geheimen Schlüssel aus der Wallet von dem entsprechenden Blockchain-Teilnehmer signiert. Die Wallet kann in der Node gespeichert sein, aber auch außerhalb. Eine Node ist ein Teilnehmer im Peer-to-Peer-Network und Blockchain-Teilnehmer, wenn sie auch Zugriff auf die Wallet hat (Full Node). Architektur und Kommunikations-, Sicherheits- und Vertrauensmechanismen einer Node. In der Node sind sehr unterschiedliche Funktionen vorhanden, die für eine reibungslose, robuste, sichere und vertrauenswürdige Nutzung der Blockchain-Technologie verantwortlich sind.
P2P-Funktionen Hier sind die Standard-Funktionen vereint, die für den robusten Betrieb eines Peer-to-Peer-Netzwerks notwendig sind. Beispiele sind: Suchfunktion (lookup), Verteilungsfunktion usw.
Verteilte Validierung In diesem Funktionsblock sind Validierungsfunktionen vorhanden, die helfen, verteilt eine vertrauenswürde Version der Blockchain auf jeder Node verwalten und verifizieren zu können. Funktionen sind zum Beispiel Überprüfung der Signaturen in den Transaktionen sowie die Syntax und Semantik der Daten und die Validierung der Hashwerte eines neuen Blocks.
Konsensfindung Die Konsensfindung stellt Funktionen zur Verfügung, die eine Node auswählt, die für die Erstellung eines nächsten Blocks verantwortlich ist. Funktionen sind Proof-of-Work (Mining), Proof-of-Stake und weitere Konsensverfahren sowie die Erstellung eines neuen Blocks.
Kryptografie Mithilfe der Kryptografie-Funktionen werden die Transaktionen gesichert. Funktionen und Mechanismen sind: One-Way-Hashfunktionen, Publik-Key-Verfahren, Hardware-Sicherheitsmodule für die sichere Speicherung von Schlüssel und eventuell Verschlüsselungsverfahren für die Verschlüsselung von Daten.
Sonstige Hier sind weitere Funktionen vereint, die zum Beispiel für die Verwaltung der Blockchain notwendig sind, indizierte Datenbanken und die eigentliche Blockchain.
Blockchain: Teilnehmer
Der Blockchain-Teilnehmer ist die Instanz, die Transaktionen mithilfe der Schlüssel aus der Wallet signieren kann, weil er die Wallet besitzt oder den Zugriff darauf hat. Der Blockchain-Teilnehmer kann eine Person, aber auch ein IT-System oder ein Prozess in einem IT-System, wie Auto, Payment-System, Produktionssystem usw., sein.
Blockchain: Wallet
Eine Wallet ist eine Datenstruktur, in der die geheimen und öffentlichen Schlüssel eines Public-Key-Verfahrens eines Blockchain-Teilnehmers gespeichert sind.
Aus dem öffentlichen Schlüssel wird mithilfe einer Funktion
Blockchain-Adresse = fa (öffentlicher Schlüssel)
die eindeutige Kennung, die Blockchain-Adresse, berechnet. Mit dem geheimen Schlüssel aus der Wallet wird eine Transaktion von dem entsprechenden Blockchain- Teilnehmer signiert. Der geheime und öffentliche Schlüssel ist der Blockchain-Adresse zugeordnet. Eine Wallet wird von dem Blockchain-Teilnehmer verwendet. Mithilfe des öffentlichen Schlüssels ist es möglich zu verifizieren, ob Transaktionen von einer bestimmten Blockchain-Adresse („Wallet“) erstellt wurden. Die grünen Schlüssel-Symbole stellen den öffentlichen Schlüssel und die roten Schlüssel-Symbole den geheimen Schlüssel eines Public-Key-Verfahren einer bestimmten Blockchain-Adresse dar. Angriffe auf eine Blockchain passieren sehr häufig auf die Wallet, da mit den geheimen Schlüsseln einfach manipuliert werden kann. Wer den geheimen Schlüssel einer Wallet besitzt, ist in der Lage, gültige Transaktionen zu erstellen und damit zu manipulieren. Wallets können in verschiedenen Formen existieren beziehungsweise gespeichert werden. Dazu zählt zum Beispiel eine einfache Datei. Es ist aber auch möglich, eine Wallet auf einem Hardware-Sicherheitsmodul, wie zum Beispiel USB-Stick, für Personen oder High-Level Security Module (HSM) für Server zu realisieren. Eine weitere Möglichkeit ist es, die Wallet auf einem Papierzettel in Form eines QR-Codes zu halten. Struktur: Unterschiedliche Arten von Nodes aus der Sicht der Wallets, Blockchain und Teilnehmer In der Praxis gibt es unterschiedliche Ausprägungen von Nodes, Wallets und Blockchain-Teilnehmern. Nodes, die die gesamte Blockchain und eine Wallet speichern, werden als „Full Nodes“ bezeichnet.
Für ein portables IT-System, wie zum Beispiel ein Smartphone oder IoT-Geräte wie Autos, ist es allerdings nicht umsetzbar, eine eventuell mehrere Gigabyte große Blockchain zu speichern. Solche Nodes werden auch als „Light Node“ bezeichnet. Sie speichern nur die aktuellen beziehungsweise für sie „relevantesten“ Blöcke, das sind die Blöcke, an denen die Node selber beteiligt ist. Die Wallet ist sicher im IT-System gespeichert, zum Beispiel in einem Hardware-Sicherheitsmodul (HSM).
Zudem gibt es auch noch sogenannte „Service Nodes“, welche keine direkten Teilhaber sind. Endgeräte, wie Smartphones, nutzen einen Dienst, der virtuelle Wallets anbietet. Die Aktivierung der Dienste muss bei den Service Nodes sicher umgesetzt werden, um Missbrauch zu vermeiden.
Die Blockchain-Adresse wird über den verwendeten öffentlichen Schlüssel, der in der Wallet und in jeder Transaktion steht, repräsentiert. Aus dem öffentlichen Schlüssel wird mithilfe einer Blockchain-Adress-Funktion – Blockchain-Adresse = fa (öffentlicher Schlüssel) – die eindeutige Kennung, Blockchain-Adresse, berechnet.
Berechnung der Blockchain-Adresse Die Blockchain-Adresse bei Bitcoin wird wie folgt berechnet.
Durch die Art und Weise, wie die Blockchain-Adressen berechnet werden, sind sie im Prinzip pseudonym. Solange die Blockchain-Adresse und der öffentliche Schlüssel nicht einem Blockchain-Teilnehmer zugeordnet werden können, ist es nicht möglich, diesen zu identifizieren. Die Pseudonymität wird dann aufgehoben, wenn eine Transaktion einem Blockchain-Teilnehmer zugeordnet werden kann. Ein Beispiel ist die Schnittstelle zu Zahlungssystemen. Immer wenn Geld von einem Bitcoin-Konto auf ein Giro-Konto oder umgekehrt transferiert wird, wird deutlich, wem ein Bitcoin-Konto (Blockchain-Adresse) gehört. Aber auch die Darstellung eines Bitcoin-Kontos auf einer Webseite stellt einen Zusammenhang zum Eigentümer her.
Blockchain-Prinzip: Keine „zentrale Instanz“
Bei der Nutzung einer Blockchain-Technologie gibt es keine „zentrale Instanz“, sondern es sind verschiedene Cyber-Sicherheits- und Vertrauenswürdigkeitsmechanismen auf all ihren Nodes in einem Peer-to-Peer-Blockchain-Netzwerk verteilt. Jeder kommuniziert über das Internet direkt miteinander. Damit gibt es keinen „Single Point of Failure“ mehr und Logs beziehungsweise Back-ups müssen nicht besonders berücksichtigt werden, da die Datenstruktur sich selbst regeneriert. Durch das Peer-to-Peer-Blockchain-Netzwerk und die verteilten Nodes mit der Blockchain ist eine hohe Robustheit sowie die Redundanz der Daten vorhanden, weil jede Node eine Blockchain-Version gespeichert hat.
Damit ein neuer Block in die Blockchain aufgenommen werden kann, muss dieser zuerst validiert werden. Es muss sichergestellt werden, dass sämtliche darin enthaltenen Transaktionen echt und nicht manipuliert worden sind. Da beim Blockchain-Konzept keine zentrale Instanz existiert, die einen neuen Block validieren kann, werden verteilte Konsensfindungs- und Validierungsverfahren benötigt, die helfen, diese Aufgabe sicher und vertrauenswürdig umsetzen zu können. Das Konsensfindungsverfahren ist dazu da, dass ein Konsens gefunden wird und sich untereinander auf einen „korrekten“ Zustand geeinigt wird. Das Konsensfindungsverfahren hat dabei die Aufgabe, aus dem Peer-to-Peer-Blockchain-Netzwerk eine Node auszuwählen, die als nächstes aus den gesammelten Transaktionen diejenigen heraussuchen darf, aus denen ein neuer Block zusammengestellt, validiert und der Blockchain hinzufügt werden soll.
Jede Transaktion wird vom Blockchain-Teilnehmer signiert, der für die Daten verantwortlich ist und über die Nodes per Peer-to-Peer-Blockchain-Netzwerk verteilt. Das heißt, im Prinzip hat jede Node alle Transaktionen und kann einen neuen Block erstellen. Ein Konsensfindungsverfahren bestimmt, welche Node konkret als nächstes einen neuen Block erstellen, validieren und verteilen darf. Dabei entscheidet dann die ausgewählte Node anhand von Kriterien, wie Länge, Transaktionsgebühren usw., welche Transaktionen aus dem Transaktionsspeicher in einem neuen Block aufgenommen werden.
Verteilte Validierung und Hinzufügen eines neuen Blocks Die ausgewählte Node nimmt nur die Transaktionen in einen neuen Block auf, die von Semantik und Syntax her richtig sind und die digitalen Signaturen der Blockchain-Teilnehmer der Transaktionen, die mit der Blockchain-Adresse übereinstimmen.
Wenn alle Transaktionen in Ordnung sind, wird mit diesen ein neuer Block mit HashPrev, Merkle Hash usw. generiert und an alle anderen Nodes des entsprechenden Peer-to-Peer-Blockchain-Netzwerkes verteilt. Jede Node hat dadurch jederzeit eine vollständige Version der aktuell gültigen Blockchain. Alle Nodes des Peer-to-Peer-Blockchain-Netzwerkes überprüfen die empfangenden neuen Blöcke der ausgewählten Nodes, ehe sie diese der eigenen Blockchain-Version hinzufügen. Dafür kontrollieren sie sämtliche im Block enthaltenen Transaktionen. Außerdem kontrollieren sie den Block selbst darauf, ob zum Beispiel der Proof-of-Work erbracht ist und ob die Hashwerte korrekt sind. Sobald ein Block oder auch nur eine einzige in dem Block enthaltene Transaktion eine der Regeln verletzt, wird der Block abgelehnt und nicht in die Blockchain der eigenen Version aufgenommen. Das geschieht selbst dann, wenn jede andere Node der Blockchain den Block für zulässig hält. Es ist essentiell für die Sicherheit und Vertrauenswürdigkeit der Blockchain, dass sich alle Nodes ihr Urteil selbst bilden. Dieses Prinzip des Distributed Consensus macht die Konsistenzprüfung der Transaktionen vollkommen unabhängig von einer einzelnen vertrauenswürdigen Instanz. Für die Herstellung des Konsenses gibt es verschiedene Verfahren zwischen den Nodes, die festlegen, wer für den Abschluss neuer Transaktionen und das Hinzufügen eines bestimmten Blocks an die Blockchain verantwortlich ist.
Proof-of-Work Konsensfindungsverfahren
Proof-of-Work (PoW) war die erste und ist die aktuell gebräuchlichste Methode zur Konsensfindung und wird zum Beispiel aktuell von der Bitcoin-Blockchain genutzt. Hier konkurrieren die einzelnen Nodes als sogenannte „Miner“ untereinander, indem sie jeweils ein mathematisches Problem – dessen Schwierigkeit sich dynamisch ändern lässt – lösen müssen. Jeder Miner einer Node muss einen Hashwert für einen Block finden, der einem bestimmten vorgegebenen Muster entspricht. Dieses Muster wird vom Blockchain-Netzwerk eigenständig festgelegt, wobei sich die Schwierigkeit mit der Anzahl der vorgegebenen Stellen des Musters erhöht. Zum Beispiel soll ein Hashwert fünf führende Nullen als Muster besitzen, siehe Difficulty-Feld im Block-Header.
Die einzige Möglichkeit für die Nodes, diesen speziellen Hashwert zu erzeugen, ist die Veränderung des NONCE-Wertes im Block-Header. Somit wird die Konsensfindung eines Blockes zu einem Glückspiel für die Miner in einer Node, da diese nun einen NONCE-Wert für diesen Block-Header finden müssen, der die Eigenschaften des zu suchenden Hashwertes ergibt. Der Miner, der dieses Problem als erstes gelöst hat, darf den nächsten Block an die Blockchain anhängen. Die Komplexität des Problems wird in der Praxis bei der Bitcoin-Blockchain so gewählt, dass die Aufgabe im Schnitt 10 min dauern soll. Das bedeutet, dass die Transaktionen nur alle 10 min in einem Block der Blockchain hinzugefügt werden und gültig sind.
Ablauf des Minings
1. Alle Miner generieren eine Nonce (Zufallszahl).
2. Diese Zufallszahl mit allen weiteren Daten im Block-Header wird als Input von Hashfunktionen berechnet.
3. Es wird dann überprüft, ob der berechnete Hashwert den Kriterien vom Feld Difficult (bestimmte Anzahl von führenden Nullen) im Block-Header entspricht.
Wenn ja, hat der entsprechende Miner gewonnen. Wenn nein, wird eine neue Zufallszahl generiert und ein neuer Versuch gestartet.
Bewertung Proof-of-Work (PoW)
Es kann passieren, dass zwei Miner zur gleichen Zeit den notwendigen Hashwert berechnen. Wenn die Nonce 32 Bit lang ist, gibt es 232 verschiedene Kombinationen (42.949.667.296).
Die Berechnung des mathematischen Problems beim Proof-of-Work-Konsensfindungsverfahren kostet sehr viel Energie. Laut dem sogenannte “Cambridge Bitcoin Electricity Consumption Index” lag der Energieverbrauch 2020 durch die Bitcoin-Technologie bei 115 Terrawattstunden (TWh). Das ist der jährliche Stromverbrauch von Pakistan.
Practical Byzantine Fault Tolerance (PBFT) ist ein Verfahren, welches böswillige Nodes toleriert. Hier gibt es eine ausgewählte Gruppe an „Validating Peers“, die alle Transaktionen erhalten. Sie wählen untereinander einen „Leader“ aus; dieser gibt eine genaue Reihenfolge der Transaktionen vor, in der diese in den Block eingefügt werden. Diese wird von ihm wiederum an alle „Validating Peers“ gebroadcasted. Anschließend führt jeder „Validating Peer“ sämtliche Transaktionen in dem Block in der vorgegebenen Reihenfolge aus und berechnet den Hashwert. Dieses Ergebnis wird wiederum an die anderen „Validating Peers“ gebroadcasted und mit deren Ergebnissen verglichen. Wenn mehr als 2/3 der anderen Peers dasselbe Ergebnis haben, wird der Block endgültig zur lokalen Kopie der Blockchain verstetigt.
Mechanismus: Byzantine Fault Tolerance (Kompensation von fehlerhaften Komponenten)
Ein zuverlässiges System muss dazu in der Lage sein, den Ausfall einer oder mehrerer Komponenten zu kompensieren. Eine fehlerhafte Komponente kann ein Verhalten zeigen, das häufig übersehen wird, nämlich das Senden von widersprüchlichen Informationen an verschiedene Teile des Systems. Mit dieser Art von Fehler in einem System umzugehen, wird abstrakt im „Byzantine Generals Problem“ ausgedrückt. Die Byzantine Fault Tolerance (byzantinische Fehlertoleranz) befasst sich mit diesem Problem und bietet eine Lösung, mit der zuverlässig Systeme implementiert werden können, auch wenn fehlerhafte Komponenten vorhanden sind.
Das Problem kann folgendermaßen beschrieben werden:
Das klassische Problem kann auch anhand eines militärischen Beispiels gezeigt werden, dem Problem der byzantinischen Generäle.
Bei diesem Problem lagert eine rote Armee im Tal und die blauen Generäle halten ihre Armeen auf den nahe gelegenen Bergen bereit. Die Aufgabe der blauen Generäle ist, festzustellen, wieviel Soldaten sie zusammen haben.
Die Kommunikation erfolgt paarweise und ist unmittelbar und perfekt, aber m der Generäle sind Verräter (fehlerhaft) und verhindern aktiv, dass die loyalen Generäle eine Einigung erzielen, indem sie ihnen fehlerhafte und widersprüchliche Informationen bereitstellen.
Die Frage ist, wie loyalen Generäle zu einer Einigung kommen können?
Wir gehen davon aus, dass jeder General weiß, wie viele Leute er hat.
Das Ziel ist, dass die Generäle ihre Truppenstärke austauschen, sodass nach Abschluss des Algorithmus jeder General einen Vektor der Länge n besitzt, der der Gesamtstärke aller Armeen entspricht.
Ist General i loyal, enthält Element i seine Truppenstärke, andernfalls ist es undefiniert.
In diesem Beispiel wird der Algorithmus für den Fall von n=4 und m=1 dargestellt
Für diese Parameter führt der Algorithmus vier Schritte aus.
Im ersten Schritt sendet jeder General eine Nachricht an jeden anderen General, indem er seine Truppenstärke mitteilt.
Loyale Generäle sagen die Wahrheit; Verräter können jedem anderen General eine andere Lüge auftischen.
In dem Beispiel sehen wir, dass General 1 1K Mann meldet, General 2 meldet 2K, General 3 lügt jeden an, gibt x, y und z an und General 4 meldet 4K
Im zweiten Schritt werden die Ergebnisse der Ankündigungen aus dem ersten Schritt in Form von Vektoren gesammelt.
General 1 ( 1, 2, x, 4 )
General 2 ( 1, 2, y, 4 )
General 3 ( 1, 2, 3, 4 )
General 4 ( 1, 2, z, 4 )
Im dritten Schritt übergibt jeder General seinen Vektor an jeden anderen General. Jeder General erhält 3 Vektoren, jeweils von einem der anderen Generäle.
General 1 General 2 General 4 ( 1, 2, y, 4 ) ( 1, 2, x, 4 ) ( 1, 2, x, 4 )
( a, b, c, d ) ( e, f, g, h ) ( 1, 2, y, 4 )
( 1, 2, z, 4 ) ( 1, 2, z, 4 ) ( i, j, k, l )
Auch hier lügt General 3 und erfindet 12 neue Werte, a bis l.
Im vierten Schritt wertet jeder General das i-te Element jedes neu empfangenen Vektors aus.
Hat ein Wert eine Mehrheit, wird er in den Ergebnisvektor übernommen.
Hat kein Wert eine Mehrheit, wird das entsprechende Element des Ergebnisvektors als UNKNOWN markiert.
In diesem Beispiel sehen wir, dass die Generäle 1, 2 und 4 eine Einigung mit
( 1, 2, UNKNOWN, 4 )
gefunden haben, was das korrekte Ergebnis darstellt.
Der Verräter kann die Informationen für die loyalen Generäle nicht verfälschen; er konnte ihre Arbeit nicht unterminieren.
In einem System mit m fehlerhaften Prozessen kann nur dann eine Einigung erzielt werden, wenn es 2m+1 (mehr als 2/3) korrekt funktionierende Prozesse gibt, also insgesamt 3m+1 Prozesse.
Mit Konsensverfahren auf der Basis von Byzantine Fault Tolerance kann der Konsens auch beim Ausfall von bis zu 1/3 der Nodes zuverlässig arbeiten.
Alternative Konsensfindungsverfahren einer Blockchain Technologie
Neben den Grundmethoden gibt es noch weitere Methoden zur Konsensfindung, wie zum Beispiel:
Istanbul Byzantine Fault Tolerance (IBFT) Der Istanbul BFT Algorithmus wurde durch den PBFT inspiriert. Der ursprüngliche PBFT wurde jedoch angepasst optimiert, um mit Blockchain noch besser zu funktionieren. Der IBFT ist für private Blockchains ein bewährter Algorithmus.
Yet Another Consensus Bei Yet Another Consensus (YAC) handelt es sich um einen Algorithmus für delegierte byzantinische Fehlertoleranz. Es handelt sich um einen Konsensverfahren für private, also zugangsbeschränkte Blockchains.
Proof of Elapsed Time Beim Proof of Elapsed Time (PoET) Algorithmus wird zufällig und fair entschieden, wer über einen neuen Block entscheiden darf. Diese Entscheidung basiert auf der Wartezeit der Knoten. Jeder Knoten im Netzwerk bekommt eine zufällige Wartezeit zugeordnet. Für diese zugeordnete Zeit lang muss der Knoten „schlafen gehen“. Der Knoten mit der kürzesten Wartezeit wird als erster wieder aktiv und gewinnt somit den Block.
Paxos Paxos ist ein verhältnismäßig alter Konsensalgortihmus von 1989. Wenn ein Client einen Befehl auf einem bestimmten Knoten ausführt, ernennt sich der Knoten selbst zum Leader. Diese Ausführung wird mit der höchsten Nummer versehen, die dieser Knoten gesehen hat. Der Konsens zwischen den Knoten wird durch ein 2-Phasen-Commit-Protokoll erreicht.
Raft Raft ist ein Konsensalgorithmus, der ein Ergebnis liefert, das dem von (multi-)Paxos entspricht und genauso effizient ist wie Paxos. Seine Struktur ist anders als die von Paxos, was Raft verständlicher als Paxos macht und auch eine bessere Grundlage für den Aufbau praktischer Systeme bietet.
Weitere Informationen zum Begriff “Blockchain Technologie”:
Lehrbuch Cyber-Sicherheit – Das Lehrbuch für Konzepte, Mechanismen, Architekturen und Eigenschaften von Cyber-Sicherheitssystemen in der Digitalisierung
Mit Hilfe der Blockchain Technologie werden Vertrauensdienste angeboten, die neue Möglichkeiten im Rahmen der Digitalisierung für mehr IT-Sicherheit und Vertrauenswürdigkeit anbieten.
Author
Prof. Norbert Pohlmann
Publisher Name
Institut für Internet-Sicherheit – if(is)
Publisher Logo
Blockchain Technologie Prof. Dr. Norbert Pohlmann - Cyber-Sicherheitsexperten