Was sind die Einschränkungen für die Amortisierung des interaktiven Sitzungsaufbaus von MuSig?

Ich versuche, einen Weg zu finden, um den interaktiven Sitzungsaufbau im MuSig- Signaturaggregationsschema zu amortisieren. Meine Motivation besteht darin, Signaturaggregation zwischen Geräten zu verwenden, die über (Funk-)Kanäle mit niedriger Bandbreite kommunizieren, ohne die Sitzungseinrichtung mehrmals durchführen zu müssen. Idealerweise könnten vorab freigegebene öffentliche Nonces für verschiedene Unterzeichnersätze, öffentliche Schlüssel und Nachrichten wiederverwendet werden.

Ich habe unten zusammengefasst, wie ich verstehe, dass es jetzt funktioniert, hauptsächlich aus dem Codebeispiel hier :

  • Jeder Peer erstellt einen geheimen Schlüssel pro Sitzung aus dem Hash des Satzes öffentlicher Schlüssel des Unterzeichners und dem geheimen Schlüssel für den öffentlichen Schlüssel des Peers (unabhängig von der Nonce).

  • Jeder Peer erstellt eine geheime Nonce aus den öffentlichen Schlüsseln des Unterzeichners und anderen gehashten Informationen, einschließlich einer Zufallszahl

  • Jeder Peer erstellt eine öffentliche Nonce , die wie ein öffentlicher Schlüssel aus der geheimen Nonce generiert wird .

  • alle Peers senden an alle anderen Peers eine 32-Byte- Nonce-Verpflichtung

  • alle Peers senden an alle anderen Peers ihre öffentliche 32-Byte-Nonce und verifizieren die anderen anhand ihrer zuvor geteilten Nonce-Verpflichtungen

der entscheidende Punkt scheint zu sein, dass die öffentliche Nonce NICHT von irgendjemandem frei gewählt werden sollte, nachdem er die öffentlichen Nonce der anderen Unterzeichner gelernt hat

  • Jeder Peer kann nun mit seinem geheimen Sitzungsschlüssel und seiner geheimen Nonce signieren

  • andere Peers können die endgültige (oder partielle) Mehrfachsignatur unter Verwendung der von anderen Unterzeichnern gewählten öffentlichen Schlüssel und ihrer entsprechenden öffentlichen Nonces verifizieren .

  • Ich frage mich, ob die öffentliche Nonce einmal im Voraus von allen Peers festgeschrieben und dann für verschiedene Kombinationen von (öffentlicher Schlüssel, öffentliche Schlüssel anderer Peers, Nachrichten) wiederverwendet werden kann.

Es scheint, als könnten Peers die öffentlichen Nonces des anderen zwischenspeichern und sie für verschiedene Signatursitzungen mit unterschiedlichen öffentlichen Schlüsseln und anderen Unterzeichnern wiederverwenden, solange alle Unterzeichner gezwungen sind, bei jeder Unterzeichnung dieselbe öffentliche Nonce zu verwenden.

Jeder Hinweis auf die Beschränkungen für die Wiederverwendung dieser öffentlichen MuSig-Nonces wäre willkommen.

Wenn Sie jemals dieselbe öffentliche Nonce wiederverwenden, erfahren die anderen Teilnehmer Ihren privaten Schlüssel. Sie können Listen öffentlicher Nonce-Verpflichtungen vorab freigeben, um einige Schritte zu vermeiden, aber alle Teilnehmer müssen die Liste im Gleichschritt durchgehen. Wenn jemand jemals über die Position in der Liste verwirrt ist, verliert er wahrscheinlich seinen privaten Schlüssel.

Antworten (1)

Nonces dürfen nicht wiederverwendet werden! Insbesondere können in MuSig Nonces nicht für andere Kombinationen öffentlicher Schlüssel oder Nachrichten wiederverwendet werden (auch wenn alle ständig dieselben öffentlichen Nonces verwenden). Dies würde private Schlüssel preisgeben.

Sie teilen frische Nonces vorab, indem Sie mehrere Unterzeichnungsrunden parallel ausführen. Mit der Bibliothek, auf die Sie verlinken ( secp256k1-zkp ), ist dies sicher, solange Sie die Sitzungszustände im Speicher behalten und nicht kopieren. Das Serialisieren des Zustands und das Speichern auf einem dauerhaften Medium wird von secp256k1-zkp nicht unterstützt und ist schwer richtig zu machen, da Sie den privaten Schlüssel verlieren, wenn Sie versehentlich die falsche Nonce verwenden.

Eine einfache Möglichkeit, den Overhead der ersten beiden Interaktionsrunden zu eliminieren, besteht darin, die Nonce-Verpflichtung und Nonce an bereits vorhandene Nachrichten in Ihrem Protokoll anzuhängen. Auf diese Weise hätten Sie nur zwei parallele Signiersitzungen.

Es wird an deterministischen Nonces für MuSig geforscht, die Zero-Knowledge-Beweise dafür haben, dass die Nonce korrekt abgeleitet werden. Mit solchen Beweisen können Nonces auf Anfrage aus dem Unterzeichnersatz, Ihrem privaten Schlüssel und der Nachricht abgeleitet werden, und es gibt keinen Zustand, den Sie nachverfolgen müssen.

Auch keine Möglichkeit, so etwas wie eine hierarchische deterministische BIP-32-Schlüsselgenerierung zu verwenden, um öffentliche Nonces von einem vorab freigegebenen Stamm und einem vereinbarten Ableitungspfad zu erhalten?
Nein, Kreativität erschwert nur die Analyse, hilft Ihnen aber nicht dabei, grundlegende Probleme zu umgehen. MuSig hat aus gutem Grund drei Interaktionsrunden; Wenn es einen bekannten Weg gäbe, dies zu vermeiden, hätten wir keine Arbeit geschrieben, die drei Runden verwendet.
Danke für die Antworten - hoffentlich müssen Sie diese Reihe dummer Fragen zu SO für eine Weile nicht mehr beantworten. :-)
Wir sollten einen Wettpool für das Datum des ersten gemeldeten Geldverlusts aufgrund einer unsicheren Schwellenwert-Signatur-Implementierung einrichten.