08.02.2023
Der byzantinische Fehler ist ein Begriff aus der Computerwissenschaft. Er bezieht sich grundsätzlich auf eine fehlerhafte Kommunikation innerhalb eines verteilten Systems.
Ein verteiltes System ist eines, das auf mehreren Computern oder Prozessoren läuft. Sie sind miteinander verbunden und kommunizieren. Beispiele dafür sind Cloud-Computing oder Blockchains.
Bei diesen verteilten Systemen wird - in Bezug auf die Computer oder Prozessoren - oft auch von einzelnen Knoten gesprochen, aus denen sie bestehen. Ein byzantinischer Fehler bedeutet, dass einer oder mehrere dieser Knoten glauben, dass andere ausgefallen sind, obwohl das nicht stimmt. Dadurch können keine Nachrichten mehr untereinander ausgetauscht werden. Das Netzwerk wird quasi geteilt.
Das Ganze basiert auf dem sogenannten Problem der byzantinischen Generäle. Es beschreibt das Problem der verschiedenen Parteien, in einem dezentralen oder verteilten System einen Konsens zu finden.
Der Name bezieht sich auf das Byzantinische Reich, das für seine politischen Intrigen und militärischen Verrat bekannt war. Ein einzelner Verräter kann eine Stadt von innen zerstören - genau wie ein einzelner ausgefallener Knoten ein ganzes verteiltes System.
Der Begriff des byzantinischen Fehlers geht auf das Byzantine Generals Problem zurück - also das Problem der byzantinischen Generäle. Es wurde in den 1980er Jahren von den Informatikern Leslie Lamport, Robert Shostak und Marshall Pease vorgestellt.
In dem Gleichnis geht es darum, dass mehrere Generäle mit ihren Armeen um Byzanz (ehem. Konstantinopel, heute Istanbul) herum stehen und die Stadt erobern wollen. Dazu müssen sie die Stadt gemeinsam und aus verschiedenen Richtungen angreifen. Nur so haben sie eine Chance auf den Sieg. Sie brauchen also eine gemeinsame Strategie.
Problem: Es gibt weder Smartphones noch eine zentrale Partei, auf die sich alle verlassen können. Keiner weiß, wann die anderen losstürmen. Und die Wahrscheinlichkeit, dass ohne Absprache und rein zufällig alle genau denselben Zeitpunkt wählen, um die Stadt anzugreifen, liegen bei nahezu null. Die Generäle haben also keine sicheren Kommunikationskanäle und dadurch ein Kommunikationsproblem.
Jemanden loszuschicken, um den anderen eine Nachricht zu überbringen, ist riskant: Die Informationen könnten auf dem Weg von A nach B durch die Verteidiger der Stadt Byzanz abgefangen und verändert oder durch einen Verräter manipuliert werden.
Wie können sich die Generäle also so organisieren, dass sie verlässlich alle zur gleichen Zeit angreifen? In einem dezentralisierten System ohne eine Autorität oder eine zentrale Instanz auf jeden Fall schwierig!
Jede Blockchain ist ein verteiltes System. Mehrere Knoten (Teilnehmer:innen eines Netzwerks) kommunizieren miteinander, um Transaktionen zu validieren, neue Blöcke zu erstellen und sie an die Blockchain anzuhängen. Ein byzantinischer Fehler kann also durchaus in einer Blockchain vorkommen.
Ist ein Knoten im Netzwerk fehlerhaft oder bösartig, kann das gesamte System zusammenbrechen und es könnten gefälschte Transaktionen akzeptiert und angehängt werden. Fatal für die Integrität und Sicherheit der Blockchain, weil natürlich auch wertvolle Vermögenswerte gestohlen werden könnten.
Ein byzantinischer Fehler kann grob in zwei Formen vorliegen:
Beides kann dazu führen, dass das Netzwerk in mindestens zwei Gruppen aufgeteilt wird, die jeweils unterschiedliche Versionen der Wahrheit haben.
Ein konkretes Beispiel ist die DAO-Attacke aus dem Jahr 2016. Dabei hat ein Hacker eine Schwachstelle in einem dezentralen autonomen Organ (DAO) gefunden. Die hat er ausgenutzt, um Ether - die Kryptowährung der Ethereum-Blockchain - im Wert von mehreren Millionen Dollar zu stehlen.
Ein weiteres Beispiel für den byzantinischen Fehler in einer Blockchain ist die 51 % Attacke. Dabei kontrolliert eine Gruppe von Angreifern die Mehrheit der Rechenleistung eines Blockchain-Netzwerks. Dadurch können diese Miner bestimmte Transaktionen rückgängig machen, doppelt ausführen oder auch gefälschte Transaktionen zulassen, um eigene Interessen zu verfolgen.
Bei der sogenannten Sybil-Attacke erstellt eine Person oder eine Gruppe mehrere Identitäten. Der Angreifer unterwandert das Netzwerk, indem er Knoten vervielfacht. So bekommt er bei einer Abstimmung über Transaktionen die Mehrheit der Stimmen.
Ein weiteres Beispiel könnte sein, dass Angreifer eine Schwachstelle in der Software des Netzwerks ausnutzen, um unerwünschte Transaktionen durchzuführen oder Blöcke zu verändern.
Ein byzantinischer Fehler kann also erhebliche Auswirkungen auf die Integrität und die Sicherheit einer Blockchain haben. Er macht es Angreifern möglich, das Netzwerk zu beeinträchtigen, falsche Informationen bereitzustellen und unerwünschte Aktionen auszuführen. Es gibt noch weitere Arten von Angriffen, die auf diesem Fehler basieren und darauf abzielen, die Verfügbarkeit eines Blockchain-Netzwerks zu beeinträchtigen und Kryptowährungen oder andere Vermögenswerte abzufischen.
Auf der einen Seite gibt es technologische Lösungen wie Proof of Stake (PoS) oder die Byzantine Fault Tolerance (BFT). Auf der anderen Seite gibt es sogenannte Governance-Lösungen im Kampf gegen byzantinische Fehler in einer Blockchain.
Proof of Stake ist ein Konsensmechanismus, bei dem die Knoten im Blockchain-Netzwerk ihre eigenen Vermögenswerte als Sicherheit hinterlegen müssen. Auf diese Weise haben sie einen Anreiz, das Netzwerk fair zu betreiben und keine bösartigen Aktionen auszuführen. In dem Fall würden sie nämlich ihre eigenen Vermögenswerte verlieren.
Byzantine Fault Tolerance ist eine Technologie, die einen anderen Ansatz verfolgt. Dabei kann das Netzwerk auch dann weiterarbeiten, wenn einer oder mehrere Knoten fehlerhaft oder bösartig sind. Das wird erreicht, indem es grundsätzlich Mehrheiten von Knoten braucht, um Entscheidungen zu treffen. Man muss also nicht zwangsläufig darauf vertrauen, dass alle Knoten korrekt sind.
Bei governance-basierten Lösungen werden innerhalb einer Blockchain-Community gewisse Konsensregeln und -mechanismen geschaffen, um einen Konsens zu bilden. Das kann dabei helfen, manipulative Akteure zu identifizieren und auszuschließen. Es werden klare Verfahren festgelegt, um Probleme im Zusammenhang mit dem byzantinischen Fehler zu lösen.
Konsensprotokolle machen es möglich, dass eine Mehrheit von Knoten über die Wahrheit einer Nachricht abstimmt. Digitale Signaturmechanismen können die Authentizität von Nachrichten sicherstellen.
Es gibt noch weitere Lösungsansätze, die dem Byzantinischen Fehler entgegenwirken und eine höhere Sicherheit und Zuverlässigkeit in den Netzwerken gewährleisten sollen:
Bekannte BA-Verfahren sind das Paxos-Verfahren und das Raft-Verfahren. Beide nutzen die Idee von Mehrheitsentscheidungen und Replikation von Daten, um sicherzustellen, dass ein konsistenter Zustand aufrechterhalten wird. Auch dann, wenn Teilnehmer:innen des Netzwerks fehlerhaft sind.
BP ist ein spezielles BA-Protokoll, das auf dem ursprünglichen Paxos-Verfahren basiert. Es verwendet eine spezielle Rolle namens "Byzantine Paxos Leader" (BP-Leader), um die Konsensfindung zu koordinieren. BP-Leader werden ebenfalls durch eine Mehrheitsentscheidung gewählt und sind dafür verantwortlich, Vorschläge zu sammeln und letztendlich Entscheidungen zu übermitteln.
Byzantine Paxos unterscheidet sich vom ursprünglichen Paxos-Verfahren durch einen bestimmten Aspekt: Es berücksichtigt die Möglichkeit, dass gewisse Knoten nicht vertrauenswürdige Nachrichten senden könnten. Dadurch ist es komplexer und erfordert beim Austausch von Nachrichten mehrere Runden und Abstimmungen, um eine Entscheidung zu treffen.
Wichtig: Keine dieser Lösungen bietet einen vollständigen Schutz. Ein byzantinischer Fehler ist immer ein Risiko, das durch solche Lösungsansätze aber zumindest reduziert werden kann. Die Lösungsansätze können ein Blockchain-Netzwerk gegen Angriffe deutlich widerstandsfähiger machen.
Der Byzantinische Fehler ist ein wichtiger Aspekt bezüglich dezentraler Systeme und zugleich auch ein sehr kritischer in der Blockchain-Technologie. Ein byzantinischer Fehler kann die Integrität und Sicherheit eines Blockchain-Netzwerks massiv beeinträchtigen.
Es gibt verschiedene Lösungsansätze, um das Risiko eines byzantinischen Fehlers zu reduzieren und das Netzwerk gegen Angriffe abzusichern. Allerdings kann keine dieser Lösungen dafür sorgen, dass eine Blockchain zu 100 % abgesichert ist. Deshalb ist es immer nötig, die verschiedenen Blockchain-Systeme und die Technologie dahinter zu überwachen und zu verbessern. Nur so können sie auch auf Dauer gegen Angriffe und Fehler widerstandsfähig bleiben.
Es ist wichtig, dass Entwickler von verteilten Systemen sich mit diesem Konzept auseinandersetzen, um sicherzustellen, dass ihre Systeme robust und zuverlässig sind.
Mehr Informationen?
Wir haben uns als eine der ersten Agenturen deutschlandweit als Spezialisten für die Blockchain positioniert. Als Blockchain-Agentur programmieren wir Smart Contracts und Token. Wenn Sie ein Projekt planen, sind wir gerne für Sie da.
Schreiben Sie uns eine Mail, nutzen Sie unser Kontaktformular oder rufen Sie uns einfach an, um einen Termin zu vereinbaren. Wir erstellen Ihnen gerne ein Angebot – selbstverständlich kostenlos und unverbindlich!