SLIP-39 是一种钱包备份标准,使用多份单词列表,每份称为恢复份额。用户事先决定恢复时需要多少份不同的份额。例如,采用三取二方案,丢失一份仍然可以恢复钱包,但单独一份不够。这个由 SatoshiLabs 制定的标准使用 Shamir’s Secret Sharing,即一种数学上的秘密共享方法。它的份额并不是把普通 BIP 39 Seed Phrase 换一种写法。
安娜选择三取二备份。钱包是接收和发送比特币的应用程序或设备。钱包生成三份不同的份额,任意两份即可恢复;所需的最少数量称为门限。同一份额的两张照片仍然只算一份。简单方案只使用一个组。SLIP-39 也支持更复杂的规则,例如 3 组中需要 2 组,每组 3 份中需要 2 份。A 组两份加 B 组两份足够;A 组三份加 B 组一份则不够,因为只有 A 组满足条件。所以关键在于份额的分布,而不只是纸张的数量。 [1] [6]
每份列表携带不同的数据,以及正确组合这些数据所需的信息。SLIP-39 使用固定的 1024 个英语单词,即使钱包界面是中文,备份单词也不能翻译。128 位秘密产生每份 20 词的份额,256 位秘密则产生每份 33 词的份额。“位”是数据的基本单位,不是还要多抄一个词。份额还包含所属集合、组、份额位置、所需门限和加密设置。恢复时会检查这些信息是否一致、份额是否不同。因此,不能因为列表长度相同,就把任意列表混在一起。 [1]
安娜还可以使用 passphrase,也就是自己选择的附加密码。集齐份额不能代替它,正确的份额组合也无法自行识别密码中的拼写错误:另一条 passphrase 会得到另一个主秘密,从而打开另一个钱包。因此,应对照已知地址确认结果,不能只看“备份有效”的提示。不使用 passphrase 时,输入为空。SLIP-39 允许可打印 ASCII 字符 32–126,即不带变音符号的基本拉丁字符,也包括空格。这是该标准的规则,并非所有钱包的通用限制。Passphrase 不是解锁设备的 PIN。 [1]
BIP 39 Seed Phrase 的生成方式和词表都不同。把它的单词分写在几张纸上,不会让它变成 SLIP-39 份额。若要转换后仍使用同一个钱包,必须保留 seed,即 BIP 32 密钥树的秘密输入数据,以及正确的 Derivation Path,也就是通往所用密钥的派生路径。仅仅重新编码原始熵——生成单词之前的随机数据——并不够。BIP 39 由单词和 passphrase 生成 512 位 seed;直接用 SLIP-39 备份这个 seed,会得到每份 59 词的份额。转换一个钱包,也不会自动保留通过其他 passphrase 打开的钱包。操作前必须确认具体支持的流程。 [1] [3] [2]
带有 extendable 标志的兼容备份,可以改变分份方式而保留原来的钱包。Trezor 用这种方式说明如何从单份额备份升级到多份额。但换了纸张,不代表安娜的秘密改变了:足够的旧份额组合仍然有效。新旧份额不能混用。技术上,标志值为 1 时,集合标识符不会进入名为 salt 的加密辅助输入。因此,同一个 encrypted master secret(EMS,即加密后的主秘密)可以在不知道 passphrase 的情况下,用新标识符重新分份。这不能补救一份仍可使用的旧备份已经泄露的问题。 [1] [4]
私钥是钱包用来生成数字签名、授权花费资金的秘密数值。安娜恢复钱包后,它就能照常签名。份额持有人不必批准每一笔付款:SLIP-39 恢复的是一个秘密,而 Multisig 按花费条件要求多个签名。放在同一套公寓里的三份备份,可能被一场火灾同时烧毁。分散保管既要降低共同丢失的风险,也要增加攻击者凑齐份额的难度;但更复杂的方案也会增加恢复负担。恢复检查应在可信设备上,按受支持的流程进行。参考库 python-shamir-mnemonic 供开发者利用公开测试样例检查兼容性,不用于处理你的真实备份。它明确警告自身不能充分保护秘密。 [1] [4] [5] [6]
对于 BIP 32 钱包,主秘密是输入 seed,而不是已经计算出来的密钥树扩展私有根。先加密 seed,再分割得到的 EMS。加密采用四轮 Feistel 结构,每轮包含 PBKDF2-HMAC-SHA256,重复 2500×2^e 次;保存的指数 e 决定计算成本。这是精确定义的密码处理,不是加入新的随机单词。分割逐字节在 GF(256) 中进行,这是一个包含 256 个值的数学结构。多项式在 f(255) 处存放秘密;门限至少为 2 时,f(254) 处存放称为 digest 的验证值。 [1] [2]
份额最后三个词组成 RS1024 校验和。它保证检测到影响最多三个词的错误,但不是备份创建者的签名,也不是所有权证明。标准不建议自动纠错:软件可能生成有效、却与原来不同的单词。组合时,另一个 32 位 digest 帮助检测错误集合。它也带来一个理论上的限制:持有比门限少一份份额的人,可以在穷举搜索中排除部分候选秘密。因此,“低于门限绝不泄露任何信息”这个数学结论不能原封不动地套用。这并不表示容易破解,而是解释了为什么标准要求原始秘密具有足够强度。 [1]
要获得更完整的理解,请将本词条与以下词条结合阅读: Shamir Secret Sharing, BIP 39, Trezor, Multisig, HD Wallet, Seed Phrase. 反向关联还来自: BIP 39, Trezor, Pavol“Stick”Rusnák, Shamir Secret Sharing.