定义:Shamir 秘密分享(Shamir's Secret Sharing,SSS)是 1979 年由密码学家 Adi Shamir 提出的数学方案——把一份秘密 S 编码成 N 份"碎片"(shares),凑齐任意 M 份就能数学上完全还原 S,少于 M 份的任何子集对 S 一无所知。注意这里"一无所知"是严格的——不是"很难破解",是数学上信息熵为零。
把这套思路套到 BIP39 助记词的备份上,就是 SLIP-39 标准——由 Trezor 团队制定,2019 年发布。它解决的问题是:一张完整助记词纸有"单点失败"风险,备份太多份又增大泄露概率;SLIP-39 把"完整助记词"换成"5 份碎片,任意 3 份可恢复"这样的配置,两边都顾到。
数学直觉(不严谨版)
核心思路一句话——用一条 (M-1) 次多项式藏秘密。比如 M=3:在二维平面画一条抛物线,秘密 S 是这条线在 x=0 处的 y 值;从线上取 N 个点,每个点就是一份"碎片"。任意 3 点唯一确定一条抛物线(3 点定一条二次曲线),从而还原 x=0 处的 y;只给 2 点可以画出无数条经过它们的抛物线,对 S 完全没信息。实际算法在有限域里跑,直觉一样。常见配置 3-of-5:允许丢 2 份不影响恢复,单份或两份被偷不会泄露资产。
对比多签 / 直接抄多份助记词
三种思路各有差别。抄多份助记词——简单,但每份单独就是完整助记词,单份泄露就完蛋;多签——在协议层让"花钱需要 m-of-n",每签名人持一把独立私钥;Shamir——在备份层让"恢复需要 m-of-n",每份碎片单独无意义。关键差别:多签是"花钱时协作",Shamir 是"恢复时协作"。
它的坑
第一,恢复时把碎片凑齐那一刻是高风险时刻——5 份藏在不同地方是为了避免单点暴露,但恢复时要在一台设备上输入 3 份,那台设备若被木马监听就全暴露。恢复操作必须在断网设备上进行——和 纸钱包 恢复一样的纪律。
第二,SLIP-39 不和 BIP39 兼容。Trezor 全系支持,Ledger / Keystone 支持有限或不支持——这套方案绑死在 Trezor 生态里。
第三,认知成本。3-of-5 不复杂,但比单一助记词难记。家人能不能搞明白"哪 3 份算齐、怎么拼回来",是要提前演练的事。