Veröffentlicht auf A Byte's Journey am 10.05.2021
Originalautor: Tony
Übersetzt von: Sinautoshi am 29.12.2022 - 769456
Dieser Artikel wird auf der Website von European Bitcoiners nur zu Bildungs-, Informations- und Übersetzungszwecken zur Verfügung gestellt und stellt weder eine finanzielle Beratung noch einen Anspruch auf die im Bericht erwähnten Details dar.
Alle Rechte liegen bei dem Autor des Originals.
Das Lightning Network ist in letzter Zeit gewachsen und hat etwa 11.000 aktive öffentliche Knotenpunkte von insgesamt 20.000. Neben dem Vorteil der nahezu sofortigen Zahlungen kann Lightning auch den Datenschutz verbessern. Leider gibt es Szenarien, in denen Lightning nicht gut für die Privatsphäre ist.
Ich möchte einige davon aufdecken. Nicht als FUD über das Netzwerk, sondern um die Leute so gut wie möglich zu informieren, damit sie Lightning auch privat nutzen können. Alles, was in diesem Artikel steht, ist öffentlich bekannt und in der Branche bis zu einem gewissen Grad bekannt. Dies ist mein Versuch, das Thema Lightning-Datenschutz auf einer höheren Ebene zusammenzufassen.
Jeder hat ein Recht auf finanzielle Privatsphäre und verdient es, über diese Dinge informiert zu sein.
Überblick über Lightning
Ein kurzer Überblick: Ein Lightning-Knoten schließt einen Bitcoin Unspent Transaction Output (UTXO) in einen Kanal mit einem anderen Knoten ein. Die beiden Nodes können sofort miteinander Transaktionen durchführen, ohne diese auf die Blockchain zu übertragen. Dies wird oft so erweitert, dass du auf die gleiche Weise mit Knoten, mit denen dein Peer verbunden ist, Transaktionen durchführen kannst, und so weiter.
In einem Multi-Hop-Szenario empfängt das endgültige Ziel einen Teil einer anderen UTXO. Das ist so, als würde ich dir einen 10-Dollar-Schein geben, den du deinem Freund geben sollst, und du gibst deinem Freund statt des 10-Dollar-Scheins zwei 5-Dollar-Scheine. In Lightning geschieht dies jedoch kryptografisch, ohne dass du deinem Freund vertrauen musst.
Verbesserungen der Privatsphäre in Lightning
Jeder Peer in einer Multi-Hop-Transaktion bittet darum, den nächsten Peer im Hop zu bezahlen. Er weiß nur, wer ihn gebeten hat, eine Zahlung weiterzuleiten, und wer der nächste Peer ist, dem er das Geld übergibt. Aufgrund der Onion-Routing-Eigenschaften von Zahlungen weiß der Router nicht, wer die anderen Peers auf dem Weg sind oder wer vor ihm kam. Das gilt auch für den ursprünglichen Absender oder das endgültige Ziel.
Die Absender im Lightning Network haben dadurch einen hohen Grad an Privatsphäre. Der Absender weiß, wer der Zielknoten ist, bastelt die Zwiebelroute für die Zahlung und schickt sie ab. Selbst der erste Peer kann nicht mit Sicherheit wissen, ob es sich um den ursprünglichen Absender handelt (einige Vorbehalte im Abschnitt über den Absender).
Die Empfänger haben nicht die gleiche Privatsphäre. Sie müssen dem Absender bestimmte Informationen geben, damit er die Zahlung senden kann. Die Informationen, die sie herausgeben, können ziemlich aufschlussreich sein.
Überblick
Ich beginne mit einigen Grundlagen zum Datenschutz bei Lightning Node, angefangen bei der Ersteinrichtung. Dann die On-Chain-Eigenschaften, die in Lightning-Kanälen offengelegt werden. Danach gehe ich auf die Privatsphäre von Sendern und Empfängern und die Informationen ein, die beim Geldfluss durch das Netzwerk offengelegt werden.
Schließlich gehe ich auf einige zukünftige Lightning-Funktionen und -Eigenschaften ein, die sowohl kürzlich entwickelt wurden als auch in Kürze veröffentlicht werden sollen.
Im Laufe des Artikels werde ich Lösungen empfehlen, die du nutzen kannst. Zum Schluss schlage ich dir eine ideale und realistische Lösung vor, die du schon heute umsetzen kannst.
Knotenpunkt-Einrichtung
Clearnet mit IP vs. Tor
Eines der wichtigsten Dinge, die du als erstes tun kannst, ist, deinen Knotenpunkt so einzurichten, dass er nur mit Tor arbeitet.
Die meisten, wenn nicht sogar alle Home-Node-Implementierungen wie Raspiblitz oder Umbrel richten deinen Knoten auf diese Weise ein. Das ist zum einen einfacher in der Einrichtung und zum anderen ist keine Portweiterleitung erforderlich, die für die meisten Nutzern lästig wäre.
Es ist zwar möglich, dein Netzwerk zu ändern, aber diese Informationen könnten von anderen archiviert werden. Du kannst bei 1ml nachsehen, welche Netzwerkänderungen dort festgehalten werden.
Wenn ich diese Informationen in eine IP-Lookup-Seite eintrage, sehe ich, dass dieser Knoten einen irischen AWS-Server für seinen Knoten verwendet.
Wenn du deine IP-Adresse in einen Suchdienst eingibst, werden dein Internetanbieter und dein ungefährer Standort in ungefährer Nähe angezeigt.
Unabhängig davon, ob du auf einem AWS-Server oder einem Heimserver hostest, können private Informationen über dich per Gerichtsbeschluss oder von Insidern preisgegeben werden. Wenn du auf einen Clearnet IP-Knoten bestehst, solltest du ein anonymes, statisches VPN in Betracht ziehen, das immer online ist, um deine Heim-/Server-IP zu schützen.
Ein Nachteil bei der ausschließlichen Nutzung von Tor ist, dass IP-basierte Knoten keine Verbindung zu dir aufbauen können. Du kannst aber stattdessen eine Verbindung mit ihnen aufbauen. Laut 1ml gibt es derzeit etwa 5239 Tor-Knotenpunkte.
Identität des Knotens
Alias
Auf deinem Knotenpunkt kannst du einen Alias festlegen, mit dem wir die Namen dieser Knotenpunkte in einer Peer-to-Peer-Umgebung sehen können. Wenn du einen Dienst oder ein Geschäft auf deinem Knotenpunkt betreibst, solltest du deinen Alias so aussagekräftig wählen, dass andere die Zuordnung vornehmen können.
Wenn das nicht der Fall ist, empfehle ich dir, keinen Namen zu wählen, der mit deinem echten Namen verbunden ist. Wenn du ohnehin ein Pseudonym hast, kannst du es in Betracht ziehen. Die Warnung, die ich ausspreche, ist, dass es so ist, als würde man seine Bitcoin-Adressen mit einem Namen versehen und das willst du in den meisten Fällen nicht tun. Es macht dich zu einer Zielscheibe, da die öffentliche Kapazität des Knotens, UTXO-Informationen usw. für den Rest des Netzwerks sichtbar sind.
Apps
Der Node-Alias wird bekannt gegeben, wenn du einen öffentlichen Channel öffnest, aber es gibt auch andere Möglichkeiten, deinen Node mit deiner Identität zu verbinden.
Chat-basierte Apps wie Sphinx Chat funktionieren, indem sie von deinem Node aus über das Lightning Network mit anderen Nodes kommunizieren. Das ist eine sehr coole Technologie, die ich liebe und nutze. Allerdings muss ein Node mit Sphinx verknüpft werden, und wenn Leute mit dir chatten, senden sie Zahlungen an deinen Node. Von dort aus können sie alle öffentlichen Informationen über deinen verlinkten Node sehen. Raspiblitz hat eine Funktion in Arbeit, mit der du einen zweiten Node auf deinem Gerät einrichten kannst, der mit Sphinx verwendet werden kann. Ich würde dir empfehlen, diese Funktion zu nutzen oder einen zweiten Node zu erstellen, den du für coole Anwendungsfälle im Netzwerk behältst. Sphinx erlaubt dir derzeit, stattdessen einen ihrer gehosteten Nodes zu verwenden, aber bedenke, dass sie jede Nachricht verfolgen und lesen können.
Abgesehen von Apps wie Sphinx solltest du bei allen Diensten, die dir Geld schicken und deine Identität kennen, Vorsicht walten lassen. Du würdest deine XPUB nicht an einen Dienst weitergeben, also gib auch deine Node-Identität nicht weiter. Mehr darüber, warum nicht, findest du im Abschnitt "Empfängerdatenschutz".
Eine bemerkenswerte Ausnahme ist die LNURL Auth. Obwohl sie auf Lightning basiert, ist sie nicht mit deinem Lightning-Knoten verknüpft. Jede Website erhält eine andere LNURL-Kennung, damit sie nicht mit einer anderen korreliert. Das ist ein viel besserer und privaterer Weg, um sich bei einem Dienst anzumelden, als eine E-Mail oder eine Telefonnummer zu verwenden. Ein LNURL-Dienst kann zwar immer noch Geld an deinen Knotenpunkt senden, aber er selbst ist privat und nicht korrelierbar.
UTXOs und ihre Verwendung in Lightning
Wie bereits erwähnt, muss man eine UTXO mit einem anderen Node in einem Zahlungskanal abschließen. Transaktionen über einen offenen Kanal sehen genauso aus wie die Überweisung von Geldern an eine Multisig-Adresse. Die Transaktion oder die Adresse verrät nichts Genaues. Allerdings werden die Informationen über den Kanal (falls sie öffentlich sind) im Lightning-Netzwerk verbreitet. Die Kanalinformationen umfassen den Transaktions- und Ausgangsindex (Kanalpunkt/Channelpoint).
Private Kanäle werden nicht im Netzwerk veröffentlicht. Wenn ein Peer versuchen würde, ihn im Netzwerk zu veröffentlichen, würde er gemäß den Anforderungen des Protokolls abgewiesen werden.
Sehen wir uns also die Verwendung von UTXOs im Lightning Network an.
UTXOs zur Verwendung für öffentliche Kanäle
Viele datenschutzbewusste Bitcoin-Nutzer wissen, dass es eine gute Praxis ist, für jede Nutzung eine neue Bitcoin-Adresse zu generieren. Lightning-Knoten verwenden die gleiche Praxis, wenn sie eine neue Adresse für normale Transaktionen und neue Kanäle erstellen. Da man nicht erkennen kann, was eine Open-Channel-Transaktion ist, kann man sie normalerweise nicht mit anderen verknüpfen. Die Verbindung besteht jedoch in den Informationen, die über das Lightning Network weitergegeben werden.
Wenn du einen Kanal öffnest, werden die Transaktionsausgaben als Eingaben ausgegeben und du bekommst einen neuen UTXO gesperrt. Anhand der Kettenanalyse kann man feststellen, woher die Mittel stammen, die zur Erstellung des Kanals verwendet wurden. Wenn man sich nur die Kanalinformationen ansieht, kann man nicht erkennen, welcher Knotenpunkt die Mittel gesperrt hat. Wir wissen nur, dass es einer der beiden war (auch wenn dein Partner weiß, dass er es nicht war und diese Information weitergeben könnte). Dennoch ist es möglich, herauszufinden, welcher Knotenpunkt den UTXO gesperrt hat.
Hinweis: Bei geteilt finanzierten Kanälen könnten es beide gewesen sein. Es ist jedoch möglich, einen Knoten zu ködern, damit er seine UTXOs preisgibt, indem er eine Anfrage für einen Dual-Funded Channel startet und auf halbem Weg abbricht. Wenn diese UTXO später in einem doppelt finanzierten Kanal verwendet wird, wissen wir jetzt, zu welchem Knoten sie gehört.
Wir haben also herausgefunden, dass entweder der eine oder der andere Knoten in einem Kanal die verwendeten UTXOs besitzt. Eine 50/50 Chance. Aber stell dir vor, Alice hat einen UTXO von Coinbase erhalten und benutzt ihn, um einen Channel zu öffnen. Coinbase würde wissen, dass Alice die Initiatorin war, da sie verfolgen, was ihre Nutzer nach dem Verlassen des Channels tun. Es wäre entweder Alice oder eine Person, die Coinbase im Namen von Alice bezahlt. Wenn Coinbase besorgt wäre, könnten sie Alice fragen und sie aus ihrem Konto sperren, wenn sie misstrauisch genug wären.
In einem anderen Fall, wenn Alice 1 UTXO hatte und sie einen Kanal für einen Teilbetrag eröffnete und das Wechselgeld für einen weiteren Kanal verwendete, könnte man annehmen, dass beide von Alice initiiert wurden. Alice hat das Wechselgeld von einem Kanal verwendet, um einen anderen zu öffnen, also wissen wir, dass diese UTXOs ihr gehörten. Ein Knoten, der einen Kanal für einen Teilbetrag öffnet, setzt die Änderungsadresse auf sich selbst zurück.
Bei öffentlichen Kanälen hast du im besten Fall eine 50%ige Chance, dass eine UTXO zu deinem Knoten gehört. Im schlimmsten Fall besteht eine 100%ige Chance, dass einige oder alle UTXOs deines Channels dir gehören.
Da das gesamte Lightning Network dies sehen kann, solltest du es als öffentliche Information betrachten. Es besteht die Möglichkeit, dass Chain-Analytics-Firmen und regulierte Unternehmen dies ausnutzen.
Lösung: Wenn du öffentliche Kanäle öffnest, verwende den vollen Betrag eines einzelnen UTXOs, der nicht mit deiner Identität verbunden ist.
Private Kanäle sind nicht privat
Es hat Spaß gemacht, sich in dieses Thema zu vertiefen. Private Kanäle sind ein Begriff, der verwendet wird, um einen Kanal zu beschreiben, der nicht im Lightning Network angekündigt wird. Die Öffentlichkeit kann weder passiv erfahren, dass ein Channel zwischen zwei Nodes existiert, noch die UTXOs dahinter. Nur dein Channel-Partner kennt diese Informationen von Haus aus. Wir wollen uns nun ansehen, warum unangekündigte Kanäle nicht wirklich privat sind.
Zunächst einmal gibt es mehrere Gründe, einen unangekündigten Channel zu öffnen. Du möchtest vielleicht nicht, dass andere Knotenpunkte die Zahlungen über diesen Kanal leiten, weil du ein mobiler Knotenpunkt bist und nicht immer online bist. Vielleicht möchtest du auch den wahren Betrag, der in den Kanälen zwischen deinem Knotenpunkt und einem anderen Knotenpunkt steckt, verbergen. Das kannst du erreichen, indem du einen öffentlichen Channel mit einem Peer hast, aber viel größere private Channels mit demselben Peer hast. Du kannst selbst durch private Kanäle routen, ohne dass die Öffentlichkeit davon erfährt. Es ist möglich, dieses Shadow Routing mit Hilfe von Balance Sondierungstechniken zu entdecken, auch wenn die Kanalinformationen verborgen sind.
Ein weiterer Grund, warum die Leute annehmen, dass sie unangekündigte Kanäle wollen, ist die Verschleierung des UTXO. Schließlich gehört es zur Standard-Datenschutzhygiene, die UTXOs nicht miteinander zu verbinden. Diese Annahme scheitert aus mehreren Gründen.
Um Gelder über private Kanäle zu erhalten, musst du die Informationen über den privaten Kanal in der Rechnung verschlüsseln, die du dem Absender gibst. Leider werden die Kanal-IDs durch die UTXO-Informationen bestimmt. Die Absender können erkennen, welche UTXOs deine privaten Channels ausmachen. Erinnere dich an den oben erwähnten Grundsatz „50% im besten Fall, 100% im schlimmsten Fall", der auch hier gilt. Wenn du die Rechnung nicht über einen sicheren Kommunikationskanal verschickt hast, betrachte sie als öffentliche Information. Bedenke auch, dass der Absender diese Informationen gegen dich verwenden und sie verkaufen oder veröffentlichen könnte.
5.4.2 Private Kanäle - Quelle https://arxiv.org/pdf/2004.00333.pdf
LN-Kanäle müssen nicht angekündigt werden. Vor allem Gelegenheitsnutzer auf mobilen Geräten sollen ihre Kanäle nicht ankündigen. Diese Kanäle werden als privat bezeichnet. Laut einer aktuellen Studie, sind 28% der LN-Kanäle privat. Private Kanäle sind nicht anfällig für unsere Sondierungsmethode.
Es ist möglich, unsere Technik auf private Kanäle zu erweitern, indem wir Heuristiken auf der Kette verwenden, um sie zu finden. Insbesondere hat jeder Kanal eine kurze ID, die sich aus der Nummer des Blocks, der Transaktion und dem UTXO-Index der Finanzierungstransaktion zusammensetzt. Das Scannen der Blockchain nach den Ausgaben des entsprechenden Formulars und vergleicht sie
mit dem LN-Klatsch kann private Kanäle aufzeigen. Dieser Angriff wurde bereits gemeldet und wird derzeit entschärft .
Aber es kommt noch schlimmer. Du gibst diese Informationen nicht nur an jeden Absender weiter, von dem du Geld anforderst, sondern sie könnten auch von einem Angreifer abgefangen werden. Es ist möglich, Zahlungen über einen Knotenpunkt zu spammen und zu versuchen, durch Erraten der UTXO einen tatsächlich privaten Kanal zu treffen. Ein Angreifer beginnt damit, alle Transaktionen im Bitcoin-Netzwerk zu analysieren und eine Reihe von UTXOs zu erstellen, die an eine Adresse gesendet werden, die nach Multi-Sig aussieht. Sobald der Angreifer feststellt, dass eine UTXO im privaten Kanal eines Opfers verwendet wird, kann er versuchen, den anderen Knoten zu erraten. Dazu ersetzt er den Pubkey des Knotens durch einen der 20.000 Knoten, die das Lightning-Netzwerk kennt. Es ist nur dann nicht möglich, den anderen Knoten zu erraten, wenn er nie einen öffentlichen Kanal geöffnet oder einen unangekündigten Kanal offengelegt hat.
Wenn du einen unangekündigten Kanal geöffnet und nie eine Rechnung erstellt hast, ist es trotzdem möglich, dass dein Kanal-Partner den Kanalund den öffentlichen Schlüssel offengelegt hat. Er könnte sie in eine seiner Rechnungen aufgenommen haben. Dazu brauchen sie nicht deine Zustimmung.
Selbst wenn du also ein „völlig privater" Knotenpunkt bist, nie einen öffentlichen Kanal geöffnet und nie eine Rechnung mit jemandem geteilt hast, reicht es aus, wenn einer deiner Vertriebspartner deinen privaten Kanal und deinen öffentlichen Schlüssel per Rechnung preisgibt. Ein Angreifer kann dann DEINE privaten Kanäle, UTXOs, Guthaben und sogar Channel-Partner ausspähen. Gehe also davon aus, dass alle deine unangekündigten Channels und die UTXOs, die sie unterstützen, öffentlich sind. Weitere Untersuchungen sind erforderlich, um die Kosten und den Zeitaufwand für die Durchführung dieses Angriffs auf private Kanäle zu ermitteln.
Lösung: Um einen deiner UTXOs zu verbergen, öffne einen privaten Channel hinter einem deiner öffentlichen Channels. Eine Alternative ist, dass du einen anderen Knotenpunkt dazu bringst, einen Channel für dich zu öffnen und nur dessen UTXO preiszugeben.
Kanäle schließen
Es ist nicht nur möglich, aktive private Kanäle zu finden, sondern auch die Existenz geschlossener privater Kanäle. Mit Hilfe der Kettenanalyse (Chainanalysis) können die Transaktionen der geschlossenen Kanäle analysiert werden, um die beiden Kanal-Peers zu ermitteln.
Die Änderung eines privaten Kanals könnte in einem neuen öffentlichen Kanal verwendet werden oder in einem privaten Kanal durchsickern. Wenn beide Knoten die Änderung eines privaten Kanals genutzt haben, um einen neuen zu erstellen, besteht wahrscheinlich eine Verbindung zwischen ihnen. Du könntest auf die ursprüngliche Transaktionsausgabe zurückblicken und feststellen, dass diese für einen privaten Kanal zwischen den Knoten verwendet wurde.
Es ist auch möglich zu erkennen, dass eine Transaktionsausgabe Teil eines privaten Channels war, wenn dieser private Channel zwangsweise geschlossen werden musste. Erzwungene geschlossene Kanäle zeigen ungelöste Transaktionsausgaben auf der Kette an, die spezifisch für Lightning sind. Von dort aus kannst du die Änderungsausgaben auf die gleiche Weise analysieren, um Kanal-Peers zu erkennen.
Lösung: Nachdem du einen Channel geschlossen hast, mixe das Wechselgeld.
Gemischte UTXOs
Das Management von gemischten UTXOs ist ein heißes Thema unter den Bitcoinern, die ihre Sats coinjoinen. Wenn es nicht unbedingt notwendig ist, ist es in der Regel keine gute Idee, deine UTXOs zu mischen und sie dann wieder zusammenzufügen. Wenn du mehrere UTXOs aus derselben Quelle hast, sie zu neuen UTXOs vermischst und sie dann an dieselbe Adresse schickst, reduzierst du die Anonymität dieser Coins. Das wird umso schlimmer, je mehr UTXOs du zusammenlegst.
Es gibt eine Menge Feinheiten und Analysen auf Expertenebene, um die Anonymität nach dem Mischen von UTXOs zu de-anonymisieren. Generell würde ich davon abraten, sie wieder zu mischen, aber es gibt viele Variablen, die eine Rolle spielen.
Aus diesem Grund halte ich es auch für keine gute Idee, mehr als eine gemischte UTXO an deinen Lightning-Knoten zu senden. Aus den oben beschriebenen Gründen können alle gemischten UTXOs auf deinem Lightning-Knoten miteinander verbunden werden. Dabei spielt es keine Rolle, ob sie für öffentliche oder private Kanäle bestimmt sind. Wenn du nicht weißt, was du mit deinen gemischten UTXOs machst, würde ich die Konsolidierung auf deinem Node so weit wie möglich vermeiden.
Lösung: Verwende nur 1 gemischten UTXO pro Knotenpunkt.
Privatsphäre des Empfängers
An dieser Stelle habe ich dir einen Überblick über die UTXOs und Kanäle deines Knotens gegeben. Jetzt wollen wir uns ansehen, welche Informationen preisgegeben werden, wenn du Zahlungen erhältst.
Rechnungen
Wenn du eine Zahlung erhalten möchtest, erstellst du in der Regel eine Rechnung und gibst sie dem Absender. Die Rechnung enthält den öffentlichen Schlüssel deines Knotens, den Betrag, die Beschreibung, private Routing-Hinweise und ist mit dem privaten Schlüssel deines Knotens signiert. Mit deinem öffentlichen Schlüssel kann der Absender deinen Node einsehen, um Kanäle, UTXOs, Tor/IP-Adressen und vieles mehr zu erfahren. Die privaten Routing-Hinweise geben auch Auskunft über deine privaten UTXO-Kanäle.
All das in einer kleinen Rechnung. Hier kann man ziemlich unvorsichtig sein. Zum einen solltest du darauf achten, wo du die Rechnung überhaupt weitergibst. Wenn du versuchst, ein privater/anonymer Knotenpunkt zu sein, solltest du Rechnungen nicht in öffentlichen Foren teilen. Auch nicht in unverschlüsselten Nachrichten oder an eine Person, der du deine Node-Informationen nicht anvertraust. Wenn du das tust, musst du damit rechnen, dass die ganze Welt diese Informationen über deinen Node kennt und sie mit dir in Verbindung bringt. Wenn du ein Händler bist, gibt es keine Möglichkeit, dies zu umgehen. Geh davon aus, dass die Öffentlichkeit über deinen Node Rechnungen erstellen kann, wenn sie versucht, in deinem Laden einzukaufen.
Memos können noch mehr Informationen über dich oder die betreffende Transaktion preisgeben. Du würdest in einer Zahlungsbeschreibung bei PayPal nicht schreiben: „Für einen Drogendeal", das Gleiche gilt hier. Jede Rechnung ist signiert, also ist jede Nachricht, die du in die Rechnung schreibst, im Grunde eine signierte Erklärung deines Knotens. Das klassische Beispiel ist Matt Odell, der eine Rechnung erstellt, in der er im Vermerk "Poker" erwähnt. Er gab diese Rechnung seinem Freund, der über eine KYC-Verwahrstelle bezahlte. Dieser Verwahrer weiß nun mehr, als Matt wahrscheinlich gewollt hätte. Das setzt seinen Freund sogar einem Risiko gegenüber dem Verwahrer aus. Wenn die Depotbank es wollte, könnte sie Zahlungen an Matts Knotenpunkt aufgrund von Glücksspielaktivitäten zensieren.
Da jede Rechnung, die du ausstellst, den öffentlichen Schlüssel deines Knotens enthält, sind sie auch korrelierbar. In einer idealen Welt geben Rechnungen, die du ausstellst, keine Informationen über deinen Knotenpunkt preis und sind nicht verknüpfbar. Jede neue Rechnung würde neue Informationen über den öffentlichen Schlüssel enthalten. Das ist heute technisch möglich, und die mobile Geldbörse Muun tut dies sogar!
Muun verwendet gefälschte private Kanäle mit rotierenden Schlüsselpaaren, die mit ihnen verbunden sind. Dadurch werden Rechnungen erstellt, die scheinbar jedes Mal über deinen Knotenpunkt zu einem anderen Ziel geleitet werden, so dass du sie glaubhaft abstreiten kannst. Allerdings ist das nicht perfekt.
Schließlich könnte man annehmen, dass dein Knotenpunkt, der die Zahlungen an diese virtuellen privaten Knotenpunkte weiterleitet, tatsächlich das Endziel ist. Aber diese Annahme wäre nicht immer richtig. Es könnte sich um unabhängige Knoten handeln, die vielleicht nur einen einzigen privaten Kanal zu deinem Knoten haben.
Lösung: Erstelle für jede Rechnung einen neuen öffentlichen Schlüssel für den Knotenpunkt (in Wirklichkeit ist das nur bei Muun einfach, da das die Standardeinstellung ist). Ich habe gehört, dass andere Projekte generell daran arbeiten.
Absenderdatenschutz
Der Datenschutz für Absender ist im Lightning Network in der Regel sehr gut. Die Absender erstellen eine verschlüsselte Zwiebel (Onion), so dass kein Knoten erkennen kann, wer sonst noch in der Route ist, außer dem nächsten Hop. Wenn die Gelder durch das Netzwerk fließen, wird die Zwiebel entschlüsselt, sodass auch die vorherigen Hops unbekannt sind. Nur der direkte vorherige Knotenpunkt ist bekannt, so dass auch der ursprüngliche Absender geschützt ist. In einigen Fällen kann der ursprüngliche Absender jedoch vermutet werden.
Warum ist der Schutz des Absenders überhaupt so wichtig? Wenn Alice etwas von Bob kauft und Bob Alice kennt, warum ist es dann ein Problem, dass Bob weiß, über welchen Knoten Alice das Geld gesendet hat?
Das ist der Grund, warum die Privatsphäre auf der Kette so wichtig ist und warum wir die Bitcoin-Adressen nach jedem Gebrauch rotieren. Bob muss NICHT alle Informationen von einem Node kennen, die ich in diesem Artikel offengelegt habe. Die Heimat-IP-Adresse, die Channels und UTXO-Informationen, die Guthaben und vieles mehr. Alles, was Bob wissen muss, ist die Mindestmenge an Informationen, um die Bestellung von Alice zu erfüllen, und die Tatsache, dass Bob das Geld für diese Bestellung erhalten hat.
Sehen wir uns also einige Fälle an, in denen der Absender verraten werden kann.
1 Hop
Stell dir vor, Alice hat einen Knotenpunkt mit nur einem Kanal zu Bob. Sie schickt eine Zahlung an Bob über ihren direkten Kanal. Bob könnte annehmen, dass der Knoten von Alice der ursprüngliche Absender war. Welcher andere Knotenpunkt könnte diese Gelder über Alice gesendet haben? Alice könnte einen privaten Kanal mit einem anderen Knoten haben, aber wie wir herausgefunden haben, kann die Existenz von privaten Kanälen aufgedeckt werden.
Das Gleiche gilt, wenn Bob feststellt, dass Alice kein Routing-Knoten ist. Einige Knoten können Routing-Anfragen ablehnen. Wenn Bob versucht, eine Zahlung an den Knoten von Alice zu überweisen, und diese aus diesem Grund abgelehnt wird, hat Bob die begründete Vermutung, dass sie nicht routingfähig ist. Es kann keinen anderen Knoten geben, der über Alice zu Bob geroutet hat. Es ist möglich, dass Alice Routing-Anfragen nur in eine Richtung ablehnt, aber das wäre, wenn überhaupt, sehr unüblich.
Lösung: Wenn du nur einen Kanal hast, sende keine Gelder direkt an deinen Kanalpartner als Ziel.
2 Hops
Stell dir ein Szenario vor, in dem Alice mit Bob verbunden ist und Bob mit Carol. Bob weiß, dass Alice mit niemandem sonst verbunden ist, und Bob weiß, dass Carol ebenfalls mit niemandem sonst verbunden ist.
Alice schickt eine Zahlung an Carol, die über Bob läuft. Bob weiß, dass Alice eine Zahlung an Carol geschickt hat und um welchen Betrag es sich handelt.
Dies ist eine übliche Vorgehensweise von Lightning Service Providern (LSP) für mobile Geldbörsen. Es ist nicht üblich, dass mobile Nutzer/innen mit einem anderen Kanal als dem LSP selbst verbunden sind. Wenn ein Handy-Nutzer an einen anderen Handy-Wallet-Nutzer sendet, der denselben LSP nutzt, weiß der LSP, wann seine Nutzer sich gegenseitig bezahlen.
Lösung: Wenn du einen mobilen LSP verwendest, öffne auch andere öffentliche Kanäle oder versuche nicht, andere Nutzer mit demselben LSP zu bezahlen.
Geld über das Netzwerk senden
Ich habe ein 1 & 2-Hops-Szenario dargelegt, bei dem ein Router oder das Ziel den Absender erkennen kann. Es gibt aktivere Wege, um diese Informationen über längere Pfade herauszufinden.
Guthabensondierung (Balance Probing)
Beim Balance Probing versucht ein Angreifer, viele gefälschte Zahlungen durch Knotenpunkte zu leiten, um herauszufinden, wie viel Geld auf beiden Seiten liegt. Im Lightning Network ist dem Netzwerk nur der Gesamtbetrag des öffentlichen Kanals bekannt. In einem 1-Bitcoin-Kanal zwischen Alice und Bob könnte Alice zu einem bestimmten Zeitpunkt 0,7 der Gelder auf ihrer Seite und 0,3 auf seiner Seite haben. Das kann sich ändern, wenn Zahlungen durch ihren Kanal fließen.
Ein Angreifer kann das Guthaben herausfinden, indem er versucht, Zahlungen mit unterschiedlichen Beträgen durch den Kanal zwischen Alice und Bob zu leiten. Wenn eine 1-Bitcoin-Zahlung nicht an Alice weitergeleitet wird, senkt der Angreifer den Betrag so lange, bis sie es tut. Der Angreifer verwendet einen gefälschten Zahlungs-Hash, der nie eintreffen wird. Sobald Alice mit einem Zahlungs-Hash-Fehler antwortet, weiß der Angreifer, dass die Probe erfolgreich war. Der Kontostand auf Bobs Seite des Kanals entspricht in etwa dem Betrag der höchsten erfolgreichen Sondierung.
Wenn sich das Guthaben auf dem Kanal zwischen Alice und Bob auf 0,1 und 0,9 ändert, während sich keines der anderen Guthaben auf Bobs Kanal ändert, wissen wir, dass Alice 0,6 Bitcoin an Bob gezahlt hat. Entweder mit einer Zahlung oder mit mehreren.
Du könntest die Kontostandsabfrage auch auf das gesamte Netzwerk ausweiten. Wenn eine große Zahlung über mehr als 2 Knoten läuft, könnte ein Angreifer den Geldfluss verfolgen, indem er Schnappschüsse der Kontostände vor und nach der Zahlung macht.
Das ist zwar möglich, aber in der Praxis würde es eine Menge Ressourcen kosten, dies schnell zu tun, vor allem wenn das Netzwerk skaliert. Es ist langwierig, eine Momentaufnahme des gesamten Netzwerks zu erstellen. Je mehr Zahlungen durch das Netzwerk fließen, desto unzumutbarer wird es, schnell genug zu sein, um einzelne Absender und ihre Ziele mit genauen Beträgen zu bestimmen. Es gibt Forschungspapiere und Untersuchungen über die Kosten und den Zeitaufwand für diese Angriffe. Es ist für niemanden zumutbar, dies in großem Umfang zu tun. Multimilliarden-Dollar-Analysefirmen oder Triple-Letter-Agenturen können es aber definitiv.
Sinnvoller wäre es, wenn ein Angreifer bestimmte Ziele anvisieren würde. Es wäre möglich, ihre gesamte wirtschaftliche Aktivität zu messen.
Ein Angreifer könnte den Marktknotenpunkt eines Konkurrenten ins Visier nehmen und einen Schnappschuss aller seiner Kanäle erstellen. Er könnte beobachten, wie die gesamte Eingangskapazität seines Knotens sinkt. Der Angreifer könnte die Preise der Artikel des Ladens sehen und Annahmen über die gekauften Artikel treffen. Eine mögliche Lösung, um dem entgegenzuwirken, besteht darin, dass ein Händlerknoten kontinuierlich Geldmittel im Verhältnis zu den eingehenden Zahlungen ausgibt. Idealerweise, sobald Zahlungen eingegangen sind, um zu verhindern, dass die Snapshots der Angreifer einzelne Einkäufe erfassen. Sie können das Geld an einen anderen Node weiterleiten, der ihnen gehört, aber nicht mit ihrem Laden verbunden ist.
Es gibt Möglichkeiten, herauszufinden, ob du von einem Balance-Probe Angriff betroffen bist, und du kannst versuchen, ihn zu unterbinden. Es könnte aber auch sein, dass die Nodes Schwierigkeiten haben, eine Zahlung zu tätigen und andere Routen ausprobieren. Ich glaube, es ist eine sichere Annahme, die Weiterleitung nach ein paar Versuchen zu verweigern, um die Privatsphäre zu schützen. Die versehentliche Verweigerung der Weiterleitung einer tatsächlichen Zahlung kann dazu führen, dass dir Einnahmen durch die Weiterleitung entgehen. Außerdem würden weniger Zahlungen an dich weitergeleitet werden, da die Algorithmen für den Zahlungsweg einen guten Ruf voraussetzen. Mir ist keine Software bekannt, die gegen das Balancing Probing hilft, also müsste etwas Eigenes geschrieben werden.
Lösung: Bis eine bessere Methode zur Vermeidung von Sondierungen entwickelt wird, solltest du in regelmäßigen Abständen ein Rebalancing durchführen und Gelder in und aus deinem Knotenpunkt senden. Das ist zwar nicht die beste Lösung, aber es ist ein schwer zu lösendes Problem.
Timing-Angriffe
Timing-Angriffe basieren auf Annahmen darüber, wie schnell etwas passiert ist. Im Fall des Lightning Network könnte ein Router feststellen, wer das Ziel einer Zahlung ist. Dies geschieht auf der Grundlage der Geschwindigkeit, mit der die Transaktion erfolgreich war. Es gibt grundlegende Netzwerkverzögerungen, wenn wir von Hop zu Hop durch das Netzwerk gehen. Stell dir zum Beispiel vor, die durchschnittliche Netzwerkverzögerung beträgt 100 ms pro Hop. Eine Zahlung, die nach 500 ms erfolgreich ist, könnte bedeuten, dass das Ziel der Zahlung 5 Hops entfernt ist. Wenn der Angreifer die Zeit zwischen den einzelnen Knotenpunkten scannt, könnte er eine noch bessere Berechnung erhalten.
Je größer das Netzwerk wird und je mehr Ziele und Latenzzeiten es gibt, desto schwieriger wird das.
Lösung: Als Knotenpunkt kannst du eine zufällige Zeitspanne hinzufügen, um Zahlungen weiterzuleiten oder anzunehmen. Das kann jedoch das Erlebnis von Sofortzahlungen um ein paar Sekunden verschlechtern. Ich kenne derzeit keine Software, die das kann, also glaube ich, dass es angepasst werden müsste (Edit: ein Reddit-Nutzer hat sein c-lightning Plugin geteilt, um das zu erreichen).
Zusätzliche Technik für das Lightning-Protokoll
Beim jetzigen Stand der Dinge gibt es noch ein paar zusätzliche Lightning-Technologien, die erwähnenswert sind.
MPP
(Base) Multipath Payments sind etwas, das es heute schon gibt, das aber vielleicht nicht so häufig genutzt wird. Anstatt dass eine einzelne Zahlung einen einzigen Weg nimmt, kann eine einzelne Zahlung mehrere Wege mit kleineren Beträgen nehmen. Dadurch erhöht sich die Wahrscheinlichkeit, dass eine größere Zahlung im Netzwerk erfolgreich ist. Es bietet auch ein wenig Privatsphäre.
Wie im Abschnitt Guthabensondierung beschrieben, werden anstelle einer großen Zahlung, die durch das Netzwerk fließt, kleinere Zahlungen getätigt. Dadurch können eine Zahlung und der genaue Gesamtbetrag besser verborgen werden. Ein Nachteil ist, dass jede MPP denselben Zahlungs-Hash verwendet, so dass ein Router (oder kolludierende Router) sie miteinander in Verbindung bringen könnte.
AMP
Atomic Multipath Payments (AMP) sind eine Verbesserung der Basis-MPP, da jede aufgeteilte Zahlung einen anderen Zahlungs-Hash hat. Daher sind sie nicht so leicht über das gesamte Netzwerk korrelierbar wie MPP.
Rendezvous
Rendezvous-Routing ist eine große Verbesserung für die Privatsphäre der Empfänger. Die Empfänger verbergen ihren öffentlichen Schlüssel und ihre privaten Kanäle, indem sie eine Rechnung erstellen, in der die verschlüsselten Zwiebelinformationen bereits enthalten sind. Sie geben einen zufälligen Knoten an, zu dem der Absender einen Pfad erstellen soll, und von dort aus wird der Rest der Zahlung weitergeleitet. Der Absender weiß nie, wer der endgültige Zielknoten ist, und auch keiner der Knoten entlang der Route weiß es.
Route Blinding
Route Blinding ist ein alternativer Vorschlag zu Rendezvous. Er ist ähnlich, verhindert aber, dass private Kanäle von Angreifern entdeckt werden. Route Blinding ermöglicht die Privatsphäre des Empfängers und die Wiederholbarkeit von Routen mit unterschiedlichen Beträgen. Allerdings ist es insgesamt weniger privat und es kann immer noch Möglichkeiten zum Auskundschaften geben.
Rendezvous und Route Blinding können immer noch anfällig für Balance-Snapshot-Angriffe sein, um Absender und Ziel zu verraten. Alles, was es dazu braucht, ist ein Schnappschuss vor und einer nach der Zahlung. Mit Route Blinding könnte es möglich sein, es so zu erzwingen, dass private Kanäle nicht wahrscheinlich sind, ohne dass der Knoten eine Route-Blinded-Rechnung herausgibt.
Trampolin-Routing
Trampolin-Routing ist eine Methode, bei der ein Knotenpunkt an ein bestimmtes Ziel senden möchte, aber möglicherweise nicht genügend Routing-Informationen hat, um dies zu tun. Stattdessen leitet er die Zahlung an einen bekannten Trampolin-Router weiter. Dieser Router erstellt den Pfad, um die Zahlung zum Ziel zu bringen.
Wenn der Empfänger das Trampolin-Protokoll ebenfalls unterstützt (oder zumindest versteht), wissen andere Trampolin-Router weiterhin nicht, ob das nächste Trampolin das endgültige Ziel ist. Ähnlich wie heute, wo normale Router nicht wissen, ob ihr nächster Hop der letzte ist. Die Empfänger können sogar ein Rendezvous einrichten.
Routing mit öffentlichem Schlüssel
Eine einfache Alternative zur Verschleierung des UTXO, aus dem ein Kanal besteht, ist die Implementierung von Public Key Routing. Es wäre zwar immer noch möglich, einen privaten Kanal zwischen zwei Peers zu erkennen, die keinen öffentlichen Kanal untereinander haben, aber die UTXO, die dahinter steckt, wäre nicht mehr bekannt.
Immortan
Immortan ist eine „minimale, auf Privatsphäre fokussierte, andersartige LN-Protokollimplementierung, die speziell für kleine LN-Knoten gedacht ist." Seine Implementierung befasst sich mit Dingen wie der Rotation von öffentlichen Schlüsseln und Rechnungen und gefälschten Kanal-IDs. Sie befindet sich derzeit in der Entwicklung.
zkChannels
zkChannels bietet starke Anonymität und Unverkettbarkeit für Off-Chain-Transaktionen, indem es die Menge an Informationen, die ein Empfänger über einen Sender hat, über den zu zahlenden Betrag hinaus reduziert. Es handelt sich um eine vorgeschlagene Aktualisierungsschicht, die einen asymmetrischen Informationsfluss bietet, um die Privatsphäre durch verstümmelte Schaltungen zu wahren.
Sie verbessert vor allem die Privatsphäre des Absenders. Sie unterstützt jedoch nur eine Händler-Kunden-Beziehung, bei der der Kunde dem Händler nur den zu zahlenden Betrag mitteilt. zkChannels unterstützt keine Weiterleitung von Zahlungen, daher sind Hub-and-Spoke-Szenarien ideal dafür.
Taproot
Es gibt viele Verbesserungen bei Taproot, aber aus Lightning-Sicht ist ein Vorteil, dass verdeckte Multisig-Ausgaben möglich sind. Jeder Kooperationsabschluss ohne ungelöste Zahlungen würde wie eine normale Single-Sig-Taproot-Ausgabe aussehen. Das würde es schwerer machen, zu erraten, was eine Transaktion für einen privaten Kanal sein könnte.
Kanalfabriken
Kanalfabriken sind Orte, an denen viele Peers ihre Mittel zusammenlegen können, um gemeinsam ein Subnetz von Kanälen zu erstellen. Das hat Vorteile für die Skalierbarkeit, kann aber auch dazu führen, dass sie von außen wie ein Coinjoined Channel aussehen. Kanalfabriken würden einige Protokollverbesserungen für die Basis- und Lightning-Schicht erfordern. Alternativ könnte eine Anwendung zur Erstellung von Kanälen mit mehreren Parteien ein ähnliches Ergebnis erzielen.
Andere Arten
Es gibt viele, viele mögliche Verbesserungen oder Vorschläge für Lightning, die die Privatsphäre verbessern könnten. Einige davon könnten allerdings noch Jahre entfernt sein, darunter auch die hier erwähnten. Ich habe mich noch nicht näher mit ihnen befasst, da sich dieser Artikel auf das konzentriert, was wir heute haben.
Abschließende Vorschläge zum Datenschutz
Wenn du mir bis hierher gefolgt bist, haben wir einige Dinge zum Datenschutz im Lightning Network herausgefunden.
- Jeder kann die öffentlichen Node-Informationen eines anderen sehen, wenn dieser zuvor einen öffentlichen Kanal geöffnet hat.
- Jeder kann die UTXOs sehen, aus denen ein Channel besteht, und auch private Channels sind einsehbar.
- Die Kettenanalyse kann Knoten, ihre aktiven/vergangenen Kanäle, UTXOs usw. ins Visier nehmen.
- Wenn du mehr als 1 gemischte UTXO auf deinen Knotenpunkt legst, kann das die Mischung aufheben und deine wahre Identität preisgeben.
- Empfänger/innen haben sehr wenig Privatsphäre, bis etwas wie Rendezvous eingeführt wird.
- Einzelne Zahlungen, die durch das Netzwerk fließen, können per Snapshot erfasst werden. Es ist jedoch unwahrscheinlich, dass du irgendwelche Garantien bekommst, es sei denn, du bist ein ressourcenintensiver Angreifer. Realistischer ist es, bestimmte Knotenpunkte ins Visier zu nehmen, um wirtschaftliche Aktivitäten zu messen.
Wenn du im Lightning Network so privat wie möglich sein willst, schlage ich dir Folgendes vor.
Für Absender
- 1 UTXO pro Knotenpunkt in einem privaten Kanal. Idealerweise gemischt und für den gesamten Betrag.
- Schicke nicht direkt an deinen 1-Kanal-Partner.
- Wenn du fertig bist, leere deinen Kanal vollständig und schließe ihn.
- Empfange, erstelle keine Rechnungen usw., die Informationen über den Kanal/UTXO preisgeben.
- Wenn du genug Zeit hast, wird dieser Kanal im Netzwerk bekannt und ausfindig zu machen sein, also behalte diese Wegwerfknoten nicht zu lange.
- Sende Zahlungen in kleinen Schritten und für längere Strecken, um sie vor Snapshots zu schützen.
Für Empfänger/innen
- Öffne niemals einen Kanal mit einem UTXO, den du besitzt. Bring andere dazu, einen Channel mit ihrem UTXO zu eröffnen oder besorge dir einen UTXO, mit dem du einen Channel eröffnen kannst. Einige Quellen könnten Bitrefill Thor, Lightning Labs Loop Out, LNBig, Yalls usw. sein.
- Wenn du Geld auf die Hauptkette schicken willst, nutze entweder einen Dienst wie Loop Out oder schließe den Kanal und mische dein Geld zuerst.
- Benutze nur Tor und verwende keinen Alias.
- Gib keine Rechnungen öffentlich weiter und erhalte keine Rechnungen von Diensten, bei denen du KYC-geprüft bist, ohne ein Einweg-Rechnungssystem.
- Erzähle anderen nicht, dass du einen bestimmten Knotenpunkt besitzt.
- Erstelle keine Rechnungen mit Memos, die aufschlussreiche Informationen enthalten.
Mixen im LN
Wenn du dich für das Mixen im Netzwerk interessierst, kannst du für einen Dienst wie Bitrefill Thor bezahlen, um einen Kanal mit einer brandneuen Node zu eröffnen. Du kannst dann das Geld von deinem Wegwerfknoten an deinen geleasten Channel-Knoten schicken. Auf diese Weise besitzt du den UTXO, mit dem du angefangen hast, nicht mehr, wenn du die Channels schließt. Stattdessen besitzt du jetzt einen neuen UTXO von einem anderen Node. Wenn du für einen geleasten Kanal oder eine UTXO über Lightning bezahlst, kannst du dich auch als Absender verbergen, wenn du dich an die gute Praxis hältst.
Fazit
Der Zweck des Lightning Network ist die schnelle Abrechnung. Die Bitcoin-Basisschicht hat keine Datenschutzgarantien und Lightning auch nicht. Es gibt Möglichkeiten, sich vor den Aktivitäten des Netzwerks zu verstecken, aber das ist keine Garantie. Große Akteure können angreifen und private Kanäle aufdecken, die eine Erweiterung des Hauptgraphen sind. Von dort aus sollte der Geldfluss durch das Netzwerk als öffentliches Wissen betrachtet werden.
Unterirdische Blitznetzwerke, die aus vollständig privaten Knoten bestehen, die sich gegenseitig ihre Privatsphäre anvertrauen, können jetzt oder in Zukunft sehr wohl existieren. Aber die Weiterleitung von Zahlungen über den öffentlichen Graphen birgt Risiken für die Privatsphäre. Berücksichtige das Bedrohungsmodell, das du hast, und verwende die Informationen hier entsprechend.
Es mag Lösungen geben, die in der Zukunft helfen können, aber das ist der Punkt, an dem wir heute mit der allgemeinen Nutzung des Lightning Network sind.
Danksagung
Ein großes Dankeschön an alle, die sich die Zeit genommen haben, mehrere Entwürfe dieses Artikels zu überprüfen und wertvolle Vorschläge zu machen! Dazu gehören openoms, Abubakar, Evan, Andrew und andere.
Die Forscher und Entwickler des Lightning Network verdienen ebenfalls ein großes Lob, denn die meisten Informationen in diesem Artikel stammen aus ihrer jahrelangen Arbeit. Ich habe viele ihrer Links angegeben, aber besonders hervorzuheben sind Rusty, Sergei, Bastien, Joost und viele, viele andere!
Unterstütze Bitcoin-Entwickler auf der Bitcoin Dev Liste!
Wenn dir der Inhalt gefallen hat, freue ich mich immer sehr, wenn du mir ein paar Sats rüberschubst!
ethicalhalibut38@walletofsatoshi.com
Sinautoshi
#Bitcoin only - #GetOnZero - united we fix the money (supply to 21M BTC)
Related Posts
Rabbit fragt #17
Aug 28, 2024
Der Bitcoiner in der Midlife-Crisis
Jun 14, 2024
Rabbit fragt...#16...Was ist eine Hardware Wallet?
May 26, 2024