2014年11月19日星期三

终于发现比特币的匿名性不可靠了

随着当前比特币基金代表与多家美国监管机构高层官员的会晤,比特币匿名性问题再次成为了众人瞩目的焦点。一方面为了故意对监管者掩饰比特币保护隐私的能力,另一方面由于最近斯诺登对美国国家安全局数字监控计划范围的爆料,最后由于对比特币交易图表本身的最新研究,目前的氛围是:比特币的匿名性可能远不如我们所想的那样好。在8月14日,乔治梅森大学的研究人员发布了一篇涉及到监管比特币的入门书,书中的评价大大降低了它的匿名性。在8月26日,Vice发表了一篇“描述研究人员成功地把一些比特币交易去匿名化”的文章,并且第二天一篇类似的文章登上了商业周刊。然而,有许多人把比特币匿名性不足看作是一个问题。但是在今天,两位西班牙比特币开发者想出了一个解决方案。
去匿名化的比特币
首先讨论一下问题。像一般理解的那样,比特币的隐私模式如下所述。所有比特币交易都必然是公开的,否则就有可能出现同一笔钱被同时花了多次而产生多个不同的交易,并且这种欺诈直到很晚才能发现。尽管交易是公开的,但是交易双方的身份却是保密的,而这正是比特币系统能够保护隐私的原因。任何查看区块链的人都能够看到“1Mcqmmnx发了 1.2321 比特币给1V1tAL”,但是他们看不到现实世界中究竟是谁发比特币给谁。这有可能是奶奶为了给孙子从比特币商店买新电脑而发的,有可能是丝绸之路网站上的商家为套现而发的,还有可能仅仅是MtGox公司发给自己的。
但是,在过去几年里,研究人员一直都在指出这种隐私模式并非很像看起来这么完美。在2011年,研究人员Fergal Reid和Martin Harrigan公布了一项分析报告,而该报告所讲的内容之一就是他们试图追踪一件在2011年6月发生的涉及2万5000比特币的盗窃案。对于执法机关来说,报告中没有任何有价值的结果,但是这两位研究员却成功地追踪了相对长的一段距离。之后,苏黎世的研究人员详述了去比特币匿名化的技术。再之后在今年的8月份,一组来自乔治梅森大学和加州大学圣地牙哥分校的研究人员发布了一篇报告,其标题为“一把比特币:描述匿名支付的特性”。看起来他们从几起比特币失窃案中一路成功地追踪比特币到了一家交易平台。从理论上讲,执法机关可以要求这家交易网站交出窃贼的身份信息。
从本质上来说,比特币的去匿名化依赖于一个根本性的洞察。仅仅给定一组关于人的信息和一组关于比特币交易的信息,而不给任何涉及二者关系的信息,则确定哪个地址属于哪个人确实是非常困难的。但是,当你知道哪怕一条关联信息(某个比特币交易或地址关联到现实世界中的某个具体的人或事件,从那里就有可能“追踪比特币”并且获取许多其它方面的信息。比如说,追踪者可能会发现该用户的老板、最喜欢的商家、顾客和其他人的比特币地址)或者更多关联信息时,一个人可能很快就确定该用户最喜欢的商家。除了简单地“追踪比特币”,还有两个比特币侦探可以使用的更高级的工具。
首先,存在一个概念叫做闭包。一个地址的闭包的递归定义如下; 一个地址在它自己的闭包里。 如果地址A在某个闭包里并且存在一个使用来自地址A和地址B的货币作为输入的交易,则地址B也在该闭包里。
计算一个地址的闭包时,只需在从这个地址开始一直到你停止添加新地址的过程中重复地应用闭包的定义。这个概念的威力如下:在同一个闭包里的所有地址几乎可以肯定都归同一个用户所有。如果一个交易有多个输入地址,则原因几乎总是:用户需要把一定数额的钱支付到某个地址里,但是他的任何一个地址里钱的总额都不够,于是钱包软件为了付款不得不从两个甚至更多的地址里取钱。有了这个工具,如果你能证明哪怕一个地址归属于某个具体的人(比如说,如果你是一个从他们那里接受比特币付款的商人),那么你就很可能发现他们的绝大部分钱包地址。
其次,该报告还介绍了一些探测“零钱地址”的启发式算法。在消费时,零钱地址被比特币钱包用来发送额外的钱给交易的收款地址。比如说,如果你收到了50比特币然后接着花了1比特币,剩余的49比特币就去一个由你的钱包新生成的零钱地址。这么做而不是把那49比特币发回原初的地址是为了增加隐蔽性。这个报告的许多地方就是在解决怎么才能够自动辨别零钱地址和交易的正常收款地址。通过增加了这类启发式算法,研究人员比只使用闭包走得更远,常常追踪交易长链达几百步并最终获得成功:他们成功地追踪一些被偷资金到一家比特币交易网站。
解决方案
迄今为止,解决比特币匿名性不足的主要方法是混合服务,比如说在网站blockchain.info 和丝绸之路上的服务。混合服务的工作原理如下所述。用户给混合服务一个接收混合后的比特币的地址,而混合服务给用户一个发送比特币的地址。全世界成千上万的用户把比特币发送给混合服务商,而服务商在内部洗完钱后,除了扣除少量手续费外,其余的比特币如数(不是相同的比特币)发到每个用户的接受地址上。由于在区块链上找不到用户发送地址和接受地址的关联,所有在理论上只要混合完成相关信息就会被抹掉。但是,这种匿名方式需要提前建立洗钱双方的信任。用户不仅需要信任洗钱服务商不会透露自己的两个地址之间的关联,还需要相信服务商不会偷走自己的钱。更不幸的是,如果服务商偷了钱,用户将无法证明。
但是现在,比特币开发者Amir Taaki和Pablo Martin研究出来一个新的办法负责解决比特币的匿名性问题:一个半去中心化无须为信任担忧的洗钱系统。去中心化混合服务的基本思想并不新鲜,目前所有提交的体系包括这一个的工作原理都类似。有一群都想把一定数额的比特币(比如说0.01比特币)和其他人的混合的人通过某些沟通渠道走到了一起并且完成了一笔交易,其中,每个人都出0.01比特币(输入)而接收0.01比特币(输出)。交易的顺序被打乱了,因此无法知道在区块链上一个输出究竟对应于哪个输入。但是,麻烦在于如何保证各个参与者的输入和输出信息不被其中一个参与者知道。在2013年五月的比特币大会上Oliver Coutu提出了一个办法。这个办法通过保证多方计算的安全来构造无人能够准确的知道其他人的输入或输出的交易。可是,它的数学原理很复杂(尽管不像零币的那么复杂),所有现在还没有简单易用的应用出现。
Taaki和Martin提出的方法简单多了。它的协议在在该项目的网页上有详细地描述。工作原理大致如下: N个人聚在一起并且同意混X个比特币,并且他们中的一个人发送N和X的值以及“房间号码”给一个中间服务商。 每个人用匿名网络比如Tor给服务商发送一条带有房间号码和接受地址的信息。 一旦N个人都发送进来了他们的接受地址,则服务商会给每个人发送确认信息。 每个人都匿名地给服务商发送一条包含房间号和发出地址的信息。 服务商在所有人都把X个比特币发过来后,用这些比特币构造一个交易并向每个接收地址发送X个比特币。然后,服务商把交易发给每个人来签名。 每个人都检查交易中向自己的接受地址发送的比特币的数额是否正确。检查完毕后,你们发送给服务商自己的签名。 服务商公开签过名的交易。
如上所说,这个协议没有一点特别的创意。事实上,Taaki和Martin第一次发现这个主意的地方是在一个比特币开发员Gregory Maxwell描述CoinJoin概念的论坛帖子里。然而,神奇的地方在于它的实现过程。这两个人使用Taaki 本人发明的比特币工具箱SX(花费了他们几个小时来掌握应用)快速地实现交易。如果他们自己写代码或者复制比特币客户端Armory 或Electrum上的代码的话,实现过程将耗费多得多的时间。
他们的这个实现方法胜过其它实现方法的地方在于它易于使用。Taaki和Martin专门创造了一个简单的图形用户界面。用户只需输入发送地址、服务商的网址和接收地址,系统就会自动处理一切。“我们已经交付了易用的软件,连老奶奶都会觉得简单(发出钱,收到钱),不需要区块或bitcoind,还易于安装不需要担心信任问题。”Taaki 写道。为了那些感兴趣的人,他还发布了一个从开始到结束描述整个过程的视频。只需要一分钟就能完成这个过程。“这是一个实验性的软件,”Taaki说道,“但是它现在就能用”。任何对比特币的洗钱感兴趣的可以在这里(http://sx.dyne.org/anontx/)下载源代码和读指导说明。半中心化并且没有信任忧虑的的比特币匿名性已经刚刚民主化了。
Taaki和Martin的洗钱办法被批评为“中心化”,但事实上它的中心化程度是微不足道的。中间商不知道哪个发送地址对应着哪个接收地址(因为人们在不同阶段的不同时间发送他们的信息),也没有机会偷比特币。如果中间商用自己的接收地址替换了别人的接受地址,没有收到比特币的人发现后会拒绝签收交易,这将导致协议失效。唯一失败的可能性只在于没有发生的交易。此外,任何人都可以成为交易商而本质上却不需要任何起步费。实际上,完全去中心化的体系可以让N个人中的一个人在百忙之中充当交易商。
这种机制也许不经意间实现了另一个目标:如果得到广泛的使用,它有很大的可能使得“闭包”概念不能发挥作用。闭包依赖的前提假设是一个交易的所有发送地址都是有一个人签收的。然而这里洗钱交易的不同发送地址是由不同的人签收的。当然,目前使用的协议可以被轻松地对付,因为闭包算法可以故意避开各个发送地址的发送金额相等的交易。然而,匿名者们可以反击。从理论上说,一个人在同一场洗钱活动中可以参加多次,也就是说发出和接收的面额不同(比如说,通过一个地址发出0.03比特币,但却通过三个不同接收地址个收取0.01个比特币)。从另一方面看,一般的钱包可以故意使它们的交易看起来像是匿名交易。比如,一个钱包提供商可以使他的钱包总是提供0.01比特币的零钱,因而每笔交易都自然而然地看起来像是洗钱。尽管将来会有一些方法识破很多这类事情,但是这仍然使闭包的地位从发现一个人秘密金库的必杀技降为普通的试探性方法。
监管者将对此做何感想?如果洗钱活动变得很普遍(比如说,通过整合进现有的比特币钱包)必然会使通过监管交易跟踪比特币变得更加困难。但是,对于那些关注大公司、独裁者和拥有几十亿美元的毒品集团人来说,这个系统有一个可取之处:你想洗的钱愈多,洗钱的难度就愈大。“当(小偷)为了隐藏货币来源而试图使用洗钱服务时,”乔治梅森报告写道,“我们再次强调这些服务目前不具备洗掉几千比特币的能力。”如果一个亿万富翁想在blockchain.info网站上把他的所有钱都洗掉,那么待洗比特币中将有99%都是他自己的,这意味着从本质上而言,洗钱活动对亿万富翁没用。进一步来说,当交易量足够大时,交易流向将自动地变得更加难以识别。可能会有几百万人转移大约0.01比特币,但是仅有少数人才有10万比特币。这些比特币去匿名化的报告看上去目前研究人员已经在发现洗钱者隐藏比特币地址方面相当地成功。每个案例中地故事都是类似的:金钱越多,隐私越少。为了对别人隐瞒你的医疗采购或对政府掩盖你抽大麻的习惯而洗50美元,可以呀。但是让13亿美元突然从地球表面消失?实际上比特币也许让这变得难多了。
(译文完)
原文标题:Trustless Bitcoin Anonymity Here at Last
原文作者:Vitalik Buterin
原文发表时间:2013年8月28日
原文网址:http://bitcoinmagazine.com/6630/trustless-bitcoin-anonymity-here-at-last/
翻译者:自然而然

没有评论:

发表评论