面试题:MPC GG20 与 GG18、 CGGMP21区别
这是一个非常经典的 MPC/TSS 面试题,尤其是做钱包、托管、AA Wallet、链上签名基础设施时经常会问。
你可以从:
- 发展历史
- 签名轮数(round)
- 在线/离线阶段
- identifiable abort
- 安全性
- 工程复杂度
- 性能
几个维度回答。
一句话概括
- GG18:第一个真正实用的 threshold ECDSA
- GG20:GG18 的工程化优化版,引入 offline/online signing 和 identifiable abort
- CGGMP21:目前业内最先进的一类 threshold ECDSA,进一步降低在线交互轮次,支持预处理和更强安全模型
先讲背景:为什么 ECDSA MPC 很难?
ECDSA 的核心问题:
[ s = k^-1(m + rx) ]
这里同时涉及:
- 私钥 (x)
- nonce (k)
- inverse (k^-1)
而:
- (k) 绝对不能泄露
- 还需要做乘法:
[ rx ]
这导致:
- threshold Schnorr 很简单(FROST)
- threshold ECDSA 非常复杂
所以 GG18/GG20/CGGMP21 本质都是:
如何在不泄露 x/k 的情况下,多方安全完成 ECDSA 的乘法与逆元计算。
一、GG18
论文:
- Gennaro & Goldfeder 2018
它是:
第一个真正支持 t-of-n 的 Threshold ECDSA。
GG18 特点
1. 基于 Paillier Homomorphic Encryption
核心:
- 用 Paillier 做 MtA(Multiplicative to Additive)
即:
把:
[ ab ]
变成:
[ a_i + b_i ]
的 secret share。
这是 threshold ECDSA 的核心技巧。
2. 签名轮数高
GG18 最大问题:
- signing 约 9 rounds
通信极重。
这是它最大缺点。 (Tübitak Bilgem)
3. 没有 identifiable abort
如果有人恶意:
- 发错误 proof
- 中途退出
你很难定位是谁。
4. 工程复杂
GG18 有大量:
- ZK Proof
- range proof
- Paillier proof
实现难度极高。
GG18 面试总结
你可以一句话:
GG18 是第一个真正可用的 threshold ECDSA,但 round 太多、交互太重、缺少 identifiable abort,因此工程体验一般。
二、GG20
GG20 是 GG18 的升级版。
核心目标:
降低在线签名 latency。
GG20 最大创新:offline / online
GG20 把签名拆成:
- offline preprocessing
- online signing
Offline 阶段
提前做:
- Paillier computation
- MtA
- nonce generation
- proof
这些很重。
Online 阶段
真正签消息时:
只剩:
- 少量 scalar multiplication
- 极少交互
所以:
在线签名接近 1 round。 (Tübitak Bilgem)
GG20 的 identifiable abort
GG20 一个重要特性:
可识别恶意方
如果有人:
- 发错 proof
- 篡改消息
- 中途退出
协议能:
明确定位恶意 participant。
这在托管系统极重要。
GG20 vs GG18
| 特性 | GG18 | GG20 |
|---|---|---|
| 签名轮数 | ~9 | online 接近 1 |
| identifiable abort | ❌ | ✅ |
| offline preprocess | ❌ | ✅ |
| latency | 高 | 低 |
| 工程复杂度 | 很高 | 更高(笑) |
GG20 的问题
虽然更快:
但:
1. 仍然依赖 Paillier
所以:
- 大整数运算重
- proof 非常复杂
2. Paillier 参数有安全坑
后来发现:
- 一些实现对 Paillier modulus 验证不严格
- 可导致 key leakage
典型:
Fireblocks 披露的 GG18/GG20 漏洞。 (Fireblocks)
三、CGGMP21
全名:
- Canetti-Gennaro-Goldfeder-Makriyannis-Peled 2021
它本质:
在 GG20 基础上的现代化 redesign。
CGGMP21 的核心目标
1. 更少 online round
支持:
- 1-round online signing(需 preprocessing)
这是目前业界非常重要的特性。 (docs.rs)
2. 更强安全性
CGGMP21 修复了:
- GG18/GG20 一些 proof weakness
- Paillier 参数问题
- MtA proof 问题
安全模型更完整。 (certik.com)
3. 更现代的 protocol modularization
CGGMP21:
- preprocessing 更独立
- signing 更模块化
- 更适合生产系统
4. 支持 key refresh
现代 MPC Wallet 很重要:
- 不换公钥
- 定期刷新 secret share
降低长期泄露风险。
CGGMP21 对 refresh 支持更好。 (docs.rs)
5. 工程界采用越来越多
现在很多:
- Rust MPC SDK
- 新 MPC Wallet
- institutional custody
开始转向 CGGMP21。
例如 Rust crate:
GG18 / GG20 / CGGMP21 总对比
| 维度 | GG18 | GG20 | CGGMP21 |
|---|---|---|---|
| 年代 | 2018 | 2020 | 2021 |
| 核心目标 | 首个实用 Threshold ECDSA | 降低 online latency | 现代化/更安全 |
| 在线轮数 | 高(~9) | 极低 | 1-round |
| Offline preprocess | ❌ | ✅ | ✅ |
| identifiable abort | ❌ | ✅ | ✅ |
| 安全性 | 初代 | 更强 | 更强 |
| Paillier | ✅ | ✅ | ✅(但proof更完善) |
| Key refresh | 有限 | 部分 | 更完善 |
| 工程复杂度 | 高 | 很高 | 很高 |
| 当前行业趋势 | 老 | 仍常见 | 新趋势 |
面试官真正想听什么?
重点通常是:
1. 你知道 GG20 是 GG18 的优化
而不是全新体系。
2. 你知道 offline/online separation
这是 GG20 核心。
3. 你知道 identifiable abort
这是生产环境关键。
4. 你知道 CGGMP21 是目前 state-of-art
特别:
- 1-round signing
- preprocessing
- 更强 proof
如果继续深问
面试官可能继续:
Q1:为什么 ECDSA MPC 比 Schnorr 难?
你答:
ECDSA 有:
[ k^-1(m+rx) ]
需要:
- inverse
- multiplication
而 Schnorr/FROST 只有线性加法。
Q2:为什么大家喜欢 FROST?
因为:
- round 少
- proof 简单
- 不需要 Paillier
- 更适合 MPC
但:
- Bitcoin/Ethereum 用的是 ECDSA/secp256k1
- 所以钱包不得不做 threshold ECDSA。
Q3:为什么 Paillier 很重要?
因为:
ECDSA MPC 需要安全做:
[ ab ]
Paillier 支持:
[ E(a)^b = E(ab) ]
从而实现 MtA。
最后给你一个“面试版标准答案”
可以直接背:
GG18 是第一个真正实用的 threshold ECDSA 协议,但 signing round 很高,通信复杂,没有 identifiable abort。
GG20 在 GG18 基础上引入了 offline/online separation,把大量计算放到 preprocessing 阶段,因此在线签名延迟非常低,并支持 identifiable abort,更适合生产环境。
CGGMP21 则是在 GG20 基础上的进一步现代化方案,支持 1-round signing、更强的安全证明、更完善的 preprocessing 与 key refresh,目前被认为是 state-of-the-art 的 threshold ECDSA 协议之一。
这几个协议本质都依赖 Paillier + MtA 来解决 ECDSA 中乘法与逆元的问题。 (Tübitak Bilgem)