本工具基于 GF(256) 实现 Shamir 门限秘密共享:秘密被拆成 n 份 share,任意 k 份(阈值)即可重建,而 k-1 份或更少完全不泄露秘密——这是信息论意义上的安全。
两种模式:
- 拆分:粘贴秘密(任意 UTF-8 文本——密码、API 密钥、助记词、恢复短语),设定阈值
k 和总数 n(2 ≤ k ≤ n ≤ 255),得到 n 份 share。每份分发给一个不同的持有人。
- 恢复:粘贴
k 份或更多 share(每行一份),通过在 x=0 的拉格朗日插值重建原始秘密。
原理。 秘密的每个字节是 GF(256) 上一个随机 k-1 次多项式的常数项。share i 是多项式在 x=i 处的值。恢复需要 k 个点才能唯一确定一个 k-1 次多项式。多项式系数取自 crypto.randomBytes()(操作系统 CSPRNG),绝不使用 Math.random()。
限制——请务必阅读:
- 仅机密性,无完整性。 持有 share 的人可以在恢复时提交伪造值;数学运算会产生一个看似合理但错误的秘密,而你无法察觉。若需检测篡改,请在拆分之前对秘密(或其哈希)签名,恢复后再验签。
- GF(256) 边界。
n 上限 255(域大小),k 必须 ≥ 2。
- share 格式。 每个 share 是
sss: + [x 坐标, y 字节₁, y 字节₂, …] 的 base64url。保持完整字符串;截断会导致恢复失败。
适用场景。 密钥托管/恢复(把主密钥拆分给多位高管)、自托管钱包的社交恢复、把口令分发给多人确保无单点持有、"死人开关"式秘密取回。