Message-Signing

為什麼同一條消息的簽名在某些錢包中會發生變化,而不是全部?

  • September 3, 2017

使用比特幣和 Dash 中的“消息簽名”功能,它是靜態的,帶有相同的消息。使用相同的私鑰對相同的消息進行簽名將始終產生相同的簽名。

這種行為在 Peercoin 或比特幣的舊錢包中是不一樣的。在這些錢包中,即使兩條消息相等,簽名也會發生變化,對我來說,它裡面有一些“隨機數”。


例子:

資訊:xxx

地址:18ZbyqYYwgEmn5hVMtJpihPeYxsUpCLhr7

比特幣 0.8.5-beta:

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

比特幣 0.14.2:

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

在舊的Bitcoin-qt中,具有相同私鑰的相同消息會創建不同的簽名。但在新的Bitcoin-qt中,它會產生相同的簽名。


這種簽名方法有什麼區別?在第二種情況下,還有其他方法可以繼續從簽名中獲取 PK 嗎?有這個特定更改的名稱嗎?

您將看到 RFC6979 的效果。

生成簽名時,需要一些隨機性(稱為隨機數),因為同一消息/密鑰對有多個有效簽名。使用的算法 ECDSA 非常容易受到弱隨機性的影響。只知道一點點關於你的 nonce 資訊的攻擊者可以在觀察到許多簽名後了解你的私鑰。

然而,有人發現它實際上並不需要是隨機的。唯一需要的是攻擊者無法預測它。結果,創建了一個標準,該標準建議基本上使用您的私鑰的散列和消息作為您的 nonce。該標準稱為 RFC6979,Bitcoin Core 在 0.10.0 版本中轉而使用它。在該版本之前分叉的複製通常不使用它。

我不知道為什麼 pubkey 恢復在沒有確定性簽名的情況下不起作用。我認為它應該可以正常工作。

引用自:https://bitcoin.stackexchange.com/questions/59083