在比特幣發展初期, 錢包是一種非確定性錢包, 裡面儲存了隨機生成的多個私鑰. 這些私鑰之間完全獨立, 因此要想備份這些私鑰, 就必須儲存所有的私鑰副本. 如果丟失了某個私鑰, 其對應的比特幣也無法再找回.
因此出現了確定性錢包, 簡單說就是用隨機數發生器生成一個隨機數種子(Seed), 然後用一些不可逆的演算法, 生成主金鑰, 再生成無數的子金鑰. 不同的交易使用不同的子金鑰, 而需要備份的只有隨機數種子.
那如何備份這一個隨機數種子呢? 我們先看看它張什麼樣, 某個隨機數種子的16進製表示: 0C1E24E5917779D297E14D45F14E1A1A, 寫下來(看暈了怎麼辦?)存保險櫃安全嗎?
因此誕生了BIP-39, 定義了隨機數種子和容易書寫記錄的助記詞序列間的轉換的方法, 並引入了Salt(一個密碼), 參與到運算當中. 要想恢復隨機數種子, 需要助記詞序列和Salt兩個東西, 你可以將助記詞鎖保險櫃, Salt儲存在自己腦袋中(當然為了防止你突發意外, 建議將Salt儲存在其他安全的地方).
上面所述是金鑰備份方面的安全, 我們再看下BIP-39定義的隨機數種子和助記詞序列間的轉換演算法有多安全
從上圖我們看到, 從助記詞到隨機數種子, 經過了2048輪SHA512運算, 這是一種極其有效的保護方法. 因為SHA512是一種不可逆的HASH演算法, 經過了2048輪, 要想破解, 幾乎是不可能的.
目前主流的錢包, 不管是硬體錢包, 比如: Keepkey,Ledger和Trezor, 還是軟體錢包, 比如: Breadwallet,Copay,Multibit HD和Mycelium都支援助記詞.
在比特幣發展初期, 錢包是一種非確定性錢包, 裡面儲存了隨機生成的多個私鑰. 這些私鑰之間完全獨立, 因此要想備份這些私鑰, 就必須儲存所有的私鑰副本. 如果丟失了某個私鑰, 其對應的比特幣也無法再找回.
因此出現了確定性錢包, 簡單說就是用隨機數發生器生成一個隨機數種子(Seed), 然後用一些不可逆的演算法, 生成主金鑰, 再生成無數的子金鑰. 不同的交易使用不同的子金鑰, 而需要備份的只有隨機數種子.
那如何備份這一個隨機數種子呢? 我們先看看它張什麼樣, 某個隨機數種子的16進製表示: 0C1E24E5917779D297E14D45F14E1A1A, 寫下來(看暈了怎麼辦?)存保險櫃安全嗎?
因此誕生了BIP-39, 定義了隨機數種子和容易書寫記錄的助記詞序列間的轉換的方法, 並引入了Salt(一個密碼), 參與到運算當中. 要想恢復隨機數種子, 需要助記詞序列和Salt兩個東西, 你可以將助記詞鎖保險櫃, Salt儲存在自己腦袋中(當然為了防止你突發意外, 建議將Salt儲存在其他安全的地方).
上面所述是金鑰備份方面的安全, 我們再看下BIP-39定義的隨機數種子和助記詞序列間的轉換演算法有多安全
從上圖我們看到, 從助記詞到隨機數種子, 經過了2048輪SHA512運算, 這是一種極其有效的保護方法. 因為SHA512是一種不可逆的HASH演算法, 經過了2048輪, 要想破解, 幾乎是不可能的.
目前主流的錢包, 不管是硬體錢包, 比如: Keepkey,Ledger和Trezor, 還是軟體錢包, 比如: Breadwallet,Copay,Multibit HD和Mycelium都支援助記詞.