de
Zurück zur Liste

Tornado für Ethereum: Zero Knowledge Proofs machen einen Mixer zum Smart Contract

source-logo  bitcoinblog.de 09 August 2019 06:00, UTC

Ethereum ist nicht gerade dafür bekannt, besonders privat oder gar anonym zu sein. Mit Tornado.Cash könnte sich das ändern: Der erste Mixer als Smart Contract.

Kryptowährungen sind in der Regel nicht besonders anonym. Die Blockchain speichert alle Transaktionen, was für ein großes Maß an Transparenz sorgt – und den Effekt hat, dass ein Offenlegen einer Adresse darin enden kann, dass das „Schweizer Bankkonto in der Hosentasche“, wie es der ehemalige US-Präsident Barack Obama so schön gesagt hat, zum gläsernen Bankkonto wird.

Eine der oft verwendeten Methoden, um die Privatsphäre zu erhöhen, sind Mixer oder andere Dienstleister. Man bezahlt Bitcoins oder andere Kryptowährungen auf einer anderen Wallet ein, und diese zahlt andere Coins an einen aus. Das hat den Vorteil, dass die Spur der Transaktionen gebrochen wird – geht allerdings meist damit einher, dass der zentrale Dienstleister die beteiligten Parteien identifizieren kann und man ihm vertrauen muss, das Geld nicht einfach zu entwenden. Methoden wie CashShuffle, Joinmarket oder das Coinmixing durch Wasabi sind dagegen besser gefeit. Was aber der Tornado Mixer auf Ethereum bildet, geht noch ein Stück darüber hinaus. Er setzt erstmals einen Mixer als Smart Contract um.

Theoretisch ist es kein großes Problem, einen Mixer auf Ethereum nachzubilden: Man baut einen Smart Contract, auf den Leute Guthaben ein- und auszahlen. Allerdings gibt es einige Probleme, die beinah unlösbar erscheinen: So müsste man den Smart Contract schon bei der Einzahlung instruieren, wohin er das Geld auszahlen muss – womit der ganze Sinn des Mixers dank der Transparenz der Blockchain hinfällig wäre. Tornado.cash erlaubt es nun, Geld einzuzahlen ohne eine Auszahlungsadresse zu definieren. Stattdessen legt man später einen Beweis für die Einzahlung vor, um das Geld wieder abziehen zu können. Das führt aber zum nächsten Problem: Da der Beweis in die Blockchain eingeht, darf er keinen Hinweis darauf geben, um welche Einzahlung es geht.

Die Transaktion, mit der die Ether aus dem Smart Contracts ausgezahlt werden. Von meiner Herkunftsadresse keine Spur.

Man braucht also einen Beweis dafür, eine Zahlung durchgeführt zu haben, ohne dass die Partei, die den Beweis prüft – in diesem Fall der Smart Contract – erfährt, um welche Zahlung es sich handelt. Also quasi ein blinder Beweis – ein Beweis, der geprüft wird, ohne dass der Prüfer ihn kennt. Das klingt unmöglich, ist es aber nicht.

In der Kryptographie nennt man dieses Konzept „Zero Knowledge Proof“. Zum Teil kommt dies bereits bei Kryptowährungen zum Einsatz, etwa wenn Zcash „Shielded Transactions“ bildet, oder wenn Monero „Confidential Transactions“ schreibt, bei denen der Betrag verschleiert ist, aber dank des Zero Knowledge Proofs dennoch prüfbar bleibt, dass die gesendete Menge korrekt ist.

Die Ethereum-Entwickler experimentieren schon seit geraumer Zeit mit den zk-Snarks genannten Zero Knowledge Proofs von Zcash. Die erste wirkliche Anwendung davon ist Tornado Cash. Der Ablauf ist gar nicht so kompliziert: Man bildet einen Beweis, kopiert diesen, und sendet dann durch eine spezielle Transaktion, die den Hash des Beweises enthält, Geld an den Smart Contract von Tornado Cash. Diese Transaktion gibt die Tornado.Cash-Dapp an Metamask oder eine andere Wallet weiter, so dass sie für den Anwender nicht schwieriger zu bilden ist als jede andere Transaktion. Später kann man dann durch die Vorlage des Beweises wieder Geld an eine andere Adresse auszahlen. Dabei empfiehlt es sich, ein Weilchen zu warten, bis auch weitere Parteien eingezahlt haben, so dass der Pool, aus dem man sein Geld abzieht, groß genug ist, damit Beobachter nicht erkennen können, wie Ein- und Auszahlungen zusammenhängen. Insgesamt aber bleibt die enorme kryptographische Komplexität, die in diesem Verfahren steckt, recht gut vor dem User verborgen.

Etherscan zeigt die Transaktion von dem Tornado Smart Contract unter „interne Transaktionen“ an.

Es handelt sich dabei wohlgemerkt nicht um eine vollständige Anonymität, sondern eher um ein Mixen: Verschiedene Parteien legen ihr Geld in einen Topf, um es dann jeder für sich abzuziehen. Einem Blockchain-Beobachter ist weiterhin bekannt, welche Parteien in dem Mixing-Verfahren beteiligt sind, woraufhin Strafverfolger beispielsweise die Spur jeder einzelnen zurückverfolgen könnten, um durch Ermittlungen herauszufinden, wohin die einzelnen Gelder geflossen sind. Auch könnten die durch Tornado.Cash privatisierten Ether auf einer Black-List landen, da sich ihre Herkunft von dem Mixer nachweisen lässt. Diese Coins könnten Ether zweiter Klasse sein, die unter Umständen darin resultieren, dass man sich schwierigen Fragen stellen muss, wenn man sie auf einer Börse auflaufen lässt.

Für Ethereum dürfte es sich in Sachen Privatsphäre um einen gewaltigen Fortschritt handeln, während es im weiteren Kryptoökosystem zahlreiche Alternativen gibt, die ebenso gut, wenn nicht besser sind, wenn etwa wie bei Monero die Anonymität von Transaktionen keine Ausnahme, sondern Standard ist. Dennoch ist es technisch gesehen geradezu ein Durchbruch – ein Service, der vorher von einem Dritten erbracht wurde, dem man vertrauen muss, wird auf einen Smart Contract ausgelagert.

bitcoinblog.de