メインコンテンツまでスキップ

BIP39 パスフレーズ

BIP39 パスフレーズ(「25 番目の単語」と呼ばれることもあります)は、シードに混ぜ込む任意の追加の秘密情報です。同じリカバリーフレーズでもパスフレーズが異なれば、マスターフィンガープリント、xpub、アドレスがすべて異なる、まったく別のウォレットになります。

BitTool Signer は、ウォレットの 作成 時と インポート 時の両方でパスフレーズに対応しています。BIP39 passphrase をオンにして、2 回入力します。パスフレーズはフレーズとともに暗号化された Vault 内に保存されるため、署名のたびに入力し直す必要はありません。

2 つの秘密情報、2 つのバックアップ

パスフレーズを設定したウォレットは、リカバリーフレーズだけでは復元できません。アプリはすべてのバックアップ画面でそのことを伝えており、どのバックアップ形式(単語、QR コード、リカバリーカード)にもパスフレーズは含まれません。また、パスフレーズはウォレットパスワードでは ありません。パスワードは、この iPhone 上の Vault を暗号化するだけのものです。

シードへの組み込み方​

seed = PBKDF2-HMAC-SHA512(password = NFKD(phrase), salt = NFKD("mnemonic" + passphrase), 2048 iterations, 64 bytes)
  • パスフレーズは、BIP39 の要求どおり Unicode NFKD で正規化されます。これは、アクセント記号、全角文字、CJK 互換文字を含むパスフレーズで重要です。正規化を省くウォレットは、同じテキストから異なるシードを導出してしまいます。
  • それ以外は入力されたとおりに使われます。前後の空白の除去も、大文字小文字の統一も行いません。末尾のスペースもパスフレーズの一部です。
  • 空のパスフレーズは「パスフレーズなし」を意味します。オプションをオンにした場合は、空でない値を入力し、2 回の入力が一致する必要があります。
  • 最大 1,024 バイト(UTF-8)。

この実装は、公開されている BIP39 のテストベクターと、互換文字を含むパスフレーズを使った公式の日本語ベクターで検証済みです。

例​

公開テストフレーズについて、パスフレーズなしの場合と、パスフレーズ TREZOR(公開されている BIP39 テストベクター で使われているもの)ありの場合を示します。

パスフレーズなしパスフレーズ 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 バイトのシード
シード、パスフレーズなし
5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc19a5ac40b389cd370d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4
シード、パスフレーズ TREZOR
c55257c360c07c72029aebc1b53c05ed0362ada38ead3e3e9efa3708e53495531f09a6987599d18264c1e1c92f2cf141630c7a3c4ab7c81b2f001698e7463b04

ウォレットにとっての意味​

特別な対応は必要ありません。パスフレーズが BitTool Signer の外に出ることはありません。パスフレーズ付きのウォレットは、単に独自のマスターフィンガープリントと xpub でペアリングされ、その署名リクエストにはそのフィンガープリントを含める必要があります。統合する側から見れば、別のウォレットが 1 つ増えるだけです。

実務上の影響は 2 つあります。

  • 1 つのフレーズ、複数のウォレット。 ユーザーは BitTool Signer に、同じフレーズをパスフレーズありとなしで 2 回登録できます。両者のフィンガープリントは異なります。アカウントをフレーズや名前で統合せず、エクスポートされた公開鍵だけで判断してください。
  • フィンガープリントは手軽なチェックになる。 パスフレーズ付きのウォレットのつもりでペアリングしたのに、パスフレーズなしのウォレットで見覚えのあるフィンガープリントだった場合、ユーザーはおそらくパスフレーズを入れ忘れた(または打ち間違えた)のです。