通过 Web Crypto 100% 在浏览器中运行 — 秘密及其份额绝不会离开你的设备。
Write a Python implementation of Shamir's Secret Sharing over GF(256) that interoperates with these share strings: each share is the two-digit hex x-coordinate, a dash, then one hex byte per secret byte (e.g. "01-a3b2c1"). It must split a secret into 5 shares with threshold 3, and reconstruct from any 3 of them. Use the AES reduction polynomial 0x11B and rejection-free crypto-random coefficients.
功能说明
Shamir 秘密共享(Shamir’s Secret Sharing)把一个秘密拆分成 N 份份额(share),其中任意 K 份都能完整还原它——而少于 K 份则什么都得不到,连一丝部分线索都没有。它是把加密钱包助记词、主密码或加密密钥分散到多人或多处的数学基础,使任何单个持有者(以及任何少于 K 人的联盟)都无法单独行动。现实中的用途包括加密货币托管(多方钱包备份)、密钥托管、核武器发射代码、遗产规划(律师 + 配偶 + 银行保险箱)以及灾难恢复信封。
本工具在你的浏览器中基于 GF(256) 运行整套方案——与 AES 使用的同一个伽罗瓦域——多项式系数来自 Web Crypto。你输入的任何内容、你粘贴的任何份额,都不会离开你的设备。
使用方法
- 用顶部的 Split / Reconstruct(拆分 / 还原)开关选择模式。
- Split(拆分): 输入秘密,设置 Total shares (N)(总份额数,2-255)和 Threshold (K)(阈值,2-N,即恢复所需的最少份数),然后按下 Split secret。
- 把每份带编号的份额复制给它的持有者(每份份额都有自己的 Copy 按钮;Copy all shares 一次复制全部)。盾牌提示会提醒你:N 份份额中的任意 K 份可以恢复秘密;K-1 份则一无所获。
- Reconstruct(还原): 每个字段粘贴一份份额(需要更多就点 Add share),然后按下 Reconstruct secret。恢复出的秘密会显示在绿色输出区并附带复制按钮;无效或不匹配的份额会产生明确的错误。
示例
按 3-of-5 拆分助记词
秘密:river vacuum lamp fiber quiz noise border mind smile crouch tuna——设 N=5、K=3,你会得到五份份额,每份形如:
01-9f3ac27e1b84d05c…
02-4b19e7a2c83f5d16…
03-c7e02f9a45b6138d…
04-2ad673f1e09b85c4…
05-85d31c6b7a49f0e2…
(你的结果会不同——多项式系数在每次拆分时都是全新随机的,所以同一个秘密的两次拆分看起来毫无相似之处。)
从 5 份中的任意 3 份恢复
把份额 01-…、03-…、05-… 粘贴到三个字段中,按下 Reconstruct secret——原始助记词会一字不差地还原回来。份额 1+2、2+4+5,任何三份组合都行;仅凭两份份额只能还原出乱码。
错误的配对会大声失败
混入来自两次不同拆分的份额(或者两份声称相同位置的份额)会得到 Two different shares both claim x=01 - they cannot come from the same split,而不是静默地返回一个错误的秘密。
补充说明
- 为什么 K-1 份份额一无所获: 秘密的每个字节都变成一个随机 (K-1) 次多项式的常数项。K-1 个点与任何可能的常数项都相容——秘密在信息论意义上被隐藏,而不只是在计算上困难。即使面对无限的计算能力,这一性质依然成立。
- 一句话概括数学原理: 份额是 GF(256) 上多项式的取值 f(1)…f(N);还原是在 x=0 处做拉格朗日插值。加法是 XOR,乘法使用 AES 的归约多项式(0x11B)。
- 每次拆分都是全新随机: 同一个秘密拆分两次会产生完全不同的份额;两组份额都能各自独立地还原它。
- 像对待密钥一样对待份额: 一份份额是你的秘密的一半(或三分之一、五分之一)。把它们存放在不同的地方——如果攻击者收集到 K 份,秘密就归他们了。
- 私密: 100% 在客户端运行;分享链接只携带你的 N/K 设置,从不携带秘密本身。
- 相关工具:密码强度分析器、安全令牌生成器、HMAC 生成器。