当前人们在享受互联网时代便利的同时,常常会感慨这是一个没有隐私的年代。网络爬虫、人肉搜索等手段的问世,将人们的生活置于各种显微镜下;各种促销或骚扰电话让人不胜其烦;因信息泄露遭遇经济诈骗的报道也屡见不鲜。如何保护个人隐私成为公众最为关注的话题之一。
近两年来,随着区块链走入各行各业,用区块链实现隐私保护成为各类应用的重要卖点之一。然而,区块链一向以数据公开透明而闻名。乍听上去,这不仅和隐私保护毫无关系,甚至还南辕北辙。
那么,用区块链保护隐私是否是天方夜谭呢?
诚然,比特币区块链上的每一笔交易数据都是公开透明的,但神奇的是,其他人并无法知道某一笔交易是谁来进行的。
举个例子来说,我们通过账本可以知道,张三向李四支付了六枚比特币,但是我们并不知道张三和李四究竟是谁,这种匿名特性在一定程度上保护了人的隐私。
类似于非实名的社交网站,区块链上的每一个组织或个人都有一个不同的代号,这个代号通常是一串无意义的数字。通过该数字的表面信息本身,并无法将其对应到某一个具体对象的真实身份。
然而,一旦该对象在线下进行了实物交易,并和某一代号关联起来,这种匿名性就不复存在了。由于区块链完整地记录了该代号的交易流水,其他人就可以轻松的获取到与该对象相关的所有信息。因此,这种简单的化名机制不足以保证匿名。
那么,有没有别的方法呢?
在比特币的技术体系下,区块链为我们提供了一种极为简单的机制,它允许任何人具有无穷多个代号,并且每个人所拥有的代号只有自己知道,即便某一代号被人认出,也不会影响其他代号的匿名性。理论上,每进行一次交易,就使用一个独立的代号是最为安全的。这就好比打匿名电话,打完一个电话就把手机扔了,然后再换一个新的手机打,这种打游击的方式就很难被追踪到。
这种“游击战”的方式能够较为有效的实现匿名性,对于一些涉及敏感数据交易的场景极为有用。最近苏宁金融上线的区块链黑名单共享系统就采用了这种技术,能够有效隐藏金融机构的真实身份,任何人都无法知道某一个黑名单是谁上传的。
当然,匿名性是一把双刃剑,从保护隐私的角度来说十分重要,但也为一些违法犯罪行为提供了保护伞。这引发了一些研究人员的关注,他们通过数据分析方法来实现区块链的去匿名化,其目标是找出属于同一对象所拥有的多个代号。
最常用的一个思路是对公开的交易账本信息进行资金流分析。区块链账本的每一条账单都记录了某一笔资金的转移情况,最简单的交易只涉及两个代号:一个提供者和一个接收者。
但是,如果有一笔交易需要提供者支付10个币,而提供者的每一个代号名下都不足10个币,那怎么办呢?
很简单,这个用户只要从多个代号同时进行转账就可以了,这种情况在现实的交易中很常见。
那么,如果有一笔交易有多个代号作为提供者,是否就可以认定这些代号属于一个用户呢?
答案是:非常可能,这是因为现实中很少会找到一笔交易存在多个不同用户作为支付方的情况。这就构成了代号关联常用的第一条启发式规则:如果一笔交易具有多个支付代号,那么这些代号属于一个用户。
此外,找零钱也是一种常见的交易,比如,用户向其他人支付了50,实际支付只需40,找回零钱10。很显然,零钱的接收者代号也应该是由提供者控制的,这构成了代号关联的第二条启发式规则:一笔交易中,零钱的接收代号和支付代号同属于一个用户。
第二条规则的核心是怎么确认某个代号是零钱的接收代号。在比特币等区块链技术内,零钱账号通常是新生成而未被使用过的新账号,据此可以帮助我们来检测零钱的接收者代号。
利用这些规则,我们就能把一些代号关联到同一个用户上。根据区块链记录的账本信息,我们还可以绘制相应的交易图和代号的关联图,更为直观反映代号之间的资金流向。比如,下图就绘制了一幅包括19个代号和7笔交易的交易流图,根据所定义的规则,我们可以发现,代号1和2属于同一个用户,代号8、9和14也属于同一用户。通过对交易数据的分析,可以认为整个交易过程实际上只有6位用户。
事实上,以上两条规则都不能保证完全正确。为了避免错误,这些规则也在不断优化,比如,第一条规则中仅考虑那些只有一个接收者的交易等。
那么,这些规则的实际应用情况如何呢?
部分研究成果声称,在比特币的实验模拟环境中,关联的准确度可以达到80%。不幸的是,这些规则在真实环境中还缺乏足够的数据支持,并且随着新匿名机制的出现,这些规则可能已经失效。
还有一种思路是通过分析网络中的路由来建立各代号及其网卡地址之间的关系。其原理是同一用户的网卡地址通常是不变的。因此,只要能发现两个不同代号来自于同一个物理网卡地址,那么,这两个代号就有很大可能属于同一用户。而实现这样一个机制,需要在网络上创建一个超级节点,来随时监听区块链网络中活跃节点的数据。一些研究成果声称,采用网络监听实现去匿名化,准确度可以达到30%。不过,这种方式成功的前提是——用户一直使用同一网络地址来登录自己所有的代号。
总的来说,在现有的匿名技术下,采用单独的线索破解比特币等区块链网络的匿名性还是较为困难的,未来研究中需要进一步结合多个线索来提高去匿名化的准确度。
正所谓“道高一尺,魔高一丈”,在一些学者研究怎么去匿名的同时,还有一些学者和机构研究怎么增强区块链的匿名性,目前主流的研究方法有三类:(1)P2P混合机制;(2)分布式混淆网络;(3)零知识证明。
P2P混合机制是指让若干用户签订协议,将多个交易混合成一个标准的交易。如此,匿名程度的高低取决混合的交易数量。在这种方式下,我们就无法认定同一笔交易的多个支付代号属于同一用户。在混合交易中,如果将多个提供者和接收者分别随机排序,我们也无法知道某一笔资金是从哪一个代号流入到哪一个代号。通过破坏交易的连续性,可使得建立代号之间的关联更为困难。
分布式混淆网络的出发点也是让资金流向的输入和输出之间的关系模糊化,其主要策略是通过一个第三方机构来让多个交易人互换资金,具体来说,多个用户都会和某一个第三方机构达成如下协议:我先交付给该机构10个币,过一段时间后,该机构会返还给我10个币。简单地说,这就是一种洗钱。通过这种方式,外部人员很难捕获交易之间的关联信息。但是,这种方式也面临着第三方机构不归还资金的风险。
零知识证明也可以用来预防资金流分析,在这种技术下,资金提供者并不需要通过提供自己的身份信息来验证资金的有效性,而只需证明该笔资金属于一个有效资金的公共列表。更进一步来说,利用零知识证明还能允许用户以完全私密的方式直接进行支付,相应的交易会隐藏资金的提供者、接收者和交易量,并且在无需提供这些信息的条件下,通过零知识证明技术让别人验证这笔交易的有效性。
从目前的技术来看,P2P混合机制和分布式混淆网络主要用来预防已有资金流分析策略,其目标是通过截断对区块链不同用户间的资金关联,使得资金流分析失效,相对而言,零知识证明技术的匿名程度最高,但是其效率和性能仍然存在严重的不足,总之,这些最新的区块链匿名技术还存在很多不成熟的地方,需要进一步打磨。
最后,需要指出的是,区块链的匿名性一直备受争议。从普通人的角度来看,一方面,他们需要保护自己的隐私,防范个人的敏感数据被其他人用来进行各种欺诈和骚扰,另一方面,他们并不希望区块链为各类恶意行为提供匿名平台,让自己遭受伤害。在人类进行复杂的心理斗争时,匿名和去匿名技术的对抗也仍然在延续,各位觉得谁会取得最终的胜利呢?