跳至主要内容

BIP39 passphrase(密碼短語)

BIP39 passphrase(密碼短語,有時稱為「第 25 個單字」)是混入種子的一項選用額外機密。同一組助記詞搭配不同的 passphrase,會得到完全不同的錢包:不同的主指紋、xpub 與地址。

BitTool Signer 在 建立 與 匯入 錢包時都支援 passphrase:開啟 BIP39 passphrase,並輸入兩次。它與助記詞一起存放在加密的保險庫中,因此使用者簽名時不必再次輸入。

兩份機密,兩份備份

單憑助記詞無法還原設有 passphrase 的錢包。App 會在每個備份畫面上說明這一點,而且所有備份形式(單字、QR Code、復原卡)都不包含 passphrase。passphrase 也 不是 錢包密碼:錢包密碼只用來在這支手機上加密保險庫。

passphrase 如何納入種子​

seed = PBKDF2-HMAC-SHA512(password = NFKD(phrase), salt = NFKD("mnemonic" + passphrase), 2048 iterations, 64 bytes)
  • passphrase 會依 BIP39 的要求,以 Unicode NFKD 正規化。這對含有重音符號、全形字元或 CJK 相容字元的 passphrase 很重要:略過正規化的錢包,會從相同的文字衍生出不同的種子。
  • 除此之外,它會完全依照輸入內容使用:不修剪空白、不轉換大小寫。結尾的空格也是 passphrase 的一部分。
  • 空的 passphrase 表示「沒有 passphrase」。如果開啟此選項,passphrase 不得為空,且兩次輸入必須一致。
  • 最多 1,024 位元組(UTF-8)。

此實作已透過公開的 BIP39 向量與官方日文向量驗證,後者包含一個含有相容字元的 passphrase。

範例​

公開測試助記詞在不使用與使用 passphrase TREZOR(公開的 BIP39 測試向量所使用的 passphrase)時的比較:

無 passphrasepassphrase TREZOR
主指紋73c5da0ab4e3f5ed
Bitcoin m/84'/0'/0'/0/0bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyubc1qv5rmq0kt9yz3pm36wvzct7p3x6mtgehjul0feu
EVM m/44'/60'/0'/0/00x9858EfFD232B4033E47d90003D41EC34EcaEda940x9c32F71D4DB8Fb9e1A58B0a80dF79935e7256FA6
TRON m/44'/195'/0'/0/0TUEZSdKsoDHQMeZwihtdoBiN46zxhGWYdHTAyDUYP5rcf56xFwrg8cU1qQwvnWpkeapM
Solana m/44'/501'/0'/0'HAgk14JpMQLgt6rVgv7cBQFJWFto5Dqxi472uT3DKpqk7zSmbu6gKkb6HB7UDPtHYjwCWuBHU1D4TpNZFm4sndQe
64 位元組的種子
種子,無 passphrase
5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc19a5ac40b389cd370d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4
種子,passphrase TREZOR
c55257c360c07c72029aebc1b53c05ed0362ada38ead3e3e9efa3708e53495531f09a6987599d18264c1e1c92f2cf141630c7a3c4ab7c81b2f001698e7463b04

對你的錢包有何影響​

沒有什麼特別之處:passphrase 從不離開 BitTool Signer。使用 passphrase 的錢包只是以它自己的主指紋與 xpub 進行配對,其簽名請求也必須帶有該指紋。對你的整合而言,它就只是另一個錢包。

兩個實務上的影響:

  • 一組助記詞,多個錢包。 使用者可以在 BitTool Signer 中放入兩次相同的助記詞,一次有 passphrase、一次沒有。它們會顯示不同的指紋;不要依助記詞或名稱合併帳戶,只能依匯出的公鑰判斷。
  • 指紋可用來快速檢查。 如果使用者預期配對的是 passphrase 錢包,配對到的卻是他們認得、屬於無 passphrase 錢包的指紋,那麼他們很可能忘了輸入(或打錯)passphrase。