群签名算法原理:从匿名集体到可追溯问责
概述
群签名(Group Signature)是 1991 年由 David Chaum 和 Evester Van Heyst 在论文《Group Signatures》中首次提出的密码学原语。它解决了一个看似矛盾的需求:如何既能匿名地代表群体签名,又能在必要时追溯签名者身份。
群签名的形式化安全定义由 Bellare、Micciancio 和 Warinschi 在 2003 年的论文《Foundations of Group Signatures》中首次给出。他们将安全属性分解为两个安全游戏:
不可伪造性游戏
challenger ← Setup(1^λ) → (gpk, gmsk)
challenger ← KeyGen(gmsk) → (sk_i, gpk) for i ∈ [n]
adversary ← Oracles(sk_i) → σ
若 Verify(gpk, m, σ) = 1 且 σ 未被之前的 KeyGen 查询生成
且 adversary 不是有效成员 → 胜出形式化要求:任何 PPT adversary 获胜概率可忽略。
匿名性游戏
challenger ← Setup(1^λ) → (gpk, gmsk)
challenger ← KeyGen(gmsk) → (sk_i, gpk) for i ∈ [n]
adversary → m*, 选择两个成员 i0, i1
challenger ← b ∈ {0,1}, σ* ← Sign(sk_ib, m*)
adversary 获得访问 KeyGen 和 Open 的预言机
adversary → b'
若 b' = b 且 i_b 未被撤销 → 胜出形式化要求:任何 PPT adversary 的区分优势可忽略。
可追溯性
形式化定义为:任何 PPT adversary 无法生成一个通过 Verify 但 Open 失败或返回错误身份的签名。
原始方案:Chaum-Van Heyst 构造
Chaum 和 Van Heyst 的原始方案基于 RSA 困难问题,包含四个算法:
1. Setup
- 选择大素数 p, q,令 n = pq
- 选择 e 使得 gcd(e, (p-1)(q-1)) = 1
- 计算 d = e^{-1} mod (p-1)(q-1)
- 群公钥 gpk = (n, e),群管理私钥 gmsk = (p, q)
2. KeyGen
每个成员 i 选择随机 r_i ∈ Z_n^*,计算:
- 私钥 sk_i = r_i
- 公钥组件 pk_i = r_i^e mod n
3. Sign
成员 i 对消息 m 签名:
- 选择随机 s ∈ Z_n^*
- 计算 h = H(m || s^e mod n)
- 计算 e' = (h + d) mod (p-1)(q-1),其中 d 是 GM 私钥的一部分
- 计算 σ = (s, e')
4. Verify
验证者检查:
- 计算 h = H(m || σ_1^e mod n)
- 验证 σ_2 = e^{-1}(h - σ_2') mod (p-1)(q-1) 是否成立
5. Open
GM 使用 gmsk = (p, q) 打开签名:
- 从 σ_1 恢复 s
- 查找 L 中满足 pk_i = s^e mod n 的成员 ID
- 签名长度与群大小线性相关,不适用于大规模群体
- 抗共谋性证明不完整
- 效率较低,每次签名需要 O(n) 次运算
高效构造:Camenisch-Michels 方案
Camenisch 和 Michels 在 1998 年提出了第一个满足完全匿名性和完全可追溯性的高效群签名方案,解决了原始方案的三大缺陷。
核心思想
Camenisch-Michels 方案基于以下密码学工具:
- RSA 假设:用于签名生成和验证
- 强 Rabin 签名:用于成员证书的生成
- 零知识证明:用于匿名性的保证
- 模拟证明:用于安全归约
算法结构
Setup(n):
- 选择 RSA 模数 N = p·q,其中 p, q 为大素数
- 选择公开指数 e
- 计算私钥 d = e^{-1} mod φ(N)
- 群公钥 gpk = (N, e)
- 群管理私钥 gmsk = (d, 信息用于成员管理)
- GM 为成员 i 选择随机 r_i
- 计算 u_i = r_i^e mod N
- 生成成员私钥 sk_i = (r_i, 证书)
- 证书 cert_i 是 GM 对 u_i 的签名
- 选择随机 a, b ∈ Z_N^*
- 计算 commitment C = a^e · u_i^b mod N
- 生成零知识证明 π 证明:
- 知道 (a, b) 使得 C = a^e · u_i^b
- 知道 (r_i, cert_i) 使得 u_i = r_i^e 且 cert_i 是有效签名
- 计算签名 σ = (C, π, h, s)
- 验证零知识证明 π 的有效性
- 验证签名结构完整性
- 使用 GM 私钥解密 C 恢复 u_i
- 查表找到对应的成员 ID_i
安全性证明
Camenisch-Michels 方案的安全性基于以下假设:
- RSA 假设:给定 (N, e) 和 y,难以找到 x 使得 x^e = y mod N
- 强 RSA 假设:即使知道因子分解,也难以找到 e 次根
- Fermat 素数假设:用于证明抗共谋性
效率分析
| 操作 | 时间复杂度 | 空间复杂度 |
|---|---|---|
| Setup | O(log N) | O(1) |
| KeyGen | O(log N) | O(log N) |
| Sign | O(log²N) | O(log N) |
| Verify | O(log²N) | O(log N) |
| Open | O(log N) | O(1) |
现代进展与优化
Short Group Signatures
Boneh、Boyen 和 Shacham等人在 2004 年提出了基于双线性对的短群签名方案,显著减少了签名长度。
核心思想:
- 使用 Boneh-Boyen 短签名作为基础
- 利用双线性对的同态性质构造零知识证明
- 签名长度从 O(log N) 压缩到 O(1)
Forward-Secure Group Signatures
forward-security 要求即使 GM 私钥在未来泄露,之前的签名仍然保持匿名性。构造方法:
- 使用增量密钥更新机制
- 结合时间戳和单向函数链
- GM 私钥按时间段分段管理
Revocation 机制
成员撤销是群签名的核心挑战。主要方法:
方法一:黑名单机制
- GM 维护撤销列表 Rev
- 签名中必须包含对撤销列表的证明
- 缺点:撤销列表 grows unboundedly
- 使用累积器动态维护有效成员集合
- 优点:常数大小,支持动态添加删除
- 缺点:计算开销较大
- 签名绑定时间段
- 定期更新群公钥
- 撤销成员只需使其旧私钥失效
动态群签名
动态群签名支持成员的动态加入和离开,主要方案:
- 基于累积器的动态方案:用密码学累积器维护成员集合
- 基于树的结构:将成员组织成树结构,支持高效撤销
- 基于身份的群签名:结合标识密码简化密钥管理
国密适配路径
群签名在国密场景下具有重要应用价值,特别是在以下领域:
- 电子投票系统:选民匿名但可追溯
- 供应链溯源:匿名参与但责任可追溯
- 隐私计算联盟:多方协作中的匿名证明
- 企业权限管理:员工匿名操作可审计
算法替换策略
| 国际算法 | 国密替代 | 说明 |
|---|---|---|
| RSA | SM2 签名 | 基于椭圆曲线,更安全高效 |
| BLS 短签名 | SM2 简化签名 | 利用 SM2 的确定性签名特性 |
| 双线性对 | 暂无直接对应 | 需使用其他技术替代 |
SM2 群签名设计思路
由于 SM2 标准不包含双线性对,设计 SM2 群签名需要额外技术手段:
- 使用 SM2 替代 RSA:
- 成员私钥:随机整数 r_i ∈ [1, n-1]
- 成员公钥:R_i = [r_i]G,其中 G 是 SM2 生成元
- GM 私钥:d_GM,GM 公钥:P_GM = [d_GM]G
- 签名构造:
- 成员选择随机 k
- 计算承诺 C = [k]G
- 生成 ZKP 证明知道 (k, r_i) 使得 C = [k]G 且 R_i = [r_i]G
- 由于 SM2 无双线性对,ZKP 使用 Fiat-Shamir 启发式
- 可追溯性:
- GM 拥有所有成员的 r_i(或通过安全通道分发)
- 打开时,GM 匹配 C 对应的 r_i,恢复成员身份
国密标准现状
目前,国家标准委尚未发布专门的群签名标准。相关研究参考:
- GM/T 0003.2-2012:SM2 数字签名算法(群签名的基础组件)
- GM/T 0010-2012:SM2 密码算法加密签名消息语法规范(签名格式)
相关实践
群签名的工程实现面临以下挑战:
- 密钥管理复杂度:GM 私钥是单点故障,需 HSM 保护
- 性能瓶颈:大规模群体的签名/验证开销
- 隐私边界:追溯权与被追溯权的平衡
- 标准兼容性:不同系统间的互操作性
- SM2 数字签名算法原理 — 群签名的基础签名组件
- 盲签名算法原理 — 另一种匿名签名方案
- 环签名算法原理 — 无管理者的匿名签名对比
总结
群签名是密码学中一个优雅且实用的原语,其核心价值在于平衡匿名性与可追溯性。从 Chaum-Van Heyst 的开创性工作和 Camenisch-Michels 的高效构造,到现代短签名和动态撤销机制,群签名理论已相当成熟。
在国密场景下,群签名具有广阔的应用前景,特别是在电子投票、供应链溯源、隐私计算联盟等领域。虽然目前尚无专门的国密群签名标准,但基于 SM2 的设计思路已较为清晰。未来,随着国密标准的完善和工程实践的发展,群签名将在更多场景中发挥重要作用。
群签名的核心设计哲学——在匿名与可追溯之间取得平衡——对理解其他隐私保护技术(如零知识证明、混币方案)也有重要启发意义。
参考文献
- D. Chaum and E. Van Heyst, "Group Signatures," in Advances in Cryptology — EUROCRYPT '91, LNCS 547, Springer, 1991, pp. 257–265.
- M. Bellare, D. Micciancio, and B. Warinschi, "Foundations of Group Signatures: Formal Definitions, Simplified Requirements, and a Construction Based on General Assumptions," in ACM CCS 2003.
- J. Camenisch and M. Michels, "A Group Signature Scheme with Improved Efficiency," in Advances in Cryptology — ASIACRYPT '98, LNCS 1514, Springer, 1998, pp. 160–174.
- D. Boneh, X. Boyen, and H. Shacham, "Short Group Signatures," in Advances in Cryptology — CRYPTO 2004, LNCS 3152, Springer, 2004, pp. 41–55.
- ISO/IEC 20008-2:2013, "Information technology — Security techniques — Anonymous digital signatures — Part 2: Mechanisms using a group public key."
- GM/T 0003.2-2012, 《SM2 椭圆曲线公钥密码算法 第 2 部分:数字签名算法》.