Ethereum-Wallet-Dapp

在使用 myetherwallet 生成離線交易雜湊時,開發者可以竊取我的私鑰嗎?

  • April 14, 2018

說得非常清楚,我過去曾多次使用 myetherwallet 離線發送 eth。我瀏覽了我保存的版本的程式碼,沒有發現惡意程式碼。對未來發展的假設,而不是對最近版本的指責(至少對於我使用的版本,v3.21.0)我什至開始修改他們的程式碼,以便我可以自動化我自己的方式將多個交易雜湊簽名到一個文件中。僅供參考,您可以通過 etherscan.io api 廣播簽名的交易雜湊,因此無需使用 MEW 提到的步驟 3。首先,我在一台從未見過網際網路的專用 PC 上離線執行與乙太坊相關的所有操作。移動數據的唯一方法是通過電腦之間的 USB 拇指驅動器。我花了很多時間一步一步地檢查安全漏洞。他們中的大多數我都可以控制,除了少數我懷疑:由於使用者需要提供私鑰來簽署發送乙太幣的交易,並且交易參數/參數/欄位是DATA(可選),它可以是智能合約的程式碼,也可以是“hello world”之類的簡訊。myetherwallet 開發人員可以用他們自己的密鑰加密您的私鑰並將其作為消息字元串放入此欄位,以便它成為廣播到網際網路的簽名雜湊的一部分(只有他們可以在區塊鏈上解密)?這個問題也適用於所有硬體錢包,因為它們使用類似的方式來簽署交易。我知道 MEW 是開源的,但我懷疑即使是最先進的安全專家每次離線使用 MEW 時都會閱讀原始碼。我想您可以離線保存一份已知良好的 MEW 副本並儘可能長時間地使用它(這就是我所做的)。但是沒有保證您保存的已知良好副本可以永遠使用。你每次更新都要讀原始碼嗎?可能不會,那麼你怎麼能相信 MEW / 任何硬體錢包供應商都不會試圖竊取你的私鑰呢?

我搞定了 https://www.npmjs.com/package/ethereumjs-tx https://npm.runkit.com/ethereumjs-tx serializedTx.toString(‘hex’) 會輸出原始交易。確保您下載所有內容並離線執行程式碼,因為您需要使用您的私鑰簽署交易。如果你只是想驗證 MEW 的原始交易,你可以生成一些隨機的公鑰/私鑰對來測試。然後整個操作可以線上執行,因為測試中沒有任何內容涉及金錢。

myetherwallet 開發人員可以用他們自己的密鑰加密您的私鑰並將其作為消息字元串放入此欄位,以便它成為廣播到網際網路的簽名雜湊的一部分(只有他們可以在區塊鏈上解密)?

是的。他們可以這樣做。為了檢查他們是否沒有這樣做,您可以學習閱讀乙太坊交易格式以及如何對欄位進行編碼以驗證事實並非如此,或者您可以使用諸如ethereum-tx-decoder 之類的工具在 npm 中。該工具將顯示已簽名交易的內容,您可以通過這種方式檢查交易中是否存在冗餘資訊。

如果您想為此服務使用線上工具,可以將 RunKit + npm 與 ethereum-tx-decoder 包一起使用。您可以在此處查看我的標準乙太坊交易範例,其中包含一個空數據欄位: https ://runkit.com/sword-smith/5ace0061aaa1c70012a8844b

如果您想了解乙太坊交易的編碼方式,請參閱乙太坊黃皮書中的第 4.3 節。

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