Safe Network Entwickler Update 🇩🇪 9. Dezember 2021

Dies ist eine maschinelle Ăśbersetzung. Das Original in Englisch ist hier: Update 09 December, 2021

Wir enttäuschen nur ungern, aber leider stellte sich heraus, dass die Spitze etwas weniger spitz war als erwartet, sodass ein Testnetz noch einige Tage entfernt ist. Wir lassen Sie wissen, sobald es fertig ist – es könnte jetzt wirklich jeder Tag sein, aber wir werden das Schicksal nicht durch Vorhersagen herausfordern.

Letzte Woche gab David Rusu dem Team eine Demo von Ring Confidential Transactions (Ring CT). Es war faszinierendes Zeug, aber ziemlich mathematiklastig, also haben wir diese Woche eine abgespeckte Version mit dem absoluten Minimum an Algebra, um ein bisschen Hintergrund zu geben und die Richtung zu erklären, die wir mit privaten DBC-Transaktionen einschlagen .

Allgemeiner Fortschritt

David Rusu, @danda und @Anselme haben sich alle mit verschiedenen Aspekten der Implementierung von Ringsignaturen beschäftigt, einschließlich Zahlungsnachweisen.

@ChrisO hat mannhaft mit GitHub Actions gekämpft, um zu versuchen, das Testnet veröffentlichungswürdig zu machen, aber es hat in den letzten Tagen nicht mitgespielt.

@bochaco hat mit @chrisO zusammengearbeitet, um die verbleibenden fehlgeschlagenen CLI-Tests zu straffen, und wir haben immer mehr Randfälle um Abschnittsaufteilungen gequetscht

Das gesamte Team hat sich mit der Mitglieder-DKG beschäftigt – was ist der effizienteste Weg, um sicherzustellen, dass Älteste die Erwachsenen in ihren Sektionen im Auge behalten können, und wie können wir uns vor Schlüsselverkaufsangriffen schützen, bei denen ein Gegner erfolgreich die Kontrolle über eine Sektion erwirbt?

Ringsignaturen und Safe

Wir wollen einen DBC ausgeben. Dazu müssen wir beweisen, dass wir der Eigentümer sind. Aber um die Privatsphäre unserer DBC-Transaktionen zu erhöhen, wollen wir nicht, dass die Münze genau weiß, wer wir sind – was sie tun würde, wenn wir einen Standardschlüssel verwenden würden. Darüber hinaus muss die Münze auch wissen, dass dieser DBC noch nicht ausgegeben wurde.

Um diese Ziele zu erreichen, möchten wir Ringsignaturen verwenden, die auf der Arbeit von Ring CT von Monero aufbauen und eine sichere Wendung von hinzufügen Mehrfachsignatur und Zahlungsnachweis.

Was ist eine Ringsignatur?

Ringsignaturen sind eher eine probabilistische Sicherheitsmethode als eine kryptografisch harte, aber wie Monero gezeigt hat, immer noch eine sehr effektive Methode zur Anonymisierung von Transaktionen.

Eine Ringsignatur ist eine Möglichkeit, einen öffentlichen Schlüssel (z. B. unseren DBC-Eigentümerschlüssel) unter vielen anderen Lockschlüsseln zu verstecken. Ein Ring ist nur ein Wort für eine Gruppe, also ist unser Schlüssel auf Safe im Ring mit einem Haufen Köder, die zufällig aus einem Pool von Schlüsseln ausgewählt werden, von denen die Münze weiß.

Eine Signatur, die von einem beliebigen Schlüssel im Ring erstellt wurde, ist gültig, aber die Münze kann nicht sagen, welcher Schlüssel im Ring tatsächlich eine Transaktion signiert hat, sondern nur einer von ihnen. Je größer der Pool an Köderschlüsseln ist, desto schwieriger wird es für einen Beobachter des Systems, den tatsächlichen Schlüssel zu erraten, der eine Transaktion signiert hat.

Wir verwenden die Ringsignatur, um eine Nachricht zu signieren, z. B. eine Aufforderung an eine Münze, einen DBC neu auszugeben, damit wir ihn ausgeben können. Aus dieser Signatur kann die Münze erkennen, dass die Nachricht gültig ist, aber nicht, wer wir sind. Es kann auch überprüfen, ob unser Schlüssel zuvor noch nicht verwendet wurde, um doppelte Ausgaben zu vermeiden.

Die Ringsignatur selbst enthält (unter anderem) einen Blindwert (Zufallszahl) für jeden Köder und einen für unseren Schlüssel sowie ein „Schlüsselbild“ für unseren Schlüssel. Ein Schlüsselbild ist eine Darstellung unseres Schlüssels, die seine wahre Identität verbirgt.

Ein paar Dinge zu beachten:

  • Die TäuschungsschlĂĽssel wurden alle schon einmal von der MĂĽnze gesehen. Sie könnten EigentumsschlĂĽssel anderer nicht ausgegebener DBCs oder einiger anderer gĂĽltiger öffentlicher SchlĂĽssel sein.

  • Jedes Ringzeichen kann nur einmal verwendet werden.

  • Das SchlĂĽsselbild wird im ausgegebenen Buch gespeichert, sodass die MĂĽnze erkennen kann, dass es bereits ausgegeben wurde.

  • Die Erstellung unseres SchlĂĽsselbildes erfordert unseren geheimen SchlĂĽssel.

Was ist also unser geheimer Schlüssel? Um dies zu erklären, müssen wir in die Elliptische-Kurven-Kryptographie (ECC) einsteigen.

Elliptische-Kurven-Kryptographie

ECC ist eine Art asymmetrischer Kryptographie, die von vielen Kryptowährungen verwendet wird, einschließlich Bitcoin. Wie alle asymmetrischen Kryptosysteme kommt es darauf an, dass Berechnungen in der einen Richtung einfach und in der anderen sehr schwierig sind, also Einwegfunktionen.

In ECC ist die Berechnung, wie man von einem Punkt einer Kurve zu einem anderen kommt. So funktioniert das

Nehmen wir an, wir haben eine Kurve der Form: y2= x3 + ax + b.

Wir verwenden die Kurve BLS12-381 (insbesondere blstrs), die hat diese Art von Form:

bed2a2bab8d53dbd3bf0b05085704f6eac1de859

Die Kurve ist riesig und deckt ein endliches Feld Fq ab, wobei q eine sehr große Primzahl ist, was bedeutet, dass es eine enorme (aber endliche) Anzahl möglicher Punkte auf der Kurve gibt. Alle arithmetischen Operationen an Punkten auf der Kurve sind modulo q. In der modularen Arithmetik wird, sobald ein Wert größer als „q“ ist, wieder zum Anfang gesprungen, wie bei einer Uhr: 3 + 10 „modulo 12“ = 1.

Wenn wir einen Punkt auf der Kurve ( „A“ ) mit einem anderen Punkt auf der Kurve „s“ multiplizieren, werden wir scheinbar zufällig an einem anderen Punkt ( „B“ ) ankommen, der ebenfalls istauf der Kurve. Diese Multiplikation ist sehr schnell und einfach, aber sie umzukehren – herauszufinden, womit wir Punkt „A“ multipliziert haben, um Punkt „B“ zu erreichen – wird normalerweise Tausende von Jahren dauern, da Sie im Grunde alle möglichen Optionen durchlaufen müssen bis du auf den richtigen triffst. Es gibt kein offensichtliches Muster dafür, wo aufeinanderfolgende Punkte auf der Kurve auftauchen, und keine einfache Möglichkeit, den Prozess zurückzuentwickeln.

Es gibt einige spezielle Punkte auf dieser Kurve, die Generatoren genannt werden. Ein Generator ( G ) hat die Eigenschaft, dass er, wenn Sie ihn weiter zu sich selbst hinzufügen ( G, G+G, G+G+G ..), schließlich jeden möglichen Punkt auf der Kurve definieren wird. Wir erstellen ein Schlüsselpaar, indem wir ein „G“ auswählen und es mit „s“ multiplizieren, einem weiteren Punkt auf der Kurve, der nur uns bekannt ist.

  • sG ist unser öffentlicher SchlĂĽssel, s ist unser geheimer SchlĂĽssel.

OK, wir haben also unseren öffentlichen Schlüssel sG (der in unserem Beispiel unser DBC-Besitzerschlüssel ist) und unseren geheimen Schlüssel. Jetzt müssen wir ein Schlüsselbild I erstellen. Die Formel dafür lautet:

  • I = sHp(sG)

Unser Schlüsselbild ist unser geheimer Schlüssel „s“, multipliziert mit einem Hash unseres öffentlichen Schlüssels „sG“. Unser Schlüsselbild „Ich“ ist ein weiterer Punkt auf der Kurve.

Beachten Sie, dass nur wir ihn erstellen können, da unser geheimer Schlüssel „s“ erforderlich ist, um „I“ zu erstellen. „I“ wird im ausgegebenen Buch gespeichert.

Jetzt können wir also beweisen, dass unsere Identität mit „I“ gültig ist, obwohl unser öffentlicher Schlüssel gehasht und mit unserem geheimen Schlüssel multipliziert wird und unser öffentlicher Schlüssel geblendet und mit allen anderen geblendeten Köderschlüsseln gemischt wird. Die Münze weiß nur, dass einer dieser Schlüssel der richtige ist, und wenn unser Schlüsselbild erneut verwendet wird, wird es im ausgegebenen Buch gefunden und blockiert.

Nächste Schritte

David Rusu integriert Ring CT in den DBC-Code. Der nächste Schritt wird sein, es mit BLS zum Laufen zu bringen und dann den Zahlungsnachweis zu prüfen. @danda und @Anselme haben hier den Grundstein gelegt. Die Idee ist, Rechnungen zu haben, die öffentliche Pay-to-Schlüssel und Pedersen Commitments enthalten. Die Zahlungs-DBC wird neu ausgestellt, um genau dieselbe Pedersen-Zusage wie in der Rechnung zu haben. Auf diese Weise können wir nachweisen, dass wir den richtigen Betrag und an den richtigen Zahlungsempfänger ausgestellt haben. Wir können sowohl die Rechnung als auch den Zahlungs-DBC für alle sichtbar veröffentlichen und damit den Nachweis erbringen, dass wir diese Rechnung bezahlt haben. Dies ist sehr viel ein work in progress.


NĂĽtzliche Links

FĂĽhlen Sie sich frei, unten mit Links zu Ăśbersetzungen dieses Entwicklungsupdates zu antworten, und die Moderatoren werden sie hier hinzufĂĽgen.

Als Open Source-Projekt sind wir immer auf der Suche nach Feedback, Kommentaren und Community-Beiträgen. Seien Sie also nicht schüchtern, machen Sie mit und lassen Sie uns gemeinsam das sichere Netzwerk erstellen!