Message-Signing
為什麼同一條消息的簽名在某些錢包中會發生變化,而不是全部?
使用比特幣和 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 恢復在沒有確定性簽名的情況下不起作用。我認為它應該可以正常工作。