Schnorr签名的前世今生:为什么说比特币的隐私性是不可避免的?

2019-03-16 21:19 评论 0 条

数字签名是网络主权的支柱。1976年公钥密码学的出现为全球通讯媒介——互联网和一种全新的货币形式——比特币的诞生铺平了道路。虽然公钥密码学的基本属性自那时以来没有太大的变化,但现在,密码学者的工具箱中都有几十种开源数字签名方案。

当中本聪(Satoshi Nakamoto)开始创造比特币时,需要考虑的一个关键设计选择是,在这个开放、无需许可的金融体系中使用哪种签名方案。其要求很明显;中本聪需要一种被广泛使用、易于理解、足够安全、轻量级且最重要的是开源的算法。在当时所有的备选方案中,他作出了最符合这一标准的选择:椭圆曲线数字签名算法(ECDSA)。

当时,ECDSA由OpenSSL支持,OpenSSL是一套开源加密工具,由密码学朋克开发,用于改善在线通信的隐私。与其他流行的方案相比,ECDSA具有计算需求更少、密钥长度更短的优点;对数字货币来说很有用。同时,它还为RSA(加密算法)这样的方案提供了一定的安全性:例如,256位的ECDSA密钥的安全性相当于3,072位的RSA密钥,但它只是RSA密钥容量的一小部分。

Pieter Wuille等人在改进曲线(如椭圆曲线)secp256k1上的辛勤工作使比特币的ECDSA变得更快更高效了。然而,ECDSA仍然存在固有的缺陷,需要用其他方案取代它。经过多年的研究和实验,一种旨在提高比特币交易隐私和效率的新签名方案——Schnorr数字签名方案出现了。

在本文中,我将概述Schnorr签名的多种部署方式及其相应的优点。然后,我会说明MuSig这种全新的多重签名标准能够为Taproot这样的新型比特币技术带来什么。最后,我要说的是Schnorr如何打破区块链分析中使用的试探法(heuristics)以及如何帮助比特币的主协议层创建一个强大的收费市场。

Schnorr签名的崛起
 
尽管Schnorr数字签名方案与ECDSA相比具备许多优点,但它并不是一个新方案。上世纪80年代,德国密码学家以及学者Claus-Peter Schnorr在法兰克福大学担任教授和研究员时发明了这种机制。他提出的这种签名方案是结合了David Chaum、Taher EIgamal、Amos Fiat以及Adi Shamir的研究。然而,在发表之前,Claus-Peter Schnorr为他的新发明申请了多项专利,导致其在多年来无法被直接使用。

有趣的是,ECDSA的前身DSA是ElGamal和Schnorr方案的结合,后者完全是为了规避Claus Schnorr的专利而设计的。事实上,就在Schnorr的美国专利发布两个月后,DSA的创造者美国国家标准与技术研究院(NIST)也为其解决方案申请了专利。这里要说一小段密码朋克的历史:在那之后,Claus-Peter Schnorr为了捍卫他的专利变得非常激进,并直接回应了Coderpunks(程序员朋克)邮件列表中的批评;这是原始密码朋克邮件列表的一个分支。

2008年,Schnorr签名计划推出近20年后,Claus-Peter Schnorr的专利过期了。巧合的是,2008年也是我们最喜欢的密码朋克中本聪推出比特币的这一年。尽管当时Schnorr签名已经可以被自由使用了,但其既没有实现标准化也没有被广泛使用,这可能是中本聪转而使用ECDSA的原因之一。尽管密码学者和数学家经常用“非常可怕”来形容ECDSA,但其在当时(现在也是如此)得到了广泛使用,并且为比特币提供了更安全的选择。

Schnorr与比特币
 
十年之后的今天,Schnorr方案就不那么神秘了,ed25519之类的标准化部署成为了一些竞争币的优选。有关在比特币上实施Schnorr的非正式讨论可以追溯到2014年的BitcoinTalk论坛,但直到Pieter Wuille提出了Schnorr BIP之后,这项经过多年研究和实验的技术才正式登场。这个BIP描述了一个实现Schnorr的规范和技术细节,与ECDSA相比,其将带来以下优势:

- 安全证明:当使用一个足够随机的哈希函数(随机oracle模型)和签名中使用的椭圆曲线离散对数问题(ECDLP)足够困难时,Schnorr签名的安全性很容易得到证明。但ECDSA不存在这样的证明。

- 非延展性(Non-malleability):ECDSA签名本质上是可延展的,它可以使无法访问私钥的第三方更改现有有效签名并双花资金。BIP62正式讨论了这个问题。相比之下,Schnorr签名被证明是不可延展的。

- 线性特点:Schnorr签名具有一个显著的特性,即多个参与方可以协作生成对其公钥总和有效的签名。这是提高效率和隐私的基础,例如多重签名和其他智能合约。

Schnorr提供的安全证明以及非延展性保证,与ECDSA相比具有明显的优势。仅基于这两个优势,进行软分叉是正确的。然而,Schnorr的线性特性尤其令人兴奋。本质上,这使得多重签名交易中的多个签名者能够将其公钥组合成聚合秘钥;这个特点被称为key aggregation。

尽管组合秘钥的能力听起来微不足道,但是不应该低估聚合秘钥的优势。由于ECDSA本身并不支持多重签名,因此它们必须通过一个名为Pay-to-ScriptHash(P2SH)的标准化智能合约(没错,比特币也有智能合约)在比特币中部署。这使得用户可以添加名为encumbrances(财产留置权)的支出条件来指定资金的使用方式,例如“只有当Alice和Bob都在此消息上签名时,才能解锁余额”。

P2SH存在的第一个问题是,它需要参与多重签名的所有签名者的公钥,这并非一个有效的系统。聚合这些秘钥将实现更有效的验证,因为网络只需要验证一个秘钥,而不是n个。这也意味着占用区块链更少的空间,实现更低的交易成本,改善带宽。

P2SH的第二个问题是,它提供的隐私保障非常少。正如BIP 13所说,P2SH交易需要以3开头的不同地址。这使得区块链观察者不仅可以识别网络中所有的P2SH交易,还可以在多重签名中确定具体的身份:

在上面的例子中,网络可以知道(1)多重签名交易的存在(2)其由多少签名者组成(3)签名者的身份。这不利于操作安全,特别是对于像2FA(双因素认证)这样的应用。而且对隐私也不利。

另一方面,秘钥聚合允许签名者保持匿名,并且不会泄露解锁余额所需的秘钥,以至于影响操作安全性。最重要的是,秘钥聚合可以让多重签名交易与常规交易无异:

Schnorr在比特币中的首个版本将淘汰当前与ECDSA一起使用的OP_CHECKSIG和OP_CHECKMULTISIG操作码,取而代之的是一个名为OP_CHECKDLS的新代码。DLS是离散日志签名,无需太多细节,它允许用更少的操作码更有效地验证签名。

早在2018年初,Gregory Maxwell、Andrew Poelstra、Yannick Seurin和Pieter Wuille就发表了一篇白皮书,讨论一种新的基于Schnorr的多重签名方案MuSig。自从MuSig发布以来,他们一直在努力将这个多重签名方案转换成可用的代码。

在秘钥聚合的环境中,MuSig最有趣的一点是在区块链以外创建私有智能合约的可能性。从本质上讲,MuSig使多重签名参与者能够将encumbrances添加到聚合密钥的链下,这并不需要用到比特币的共识规则。

2018年12月,Anthony Towns是第一个提出激活Schnorr“半正式”提议的核心开发者,该提议已经被发布在比特币开发者的邮件列表中。我预计在接下来的几个月里会有更多关于软分叉的讨论。

总结: MuSig在比特币中的第一版将支持秘钥聚合,可以立即(1)提高多重签名的隐私(2)增加交易验证效率(3)通过消除ECDSA的固有问题来提高安全性(4)实现Taproot等智能合约方案。

但这仅仅是个开始。

跨输入聚合:比特币隐私的下一步
 
正如上文所述,对于花费单个输入的多重签名,秘钥聚合是一个非常有用的特性。由于比特币交易通常有多个输入,Schnorr的未来迭代也可以用来创建一个交互式聚合签名(IAS)方案,同一笔交易中的所有输入都可以同时使用一个签名。

同样,签名者之间的交互完全发生在链下,但是现在,一个签名就可以花费一笔交易的所有输入。每个输入仍然有自己的公钥,但是可以由Schnorr IAS进行花费:

Greg Maxwell、Pieter Wuille、Anthony Towns等人一直致力于Taproot智能契约方案的改进,以推动这一功能。他们将此方案称为Generalized Taproot,或G’root,它可以使将来从秘钥聚合到跨输入聚合的转换变得更加容易。

与秘钥聚合一样,跨输入聚合进一步提高了比特币交易的效率。但最重要的是,它可能在比特币的基础层启用强大的隐私保护机制。

跨输入聚合最令人兴奋的方面之一是它可以改进比特币上的CoinJoin交易。CoinJoin是一种隐私保护技术,可以将多个发送方和接收方组合在一笔交易中。其目标是使区块链观察者难以追踪特定的发送方和接收方。

这项技术最初是2013年由Greg Maxwell在BitcoinTalk上提出的,之后多个平台开始提供这一服务,包括JoinMarket、SharedCoin、ShufflePuff、DarkWallet和CoinShuffle。CoinJoin后续的变化,如Wasabi钱包的Chaumian CoinJoin在很大程度上改进了最初的模型。然而,其仍然需要依赖足够多的用户来混淆他们的余额。

如今CoinJoin面临的另一个问题是整个交易类型的可识别性(和潜在的审查)。目前在区块链分析中使用最多的方法就是根据特定的输入来确定两个或多个地址是否属于同一个实体。例如,如果Alice给Bob转了1.982723 BTC,区块链观察者可以跟踪该特定输入的小数位,绘制交易图,或者UTXO的历史分解和所有权变更。

为了防止这种情况发生,CoinJoin的部署需要数额统一,这样CoinJoin中的每个人都会发送等额的币。举个例子,Wasabi钱包的用户在100名参与者的CoinJoin交易中都发送0.1个比特币。虽然仍然很难确定发送方和接收方之间的联系,但是区块链观察者可以通过统一的数额来判断是否发生了CoinJoin交易,并建议其客户审查所有参与者。

跨输入聚合可以帮助解决这个问题,因为它在协议层引入了额外的混淆机制。从本质上讲,跨输入聚合可以构建基于Schnorr的CoinJoin交易,该交易有n个签名者,看起来就像是普通的单签名者交易。这也使CoinJoin更容易在流行钱包中实现,这可能会加强网络的整体匿名集或使用这项技术的用户数量。

统一数额的问题可以通过其他技术进一步解决,比如Pay-to-EndPoint(P2EP),它将CoinJoin和中本聪早期在隐私方面的工作(见P2IP)结合在了一起,在CoinJoin中发送方和接收方都需要提供交易输入。

P2EP是向后兼容的,当与Schnorr一起使用时,它可以在比特币的基础层提供足够的隐私。

一石二鸟
 
我们有理由认为,比特币的大规模普及取决于其隐私保障的力度。与此同时,闪电网络的普及,以及它本身承载支付的潜力,为比特币被挖完之后链上结算的需求带来了不确定性。因此,对隐私的需求以及比特币在没有区块奖励的情况下的长期可持续性,或许是比特币存在的两个最令人担忧的问题。幸运的是,Schnorr启用的隐私机制可以同时解决这两个问题。

我花了大量的时间来研究复杂的隐私技术,包括环签名(Ring Signatures)、保密交易(Confidential Transactions)、防弹技术(Bulletproofs)、zkSNARKs、STARKs和MimbleWimble的不同部署场景。虽然有些技术已经足够成熟,能够部署在比特币基础层,但依然存在特殊的风险和权衡。正如你所知道的那样,比特币不喜欢硬分叉,因此很难想象这些技术全部被部署到比特币协议上的场景。

对于同态加密或非交互式零知识证明系统的使用,人们似乎担心会阻碍比特币货币基础的可验证性。换句话说,如果对交易数额进行加密,就很难验证比特币的供应上限是否保持在2100万。同样,当交易金额被隐藏时,通胀漏洞和双花活动也变得更加难以确定。这是一个相当大的权衡,在比特币的基础层实现高度隐私可能会导致社区分裂。

那么如果不需要部署这些技术就能为比特币基础层赢得足够隐私呢?

Schnorr肯定能帮上忙。如果大多数比特币交易都使用Schnorr的跨输入聚合功能和P2EP,那么随着时间的推移,仅仅通过查看区块链就几乎不可能影响混淆机制。比特币的供应仍将是可验证的,同时其交易也将提供更有力的隐私保障。

如果存在隐私需求,我们也有理由假设,比特币用户和企业可能希望被动地参与比特币交易,让他们的钱包在后台不断地混合余额。在这种情况下,对隐私的需求会直接造成链上交易费用的增加。和隔离见证(SegWit)一样,用户很可能是采用该技术的第一个群体,但企业必须在某个时候也加入进来,以保持相关性。

假以时日,这些技术会让区块链分析变得毫无用处,并像实物现金一样,比特币企业无需继续遵守AML/KYC规则。当你把现金存入银行账户时,银行不会追踪账单上是否有毒品交易记录,就算发现了,也不会阻止你把这些先进存入银行。除了区块链分析的扩散,以及没有Schnorr的技术缺点之外,没有理由只让比特币来遵守这一点。

当在特定地址和UTXOs上执行AML/KYC变得无关紧要,关注点转向个人而非余额时,比特币企业将完全建立在隐私之上。事实上,我认为当这种情况发生时,隐私和可互换性将成为未来比特币企业价值主张不可或缺的一部分。

最终,比特币的基础层采用更强大的隐私机制之后,用户将获得更多权力,与此同时,可能有助于在比特币被挖完之后,创建一个活跃的手续费市场。我的猜测是,这一切都始于Schnorr的激活,似乎每个项目都对其感兴趣。

上一篇:
随机数在区块链中的应用和生成机制 下一篇:
Annchain深度之以太坊系列:StateDB和TrieBitOL|比特在线-关注区块链技术动态的区块链导航博客BitOL|比特在线-关注区块链技术动态的区块链导航博客本文转自《区块网》/BitOL|比特在线-关注区块链技术动态的区块链导航博客

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:Schnorr签名的前世今生:为什么说比特币的隐私性是不可避免的? | BitOL|比特在线-关注区块链技术动态的小博客
分类:区块链技术动态 标签:

评论已关闭!