menu-icon
anue logo
澳洲房產鉅亨號鉅亨買幣
search icon

區塊鏈

如何通過物理手段獲得一組秘密安全的助記詞?

BlockBeats 律動財經 2023-04-26 21:00

cover image of news article
律動財經圖片

我最近一直想做一個關於如何獲得秘密安全「助記詞(mnemonics)」方面的攻略,正好趕上前幾天 Do Kwon 的段子來了,我覺得有必要給大家分享一下。

一共需要 5 步:

1. 找到助記詞列表

2. 找點骰子


3. 搖擲骰子-轉換進制

4. 找到校驗位

5. 備份

你隨身攜帶的硬體錢包真的安全麼?事實上:無論是熱錢包還是硬體錢包,你拿到的助記詞都是軟體通過隨機自動幫你生成的。

當然,我樂於給硬體錢包提供商們足夠的信任,但作為一個 crypto native guy,我覺得靠「信任」是不夠的。

為什麼這麼說呢?從一台硬體錢包從生產到你手中,經歷了太多的環節:開發者、硬體設計、組裝商、包裝商、快遞 A,海關,分揀,快遞 B… 等等。

最差情況是:自動生成的隨機算法,是破解版,或者乾脆帶有後門。

大家都聽說過「偽隨機」的概念,機器生成的隨機數,終究存在被人預測的可能性。比如你用了別人送你的(動過手腳的)硬體錢包,那理論上,你生成的 12 個單詞,別人也能生成相同的,那你硬體防護手段也就失去了意義。

所以,我們最好自己親自生成一套助記詞,而不是藉助程序自動生成。

硬體錢包無法訪問網路,這個環節是很難植入後門的,只要你能確保你的助記詞是真·隨機生成的,那麼硬體錢包的安全性將會補足最後一塊短板,即沒人可以知道你的助記詞。

那麼如何生成真·隨機的助記詞呢?很簡單:物理隨機。

接下來是一個教程,感興趣的可以轉推,等周末慢慢操作。

Step1 找到 2048 助記詞列表

首先科普一個概念:比特幣也好,以太坊也好,以及後面的所有鏈,用的都是同一套協議,即比特幣社區當年創造的 BIP-39。這裡有 2048 個單詞,而且為了避免手寫抄錯,BIP-39 還貼心去掉了很多看起來很相似的單詞。

比特幣倉庫中的 BIP39

https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt

你從任何一個搜尋引擎,都可以很輕鬆得獲取這個 2048 個單詞,當然,既然是鑽牛角尖,你可以尋找三個資訊源頭,並隨機抽樣調查,確認這些是真的 BIP39。

很多人不知道,其實 BIP-39 還支持中文;比如「的 一 是 在 不 了 有 和 人 這 中 大」理論也能生成出一個錢包地址來。當然,為了更好的兼容性,建議大家用默認的傳統單詞列表。

Step2 找點骰子

接下來,讓我們做一個思考實驗:如果想獲得真隨機,最簡單的辦法,就是我擁有一個「有 2048 面的骰子」,連續擲出 12 次(其實是 11 次,我們後面再聊),我們就能獲得一組完全隨機的真·助記詞。

但是,我相信各位誰也沒有這樣的骰子,那我們就要動一些腦筋了。

有一道經典的算法題,如何有一枚標準骰子,生成 1-7 隨機數。https://www.zhihu.com/question/62404167

我們只需要把這道題的要求從 7 變成 2048 即可。你現在去網購 11 枚骰子,或者硬幣(說實話現在內地硬幣真的越來越少用到了)。

Step3 擲骰子,轉換 2 進制

現在開始搖動骰子,骰子奇數記為 1,偶數記為 0(硬幣同理)。11 枚骰子的組合正好是:2*2*2*2*2*2*2*2*2*2*2=2048 種,所以說你可以用這些骰子生成一個 2 進制的數。

比如我搖出一個結果是 1 0 1 1 1 1 1 0 0 0 1。你把它變成十進制就是 1521。算法很簡單,用紙筆算就可以(不建議用電腦哦,私鑰不觸網),算法可參考:https://zhuanlan.zhihu.com/p/75291280

然後你去 BIP-39 word list 找到第 1521 個單詞,即 safe。

合計連續擲 11 次,你就得到一套完全隨機的單詞組,比如: safe hill also idle fade shock walnut cigar eye clean water。

Step4 窮舉法獲得最後一個檢驗單詞

為什麼不一口氣把 12 個單詞全部用骰子擲出來呢?

BIP-39 整個助記詞序列包含了一定程度的校驗功能,類似於身份證的尾號也有類似的設計。

因此,儘管第 12 個單詞本身並不是一個特殊的校驗位,但考慮到整套助記詞序列確實要符合一定的規則,因此在創建錢包時,如果輸入的助記詞不符合校驗規則,創建將會失敗。

再通俗一點說:並不是表上的任意 12 個單詞,都可以組成一套助記詞的,它們必須符合某種規則。你隨便找一套單詞,大機率會提示你:無效助記詞。

如果是程序自動生生成的助記詞,當然自動符合了規則。而我們是物理創建的,因此,需要再次動一些腦筋。

很簡單,既然前面 11 個都沒按照規則。那麼,我們讓第 12 個助記詞符合就行了。

那第 12 個單詞如何搞定呢?這裡就不掉書袋闡述原理了,直接採用「暴力窮舉」的思路(沒想到吧,自己創建助記詞還需要暴力破解)。

事實上,你在 2048 個助記詞列表隨便一個位置,往下嘗試 0-30 個,必定有符合規則的單詞。比如我說這組,我從第 230 個單詞開始試,233 brown 就可以,255 cabin 也可以。

當然,如果在硬體錢包上直接嘗試破解,是最好的,畢竟不觸網。但是缺點是會比較累,大部分硬體錢包按鈕很少…包括 ledger S 和 onekey 經典,至於 Do Kwon 的 trezor 我沒買過不清楚。

如果想偷懶,用一個退役的手機,下載一個 trustwallet 或者任何一個你熟悉的錢包。接着,斷網,輪流測試。直到試出符合規則的第 12 個單詞,默默記下,接着刪除這個 App,隨便複製一下什麼東西(清除剪貼板),重啟關機幾次。

這樣就大功告成了!你通過完全物理隨機的手段,在全程不聯網的情況下,獲得了一個絕對不可能有人猜到的一套助記詞,這時候你再將這套助記詞輸入到硬體錢包里,你的安全性就徹底拉滿了。

Step5 備份

當然,仍然建議做好至少 2 重備份。不要用鉛筆(容易褪色),不要存電腦或者手機里(那剛才咱們就白弄了),不要企圖在兩台電子設備里各存一半(很容易被暴力破解)。

當然,如果你足夠牛,你可以背下來(避免 Do Kwon 悲劇),但是強烈不推薦這樣做。這裡教大家一些背誦助記詞的秘訣,比如我這套:safe hill also idle fade shock walnut cigar eye clean water cabin。

你可以編一個故事:在一個(safe)安全的小山村裡,有一座(hill)山丘,山丘上的居民們總是(also)還能享受到寧靜的生活。村子裡有一個(idle)懶散的青年,他的衣服褪色(fade)得厲害…balabala

這樣,理論上記住了故事,就記住了助記詞。但是,還是強調下,人腦是個非常辣雞的生物儲存設備,普通人不推薦哦,Do Kwon 除外。

當然,如果你單純想做一個冷錢包當長期 holder,我覺得寫在紙上,把這個地址 copy 出來,,只轉入不轉出,那你甚至不需要一個硬體錢包了,這也是早年大家常提到的「紙錢包」。

最後,祝大家都能永遠保護好自己的錢包和資產。

原文連結

暢行幣圈交易全攻略,專家駐群實戰交流

▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!

前往鉅亨買幣找交易所優惠

文章標籤


Empty