24

科普 | 一文了解比特币新签名方案MuSig2

 3 years ago
source link: https://www.8btc.com/article/666407
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

随着比特币的Taproot更新越来越近,社区成员对MuSig多重签名方案产生了相当大的兴趣,MuSig允许一个团体共同管理一些比特币,并创建一个签名来授权支付。由于MuSig创新的密钥聚合特性,这种签名是一种常规的Schnorr签名,一旦Taproot被激活,比特币网络就可以对这种签名进行处理。当用于创建多重签名钱包时,与使用 CHECKMULTISIG 操作码进行n-of-n多重签名的传统方式相比,MuSig降低了交易费用并增加了隐私性,而传统方法则在区块链上需要n个公钥以及n个ECDSA签名。

在2018年,Blockstream公司发布了MuSig方案的第一个版本,我们将其称为MuSig1,正如我们将在下面讨论的,由于签名者之间需要多轮通信,在实践中部署MuSig1可能很困难。为了改进MuSig1,使得签名过程变得更加容易,Blockstream的研究者联合法国国家网络安全局(ANSSI)的密码学家Yannick Seurin共同设计了名为 MuSig2的新方案 ,而这种方案只需要两轮通信,目前,这篇论文正在接受同行评审。

本文会简单介绍MuSig2和之前版本的MuSig1之间的差异,原文作者是Jonas Nick和 Tim Ruffing。

QfiANjj.png!mobile

MuSig1的交互性问题

与基于 CHECKMULTISIG 的钱包相比,MuSig1最大的缺点在于,它需要签名者之间的交互,更准确地说,创建签名需要三轮通信,而每一轮通信都由来回传递的消息组成。下图显示了两个签名者的交互过程。你可以想象一个签名者使用的是一个桌面钱包,而另一个签名者使用的是Blockstream Green cosigner,或者签名者共享一个他们试图关闭的闪电网络通道。

Fn6jYv.png!mobile

相比之下,使用 CHECKMULTISIG 的钱包只需要一轮通信:它们接收一笔交易并返回一个签名。例如,如果使用MuSig1在闪电网络中转发支付,隐私将得到改善,但支付所需的时间明显更长了。随着通信延迟的增加,这个问题就变得更加严重了。而存储在安全保险箱中的MuSig1签名设备,需要其所有者访问两次才能创建签名。

MuSig2允许非交互式签名

而最新提出的MuSig2多重签名方案,旨在成为MuSig1的继承者,它提供了与MuSig1相同的功能和安全性,但可以消除签名者之间几乎所有的交互。使用MuSig2,签名者只需要进行两轮通信就可以创建签名,而且关键的是,在签名者知道他们想要签名的消息之前,可以对其中一轮进行预处理。一旦有消息需要签名,例如一笔比特币交易,那么其过程与今天基于CHECKMULTISIG的钱包相同:将交易转移给签名者,然后接收一个签名。总的来说,MuSig2保留了MuSig1的简单性和效率,只增加了少量的额外计算。

MuSig家族

几周之前,研究者们讨论了 MuSig-DN ,它是一个使用了零知识证明的两轮通信协议,相比MuSig2而言,它要复杂得多。而MuSig-DN的优点在于它支持确定性nonce,从而避免了在签名会话和轮次之间保持状态的需要(即无状态)。

zeIfAf.png!mobile

这就提出了在给定应用中使用哪个方案的问题。上表说明,我们没有理由选择MuSig1,而是应该选择MuSig2。实际上,我们希望大多数应用选择MuSig2而不是MuSig-DN,因为简单性是采用的主要因素。在创建可互操作的实现时,尤其如此,因为所有签名者都必须同意使用相同的协议。此外,对非交互式签名的支持显著提高了可用性。

另一方面,如果签名会话需要存储在持久介质上,那么MuSig-DN方案的无状态属性是有益的。为了演示这种情况下MuSig2的风险,假设我们执行以下一系列事件:

  1. 开启一个MuSig2签名会话;
  2. 将会话保存到一个硬盘驱动器;
  3. 执行硬盘驱动器备份;
  4. 完成签名会话;
  5. 恢复备份;
  6. 再次完成会话;

结果是,我们创建了两个具有相同nonce的签名,其可用来窃取我们的密钥。因此,MuSig2的实现者必须要小心,以确保不会发生上述情况。相比之下,MuSig-DN方案就可以防止这种攻击。

构造两轮多重签名的挑战

构造一个简单的只需要两轮通信的Schnorr多重签名方案,并且在并发会话(即,如果某个签名者同时参与多个签名会话)下仍然是安全的,这是一个尚未解决的研究问题。所有以前的尝试(包括早期版本的MuSig1论文)都会受到Drijvers等人发现的一种巧妙的攻击。在这种情况下,攻击者与受害者签名者打开许多会话,并能够获得受害者不打算签名消息的签名。

让我们快速看看,是什么让MuSig2在并发会话下变得安全。其中,在MuSig1中,每个签名者 i 创建一个nonce,而在MuSig2中,每个签名者创建两个nonce R_i,1R_i,2 ,在第一轮通信时将它们发送给其他签名者,并有效地使用这些nonce的随机线性组合 R_i = R_i,1 + b*R_i,2 ,代替之前单独的nonce R_i 。而系数 b 是应用于所有签名者nonce、聚合公钥和消息的哈希函数的输出。在MuSig1中,聚合的nonce是 R = R_1 + … + R_n 。如果任何签名者更改了他们的任何nonce,则其他每个签名者都将使用他们两个nonce的不同的随机线性组合。这可以防止已被发现的针对其他两轮多签名方案的攻击。所有细节你可以在MuSig2论文中找到。

关于下一步

目前blockstream希望用MuSig2取代secp256k1zkp库中的MuSig1实现,它将更为简单,更重要的是,它更易于使用。根据开发者的说法,使用工具箱中的MuSig2,一些协议将从中受益,例如“无脚本脚本闪电网络”以及门限签名。如果比特币社区选择采用Taproot软分叉,则MuSig2会适用于Blockstream的一系列产品,比如Blockstream Green和c-lightning,它也适用于Liquid 锚定机制。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK