type
Post
status
Published
date
Dec 22, 2025
slug
summary
tags
category
icon
password
remark
类别
状态
发布时间
更新时间
核心思想:带你从零理解 Shamir 秘密共享(Shamir's Secret Sharing, SSS)。不需要高深数学基础,只要会加减乘除就行!
第一步:先问一个问题——"怎么安全地保管一个密码?"
假设你有一个超级重要的保险箱密码:123456。
- 如果只写在一张纸上 → 丢了就完蛋。
- 如果告诉朋友 → 他可能不小心说漏嘴。
- 如果分成两半:"123" 和 "456" → 每个人拿到一半,但其实猜出另一半很容易(暴力破解)。
有没有一种方法:把密码拆成几份,单独一份完全没用,但凑够一定数量就能还原?
这就是 Shamir 秘密共享要解决的问题!
第二步:用"切蛋糕"的比喻理解核心思想
想象你要把一块魔法蛋糕(秘密)分给 5 个朋友:
- 规则:任意 3 个人聚在一起,就能复原整块蛋糕。
- 但如果只有 1 人或 2 人 → 蛋糕是"空气",什么都得不到!
这听起来像魔术,但数学上可以做到!
第三步:用初中数学解释原理(关键)
核心工具:多项式 + 点
1. 两点确定一条直线
- 直线公式:
y = a·x + b
- 如果你知道两个点,比如 (1, 5) 和 (2, 7),就能算出这条直线。
- 特别地,当
x=0时,y = b→ 这就是截距。
如果我们把秘密设为 b(即 x=0 时的 y 值),那只要知道两个点,就能算出秘密!
2. 三点确定一条抛物线(二次曲线)
- 公式:
y = a·x² + b·x + c
- 如果秘密是
c(即 f(0) = c),那么需要3个点才能还原这条曲线,从而得到c。
规律:要实现 "t 个人能恢复秘密",就构造一个 (t−1) 次多项式,把秘密放在
f(0) 的位置,然后给每个人一个点 (x, f(x))。第四步:举个真实例子(3/5 方案)
- 先选一个多项式,比如二次多项式(用于 3/5 方案):f(x) = a₀ + a₁x + a₂x²
- 把秘密 S 设为常数项 (a₀),也就是:f(0) = a₀ + a₁·0 + a₂·0² = a₀ = S。所以,私钥就是当 x=0 时函数的输出值。
- 但你不直接告诉别人 f(0)!而是计算其他 x 值对应的 f(x),比如:
- 给 Alice:(x=1, f(1))
- 给 Bob:(x=2, f(2))
- 给 Carol:(x=3, f(3))
- 他们自己不知道 f(0),但当 3 个人聚在一起,就能用数学方法(拉格朗日插值)反推出 f(0) = S。
所以你说对了:"把 x=0 代入多项式,得到的结果就是秘密"。但我们不直接暴露 x=0 这个点,而是通过其他点间接还原它。
概念 | 说明 |
f(0) = 私钥 | 是的!秘密就是多项式在 x=0 处的值 |
分片 = (x, f(x)) | x ≠ 0,比如 (1, f(1)), (2, f(2))... |
少于 t 个分片 = 无解 | 因为无数条曲线都能穿过这些点,f(0) 可能是任意值 |
≥ t 个分片 = 唯一解 | 只有一条 (t−1) 次曲线能穿过这些点,f(0) 唯一确定 |
一个小测试帮你确认理解
假设秘密是 7,我们用 2/3 方案(直线):
- 构造:f(x) = 7 + 4x
- 分片:A: (1, 11)、B: (2, 15)、C: (3, 19)
如果只有 A 的分片 (1,11),他知道秘密是 7 吗?
→ 不知道! 因为可能是 f(x)=11(常数函数,秘密=11),也可能是 f(x)=5+6x(秘密=5),等等。
只有 A+B 或 A+C 或 B+C 聚在一起,才能算出 f(0)=7。
第五步:为什么安全?—— "信息论安全"
- 少于 t 个分片时,所有可能的秘密都是等概率的。
- 比如你只有 2 个分片,在 3/5 方案中,秘密可能是 1、100、10000……完全无法缩小范围。
- 这叫 无条件安全(unconditional security),连量子计算机也破解不了!
第六步:实际使用中的关键细节
1. 必须在有限域(Finite Field)中计算
- 上面例子用了普通整数,但实际要用 大素数模运算(比如 mod p,p 是 256 位素数)。
- 否则,攻击者可能通过数值规律推测秘密。
2. x 值不能重复,通常用 1,2,3...
- 每个参与者的 x 坐标必须唯一(比如用员工 ID 或节点编号)。
3. 随机性很重要
- 多项式中除了常数项(秘密),其他系数必须密码学安全随机数。
最后总结
门限签名(Threshold Signature)和 Shamir 秘密共享(SSS)的核心数学本质:就是门限的值t实际就是解(t-1)项式的数学问题,通过至少 t 个点,唯一确定一个 (t−1) 次多项式,并求出其在 x=0 处的值。
Shamir 秘密共享 = 把秘密藏在多项式的 f(0) 位置,每人拿一个点;凑够人数就能画出曲线找回秘密,少于人数则完全无解。
应用场景
- 加密钱包私钥分片(如 2/3 多签备份)
- 企业高管共同控制资金
- MPC/TSS 节点密钥管理
- 密码管理器紧急恢复
后续:
- 作者:GC’Lab
- 链接:https://lab.yanggc.fun/article/2d15b1a9-f9d4-8014-b0c0-e535bff92308
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
