助记词
BitTool Signer 钱包是标准的 BIP39 钱包。在 BitTool Signer 中创建的助记词,可以在任何使用相同派生路径的 BIP39 钱包中恢复;其他钱包的助记词也可以导入。
创建钱包
创建分为四步:
- 生成。用户为钱包命名,选择 24 个单词(默认)或 12 个单词,并可以添加 BIP39 passphrase(密码短语)。助记词在设备上由系统 CSPRNG 生成(详情)。
- 备份。以下文所述的某种备份形式显示助记词。
- 校验。所有单词都会被遮盖,其中四个位置(18 个单词及以上为五个)留空。用户按正确顺序点击打乱的单词来填写空位。一旦出错,本次尝试将被清空。
- 设置钱包密码。它用于在这部手机上加密助记词(详情)。
公开索引(地址和 xpub)会在钱包出现在列表中之前完成派生并保存,因此可以立即进行配对。
备份形式
每种形式最初都是隐藏的,点击一下即可显示。截屏、录屏或离开 App 都会使其再次隐藏;截屏还会显示一条警告,提醒用户删除该图片。
单词
以带编号的网格显示 12 或 24 个单词:这是大多数人应当手写抄录的备份。
二维码
一个纯文本二维码,内容是以单个空格分隔的单词,用于把钱包迁移到你自己的另一台设备上。任何支持从二维码导入助记词的钱包都能读取它,BitTool Signer 读回时也能得到完全一致的拼写。它从不包含 BIP39 passphrase。App 从不提供保存、打印或分享它的选项。
恢复卡片(2-of-3)
单词被分散到三张卡片上:任意两张卡片都能还原完整的助记词,而单独一张则不能。各位置按每行三个排列,每张卡片在每一行中省略一个单词,并且每行依次错开一位:
card index (0, 1, 2) that leaves out word position p (0-based) = (⌊p / 3⌋ + p mod 3) mod 3
12 个单词时:
| 位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 卡片 1 | — | ✓ | ✓ | ✓ | ✓ | — | ✓ | — | ✓ | — | ✓ | ✓ |
| 卡片 2 | ✓ | — | ✓ | — | ✓ | ✓ | ✓ | ✓ | — | ✓ | — | ✓ |
| 卡片 3 | ✓ | ✓ | — | ✓ | — | ✓ | — | ✓ | ✓ | ✓ | ✓ | — |
布局只取决于单词数量,因此在不同时间或在另一台设备上制作的卡片总能拼合在一起。每张卡片都会列出它所省略的位置。
单独一张卡片仍会泄露三分之二的助记词。剩下需要猜测的是每个缺失单词 11 位,再减去校验和的位数:
| 单词数 | 每张卡片缺失 | 需要猜测 |
|---|---|---|
| 12 | 4 | 40 位:意志坚决的攻击者可以破解 |
| 15 | 5 | 50 位 |
| 24 | 8 | 80 位 |
对于 12 和 15 个单词的助记词,App 会警告用户像保管完整助记词一样保管每一张卡片,或者改用 24 个单词。恢复卡片从不包含 passphrase。
存储的内容
保险库以规范单词形式(Unicode NFC)保存助记词,并按输入原样保存 BIP39 passphrase。助记词和 passphrase 从不写入明文文件,从不离开手机,也不包含在任何二维码中,上文明确提供的助记词二维码除外。