由 0 開始用 Ethereum
提防 Blockchain 的 Private key 爆破攻擊之建議

你即將收到巨額加密貨幣,如何部署?

先假設你已懂得 Wallet 和 Address 的基本知識,接下來就應該考慮如何保護它。

當你作為守方,你要考慮的是攻方會如何令你損失資產。
當你思考攻方如何令守方損失時,最好的方法就是考慮守方如何保護資產。
(這就是「道高一尺,魔高一丈」)

發問:一般人(守方)是如何建立 Address?
答案:先用 Wallet 建立助記詞,再由 Wallet 轉換成 Address。

有漏洞嗎?有。

如果守方用的助記詞不多於21字,能提供的組合數量會少於 Private key。(即使是最熱門的Metamask wallet,早期都只是預設用12字助記詞。)
一般人認為每條助記詞只能產生一條地址。對有技術的攻方而言,這代表大多數人不懂得改變 Derivation Path。
結論:能大幅減少需要破解的組合,最終能破解的 Address 數量亦不會減少太多。

因此作為守方,我們最起碼應該使用不少於24字的助記詞。

以下是一些支援守方保護區塊鏈資產的建議及其原因。

基礎
建議 原因
必須備份助記詞。 如果你沒有備份助記詞,一旦你的 wallet 故障就會失去其控制權及裏面的區塊鏈資產。
助記詞之載體不應連上網絡。 一般人都是用明文備份助記詞,如果該載體連上網絡,而且被駭客入侵,攻擊者就有能力輕易盜取你的區塊鏈資產。

新手
建議 原因
承上所有。
使用最少24字的助記詞。 Private key 能夠提供 256-bit 的安全性,如果要以助記詞提供同級之安全性就需要使用24字助記詞。
使用硬件錢包。 相較軟件錢包,硬件錢包之助記詞在任何時間都不連網,大大減低區塊鏈資產被盜的機會。

中級
建議 原因
承上所有。
備份 Derivation Path。 一般加密貨幣用戶都不知道單憑助記詞並不能做到備份 Wallet 之效果,到現在都未有災情純粹是因為大部分 Wallet 都使用預設值,但預設值會因應情況改變。
不要將所有區塊鏈資產都放到同一 Address。 任何 Address 都可能已被破解,也可能在任何時候被破解。這樣做能夠減少每次不幸被破解時的損失。
使用多簽錢包。 EVM鏈的多簽錢包屬於智能合約。如果攻擊者破解出的 Address 屬於智能合約,就無法控制該 Wallet。
多簽錢包的最少有一個簽名者屬於硬件錢包。 雖然多簽錢包比較安全,但同時亦比較麻煩。保留最少一個簽名者屬硬件錢包是為了在安全和方便取得平衡。

高手
建議 原因
承上所有。
多簽錢包的最少一個簽名者之任何資訊皆不公開,包括助記詞、Private key 及 Address 都不可公開,不能用作收發加密貨幣,亦不能用作任何鏈上操作。但可以用作簽名。 任何曾經收發區塊鏈資產的 Address 都可能成為攻擊者的目標,因此請不要暴露所有 Address 到區塊鏈。
適用於Bitcoin,不適用於EVM
每條 Address 都只使用一次,只要該 Address 曾經發起轉帳或任何鏈上操作就必須廢棄。
基於 Bitcoin 的機制,任何 Address 發起鏈上操作時都會暴露其 Public key,暴露的 Public key 可以縮減攻擊者破解該 Address 之時間。

超高手
建議 原因
承上所有。
不要使用助記詞,改用 Private key。 Wallet 破解當中有2大流派:助記詞破解及 Private key 破解。如果攻擊者是破解助記詞就會有部份 Private key 位於盲區而避過一劫。