Multiparty Threshold ECDSA (CMP, CGGMP)
Table of Contents
1. 简介
本文介绍论文 UC Non-Interactive, Proactive, Threshold ECDSA(按作者名字缩写一般简称 CMP20 或 CMP 协议),和论文 UC Non-Interactive, Proactive, Threshold ECDSA with Identifiable Aborts(按作者名字缩写一般简称 CGGMP21 或 CGGMP 协议)中提出的多方 ECDSA 门限签名协议。
从论文的名称中容易知道,这两个协议的主要区别在于 CGGMP 协议支持识别恶意参与者,而 CMP 协议不支持。
1.1. 标准 ECDSA
设
签名数据可记为
2. GG18 回顾
CMP/CGGMP 协议和 GG18 协议有很深的渊源,CGGMP 论文的五个作者就是 CMP 论文的三个作者加上 GG18 论文的两个作者。节 3.2.1 会介绍 CMP/CGGMP 协议和 GG18 协议的主要区别。
下面简单总结一下 GG18 签名协议。需要说明的是,下面的记号风格和 CMP/CGGMP 论文一致,和 GG18 论文不同(如下面的记号
求签名
求签名
总结: 每个参与者如何求解
2.1. 仅需 4 rounds(不考虑恶意参与者)
如果不考虑恶意参与者,则 GG18 的签名协议只需要 4 个 rounds(前 3 个 rounds 和待签名数据
通过前 3 个 rounds 可以求出
Figure 1: 不考虑恶意参与者,GG18 只需要 3 rounds 可以求解
第 4 个 round 时,每个参与者收到了其它参与者公开了
为了能够抵抗恶意参与者,GG18 的签名协议总共需要 9 rounds。 抵抗恶意参与者导致 GG18 额外增加了 5 个 rounds。
3. CMP/CGGMP
3.1. Key Generation
CMP/CGGMP 论文中介绍的 DKG 算法,是一种 n/n 方案,并不是更通用的 t/n 方案。论文中是这样交待的:
In this work we mainly focus on n-out-of-n multi-party signing, and do not explicitly consider the more general t-out-of-n threshold signing for t < n. Such a protocol can be derived almost immediately from our protocol herein for the online variant using Shamir secret-sharing, with relevant changes to the protocol’s components, similarly to Gennaro and Goldfeder.
Keygen 过程中参与者除了生成私钥分片外,还要生成下面参数:
- Paillier 密钥对(私钥自己保留,公钥发送给其他参与者);签名过程中 MtA 子协议中需要它。
- Ring-Pederson 参数
;MtA 子协议的 Range Proof 中需要这些参数。它们就是 GG18 论文中提到的参数 。 - ElGamal 密钥对(私钥自己保留,公钥发送给其他参与者);ElGamal 密钥对只有当签名采用“6 rounds Pre-Signing 加 1 round Signing”的方案(这种方案识别恶意参与者的效率更高,仅在 CGGMP 论文中介绍了这个方案,在 CMP 论文中没有)时才需要它,如果签名采用“3 rounds Pre-Signing 加 1 round Signing”的方案(CGGMP 论文和 CMP 论文都有这个方案)则不需要它。
3.2. Signing
在介绍 CMP/CGGMP 签名协议之前,先介绍一下 GMW compiler。
GMW compiler 是一种将 Semi-Honest MPC 协议转换为 Malicious MPC 协议的通用方法。GMW Compiler 的基本思路是:先设计一个 Semi-Honest MPC 协议,然后对每一步引入零知识证明以确保参与者忠实地执行协议,这样就把 Semi-Honest MPC 协议改造成了 Malicious MPC 协议。
3.2.1. CMP/CGGMP 思路
3.2.2. CGGMP 签名(3 rounds Pre-Signing)和(1 round Signing)
CGGMP 签名协议如图 2 和图 3 所示(摘自 CGGMP 4.3 Signing),总共是 4 rounds。其中前 3 rounds 不需要待签名消息,可以提前进行;最后 1 round 才需要待签名消息。 这 4 rounds 和节 2.1 中介绍的 GG18 协议的 4 rounds 可以一一对应,不过是每个 rounds 中额外增加了很多零知识证明以确保参与者忠实地执行协议。
Figure 2: CGGMP Pre-Signing(3 rounds)
Figure 3: CGGMP Signing(1 round)
注 1:CMP 论文中的签名协议也是 4 rounds,和上面介绍的 CGGMP 4 rounds 签名协议的主要过程基本相同。
注 2:CGGMP 论文中还介绍一种 7 rounds(前 6 rounds 不需要待签名消息,可以提前进行)的签名协议,它识别恶意参与者的效率更高,这里不介绍。
3.2.3. 一些零知识证明
3.2.3.1.
Paillier Encryption in Range:
上面关系记号中,
在范围 中,即 的 Paillier 密文是 ,即
为关系
Figure 4: Paillier Encryption in Range ZK –
3.2.3.2.
Paillier Affine Operation with Group Commitment in Range:
其中
这个关系需要满足上面式子中提到的 5 个约束,我们重点关注一下第 3 个约束,即
- 假设
的 Paillier 密文是 ,则在密文 上进行指数运算得到 ,这个结果是 的 Paillier 密文; - 假设
的 Paillier 密文是 ,则在密文 上进行乘法运算 ,这个结果是 的 Paillier 密文。
也就是说第 3 个约束表达的意思是: 如果
为关系
Figure 5: Paillier Operation with Group Commitment in Range ZK -
3.2.3.3.
Dlog vs Paillier Encryption in Range:
其中
关系
为关系
Figure 6: Knowledge of Exponent vs Paillier Encryption –
3.3. 关于 Broadcast 消息
协议中很多地方都提到了参与者把某消息 Broadcast 给其它参与者,这其中隐含的含义是:存在一个“可靠的广播通道”,往这个广播通道发送消息时,所有参与者都能收到消息,而且是收到相同的消息。
但在真正环境中,没有这样的“可靠的广播通道”,往往只有 Point-to-Point 网络。恶意参与者通过 Point-to-Point 网络发送 Broadcast 消息时,可能往不同的参与者发送不同的消息。这种攻击在 CMP/CGGMP 论文中并没有考虑。不过,在 CMP/CGGMP 论文 3.1 节中的“Remark 3.2”中,对 Broadcast 消息进行了说明:
We observe that the protocol instructs the parties to (verifiably) broadcast some of their messages (as opposed to messages which are “sent to all”, where equality verification is not required). For non-unanimous halting [see Secure Computation Without Agreement], this can be achieved in a point-to-point network using echo-broadcasting with one extra round of communication.
也就是, CMP/CGGMP 论文建议读者采用 Secure Computation Without Agreement 中的提到的 Echo-Broadcast Protocol(如图 7)在 Point-to-Point 网络中实现可靠地广播。
Figure 7: Echo-Broadcast Protocol 可实现在 Point-to-Point 网络中可靠地广播消息
下面以