Kryptonote-Überprüfbarkeit. So hängen Sie die Brieftaschenbilanzprüfung an.


Vor einiger Zeit habe ich das ursprüngliche Cryptonote-Whitepaper gelesen. Das Schema sieht einfach und bis zu einem gewissen Grad sicher aus. Interessanterweise fehlt jedoch eine Option für die Ausgabenprüfung.

Es gibt nämlich eine Option namens "Tracking Key", mit der eingehende Nachrichten überprüft werden können. Gleichzeitig gibt es keine symmetrische Option, mit der auch Ausgaben überprüft werden können.

Eine Frage, die ich mir gestellt habe, war: Ist es möglich, das ursprüngliche Cryptonote-Protokoll in irgendeiner Weise zu ändern, um das oben genannte Outgoings-Audit anzufügen, oder zumindest, um ein Audit für gleichzeitige Incomings plus Outgoings (das heißt, den Brieftaschen-Kontostand) anzufügen?

Am besten ohne Aufblasen der in der Blockchain gespeicherten Protokolldaten und auf jeden Fall ohne Beeinträchtigung der Sicherheit.

Ich habe geprüft, ob bereits eine Lösung vorliegt. Es sieht so aus, als ob das Bytecoin-System bereits eine Lösung implementiert hat. Es scheint jedoch, dass es keine Offenlegung von Algorithmen auf Papier gibt. Alles im Code wurde noch nicht überprüft.

Hier ist meine Antwort auf die Frage: Ja, das ist möglich. Ich habe eine Idee, zwei Varianten, wie man eine zuverlässige Bilanzprüfung für das ursprüngliche Cryptonote-Protokoll erstellt.

Nach dem Spielen mit der Cryptonote-Kryptografie scheinen beide Varianten nicht kompliziert zu sein, obwohl sie bestimmte Änderungen im Protokollkern erfordern. Das Verständnis, warum sie keine Sicherheitslücken aufweisen, ist etwas komplexer. Es wird später erörtert.

Es gibt verschiedene Erweiterungen für das Cryptonote-Protokoll in den heutigen Kryptowährungssystemen. Zur Vereinfachung verweise ich nur auf das Original-Cryptonote-Papier. Dies schließt nicht aus, dass die vorhandenen Erweiterungen auf die geänderte Version des Protokolls angewendet werden können.

Beachten Sie, dass beide Varianten Entwürfe sind und die Idee so einfach wie möglich ausgedrückt wird.

In kurzen Worten

  • Bob hat eine Brieftasche mit privatem Schlüssel (a, b), Öffentlicher Schlüssel (A = a * G, B = b * G) und Tracking-Schlüssel (a, B).
  • Alice generiert einen Zufall r und sendet eine Transaktion an Stealth-Adresse P = Hs (r * A) * G + B mit Bobs Brieftasche verbunden. Sie packt auch R = r * G in die Transaktion. Nur Bob, der Bescheid wusste (a, b)kann berechnen x = Hs (a * R) + b, so dass P = x * G.
  • Bob sendet seine Transaktion von der Stealth-Adresse P an Charlies Brieftasche genauso wie Alice an Bob. Wesentliches Detail ist hier, wie er sich versteckt P Unter den n-1 anderen Benutzer-Stealth-Adressen:

Wähle n-1 andere Benutzeradressen, wähle eine beliebige aus s und bilden einen Satz {Pi | i = 1,…, n}, wo Ps = P

Wähle zufällig {qi | i = 1,…, n} und {wi | i = 1,…, n, i ≠ s}

Berechnung:

I = x * Hp (P), wo x = Hs (a * R) + b wie oben

Li = qi * G, zum i = s

Li = qi * G + wi * P, zum Alles was ich habe

Ri = qi * Hp (P), zum i = s

Ri = qi * Hp (Pi) + wi * I, zum Alles was ich habe

Berechnung c = Hs (m, L1,…, Ln, R1,…, Rn), wo m ist die öffentliche Transaktionsnachricht mit Informationen zu {Pi} einstellen

Zum Schluss berechnen Sie:

ci = wi, zum Alles was ich habe

ci = c-sum (ci, für alle i i s), zum i = s

ri = qi, zum Alles was ich habe

ri = qi – cs * x, zum i = s

Veröffentlichen Sie die Transaktion Signatur = (I, c1,…, cn, r1,…, rn)

  • Jeder öffentliche Prüfer kann die Transaktionssignatur folgendermaßen überprüfen:

Bauen:

L’i = ri * G + ci * Pi, zum alles i

R'i = ri * Hp (Pi) + ci * I, zum alles i

Prüft ob Summe (ci, für alle i)? = Hs (m, L’1,…, L’n, R’1,…, R’n).

  • Wenn die Gleichheit korrekt ist, ist der Prüfer davon überzeugt, dass der Absender (Bob, der Prüfer weiß das jedoch nicht) es weiß X, so dass P = x * G und gleichzeitig I = x * Hp (P) sicher unbekannt P im Set {Pi}
  • Außerdem prüft der Prüfer, ob ich (als "Schlüsselbild" bezeichnet) wird bisher nicht in der Blockchain verwendet, wodurch Doppelausgaben vermieden werden.
  • Carol, die den Tracking-Schlüssel kennt (a, B)kann assoziieren P mit Bob durch Überprüfung P = Hs (a * R) * G + BHiermit können Sie alle eingehenden Transaktionen in der Brieftasche von Bob anzeigen.

Vor einigen Jahren wurde ein Angriff auf dieses Protokoll unter Verwendung von Punkten niedriger Ordnung (ed25519) aufgedeckt und gemildert. Einige zusätzliche Prüfungen wurden hinzugefügt. Dies hat keinen Einfluss auf die Überprüfbarkeit.

Wesentlich ist, dass für die Kernprotokollidee keine bestimmte Kurve erforderlich ist. Was ist erforderlich: eine Gruppe großer Primzahlen und keine durchführbaren Paarungen für die Kurve.

Auch nach dem Whitepaper, Hp Funktion muss nicht unbedingt eine ideale kryptografische Hash-Funktion sein, sondern nur pseudozufällig. Die Notwendigkeit von Hp wird im Whitepaper anhand eines Beispiels erörtert: if Hp (_) = G2, wo G2 Ist ein konstanter Punkt (ein anderer Generator) auf der Kurve, kann Alice, nachdem sie einige Transaktionen an Bob gesendet hat, einige der zukünftigen Transaktionen von Bob mit ihm verknüpfen, zu denen sie nicht berechtigt ist.

Definieren wir das Brieftasche privaten Schlüssel wie (a, b, d). Die Bedeutung für ein und b ist das gleiche wie für das ursprüngliche Protokoll.

Definieren wir das Brieftasche öffentlichen Schlüssel wie (A = a * G, B = b * G, D = d * G).

Lassen Sie uns umbenennen (a, B) , heißen Tracking-Schlüssel für eingehende Nachrichtenim Gegensatz zu einfach Tracking-Taste im ursprünglichen Protokoll.

Definieren wir das Brieftasche Balance Tracking-Schlüssel wie (a, B, d, B2 = b * B, Nachweis von B2). Das B2 ist ein Punkt, der dem Quadrat von entspricht b. Das Nachweis von B2 ist ein nicht interaktiver Beweis dafür, dass B2 eigentlich gleich b * b * Gist es einfach, diesen Beweis zu konstruieren.

  • Änderung der Stealth-Adresse:

P = Hs (r * A) * D + B in

  • Bobs Aktionen und wichtige Bildänderungen:

x = Hs (a * R) * d + b , so dass P = x * G

I = x * Hs (P) * P in

c = Hs (m, L1, …, Ln, R1, …, Rn, I, P1, …, Pn) in. Beachten Sie, ich und alle Pi’s werden im Vergleich zum Originalpapier unter den Hasch verschoben.

Signatur = (I, c1,…, cn, r1,…, rn) Bleibt das selbe

  • Änderung der Prüferaktionen:

R'i = ri * Hs (Pi) * Pi + ci * I

  • Carols Handlungsänderung:

P = Hs (a * R) * D + B

  • Neue Funktionalität: ein Auditor, der das kennt Brieftasche Balance Tracking-Schlüssel, kann:

Verfolgen Sie alle eingehenden Transaktionen von Bob, indem Sie wie Carol vorgehen. Nehmen wir zur Vereinfachung an, der Auditor schreibt die Paare auf (P, R) für jede gefundene eingehende Transaktion von Bob.

Verfolgen Sie alle ausgehenden Transaktionen von Bob, indem Sie die folgende Gleichheit für alle neu angehängten prüfen ichIst:

= Hs (P) * (k * k * G + 2 * k * B + B2), wo k = Hs (a * R) * d

Wenn die Gleichheit für einige richtig ist (P, R), dann gibt die Transaktion aus P und gehört zu Bob.

Auf diese Weise kann der Prüfer den Brieftaschen-Kontostand von Bob verfolgen, indem alle eingehenden und ausgehenden Transaktionen von Bob angezeigt werden.

Hinweis, Hp wird nicht mehr verwendet. Es werden keine zusätzlichen Daten an die Blockchain angehängt.

Privat Schlüssel: (a, b, d)

Öffentlicher Schlüssel: (A = a * G, B = b * G, D = d * G)

Tracking-Schlüssel für eingehende Nachrichten: (a, B)

Nachverfolgungsschlüssel für Brieftaschenguthaben: (a, B, d)

  • Änderung der Stealth-Adresse:

Die Adresse ist ein Paar (P, T), wo P = Hs (r * A) * D + B, wie in der Variante 1, T = Hs (r * A, r * D) * D. Lass uns anrufen T "Key Image Base"

  • Bobs Aktionen und wichtige Bildänderungen:

x = Hs (a * R) * d + b , so dass P = x * G

I = x * T

c = Hs (m, L1, …, Ln, R1, …, Rn, I, P1, …, Pn, T1, …, Tn)

Signatur = (I, c1,…, cn, r1,…, rn)

  • Änderung der Prüferaktionen:

R'i = ri * T + ci * I

  • Carols Handlungsänderung:

P = Hs (a * R) * D + B

  • Der Prüfer kann den überprüfbaren Kontostand von Bobs Brieftasche nachverfolgen:

Verfolgen Sie alle eingehenden Transaktionen von Bob, indem Sie wie Carol vorgehen. Außerdem kann er für jedes gefundene Bob-P Folgendes überprüfen:

= Hs (a * R, d * R) * D.

Wenn diese Gleichheit nicht korrekt ist, wird diese eingehende Transaktion weiterhin als gültig betrachtet, jedoch nicht nachverfolgbar. Das heißt, dass Bob das später ausgeben kann (P, T) anonym. Andernfalls wird die eingehende Transaktion als ausgabenüberprüfbar betrachtet, wenn die Gleichheit gilt.

Nehmen wir der Einfachheit halber an, der Prüfer schreibt (P, T, R) für alle gefundenen Bobs ausgabenprüfbaren Transaktionen.

Er kann alle ausgehenden Transaktionen von Bob im Zusammenhang mit den eingehenden ausgabenprüfbaren nachverfolgen. Er überprüft die folgende Gleichheit für alle neu angehängten Ichs. Wenn die Gleichheit für einige richtig ist RDann ist dies Bobs ausgehende Transaktion:

I? = T * P , wo t = Hs (a * R, d * R) * d

In dieser Variante sind die einzigen zusätzlichen Daten, die in die Blockchain gestellt werden TIst.

Die Brieftaschen sind überprüfbar. Letztendlich entscheiden die Absender jedoch, ob das Geld, das sie an die Empfänger senden, in den Empfängerbrieftaschen überprüfbar wird. Dies verletzt nicht die Überprüfbarkeit: Niemand kann ihm zugesandte Beträge bei Transaktionen mit korrektem T verbergen.

Ich hoffe, dass ich Zeit finde, um die Sicherheit zu besprechen.

Coins Kaufen: Bitcoin.deAnycoinDirektCoinbaseCoinMama (mit Kreditkarte)Paxfull

Handelsplätze / Börsen: Bitcoin.de | KuCoinBinanceBitMexBitpandaeToro

Lending / Zinsen erhalten: Celsius NetworkCoinlend (Bot)

Cloud Mining: HashflareGenesis MiningIQ Mining

Werbung: Immobilienmakler HeidelbergMakler Heidelberg

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close