Web 3 時代必備的金融資安常識:助記詞/私鑰/錢包(帳號)

imgare-cover

加密貨幣錢包多不勝數,之間的關鍵差異就在於私鑰的保管方式。這篇文章主要介紹 KryptoGO Wallet 這類型去中心化錢包所使用到的私鑰管理機制與技術。

非確定性錢包(Non-Deterministic Wallets)

隨機生成一個數字串作為私鑰,可以使用密碼學安全的偽隨機數生成器,公鑰與私鑰毫無關係,缺點當有多個私鑰,必須逐個備份,導出,導入,極其麻煩。

實務上這類型的錢包比較少見。

階層式確定性錢包(Hierachical Deterministic Wallets)

俗稱 HD 錢包,與非確定性錢包相反,由最原始的 Seed Phrase 推導出多個公私鑰對,在備份導入錢包時候就只需要助記詞方便抄寫。HD 錢包可以在不需要私鑰情況下運用橢圓曲線算法生成大量公鑰。概念是由 BIP32(Bitcoin Improvement Proposals)提出,BIP39 解決助記詞難以抄寫記憶問題,BIP44 規範各個幣種路徑規範達成業界共識。

結合 BIP32, BIP39, 以及 BIP44 就是目前業界主流的去中心化分層錢包的做法。這個特性適合收款服務,比如商店收款,為每個用戶創建一個收款公鑰匙,也可以用戶給用戶空投等。

BIP39:讓助記詞具備可讀性

主要描述助記詞代碼,助記詞句子的實現,包括兩部分

  1. 生成助記詞,將其轉化為 2 進制種子
  2. 種子可以稍後用於使用 BIP-0032 或類似方法生成確定性錢包。

與處理錢包種子原始二進制或十六進制數字相比助記符對於人類交互是更優越的。可以寫在紙上,記性好的還可以背下來。BIP39 將一些列難以記住的無規則的數字串通過轉碼拆分後生成數字,在於單詞表進行映射生成助記詞,通過人類可讀轉錄傳輸計算機生成的隨機性,

BIP32:階層式錢包的基礎標準

錢包可以部分或全部與其它系統共享,每個系統都能獨立收發。這個規范的目的是設定一個分層錢包標准,能在不通客戶之間交換。通過一個共同的種子可以導出任意對私鑰,私鑰推導採用不可逆算法,只可以由高層級推導低層級,HD 錢包可以在不需要私鑰情況下運用橢圓曲線算法生成大量公鑰。

0*Re2k73xP9bcQXm6K.png

https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki

BIP44:定義衍生地址的索引方式

通過這種分層(樹狀結構)推導出來的秘鑰,通常用路徑來表示,每個級別之間用斜槓 / 來表示,由主私鑰衍生出的私鑰起始以 “m” 打頭。

m / purpose’/ coin_type’/ account’/ change / address_index

  1. purpose:BIP 編號,44 代表 BIP44
  2. coin_type幣種,60 代表 Ethereum
  3. account:帳戶索引,從 0 開始
  4. change:0 用於外部鏈,1 用於內部鏈
  5. address_index:地址索引,從 0 開始

對外錢包地址的生成流程

如果以下方助記詞為例,到最後使用者可見的錢包地址生成流程如下圖:

rose rocket invest real refuse margin festival danger anger border idle brown

1*Z1rsRKUgD_mvtK_Ltb-9Kw.png

從助記詞到錢包地址

可以使用 Mnemonic Code Converter 來做效驗:

1*cehZ5jx7yMUv_-vLoZ4rJg.png

KryptoGO Wallet 的帳戶模型

我們獨特的帳戶模型是將電話號碼與助記詞做一對一的匹配,並且衍生出多鏈的錢包地址,這樣的好處是我們可以做轉帳對象以及資金來源的檢核,為使用者的資產做最好的把關。

1*4TKfQQgw2S0tRYf3Tx1eaw.png

KryptoGO Wallet 帳戶模型