Warum sich jeder Bitcoin-Nutzer mit „SPV-Sicherheit“ auskennen sollte

Jonald Fyookball
5 min readJun 8, 2017

--

(Click here for the English version of “Why Every Bitcoin User Should Understand SPV Security”)

Man muss nicht verstehen, wie ein Motor funktioniert, um Auto zu fahren. In ähnlicher Weise müssen Sie nicht verstehen, wie Bitcoin „unter der Haube” funktioniert, um es zu benutzen.

Wenn Sie jedoch vorhaben, am öffentlichen Dialog teilzunehmen oder sogar eine Meinung zur Zukunft von Bitcoin haben, gibt es ein paar Dinge, die Sie wissen sollten.

Die große Skalierungsdebatte

Falls Sie es noch nicht wussten: Es gibt eine ziemlich hitzige Auseinandersetzung zwischen Bitcoin-Entwicklern, -Unternehmen, -Minern und -Investoren. Dabei geht es darum, wie man das Netzwerk „skalieren“ sollte.

Vereinfacht ausgedrückt will eine Seite die ursprüngliche Idee eines Peer-to-Peer-Bargeldes und einen Plan für größere Blöcke verfolgen; die andere Seite möchte die kleinen Blöcke beibehalten und Bitcoin dabei in ein Settlement-Netzwerk umwandeln.

Ihre Meinung ist bedeutender, als Sie denken

Bitcoin ist ein mehrere Millionen Dollar schweres Ökosystem. Es wäre naiv, anzunehmen, dass mächtige Konzerne nicht alles ihnen mögliche versuchen würden, um Ihre Interessen durch die Manipulation dieses Systems durchzusetzen.

Wie kommen Sie nun ins Bild?

Ein ernstes Zitat des Komikers George Carlin ist an dieser Stelle angebracht. Was ist das Ziel von Spezialinteressen?

Sie wollen mehr für sich selbst und weniger für alle anderen. Aber ich sage Ihnen, was sie nicht wollen. Sie wollen keine Bevölkerung, die zu kritischem Denken fähig ist. Sie wollen keine gut informierten, gut gebildeten Menschen… Sie sind daran nicht interessiert. Das hilft ihnen nicht. Das ist gegen ihre Interessen. — George Carlin

Das Kartenhaus der Befürworter kleiner Blöcke

Aus Wikipedia: „Kartenhaus“ ist ein Ausdruck, der aus dem Jahr 1645 stammt und beschreibt eine Struktur oder ein Argument, das auf einem wackligen Fundament steht, oder ein solches, das zusammenfällt, wenn man einen notwendigen Bestandteil entfernt.

Die Argumentation für Bitcoin als Settlement-Netzwerk stützt sich auf eine Logikkette, die sich in etwa so liest:

“Die meisten Benutzer des Netzwerks sollten einen Full-Node betreiben, darum sollte das Betreiben eines Full-Nodes erschwinglich sein, darum müssen wir Bandbreite und Speicherkosten begrenzen, darum haben wir keine andere Wahl als die kleinen Blöcke beizubehalten.

Die meisten Benutzer müssen NICHT einen Full-Node betreiben

Wenn wir die zugrunde liegende Annahme widerlegen, fällt das Kartenhaus zusammen.

Die Argumente für “Die meisten Benutzer sollten einen Full-Node betreiben.” können grob in zwei Gruppen kategorisiert werden: a) Es ist gut für das Netzwerk. und b) Es ist notwendig für die Sicherheit des Benutzers.

Wir werden die erstere Gruppe in einem separaten Artikel ansprechen. Stellen wir zunächst einfach die zugrunde liegende Annahme aus der Sichtweise eines Benutzers in Frage.

Die vereinfachte Überprüfung von Zahlungen (SPV) existierte von Anfang an

Erstens ist die SPV nichts Neues. Sie wurde in Abschnitt 8 von Satoshi Nakamotos originalem Whitepaper, Bitcoin: A Peer-to-Peer Electronic Cash System, beschrieben. Bitcoin-Wallets wie Electrum benutzen die SPV seit Jahren erfolgreich ohne jegliche Probleme, und sie ersparen den Nutzern die Unannehmlichkeiten der Wartung eines vollständigen Netzwerkknotens.

Wie funktioniert die SPV?

Kurz gesagt ermöglicht die SPV Ihnen, IHRE Transaktionen für gültig zu erklären, ohne sich über die Transaktionen von irgendjemand anderem sorgen zu müssen. Die SPV bietet die zwei wesentlichen Bestandteile: a) Sie stellt sicher, dass Ihre Transaktionen in einem Block sind. b) Sie bietet Bestätigungen (Ausführungsnachweise) dafür, dass zusätzliche Blöcke zur Kette hinzugefügt werden.

Mehr brauchen Sie nicht, um zu wissen, ob eine Transaktion gültig ist oder nicht.¹

Wo liegen die Grenzen der SPV-Sicherheit? Hat ein Nutzer, der einen Full-Node betreibt, irgendeinen Vorteil?

Da eine SPV-Wallet keine der anderen Transaktionen im Block überprüft, könnte der Block in der Theorie ungültig sein. In 99,99 % der Fälle stellt das kein Problem dar, weil wir uns mit vielen verschiedenen Nodes verbinden und sicherstellen können, dass sich alle auf dieselbe Kette von Blöcken einigt.

Gelegentlich könnte eine ungewöhnliche Situation auftreten. Zum Beispiel wird eine neue Konsensregel übernommen und eine relativ große Gruppe von Nodes benutzt die neue Regel nicht, weil sie vergessen haben, zu aktualisieren.

Es würde nicht lange dauern, diese nicht konformen Nodes vom Netzwerk abzuspalten, aber in diesem Fall könnte der SPV-Client vorrübergehend fälschlicherweise annehmen, dass die nicht aktualisierten Nodes die korrekte längste Kette hätten (Nach ein paar Blöcken mehr würde die längste gültige Kette wieder erkennbar sein.)

Deshalb wird gesagt, dass das Betreiben eines Full-Nodes “schnellere” Sicherheit bieten würde — denn wenn man alle Transaktionen selbst für gültig erklären kann, gibt es keine Notwendigkeit für zusätzliche Bestätigungen, die diese Art von seltenen Fällen lösen.

Auch bietet der Betrieb eines Full-Nodes theoretisch besseren Datenschutz, weil der SPV-Client mit Full-Nodes kommunizieren
und Informationen über spezifische Adressen und Transaktionen anfordern muss.

Kann ein SPV-Wallet-Nutzer absichtlich angegriffen werden?

Das ist praktisch unmöglich (Es gibt keine dokumentierten Fälle.)

Theoretisch müsste ein Angreifer eine große Zahl von Rouge-Nodes einrichten und Sie daran hindern, jeglichen ehrlichen Node in der “echten” Bitcoin-Welt zu finden.

Wenn Ihre SPV-Wallet auch nur einen einzigen ehrlichen Node findet, wird der Angriff vereitelt, weil er verifizieren kann, dass der ehrliche Knoten die längste Ausführungsnachweiskette enthält.

Des Weiteren müsste der Angreifer, um die Attacke aufrechtzuerhalten, weiter Blöcke auf dem aktuellen Schwierigkeitsgrad minen, um ihre Kette weiterzuführen. Das würde riesige Mengen an Hash-Rechenleistung erfordern, was sehr teuer und dadurch unwirtschaftlich ist.

Zwei weitere gute Nachrichten

  1. Es ist wichtig, zu erkennen, dass sich eine SPV-Wallet nicht nur auf die anderen Netzwerkknoten verlässt, um die längste Kette von Blöcken zu bestimmen. Sie sieht sich die beste Header-Kette an: Die Kette von gültigen Blockheadern, die den kumulativsten Ausführungsnachweis hat. Eine gute SPV-Implementierung stellt auch sicher, dass dieser Ausführungsnachweis den entsprechenden Hash-Schwierigkeitsgrad hat. Diejenigen, die dazu geneigt sind, können den Electrum-Code überprüfen, um das in Aktion zu sehen.
  2. Und natürlich hat die Art von Wallet, die du ausführst, null Einfluss auf die Sicherheit deiner privaten Schlüssel.

Was sind diese SPV-Betrugsnachweise von denen ich immer höre?

Betrugsnachweis-Vorschläge versuchen die Sicherheit in den Fällen zu erhöhen, in denen wie oben beschrieben “eine nicht konforme Kette mehr Ausführungsnachweise als die konforme Kette enthält”.

Aber weil solche Fälle ganz vereinzelt vorkommen, wäre die Sicherheitsverbesserung marginal.

Es ist schlichtweg falsch, zu behaupten, dass SPV-Betrugsnachweise sind, um die Sicherheit der Benutzer aufrechtzuerhalten.

Tomas van der Wansem, Autor eines neuen Betrugsnachweis-Vorschlags, der Spend-Trees benutzt, stimmt zu:

Entgegen der landläufigen Meinung sind die Betrugsnachweis-SPV und Full-Nodes nicht deutlich sicherer als SPV-Nodes… Ich fürchte, dass die aktuelle Stagnation und Aufgabe von Bitcoins ursprünglichem Skalierungsmodell nicht durch das Fehlen von Betrugsnachweisen verursacht worden ist, sondern durch ein Misverständnis von Bitcoins Sicherheits- und Skalierungsmodell.

Fazit

SPV-Wallets bieten ein hohes Sicherheitsniveau und die meisten Nutzer müssen keine Full-Nodes betreiben. Ausgerüstet mit dieser Information können Sie unbesorgt über Ihre Bitcoin-Wallet sein… und Sie können auch dabei helfen, einige der schändlichen Argumente, die durch falsche Annahmen entstanden, aus der Welt zu schaffen.

Fußnote:
¹ Eine SPV-Brieftasche muss auch eingehende Transaktionen an Ihre Adresse “mithören”. Es kann dies mithilfe von Bloomfiltern oder einem Server, der über ein UTXO-Set verfügt, tun.

 by the author.

--

--