Transactions
為什麼之前比特幣交易中會出現重複的“R”值?
請解釋為什麼早些時候在比特幣交易中出現“R”的重複值。
例如,該交易有重複值“R”: https ://www.blockchain.com/btc/tx/19d66411a5aa716a04b37197c11c93c9446a54694a2d2302093d8b0a93ed5d83
如果您查看 RawTX: https ://btc.com/19d66411a5aa716a04b37197c11c93c9446a54694a2d2302093d8b0a93ed5d83.rawhex
重複值“R”:
R = cabc3692f1f7ba75a8572dc5d270b35bcc00650534f6e5ecd6338e55355454d5
這是什麼原因?解釋這個錯誤的原因?
該
R
值是該k
值(稱為隨機數)與 secp256k1 曲線的生成點之間的 EC 點相乘的結果。它實際上是 的公鑰k
。R
值可以重複的唯一方法是 ifk
也是相同的。鑑於這k
是一個 256 位數字並且應該是完全隨機選擇k
的,除非隨機數生成器被破壞,否則不應重複。考慮到它
k
是在簽名時生成的並且應該是隨機的,我們可以得出結論,選擇k
這些交易的人都有一個錯誤的隨機數生成器,它要麼輸出一個固定值,要麼輸出一個小值,這增加了k
重複的機率。發生這種情況沒有充分的理由,因此此錯誤來自錯誤的 RNG 或對 ECDSA 工作原理的完全誤解。
因為r只依賴於隨機數k(除了曲線參數),復用k,只要私鑰不同,就可以了。
進一步閱讀:https ://www.maximintegrated.com/en/app-notes/index.mvp/id/5767