Im Rahmen dieses Artikels haben wir versucht, die Frage zu beantworten, was Vertraulichkeit ist und wie sie in Bitcoin und anderen digitalen Währungen erreicht werden kann. Darüber hinaus erfahren Sie hier mehr über spezifische Mechanismen zur Erreichung der Vertraulichkeit sowie deren praktische Anwendung. Das Thema wird für diejenigen interessant sein, die direkt mit Kryptowährungen arbeiten, sowie für Protokollliebhaber, die die Privatsphäre der Benutzer erhöhen.
Definieren wir die Begriffe
Das Thema Vertraulichkeit (Datenschutz) und wie es sichergestellt werden kann, ist ziemlich umfangreich. Es ist am besten, mit dem Verständnis der grundlegenden Definitionen zu beginnen.
Das Konzept der Privatsphäre umfasst zwei Hauptkomponenten: Unauffindbarkeit und Anonymität. Untraceability oder Untraceability impliziert die Unfähigkeit, einem Benutzer im Netzwerk eine Gruppe von Aktivitäten zuzuweisen. Anonymität oder Anonymität ist mit der Unfähigkeit verbunden, die Identität eines Benutzers in diesem Netzwerk zuverlässig festzustellen.
Bitcoin Standard Datenschutz
Bitcoin hat die Anonymitätseigenschaft, ist aber in der Praxis sehr leicht zu verlieren. Die Nichtrückverfolgbarkeitseigenschaft wird nicht vollständig erreicht. Wir können das Transaktionsdiagramm analysieren und daraus schließen, dass es sich um bestimmte anonyme Geldbörsen handelt. Wenn mindestens eine Adresse im Rahmen der Anonymität kompromittiert wurde, kann eine Beteiligung an bestimmten Personen festgestellt werden. Die einfachste Implementierung einer Bitcoin-Geldbörse bietet nur ein Mindestmaß an Datenschutz.
Beispielsweise erstellt der Benutzer für jede eingehende Zahlung oder Änderung eine neue Adresse. Der Prüfer, der in diesem Fall das Diagramm der Transaktionen analysiert, kann bestimmte Fakten, die sich auf Benutzeraktionen und die Verteilung der Währung zwischen ihnen beziehen, nicht mehr zuverlässig in Beziehung setzen. Aber selbst in dieser Situation ist die Privatsphäre nicht so zuverlässig, wie es scheint.
Normalerweise hängt Ihre Privatsphäre im Bitcoin-Netzwerk von den Gegenagenten ab. Derjenige, der die Zahlung akzeptiert, kennt die Herkunftsgeschichte der Münzen, und derjenige, der die Münzen sendet, weiß, wohin er sie sendet. Darüber hinaus gibt es eine Reihe von Metadaten, die Außenstehenden zur Verfügung stehen können: die Art der Transaktion, Daten über die Brieftasche, Daten über den Standort des Benutzers usw.
Welche Art von Transaktionsdaten sollten zuerst ausgeblendet werden, um ein Höchstmaß an Vertraulichkeit zu gewährleisten? Dies schließt Daten zur Herkunft von Münzen ein, die sich auf die Austauschbarkeitseigenschaft oder die Fungibilität beziehen. Es ist sehr wichtig für Geld und Wertsachen. Auf der Ebene des Bitcoin-Protokolls wird diese Eigenschaft bereitgestellt (alle Münzen sind gleich und die Regeln für ihre Verarbeitung sind allen gemeinsam), aber in der Praxis ist die Fungibilität leicht zu brechen. Beispielsweise können einige Händler die Herkunftsgeschichte der akzeptierten Münzen analysieren und Zahlungen ablehnen, wenn sie Zweifel haben.
Das nächste, was sinnvoll ist, um es zu verbergen, ist die Summe der Übertragungen, der Absender- und Empfängeradressen im Hauptteil der Transaktion. Es ist auch wichtig, die Netzwerkadressen der Benutzer zu verbergen, was normalerweise mit Darknet erreicht wird, wenn Protokolle wie Freenet, TOR und I2P verwendet werden. Wie verstecke ich die Beträge, den Verlauf und die Adressen?
Coinjoin
Die einfachste Methode zum Verschleiern eines Transaktionsdiagramms heißt CoinJoin. Wir fangen mit ihm an. Das Wesentliche ist die Schaffung einer gemeinsamen Transaktion, wodurch die Herkunft der gesendeten Münzen nicht mehr eindeutig ist. Eine Gruppe besteht aus Benutzern, die eine gemeinsame Transaktion erstellen, in der mehrere Zahlungen gleichzeitig erfolgen. Das heißt, Benutzer müssen keine separaten Transaktionen erstellen.
Gregory Maxwell schlug diese Idee erstmals 2013 im beliebten BitcoinTalk-Forum vor. Seitdem wurden viele Modifikationen dieser Methode vorgeschlagen und entwickelt. Jeder von ihnen verbesserte bestimmte Eigenschaften von Zahlungen. Lassen Sie uns darüber sprechen, wie CoinJoin in seiner reinen Form funktioniert, und danach werden wir uns einige seiner interessantesten Modifikationen ansehen.
Wie CoinJoin funktioniert
Stellen Sie sich eine Gruppe von drei Benutzern vor, in der jeder Waren in einem Online-Shop kaufen möchte (gleichzeitig hat jeder seinen eigenen Shop).

Sie erstellen eine Transaktion für drei Eingaben, eine von jedem Benutzer, drei Ausgaben, eine für jeden Online-Shop. Zusätzlich gibt es drei weitere Ausgänge für Änderungen. Ferner werden alle Ausgaben zufällig untereinander gemischt. Jeder Benutzer überprüft die empfangene Transaktion erneut und signiert den entsprechenden Eintrag. Bei Erfolg wird die Transaktion als korrekt angesehen, auf das Netzwerk übertragen und erhält eine Bestätigung.
Unterschiede zwischen CoinJoin und regulärer Transaktion
Das folgende Diagramm zeigt den Unterschied zwischen regulären Transaktionsdiagrammen und CoinJoin-Transaktionen.

Oben ist ein Diagramm dargestellt, in dem jede Transaktion einen oder zwei Exits hat, und unterhalb der Transaktion gibt es bereits drei Exits. Das untere Diagramm ist komplizierter und schwieriger zu analysieren. Wenn CoinJoin in der Bitcoin-Brieftasche in die Praxis umgesetzt wird, wird eine große Gruppe von Benutzern gebildet. Dann können Transaktionen Dutzende von Ein- und Ausgängen haben (manchmal mehr). In einer Ebene dargestellt, ist die grafische Darstellung solcher Transaktionen sehr verwirrend. Eine Münze, die eine Kette solcher Transaktionen durchlaufen hat, hat Tausende von möglichen Ursprüngen. Es ist schwierig, unter allen Optionen die richtige zu finden.
Chaumian CoinJoin
Wir kommen zur CoinJoin-Modifikation namens Chaumian CoinJoin. Und derselbe Gregory Maxwell schlug es vor. Es verwendet einen zentralen Operator und eine blinde Signatur. Der Bediener muss das Mischen von Ein- und Ausgängen durchführen und dann die endgültige Transaktion durchführen. Der Betreiber kann jedoch aufgrund der blinden Unterschrift keine Münzen stehlen oder die Vertraulichkeit des Mischens verletzen.
Der Benutzer macht die Daten vorab blind, bevor er sie an den Bediener überträgt. Wenn der Bediener diese Daten signiert, sieht er den tatsächlichen Inhalt nicht. Die signierten Daten werden an den Benutzer zurückgegeben. Danach entfernt er die Blendung und alles sieht aus wie eine normale elektronische Signatur.
Wie ist die Interaktion zwischen Benutzer und Betreiber bei der Bildung der Gesamttransaktion? Jeder Benutzer bereitet im Voraus einen Eintrag vor, in dem die ihm gehörenden Münzen ausgegeben werden, eine Adresse für den Erhalt des Wechsels sowie eine verblindete Adresse für das Senden einer Zahlung. Anschließend kombiniert er diese Daten in einer Sequenz und überträgt sie an den Betreiber.
Der Bediener überprüft den Eingabe- und Zahlungsbetrag, signiert die Ausgabeadresse und gibt die Signatur an den Benutzer zurück. Der Betreiber sieht jedoch nicht die Adresse, an die der Benutzer die Zahlung senden möchte, da er blind ist. Ferner entfernt der Benutzer die Verblindung von der Ausgabeadresse, stellt anonym eine Verbindung zum Bediener wieder her und sendet ihm eine signierte Ausgabeadresse. Der Bediener überprüft seinerseits, ob er diese Adresse wirklich mit seinem Schlüssel signiert hat und ob er bereits die entsprechende Eingabe hat, kann jedoch nicht wissen, welche Eingabe welcher Ausgabe entspricht. Nachdem alle Benutzer solche Aktionen ausgeführt haben, stellen sie erneut anonym eine Verbindung zum Betreiber her und stellen Signaturen bereit, die den Besitz von Münzen bei der Eingabe der allgemeinen Transaktion bestätigen. Die abgeschlossene Transaktion kann zur Bestätigung an das Netzwerk verteilt werden.
In diesem Fall können weder Benutzer noch Betreiber Münzen an den Ausgabeadressen dekanonymisieren. Und die Abwicklung einer Transaktion unter normalen Bedingungen dauert nicht länger als eine Minute. Die Benutzerinteraktion sollte über anonyme Datennetze erfolgen, die als TOR, I2P oder Bitmessage verwendet werden können.
Unter den Benutzern kann es skrupellose Teilnehmer geben, deren Zweck darin besteht, den Prozess der Erstellung einer gemeinsamen Transaktion auf irgendeine Weise zu unterbrechen. Es gibt eine ganze Liste möglicher Benutzerverhaltensszenarien, einschließlich betrügerischer Szenarien. Es wurde eine Reihe von Schutzmechanismen entwickelt, um nachteiligen Szenarien entgegenzuwirken, die es ehrlichen Benutzern ermöglichen, die Bildung der endgültigen Transaktion zu gewährleisten. Schutzmechanismen verwenden Zeitüberschreitungen, Verfolgung nicht ausgegebener Ausgaben usw. Weitere Informationen zu allen Szenarien und Schutzmechanismen erhalten Sie separat. Betrachten Sie nun die nächste Modifikation von CoinJoin, die CoinShuffle heißt.
Coinshuffle
Eine Änderung von CoinShuffle wurde 2014 vorgeschlagen. Es gibt keinen zentralen Betreiber mehr und dies ist zu einem Vorteil geworden. Benutzer bilden unabhängig voneinander eine gemeinsame Transaktion und kommunizieren miteinander. Sie können jedoch immer noch nicht die Vertraulichkeit des Mischens von Ausgabeadressen verletzen. Ein weiterer Vorteil dieser Technik besteht darin, dass Benutzer keine zusätzlichen Netzwerke verwenden müssen, um den Datenverkehr zu anonymisieren, da alle erforderlichen Eigenschaften mithilfe eines P2P-Interaktionsprotokolls zwischen den Teilnehmern erreicht werden.
Hier wird eine Richtungsverschlüsselung verwendet, bei der ein Schlüsselpaar (öffentlich und privat) verwendet wird. Die Nachricht wird mit dem öffentlichen Schlüssel verschlüsselt, und nur der Eigentümer des privaten Schlüssels kann sie entschlüsseln. Für die Kommunikation zwischen den Teilnehmern wird das DiceMix-Protokoll verwendet, und es wird auch ein Widerspruch gegen Verstöße bereitgestellt.
Einführung in CoinShuffle
Mal sehen, wie CoinShuffle funktioniert.

Stellen Sie sich eine kleine Gruppe von Benutzern vor: die listige Alice, den weisen Bob, den bärtigen Charlie und den orangefarbenen Dave. Jeder von ihnen hat eine nicht ausgegebene Münze in der Bitcoin-Blockchain an den Adressen A, B, C bzw. D. Jeder möchte eine Münze ausgeben und die Entstehungsgeschichte verbergen. Zu diesem Zweck ermittelt jedes Mitglied der Gruppe die Adresse, an die die Münzen A, B, C oder D gesendet werden sollen, gibt diese Adresse jedoch nicht an die anderen Mitglieder weiter.
Ferner erzeugt jeder ein neues Schlüsselpaar für die Richtungsverschlüsselung, wonach die Gruppenmitglieder Schlüssel austauschen, die zur Verschlüsselung geöffnet sind, und der neue öffentliche Schlüssel mit einem privaten Schlüssel signiert ist, der der Adresse mit der nicht ausgegebenen Münze entspricht. Auf die gleiche Weise werden alle Nachrichten der Teilnehmer während der nachfolgenden Interaktion signiert. Dies war die erste Stufe.

Die Teilnehmer mischen und bilden eine Warteschlange. Alice wird die erste sein, weil sie gerissen ist, Bob die zweite, weil er weise ist usw. Jetzt nimmt Alice A 'und verschlüsselt Dave mit Daves öffentlichem Schlüssel. Der resultierende Chiffretext Alice verschlüsselt erneut und zielt auf Charlie. Dieser Chiffretext ist wieder verschlüsselt, aber bereits an Bob gerichtet. Alice gibt das Ergebnis der Verschlüsselung an Bob weiter. Bob entschlüsselt die Nachricht mit seinem privaten Schlüssel. Dann nimmt er B 'und verschlüsselt es an Dave, dann an Charlie und fügt es der Liste hinzu. Er mischt diese Liste nach dem Zufallsprinzip und gibt sie an Charlie weiter. Charlie entschlüsselt seinerseits die Listenelemente mit seinem privaten Schlüssel, fügt C ', verschlüsselt an Dave gerichtet, zur Liste hinzu und mischt alle Listenelemente nach dem Zufallsprinzip. Die Liste wird an Dave übertragen, der sie entschlüsselt, offene Adressdaten zum Senden von Münzen empfängt, die Adresse D 'hinzufügt, sie zufällig mischt und basierend auf diesen Adressen bekannte Transaktionseingaben und -beträge eine allgemeine Transaktion bildet.

Dave verteilt die Transaktion leer an den Rest der Gruppe. Ferner prüft jeder sorgfältig, ob die Ausgabe der Transaktion die Adresse hat, die er benötigt, und ob der Betrag übereinstimmt. Wenn alles in Ordnung ist, unterschreibt der Teilnehmer die Transaktion und bestätigt den Besitz der Münzen seines Eingangs. Die Teilnehmer tauschen Signaturen aus. Wenn die Transaktion alle erforderlichen Signaturen sammelt, kann sie zur Bestätigung an das Netzwerk verteilt werden.
Wenn einer der Teilnehmer anfängt, vom Hauptinteraktionsszenario abzuweichen, kann der Rest gemeinsam den Verlauf der Interaktion analysieren und die Übertreter aus der Gruppe entfernen, um alles ohne sie zu wiederholen. Dies ist ein wichtiges Merkmal.
Beachten Sie, dass bereits vorgefertigte Implementierungen von CoinShuffle vorhanden sind. In der Praxis arbeiten sie sogar bei Gruppen von mehreren Dutzend Benutzern effektiv. Derzeit wird die Integration dieses Protokolls in einige Bitcoin-Geldbörsen erwartet, einschließlich mobiler.
Was sind die Nachteile der CoinJoin-Methode?
Offensichtlich ist die Interaktion außerhalb der Kette für die Bildung einer Transaktion sehr schwierig, dh es ist notwendig, die Bildung von Gruppen und die Interaktion der Teilnehmer untereinander zu organisieren. Ein größerer Nachteil ist jedoch, dass CoinJoin in seiner reinen Form die Anzahl der Überweisungen nicht verbirgt. Infolgedessen ist es anfällig für die CoinJoin Sudoku-Analyse, die auf einem Vergleich der Summen der Transaktionsausgaben basiert und es Ihnen ermöglicht, den Verlauf der Herkunft der Münzen nach ihrer wiederholten Verwirrung zu enträtseln. Ja, dieses Problem kann bekämpft werden, indem beispielsweise nur bestimmte Beträge für Transaktionsausgabewerte (0,1 VTS, 1 VTS, 10 VTS usw.) verwendet werden. Dies führt jedoch zu zusätzlichen Schwierigkeiten und Einschränkungen. Betrachten Sie daher eine völlig andere Methode, die das Problem der offenen Überweisungsbeträge löst - vertrauliche Transaktionen.
Vertrauliche Transaktionen
Ein Merkmal der CT-Methode (Confidential Transactions) besteht darin, dass die tatsächlichen Beträge an den Ein- und Ausgängen der Transaktion vollständig vor Dritten verborgen werden. Jeder kann überprüfen, ob die Summe aller Ausgaben die Summe aller Eingaben nicht überschreitet, was bereits ausreicht, um diese Transaktion zu validieren.
Dies wurde durch die Verwendung eines wissensfreien Beweises ermöglicht - dies ist ein kryptografischer Beweis für die Kenntnis eines Geheimnisses, ohne jedoch letzteres preiszugeben. Um zu beweisen, dass die Summe der Ausgaben die Summe der Eingaben nicht überschreitet, wird das Petersen-Commitment verwendet, das auf Transformationen in einer Gruppe von Punkten auf einer elliptischen Kurve basiert. Um der unkontrollierten Ausgabe von Münzen in diesem System entgegenzuwirken, muss unbedingt der Nachweis über die Verwendung zulässiger Beträge beim Abschluss der Transaktion erbracht werden. Um zu überprüfen, ob nicht negative Beträge verwendet wurden, die die Basispunktreihenfolge nicht überschreiten, werden die sogenannten Range Proofs verwendet.
Und alles wäre in Ordnung, aber die Erstellung derselben Range Proofs ist in Bezug auf die Rechenressourcen sehr teuer. Darüber hinaus haben sie ein sehr großes Volumen. Theoretisch ist es möglich, vertrauliche Transaktionen in das Bitcoin-Protokoll zu integrieren, aber niemand hat es aufgrund seines großen Volumens eilig, dies zu tun. Dennoch gibt es bereits funktionierende Buchhaltungssysteme, in denen vertrauliche Transaktionen erfolgreich angewendet werden.
Vertrauliche Transaktionen anrufen
Die folgende Methode wird als vertrauliche Ringtransaktionen bezeichnet. Um die Entstehungsgeschichte von Münzen zu verwirren, werden hier Ringsignaturen verwendet. Der Absender in der Eingabe seiner Transaktion bezieht sich nicht auf eine bestimmte Ausgabe (UTXO), sondern auf mehrere gleichzeitig. Ferner beweist er mit Hilfe einer Ringsignatur, dass er die Münzen eines von mehreren Ausgängen besitzt, wurde jedoch nicht bekannt gegeben, welcher. Daraus folgt, dass es unmöglich ist, die Entstehungsgeschichte von Münzen eindeutig zu verfolgen.
Die Verwendung von Ringsignaturen auf diese Weise wurde erstmals im CryptoNote-Protokoll vorgeschlagen, auf dessen Grundlage mehrere Kryptowährungen funktionieren. Vertrauliche Ringtransaktionen verwenden CT. Mit ihnen können Sie Transaktionen mit vielen Ein- und Ausgängen erstellen, bei denen es unmöglich ist, den Ursprung jeder Eingabe eindeutig zu verfolgen, die Anzahl der Übertragungen ausgeblendet ist und keine Interaktion mit anderen Benutzern zum Erstellen einer Transaktion erforderlich ist.
Stealth-Adressen
Dieser Ansatz ist eine Technik zur verdeckten Berechnung von Adressen, an die Münzen gesendet werden. Diese Idee wurde zuerst von Peter Todd beschrieben. Öffentliche Schlüssel werden als Benutzerkennungen verwendet: Wenn Sie Zahlungen akzeptieren möchten, müssen Sie Ihren öffentlichen Schlüssel bekannt geben.
Der Absender berechnet aus seinem Schlüsselpaar und Ihrem öffentlichen Schlüssel einen neuen einmaligen öffentlichen Schlüssel, der bereits in der Transaktion als Adresse angegeben wird. Es stellt sich heraus, dass nur der Absender und der Empfänger die Adresse kennen können, an die die Münzen gesendet werden. Für einen Beobachter eines Drittanbieters kann die Verbindung zwischen der Benutzer-ID und der Adresse am Transaktionsausgang nicht hergestellt werden.
Praktische Anwendung
Wo werden diese Methoden in der Praxis angewendet?

Das Bitshares-Team war eines der ersten, das CT in Verbindung mit Stealth-Adressen implementiert hat, nicht nur für die Basiswährung, sondern auch für Token, die auf der Plattform ausgegeben werden können. Die Monero-Kryptowährung unterstützt Ringsignaturen und Stealth-Adressen, um ein hohes Maß an Datenschutz zu gewährleisten. Im Januar 2017 implementierte das Team RingCT und mit dem Update im September 2017 wurde die Verwendung von RingCT streng obligatorisch. Es sollte das Mimblewimble-Protokoll beachtet werden, das eine modifizierte Version von CT verwendet, die derzeit aktiv entwickelt wird, aber wir werden später darüber sprechen.
Es gibt ein solches ZeroLink-Projekt, bei dem es sich um ein Framework zum Erstellen vertraulicher Brieftaschen handelt, die auf der Chaumian CoinJoin-Technik basieren. Es ist bemerkenswert, dass es in Bitcoin funktionieren kann, ohne dass Änderungen am Protokoll selbst erforderlich sind.
Kommen wir zu den häufig gestellten Fragen.
- Ist es möglich, Stealth-Adressen in Bitcoin zu verwenden?Ja, Sie können sie jetzt verwenden, Protokollaktualisierungen sind hierfür nicht erforderlich. Für eine umfassendere Anpassung dieser Funktionalität ist es jedoch erforderlich, die Berechnungsreihenfolge und die Datenformate genau anzugeben, damit alle Brieftaschen miteinander arbeiten können, und diese Funktion dementsprechend den Brieftaschen selbst hinzuzufügen. Peter Todd hat bereits ein separates BIP erstellt, um diese Spezifikation einzuführen, das jedoch noch geprüft wird.- Ist es effektiv, CoinJoin in seiner reinsten Form für Bitcoins zu verwenden?Nein, in seiner reinen Form ist es unwirksam, weil sich solche Transaktionen für eine einfache Analyse nach der Höhe der Überweisungen eignen. Alternativ können Sie für alle Teilnehmer die gleichen Beträge verwenden und dabei vertrauenswürdige Mixer vermeiden, die entweder Münzen stehlen oder die Vertraulichkeit verletzen können.- Können die oben beschriebenen Methoden angewendet werden, um die Vertraulichkeit in digitalen Währungen wie Ethereum, Ripple und Stellar zu gewährleisten?Nein das ist nicht so. Ethereum, Ripple und Stellar verwenden ein völlig anderes Transaktionsmodell und eine andere Art der Bilanzierung von Münzen, die mit solchen Methoden zur Erreichung der Vertraulichkeit nicht angewendet werden können. Natürlich können Sie versuchen, Stealth-Adressen oder vertrauliche Transaktionen künstlich zu integrieren, dies ist jedoch hinsichtlich der Währungsperformance äußerst ineffektiv. Der Grund dafür ist, dass in Bitcoin die Buchhaltung auf nicht ausgegebenen Ausgaben (d. H. UTXO) basiert und diese Währungen Salden und Konten verwenden.Dieses Thema wird in einer der Vorlesungen des Blockchain-Online- Datenschutzkurses für Kryptowährungen behandelt .