Schnorr Multi-Signatures
Table of Contents
1. 简介
本文介绍一些 Schnorr 多签协议。多签协议只支持 n-of-n 签名方案,可以认为是 t-of-n 门限签名的一种特殊情况。如果想寻找更通用的 Schnorr 门限签名协议,可以参考 FROST,不过本文不介绍它。
1.1. 记号说明
在描述 Schnorr 签名时,有乘法群和加法群两种形式。如果是乘法群,从私钥推导出公钥的公式为
1.2. Schnorr 签名
下面回顾一下 Schnorr 签名。
设椭圆曲线定义在有限素数域
- 随机选择
- 计算
- 计算
- 计算
- 输出签名
签名验证时,如果
2. Naive Way(Unsafe)
个参与者各自选择一个随机数,如 ,计算 ;- 第
个参与者把 发送给其它所有参与者; - 记
,计算 - 第
个参与者计算 ,并发送 给其它所有参与者; - 每个参与者收到别人发来的
后,都可以计算出 ;总体签名数据就是
校验
这种方案是不安全的,下文将介绍它容易遭受 Rogue-key 攻击。
2.1. Rogue-key 攻击
前面介绍的 Naive Way 是不安全的,容易遭受 Rogue-key 攻击。 具体来说,假设第 1 个参与者是个恶意攻击者,他先不给其它参与者发送他的公钥
要防止 Rogue-key 攻击,一种常用的思路是参与者提供零知识证明,以证明他确实拥有公钥背后的私钥(Knowledge Of Secret Key, KOSK)。比如,上面例子中第 1 个参与者发送
2.2. KOSK 有不足
前面提到,基于 KOSK 可以避免 Rogue-key 攻击。不过,基于 KOSK 有一些不足,RY07 中对此进行了总结:
Unfortunately, there are substantial drawbacks to using the KOSK assumption. Bellare and Neven discuss this in [BN06]; we briefly recall some of their discussion. First and foremost, the KOSK assumption is not realized by existing public key infrastructures (PKI). Registration protocols specified by the most widely used standards (RSAPKCS#10, RFC 4210, RFC 4211) do not specify that CA’s should require proofs of knowledge. Thus, to use schemes proven secure under the KOSK assumption, one would be faced with the daunting task of upgrading existing (and already complex) PKI. This would likely require implementing clients and CA’s that support zero-knowledge (ZK) proofs of knowledge that have extraction guarantees in fully concurrent settings. Non-interactive ZK proofs of knowledge could also be utilized, but these are more computationally expensive.
除了后面的 MOR01 协议可以认为是在 Keygen 阶段进行 KOSK 外,本文介绍的其它协议都不是基于 KOSK 来避免 Rogue-key 攻击,而是使用其它手段来避免 Rogue-key 攻击。
3. MOR01(Dedicated Keygen)
2001 年,Silvio Micali, Kazuo Ohta, Leonid Reyzin 在论文 Accountable-Subgroup Multisignatures 中提到了一种多签方案。
MOR01 协议的 Keygen 阶段要求各个参与者使用各个的私钥进行一次常规的 Schnorr 签名,其它参与者会进行签名校验,这样可确保每个参与者确实知道其公钥所对应的私钥。
MOR01 协议的签名过程和 Naive Way 一样,但它不会遭受 Rogue-key 攻击,这是因为每个参与者在 MOR01 的 Keygen 阶段已经通过常规的 Schnorr 签名证明他确实知道其公钥所对应的私钥。
在本文介绍的所有协议中,MOR01 协议的 Keygen 是最复杂的,其它协议的 Keygen 都是每个参与者本地产生一个公私钥对即可,不需要额外操作。
4. BN06
2006 年,Mihir Bellare 和 Gregory Neven 在论文 Multi-Signatures in the Plain Public-Key Model and a General Forking Lemma 中提出了一种多签方案。
下面以第 1 个参与者(
- 选择一个随机数
,计算 ,计算 ,把 发送给其它的参与者(这个 可看作是 的 Commitment); - 当收到参与者
发来的 后,才把自己的 发送给 (也就是说收到 的 Commitment 后,才发送自己的 ,这样其它参与者无法根据 来构造他的 了); - 从
处收到了 后,校验 是否成立,如果不成立就退出协议。计算: 发送 给其它参与者; - 每个参与者收到别人发来的
后,计算 ,群体签名就是 。
校验
BN06 协议如图 1 所示。
Figure 1: BN06 协议
BN06 的缺点是, 在校验群体签名时,已经不是标准的 Schnorr 签名校验了(因为每个
5. MuSig
2018 年,Gregory Maxwell, Andrew Poelstra, Yannick Seurin, and Pieter Wuille 在论文 Simple Schnorr Multi-Signatures with Applications to Bitcoin 中提出了一种多签方案。它可以看作是 BN06 的增强,解决了 BN06 不支持 Key Aggregation 的缺点。
MuSig 协议和 BN06 协议很像,只是它们在计算
BN06 | MuSig |
---|---|
上面式子中,
校验
MuSig 协议如图 2 所示。
Figure 2: MuSig 协议
6. MuSig-DN
在 Schnorr 签名中,由于有随机产生的 nonce 值(即
2020 年,Jonas Nick, Tim Ruffing, Yannick Seurin, and Pieter Wuille 在论文 MuSig-DN: Schnorr Multi-Signatures with Verifiably Deterministic Nonces 中提出了名为 MuSig-DN 的方案,它是一种确定性 nonce 值的方案,对同一个消息进行多次签名得到的签名结果会相同。
6.1. 不安全的做法
假设 Alice 和 Bob 的私钥和公钥分别为
上面这种方法是不安全的。下面介绍一种攻击方法:Bob 通过两次签名可以获得 Alice 的私钥。第一次签名时,Alice 发送了
显然,如果 Alice 可以检测出 Bob 发送给他的
6.2. MuSig-DN 主要思想
MuSig-DN 是 MuSig 的一种变种,它的主要思想是使用零知识证明来强制所有参与者确定性地生成他们的 nonce 值。
具体来说, 每个参与者都有一个 nonce key
这个场景和 Verifiable Random Function(VRF)有点像,但其实不然。因为使用 VRF 生成结果
如果不考虑性能,可以直接使用 HMAC 或者 AES 来实现
7. MuSig2
2020 年,Jonas Nick, Tim Ruffing, and Yannick Seurin 在论文 MuSig2: Simple Two-Round Schnorr Multi-Signatures 中提出了 MuSig2。和 MuSig 相比, MuSig2 的轮次更少,只需要 2 轮,而 MuSig 需要 3 轮。
和 MuSig 相比 ,MuSig2 主要有下面不同:
- 去掉了提交 Commitment 的第 1 轮(即去掉了提交
的那轮)。 - 一次生成两个 nonce 值(即图 3 中的记号
),而 MuSig 中只有一个 nonce 值。
MuSig2 协议如图 3 所示。
Figure 3: MuSig2 协议
8. 总结
本文介绍的各种多签方案的对比如表 2 所示。
Scheme | Dedicated Keygen | Sign Rounds | Key Aggregation | Deterministic Nonce | Implementation Complexity |
---|---|---|---|---|---|
MOR01 | Yes | 3 | Yes | No | Low |
BN06 | No | 3 | No | No | Low |
MuSig | No | 3 | Yes | No | Low |
MuSig-DN | No | 2 | Yes | Yes | High |
MuSig2 | No | 2 | Yes | No | Low |
9. 参考
- MOR01 Paper: Accountable-Subgroup Multisignatures
- BN06 Paper: Multi-Signatures in the Plain Public-Key Model and a General Forking Lemma
- MuSig Paper: Simple Schnorr Multi-Signatures with Applications to Bitcoin
- MuSig-DN Paper: MuSig-DN: Schnorr Multi-Signatures with Verifiably Deterministic Nonces
- MuSig2 Paper: MuSig2: Simple Two-Round Schnorr Multi-Signatures