von Ulrich Voß, 14.2.14
‘tschuldigung, dass das sehr technisch wird, aber anders kann man nicht verstehen, was gerade passiert. Und das kann – auch wenn es Einige behaupten – noch niemand so recht.
Also, zu den Fakten:
Es haben weitere Bitcoin-Wechselstuben den Umtausch eingestellt. Jetzt liegt natürlich der Verdacht nahe, dass diese vom gleichen Fehler betroffen sind, an dem auch Mt.Gox zu knabbern hat, und daran anschließend die Überlegung, dass Bitcoins an sich “hackbar” sein könnten. Aber vorweg: Dem ist wahrscheinlich nicht so.
Ich stelle die Lage aus technischer Sicht jetzt mal so dar, wie ich sie im Moment für plausibel halte (alle Aussagen sind unsicher, was zum Teil darauf basiert, dass ich nicht im Detail im Bitcoin-Protokoll “drin” bin, zum anderen, weil nicht alle Fakten auf dem Tisch liegen).
1
Die Erklärung von Mt.Gox war leider nicht sehr detailliert. Sie wirkte schon am Anfang in sich nicht wirklich schlüssig; inzwischen gibt es eine Erklärung, die ich für deutlich plausibler erachte. Sie stammt vom Gründer der schwedischen Piratenpartei, Rick Falkvinge.
Er beschreibt eine Änderung im Bitcoin-Protokoll, die vor mehr als einem Jahr eingeführt wurde, aber erst vor kurzem mit einem Update verpflichtend wurde. Es geht dabei um die Darstellung bestimmter Zahlenformate (Währung), die nun verpflichtend in der kürzest möglichen Form zu erfolgen hat.
Während vor der Änderung das Format 000,732 in Ordnung war und akzeptiert wurde, gilt nun ausschließlich 0,732 als gültige Version. Mt.Gox hat diese Änderung aber in seine Version der Software nicht eingebaut. Nun werden einige, aber nicht alle Transaktionen von Mt.Gox von anderen Bitcoin-Börsen abgelehnt, weil sie das von Mt.Gox “gelieferte” Format als nicht mehr gültig erkennen.
Die Erklärung von Mt.Gox ist also nicht richtig, der Knackpunkt ist nämlich nicht das bekannte Malleability-Problem (dazu später).
Die Auswirkungen auf Mt.Gox sind unklar. Es gibt Leute, die behaupten, dass Mt.Gox durch ihren Softwarefehler in ein “Doppel-Buchungsproblem” geraten ist – also nicht mehr weiß, welche Buchungen bearbeitet wurden, und welche nicht. Das wäre natürlich ein Desaster. Ich halte das aber für unwahrscheinlich, da Mt.Gox eigentlich die Zahlungsströme aus der Bitcoin-Blockchain heraus rekonstruieren können müsste, zumindest, wenn die Logdateien auf der Seite von Mt.Gox vollständig vorliegen. In der Blockchain steht ja, ob die Bitcoins beim Empfänger angekommen sind.
Eine solche Rekonstruktion wäre einigermaßen aufwändig. Eventuell klappt das aber auch nicht. Nach der Menge an Pannen, die Mt.Gox in der Vergangenheit hatte, kann man ihnen aus Sicht der IT-Technik nicht mehr viel Gutes zutrauen. (Zu der Möglichkeit der Rekonstruktion etwas bei Reddit.)
2
Die anderen Börsen, die nach Mt.Gox geschlossen haben, sind wahrscheinlich aus einem anderen Grund dicht: sie werden schlicht von einer Denial-of-Service-Attacke belästigt.
Konkret bombardieren Hacker diese Börsen mit ungültigen Transaktionsbestätigungen, machen also in etwa das, was Mt.Gox (vermutlich schutz-)behauptet hat. Das ist das Malleability- oder Biegsamkeits-Problem: Die Transaktion und die Antwort darauf gehören nicht direkt zusammen. Beide Teile können auch unabhängig voneinander eintreffen und werden erst am Ende zusammengefügt. Es muss aber beide Teile der Transaktion geben, sonst ist sie nicht gültig.
In der Phase, in der noch nicht beide Teile “synchronisiert” sind, ist die Transaktion in einer Art Schwebezustand (in der Phase der “Biegsamkeit”).
Mit einer Denial-of-Service-Attacke in diesem Schwebezustand ist es relativ einfach, die Computer der Bitcoin-Börsen zu überlasten. Die sind für n-tausend Transaktionen am Tag ausgelegt, und damit eben auch nur für n-tausend Transaktionsbestätigungen, denn eine Transaktion zieht normalerweise genau eine Bestätigung nach sich. Ein Hacker kann aber innerhalb von Minuten Tausende falscher – also ungültiger – Bestätigungen erzeugen. Dann jagt er diese einfach gegen die IT-Systeme der Bitcoin-Wechselstuben.
Das Bitcoin-Protokoll versucht, die ungültigen Transaktionen zu verarbeiten, d.h., es sucht nach einer möglicherweise passenden Transaktion. Das ist aber viel aufwändiger als bei einer gültigen Transaktion, da die – vergeblichen – Suchvorgänge die Last auf dem Rechner immens erhöhen. (An der Stelle setzt jetzt auch die Verbesserung des Protokolls ein.) Die Systeme kommen mit der massiv erhöhten Anzahl von Anfragen nicht klar und gehen in die Knie – das heißt, sie schalten ab.
3
Um dieses Problem zu umgehen, wurde in das Bitcoin-Protokoll (bzw. die Referenzimplementierung) eine Erweiterung eingebaut, die es nun viel einfacher ermöglicht, diese ungültigen Transaktionsbestätigungen zu erkennen und sie abzulehnen: Die IT-Systeme werfen die ungültigen Bestätigungen einfach weg, statt sie aufwändig weiter zu verarbeiten.
Da die entsprechende Änderung schon in die Standardsoftware eingebaut ist, wird sich dieses Problem wahrscheinlich in den nächsten Tagen erledigen. Die Bitcoin-Börsen müssen die Änderung jetzt in ihre Version der Software einbauen und sie dann in Betrieb nehmen, das kann je nach Software innerhalb von Stunden geschehen, es kann aber auch ein paar Tage dauern. Mt.Gox etwa muss aufwändig anpassen, da sie die Standardsoftware stark modifiziert haben – eines der grundlegenden Probleme von Mt.Gox –, während Änderungen bei anderen Börsen, die sich an die Standardsoftware halten, einfacher eingepflegt werden können.
Relativ sicher ist, dass alle Börsen außer Mt.Gox kein grundlegendes Problem haben und sich die Lage dort wahrscheinlich wieder beruhigen wird. Im Fall von Mt.Gox wäre diese Aussage ziemlich optimistisch. Zwar wird der aktuelle Fehler auch dort wahrscheinlich zu keinen grundlegenden Problemen geführt haben – grundlegend im Sinn von “Geld ist weg” -, wie lange die Aufräumarbeiten dauern, ist aber aktuell nicht abschätzbar. Vor allem, weil Mt.Gox bisher mit ziemlich hoher Wahrscheinlichkeit die Karten noch nicht auf den Tisch gelegt hat.
Alle Aussagen in diesem Artikel sind unsicher. Mt.Gox erzählt IMHO nicht die ganze Wahrheit, auch bei anderen Aussagen ist nicht immer alles eindeutig. Ich bin in die Details gegangen und habe versucht zu verstehen, was die Code-Änderung in der Bitcoin-Referenzimplementierung genau macht, aber da kommt man nicht in ein paar Minuten rein (auch weil es typischer Open-Source-Code ist, bei dem die Kommentare – durch die sich guter Code auszeichnet – nicht im Code, sondern in den dazugehörigen Mailinglisten findet …).
Am Ende sind nicht einmal die Aussagen von Falkvinge unvoreingenommen glaubwürdig, weil er nach eigener Aussage seine gesamten Ersparnisse in Bitcoins angelegt hat. Er wird also den Teufel tun, Bitcoins schlechtzureden …
Dieser Beitrag ist ein Update zu einem längeren Text, der versucht, die momentane Krise trotz der geringen Fakten zu beleuchten
- Wired zum Thema: Exchange Halts Payouts as DDoS Attack Pummels Bitcoin
- Weitere Updates hat der Autor auf seinem Blog ergänzt