TumbleBit: ein neues Protokoll zur Anonymisierung von Bitcoins

Anonymous von lio leiser via flickr.com. Lizenz : Creative Commons

Manchmal staunt man, was dem Schoß der Wissenschaft entspringt. Vor kurzem haben fünf Wissenschaftler der Universität Boston ein Paper entwickelt, in dem sie etwas vorstellen, das man mit ein wenig bösem Willen ein Protokoll zur Geldwäsche nennen kann. Das TumbleBit genannte Verfahren verspricht, die Privacy von Bitcoin erheblich zu verbessern.

Wie bekannt sein sollte, sind Bitoin-Transaktionen alles andere als anonym, sondern öffentlich in der Blockchain nachverfolgbar. Dies hat den Effekt, dass es schwierig bis unmöglich ist, mit Bitcoins eine dem Bargeld vergleichbare Privatheit zu erreichen und dass ein unbedarfter User recht schnell und ohne es zu merken seine finanzielle Privatsphäre verliert, weil man Adressen zu Wallets clustern kann. Ob dies nun ein fairer Kompromiss ist oder eine datenschutztechnische Katastrophe dürfte im Auge des Betrachters liegen.

Für einige Wissenschftler der Universität Boston – Ethan Heilman, Leen Alshenibr, Foteini Baldimtsi, Alessandra Scafuro und Sharon Goldberg – ist die Transparenz der Blockchain eher Problem als Lösung. Es gibt zwar diverse Ansätze, die Privacy von Bitcoin zu verbessern – etwa durch Mixer, Protokolle wie CoinShuffle oder Altcoins wie Monero – doch wirklich zufriedenstellend ist keine dieser Lösungen. Daher haben die fünf Forscher das TumbleBit getaufte Protokoll entwickelt, das laut den Wissenschaftlern das beste aus allen Welten verbindet. TumbleBit ist laut dem Paper

ein Hub für neue, unidirektionale und nicht verbindbare Zahlungen, die vollständig kompatibel zum gegenwärtigen Bitcoin-Protokoll sind. TumbleBit erlaubt es, schnelle, anonyme offchain-Zahlungen mit einem ‘Tumbler’ genannten Zwischenmann zu tätigen, ohne diesem vertrauen zu müssen.

TumbleBit ist ein wenig wie eCash von Chaum, so die Autoren des Papers, nur besser, da man niemandem mehr vertrauen muss.

Niemand, nicht mal der Tumbler, kann den Sender und Empfänger einer Zahlung verbinden. Jede Zahlung ist durch Bitcoins gedeckt und garantiert, dass der Tumbler weder die Anonymität verletzen, noch Bitcoins stehlen noch ‘Geld drucken’ kann.

Und da derTumbler “offchain” – über Payment-Channels – läuft, skaliert es sogar fast beliebig. Anonyme Transaktionen brauchen also nicht, wie mit Mixern oder Monero, mehr Platz auf der Blockchain, sondern weniger. Perfekt, oder?

Um zu verstehen, wie dieses Wunderwerk funktioniert, sollte man am besten drei Kannen Kaffee kochen, die Türe verschließen und das Paper durchlesen. Ich selbst verstehe es nur in Ansätze, versuche aber, diese Ansätze an euch weiterzugeben. Im Kern des Verfahrens liegt ein Rätsel. Die Idee ist, dass sowohl der Sender (Alice, A) wie auch der Empfänger (Bob, B) einen Payment-Channel mit dem Tumbler (T) eröffnen und dieser durch die Lösung des Rätsels geschlossen wird. Wer wissen möchte, was Payment-Channels sind, erfährt dies im entsprechenden Absatz in meinem Artikel zum Lightning-Netzwerk. Die kurze Variante bzw. das Fazit ist:

Sie können sich den Payment-Channel so vorstellen, als würde ich Ihnen einen ausgefüllten Überweisungsschein geben, den Sie jederzeit bei Ihrer Bank einwerfen können. Anstatt ihn einzulösen, ändern wir diesen Überweisungsschein aber stetig. Wenn ich eine Rechnung bei Ihnen bezahle, weise ich nicht die Bank an, Ihnen Geld zu überweisen, sondern sende Ihnen einen neuen Überweisungsschein, auf dem ich den Betrag erhöht habe. Und so weiter.

Also: Payment-Channels bedeuten, dass wir Transaktionen bilden, aber diese nicht auf die Blockchain bringen, sondern sie in Übereinstimmung ändern. TumbleBit setzt Payment-Channels auf die folgende Weise ein:

Wir haben A, der bezahlen, B, der empfangen will und T, der zwischen den beiden steht. Sowohl A als auch B eröffnen einen Payment-Channel mit T, indem sie jeweils eine bestimmte Menge Bitcoins auf eine 2-von-2-MultiSig-Adresse überweisen. Sagen wir 1 Bitcoin. Die Idee der Wissenschaftler aus Boston ist nun, ein Verfahren zu bauen, das es ermöglicht, dass A einen Bitcoin an T und T einen Bitcon an B gibt – womit also A praktisch B bezahlt – während T weder weiß, dass der Bitcoin von A zu B geht noch die Möglichkeit hat, den Austausch zu verhindern oder etwas zu unterschlagen. Zu erklären, wie das funktioniert, wird etwas haarig, aber lassen Sie es mich versuchen:

Derjenige, der Geld empfangen will, also B, erzeugt ein Rätsel z. Das Rätsel z ist nicht mehr als die Verschlüsselung eines Geheimnisses (E) mit einem öffentlichen Schlüssel von T. Gemäß der asymetrischen Verschlüsselung bedeutet das, dass ausschließlich der Tumbler durch seinen privaten Schlüssel E entschlüsseln und damit das Rätsel lösen kann.

Die Lösung des Rätsels ist jedoch – und das ist entscheidend – nicht nur ein Stück Zufall, sondern selbst ein Schlüssel. Mit diesem Schlüssel lässt sich ein “Versprechen” einlösen, dass der Tumbler zuvor B gegeben hat. Dieses Versprechen ist die mit E verschlüsselte Signatur einer Transaktion, mit der B den Payment-Channel schließen kann. T hat B dieses Versprechen zuvor geschickt.

Sind Sie noch da? Fassen wir den ersten Schritt zusammen: Ich bilde ein Rätsel, dessen Lösung mich ermächtigt, einen Payment-Channel, den ich mit dem Tumbler habe, aufzulösen.

Wie kann nun A eine Überweisung machen? Dazu wählt der Empfänger B zunächst einen sogenannten Blinding-Faktor, mit dem er das Rätsel z verschleiert. Es ist nun das Rätsel z’, und niemand, nicht einmal der Tumbler, weiß, dass z’ und z dasselbe Rätsel ist. B schickt nun z’ an A, und A geht mit z’ zum Tumbler T, von dem er die nötige Info bekommt, um das Rätsel zu lösen. Also den privaten Schlüssel. Im Gegenzug gibt A dem Tumbler die Mittel, um den Bitcoin im Payment-Channel zwischen A und T auszuzahlen, also die Signatur der Transaktion. A sendet danach die Lösung für das Rätsel z’ zurück zu B, der nun den Blinding-Faktor herausnimmt und so die Lösung von Rätsel z hat – also die Signatur, um den Payment-Channel zu seinen Gunsten aufzulösen.

Puh. Fassen wir nochmal zusammen: Ich nehme mein Rätsel, verschleiere es und schicke es an Sie. Sie erhalten im Austausch gegen 1 Bitcoin die (verschleierte) Lösung des Rätsels und können diese an mich schicken. Ich kann dann den Bitcoin vom Tumbler auszahlen. Das ist nicht ganz unkompliziert, aber – hoffentlich – noch nachvollziehbar.

Natürlich ist all dies nur der Kern des Protokolls. Wenn wir genau darüber nachdenken, kommen noch zahlreiche weitere Bauteile dazu. Wir brauchen etwa Timelocks, die verhindern, dass die beteiligte Parteien sich dauerhaft weigern können, einen Payment-Channel zu schließen; außerdem brauchen wir einen Zero-Knowledge-Proof, der unter anderem beweist, dass das “Versprechen” des Tumblers tatsächlich die entsprechende Signatur ist; und zudem ein “fair exchange” Verfahren, das unter anderem gewährleistet, dass T die für die Lösung des Rätsels notwendige Info tatsächlich herausrückt wenn – und nur wenn – A zuvor einen Bitcoin ausbezahlt hat. Hui.

Insgesamt ist TumbleBit also ein hochkomplexes Gewerk – aber auch Kryptographie vom Feinsten. Das vielleicht beste an TumbleBit ist, dass es, anders als das Lightning-Netzwerk oder Duplex-Payment-Channels, kein theoretisches Ding ist, das funktioniert, wenn man noch dies und das am Bitcoin-Protokoll ändert, sondern schon jetzt einsatzbereit ist. Die Wissenschaftler haben sogar eine Anwendung in C++ und Python gebaut und und dabei Zahlungen von 800 Sendern an 800 Empfänger gemixt. Offensichtlich funktioniert es wundervoll. Die abschließende Transaktion ist in der Blockchain zu sehen, der Code des Tumblers liegt als Open Source auf Github.

Damit dürfte TumbleBit in der Welt sein. Selbst dann, wenn es dem Auftraggeber der Wissenschaftler – also dem Staat – wie zu vermuten ist nicht ganz in den Kram passt, was seine Angestellten da fabriziert haben.

About Christoph Bergmann (1133 Articles)
Das Bitcoinblog wird von bitcoin.de gesponsort, ist inhaltlich aber unabhängig und gibt die Meinung des Redakteurs Christoph Bergmann wieder. Wenn Ihnen das Blog gefällt, freuen wir uns über Spenden an 1BvayiASVCmGmg4WUJmyRHoNevWWo5snqC. Jeder Satoshi wird dazu verwendet, um das Blog besser zu machen. Weitere Infos, wie Sie uns unterstützen können, finden Sie HIER. Gastbeiträge sind ebenfalls willkommen. Meinen öffentlichen PGP-Schlüssel sowie den Bitmessage-Schlüssel finden Sie HIER

4 Comments on TumbleBit: ein neues Protokoll zur Anonymisierung von Bitcoins

  1. Nattydraddy // 1. September 2016 at 12:03 // Reply

    “fünf Wissenschaftler der Universität Boston ein Paper entwickelt, in dem sie etwas vorstellen, das man mit ein wenig bösem Willen ein Protokoll zur Geldwäsche nennen kann.”

    Universität Boston klingt nach MIT ChainAnchor “Bribing Miners to Regulate Bitcoin”. (MIT liegt im Westen von Boston). Dann wäre ein Protokoll zur Geldwäsche wirklich böse. Aber in meiner Jugend gab man mir Geld damit ich mich mal wasche. Inzwischen ist man nicht mehr ganz sauber, wenn man sein Geld wäscht…

  2. Nattydraddy // 1. September 2016 at 12:35 // Reply

    Das vielleicht beste an TumbleBit ist, dass es jetzt schon einsatzbereit ist.”

    TumbleBit ist ein hervorragendes Werk, bei CryptoCurrencies reicht “einsatzbereit” noch nicht.
    GitHub – BUSEC/TumbleBit: This code is very early in its development (proof-of-concept phase) and is currently not ready for production.

  3. Ob einsatzbereit oder nicht: Ich weis nicht ob mir dieses Teil gefallen muss.

    • Ja, die Frage ist, ob es ein zuviel an Datenschutz geben kann … vom technischen Ansatz her, von dem, was darinm steckt, ist das Ding ziemlich schön, weshalb vermutlich Techniker dazu neigen, die gesellschaftlichen Konsequenzen einseitig zu betrachten. Eine Umfrage wäre vielleicht nett gewesen an dieser Stelle …

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s