Go-Ethereum

在知道 NONCE 值的情況下,NONCE 如何防止重放攻擊?

  • November 12, 2021

我有一個關於乙太坊網路中的 nonce 的問題。我知道隨機數有助於防止重放攻擊,但有一個特定的部分我不明白。

我已經在 Rinkeby 測試網上應用了我的乙太坊網路,其中除了 nonce 之外的所有數據都可供公眾使用。

如果攻擊者試圖用相同的 NONCE 值重放交易,很明顯交易將被拒絕為重複交易。

但是,如果攻擊者知道最後一個 Nonce 值,例如 48,並嘗試使用 NONCE +1 複製我的交易,即 49。在這種情況下會發生什麼,交易是否會成功,因為它有一個即使發送者是攻擊者,也有不同的隨機數值?

隨機數包含在使用帳戶所有者私鑰簽名的交易簽名中。

您需要知道私鑰和下一個 nonce 才能進行新的有效交易。

交易被 RLP 編碼並被簽名。事務包括“r,s,v”鍵。

如果攻擊者按順序更改隨機數,“r,s,v”值將無效,因此攻擊者必須用自己的私鑰對交易進行簽名。這將創建一個新的“r,s,v”。“r,s,v”基本上告訴我們誰是簽名者。

從“r,s,v”我們可以得到公鑰,從公鑰我們可以得到發件人的地址。這將表明交易實際上是從黑客的地址發送的,而不是實際使用者。

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