Home / Bitcoin Cash / Unbestätigte Transaktionen: Wie (un)sicher sind sie wirklich?

Unbestätigte Transaktionen: Wie (un)sicher sind sie wirklich?

Natürlich sind unbestätigte Bitcoin-Transaktionen nicht sicher. Ansonsten bräuchte man keine Miner. Aber wie so oft ist die Sache nicht nur schwarz und weiß. Sicherheit ist nicht absolut, sondern immer relativ und abhängig vom Kontext.

Der Lebenszyklus einer Bitcoin-Transaktion besteht aus zwei Schritten: Erst wird sie im Netzwerk propagiert. Dies kann an sich jeder im ganzen Netzwerk nach Sekunden, wenn nicht gar Millisekunden, erkennen. In diesem Zustand gilt die Transaktion noch als unbestätigt. Erst wenn ein Miner sie in einen Block packt und diesen Block an die Blockchain anhängt, wird die Transaktion bestätigt. Dies kann nach ein oder zwei Minuten geschehen, aber, je nach Betrieb auf der Blockchain und Gebühr, Stunden, wenn nicht Tage dauern.

Solange eine Transaktion unbestätigt ist, gilt sie als unsicher. Der Zahlungsdienstleister BitPay schreibt in seinen Infos für Händler, dass die Gefahr, einem Double Spend zum Opfer zu fallen, in dieser Phase hoch ist. Ein Double Spend bedeutet, dass jemand die Transaktion “umbiegt”, also durch eine anderen Transaktion ersetzt, mit der er die versendeten Bitcoins zurück an sich selbst sendet. So wie ein Chargeback beim Kreditkartenbetrug oder eine Rückbuchung mit PayPal.

Man kann sich bei unbestätigten Transaktionen niemals vollständig sicher sein, dass kein Double Spend passieren wird. Falls Sie sich also unsicher sind, Ihrem Gegenüber nicht vertrauen, und eine wertvolle Transaktion entgegennehmen, sollten Sie unbedingt auf eine oder mehrere Bestätigungen warten. Definitiv.

Allerdings ist die Sache nicht so schwarz-weiß, wie sie manchmal dargestellt wird. Es gibt viele Umstände, unter denen man sorglos unbestätigte Transaktionen akzeptieren kann. Schauen wir uns einige Double-Spend-Angriffe vor verschiedenen Situationen an.

Die Race Attack

Die einfachste Weise, einen Bitcoin doppelt auszugeben, ist die Race Attack. Man sendet zuerst eine Transaktion zu dem Händler. Zeitgleich – oder kurz darauf – sendet man dieselben Bitcoins mit einem anderen Empfänger direkt an Mining-Pools. Wenn die Pools die zweite Transaktion als erstes empfangen, werden sie diese als gültig ansehen und in den Block stecken. Innerhalb eines Zeitfenster von bis zu ein oder zwei Sekunden hat ein solcher Angriff, zeigt ein Paper, eine relativ hohe Erfolgschance.

Allerdings kann man den Angriff noch anpassen, so dass er auch eine Minute später noch funktioniert. Dafür sendet man die erste Transaktion mit sehr geringen – oder gar keinen – Gebühren versendet, so dass die Miner sie gar nicht oder nur nach sehr langer Zeit in einen Block aufnehmen. Die zweite Transaktion, die man etwa eine Minute später abschickt, hat deutlich höhere Gebühren und wird von den Minern sofort angenommen.

Peter Todd hat diesen Angriff 2016 öffentlich vorgeführt, um zu beweisen, dass unbestätigte Transaktionen grundsätzlich unsicher sind. Dazu hat er einem Freud bei Reddit ein “Reddit Gold” gekauft und die Transaktion danach auf sich umgebogen. Coinbase, der von Reddit verwendete Zahlungsdienstleister, akzeptierte die Transaktion. Um seinen Punkt zu beweisen, hat Peter Todd daraufhin ein in Python geschriebenes Tool für Double-Spends veröffentlicht.

Alles eine Sache des Kontext

Peter Todd hat aber damit nicht nur bewiesen, dass unbestätigte Transaktionen unsicher sind – sondern auch, dass dies je nach Kontext vollkommen in Ordnung ist. Reddit Gold ist ein nahezu perfektes Beispiel dafür. Es handelt sich dabei um eine Art “Auszeichnung”, die man anderen Usern geben kann, wenn einem etwa ein Beitrag besonders gut gefällt. Dazu muss man die Auszeichnung für eine kleine Summe Geld kaufen. Abgesehen vom symbolischen Wert hat Reddit Gold nicht besonders viel Nutzen.

Es gibt keinen Markt für Reddit-Gold, durch den sich ein Hacker bereichern kann, noch verliert Reddit allzu viel, wenn sich jemand Reddit Gold erschleicht. Das schlimmste, was passieren kann, ist, dass die Double Spends zur Epidemie werden und der Wert von Reddit Gold inflationiert.

Aber auch in diesem Fall kann Reddit bzw. der Zahlungsdienstleister Coinbase sehr einfach intervenieren. Sobald die falsche Transaktion in einem Block ist, kann man feststellen, dass es ein Double Spend gab. Nachdem Reddit bemerkt hatte, was passiert war – bzw. Peter Todd es öffentlich ausposaunt hatte – wurde der Account des Entwicklers suspendiert und das Gold zurückgezogen. Der einzige, der also etwas verloren hat, war Todd selbst.

Eine solche Prüfung unbestätigter Transaktionen ist leicht möglich. Damit dürfte es für alle Plattformen, die Güter an User für den Gebrauch auf der Plattform verkaufen, unbedenklich sein, sie zu akzeptieren. Steam wäre ein anderes gutes Beispiel, mit Ausnahme von Gutscheinencodes, aber vermutlich dürfte auch der Verkauf von Videos, Musik, Artikeln und E-Books möglich sein, da es einfach zu wenig Motivation gibt, um über ein gut verschmerzbares Niveau hinaus zu betrügen.

Ebenso kann so gut wie jeder Versandhändler ohne Bedenken Bestellungen gegen unbestätigte Transaktionen annehmen. Er muss nur kurz vor dem Versand – was in der Regel in einem zeitlichen Abstand von der Bestellung erfolgt – nochmal prüfen, ob die Transaktion auch tatsächlich bestätigt wurde, oder ein Alarmsystem einrichten, das ihn auf Double Spends hinweist.

Für wen sind Double-Spend-Angriffe überhaupt relevant?

Es gibt einige Arten von Geschäftsmodellen, für die Double Spends von unbestätigten Transaktionen tatsächlich eine große Gefahr sind. Grob gesagt fallen diese in vier Kategorien:

1.) Unternehmen, die digitale, weiterverkaufbare Werte verkaufen: Dies können Altcoins sein, oder auch Schlüssel für Spiele oder andere Programme.

2.) Glücksspielseiten wie Satoshi Dice, die auf eine Einzahlung auf eine Adresse unmittelbar einen Gewinn auszahlen, oder auch nicht.

3.) Physische Akzeptanzstellen, also Läden, Kaffees, Kneipen, Restaurant, Supermärkte.

4.) Bitcoin-Geldautomaten, die Bitcoins gegen Bargeld tauschen

Bei diesen drei Arten von Unternehmen spielt die Gefahr von Double-Spends eine große Rolle. Es ist etwa nicht möglich, etwa Altcoins mit einer unbestätigten Transaktion zu kaufen – zumindest ist mir kein Beispiel dafür bekannt. Allerdings gibt es durchaus Firmen, die Schlüssel für Computerspiele unbestätigt herausrücken, und etwa zahlreiche Gastronomen, die unbestätigte Zahlungen akzeptieren. Auch Satoshi Dice macht dies.

Wie ist dies möglich? Wie kann es sein, dass diese Firmen nicht von Double Spends gefleddert werden?

Schutz gegen einfache Race Angriffe

Die simple Variante der Race Attack ist sehr einfach abzuwehren. Wenn der Händler – oder der Zahlungsdienstleister – einen oder mehrere gut verbundene Knoten betreibt, und sich etwa auch mit einem Mining-Pool verbindet, sinkt innerhalb einer halben Sekunde die Gefahr, Opfer eines Double-Spends zu werden, drastisch. Durch eine Beobachtung des Netzwerks über einige Sekunden lässt sich so mit relativ großer Sicherheit ausschließen, dass ein solcher Angriff passiert. Die meisten Internet-Seiten, die etwa Steam-Keys gegen Bitcoins verkaufen, scheinen ganz gut mit diesen Angriff zurechtzukommen.

In einer physischen Umgebung kann dies noch einfacher sein. MiniPOS, ein Terminals für Ladengeschäfte auf Basis von Bitcoin Cash, fragt die Transaktion bei mehreren Blockexplorern ab. Da diese Blockexplorer in der Regel sehr gut vernetzt sind, kann die Wallet mit einer relativ großen Sicherheit annehmen, dass eine unbestätigte Transaktion durchgeht, wenn sie von mehreren Explorern gesehen wird. Es gibt zwar mehrere theoretische, von einem Leser hier festgestellte Angriffe, etwa dass man zeitgleich dieselbe Transaktion mit anderem Absender an einen Mining-Pool sendet.

Allerdings bedarf es doch einiger Mühe und Kenntnisse, um eine Smartphone-Wallet so zu manipulieren, dass sie diese Art von Double-Spend zeitgleich mit der eigentlichen Transaktion ausführt, ohne dass der Händler dies bemerkt. Es ist möglich, aber man fragt sich, ob jemand, der dazu wirklich in der Lage ist und die entsprechende kriminelle Energie hat, nicht auf andere Weise risikoloser mehr Geld verdient, als wenn er einem Laden eine Ware abluchst. Dennoch sollten Händler, die Bitcoin oder Bitcoin Cash per POS akzeptieren, ein gewisses Restrisiko hierfür im Blick behalten, gerade wenn sie vorhaben, teure Waren, etwa Laptops oder Smartphones, gegen Kryptowährungen zu verkaufen.

Es gibt verschiedene Methoden, den Schutz gegen einfache Race-Angriffe noch zu erhöhen. Die Bitcoin Cash Entwickler denken etwa über die Idee nach, anders als Bitcoin es den Knoten zu erlauben, Double Spends zu verbreiten. Dies macht es möglich, einen Double-Spend-Versuch einfacher zu erkennen und den Zahlungsempfänger zu warnen. Wenn es etwa nach zehn Sekunden keinen Alarm gibt, kann man ausschließen, dass es einen solchen Double Spend Angriff gibt.

Insgesamt scheint es gut möglich zu sein, mit dieser Variante des Double Spends umzugehen, wenn man weiß, was man macht. Dies trifft allerdings weniger auf die zweite, erweiterte Version zu.

Schutz gegen erweiterte Race Angriffe

Schwieriger wird es, wenn wir uns dem Race-Angriff von Peter Todd wenden. Hier wird die erste Transaktion mit extrem tiefen Gebühren gesendet, und die zweite mit einer deutlich höheren. Eigentlich gilt bei Minern der Grundsatz, “First Seen First”, dass sie also nur die erste Transaktion, die sie sehen, annehmen, und jede andere, die versucht, dieselben Mittel auszugeben, verwerfen.

Allerdings haben manche Miner, je nach Gebührenniveau, die Politik, etwa Transaktionen ohne Gebühr grundsätzlich zu verwerfen. Andere lassen sich möglicherweise durch eine höhere Gebühr “bestechen”, eine spätere Transaktion vorzuziehen. Da die Auswahl der Transaktionen für einen Block nicht den Konsens-Regeln unterliegt, gibt es keine Möglichkeit, die Miner daran zu hindern. Die “First Seen First” Regel ist weniger eine harte Regel, als vielmehr eine Konvention.

BitPay bietet seinen Kunden ein Werkzeug an, das versucht, das Risiko dieses Angriffs abzuschätzen. Es “analysiert eingehende Transaktionen und bestimmt, ob sie ein besonders hohes Risiko haben, nicht bestätigt zu werden.” Wenn eine Transaktion ein hohes Risiko hat, verlangt BitPay automatisch und proaktiv eine Bestätigung, während Transaktionen mit niedrigem Risiko auch unbestätigt akzeptiert werden können. Auch ein Blockexplorer wie BlockCypher bietet zahlenden Kunden an, per API einen “Confidence Factor” abzufragen, der abschätzt, wie hoch die Wahrscheinlichkeit ist, dass eine Transaktion bestätigt wird. Unter normalen Umständen scheint dieser auch eine ausreichend Sicherheit zu bieten.

Gute und schlechte Opfer

Dennoch kam es schon vor, dass BitPay Double-Spends nicht erkannte. So berichtet ein Eigentümer eines Shops für Ingame-Items für Counterstrike, dass es mehrere erfolgreiche Double-Spends gegeben habe. Anschließend lieferte er die Items nur noch aus, nachdem eine Transaktion mindestens eine Bestätigung hatte. Auch SatoshiDice, die Glücksspielseite, die unbestätigte Transaktionen annahm, wurde 2012 mehrfach zum Opfer solcher Double-Spends. Es scheint nicht möglich zu sein, das Risiko komplett zu eliminieren, aber Satoshi Dice konnte es, immerhin, relativ lange genügend im Griff behalten, um nicht komplett auszubluten.

SatoshiDice ist nahezu das perfekte Opfer für Double Spends. Es gibt kaum ein Geschäftsmodell, das man so effizient mit erfolgreichen Double-Spends von unbestätigten Transaktionen ausnutzen kann. Für viele andere Geschäftsmodelle und Kontexte scheint selbst die erweiterte Race-Attack ein vernachlässigbares Risiko darzustellen. So berichtet ein Besitzer einer Bar und eines Restaurants, dass für ihn unbestätigte Transaktionen wunderbar funktionieren: “Die Belohnung, um zu cheaten, ist nicht hoch genug, um cheaten lohnenswert zu machen. Außerdem ist der Aufwand eines Double Spends zu hoch, und der Ertrag zu gering, als dass Leute ihre grundsätzliche Ehrlichkeit vergessen. In zwei Jahren, in denen wir unbestätigte Bitcoin-Transaktionen akzeptieren, hatten wir tauende von Transaktionen, aber kein Double-Spend. Kein einziges! Anders gesagt: Für uns sind unbestätigte Transaktionen 100 Prozent sicher.”

Für Bitcoin-ATMs hingegen sind unbestätigte Transaktionen nicht sicher genug. Laut einer FAQ von 2014 erlaubten manche Automaten den Verkauf kleinerer Bitcoin-Beträge gegen unbestätigte Transaktionen, die sich durch BlockCyphers Confidence Factor prüfen, in der Regel aber benutzen sie einen Auszahlungscode, der erst aktiv wird, nachdem eine Transaktion bestätigt wurde. Laut Peter Todd haben die Betreiber der Automaten bereits große Summen durch Double Spends verloren. Ob die Automaten heute überhaupt noch unbestätigte Transaktionen akzeptieren, oder ob dies vollständig zurückging, ist schwer zu sagen. Jedoch steht wohl fest, dass das Warten auf eine Bestätigung bei vollen Blöcken und der damit verbundenen oft schweren Berechenbarkeit der Dauer von Bestätigungen zu immensen Problemen für die User führt.

Auch die Wechselplattform ShapeShift, die auf Accounts verzichtet, hat früher unbestätigte Transaktionen akzeptiert. Dank dem Confidence Factor von Blockcypher konnte die Plattform gravierende Verluste vermeiden. Mitte 2015 bewies ein Hacker jedoch öffentlich, dass man Double Spends gegen ShapeShift ausführen und damit Altcoins stehlen konnte. Die Plattform deaktierte danach die Akzeptanz von unbestätigten Transaktionen, angeblich, um sie später in sicherer Weise wieder zu aktivieren. Dies geschah nie.

Noch mehr Angriffe …

Man könnte den erweiterten Race-Attacks noch weitere Double-Spends hinzufügen. So könnte etwa der Betrüger mit einem Miner kooperieren, der sicherstellt, dass die zweite Transaktion tatsächlich anstelle der ersten in einen Block kommt. Während man jede Form der Race Attack zwar nicht unmöglich, aber durch gute Algorithmen immerhin schwerer und vielleicht unwahrscheinlicher machen kann, gibt es in diesem Fall absolut nichts, was man tun kann.

Ein Miner wird immer in der Lage sein, eine unbestätigte Transaktion zu sich selbst umzuleiten, wenn er es ist, der sie in einen Block bringt. Keine Verbreitung im Netzwerk und keine Gebühr kann ihn davon abhalten. So wurde etwa der SatoshiDice-Klon BetCoin Dice Ende 2013 zum Opfer eines solchen Angriffs, der von oder zumindest in Kooperation mit dem damals dominanten Mining-Pool GHash.io ausgeführt wurde. Zwar hat GHash.io auf Drängen der Community aufgehört, seine Marktmacht auszunutzen, und verlor im Lauf des folgenden Jahres auch seine Stellung als wichtigster Pool. Doch der Fall zeigt, dass man, egal wie gut man es macht, keine Garantie dafür bekommt, dass unbestätigte Transaktionen auch tatsächlich ankommen.

Wann es funktoiniert, und wann nicht

Die bisherigen Beispiele zeigen: Es gibt Fälle, in denen unbestätigte Transaktionen funktoinieren, und es gibt Fälle, in denen sie nicht funktionieren. Wir haben die Besitzer von Restaurants, die sagen, unbestätigte Transaktionen seien 100 Prozent sicher, und wir haben die Betreiber von Glücksspielseiten, Wechselstuben und ATMs, für die die Akzeptanz unbestätigter Transaktionen einem betrieblichen Selbstmord gleichkommt.

Man könnte eine einfache Regel formulieren: Immer dann, wenn das Geschäftsmodell es zulässt, dass sich jemand durch Double-Spends risikolos, systematisch und mit hoch-skalierbaren Gewinnen bereichert, funktioniert es nicht. SatoshiDice, ATMs und ShapeShift sind Beispiele, bei denen unbestätigte Transaktionen mit relativ hoher Sicherheit auf eine Weise ausgenutzt werden, die zu massiven Verlusten führt (dass SatoshiDice, nun auf Bitcoin Cash migriert, noch unbestätigte Transaktionen akzeptiert, ist in diesem Fall rätselhaft).

Am anderen Ende der Skala stehen Plattformen wie Reddit oder Steam, die die Urheber der Double-Spends identifizieren und das verkaufte Gut zurücknehmen können, wie auch Versandhändler, die die Ware nicht unmittelbar nach Empfang der Zahlung verschicken. Sie können unbestätigte Transaktionen ohne Bedenken annehmen, sollten aber eben später noch einmal nachprüfen, ob sie bestätigt wurde.

Auch Restaurants oder Verkaufsstellen für digitalen Content sollten weitgehend sicher sein. Wenn die geringen Werte überhaupt jemanden motivieren, den nicht ganz einfachen Weg des Double-Spends zu gehen, dürften die Verluste im Rahmen des Erträglichen sein, schlimmstenfalls vergleichbar mit denen, die durch Kreditkartenbetrug entstehen. Solange es keine Möglichkeit gibt, systematisch und automatisiert aus den Double-Spends Profit zu schlagen, wird das Risiko beherrschbar bleiben. Eine wichtige Rolle spielt auch die Frage, ob er Angreifer durch einen gescheiterten Double-Spend einen Verlust macht. So bietet Cryptonize etwa an, einen Double-Spend für einen 1.000-Dollar-Gutschein für Amazon hinzunehmen, verlangt aber 2.000 Dollar dafür. Auf diese Weise wird ein Double-Spend zum Verlustgeschäft, wenn er nicht mit ausreichender Sicherheit gelingt. Die Challenge des Shops wurde bislang nicht geknackt.

Am Ende muss jeder Händler aber für sich selbst entscheiden, welches Risiko er bereit ist, einzugehen.

Die Rolle von Replace-by-Fee (RBF)

Replace-by-Fee ist eines der Lieblingsprojekte von Peter Todd, das er Mitte 2016 durchgesetzt hat, und das mit dem letzten Release von Bitcoin Core zum Standard wurde. RBF bedeutet nichts anderes, als dass der erweiterte Race-Angriff normal wird. Es ist nicht mehr die Ausnahme, dass eine Transaktion mit einer Transaktion mit einer höheren Gebühr ersetzt wird, kein Bruch von der Regel des “First Seen First”, sondern eine normale Regel, die jeder Miner kennt. Double-Spend ist mit RBF kein Hack mehr, sondern eine normale Funktion der Wallet.

Peter Todd kämpft bereits seit 2013 für RBF. Er erklärte, er wolle damit verhindern, dass man weiter “in diese sehr schädliche Richtung geht … für einen Miner ist es naheliegend, dass er die Transaktion, die die höchste Gebühr bezahlt, in einen Block aufnimmt, und das macht es sehr eindeutig, dass unbestätigte Transaktionen nicht wirklich sicher sind. Es zwingt das gesamte Ökosystem dazu, bessere Lösungen zu suchen.”

Von RBF hieß es lange, es würde unbestätigte Transaktionen vollständig kaputtmachen, da es in den Clients die Regel etablierte, dass man sie durch eine andere ersetzen kann. Peter Todd verfolge, hieße es, einen Ansatz der verbrannten Erde: Was nicht perfekt funktioniert, soll niedergerissen werden. Die Antwort auf diesen Vorwurf war üblicherweise, dass RBF erstens “Opt-In” ist, also durch eine spezielle Markierung einer Transaktion angekündigt wird und so einfach erkannt werden kann, und dass zweitens unbestätigte Transaktionen sowieso schon kaputt sind. Wie kann man etwas, dass eh nicht funktioniert, zerstören? Daneben hat RBF den klaren Vorteil, dass es den Usern erlaubt, nachträglich die Gebühr einer Transaktion zu erhöhen, was von immensem Nutzen ist, wenn eine Transaktion im Stau auf der Blockchain steckt.

Dennoch ist RBF für unbestätigte Transaktionen ein Rückschritt. Es ist kein Hack mehr, sondern eine Regel. Jede Akzeptanzstelle, die ihr Risiko damit kalkuliert, dass der Aufwand, einen Double-Spend zu betreiben, zu groß ist, um unehrlich zu sein, wird mit RBF Probleme bekommen. Auch die für Sicherheitsforscher vermutlich skandalöse, aber in der Realität oft funktionierende Taktik, Double Spends durch gute Algorithmen soweit zu erschweren, dass sie sich für günstige Dinge nicht lohnen, wird mit RBF nicht funktionieren.

Die Händler und Zahlungsdienstleister werden keine andere Wahl haben, als Transaktionen mit der RBF-Markierung pauschal nicht unbestätigt zu akzeptieren. Da aber RBF nun mit dem neuesten Core-Release und auch bei Electrum standardmäßig angewählt ist, dürfte dies zu Chaos führen und die Nutzererfahrung und Fehlerquote von unbestätigten Zahlungen weiter erhöhen.

Aus diesen Gründen hat sich Bitcoin Cash entschieden, RBF nicht als explizites Feature zu implementieren. Unbestätigte Transaktionen sollen nicht absichtlich unsicherer gemacht werden, sondern so sicher, wie es je nach Kontext eben möglich ist. Dies schließt natürlich nicht aus, dass Miner sich entscheiden, Transaktionen zu ersetzen, um höhere Gebühren einzunehmen. Da Bitcoin Cash ohnehin nicht vorhat, das Transaktionsvolumen jemals an ein Limit stoßen zu lassen, dürfte kein Gebührenmarkt entstehen, wodurch es auch nicht notwendig ist, nachträglich die Gebühr zu erhöhen. Bei Bitcoin selbst hingegen ist RBF durchaus sinnvoll. So wird der Umgang mit unbestätigten Transaktionen also am Ende zu einem weiteren Unterscheidungsmerkmal zwischen den beiden Kryptowährungen.

Disclaimer: Es war sehr hilfreich und inspirierend, das Thema der unbestätigten Transaktionen vorab mit Stefan vom Leipziger Bitcoin-Podcast Honigdachs und Murch von BitGo zu diskutieren.

Den ganzen Artikel findest du hier:Quelle

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Top

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close