Kann ein Nachrichten-Hash aus einer Signatur wiederhergestellt werden?

Eine Nachricht kann signiert und ihr signierender öffentlicher Schlüssel wiederhergestellt werden, wenn die Signatur und der Nachrichten-Hash gegeben sind ...

signature = web3.personal.sign(<account>,<message hash>)

pubKey = web3.personal.ecRecover(<message hash>, <signature>)

Gibt es eine Möglichkeit, den Nachrichten-Hash mit Signatur und öffentlichem Schlüssel wiederherzustellen?

Antworten (1)

Nein, Sie können den Nachrichten-Hash nicht aus einer ECDSA-Signatur wiederherstellen. Die Signatur wird durch Generieren berechnet, (x, y) = kGwobei kdie geheime Nonce Gist und der Generator für die Kurve ist. Dann r = xund s = k^(-1)(z + rd)wo zist die Nachricht und dist der private Schlüssel. Wir können den öffentlichen Schlüssel abrufen dG, indem wir das sehen r^(-1) (kGs - zG) = dG. Aber der Versuch , dasselbe zu tun , zwird immer nur dazu führen zG, da wir es nicht wissen k, nur kG. zDer gegebene Befund zGist genau der DLP auf der elliptischen Kurve und kann nicht berechnet werden.

Bearbeiten 2: Es sollte beachtet werden, dass es während der Berechnung des Nachrichten-Hashes nicht möglich ist, Vermutungen zu überprüfen, wenn die Nachricht vor dem Hashing nicht gesalzen wurde (was normalerweise nicht der Fall ist). Wenn die Nachricht also aus einer kleinen Menge von Möglichkeiten stammt, kann sie wiederhergestellt werden.

Bearbeiten: Links zum Weiterlesen

https://en.m.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm

https://crypto.stackexchange.com/questions/18105/how-does-recovering-the-public-key-from-an-ecdsa-signature-work

Kannst du dazu bitte einen Link bereitstellen? Ich habe hier eine Antwort gepostet, die dasselbe sagte, aber ohne diese Detailebene. Ich bin daran interessiert, mehr darüber zu lesen. Vielen Dank.