從《捕風追影》說起:決定上萬億加密資產(chǎn)的 2048 個單詞

想告訴「此沙」:你離擁有上百億港幣,頂多也就 2048 次嘗試。

撰文:Tyler

最近看了成龍大哥的口碑新作《捕風追影》,里面有個橋段挺有意思——上百億港幣的加密資產(chǎn),被鎖在一個 12 個單詞的助記詞錢包里,結(jié)局只剩最后一個單詞未知。

我看完去試了下,結(jié)果發(fā)現(xiàn)第 10 位和第 12 位并不在標準助記詞庫里,顯然編劇是故意這么寫,避免有人照著劇情復原錢包搞詐騙,畢竟鏈上類似的騙局并不罕見:

騙子會故意泄露一個「帶余額」的錢包地址(典型在 Tron 鏈上,利用 Owner 機制),誘導大家轉(zhuǎn)入 Gas,守株待兔,資金一旦轉(zhuǎn)入就再也拿不回來了。

但這里有趣的一點在于,電影里說只差最后一個單詞不知道??稍谡鎸嵤澜缋?,助記詞遵循 BIP39 標準,一共就 2048 個單詞,也就是說,暴力破解最后一位,頂多也就 2048 種可能,如果再縮小范圍,比如電影中已知開頭字母是「es」,那可能性更少,一分鐘就能試完。

不過,電影之外更值得重溫的問題是:助記詞、私鑰、公鑰,到底是什么關(guān)系?為什么丟了助記詞就等于丟了所有資產(chǎn)?

一、助記詞:私鑰:公鑰/地址 = 「鑰匙串」:「鑰匙」:「門牌號」

助記詞是遵循 BIP39 標準的備份方式,從 2048 個英文單詞的詞庫中,通過算法隨機選取并組合而成的 12、18 或 24 個單詞。

這組助記詞經(jīng)過 PBKDF2 算法處理后,會生成一個種子(Seed),再由這個 Seed 按照 BIP32/BIP44 等路徑標準,派生出一系列私鑰,進而對應一系列的公鑰/地址。

一組助記詞 → 生成一系列私鑰 → 生成一系列公鑰 → 對應一系列地址

換句話說:

助記詞 = 鑰匙串,和私鑰往往是一對多的關(guān)系,理論上一組助記詞可以衍生出成千上萬個私鑰;

私鑰 = 鑰匙,每一把私鑰對應一個地址的使用權(quán);

公鑰/地址 = 門牌號,可以公開,別人能用它給你轉(zhuǎn)賬;

所以可以將助記詞視為你的「鑰匙串」,而每個私鑰就像其中一把能開門的鑰匙,用來簽名、證明你對某個錢包地址的控制權(quán)——當你發(fā)起一筆交易時,就是用私鑰來簽名,告訴全網(wǎng):「這筆轉(zhuǎn)賬是我授權(quán)的」。

二、那能不能自己挑選助記詞?

那是不是有朋友就會覺得:我能不能自己來湊 12 個單詞?比如生日、最喜歡的英文單詞、偶像名字,這樣更有個性。

答案是:可以,但極度危險。

因為計算機生成的隨機數(shù)是真隨機,而人類挑單詞時幾乎都帶有模式(常見詞、習慣用詞、順序偏好),這會大幅縮小搜索空間,讓你的助記詞更容易被猜中。

之前就出過「偽隨機錢包」的安全事件,有些錢包生成助記詞時使用了偽隨機算法,結(jié)果熵遠遠不足,被黑客暴力遍歷直接窮舉破解——2015 年黑客組織 Blockchain Bandit 就利用故障的隨機數(shù)生成器和程序碼漏洞,系統(tǒng)性地搜尋弱安全私鑰,成功掃出了 70 多萬個脆弱錢包地址,并盜走了其中超過 5 萬枚 ETH。

當然有些極客會用骰子(得確保骰子也足夠均勻)搖隨機數(shù),再映射到 BIP39 單詞庫,這才算手工安全,但對大多數(shù)人來說,沒必要搞這么復雜,反而容易出錯。

三、能不能暴力撞出 V 神或其他巨鯨的錢包?

這個問題我當年也腦補過,幻想自己哪天生成了一個錢包地址,結(jié)果一看里邊有上百萬枚 ETH,瞬間財富自由,直接偷家某位巨鯨。

不得不說,光想就挺誘人。但現(xiàn)實是:概率幾乎等于零。

為什么?因為助記詞的可能組合數(shù)量已經(jīng)夸張到超出人類想象:

12 個單詞:有效組合數(shù)約 212? ≈ 3.4 × 103?

24 個單詞:有效組合數(shù)約 22?? ≈ 1.16 × 10??

這個數(shù)量級是什么概念?

我們都知道地球上的沙子多到數(shù)不清,但科學家們估算過一個近似值,假設(shè)地球上的所有沙灘、沙漠加起來,沙子的總數(shù)大約是 7.5×101? 粒,這也意味著:

12 個單詞的有效組合數(shù),相當于地球全部沙子總數(shù)的 4.5 × 101? 倍

24 個單詞的有效組合數(shù),更是地球上沙子總數(shù)的 1.5 × 10?? 倍

換句話說,就好像地球上每一粒沙子,都變成一顆「新地球」,每個新地球里還有沙灘和沙子,然后你要在所有這些沙子里,一次性隨機找到你事先標記好的那一粒。

這已經(jīng)遠遠超出人類可以想象的規(guī)模。

所以,暴力破解錢包的概率,不是「極低」,而是在已知的物理學和計算能力下,等同于零,想靠「撞庫」發(fā)財,還不如去買彩票,中獎概率高得多。

回到電影的那個設(shè)定:如果真有人只差一個助記詞單詞,那確實有可能通過暴力遍歷去嘗試。

最后,關(guān)于錢包/助記詞/私鑰的幾點安全小貼士:

優(yōu)先使用經(jīng)過時間和市場檢驗、開源代碼審計的非托管錢包,如 MetaMask、Trust Wallet、SafePal 等,有條件的直接使用硬件錢包;

助記詞和私鑰,永遠不要截圖、不要存網(wǎng)盤、不要復制粘貼、不要發(fā)給別人;

最好紙筆抄寫(可以考慮使用不銹鋼助記詞板,防潮、防火、防腐蝕),放在安全的地方,且 2~3 處多點備份;

公鑰/地址可以放心公開,它就是你的門牌號,但要注意識別釣魚鏈接;

建議用干凈的設(shè)備管理錢包,不要隨便裝來歷不明的插件或 App;

記住一句話:任何人向你要助記詞,100% 是騙子。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容