一、Shamir Secret Sharing 核心原理
多项式插值
将助记词编码为秘密
S
S,构造
(
k
−
1
)
(k−1) 次多项式
f
(
x
)
f(x),生成
n
n 个点
(
x
i
,
f
(
x
i
)
)
(x
i
,f(x
i
)),需至少
k
k 个点恢复
S
S。
公式:
f
(
x
)
=
S
+
a
1
x
+
a
2
x
2
+
.
.
.
+
a
k
−
1
x
k
−
1
f(x)=S+a
1
x+a
2
x
2
+...+a
k−1
x
k−1
参数选择
阈值
k
k:恢复所需最小份额数(建议
3
/
5
3/5 或
4
/
7
4/7)
总份额
n
n:生成的总份额数(通常
n
=
2
k
−
1
n=2k−1)
二、操作步骤(以 3/5 方案为例)
1. 选择工具
工具 类型 安全性 适用场景
Trezor SSS 硬件钱包集成 高(离线生成) Trezor用户
ssss-cli 命令行工具 中(依赖本地环境) 技术用户
Splinter (BIP39) 开源GUI工具 高(支持BIP39) 普通用户
Ledger Recover 官方服务 中(需信任第三方) Ledger用户(需订阅)
2. 生成份额(以 ssss-cli 为例)
bash
复制
# 安装工具
sudo apt-get install ssss
# 生成5份,需3份恢复
echo "your_12_or_24_word_mnemonic" | ssss-split -t 3 -n 5 -Q
# 输出5行16进制字符串(即份额)
3. 编码份额为便携格式
BIP39词组映射:使用 SLIP39 标准将份额转为助记词
python
复制
# 示例:将份额转为24个单词
from slip39 import Share
share = Share.from_hex("1a2b...") # 输入份额
print(share.mnemonic_words) # 输出:["jolt", "lily", ..., "exit"]
物理备份:将份额蚀刻到钛板或加密QR码(推荐Cryptosteel Capsule)
三、安全存储策略
1. 地理分散存储
份额分配 存储位置 保护措施
份额1 家庭保险箱 防火防水容器 + 密码信封
份额2 银行保管箱 与法币遗嘱分开存放
份额3 可信律师/亲属 签署NDA + 分片加密
份额4 异地安全屋(非直系亲属) 地理分散 + 无网络访问
份额5 记忆备份(可选) 仅存储部分提示信息
2. 防单点故障设计
场景:若某地发生火灾/盗窃,至少
k
k 份额在其他位置存活
数学验证:
P
(
存活
)
=
1
−
C
(
n
−
k
,
m
)
/
C
(
n
,
m
)
P(存活)=1−C(n−k,m)/C(n,m) (
m
m 为损毁点数)
四、恢复助记词流程
1. 收集至少
k
k 个份额
bash
复制
# 使用ssss-cli恢复
ssss-combine -t 3 -Q
# 依次输入3个份额的16进制字符串
# 输出原始助记词
2. SLIP39恢复示例
python
复制
from slip39 import Share, combine_mnemonics
shares = [
["jolt", "lily", ..., "exit"], # 份额1的助记词
["tuna", "fury", ..., "pool"], # 份额2
["echo", "kite", ..., "zoo"] # 份额3
]
master_secret = combine_mnemonics(shares)
print(master_secret.decode('utf-8')) # 输出原始助记词
五、安全增强措施
1. 阈值动态调整
时间锁:设置份额生效时间(如份额1在2025年后失效,需更新)
智能合约实现:
solidity
复制
function recover(bytes32[] shares) external {
require(block.timestamp >= 1735689600); // 2025-01-01
_executeRecovery(shares);
}
2. 多重验证层
生物识别:恢复时需指纹/虹膜验证(如Ledger Recover)
多签要求:恢复地址需2/3监护人批准(结合Gnosis Safe)
六、风险与应对
风险 缓解方案
份额物理损坏 使用钛/不锈钢介质,多地冗余存储
社会工程攻击 监护人独立存储,无元数据关联(如匿名信封)
算法漏洞(如素数碰撞) 选择256位SLIP39参数,禁用低熵配置
七、替代方案对比
方法 优点 缺点
Shamir SSS 数学可证明安全,灵活阈值 依赖物理存储,恢复流程复杂
多重签名钱包 无需分割助记词 依赖链上合约,Gas成本高
脑钱包 无物理痕迹 易遗忘,抗暴力破解能力弱
总结:
通过Shamir Secret Sharing分割助记词,需严格遵循 “3-2-1”原则:
3份备份:至少3个独立存储位置
2种媒介:物理(金属板)+数字(加密SD卡)
1次验证:分割后立即测试恢复流程
推荐使用经过审计的开源工具(如SLIP39标准实现),避免自行开发算法。对于非技术用户,硬件钱包内置方案(如Trezor SSS)是更安全的选择。