随着比特币的Taproot更新越来越近,社区成员对MuSig多重签名方案产生了相当大的兴趣,MuSig允许一个团体共同管理一些比特币,并创建一个签名来授权支付。由于MuSig创新的密钥聚合特性,这种签名是一种常规的Schnorr签名,一旦Taproot被激活,比特币网络就可以对这种签名进行处理。当用于创建多重签名钱包时,与使用CHECKMULTISIG操作码进行n-of-n多重签名的传统方式相比,MuSig降低了交易费用并增加了隐私性,而传统方法则在区块链上需要n个公钥以及n个ECDSA签名。
在2018年,Blockstream公司发布了MuSig方案的第一个版本,我们将其称为MuSig1,正如我们将在下面讨论的,由于签名者之间需要多轮通信,在实践中部署MuSig1可能很困难。为了改进MuSig1,使得签名过程变得更加容易,Blockstream的研究者联合法国国家网络安全局的密码学家YannickSeurin共同设计了名为MuSig2的新方案论文,而这种方案只需要两轮通信,目前,这篇论文正在接受同行评审。
本文会简单介绍MuSig2和之前版本的MuSig1之间的差异,原文作者是JonasNick和TimRuffing。
MuSig1的交互性问题
与基于CHECKMULTISIG的钱包相比,MuSig1最大的缺点在于,它需要签名者之间的交互,更准确地说,创建签名需要三轮通信,而每一轮通信都由来回传递的消息组成。下图显示了两个签名者的交互过程。你可以想象一个签名者使用的是一个桌面钱包,而另一个签名者使用的是BlockstreamGreencosigner,或者签名者共享一个他们试图关闭的闪电网络通道。
相比之下,使用CHECKMULTISIG的钱包只需要一轮通信:它们接收一笔交易并返回一个签名。例如,如果使用MuSig1在闪电网络中转发支付,隐私将得到改善,但支付所需的时间明显更长了。随着通信延迟的增加,这个问题就变得更加严重了。而存储在安全保险箱中的MuSig1签名设备,需要其所有者访问两次才能创建签名。
MuSig2允许非交互式签名
而最新提出的MuSig2多重签名方案,旨在成为MuSig1的继承者,它提供了与MuSig1相同的功能和安全性,但可以消除签名者之间几乎所有的交互。使用MuSig2,签名者只需要进行两轮通信就可以创建签名,而且关键的是,在签名者知道他们想要签名的消息之前,可以对其中一轮进行预处理。一旦有消息需要签名,例如一笔比特币交易,那么其过程与今天基于CHECKMULTISIG的钱包相同:将交易转移给签名者,然后接收一个签名。总的来说,MuSig2保留了MuSig1的简单性和效率,只增加了少量的额外计算。
MuSig家族
几周之前,研究者们讨论了MuSig-DN,它是一个使用了零知识证明的两轮通信协议,相比MuSig2而言,它要复杂得多。而MuSig-DN的优点在于它支持确定性nonce,从而避免了在签名会话和轮次之间保持状态的需要。
这就提出了在给定应用中使用哪个方案的问题。上表说明,我们没有理由选择MuSig1,而是应该选择MuSig2。实际上,我们希望大多数应用选择MuSig2而不是MuSig-DN,因为简单性是采用的主要因素。在创建可互操作的实现时,尤其如此,因为所有签名者都必须同意使用相同的协议。此外,对非交互式签名的支持显著提高了可用性。
另一方面,如果签名会话需要存储在持久介质上,那么MuSig-DN方案的无状态属性是有益的。为了演示这种情况下MuSig2的风险,假设我们执行以下一系列事件:
开启一个MuSig2签名会话;
将会话保存到一个硬盘驱动器;
执行硬盘驱动器备份;
完成签名会话;
恢复备份;
再次完成会话;
结果是,我们创建了两个具有相同nonce的签名,其可用来窃取我们的密钥。因此,MuSig2的实现者必须要小心,以确保不会发生上述情况。相比之下,MuSig-DN方案就可以防止这种攻击。
构造两轮多重签名的挑战
构造一个简单的只需要两轮通信的Schnorr多重签名方案,并且在并发会话下仍然是安全的,这是一个尚未解决的研究问题。所有以前的尝试都会受到Drijvers等人发现的一种巧妙的攻击。在这种情况下,攻击者与受害者签名者打开许多会话,并能够获得受害者不打算签名消息的签名。
让我们快速看看,是什么让MuSig2在并发会话下变得安全。其中,在MuSig1中,每个签名者i创建一个nonce,而在MuSig2中,每个签名者创建两个nonceR_i,1和R_i,2,在第一轮通信时将它们发送给其他签名者,并有效地使用这些nonce的随机线性组合R_i=R_i,1+b*R_i,2,代替之前单独的nonceR_i。而系数b是应用于所有签名者nonce、聚合公钥和消息的哈希函数的输出。在MuSig1中,聚合的nonce是R=R_1+…+R_n。如果任何签名者更改了他们的任何nonce,则其他每个签名者都将使用他们两个nonce的不同的随机线性组合。这可以防止已被发现的针对其他两轮多签名方案的攻击。所有细节你可以在MuSig2论文中找到。
关于下一步
目前blockstream希望用MuSig2取代secp256k1zkp库中的MuSig1实现,它将更为简单,更重要的是,它更易于使用。根据开发者的说法,使用工具箱中的MuSig2,一些协议将从中受益,例如“无脚本脚本闪电网络”以及门限签名。如果比特币社区选择采用Taproot软分叉,则MuSig2会适用于Blockstream的一系列产品,比如BlockstreamGreen和c-lightning,它也适用于Liquid锚定机制。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。