基于秘密共享的门限签名
基于秘密共享(Secret Sharing)的门限签名 —— 这是门限签名最早期、也是最经典的实现方式。
一、Shamir 秘密共享回顾
门限签名通常依赖 Shamir Secret Sharing (SSS),它由 Adi Shamir 在 1979 年提出。
基本思想
- 将一个秘密 ddd 分为 n 份份额;
- 任意 t 份份额 就能恢复原始秘密;
- 少于 t 份份额无法恢复。
多项式构造方法
- 随机生成一个 (t−1)(t-1)(t−1)次多项式 f(x)=d+c1x+c2x2+⋯+ct−1xt−1(modq)f(x) = d + c_1 x + c_2 x^2 + \cdots + c_{t-1} x^{t-1} \pmod{q}f(x)=d+c1x+c2x2+⋯+ct−1xt−1(modq)
- 计算 n 个份额: di=f(i),i=1,2,⋯ ,nd_i = f(i), \quad i=1,2,\cdots,ndi=f(i),i=1,2,⋯,n
- 任意 t 个参与者利用 拉格朗日插值 恢复秘密: d=∑i=1tλidid = \sum_{i=1}^t \lambda_i d_id=∑i=1tλidi
📌 直观理解:
秘密被隐藏在多项式常数项中,只有当足够多的点被收集到,才能拟合出多项式,从而恢复秘密。
二、基于 SSS 的门限签名流程
以 (t,n)(t, n)(t,n)-RSA 门限签名为例:
-
密钥生成
- 生成 RSA 私钥 ddd,然后使用 SSS 将其分成 n 个份额 d1,d2,⋯ ,dn{d_1, d_2, \cdots, d_n}d1,d2,⋯,dn。
- 每个参与者只持有自己的份额。
-
部分签名生成
- 消息 mmm 的哈希 H(m)H(m)H(m)被分发给所有参与者;
- 每个参与者使用自己的份额生成一个 部分签名: si=H(m)di(modN)s_i = H(m)^{d_i} \pmod{N}si=H(m)di(modN)
-
签名合成
- 收集至少 t 个部分签名 s1,s2,⋯ ,st{s_1, s_2, \cdots, s_t}s1,s2,⋯,st;
- 通过拉格朗日插值恢复完整签名:s=H(m)d(modN)s = H(m)^d \pmod{N}s=H(m)d(modN)
-
验证
- 验证者使用公钥 (N,e)(N, e)(N,e) 验证签名是否有效: se≡H(m)(modN)s^e \equiv H(m) \pmod{N}se≡H(m)(modN)$
三、优点与不足
优点
- 概念清晰:基于经典的 Shamir Secret Sharing;
- 简单易实现:适合教学和小规模实验;
- 安全可靠:只要少于 t 个密钥份额泄露,私钥不会被恢复。
不足
- 计算开销大:需要重建签名,多次指数运算;
- 通信开销大:每次签名需传输多个部分签名;
- 隐私风险:合成时可能泄露部分私钥信息。
这些不足推动了 门限 Schnorr、门限 ECDSA、门限 BLS 等现代方案的出现。
四、小结
基于秘密共享的门限签名是门限签名的 起点:
- 使用 Shamir Secret Sharing 将私钥分片;
- 至少 t 个参与者合作生成签名;
- 提供了门限签名的 基本安全保证。
但在大规模区块链、IoT 等场景中,这类方案效率不足,需要更高效的现代构造。