Warum ändert sich die Signatur derselben Nachricht in einigen Wallets, aber nicht in allen?

Bei Verwendung der Funktion „Nachrichtensignierung“ in Bitcoin und Dash ist es statisch mit derselben Nachricht. Das Signieren derselben Nachricht mit demselben privaten Schlüssel führt immer zu derselben Signatur.

Dieses Verhalten ist in Peercoin oder in der alten Brieftasche von Bitcoin nicht dasselbe. In diesen Wallets ändert sich die Signatur auch wenn beide Nachrichten gleich sind, für mich hat es etwas "Nonce" drin.


Beispiel:

Nachricht:xxx

Adresse:18ZbyqYYwgEmn5hVMtJpihPeYxsUpCLhr7

Bitcoin 0.8.5 Beta:

INbwudFmql3iOH6c1UWylOpgLu5zrrqGrcFCanirz+Zb/nmJkcDXSkug5J0s3Yawb1/GzZKqXVjRHRNVSenRdMI=
II7W5su7EBQ4u1ppSKMVcmy8etnJsSOsvQHZ3j+moJs2P/vjwpqMlZkvOQ+W5odCdmwOz/5wK2T0RDV6aiqaEQs=
H7XNf5of1kmpwvcvLqVKIYc3TY5eN3kIrZWJPlDYhKVZekZ7Xk2qnJWjNDdsODkYtLEYn5p6fJfIC9LR+/rQky0=

Bitcoin 0.14.2:

IBl6SRpJwzGjXTDbO/IuUcHzlbxqbzN+MmeGRLRIAcPjKpQ9XgQG+gBOzo5PcgtBbtDqXhJIKnbUH9vEcQ5CNlM=
IBl6SRpJwzGjXTDbO/IuUcHzlbxqbzN+MmeGRLRIAcPjKpQ9XgQG+gBOzo5PcgtBbtDqXhJIKnbUH9vEcQ5CNlM=
IBl6SRpJwzGjXTDbO/IuUcHzlbxqbzN+MmeGRLRIAcPjKpQ9XgQG+gBOzo5PcgtBbtDqXhJIKnbUH9vEcQ5CNlM=

Im alten Bitcoin-qt erzeugt die gleiche Nachricht mit dem gleichen privaten Schlüssel unterschiedliche Signaturen. Aber im neuen Bitcoin-qt ergibt sich die gleiche Signatur.


Was ist der Unterschied zwischen dieser Signaturmethode? Haben Sie eine Alternative, um im zweiten Fall weiterhin die PK von einer Signatur zu erhalten? Haben Sie den Namen dieser spezifischen Änderung?

Antworten (1)

Sie sehen die Auswirkung von RFC6979.

Beim Generieren einer Signatur ist eine gewisse Zufälligkeit erforderlich (als Nonce bezeichnet), da es mehrere gültige Signaturen für dasselbe Nachrichten-/Schlüsselpaar gibt. Der verwendete Algorithmus ECDSA ist außerordentlich anfällig für schwache Zufälligkeit. Ein Angreifer, der nur wenige Informationen über Ihre Nonces kennt, kann Ihren privaten Schlüssel erfahren, nachdem er viele Signaturen beobachtet hat.

Jemand hat jedoch herausgefunden, dass es nicht wirklich zufällig sein muss. Voraussetzung ist lediglich, dass es für den Angreifer unvorhersehbar ist. Als Ergebnis wurde ein Standard geschaffen, der vorschlug, grundsätzlich den Hash Ihres privaten Schlüssels und die Nachricht als Ihre Nonce zu verwenden. Dieser Standard heißt RFC6979 und Bitcoin Core hat ihn in Version 0.10.0 verwendet. Klone, die vor dieser Version abgespalten wurden, verwenden sie normalerweise nicht.

Ich habe keine Ahnung, warum die Pubkey-Wiederherstellung ohne deterministische Signaturen nicht funktioniert. Ich denke, es sollte gut funktionieren.

Wenn die Signatur für alle Nachrichten gleich bleibt, was hindert jemanden daran, Geld von der Adresse auszugeben (wenn das Wechselgeld an denselben Ort zurückgeht)? Danke
Die Signatur ist definitiv nicht für alle Nachrichten gleich. Was lässt Sie darauf schließen?
>Das Signieren derselben Nachricht mit demselben privaten Schlüssel führt immer zu derselben Signatur. Mit allen meinte ich alle gleichen Nachrichten (die gleiche Menge, die von der gleichen Adresse an die gleiche Adresse geht). Vielleicht habe ich die Frage falsch verstanden. Könnten Sie es bitte klarstellen?
Wenn Sie dieselbe Nachricht mehrmals mit demselben Schlüssel signieren, erhalten Sie jedes Mal dieselbe Signatur, ja. Unterschiedliche Nachrichten führen zu unterschiedlichen Signaturen.
Jede Transaktion ist eine andere Nachricht, auch wenn sie den gleichen Betrag überweist.
Wird Nonce (Entropie) auch zu Nachrichten hinzugefügt?
Ja, ECDSA hat eine Nonce. Wenn die Nonce unsicher ist, ist die Signatur unsicher. In dieser Antwort geht es um die Tatsache, dass die Nonce deterministisch gemacht werden kann (jedes Mal dieselbe Nonce für dieselbe Nachricht und denselben Schlüssel auswählen).