Ein paar Fragen zu Schnorr sig

Im BIP von Pieter Wuille wird gesagt, dass die Schlüsselpräfixversion der Schnorr-Signatur benötigt wird, wenn das Schema in Kombination mit der ungehärteten Ableitung von BIP32 verwendet wird. Könnte jemand ein Beispiel geben, das diese Notwendigkeit zeigt? Ich konnte mir keine selbst ausdenken.

Immer im BIP, wenn wir zur Batch-Validierung kommen, können wir sehen, dass die Generierung von Zufallszahlen erforderlich ist. Könnte noch einmal jemand ein Beispiel geben, das zeigt, dass die einfachere Version unsicher ist? Ich habe herausgefunden, dass der Grund der sogenannte "Stornierungsangriff" ist. Ich würde gerne herausfinden, wie es ausgenutzt werden kann.

Danke im Voraus für eure Antworten!

Antworten (1)

Eine Schnorr-Signatur ohne Schlüsselpräfix ist ein Tupel {Pubkey (P), Nachricht (m), R, s}, wobei die Gleichung R == sG + H(R||m)P gilt.

Nehmen wir nun an, Sie haben die Pubkeys P und P2, deren diskrete Protokolle sich um c unterscheiden, was mir bekannt ist, wie es beim nicht gehärteten BIP 32 der Fall ist, wenn ich den erweiterten Pubkey kenne (P2 == P + cG). Wenn ich eine Signatur von Pubkey P von Nachricht m kenne, kann ich sie verwenden, um eine Signatur von m von Pubkey P2 zu fälschen: {P2, m, R, s - H(R||m)c}, denn wenn Sie die Beziehung für P2 und drücken Sie es dann in Bezug auf die Beziehung für die erste Signatur aus, das ist, was Sie bekommen.

Zum Stapeln: Die Aufgabe dort ist, dass wir zwei bis n Gleichungen der Form R_n = s_nG + h_nP_n haben, wir könnten sie naiv stapelweise verifizieren, indem wir sie zuerst umschreiben als 0 = sum(s_n)G + sum(h_nP_n) - sum(R_n) und Verwenden Sie dann einen effizienten Multiexp, um die große Produktsumme zu berechnen. Wenn wir z. B. {P1, m1, R1, s1} halten wollen, können wir dem Stapel {-P1, m1, R1, -s1} hinzufügen, sodass sich die Fehler jetzt aufheben.

Um dies zu lösen, sollte der Verifizierer die Gleichungen delinearisieren, indem er jede mit einem unbekannten Wert des Angreifers multipliziert, wodurch er nicht in der Lage ist, mit besseren Chancen als dem Zufall zu stornieren. Dies kann getan werden, ohne die Effizienz stark zu beeinträchtigen, indem es in die Skalare im Multiexp eingesetzt wird.

Ein noch einfacheres Beispiel: Betrachten Sie die Batch-Verifizierung, bei der der Angreifer alle gültigen Signaturen kennt. Der Angreifer kann einfach die s-Werte zwischen den Signaturen im Stapel mischen. Ohne Delinearisierung würde der Batch offensichtlich trotzdem passieren (da die naive Summe sich nicht um die Reihenfolge der s-Werte kümmert), aber die Signaturen wären alle ungültig.