Wie könnten Schnorr-Signaturen über die gesamte Transaktion hinweg aggregiert werden?

Ich studiere das MuSig-Protokoll und habe Schwierigkeiten, bestimmte Segmente zu verstehen. So ist mein bisheriges Verständnis:

Im aktuellen Bitcoin CHECKMULTISIG-Format wächst die Größe der Signatur linear mit der Anzahl zusätzlicher „m“ Unterzeichner. Die Funktionsweise von CHECKMULTISIG besteht darin, dass jeder Unterzeichner seine eigene unabhängige Signatur erstellt und wir alle diese individuellen Werte in die Skriptsig einbetten. Ein 3-von-5-Entsperrskript könnte also [Sig 1][Sig 2][Sig 5] lauten ... der Einfachheit halber nenne ich diese Zusammenstellung aller individuellen Sig-Werte die "Gruppensignatur". Im gegebenen Beispiel wäre dieses Signaturfeld dreimal so lang wie ein Standard-P2PKH.

In einem „naiven“ Schnorr-Multisignaturschema können wir, anstatt alle potenziellen öffentlichen Schlüssel und [viel größere] Gruppensignaturen auf die Blockchain für die Verifiziererberechnung fallen zu lassen, die Unterzeichner interaktiv ihre individuellen öffentlichen Schlüssel in einer Precommitment-Phase summieren lassen, um einen einzigen abzuleiten "aggregierter" Schlüssel, der synonym zu einem traditionellen öffentlichen Schlüssel gelesen wird. Ein externes Mitglied könnte dann BTC an diesen aggregierten Schlüssel senden, wo es von den Gruppenmitgliedern kontrolliert würde. Damit die Gruppe ausgeben kann, würde jede Partei eine Teilsignatur unter Verwendung ihrer eindeutigen persönlichen Schlüssel erstellen und alle diese Signaturwerte interaktiv summieren, um eine Gruppensignatur zu erstellen. An diesem Punkt bleibt uns eine Gruppensignatur (das ist die Größe einer einfachen P2PKH-Sig) und ein aggregierter öffentlicher Schlüssel, der an die Blockchain angehängt wird, was uns große Platzeinsparungen verschafft. Dieses Schema ist jedoch unsicher, wenn es nicht unter einem KOSK-Modell betrieben wird. Wir wenden uns einer anderen Schnorr-Variante, MuSig, zu, die eine nachweislich sichere Schlüsselaggregation bieten kann, während sie im einfachen Kontext öffentlicher Schlüssel arbeitet.

Im Blockstream- Blogbeitrag von 2018 heißt es:

Anstatt uns auf eine Signatur pro Eingabe zu beschränken, können wir tatsächlich eine Signatur für die gesamte Transaktion erhalten. Die Schlüsselaggregation kann nicht über mehrere Eingaben hinweg verwendet werden, da die öffentlichen Schlüssel von den Ausgaben festgeschrieben werden und diese unabhängig ausgegeben werden können.

Ich habe Schwierigkeiten, diesen Absatz zu verstehen. Ich vermute, dass auf jeden aggregierten Schlüssel in der Skriptsig verwiesen werden muss, da der Skriptpubkey des vorherigen Absenders einen Nachweis verlangt hätte, um die Belastung zu entsperren. Ich habe Mühe zu verstehen, wie die aggregierte Signatur über mehrere Eingaben hinweg erreicht wird.

Antworten (2)

Hinweis: Dies ist als erweiterter Kommentar gedacht, war aber zu lang. Ich kann Ihre Frage leider nicht direkt beantworten .

Aber nur um sicherzugehen, dass Sie die Unterschiede im Schnorr-Vorschlag verstehen (da sich Ihre Frage eigentlich nicht auf MuSig bezieht):

Schnorr-Signaturen haben drei "Ebenen" von Signaturmanipulationen.

  1. Innerhalb des Skripts selbst (z. B. die Verwendung von MuSig mit Aggregation seiner Signaturen innerhalb eines Skripts),
  2. Bei der Block-Validierung erlaubt Schnorr die Batch-Validierung seiner Signaturen innerhalb eines Blocks. Dies ist viel schneller als die Prüfung einzelner Unterschriften,
  3. Innerhalb einer Transaktion ermöglicht Schnorr die Aggregation von Signaturen aus verschiedenen Eingaben in derselben Transaktion.

Ihre Frage bezieht sich auf Punkt 3 und wurde meines Wissens noch nicht mit einem BIP formalisiert und befindet sich noch in der Entwicklung.

Falls Sie diesen Blog-Beitrag noch nicht gesehen haben, finden Sie unten auch viele gute Referenzen.

Dies ist eine Funktion der digitalen Signaturen von Schnorr (ECSDSA), die in dem von uns derzeit verwendeten digitalen Signaturschema (ECDSA) nicht vorhanden war. Sie sollten die beiden Multisig-Schemata nicht miteinander vergleichen, das aktuelle Design ist eine Problemumgehung.

Mit Schnorr können Sie mehrere Signaturen zu einer einzigen Signatur "zusammenfassen" , indem Sie beim Signieren sowohl private als auch öffentliche Schlüssel kombinieren und darauf basierend eine einzige Signatur (r,s) erstellen. Infolgedessen sollten Sie in Ihrer Schnorr-Transaktion scriptSig nur eine Signatur und einen öffentlichen Schlüssel sehen und die Ausgabeskripte (scriptPubkey) sollten auch nur einen einzigen öffentlichen Schlüssel verwenden.

Schauen Sie sich diese Antwort für ein vereinfachtes Kollektivsignaturschema an, um eine allgemeine Vorstellung davon zu bekommen, wie wir nur eine Signatur/einen Pubkey haben. MuSig fügt diesem Prozess einige zusätzliche Schritte hinzu, um bestimmte Angriffe zu verhindern.

Dies beantwortet nicht die Frage (bei der es um die eingabeübergreifende Aggregation geht, nicht nur um die Aggregation innerhalb der Eingabeschlüssel).
@PieterWuille macht es dir etwas aus, darauf zu antworten?