天涯书库 > 区块链:技术驱动金融 > 6.3 混币 >

6.3 混币

有一些机制可以使得交易图谱分析变得不那么有效,其中一种就是混币(Mixing),这种技术背后的逻辑其实很简单:如果你想要匿名化,那就使用一个中介媒体。这个原则不是特别针对比特币的,在很多需要实现匿名性的情形下都很有用。图6.7展示的就是混币模式。

图6.7 混币模式

注:用户发送比特币给一个中介媒体,并通过其他的用户回收比特币。这就使得在区块链上追踪一个用户的比特币,变得更加困难。

混币在线钱包

如果你还记得我们有关在线钱包的讨论,那么在线钱包貌似就适合作一个交易中介。在线钱包提供了一种在线存储和提取比特币的服务,存储和提取可以在不同的时间发生。通常,你提取的比特币有别于你存储的比特币,那么,是否这就意味着,在线钱包提供了一种有效的混币服务呢?

在线钱包确实提供了一个去关联性的方法,这可以阻止交易图谱分析类型的攻击尝试,在一个具体的案例中,一些杰出的研究者不得不回撤一个面向公众的申明,因为他们之前发现的一个关联,其实只是在线钱包提供的一个伪关联。

从另外一个角度看,使用在线钱包来做混币服务,也存在一些严重的局限性。首先,大多数在线钱包并不能保证一定能实现混币功效,它们实现混币的功能,其实是因为这样做简化了开发工程。作为用户,你得不到它们不会去变更其混币模式的保证。其次,即使它们实现了混币,其内部也会保留一份记录,用来匹配你的存入和提取。这不仅是出于安全性的考虑,也是根据合规要求的审慎做法。所以说,如果你的威胁模型会考虑服务提供商本身会跟踪你,或者服务提供商被黑客攻击,又或者服务提供商被迫提供它们的记录等这些可能性,你就又回到了原点。最后,除了保留内部记录之外,声誉好的且受监管的服务提供商,也会要求你提供个人身份以进行记录(我们将在第7章中具体讨论监管问题)。你无法简单地通过一个用户名和密码,就能够创建一个账号。所以,在某种意义上,这可能比你不用钱包服务还糟糕。加 入 会 员 微 信

在线钱包服务所提供的匿名性,和传统银行所提供的服务类似,都有一个知道所有用户的交易记录的中央媒介。对一个没有特权信息的陌生人来说,我们具备了一定程度的隐私。但是,正如我们讨论过的,区块链的公共属性意味着,如果发生任何问题(比如,钱包或者交易所服务被黑客攻击而导致内部数据的暴露),隐私风险会比传统的银行系统更大。除此之外,越来越多的人就是因为不满意传统系统的匿名性,并想要一个更好的(或者不同的)匿名性保障才转向使用比特币,这些都是用户使用专项混币服务的动力。

专项混币服务

不同于在线钱包,专门的混币服务既可以保证不留记录,又不需要你的身份验证。你甚至不需要一个用户名或者其他化名来使用这项服务,只需要发送比特币到混币服务提供的地址,并且告诉交易服务提供商你发送的比特币所需要达到的地址,混币服务提供商就会帮你转过去相同数量的比特币(不是你发送的比特币)。本质上,这是一种互换。

同时,另一个好处是这种专项混币服务承诺不会保留记录,这看上去不错。但你必须要信任它们会信守承诺,并且你还必须相信它们最终会帮你完成转账。不像在线钱包,由于混币服务并不提供一个存储比特币的地方,你需要混合后的比特币尽快回到自己手中。这也就意味着,混币池中将要和你刚刚存入的比特币混在一起的其他比特币总量会非常少,大概就是在你的比特币存入的同时其他人存入的数量。

混合(mix)和洗钱(laundry)

在这本书里,我们使用了一个术语混合,特指一个专项的混币服务,也有些人比较倾向于用另外一个同样意思的术语mixer。

你可能也遇到了洗钱这个词,我们并不喜欢这个词,因为这个词不必要地关联到了一个道德评价的问题,而实际上我们讨论的是一个纯技术的概念。正如我们所见,为什么你需要保护你在比特币运用中的隐私,并且使用混币服务来保护你的日常隐私,你有很多很好的理由。当然我们也需要了解它的负面作用,但是洗钱这样的描述加重了负面含义,因为这可能带了一种暗示,暗示你的比特币是“脏”的,需要洗干净。

还有另外一个词翻洗(tumbler),这次词的含义不是很清楚,可能会被理解为翻滚式混币的一种行为,或者是指因此而带来的清洗效果(在宝石之类的范畴)。不管怎么说,我们还是坚持使用“mix”这样一个词。

混币准则

有一组研究者,包括本书5个作者中的4个,研究了混币模式,不仅仅是从增强匿名性的角度,而且还从安全信任等级方面,提出了一系列改进混币运作的方案,我们将深入探讨这些准则。

多重混币的使用

首要的原则是使用多重混币服务,一环套一环,而不是仅使用单次混币(参见图6.8)。这是一个已经被广泛接受并且已经比较完善的原则,例如,正如我们简要探讨过的Tor系统,使用了三重路由方式的匿名通信。这可以减少你对单一混币服务提供者可信赖性的依赖。只要这一系列中的任何一个混币服务提供者信守承诺并删除了记录,你就有理由相信,没有任何人能够将你的原始输入关联到你最终接收到的输出。

图6.8 多重混币

注:我们从一个持有比特币或者输入地址的用户开始,且假设该用户已经被其他人关联到了其具体身份。该用户通过混币服务提供商来发送比特币,每次都需要提供一个全新产生的输出地址,只要能够在所提供的至少一个混币环节销毁输入和输出匹配的记录,而且没有其他渠道可以泄露相关信息,其他人就无法把用户最初发送的比特币和最终接收的比特币关联起来。

一致性交易(uniform transactions)

在混币交易中,如果不同用户使用了不同数量的比特币,这样的混币不一定会非常有效。由于初始进入和从混币过程中出来的比特币数量必须要一致,就可以通过观察某用户的比特币在混币过程中的流入流出而建立起一个关联,或者至少会极大地减少匿名集中的交易数量。

相反,我们需要混币中的交易价值能够服从平均分布,从而最小化被关联的可能性。所有的混币服务都应该对使用的块大小(chunk size)达成一致,也就是说,使用一个固定的混币输入值,就可以增强所有通过混币服务的交易匿名性。因为所有的交易看起来都一样,而不能通过交易价值的不同,分辨出不一样的地方。再者,在所有的混币中使用统一的大小,可以让使用多重混币更加容易,而不需要去拆分和合并其中的交易。

在实际运作中,对所有用户统一交易块大小可能会比较困难。如果我们选择的块太大,对想使用混币来处理少量比特币的用户则不适用;而如果选择的块太小,那么想处理大额交易的用户可能需要把交易拆成大量的小额交易,这种做法会非常没有效率而且成本很高。多标准块大小则可以改善性能,但是不同的块大小也会相应地分割交易匿名集。或许一系列渐增的两到三个块大小,有可能会在效率和隐私程度之间达到一种合理的平衡。

客户端自动化

除了在基于交易量的关联尝试之外,一些聪明的攻击者会尝试其他不同的方法,例如观察交易发生的时间。这些攻击其实可以防范,但必要的预防措施对于人类来说太过复杂和麻烦。相反,混币服务的客户端功能应该是自动化的,并且是隐私保护比较好的钱包内置功能。

手续费应该是要么全有要么全无

混币服务是一种有收益期望的生意。一种计费的方式是从每一笔交易中分成,但是这种方法对匿名性的实施是有问题的,因为混币不再是统一的大小。(如果用户尝试去分拆和合并较小的交易块使得交易大小回到初始的状态,那就有可能带来严重的并且难以分析的匿名被暴露的风险,因为有更多的新的有关交易中的比特币的关联会产生。)

不要把交易手续费和混币服务费混为一谈,交易手续费是矿工所获得的,混币服务费是在此之上的额外的费用。

为了避免这个问题,混币服务费应该是要么全有要么全无,并且依概率规则来应用。换句话说,混币服务提供商应该要么在很小的概率情况下获得所有的交易金额,要么完全不收费。举例来说,如果混币服务商想要按照0.1%收费,那么应该是每1 000次交易中有一次服务提供商获得整个交易金额,而其他的999次则不收任何费用。

这个会很难实现,混币服务商需要做出一个概率决策,并且要让用户信服它们没有作弊,也就是说,在它们的随机数生成器中没有做过任何概率偏置设定。比如,获得整个交易金额的概率是1%而不是0.1%。加密学提供了一个很好的办法,你可以参考下面将要延伸阅读章节中提到的有关混币的论文,以获取更多的细节,在这篇论文中,也提到了可以让混币服务提供商提高公信力的多种其他方式。

混币实践

直至2015年,还不存在一个正常运行的混币生态系统。市场上有很多的混币服务,但是都只有比较低的交易量,因此它们的匿名组合比较小。更糟糕的是,许多混币服务提供商被报告有盗币行为,或许“自举”这样一个生态系统太难,正是混币系统从来没有良好运行过的一个原因。基于混币服务提供商狡猾的名声,并没有多少人想要使用它们的服务,这也导致了较低的交易量,进而导致了不好的匿名保护。老话说得好,大隐隐于市(anonymity loves company),也就是说,越多人使用一个匿名服务,那么这个服务能提供的匿名性就越高。进一步来说,由于提供服务并没有太多利益可图,服务提供商可能会尝试去盗取客户的资金,这会使得混币服务提供商的公信力出现持续的恶性循环。

当前,混币服务提供商并没有遵循我们所探讨的任何原则。每一个服务提供商都是独立运营的,并且通常都会提供给用户一个网页接口,让用户手工输入收钱地址和其他一些必要的参数。用户可以选择他们需要进行混币交易的数量,服务提供商针对每一笔交易收取提成来作为服务费,然后发送剩余的比特币到用户指定的目标地址。

我们认为,对混币服务提供商(和钱包软件提供商)来说,为了可以获取更强的匿名性,抵御智能攻击,提供一个高可用性的接口,进而吸引更多的交易量,实施我们介绍的模式是很有必要的。然而,迄今为止,我们还是没有看到过一个比较强健的混币生态系统。