原創

基礎知識科普:你的加密錢包會不會被破解?

如果使用過加密錢包,那麼你肯定對助記詞不會陌生,助記詞是明文私鑰的另一種表現形式,最早是由 BIP39(誕生2013年、比特幣第 39 號改進提案)提案提出。在 BIP-39 標準中,每對密鑰都對應一組獨特的助記詞,其目的是為了幫助用戶記憶和抄寫複雜的私鑰。

而除了 BIP39(通過定義助記詞讓種子的備份更友好)概念外,其實還有 BIP32(為了避免管理一堆私鑰的麻煩提出的分層推導方案)、BIP44(給 BIP32 的分層路徑定義規範)等概念。比如我們熟悉的 MetaMask(小狐狸錢包)就是使用 BIP44 標準進行密鑰派生,使用戶能夠使用多賬戶錢包,且每個賬戶都有自己的一對獨立的公鑰(即你用於接收/轉賬的公開的錢包地址)和私鑰,但這些賬戶(子賬戶)又都是源自同一套助記詞。MetaMask 的多地址涉及到一個 HD(分層確定性)功能,這個我們後文會介紹。至於關於 BIP 方面的概念這裡我們不做過多的介紹,感興趣的小夥伴可以自行 Google 查找相關的資料。

接下來我們僅基於 BIP39 做些簡單的介紹。你在創建錢包時生成的 12 個助記詞(或24個)就等於對應錢包的所有資產,如果 12 個助記詞丟失,那麼也就意味著你加密錢包中的所有資產將不再是你自己的。換句話說就是,誰擁有助記詞,誰就等於擁有了該加密錢包的所有資產。

另外,因為目前的大部分主流錢包都是兼容 BIP 標準的,所以一套助記詞,幾乎可以導入任意的加密錢包進行使用,比如同一套助記詞你既可以導入 MetaMask 使用、也可以導入 Rabby Wallet 使用、也可以導入 OKX Web3 錢包使用……等等,總之,錢包僅僅是一個工具,它本身並不保存你的加密資產,你錢包中(嚴格來講是你的助記詞)的加密資產是保存在鏈上的。

但這裡需要提醒的一點是,目前網上有不少假冒的錢包要注意一下、同時也不要隨時使用那些不知名或者口碑不好的加密錢包,以免錢包開發人員監守自盜。

我們繼續說回助記詞的問題。加密錢包的助記詞是從 2048 個英語單詞的特定列表(BIP39 單詞表)中提取出來的,也就是說,任何工具或錢包 DApp 生成的助記詞,都包含在這 2048 個單詞裡面。如下圖所示。

而且,為了確保助記詞的唯一性,BIP39 單詞表裡面是不存在前 4 個字母一樣的情況的。舉個例子,apple 和 appl 因為前 4 位相同,所以這兩個詞就不被包含在這 2048 個單詞列表中。也就是說,如果你知道單詞的前 4 個字母,那麼通過 BIP39 單詞表就可以查找並知道對應單詞的剩餘部分,這也是為什麼,有時候你通過某些錢包應用導入助記詞的時候,輸入前 4 個字母后,軟件就會替你完成自動輸入。如下圖所示。

這時候,也許有些新夥伴就會產生一個疑問,既然助記詞是從固定的 2048 個單詞裡面隨機挑選出 12 個單詞組成的,那麼加密錢包豈不是很容易被破解嗎?或者隨便從裡面挑選出 12 個單詞試著導入一下,是不是就可以進入一個存放加密資產的錢包呢?

1.關於隨便輸入 12 個單詞就可以進入一個錢包的問題

助記詞的生成順序是按照一定算法而來的,所以你沒必要擔心別人隨便輸入 12 個單詞就可能會進入你的錢包。生成助記詞的算法的大致過程如下:

2.關於加密錢包是否會被破解的問題

從概率的角度來考慮這個問題的話,確實是有可能的。

但如果從實際操作的角度來考慮的話,這種概率發生的可能性是極低的。這裡我們可以做個計算列表先看一下(如下圖所示):

缺少 1 個單詞、破解的話有 2048 種可能性 (2048¹)

缺少 2 個單詞、有 4,194,304 種可能性 (2048²)

缺少 3 個單詞、有 8,589,934,592 種可能性 (2048³)

缺少 4 個單詞、有 17,592,186,044,416 種可能性 (2048⁴)

假如你想破解加密錢包,並且也購買了目前最強大的 CPU — — Intel Core i9–14900K,該 CPU 每秒可以處理多達 5760 億次的計算。如下圖所示(我直接問的ChatGPT)。

那麼理論上,藉助該 CPU 想要破解全部 12 個助記詞組合需要進行 9.45 x 10²⁷ 次計算。如下圖所示。

那麼對應需要計算多少年呢?我們可以繼續借助 ChatGPT 計算一下。如下圖所示。

通過上面的計算結果來看,如果想利用上面的 CPU 算力去完整破解 2048 個助記詞需要 299,700,000,000,000,000,000 年,這個看起來幾乎是不可能的。

但如果只是缺失了 12 個助記詞中的幾位,那麼破解是有可能的,具體破解計算需要付出的時間和成本,感興趣的小夥伴可以按照上面的方式去問一下 ChatGPT 即可。而且,目前其實也已經有一些可以用來破解或恢復助記詞的工具可以使用,比如話李話外之前文章中已經給大家介紹過的 Seed Saviour(適用於恢復/破解丟失 1 個單詞的情況)、Btcrecover(適用於恢復/破解丟失 2 個或以上單詞的情況)。如下圖所示。

綜合來看,目前加密錢包資產丟失的主要原因可能並不在於被破解的問題,而主要是因為錢包持有人使用或備份不當所造成的,比如將助記詞隨便存放到聯網的手機/電腦中或在線雲盤裡、隨便把助記詞發給別人、下載了假冒的錢包軟件、授權了有問題的釣魚網站、等等。

3.選擇12個助記詞還是24個助記詞?

12 個的助記詞使我們最常見的,其實還有 24 個的助記詞。從技術角度講,12 個單詞就相當於是 128 位、24 個單詞就相當於是 256 位。目前,我們常見的諸如 MetaMask(軟件錢包)、OneKey(硬件錢包)這樣的錢包默認生成的助記詞就是 12 個,而 Ledger(硬件錢包)、Trezor(硬件錢包)這樣的錢包則默認生成的助記詞是 24 個。

12 個助記詞和 24 個助記詞生成的錢包沒有什麼區別,它們的主要區別是安全級別方面的,也就是說,12 個助記詞可以提供 128 位的安全級別,而 24 個助記詞可以提供 256 位的安全級別。

但實際上,128 位的安全級別已經足夠高了,通過上面的計算我們也已經有所瞭解,所以,選擇12個助記詞還是24個助記詞,這個就看你自己的考慮和偏好吧,對於普通個人而言,完全沒必要為了這個原因去生成 24 位的助記詞,因為記憶和管理太多的單詞反而會比較困難和麻煩。

4.錢包主要分為哪幾類?

平時我們聽到比較多的說法就是所謂的各種熱錢包、冷錢包、硬件錢包、紙錢包等等,但如果按錢包自身的特性進行劃分的話,現在常見的錢包類型主要包括 EOA 錢包、MPC 錢包 和 AA 錢包幾種。其實這個話題話李話外之前的文章也有過相關的梳理,這裡我們可以簡單再來回顧一下:

1)EOA錢包

EOA錢包指助記詞錢包。提到助記詞,有些人可能也會提到私鑰的問題,簡單來說,私鑰就 = 助記詞,私鑰通常由一長串數字和字母組成,這個是不便於我們(人類)進行記憶的,所以後來使用助記詞來“替代”了私鑰,我們只要簡單記住或備份好12/24個英語單詞(助記詞)即可。

而且,助記詞和私鑰之間也是可以利用一些在線轉換工具進行互相轉換的,如下圖所示。但這裡需要提醒的是,為了安全起見,不要輕易使用一些不知名的工具和網站去生成助記詞或進行轉換操作,以免發生助記詞洩露的問題。

2)MPC錢包

MPC錢包指無私鑰錢包。即私鑰會進行分片處理,平臺會保存1份、用戶設備保存1份、用戶雲盤(比如iCloud)備份1份。

現在很多人在用的 Binance Web3 錢包、OKX Web3 錢包都是這種。當然,他們也同時支持你導入已有的助記詞創建EOA錢包。

3)AA錢包

AA錢包指智能合約錢包、也叫賬戶抽象(Account Abstract)錢包。這種錢包沒有私鑰,不能單獨創建,由代碼邏輯控制,且需要建立在現有錢包基礎上進行創建(生成)。也就是說,每個無私鑰錢包或私鑰錢包僅能創建一個 AA 智能合約賬戶,而助記詞錢包下的每個賬戶(比如同一套助記詞下的 MetaMask 可以生成 N 個不同的錢包賬戶地址),則可以創建對應的 AA 智能合約賬戶,如錢包 A — 賬戶 01,對應的就是錢包 A — Smart 01。

智能合約錢包一般會有一些特殊的功能,比如具有批量交易、代付 Gas、密鑰恢復等更多自定義和擴展功能,我們上面提到的 Binance Web3 錢包、OKX Web3 錢包同時也支持 AA 錢包的創建。

但這種錢包模式目前階段市場的採用率還相對比較低,很多鏈(包括對應的DApp)暫時還不支持。所以,有時候你在使用 AA 錢包進行 Swap 操作的時候可能會看到“你當前連接的免私鑰錢包暫不支持XXX鏈”這樣的提示。

5.多籤錢包方面的問題

除了上面提到的之外,涉及到加密錢包的時候,你也許經常會聽到多重簽名(Multi-Signature)的這個概念。多重簽名主要是指通過多個不同的私鑰來授權一筆交易,而不僅僅是單個私鑰,這個主要是為了增加了交易的安全性。

一般情況下,多重簽名主要涉及到幾個問題:

1)多個私鑰的問題

即多籤錢包通常包含多個私鑰,每個私鑰都與一個特定的授權者相關聯。

2)簽名閾值的問題

即在多籤錢包中,可以定義一個簽名閾值,表示必須有多少個授權者的簽名才能執行交易。它的工作機制涉及多個密鑰和 M-of-N 簽名的概念。在 M-of-N 設置中,只有 N 個密鑰中的 M 個對交易進行了簽名,才能授權該交易。例如,在 2-of-3 多籤錢包中,存在三個私鑰,至少需要兩個私鑰(授權者)才能執行交易。

3)多籤交易的問題

即要執行一筆交易,必須滿足簽名閾值,即得到足夠數量的授權者簽名,以便交易被廣播並確認。

但在具體的應用方面,多籤這種方式主要是企業/機構方面可能會使用的比較多,個人當然也可以用,比如你可以把一個私鑰保存在自己的手機裡,另一個私鑰保存在自己的電腦裡,交易的時候需要兩個私鑰一起使用才能轉移資金。

而關於多籤錢包的創建和使用例子,話李話外之前的文章已經有過相關的介紹,這裡我們就不再贅述了,感興趣的小夥伴可以回看歷史文章。如下圖所示。

6.比特幣錢包方面的問題

這方面的問題我之前在群裡分享過,這裡我們簡單再做個回顧:

1)從編碼角度來講

比特幣錢包地址的私鑰(注意是私鑰)可以分為多種格式,比如 WIF、WIFC、HEX,、B64,、MINI、BIP38 等等,也就是一套私鑰可以基於不同的編碼方式生成(不同格式私鑰也可以相互進行編碼轉換的)。這裡就以 WIF 和 WIFC 為例:

WIF 是 Wallet Import Format 的縮寫,是私鑰的一種編碼方式。該方式又可以分為壓縮和非壓縮兩種形式,壓縮即 WIF compressed(簡寫為WIFC),非壓縮 WIF uncompressed(簡寫為WIF)。

他們的區別也只是技術角度的,比如:

WIF 編碼指的是,給私鑰前面加上 0x80 這個前綴,再對這個新生成的值繼續做兩次 sha256 的操作,再將這個計算結果的前四個 4 節作為驗證位,再做一個 base58 編碼的結果,最後生成的是以 5 開頭的私鑰地址。

WIFC 的計算與 WIF 相似,但又有些區別,不僅要加 0x80 的前綴,還需要在結尾增加一個壓縮標誌後綴,即 0x01,剩下的結果就與之前沒有區別了,然後做兩次 sha256,再取前四個字節為驗證位,最後生成的是以以 K 或 L 開頭的私鑰地址。

那麼對應上面的壓縮及非壓縮私鑰,比特幣的地址就會分為 Bitcoin Address Uncompressed(比特幣非壓縮地址)和 Bitcoin Address Compressed(比特幣壓縮地址)。

也就是說,這樣以來,一個比特幣就對應了兩個地址(即Compressed/Uncompressed 地址),但這兩個地址都是“合法”的,且使用上也沒有什麼區別。而 Compressed 地址其實是我們最常見和使用的地址(1開頭的比特幣錢包地址),目前絕大部分的錢包工具默認生成的應該都是這個地址。

總之,不管基於什麼工具生成的錢包地址,生成出來的錢包地址和私鑰肯定是一一對應關係的,記錄好這兩個東西即可,日常的使用過程不用糾結什麼壓縮不壓縮的問題,也不用糾結裡面的技術問題,只要記住這一點就行:一旦你的私鑰洩露、那麼你的所有資產就可能會丟失。

2)從地址格式來講

常規來講,比特幣錢包地址主要分為四種格式,分別是:

普通地址(即 P2PKH 地址、Pay-to-Public-Key-Hash):是最早出現的比特幣地址格式,這種地址以“1”開頭,由 26 到 35 個字符組成,包括數字和大寫字母。

原生的隔離見證地址(即 Native Segwit Address、也叫 P2WPKH 地址):這是一種新的地址格式,以“bc1q”或“tb1”開頭,由 41 到 62 個字符組成,包括數字和小寫字母。

兼容的隔離見證地址(即 Nested Segwit Address、也叫 P2SH-P2WPKH 地址):這是一種混合了傳統普通地址和原生隔離見證地址的新地址格式。它以“3”開頭,由 26 到 35 個字符組成,包括數字和大小寫字母。

Taproot 地址:Taproot 是比特幣協議的一個重要升級(於 2021 年 11 月被激活),旨在提高比特幣的隱私性、安全性和可擴展性。Taproot 地址通常以“bc1p”開頭。

簡單來說,以上這四種地址都是可以從同一套助記詞推導生成。目前 SegWit/Taproot 地址用的相對比較多點,也是不少主流的錢包默認的地址格式(有些錢包則可能只支持4種地址中的1–2種),因為 bc1 地址包括了更多的優點,比如更高的容量和更低的交易費用。而雖然比特幣有不同的地址,但各地址之間是可以互相進行轉賬的,因為它們都使用相同的基礎加密技術和底層協議來進行交易。不同地址唯一的區別就是,Gas 費方面會有所差異,用 SegWit 地址相對會便宜一點。至於 SegWit 和 Taproot 的區別,前者主要是簡化交易數據,後者主要是提升隱私和效率。

8.HD 錢包方面的問題

HD錢包即分層確定性(Hierarchical Deterministic)錢包,這個概念大家在一些錢包應用裡面應該會見到過,簡單來講,我們可以把 HD 看做是一種錢包結構,它使用分層結構來管理和生成密鑰對。基於這種框架,用戶可以方便地通過同一套助記詞創建幾乎無限多個地址(子地址),而不需要備份每個地址的私鑰。

這種錢包模式的優點在於我們只需要一組助記詞,就可以生成出任意數量的新錢包地址,不同的地址你可以用於不同的用途,比如有些地址用戶擼空投、有些用於轉賬、有些用於測試等等,這樣就可以起到更好的匿名性和隱私性。但缺點也顯而易見,一旦你的助記詞丟失或洩露了,那麼對應的所有地址下的資產也會丟失。

所以,要方便、還是要安全,這個自己來決定即可。

本期內容我們就分享到這裡,這也是話李話外更新的第 490 篇文章。正文內容中涉及到的數據引用、圖片來源等附加信息詳見話李話外 Notion 版對應日期的文章備份。

聲明:以上內容只是個人角度觀點及分析,僅作為學習記錄和交流之用,不構成任何投資建議。加密領域為高風險市場,除了各種形式的黑客攻擊、詐騙和殺豬盤外,很多項目也有隨時歸零的風險,請理性看待,樹立正確投資理念,提高風險防範意識,做到不懂勿碰。

免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
6
收藏
1
評論