文章来源:巴比特
作者:Reuben Yap
本文宗旨在于简要概述当今主流加密货币中实施的匿名机制,特别是Zcoin使用的Zerocoin协议如何工作的。
区块链匿名是一个特别困难的事情,因为公共区块链的设计使得所有的交易都是透明的,加密货币的供应可以被公开验证。匿名机制必须确保这些要素得到保留,因此在维护可验证性的同时保护匿名是相互矛盾的。要了解Zcoin背后的创新,我们需要研究区块链匿名技术的历史。
1 资金池混币和混币器混币
用于:达世币Dash
优点:不需要特定的共识就可以在大多数加密货币上运行
相对简单即可实施
轻量化
缺点:只能提供基础的匿名
要求在线混币
早期需要可信的第三方
人们试图实现匿名的第一种方法是通过在资金池中混合自己和他人的币来达到目的,混合之后很难证明谁的硬币最初属于谁,从而提供某种程度的匿名。当然,前提是相信别人不会偷你的币。
混币器是这种混合理念的改进,消除了匿名发起者窃取币的可能性,它在Darkcoin(现在称为Dash)中被广泛使用。但是混币器仍然有很多缺点。
(1)因为后台可以记录信息,并且知道每个用户的输入地址和他们正在接收的地址,所以您需要信任匿名发起者。这个问题可以通过使用匿名数字签名来避免,因此混币器的匿名强烈依赖于以匿名方式(例如通过Tor网络)登陆。
(2)要求参与混币的人员在线进行混币。如果双方就混币的数额不能达成一致的话则必须推迟。
(3)匿名受到人数限制。Dash的混币(private transactions)的一轮只涉及3个参与者,但是这个过程可以重复。
(4)最近的研究(https://arxiv.org/pdf/1708.04748.pdf)显示,即使经过多轮混币器混合,如果用户的钱包在进行支付时不清除浏览器cookie的话,可以通过技术手段识别用户的钱包,因为混币只会掩盖地址之间的交易链接,但不会完全破坏它们。
(5)很容易破坏混币器运行,并延迟其他参与者完成混币交易。
混币器的其他改进,例如CoinShuffle++不再需要可信的第三方,但仍然受到混币器的其他缺点的限制,如有限的匿名、参与者必须在线等。
混币器匿名的主要好处是它们相对简单,并且在加密货币的基础上工作,而不需要使用特定的共识规则。通过适当的预防措施,混币器可以提供基础匿名。
Tumblebit也是一个非常有希望的改进混币器匿名的方案,但超出了本文的范围。与我们将在下一步讨论的其它匿名方案相比,这是一个没有在协议级别实施的匿名计划,但仍然需要其他人提供用于混合的资金。它的主要优点与混币器相同,可以在比特币或任何其他数字货币上实现,而不需要改变其协议。
2 .Cryptonote和环签
用于:门罗币Monero
优点:
混合自动完成
默认情况下可以匿名实施
随着新的混币加入和时间的推移,匿名性会增加
使用环签执行时可隐藏交易金额
精心研究的密码学
缺点:
因为其区块链数据巨大且不可修剪,因此可扩展性较差
由于科技进步或执行错误的原因,可能会被解密
无法利用现有的比特币生态系统,需要单独的工作
环签大小受限
我们将要探讨的下一个匿名方案是在Monero等Cryptonote加密货币中使用的环签,环签方案大大提高了混币器方案的匿名性。在环签中,某人签署了交易,只能追踪到一个组而不能具体追踪到组中的这个人。比如,可知某个“高级白宫官员”签署了环签,但不能追踪到具体哪个官员签署了这条信息。
Cryptonote和环签可以自动实现匿名功能,无需其他用户指定想要和谁混合,也无需等待其他人提供资金,因为它只是扫描区块链以便使用输出。因为没有混币器,所以你不需要信任任何人。Monero最近还实施了RingCT (RingConfidential Transactions),也隐藏了交易金额。
该加密技术的主要缺点是,它的交易——特别是与RingCT的交易——非常大,占用了几千个字节,这大大增加了存储区块链所需的存储空间。目前没有任何办法可以精简已形成的加密的区块链。使用与比特币完全不同的代码库,也意味着第三方必须做更多的工作,将Cryptonote加密技术整合到他们现有的生态系统中。
目前在Cryptonote加密货币中实现的环签实际大小(你所使用的其他输出的数量)上也有限制,因为随着环的尺寸的增加,交易数据的大小线性增长。这就是为什么在默认情况下,Monero的默认环大小是4。实际上,使用不同的环大小,默认情况下,有可能会让你去匿名化。这意味着,在每笔交易的基础上,匿名性受到环参与者数量的限制。区块链分析师虽然可能无法证明交易是有关联的,但他们可以计算出交易关联的几率。
另一种对此种加密技术的批评是,如果它的环签技术有一个bug,或者一个相当强大的量子计算机,那么整个区块链的记录就会被去匿名化和可追溯,并且无法在事后修正。就像名为Shadowcash的Cryptonote加密货币,因为bug导致所有区块数据全部被解密。
另外还需要注意的是,使用环签来隐藏交易金额,牺牲了供应可审核性。“供应可审核性”可以验证在交易过程中,是否有新的加密货币被秘密生成,并确定在某一时刻加密货币的具体数量。在Monero的“环签”的实现中,如果有人打破了支撑环签的离散对数,他就可以在没人知道的情况下伪造加密货币,虽然用目前的技术还很难做到。
尽管有这些缺点,但Cryptonote今天已被证明是一种非常好的匿名技术,它唯一公开惨败的例子是Shadowcash,被全部解密,通过使用混合了零交易的Monero交易导致一个级联效应,约87%的输入被去匿名化。(https://eprint.iacr.org/2017/338)(随后被新的交易所缓和)。Cryptonote加密技术解决了加密货币的许多问题,提供了良好的匿名性,但是作为代价,更大的交易规模和区块链扩展性也更难实现。
3 Zerocoin协议和Zcoin
用于:Zcoin,PIVX
优点:
不需要混币
成千上万个熔铸和取回交易完全打乱了各地址通过交易建立起来的联系,从而实现极高的匿名性
保留总量的可审核性
使用了高级的密码学知识
缺点:
证明数据目前比较大
需要一个信任机制
不正确的操作或泄漏受信任的设置参数可能导致伪造zerocoin
在熔铸和取回的时候,需要多加注意
现在,我们来看看Zerocoin。与之前的匿名方案不同,在使用零知识证明的情况下,Zerocoin协议完全打破了币之间的交易链接。
简单地说,零知识证明是你做某件事或知道某件事的证明,而不泄露任何其他信息。例如,要证明您知道密码,而不需要实际显示密码。
Zerocoin的工作原理是,熔铸掉你自己的加密货币(也就是所谓的零币熔铸),然后再兑换等量的做记号的新币(被称为零币取回)。这些币在没有任何交易历史的情况下出现,与新挖矿而得到币相似。这一证明是用来证明你确实烧过了加密货币,而没有透露你烧过的具体加密货币信息,因此你有权赎回等量的新币。
这意味着,与混币和Cryptonote技术(匿名者的数量是由参与者的数量或环的大小所限制)不同,Zerocoin交易过程中将允许你和任何一个挖矿(或熔铸)的人完全匿名,同时挖矿(或熔铸)的人也即时获得特定面额的加密货币。这就使得匿名者可以在成千上万的人中使用零币熔铸和取回来扩大规模。此外,这些硬币的交易环节也被完全打破,因为它们看起来完全是全新的硬币,与之相比,之前的匿名方法只是掩盖交易环节。
这种匿名模式也有一些缺点。为了获得巨大的匿名性,同时打破交易链接,Zerocoin需要一次可信的设置来生成初始的参数。在Zerocoin中,有两个被摧毁的大质数。如果有人获取这两个巨大的质数,就可以凭空伪造出Zerocoin。为了解决这一问题,Zcoin使用了1991年的RSA质数挑战中的方法,在该挑战中,密码学专家生成并摧毁了两个大质数,并为能在16年内成功地将其分解的挑战者提供了20万美元的奖金,但无人能破解此难题。时至今日,RSA-2048方法仍然是我们所知的最好的方法,RSA-2048方法仍然被广泛使用,直到某天能够专门破解此类难题的量子计算机的出现。
值得注意的是,对这两个质数成功的分解不会影响零硬币的匿名性,因为它只影响熔铸。此外,Zcoin的总量可查,这样就可以监测硬币的熔铸过程。在项目前期由于编程中的一个bug(并非RSA被破解),硬币的熔铸出现问题,但我们及时检测到了bug并进行了修复,因此可见,总量可查是非常重要的。
Zerocoin的另一个限制是,熔铸和取回只能处理固定面值的货币,相比环签交易,零币的零知识证明的数据大小是25kb。值得注意的是,不同于Cryptonote交易(所有交易都占用同样大小的数据),只有匿名取回的交易占据了25kb数据,而普通交易的数据大小与比特币交易的数据大小相同。
错误的或可预见性的熔铸和取回方式(有规律的熔铸和取回,或者使用相同的IP地址来熔铸和取回)可能会影响匿名性,因此使用时需要注意。
总而言之,Zerocoin提供了非常强大的匿名性,但为了实现该匿名,需要信任机制、区块链上的存储空间和额外的计算资源。为了移除信任机制和降低零知识证明数据大小,目前开发团队正在研究和评估采用Sigma协议的可行性。
4 Zerocash and Zcash
如:Zcash,Zencash,Komodo
优点:
在熔铸过程和打破地址之间的交易链接方面可能是最好的匿名技术
验证数据小,验证速度快
隐藏交易金额
不需要转换成普通硬币,且匿名硬币可以直接发送到对方。
缺点:
私密交易需要花费一段时间才能完成(在一台功能强大的计算机上要花一分钟左右)
由开发人员完成的复杂的信任参数
不正确的设置或泄漏受信任的设置参数可能导致伪造硬币。
不能对供应进行审计,因此伪造很难被发现。
使用更新的密码学
我们讨论的最后一个匿名方案是ZCash中使用的Zerocash协议。Zerocash采用了零知识证明,并试图改进Zerocoin协议。有了Zerocash和zkSNARKs技术,匿名数据大小现在只有1 kb,并且可快速验证。此外,所有交易金额都是隐藏的,在进行熔铸时不需要使用固定的面额。Zerocash还允许人们将Zerocash的“零硬币”直接转移给对方,而不需要将其转化为等价的基本硬币。它的匿名方法也是之前所有匿名计划中规模最大的一个,包含了所有铸造的硬币,而没有考虑区块链的面值。
粗略来看,就会觉得Zerocash技术超出了Zerocoin,然而,相对Zerocoin,它也有一些不足。
首先,Zerocash缺乏可审核性。和Zerocoin一样,Zerocash需要一个信任机制,但Zerocash的设置要复杂得多。Zcash采用了一场涉及6人的多方仪式来完成设置,其参数泄露的唯一方式是,所有的6人相互串通,并保留相关参数。换句话说,你必须信任这6个人中的任何一位,相信他们摧毁了初始参数并且相信这个仪式被正确执行。如果代码中存在bug,或者密码缺陷或多方信任设置的问题,攻击者可以生成无限的Zcash,与Zerocoin不同的是,这种额外的供应是无法被检测到的。因此,总量可查是非常重要的。
其次Zerocash使用一种zkSNARKs的新加密算法,它实际上只在Zerocash中使用。但是,相对RSA技术,其并未经过多年的使用和审查,也并未被广泛使用。许多密码学专家认为zkSNARKs的保密性相对较弱。
Zerocash的另一个主要缺点是,由于需要进行复杂的数学计算,因此,在一台功能强大的计算机上,匿名交易的生成时间要比之前任何一种匿名方式要长得多,特别是对配置较低的计算机来说,这一过程太长。这使得人们无法广泛使用它的匿名功能,也可能会不适用一些功能不太强大的系统,比如移动设备。
因此,尽管Zerocash具备可能是最好的匿名性,但它以牺牲总量可查为代价,同时也包括如下缺点:复杂的可信设置,使用过于新的加密技术,创建匿名交易需要很长时间。
5 其他匿名方案
在这里列出的所有区块链匿名方案都得到了研究人员的好评,各种匿名方案都很容易理解。然而,现在的加密货币有好几百种,但只有少数能真正实现匿名。以下是新的匿名机制是否可靠的关键因素:
它能提供区块链的匿名吗?
一些匿名货币声称具备匿名技术,但在区块链上完全看不到任何匿名保护。具体可见下文:(https://zcoin.io/the-difference-between-privacy-on-the-blockchain-and-hiding-your-ip-address/)。
专家撰写的匿名保护机制是否被审查过?
看看他们的匿名计划是否经过密码学家的审核,是否有学术论文引用它,许多程序都是由开发人员或程序员编写的,而他们没有任何的加密或信息安全的背景,其实现匿名技术的技术通常并不可靠。
它仅仅是利用现有技术的一个新名称吗?
一些项目将现有的匿名货币更名为自己的名字,并将其作为自己的名字进行发行,如果他们公开了原始的匿名技术,这是可以接受的。
是否是中心化的?
如果依靠你信任别人来保护你的匿名计划的话,它通常是一个糟糕的匿名计划。
团队是否理解这些匿名技术背后的密码学?
除非你自己是专家,否则这很难确定。检查他们的团队,看看他们的团队或者他们的顾问名单上是否有密码学相关的研究经历。
6 总结
每一个匿名模式都有自己的利益和权衡取舍,我们相信,对这些匿名方案进行持续的探索和研究,会改善整个区块链的匿名技术。
我们坚信Zcoin中使用的Zerocoin协议与其他匿名方案相比,提供了一个非常全面的匿名方案,它使用经过验证的加密技术,同时还保持了可扩展性和可审计性。
网友评论