Transactions

使用真隨機數簽署交易的錢包

  • October 14, 2016

來自https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm

ECDSA 簽名可能洩漏私鑰的另一種方式是當“k”由有故障的隨機數生成器生成時。

如果一個錢包而不是強迫你盲目信任特定的 PRNG 會讓你增加“k”的隨機性,例如通過每次移動滑鼠(如在https://www.bitaddress.org中),那就太好了你即將進行交易。

是否有任何乙太坊或比特幣錢包允許這樣的事情?如果不是,這背後是否有技術原因?

比特幣世界曾經使用隨機 k 值,但在很大程度上認為它更好,因為你需要一種生成隨機數的方法,這很容易出現實現或平台錯誤,如 Android 隨機數生成變得很糟糕,或者拉來自 random.org 上的 HTTP URL 的數字,最終使用“HTTP 現在已禁用。請使用 HTTPS”之類的內容。

連結的 Wikipedia 頁面上也提到了解決方案,即使用確定性數字而不是隨機數字。該數字部分基於正在簽名的消息,因此您可以確信您不會為不同的消息確定性地生成兩次相同的值。這就是當今幾乎所有加密貨幣錢包軟體所做的事情,如果他們不這樣做,那就是一個危險信號。

請參閱此答案以了解有關此(基本上所有專業人士)的利弊的更多討論,包括 Pieter Wuille 的一些評論,他編寫了 libsecp256k1,這是用於比特幣和乙太坊的 ECDSA 庫。

請注意,儘管您可以在沒有隨機數的情況下進行簽名,但首先您仍然需要隨機數來生成密鑰,這可能是讓您四處移動滑鼠或其他任何東西的好地方。

引用自:https://ethereum.stackexchange.com/questions/9255