Erfreuliche Entwicklungen für die Privacy bei Bitcoin und Ethereum

Camouflage. Bild von Lucca Serazzi via flickr.com. Lizenz: Creative Commons

In den letzten Monaten wurden einige aufregende Privacy-Technologien für Bitcoin und Ethereum weiterentwickelt und verbessert: Confidential Transactions, Reusable Payment Codes, zkSNARKs und Ring Signaturen. Dies belebt die Hoffnung wieder, dass Kryptowährungen der Menschheit finanzielle Privatsphäre schenken werden.

Falls es euch nicht bewusst ist, wird es Zeit, dass ihr es erfahrt: Die Privatsphäre bei Kryptowährungen ist in der Regel eine Tragödie. Wenn ihr euch die beiden stärksten Kryptowährungen anschaut, Bitcoin und Ethereum, solltet ihr feststellen, dass hier nichts privat ist. Und das ist kein Unfall oder aus Versehen passiert, sondern die logische Folge des grundlegenden Konzepts von Kryptowährungen.

Die ganze Idee von Bitcoin und anderen Kryptowährungen ist, dass jeder Knoten in einem dezentralen Netzwerk die Gültigkeit jeder Transaktion und jedes Blocks prüft. Um das zu können, muss jeder in der Lage sein, zu sehen, wer wem wie viele Coins gesendet hat. Alles muss vollständig transparent sein. Mit Privatsphäre und Anonymität hat das offensichtlich nicht viel zu tun.

Wenn ihr Geld mit einer Blockchain wie Bitcoin oder Ethereum überweist, solltet ihr euch über das Folgende im Klaren sein: Nicht nur euer Geschäftspartner, eure Bank und die Regierung weiß, was ihr macht – sondern jeder. Und, noch schlimmer: Dank Blockchain-Analysetechniken weiß jeder nicht nur über eure letzte Transaktion Bescheid, sondern ist auch in der Lage, eure verschiedenen Transaktionen und Adressen und Inputs zu verbinden, um alles zu erfahren, was in eurer Wallet vorgeht.

Die Situation ist nicht besonders erfreulich. Noch gelten Kryptowährungen als besonders privates Zahlungsmittel. Doch es gehört nicht viel Phantasie dazu, um sich vorzustellen, dass sie der Wegbereiter des finanziell absolut gläsernen Bürgers sein werden. Um dies zu verhindern, werden auf der einen Seite Kryptowährungen entwickelt, die wie Monero und Zcash eine bessere Privatsphäre bieten. Auf der anderen Seite werden Technologien geschaffen, die die Privatsphäre auf Blockchains wie Bitcoin oder Ethereum verbessern. Um diese wird es in diesem Artikel gehen.

Im Einzelnen sind es die folgenden Technologien (Link klicken, um direkt zur Beschreibung zu springen):

Bitcoin: Confidential Transactions und Reusable Payment Codes

Confidential Transactions

Um zu verstehen, was Confidential Transactions machen, könntet ihr damit beginnen, euch vorzustellen, dass ihr Schere-Stein-Papier per E-Mail spielt.

Ist natürlich quatsch: Wenn ihr mir per E-Mail schreibt, dass ihr einen Stein habt, antworte ich “Papier”, und wenn ihr schreibt, dass ihr eine “Schere” habt, werde ich natürlich einen Stein haben. Solange die beiden Spieler nicht anwesend sind und gleichzeitig ihr Gebot setzen, verliert immer der, der sich als erstes bewegt.

Kryptographen haben allerdings schon lange eine Methode entwickelt, um Schere-Stein-Papier, Münzwürfe oder Poker per E-Mail zu spielen. Um das zu tun, braucht man sogenannte “Commitments” – das sind Funktionen, mit denen man einen bestimmten Wert (“Schere”, “Kopf”, “Vier Könige”) festsetzen, aber solange geheimhalten kann, bis man ihn enthüllt. Man kann es sich so ähnlich vorstellen, als würde man das Ergebnis auf einen Zettel schreiben, in eine Box einschließen, die Box dem Partner geben, und dann, wenn es um die Enthüllung geht, den Schlüssel nachreichen. Mit Hashes oder Verschlüsselung ist es relativ einfach, solche Commitments abzugeben.

Wenn wir jedoch versuchen, dasselbe auf Bitcoin anzuwenden, wird es etwas schwieriger. Die Idee von Confidential Transactions ist es, die in einer Transaktion versendeten Beträge so geheimzuhalten, wie das Commitment beim E-Mail-Münzwurf, aber es gleichzeitig allen Knoten im Netzwerk zu erlauben, zu prüfen, ob die Transaktion korrekt ist. Das ist so ähnlich, als würde ich beim Schere-Stein-Papier per E-Mail ein verschlüsseltes Commitment abgeben, aber der E-Mail-Provider kann prüfen, ob ich ein gültiges Gebot abgebe oder so etwas Unsinniges wie “Brunnen”. Absurd, oder?

Die ganze kryptographische Magie von Confidential Transactions liegt darin, diese Paradoxie aufzulösen. Vorgeschlagen wurde das Konzept von Adam Back. Gregory Maxwell hat es weiterentwicklet, und erstmals implementiert wurde es in der Elements Sidechain von Blockstream. In einer Textdatei erklärt Maxwell, was der Trick dabei ist: Indem verschiedene kryptographische Technologien wie Pedersen Commitments genutzt werden, wird es möglich, die inputs und outputs miteinander zu verrechnen – selbst dann, wenn sie verschleiert sind.

In einer gültigen Transaktion decken sich Inputs und Outputs (abzüglich Gebühren). Wenn man also die Formel “Inputs – Outputs” ausrechnet, bleiben nur noch die Gebühren übrig. Das besondere an den Commitments von Confidential Transactions ist nun, dass es möglich ist, diese zu substrahieren, ohne ihren genauen Inhalt zu kennen. Ihr könnt es euch wie die Gleichung “(4+3) – (5+2)” vorstellen. Sie hat dasselbe Ergebnis wie “7 – 7”.

Confidential Transactions verschleiern den Betrag, der in einer Bitcoin-Transaktion versendet wird. Sie verschleiern jedoch nicht, wer sendet und wer empfängt, weshalb sie kein Allheilmittel gegen Verletzungen des Datenschutzes sind. Sie können jedoch Teil einer umfassenden Lösung sein. So könnte etwa die Verbindung von CoinJoin und Confidential Transaction in beinah vollständiger Anonymität resultieren.

Es sollte möglich sein, Confidential Transactions per Softfork in Bitcoin zu aktivieren. So wie bei SegWit würde man die Transaktionen in einer Anyone-can-Spend-Adresse verpacken. Anders als SegWit würden Clients ohne Update aber gar nicht wissen, dass Bitcoins bewegt wurden, weshalb die Konsistenz der Knoten zum UTXO-Set dahin wäre. Ein weiterer Nachteil von Confidential Transactions ist die Größe einer Transaktion. Wie Maxwell erklärt, würden Confidential Transactions die Größer der Transaktion um das 60-fache aufblähen, also auf rund 10 Kilobyte.

Nun haben zwei Kryptographen der berühmten Universität von Stanford, Benedikt Bünz und Jonathan Bootle, gemeinsam mit Blockstream versucht, Confidential Transactions kleiner zu kriegen. Das beeindruckende Ergebnis hat Maxwell kürzlich in der Bitcoin-Mailinglist vorgestellt: Ein Algorithmus namens Bulletproof reduziert den “bloat Faktor auf ~3x des gegenwärtigen Transaktionsmusters. Da dieser Ansatz logarithmisch zur Anzahl der Inputs skaliert, macht etwa CoinJoin den Bloat Faktor äußerst klein. Wenn man etwa 64 Transaktionen verbindet, wird der Proof weiterhin kleiner als 1,1 Kilobyte sein, was den zusätzlichen Platz des Beweises vernachlässigbar macht.”

Der Core-Entwickler und Blockstream-Mitarbeiter Pieter Wuille kommentiert den Durchbruch: “Bulletproofs sind eine erstaunliche Entdeckung, die das, was möglich ist, fundamental verändert.” Allerdings ist es schwer abzuschätzen, ob und wann es Confidential Transactions in Bitcoin schaffen – nicht zuletzt deswegen, weil sie einige Aspekte von Bitcoin grundsätzlich verändern, die regulatorisch nicht ganz irrelevant sind.

Reusable Payment Codes

Eine der Standard-Empfehlungen für Bitcoin-User ist, dass man bitte niemals dieselbe Adresse mehrfach verwenden sollte. Der Grund dafür liegt vor allem darin, dass man damit zu viel über seine Privatsphäre verraten würde. Daher kann man etwa bei Bitcoin.de für jede Einzahlung eine neue Adresse erzeugen. Muss ja nicht jeder wissen, wie viele Bitcoins auf eurer Wallet liegen.

In vielen Fällen ist das aber eine unbequeme Anforderung. Beispielsweise wenn ihr wie ich eine Spenden-Adresse auf einem Blog habt, immer wieder Zahlungen von einer Partei oder Person bekommt, oder einfach nur keinen Zugang zur Wallet habt, aber dennoch eine Zahlungsaufforderung herausgeben wollt.

Die kürzlich veröffentlichte Android SPV-Wallet Stash, verfügbar für Bitcoin und Bitcoin Cash, bietet eine Lösung für dieses Problem: Es hat Reusable Payment Codes implementiert, wie sie in BIP 47 beschrieben sind. “Unsere innovative Zahlungs-Adresse gibt Usern eine einzige, wiederverwendbare Adresse für Zahlungen und Nachrichten, die es verhindert, dass Blockchain-Beobachter die Historie der Transaktionen sehen können,” erklären die Wallet-Entwickler.

Wie funktioniert das? Im Grunde ähnlich wie die HD-Wallets, die aus einem Masterkey eine prinzipiell beinah unendliche Anzahl von Schlüssel und Adressen erzeugen. Wer den Reusable Payment Code kennt, kann beliebig viele Adressen erzeugen, für die der Besitzer des Codes den privaten Schlüssel hat. Um dafür zu sorgen, dass der Empfänger weiß, wer ihm etwas gesendet hat, baut dieser in der ersten Transaktion eine Art “Tunnel” auf: Er veröffentlicht in ihr seinen eigenen Paycode, mit dessen Hilfe er Adressen von dem Reusable Payment Code ableitet. So ist es für den Empfänger möglich, den Sender zu identifizieren, obwohl dieser Geld auf nach außen hin unzusammenhängende Adressen überweist.

Ethereum: Privacy in den Contracts

Der Ansatz von Ethereum, um die Privatsphäre zu erhöhen, ist etwas anders. Nachdem der erste Teil der Metropolis Hardfork durchgeführt wurde, ist es möglich, komplexere kryptographische Operationen in Smart Contracts zu prozessieren. Damit kann man innerhalb der Contracts die Privatsphäre mit bestimmten Technologien erhöhen – während die normalen Ether-Transaktionen weiterhin vollkommen transparent bleiben.

Die beiden derzeit diskutierten und getesteten Technologien sind zkSNARKs und Ring Signaturen.

zkSNARKs

zkSNARKs sind die Zero-Knowledge Proofs, die von Zcash angewendet werden. “Zero-Knowledge Proofs erlauben es einer Partei, einer anderen zu beweisen, dass ein Statement wahr ist, ohne mehr Informationen zu enthüllen, als dass das Statement wahr ist,” erklärt die Webseite von Zcash.

zkSNARKs sind also ähnlich wie Confidential Transactions, nur viel weitreichender: Während Confidential Transactions lediglich die Korrektheit der Transaktionsbeträge ungesehen prüfen können, können zkSNARKs jede Art von Information verschleiern und gleichzeitig validieren. Zcash nutzt sie, um “die Gültigkeit einer Transaktion gemäß den Regeln des Netzwerk-Konsens zu prüfen, ohne eine der Informationen preiszugeben, auf denen die Berechnungen beruhen.” Dies ist möglich, indem “einige der Konsens-Regeln des Netzwerks in zkSNARKs kodiert sind.”

Transaktionen, die mit zkSNARKs versendet werden, sind also vollständig anonym: Sie verbergen nicht nur den versendeten Betrag, sondern auch Sender und Empfänger – während die anderen Knoten im Netzwerk in der Lage bleiben, zu bestätigen, dass die Transaktion korrekt ist.

Bei Ethereum kann der Zero-Knowledge-Proof nicht für normale Ether-Transaktionen verwendet werden. Allerdings ist es seit der Metropolis Hardfork möglich, ihn zu benutzen, um den Inhalt eines Smart Contracts zu verschleiern. Man kann beispielsweise einen ERC20-Contract nehmen, mit dem Token erzeugt, versendet und empfangen werden, und dann die Operationen in dem Contract verhüllen, etwa den Transfer von Token. Die Miner und Knoten wissen dann, dass eine Funktion innerhalb des Contracts ausgeführt wird, und dass alles korrekt abläuft, aber sie wissen nicht, was genau passiert.

Eine andere mögliche Anwendung wären Wahl-Contracts: Jeder, der in einem Smart Contract registriert ist, kann eine Stimme abgeben, und man kann feststellen, was das Ergebnis einer Wahl ist und dass jeder maximal eine Stimme abgegeben hat – aber man kann nicht nachvollziehen, wer für was gestimmt hat. Falls man einmal vorhat, demokratische Wahlen auf einer Blockchain abzubilden, wäre dies ein geradezu eine Bedingung.

Wie genau zkSNARKs funktionieren, ist ein kompliziertes Thema. Es gibt interessante technische Einführungen auf der Webseite von Zcash, eine Serie aus drei Teilen von Vitalik Buterin und eine Einführung von Christian Reitwiessner von der Ethereum Foundation. Es gibt auch bereits eine Library namens ZoKrates, die zkSNARKs für Solidity umsetzt. Ihr Autor, Jacob Eberhardt, hat bereits vorhergesagt, dass es bald eine Fülle an “Zapps” geben wird – private dezentralisierte Anwendungen auf Ethereum.

Allerdings haben zkSNARKs auch eine Schattenseite: Sie benötigen sehr viel Platz und Computerressourcen. In einer ersten Demo-Implementierung zeigte sich, dass die Ausführung eines zkSNAKRs-Contracts sehr teuer ist. Die Kosten für Gas lagen bei etwa 10 Dollar. Selbst mit den Verbesserungen, wie sie erstaunlicherweise von der Bank ING eingebracht wurden, sind die Zero-Knowledge Proofs weiterhin recht teuer.

Dies ist die Stelle, bei der wir über Ring-Signaturen reden müssen.

Ring-Signaturen

Ring-Signaturen sind die Basis-Technologie von der recht privaten Kryptowährung Monero. Ring-Signaturen wurden erstmals im Jahr 2001 vorgestellt. Sie sind eine kryptographische Technologie, um Nachrichten in einer Weise zu signieren, dass man verifizieren kann, dass sie von einem Mitglied einer Gruppe signiert wurden, aber nicht feststellen kann, von wem genau.

Bei Monero werden die Ring-Signaturen genutzt, um Transaktionen auf genau diese Weise zu signieren: Ein Beobachter kann bestätigen, dass die Signatur gültig ist, da sie einer Gruppe möglicher Zeichner zugeordnet werden kann, aber es ist nicht möglich, den Sender der Transaktion konkret zu bestimmen. Damit bricht Monero die Kette von Transaktionen.

Kürzlich hat ein Entwickler die von Metropolis ermöglichten kryptographischen Operationen genutzt, um innerhalb eines Contracts Funktionen mit Ring-Signaturen zu signieren. Der im dem Ropsten-Testnet veröffentlichte Contract ist eine Art Mixer. Es lässt sich zwar sagen, dass der Contract eine gültige Transaktion nach außen sendet, doch es bleibt verborgen, welcher Teilnehmer des Contracts dies getan hat. Dies ist sowohl mit Ether als auch mit ERC20-Token möglich.

Es ist möglich, dass es die Ring-Signaturen in naher Zukunft auch in einen Contract auf der Live-Chain von Ethereum schaffen. Eventuell als Teil eines komplexeren, dezentralen Mixers für Ethereum. Ring-Signaturen sind allerdings nicht so effektiv wie zkSNARKs, um die Kette der Transaktionen zu brechen, da es einige mögliche Angriffe auf die Privacy von Ring-Signaturen gibt. Dafür allerdings sind die Kosten für die Ausführung des Contracts deutlich geringer als bei den Zero-Knowledge Proofs.

About Christoph Bergmann (1148 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. Wir akzeptiere mit dieser Adresse sowohl Bitcoin als auch Bitcoin Cash. 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

14 Comments on Erfreuliche Entwicklungen für die Privacy bei Bitcoin und Ethereum

  1. Mal wieder ein sehr interessanter Artikel, danke dafür.

  2. Der Artikel ist ja echt krass geschrieben. Hammer, echt super. Woher nimmst du das Wissen derart tolle Artikel schreiben zu können? Auf jedenfalls echt beeindruckend, wie sehr du in die Tiefe gehst und die technischen Details beschreibst.

  3. Super

  4. Das Privatsphährenproblem hab ich nicht ganz verstanden. Klar ist Bitcoin und co vollkommem transparent. Nutze ich aber für jede Transakion eine neue Adresse kann doch niemand darauf zurückschließen, welche Transaktion tatsächlich von mir stammt oder zu mir geschickt wird?!

    Danke schon mal für die Klarstellung

    • Wenn man mit einer Bitcoin-Transaktion Geld empfängt, bekommt man einen Input in der Wallet. Sagen wir, 0,01 BTC. Nun machen wir das dreimal und haben in der Wallt 0,03 BTC auf drei Adressen.

      Dann versenden wir 0,03 BTC. Was macht die Wallet? Sie nimmt input1, inpu2 und inpu3 und bildet daraus eine Transaktion: (input1, input2, inpu3) –> output1. In der Blockchain kann nun jeder nachlesen, dass die inputs 1-3 denselben Besitzer hatten.

  5. Wenn es Angriffe gegen Ringsignaturen gibt und Monero auf denen basiert, dann bedeutet das, daß es Angriffe gegen Monero gibt. Wie sieht so ein Angriff aus?
    乱馬

    • http://hackingdistributed.com/2017/04/19/monero-linkability/

      Kurz: Es gibt Heuristiken, um Transaktionen trotz Ring-Signaturen zu verketten. Da Monero aber seit einiger Zeit neben Ring-Signaturen auch Confidential Transactions verwendet, funktioniert das nicht mehr. Der Preis dafür sind riesige Transaktionen und eine sehr eingeschränkte Skalierbarkeit.

    • Die Beträge werden nicht verschleiert, sondern nur die Sender durch die Ringsignaturen und bei Monero noch die Empfänger durch onetime payment addresses.
      Wenn du also nun eine Transaktion siehst, die zwei Inputs zu je 5 Monero hat und 2 Outputs einer mit 7 und einer mit 3 Monero, dann kannst du schlussfolgern, dass die 7 Monero der echte Output sind und die 3 das Rückgeld. Denn wenn die 3 der echte Output gewesen wäre, so hätte bereits ein einzelner Inputs von 5 Monero gereicht. Aber es waren zwei Inputs zu je fünf Folglich kann die 3 nicht der echte Output gewesen sein und muss deswegen das Wechselgeld sein.

      • Du solltest mal dein Wissen auffrischen, seit Ring CT gibt es keine “Amounts” mehr … es ist also unmöglich in der Blockchain zu sehen das es 2 Inputs je 5 Monero gibt oder den Output. Dieses Ring CT ist übrigens ein Ergebnis dieser Confidential Transactions im Bitcoin von dem dieser Artikel redet, nur eben gepaart mit RingSignaturen.

  6. Noch eine kleine Klarstellung bezüglich der Confidential Transactions. Die eigentlihc Magie besteht nicht in den Commitments, die garantieren, dass die Summen der Inputs einer Transaktion der Summe der Outputs entsprechen und somit kein neues Geld erzeugt wird, sondern in den nötigen Range-proofs. Die Range-proofs sind zusätzliche Beweise für jeden Output, dass dieser einen Positiven (und nicht negativen) Betrag enthält. Wenn diese Beweise in der Transaktion fehlen würde könnte man wieder Geld aus dem Nichts erschaffen. Erwartungsgemäß sind diese Beweise groß und zahlreich. Bulletproof ist nun eine clevere Idee, wie man diese Beweise aggregieren kann, sodass sie kleiner sind.

  7. Name required // 22. November 2017 at 16:08 // Reply

    Interessantes Thema.
    Was mich allerdings wundert ist, dass Stratis diesbezüglich nicht erwähnt wurde.
    Die Entwickler arbeiten an “TumbleBit”, einem auf Masternodes aufgebauten Mixer-System- welches auch Bitcoin, Ether und jeden anderen Coin mixen kann, damit Privatsphäre erzeugt, und das Ganze ohne das im Artikel anfangs erwähnte Problem, dass der Betreiber des Mixers Kenntnis erlangt und/oder die Coins stehlen kann.

    Hier ein interessanter Artikel dazu: https://themerkle.com/tumblebit-from-stratis-a-trustless-decentralized-privacy-solution-for-sending-or-receiving-bitcoin/

  8. @chief, es kann zwar herraus gefunden werden, wie viele bitcoin auf einer wallet sind, wenn du aber von Anfang an aufpasst, eine neue E-Mailadresse benutzt (ohne deinen Namen), dazu noch VPN und dir dann eine wallet erstellst, dann weiß jedoch niemand wem diese wallet gehört.

    • Hi Krypto,
      Denke es geht bei der Sache weniger darum, dass man weis wer hinter einer Wallet steckt als vielmehr darum, dass verschiedene Sender und Empfängeradressen einer Wallet zugewiesen werden können. Wem genau diese Wallet gehört ist erstrangig egal.

      Frage an alle: Wie schwierig ist es herauszufinden wer hinter einer Wallet steckt?!

      • Die türkische Polizei (siehe zwei Artikel vorher) scheint sich damit kein bißchen schwergetan zu haben.
        乱馬

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