您好,欢迎访问比特财经网!
热门搜索: BTC ETH EOS BCH
您当前位置:首页

MuSig : BTC可用的Schnorr签名方案(下)

2019-02-23 00:00 信息来源 : 比特财经网
Uniform随机性
 
对于单个签名,实现统一随机nonce的标准方法很简单:取一些机密数据和要签名的消息,通过加密哈希函数传递这些数据,得到一个统一随机值,该值对于每个要签名的消息而言都是独立的。

然而,有了多重签名,这个简单而健壮的解决方案就成了一种负担。恶意签名者可能会在同一条消息上请求两个多重签名,从而在第二次迭代中调整自己对签名的贡献。如果第一个签名者通过在消息旁边哈希一个秘密来选择他的nonce,那么他最终将在两个非常不同的签名中使用相同的nonce(本质上是导致PS3被黑客攻击的相同失败模式。)不幸的是,与单个签名者的情况不同,没有简单的解决方案,因为单个签名者必须在知道要生成的签名的所有细节之前选择它们的nonce。

解决这个问题的一个传统方法,是使用硬件随机数生成器,这种方法在散列法( hashing)流行之前就已被使用了。不幸的是,这类方案都是昂贵的,会受到环境偏见或其他外部影响,最重要的是,我们没有办法验证它们是否正确运行。

关于验证这一点,有一些创造性的解决方案,Blockstream将在以后的文章中探讨。目前,其选择是要求API用户为每个签名会话提供唯一的“会话ID”。nonce是通过哈希签名者的秘密、签名者集、要签名的消息,以及这一会话的唯一输入而产生的。可访问随机数生成器的用户,可以使用它来生成会话ID,而可问持久内存的用户,只需使用计数器即可。

目前开发人员期望能很快生产出一个真正强大的解决方案。

关于重放攻击(Replay Attack)
 
即使有一个可靠的随机性来源,仍有可能从多重签名的参与者那里提取私钥(如果在整个过程中,可能从一个点重放签名协议的话),这种类型的攻击被称为“重放攻击”,可针对在可重启的虚拟机内运行的签名者,以及支持间断签名及从可序列化状态恢复的虚拟机发动攻击。它甚至可能在没有活动攻击者的情况下意外发生,例如运行从同一状态克隆的两个虚拟机,或者在不同步的分布式数据库上执行代码。

具体来说,如果一个签名者贡献了一个多重签名,并且签名过程在选择了他的nonce之后的某一点,通过重启的方式,则可修改其他签名者对签名的贡献。

这些类型的攻击不会以单个签名出现,因为它们是在一个步骤中生成的,没有中间状态可从中重新启动。这些额外的挑战,对于多轮加密协议来说是独一无二的。

如果不去研究新的机制,目前的MuSig签名方案就无法保护在虚拟机中进行签名的用户。同样,这一限制在Blockstream的开发者看来是可消除的,目前他们正在积极研究解决方案。

结论,以及未来的工作
 
所有上述讨论都隐含着这样一个观点:即相比单方协议,多方协议会面临新的、实质上更困难的挑战。就数学复杂性而言,MuSig要比Bulletproofs(防弹证明)要简单得多。但在实现复杂性方面,MuSig已经付出了更多的努力,并且需要在抗脆性和API灵活性之间进行更多的权衡。

这篇文章只描述了多重签名部分,在未来的文章中,开发者还将描述门限签名,这是一个相关的概念,其中n个签名者的任何子集,只要数量足够,就能够生成签名,而不需要整个签名组的贡献。

在以后的文章中,我们还将讨论一些使非随机性更安全和更可验证的技术。特别是,通过使用一种称为签订合约(sign-to-contract)的技术,主机可以从不可信的硬件钱包的随机数生成器中消除任何偏差的可能性。

更进一步的是,通过利用零知识证明的能力,应该可消除偏随机性(biased randomness)和重放攻击所带来的风险,消除对持久内存的需求,并将MuSig协议从3轮通信减少到2轮。

比特币:www.btcmoney.cc

本文经授权发布,不代表比特财经网立场。如若转载请标注文章来源:比特财经网
分享到:

热门文章

相关资讯