Security
如何從 tx 簽名(r,s)中恢復公共並驗證簽名?
我的第一個問題是如何僅使用 r,s 和橢圓曲線參數以及地址(這是公鑰的散列,因此無法從地址中檢索公鑰)來驗證簽名?
下一個問題是,為什麼乙太坊(我認為也是比特幣)使用散列公鑰作為地址,而不是直接使用公鑰作為地址?
也許這個答案可以幫助你 - https://ethereum.stackexchange.com/a/33346/16729
乙太坊安全模型依賴橢圓曲線加密(ECC)來簽署和驗證交易。在 ECC 中,公鑰和私鑰用於簽名和驗證。它沒有地址的概念。簽署和驗證交易時,您不需要地址。最初的比特幣論文根本沒有提到地址。它們稍後出現是為了使它們更容易記住(壓縮的公鑰是 32 字節,地址是 20 字節)。現在您可以從使用者互動中完全隱藏公鑰,並且只有私鑰和地址。但是內部的乙太坊一直在使用它們來驗證交易。
- 在安全方面:
所有密碼方案中的公鑰都與私鑰相關。阻止使用者從您的公鑰計算您的私鑰的唯一安全測量****是假設離散對數“無法解決”
我們都知道,量子密碼學每天都在接近,而這帶來的問題是,如果您正在執行量子 PC/CPU,那麼求解離散對數是“容易的”。所以有了Pk,就有可能得到Sk(私鑰)。
為了預料到這一點,如果你只能訪問 Pk 的散列,你不知道它,所以即使使用量子加密(目前看來,量子將無法輕易傳遞散列函式),你是安全的。
- 在天然氣支出方面。
公鑰的長度比它的雜湊值大得多,它總是一個 256 位變數。因此,如果您計算一天完成的所有交易,您將節省大量交易燃料,因為公鑰將使礦工和節點處理/儲存更多數據,因為它們比雜湊值大得多。
如果您需要,我可以擴展更多解釋,但本質上就是這樣。
按照您對評論的要求進行編輯 ,在這裡您有一個主題,解釋瞭如何從其雜湊中檢索 Pk。
希望能幫助到你。