Web3js
web3.eth.accounts.sign ‘K’ 代
我一直在尋找實際的實現,
web3.eth.accounts.sign
以了解隨機變數 k 是如何生成的。但我找不到該方法的實現web3.eth.accounts.sign
。我是 JS 新手,請多多包涵 :D任何的想法?
我不認為乙太坊消息簽名存在隨機變數,因為它必須是確定性的。
乙太坊消息私鑰簽名的實現範例,請參見 eth-lib 庫源碼。
任何在 ECC 上有效的隨機私鑰(32 字節)(密鑰 < 曲線順序)都應該是有效的。但是,隨機密鑰必須 是“加密隨機的”,程式語言的預設隨機生成器可能還不夠。
當 k 不夠隨機,或者值不是秘密時,可以使用兩個不同的簽名來計算私鑰(“故障攻擊”)
可以在此處找到用於簽名的虛擬碼。如果
AWS KMS
用於簽署交易,它使用非確定性簽名。您還可以使簽名輸出具有確定性:
這些確定性簽名使用 RFC 6979 標準,該標準描述瞭如何根據私鑰和消息(或雜湊)為 k 生成安全值。
關於確定性/非確定性 ECDSA 的討論部落格。