Lazy loaded image
🔏小白10分钟看懂MPC(多方签名计算)的核心秘密
字数 1514阅读时长 4 分钟
2025-12-22
2025-12-22
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 方案)

  1. 先选一个多项式,比如二次多项式(用于 3/5 方案):f(x) = a₀ + a₁x + a₂x²
  1. 把秘密 S 设为常数项 (a₀),也就是:f(0) = a₀ + a₁·0 + a₂·0² = a₀ = S。所以,私钥就是当 x=0 时函数的输出值
  1. 但你不直接告诉别人 f(0)!而是计算其他 x 值对应的 f(x),比如:
      • 给 Alice:(x=1, f(1))
      • 给 Bob:(x=2, f(2))
      • 给 Carol:(x=3, f(3))
  1. 他们自己不知道 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 节点密钥管理
  • 密码管理器紧急恢复

后续:
 
 
上一篇
探索MPC的秘密-工程篇
下一篇
为什么计算机里面取模运算的应用地方这么多,好像仅次于四则运算的加减法?

评论
Loading...