Schwächen von RingCT
Wo Moneros Privatsphäre heute Lücken hat – und warum genau das FCMP++ behebt
Beträge und Empfänger sind in RingCT durch Kryptografie geschützt. Der Sender – nur durch Statistik: „1 von 16“. Fast alle bekannten Angriffe funktionieren gleich: Sie entfernen Decoys aus dem Ring oder gewichten Kandidaten nach Wahrscheinlichkeit. Unten stehen die wichtigsten, vom bekanntesten bis zum subtilsten.
Das Modell: effektive Ringgröße
Ein Ring aus 16 bietet nur dann 16 Möglichkeiten, wenn alle gleich plausibel sind. Jedes bisschen Zusatzinformation verringert die effektive Ringgröße. Kann ein Beobachter 10 Decoys streichen, bleibt „1 von 6“. Kann er den Rest gewichten – „wahrscheinlich dieser“.
1. Kettenreaktion (historisch)
Vor 2016 waren Transaktionen ohne Decoys (Ring aus 1) erlaubt. Ein solcher Input verrät genau, welcher Output ausgegeben wurde. Und wurde dieser Output in einem fremden Ring als Decoy verwendet, kann man ihn dort streichen. Das kann einen anderen Ring eindeutig machen und so weiter – eine Kettenreaktion. Studien von 2017 zeigten, dass ein großer Teil der frühen Inputs auf diese Weise deanonymisiert wurde.
Status: geschlossen durch das Verbot von Ringen ohne Decoys und den Umstieg auf RingCT (RingCT-Outputs mischen sich nur mit RingCT-Outputs). Aber alte Outputs tragen ihre Geschichte mit sich.
2. Alter der Inputs
Passt die Altersverteilung der Decoys nicht dazu, wie Menschen wirklich ausgeben, fällt der echte Input auf. Die klassische Heuristik „der neueste ist der echte“ funktionierte bei frühen Transaktionen sehr gut. Details unter Decoy-Auswahl.
Status: abgeschwächt durch die Gammaverteilung, aber nicht vollständig behebbar, solange Decoys ausgewählt werden.
3. Der EAE-Angriff (Eve–Alice–Eve)
Eve (etwa eine Börse) schickt Alice Geld, und Alice schickt später Geld an Eve zurück (dieselbe Börse, vielleicht über ein paar Zwischentransaktionen). Eve kennt ihren Output am Anfang der Kette und ihren Output am Ende. Sieht sie „ihren“ Output in den Ringen der Zwischentransaktionen und passt das Timing, kann sie Senden und Empfangen mit hoher Wahrscheinlichkeit verknüpfen.
Status: einer der praktikabelsten Angriffe für zentrale Dienste. Abgeschwächt durch Churning (an sich selbst senden, mit Pausen), zuverlässig behoben aber erst durch FCMP++.
4. Flooding (Black Marble)
Ein Angreifer erzeugt massenhaft Transaktionen mit eigenen Outputs. Nach den Regeln der Decoy-Auswahl landen diese in den Ringen anderer Nutzer. Der Angreifer weiß, dass sie „leer“ sind, und streicht sie. Je größer sein Anteil an den Outputs eines Zeitraums, desto kleiner der effektive Ring aller anderen. Solche Spam-Episoden gab es 2021 und 2024; Schätzungen zeigten währenddessen einen spürbaren Rückgang der effektiven Ringgröße.
Status: begrenzt durch die Kosten (Gebühren) und die dynamische Blockgröße. Beseitigt durch FCMP++: Wenn der „Ring“ die ganze Blockchain ist, ist der Anteil des Angreifers vernachlässigbar.
5. Zusammenführen von Inputs
Gibt eine Transaktion 5 Inputs aus, sind das 5 Ringe, und die echten Mitglieder aller fünf gehören bekanntermaßen einer Person. Sieht ein Beobachter, dass diese Ringe Outputs aus derselben früheren Transaktion enthalten, ist das ein starkes Signal, dass dies die echten Inputs sind (eine zufällige Decoy-Auswahl erzeugt so einen Zufall kaum).
Status: den Ringen eigen. FCMP++ schwächt es stark ab (jeder Input ist „einer von allen“), aber die Anzahl der Inputs bleibt sichtbar.
6. Metadaten der Transaktion
- Anzahl der Inputs und Outputs: 1→2 ist häufig, 15→1 fällt auf (Konsolidierung).
- Gebühr: Eine ungewöhnliche Gebühr verrät eine ungewöhnliche Wallet.
- Zeitpunkt: Transaktionen direkt nach dem Empfang von Geld verraten das Alter des echten Inputs.
- tx_extra: ungewöhnliche Felder, Reihenfolge, zusätzliche Schlüssel – ein „Fingerabdruck der Wallet“.
- Unlock Time: ungewöhnliche Werte fielen auf (in neueren Regeln entfernt).
Status: FCMP++ ändert daran kaum etwas – das ist Aufgabe der Wallets: einheitliches Verhalten, einheitliche Formate.
7. Netzwerkebene
Der Node, der eine Transaktion zuerst weitergab, ist wahrscheinlich ihr Urheber. Monero verwendet Dandelion++: Eine Transaktion wandert zuerst still durch eine Kette zufälliger Nodes (der „Stängel“, Stem) und wird erst dann an alle verteilt (die „Pusteblume“, Fluff). Dazu kommt Unterstützung für Tor/I2P. Nutzt du den Remote-Node eines anderen, sieht er deine IP und den Sendezeitpunkt.
Status: außerhalb der Chain, FCMP++ hilft nicht. Verwende deinen eigenen Node oder Tor.
Zusammenfassung: was FCMP++ behebt
| Schwäche | RingCT | FCMP++ |
|---|---|---|
| Kettenreaktion | historisch | nicht anwendbar |
| Alter der Decoys | abgeschwächt | beseitigt |
| EAE | funktioniert | beseitigt (on-chain) |
| Flooding | funktioniert | praktisch beseitigt |
| Zusammenführen von Inputs | funktioniert | stark abgeschwächt |
| Metadaten (Anzahl In/Out, Gebühr, Zeit) | sichtbar | sichtbar |
| Netzwerk (IP) | Dandelion++/Tor | unverändert |
Weiter: wie FCMP++ funktioniert.