Hack Mimblewimble Datenschutzmechanismus

Die Privatsphäre von Mimblewimble / Grin Cryptocurrency ist grundsätzlich anfällig. Nachdem ich nur 60 USD pro Woche für AWS ausgegeben hatte, verknüpfte ich Absender und Empfänger für 96% der Grin-Transaktionen in Echtzeit.

Die Sicherheitslücke ist das Herzstück des Mimblewimble-Protokolls, und ich glaube nicht, dass es behoben werden kann. Aus Datenschutzgründen kann Mimblewimble daher nicht mehr als Alternative zu Zcash oder Monero angesehen werden.

In den letzten zwei Jahren hat sich Mimblewimble als kompaktes Protokoll für private Kryptowährungen („Privacy Coins“) durchgesetzt. Mimblewimble wurde 2016 von einem Hacker unter dem Pseudonym Tom Elvis Jedusor geprägt. Er schickte die Protokollbeschreibung an den IRC-Chat und verschwand. Seitdem sind die bekanntesten Implementierungen von Mimblewimble Grin- Krypto-Private-Krypto-Währungen, die von anonymen Entwicklern erstellt wurden, sowie Tari- und BEAM- Projekte, die Wagnisinvestitionen angezogen haben. Selbst Litecoin erwägt die Integration von Mimblewimble .



Mehrere Forscher haben bereits die möglichen Schwächen des Datenschutzmechanismus in Mimblewimble vermutet. Der Beitrag meiner Arbeit besteht darin, dass ich eine bestimmte Angriffsmethode demonstriere, ihre Realisierbarkeit für echte Kryptowährung nachweise und ihre Wirksamkeit messe. Durch Ausführen des Grin-Experiments konnte ich 96% der von mir überprüften Transaktionen erfolgreich dekanonymisieren. Jetzt ist es offensichtlich, dass Sie sich nicht auf Mimblewimble verlassen können, wenn Sie hohe Privatsphäre benötigen.

In meinem Github finden Sie eine detaillierte Beschreibung des Angriffs, Quellen zum Spielen, gesammelte Daten und technische FAQ. Später in diesem Artikel finden Sie eine allgemeine, intuitive Erklärung der Konnektivität, der Funktionsweise des Angriffs und der Bedeutung dieser Erklärung für Datenschutztechnologien.

Was ist Konnektivität?


Es ist wichtig zu verstehen, was dieser Angriff bedeutet und was nicht.

Dieser Angriff erlaubt es uns nicht, den Betrag zu bestimmen, den die Leute erhalten. Mimblewimble verbirgt erfolgreich die Anzahl der Übertragungen mithilfe von Kryptografie, die auf elliptischen Vanillekurven basiert ( Pedersen-Verpflichtungsschema ). Mit diesem Angriff können wir feststellen, wer wen bezahlt hat . Mit anderen Worten, es ermöglicht uns, Transaktionen miteinander zu verbinden und die Übertragungsrichtung zu bestimmen.

Warum ist das wichtig?

Angenommen, Coinbase weiß, dass eine bestimmte Adresse einem Venezolaner namens Daniel gehört. Sie, ein amerikanischer Benutzer, versuchen mit Coinbase Münzen abzuheben. Nachdem Sie das Transaktionsdiagramm erweitert haben, stellt Coinbase fest, dass Sie Geld von Daniel erhalten haben - auch wenn dieser nicht weiß, wie viel es kostet. Aufgrund von Beschränkungen , die Venezuela von der US-amerikanischen Foreign Assets Control Authority auferlegt wurden, schließt Coinbase Ihr Konto. (Natürlich wissen die Börsen viel über das Transaktionsdiagramm, da sie KYC-Benutzerdaten haben, die in fiat angezeigt werden.)

Oder stellen Sie sich vor, eine autoritäre Regierung weiß, dass eine bestimmte Adresse einem politischen Dissidenten gehört. Sie schicken diesem Dissidenten einen kleinen Donut. Wenn Sie später Ihre Mimblewimble-Überweisung an eine lokale Vermittlungsstelle senden, werden Ihre Transaktionsdaten von dieser Vermittlungsstelle an die Regierung übermittelt. Da die Regierung das gesamte Diagramm der Transaktion sieht, weiß sie jetzt, dass Sie den politischen Dissidenten unterstützt haben.

Solche Angriffe wären in Zcash nicht möglich. Da Transaktionen in Zcash nicht verbunden sind oder mit anderen Worten, jede Zcash-Transaktion ein hohes Maß an Anonymität aufweist . Ein Anonymitätssatz ist ein Satz von Transaktionen, von denen Ihre Transaktion nicht unterschieden werden kann. Stellen Sie sich vor, Sie mischen sich mit der Menge: Je mehr Anonymität vorhanden ist, desto mehr „Menschenmenge“ wird Ihre Transaktion gemischt.



In Zcash umfasst der Anonymitätssatz jeder Transaktion alle geschützten Münzen. Dies ist aus theoretischer Sicht die maximal mögliche Anonymität.



In Monero ist der Anonymitätssatz für jede Transaktion der Satz aller benutzeraktivierten Ködertransaktionen. Obwohl Sie mit dem Monero-Client die Anzahl der Köder in einem Satz festlegen können, ist der aktuelle Standardwert 11. (Monero hat seine eigenen Schwierigkeiten , Köder sicher auszuwählen , aber ich denke, es funktioniert größtenteils, plus oder minus ).

Anfangs wurde davon ausgegangen, dass der Mimblewimble-Anonymitätssatz aus allen Transaktionen im selben Block besteht, das heißt, er sieht folgendermaßen aus:



Aber tatsächlich sieht es so aus:



Dies reduziert die Mimblewimble-Anonymität auf eine einzelne Adresse.

Ich möchte sagen, dass dies keine Kritik an Grinsen im Allgemeinen ist! Ich respektiere die Grin-Community und die Kernentwickler, die meine Fragen in den Foren immer bereitwillig beantwortet haben.

Grin bietet immer noch eine höhere Privatsphäre als Bitcoin und andere private Münzen, da Beträge sicher verschlüsselt werden. Das Datenschutzmodell von Mimblewimble ist jedoch strikt schwächer als das von Zcash oder Monero. Und dies macht es unzureichend für viele reale Anwendungsfälle, in denen Datenschutz erforderlich ist.

Angriffsübersicht


Wie genau kann ein Transaktionsdiagramm in Mimblewimble dekanonymisiert werden?

Ich habe festgestellt, dass Mimblewimble trotz der Verschlüsselung der Überweisungsbeträge ein nachvollziehbares Transaktionsdiagramm hinterlässt. Aber die Entwickler des Protokolls wussten davon, und daher verwendet Mimblewimble zwei Hauptmethoden, um die Konnektivität zu bekämpfen: durch Aggregation des gesamten Blocks und „Löwenzahn“ (Dandelion) .

Die Idee der End-to-End-Aggregation besteht darin, dass Transaktionen, die in einem Block gesammelt werden, zu einer „Supertransaktion“ zusammengefasst werden. Diese „Super- Transaktion “ sieht aus wie ein riesiger CoinJoin - alle Ein- und Ausgänge sind gemischt, und es gibt keine einfache Möglichkeit, festzustellen, welcher an wen ausgezahlt wurde. Es gibt nur eine Reihe von Eingaben und eine Reihe von Ausgaben, und bestimmte Beträge werden ausgeblendet.



Klingt zuverlässig? Es gibt nur ein Problem: Dieser CoinJoin wird jeweils für eine Transaktion erstellt. Da Transaktionen ständig von verschiedenen Orten aus erstellt und gesendet werden, ist es sehr einfach, CoinJoin zu entwirren, wenn Sie einen Sniffer-Knoten besitzen, der alle Transaktionen sammelt, bevor die End-to-End-Aggregation abgeschlossen ist. Jeder Sniffer-Knoten kann einfach das Netzwerk überwachen und sich die ursprünglichen Transaktionen merken, bevor sie aggregiert werden. Dies ist recht einfach, wenn Sie einfach alle Nachrichten archivieren, die Sie in einem P2P-Netzwerk sehen.


Hier können Sie überrascht sein - und ist das alles?

Tatsächlich hat das Grin-Team eine weitere Schutzschicht geschaffen: das Löwenzahn-Protokoll („Löwenzahn“) . Löwenzahn ist eine Netzwerkmethode, die von Forschern der Carnegie Mellon University entwickelt wurde und die die IP des Erstellers der Transaktion verbergen soll.



In Kryptowährungen wie Bitcoin sendet der Ersteller der Transaktion die Transaktion in der Regel einfach an alle Peers, und die Übertragung erfolgt schnell über das P2P-Netzwerk. Aber im Löwenzahn-Protokoll beginnt die Verteilung jeder Transaktion mit dem geheimen Spiel eines kaputten Telefons. Der Schöpfer überträgt seine Transaktion auf nur ein Fest, das wiederum an ein anderes Fest weitergegeben wird, und so weiter entlang der Kette (Löwenzahn- „Stamm“). Nach einer zufälligen Anzahl solcher Züge sendet das letzte Fest die Transaktion genau wie in Bitcoin (Löwenzahn "Blume"). Dieses Fest ist jedoch so weit vom Schöpfer der Transaktion entfernt, dass kein Beobachter erkennen kann, wer die Kette gestartet hat.

Dies funktioniert hervorragend, um die IP der Person zu verbergen, die die Transaktion durchführt. Dandelion in Grin hat jedoch eine zweite Funktion: In seltenen Fällen können Sie die Anonymität der Transaktion auch dann aufrechterhalten, wenn sich ein Sniffer-Knoten im Netzwerk befindet. Da jede Transaktion in der "Stamm" -Phase des Löwenzahns beginnt, werden zwei Transaktionen, die sich in der "Stamm" -Verbreitungsphase schneiden, vorzeitig aggregiert. In diesem Fall kann der Sniffer-Knoten die Transaktionen zum Zeitpunkt des Versands der Transaktion nicht mehr einfügen. Sie sind bereits in CoinJoin zusammengeklebt.

Dieser Transaktionssendemechanismus ist Grins primäre Verteidigung gegen die Transaktionskonnektivität durch Sniffer-Knoten. Aber es gibt einen einfachen Weg, sie zu brechen.

Standardmäßig ist jeder Grin-Knoten mit 8 anderen Peer-Knoten verbunden. Durch Erhöhen der Anzahl der Peers kann ich jedoch meinen Sniffer-Knoten mit jedem Netzwerkknoten verbinden. Wenn meine Site lange Zeit ununterbrochen online war, stellen am Ende fast alle Knoten im Netzwerk eine Verbindung zu mir her, was mich zu einem Super-Hub macht .

Wenn ich ein Superknoten werde, besteht eine hohe Wahrscheinlichkeit, dass ich in der Kette der "Löwenzahn" jeder Transaktion sein werde. Der einzige Grund, warum ich eine Transaktion möglicherweise nicht vor ihrer Aggregation abfangen kann, ist, dass sich die beiden Transaktionen in der Stammphase des Löwenzahns überschnitten haben, bevor ich mindestens eine davon gesehen habe . Wenn ich mindestens eine davon sehe, bevor sie aggregiert sind, kann ich sie durch einfache Subtraktion der Mengen trennen.



Bei meinem Angriff konnte ich 96% aller Transaktionen verbinden und nur 200 Peers von insgesamt 3000 Peers im Grin-Netzwerk verbinden. Wenn ich jedoch bereit wäre, etwas mehr Geld auszugeben, könnte ich problemlos eine Verbindung zu 3.000 Knoten herstellen, um fast alle Transaktionen zu verhindern. Und dafür ist es nicht erforderlich, einen großen Superuser beizubehalten - der gleiche Angriff funktioniert, wenn Sie 3000 separate Knoten mit eindeutigen IPs ausführen, von denen jeder nur mit einem Peer verbunden ist. Solange ich alle Transaktionsdaten abfange und in die zentrale Masterdatenbank speichere, funktioniert der Angriff genauso.

Ist es also möglich, Mimblewimble zu retten?


Nicht klar. Meiner Meinung nach gibt es in der aktuellen Version von Grin keine Möglichkeit, das Transaktionsdiagramm zu schützen. Nur den „Löwenzahn“ zu verlängern ist nicht genug - es wird leicht sein, ihn mit einer großen Anzahl von Knoten zu besiegen, wie ich im technischen Bericht beschreibe .

Trotz der Transaktionskonnektivität verfügt Mimblewimble weiterhin über Eigenschaften, die das Protokoll von anderen Kryptowährungen unterscheiden. Es ist eine End-to-End-Aggregation möglich, mit der die Blockchain effektiv verkleinert und Transaktionsbeträge ausgeblendet werden können. Wenn Sie eine hohe Vertraulichkeit wünschen, können Sie Mimblewimble immer mit einem anderen Protokoll kombinieren, das das Transaktionsdiagramm verbirgt, z. B. in Ethereum 9um (das Mimblewimble mit einem Nullrücksetzschema im Zerocash-Stil kombiniert).

Es ist jedoch offensichtlich, dass Mimblewimble selbst nicht stark genug ist, um eine hohe Privatsphäre zu gewährleisten.

Bitcoin ist mittlerweile 11 Jahre alt, aber Kryptowährungen befinden sich noch in einem sehr frühen Entwicklungsstadium. Vor nicht allzu langer Zeit wurden sowohl in Zcash als auch in Monero schwerwiegende Sicherheitslücken entdeckt. Und das ist zu erwarten: Die interessantesten Technologien befinden sich noch in der Forschungsphase.

Aber so entwickelt sich die Wissenschaft immer weiter: Wir stellen ständig neue Hypothesen auf und widerlegen sie, bis nur noch diejenigen übrig sind, die den Test der Zeit bestanden haben.

Vielen Dank an Hasib Kireshi für die umfangreiche Hilfe bei der Erstellung dieses Berichts und der Veranschaulichung der Anonymität. Weiterer Dank geht an Oleg Ostroumov, Elena Nadolinsky, Mohamed Fouda, Lucas Ryan und Nader Al-Naji für die Überprüfung der Entwürfe dieses Beitrags. Und vielen Dank an Jake Stutzman (NEAR Protocol) für die Löwenzahnillustrationen und die Blockaggregation. Vielen Dank, Daria Smirnova, für die Übersetzung des Artikels.

Wenn Ihnen der Artikel gefallen hat, empfehle ich Ihnen, sich bei Twitter anzumelden .

Offenlegung: Dragonfly Capital verpflichtet sich, die in diesem Bericht aufgeführten Vermögenswerte 3 Tage ab dem Datum der Veröffentlichung nicht zu handeln.

Source: https://habr.com/ru/post/de477018/


All Articles