Spam-Welle auf Monero: Der Angriff des schwarzen Marmors
Skulptur eines Zentaurus aus schwarzem Marmor. Bild von Carole Raddato via flickr.com. Lizenz: Creative Commons
Im März wurde Monero (XMR) das Opfer einer Spamwelle. Dahinter stand ein spezifischer Angriff, der versuchte, die Anonymität von Ringsignaturen zu brechen. Wir erklären, was geschah.
Im Lauf des Märzes gab es einen Spam-Angriff auf den Privacycoin-Monero, der offenbar versuchte, die Transaktionen etwas weniger anonym zu machen.
In gewisser Weise stellte die Spam-Welle den bisher ausgefeiltesten Versuch dar, die Kryptowährung mit der ausgefeiltesten Anonymität zu brechen. Wir sind also im technologischen Krieg um Privatsphäre auf dem höchsten Gipfel angelangt, wo sich auch die Widersacher, Angreifer und Verteidiger, mit Hochachtung begegnen.

Anzahl täglicher Monero-Transaktionen seit Ende Dezember 2023 nach BitInfoCharts.com
Für uns als Laien wird es nicht ganz einfach, nachzuvollziehen, was geschah – aber ein Fest ist es dennoch. Auf der Oberfläche geschah das folgende: Anfang März sprang die Anzahl von Standard-Transaktionen von etwa 15.000 am Tag auf mehr als 100.000, und blieb fast den ganzen Monat über auf diesem Niveau. Die Größe der Blöcke, die alle zwei Minuten gefunden werden, erreichte einen Schwellenwert von 300 Kilobyte, woraufhin ein Mechanismus der dynamischen Anpassung griff, der die Größe der Blöcke sachte erhöhte.
In der Monero-Community vermutet man, dass es sich um einen „Black Marble“-Angriff handelte, wie ihn der Entwickler Rucknium beschreibt. Um ihn im Ansatz zu verstehen, muss man wissen, dass Monero sogenannte Ringsignaturen verwendet.
Der Unterschied zwischen Transaktionen bei Bitcoin und Monero
Wir müssen hier ein kleines Stückchen aushoilen: Eine Bitcoin-Transaktion nimmt einen Input – einen sogenanntes UTXO (unspent transaction output) – und sendet ihn als Output an einem Empfänger. Durch eine Signatur beweist der Sender, Besitzer des Inputs zu sein; die Kette der signierten Inputs verbindet die Adressen, wodurch man der Spur des Geldes gut folgen kann.
Bei Monero wird diese Kette durchbruchen. Ein Sender verwendet nicht einen einzelnen Input, sondern einen „Ring“ an gültigen Inputs. Unter diesen ist sein eigener, aber auch weitere, die er zufällig auf der Blockchain auswählt. Mit seiner Signatur beweist der Sender lediglich, dass er den Schlüssel für einen dieser Inputs hat, aber nicht, für welchen. Die Ringgröße gibt an, wie viele Inputs er verwendet. Sie ist derzeit standardmäßig 16.

Eine Monero-Transaktion: auf der Seite der Inputs findet man 16 Mitglieder der Ringgruppe. Nur einer davon versendet tatsächlich Geld.
Die Ringsignaturen machen es mehr oder weniger unmöglich, in einer Transaktion Sender und Empfänger zu identifizieren. Sie sind allerdings nur ein Teil des Privacy-Sets von Monero: Stealth Adressen sorgen dafür, dass die Adresse des Empfängers unbekannt bleibt, Zero Knowledge Proofs verbergen den versendeten Betrag.
In diesem Set sind Ringsignaturen das schwächste Glied. Das liegt auch mit am Black Marble Angriff, den man im März beobachten konnte.
Schwarzer Marmor
Wenn man versteht, wie Ringsignaturen funktionieren, ist der Black Marble Angriff leicht zu begreifen: Man spamt die Blockchain mit Transaktionen, um möglichst viele Outputs zu besitzen. Diese kann man dann in den Ringen anderer Transaktionen ausschließen, was deren effektive Ringgröße reduziert.
Ein Vorteil des Angriffs ist, dass der Algorithmus, mit dem einen Wallet den Ring bildet, neuere Outputs bevorzugt.
Der Name des Angriffs kommt daher, dass das Ausschlussverfahren daran erinnert, einen schwarzen Marmor durch hypergeometrische Verteilungen zu zeichnen. Die konkrete Formel ist zu viel Mathematik für diese Stelle, aber sie gibt an, wie hoch die Chance eines Angreifers ist, andere Ringe soweit zu verkleinern, dass man den Transaktionsstrom einigermaßen nachvollziehen kann.
So kann man kalkulieren, wie hoch die effektive Ringgröße während des Spam-Angriffs war. Wie der Monero-Forscher Rucknium zeigt, sank sie relativ rasch von 16 auf fünf bis sechs, während der Angreifer 75 Prozent aller frischen Outputs besaß.
Effektiv konnte der Angreifer also mit einer Wahrscheinlichkeit von etwa eins zu fünf erraten, welches der wahre Input einer Transaktion war. Monero hat, mit anderen Worten, weitgehend gehalten.
Künftige Szenarien
An sich könnte man sich jetzt zurücklehnen und ausatmen. Rucknium simuliert aber noch die langfristigen Szenarien. Was passiert etwa, wenn der Angreifer nicht nur 300 Kilobyte füllt, sondern auch 500, 1000 oder 2000? Halten die Ringsignaturen dann immer noch?
Dabei zeigt sich, dass bei der aktuellen Standard-Ringgröße von 16 die effektive Ringgröße schon ab 500 Kilobyte auf 4 und ab etwa 1000 auf zwei sinkt. Ab nun könnte ein Angreifer bei vielen Transaktionen sicher und bei noch mehr mit brauchbarer Wahrscheinlichkeit erraten, wer sie versendet hat.

Chart der nominellen und effektiven Ringgröße abhängig von der Stärke eines Black Marble Angriffs. Aus dem Paper von Rucknium.
Würde man dagegen die Ringgröße auf 40 oder 60 anheben, läge sie auch bei 2000 Kilobyte an Spam je Block noch im größtenteils sicheren Bereich. Dies hätte aber den Nachteil, dass die Transaktionen dadurch erheblich größer werden würden.
Eines der Probleme mit dem Black Marble Angriff ist, dass er relativ günstig ist. Laut Rucknium kostete die gesamte Spamwelle nur zwischen 61,5 und 81,3 Monero (XMR), je nachdem, welche Gebührenmodelle der Angreifer verwendete (was man nicht exakt feststellen kann, da Monero anonym ist). Das sind etwa 6500-9000 Euro, was für einen 23-tägigen Angriff nicht wirklich viel ist.
Allerdings dürften die Kosten für einen weitergehenden Angriff erheblich teurer werden. Denn sobald die 300-Kilobyte-Schwelle je Block geknackt ist, steigen die Gebühren deutlich an.
Probleme für die Nutzer
Die Ringsignaturen haben den Angriff also relativ gut überstanden. Man kann sie theoretisch brechen, doch das nur temporär, und dann muss man viel Geld investieren.
Dennoch überlegt die Monero-Community schon jetzt, die Ringgröße auf 64 zu erhöhen. Zudem hat sie mit „Full Chain Membership Proofs“ bereits ein Konzept zur Hand, das die Ringsignaturen ersetzen kann, und das nun, nach dem Angriff, früher als gedacht zum Einsatz kommt, womöglich bereits in sechs bis zwölf Monaten.
Eine unangenehmere Folge des Angriffs könnte die Nutzbarkeit von Monero betreffen. Viele User sahen ihre Transaktionen im Mempool feststecken; es kam fast den ganzen Monat über zu erheblich verzögerten Bestätigungen, die teilweise auf bis zu zwei Stunden eskalierten.
Noch unangenehmer war wohl, dass die meisten Remote Nodes hoffnungslos überlastet waren. An diese docken User mit ihrer Wallet an, die keinen Full Node haben. Für sie war Monero zwischenzeitlich fast schon unbenutzbar.
Sowohl das Problem mit den Remote Nodes als auch den verzögerten Transaktionen lässt sich durch eine bessere Software lösen, etwa indem man die Gebührenkalkulation verbessert oder den Mempool effektiver abfragt.
Schwieriger zu lösen ist aber ein anderes Problem: Der Angreifer hat für einige tausend Euro mehr als drei Gigabyte an Outputs geschaffen – die nie wieder gelöscht werden, da es keinen Konsens darüber gibt, wann ein Output wirklich verwendet wurde. So lässt sich die Monero-Blockchain mit relativ moderaten Beträgen soweit aufblähen, dass so gut wie jede Operation auf ihr massiv beeinträchtigt wird.
Privatsphäre ist eben hart und umkämpft. Sie ist kein Zustand, den man einmal erreicht hat, sondern den man fortwährend erhalten muss.
Entdecke mehr von BitcoinBlog.de - das Blog für Bitcoin und andere virtuelle Währungen
Melde dich für ein Abonnement an, um die neuesten Beiträge per E-Mail zu erhalten.
Vielen Dank für den gut recherchierten Artikel! Allerdings bin ich mir nicht sicher, ob „marble“ mit „Marmor“ die beste Übersetzung ist, ich würde spontan zu „Murmel“ tendieren. Bei der Abspaltung der zwar schnell toten Chains von Monero, ähnlich zu BCH und BSV von BTC wurden dort nachweislich verwendete Outputs „black balling“ genannt. Egal, passt beides und Du lieferst auch eine Erklärung für Deine Übersetzung 😉
Beide wurden übrigens für Bitcoin entwickelt, haben es aber nie ins Protokoll geschafft. Stealth Adressen wurden 2014 durch Peter Todd vorgestellt, Confidential Transactions, in Monero analog dazu Ring Confidential Transactions 2015 von Greg Maxwell, sie nutzen Pedersen Commitments, um zu beweisen, dass die Summe der Inputs gleich der Summe der Outputs ist und keine neuen Coins aus der Luft erschaffen wurden, ohne die jeweiligen Beträge offenzulegen.
Mit der „Low“-Fee, die der Angreifer genutzt hat, stimmt das. Hat man stattdessen die „Normal“ Fee (x4) genutzt und ca. 1,3 Cent für eine Transaktion bezahlt statt 0,3 Cent, kam man stets in den nächsten Block, ich habe etliche solcher Transaktionen getestet.
Schwerer wog in der Tat die Nichterreichbarkeit von öffentlichen Remote Nodes, die von einem Großteil der User von Mobile Wallets genutzt wird. Diese war wahrscheinlich einer alten Version der Wallet Software (seit Oktober 2023 gefixt) geschuldet. Im Detail holt sich die Wallet den Mempool alle 20 Sekunden vom Node Daemon, um 0-Conf Transaktionen sehen zu können. Alles kein Problem bei normalerweise verschwindend kleinem Tx-Pool meist deutlich unter 1MB. Da dieser aber zwischenzeitlich auf über 20MB angestiegen ist, wurden im alten Wallet alle 20 Sekunden diese 20MB fällig, was eine 8Mbit/s Leitung voll ausreizt – mit einem verbundenen Wallet. Die neue Wallet Implementierung synchronisiert nur die Veränderung seit dem letzten Abruf. Mit einer eigenen Heim- oder Remote-Node gab es zu keinem Zeitpunkt ein Problem…
Das sehe ich als DataHoarder eher weniger als Problem an. In drei Wochen 3GB Spam, wovon nur ein Bruchteil unlöschbare Outputs sind halte ich bei HDD Größen von 20TB+ und Preisen um 15€/TB HDD, 50€/TB SSD für vertretbar, wenn man bedenkt, dass ein UHD Stream von Netflix & Co. selbige Bandbreite innerhalb von 10 Minuten verballert.
Bestes Fazit ever.
Ich bin nun seit ca. 9 Jahren mehr oder weniger aktiv bei Monero und wenn ich etwas grundlegendes gelernt habe, dann eben dies. Privatsphäre ist nicht binär, sie ist ein Prozess, der fortwährende Verbesserungen benötigt.
So kann ich einige Dinge aufzählen, die nach und nach verbessert wurden:
– In den Anfängen Moneros waren „Ringe“ mit einem Input zulässig, also nur dem tatsächlichen Spend, es folgten minimale Ring Größen 3, dann 5, dann fixe Ring Größe 11, denn auch eine Ring Größe von exakt 73 sticht auf der Blockchain heraus und man kann von einem falsch konfiguriertem einzelnen Wallet/Script ausgehen. Aktuell sind es fixe 16.
– Beträge waren bis 2017 auch offen sichtbar, erst im Januar 2017 wurde RingCT eingeführt, Ende 2017 erfordert. Damals war es noch ein ziemlich großes Problem, da die Transaktionsgröße von ca. 1kB auf 13-14kB und auch die Verifizierung stark angestiegen ist, aber die Privatsphäre war der Community wichtiger als diese Nachteile. Nach der Einführung von Bulletproofs und BP+ konnte beides signifikant (ca. 90%) gesenkt werden und eine Standard-Tx wiegt aktuell ca. 1.3-1.4kB. BP++ sind im Review Prozess und senken das noch weiter, wobei die Einsparungen womöglich für eine höhere Ring Größe draufgehen werden.
– Auch die IP Adresse des Senders wird selbst ohne Tor/I2p geschützt, mit einem Protokoll namens Dandelion, mittlerweile Dandelion++ welches eine Transaktion nur an eine Node aus allen Verbindungen propagiert, diese propagiert sie per Zufallsprinzip auch nur an eine oder mehrere weitere, so wird selbst bei vielen Nodes kontrolliert durch einen Betreiber die Festlegung, woher die Tx stammt, extrem ungenau.
– Die Selektion der Inputs für die Ring Signaturen wurde mittels Daten der offenen Bitcoin Blockchain und Daten der Monero Blockchain mit Ring Größen 1 ermittelt, welche Outputs mit welcher Wahrscheinlichkeit genutzt werden. Hierbei sind neue Outputs überproportional vertreten und daher ist dieser Angriff auch relativ effektiv. Wenn man andererseits nicht nach Alter der Inputs gewichtet, die man in die Ring Signatur aufnimmt, kann man fast mit Sicherheit den neuesten Output als realen Spend annehmen.
– Mordinals analog zu Ordinals sind auch auf der Monero Blockchain aufgepoppt, haben das tx_extra Feld genutzt, welches eigentlich dafür gedacht war, einen Ersatz für einige Scripting Funktionen zu bieten wie z.B. Return Adressen, da man ja keine Absenderadresse kennt. Die Community hat sich aber schnell darauf geeinigt, dass wir keine Affenbilder auf der Blockchain haben wollen (die ähnlich wie die aktuelle Atacke die Privatsphäre einschränken) und das tx_extra Feld wurde im Daemon ganz ohne Hardfork auf eine Adresslänge + wenige Byte beschränkt und Transaktionen die das Limit nicht einhalten werden von upgedateten Nodes schlichtweg ignoriert. Mordinals sind damit gestorben…
Full Chain Membership Proofs wurden auf der MoneroKon letztes Jahr in Prag vorgestellt, womit der Autor Luke Parker alle anwesenden ziemlich verblüfft hat, denn es gab davor keine öffentliche Diskussion dazu. Ursprünglich sollten sie mit Seraphis/Jamtis, dem größten und komplexesten Update bis Dato eingeführt werden, welches erstmalig auch eine Änderung des Adressschemas bei Monero erfordert, aber da sich dieses in die Länge zieht, hat Luke nun eine Möglichkeit vorgestellt, FCMP bereits vor Seraphis einzubringen und gestern im Monero Research Lab besprochen, für jeden nachlesbar unter https://libera.monerologs.net/monero-research-lab/20240403
Möglicherweise kommen diese also binnen 6-12 Monate wie Christoph treffend angedeutet hat. Dann fallen Ringe komplett weg und das Anonymity Set jeder Transaktion steigt auf den kompletten Pool an Outputs der gesamten Blockchain.
Ach, und bevor ich es vergesse: MoneroKon ist dieses Jahr wieder in Prag, 7.-9. Juni im Hackerspace Paralleli Polis und es gibt noch Tickets. Mittlerweile die einzige Crypto-Konferenz die ich jedes Jahr besuche, auch dieses Jahr wird man mich dort antreffen 😉
Danke!
Danke, besonders auch an Paul, für die guten Erklärungen. Monero macht hier wirklich Pionierarbeit, die so wichtig ist.
Ja, „marble“ heißt hier „Murmel“ und der Ursprung ist ein Paper von Noether von 2014, wo ein Beispiel aus der Wahrscheinlichkeitstheorie herangezogen wird:
An urn contains N marbles of two possible colors. We have NB black marbles
and NW white marbles, where NB + NW = N is fixed. We draw M marbles
from the urn. What is the probability that all of the marbles we drew from
the urn are black? What is the probability that all of the marbles are white?
If 0 ≤ m ≤ M, what is the probability that we have m black marbles and
M − m white marbles?
Quelle: https://www.getmonero.org/resources/research-lab/pubs/MRL-0001.pdf
„Black marbles“ stehen für die Angreifer, so dass bei viele schwarzen Murmeln nur noch eine weiße in dem zufällig gezogenen Set der Ringsignatur ist.
Danke, Jue. Ich freue mich, wenn ich etwas hilfreiches beitragen kann! Natürlich habe ich in meinem initialen Kommentar auch ein paar Sachen vergessen…
Zur Privatsphäre und deren Verbesserung:
– Erst vor ca. 2 Jahren wurden Transaktionen wieder ein Stück homogener, indem eine Transaktion immer mindestens zwei Outputs haben muss. Warum? Eine Transaktion „send all“ ist zu >99% eine Transaktion an sich selbst, entweder an eine andere Wallet oder an eine Börse, denn eine Zahlung hat praktisch immer Wechselgeld, insbesondere wenn in Fiat bepreist, aber auch durch Transaktionsgebühren bleibt 1 XMR eben nicht mehr genau 1 XMR.
Monero strebt auch stets nach Dezentralisierung, die noch schwerer zu erfassen ist, aber ganz sicher niemals binär sein kann. Ist Bitcoin (noch) dezentral (genug)? Monero hat da seinen ganz eigenen Weg genommen, nachdem es von Bitmain unterwandert und versteckt gemined wurde, bis sie aufgeflogen sind und dann plötzlich ihre Miner der Öffentlichkeit vorgestellt haben…
– Monero, welches mit Cryptonight bis dahin als ASIC-proof gegolten hat, wurde eines Besseren belehrt und Bitmain’s ASICs waren etwa 20x effizienter als die effizientesten CPUs. Was hat man gemacht? Schnell geforkt, um die eingesetzten ASICs zu „bricken“, also unbrauchbar gemacht. Nur Bitmain wurde immer schneller und Monero hat dann im 4-5 Monatstakt den Algorithmus geforked, damit Bitmain keinen neuen ASIC rausbringen kann, bis Howard Chu aka hyc_symas – Erfinder der LMDB Datenbankstruktur, die bei Monero verwendet wird seit man gemerkt hat, dass LevelDB von Bitcoin einfach nicht ausreichend skalierbar ist – einen „random“ Code ins Spiel gebracht hat, der auf dem Hash des letzten Blocks basiert. Zuerst war es RandomJS mit JavaScript Funktionen, welches dann von tevador und sech1 mit RandomX zur Perfektion getrieben wurde und seit 5 Jahren keinerlei Update benötigt hat, weil es nicht effizienter in Platinen implementierbar ist als mit modernen CPUs.
– Auch p2pool gehört zum Dezentraliserungsbestreben und es ist genial. Ich kann es aber nicht fassen, dass selbst nach über zwei Jahren immer noch weniger als 10% der Miner p2pool nutzen, obwohl es keinerlei Gebühren gibt und vor allem ist das Pool Mining komplett dezentralisiert, denn jeder Miner baut seinen Block selbst mit den Transaktionen, die er aufnehmen will oder nicht. Nicht der Pool. Wäre eigentlich noch ein wichtigeres Thema für Bitcoin als Monero, wo man Transaktionen eh nicht voneinander unterscheiden kann, aber es ist ein starker Schritt in Richtung Dezentraliserung.
Ich wünsche mir das alles immer noch bei Bitcoin… Selbst die ersten Hardcore-Verfechter bekommen es mittlerweile mit, dass LN viel zu komplex ist, als dass es irgendwann mal breiter genutzt werden würde. Monero will eben das sein, ein Zahlungsnetzwerk, keine eierlegende Wollmilchsau mit „Smart“ Contracts usw., einfach nur digitales Cash ohne Zensur, mit voller Privatsphäre.
Öh, mist. ich habe es als die Geometrie der Farbeinschüsse im Marmor verstanden. Das kommt davon, wenn man die Mathematik nicht versteht. Und es dann auch noch in die Überschrift schreibt —
Kleiner Fehler der Dir verziehen sei, sonst habe ich keinen weiteren im Artikel gefunden, hätte ihn aber auch gerne vor der Veröffentlichung gegengelesen um die Murmel zu finden 😛
Super Artikel!
@Paul
Thats me. Eddi
Nach meiner Rechnung geht unsere Fünf-Jahres-Wette dieses Jahr zu Ende.
Wir haben nach etwas hin und her um einen Millibitcoin gewettet, dass Bitcoin eben nicht seinen Nummer-Eins-Rang verlieren wird.
Ich denke, die Wette haste verloren. Bitcoin steht besser da, als jemals zuvor. Aber es ist ja noch ein dreivierteltes Jahr bis dahin. Niemand kann was wirklich wissen, bevor es nicht tatsächlich passiert ist.
Ich hätte aber gerne meinen Gewinn in Monero. Vielleicht freut dich das ja.