中本村没穿衣服!该全面评估区块链隐私保护了

“我们花了 20 年时间才明白互联网的隐私问题有多严重。现在就应该认真为密码世界考虑隐私保护。”

中本村没穿衣服!该全面评估区块链隐私保护了

希望那些参加了「Scaling Bitcoin」和 Devcon4 大会的中国区块链开发者还记得 Zcash 基金会董事会成员 Ian Miers 在大会上的演讲。他在演讲中大声疾呼:我们处于密码货币开发和使用的早期,我们对如何保护区块链上数据隐私的经验还很少,所以我们必须小心谨慎地评估目前所有的技术解决方案,别轻易就说「我们已经实现了隐私保护」!

最近,Ian Miers 再次撰文,针对目前一些区块链隐私保护系统,提出了一些「假象」中的攻击隐私保护体系和追踪用户的方法,希望以此打破人们对现有区块链隐私保护技术抱有的幻想。他说,人们应该认识到,许多系统并不像大家认为的那样私密。

撰文:Ian Miers,Zcash 基金会董事会的成员,参与创建了 Zcash

编译:詹涓

密码货币社区在评估隐私性方面做得不怎么地,他们在向普通用户解释不同项目之间关于隐私性的利弊时就甚至更加差劲了。必须要改进,并且现在就得改进。区块链世界涌现出了不少协议中,其中很多都希望成为未来的支付方式,其中某个还真有可能会胜出,到那时,想再考虑关于隐私性的正确设计是什么,就为时太晚了。

2011 年,当我开始研究密码货币的隐私性时,人们还普遍认为比特币是具有隐私性的。维基解密在推特上募集匿名的比特币捐赠,现在想想,这多少有些可悲。可现在再看,往轻里说,维基解密的一些捐赠者所处的形势有点敏感。

现在我们终于意识到了,比特币远非匿名的。许多学术论文表明,你可以将各种假名交易联系在一起,从而追踪某人在区块链上的行迹。此外,像 Chainalysis 这样的公司也在从事发现和披露此类分析的业务。

比特币可以认为是你银行账户的「Twitter」。任何人都能看到你在做什么,这些人中包括你的家人和朋友、现在和以前的恋人、商业伙伴、竞争对手,甚至包括政府机构。即使是政府决策者自己也应该记住,其他政府,包括那些他们不喜欢的政府,会通过比特币的交易深入研究他们的财政细节。

人们常说:「隐私已死」。这意味着,你没法指望自己的隐私得到保护,总会有人,包括政府、谷歌、或者某个神秘的妖怪,永远知道关于你的事情。但是,有人知道你最深最黑暗的秘密,和每个人都知道它们,这之间是有区别的。仅仅因为谷歌知道你的浏览历史,并不意味着你希望将浏览历史公诸于众。

在过去的七、八年里,我们看到了许多为密码货币增加隐私性的提议。这些技术的跨度很大,从像避免地址重复使用这类简单的事务,到复杂的密码协议,不一而足。事实上,衡量某个特定实施项目所提供的隐私性是很棘手的事情。

现在,我们不能只是诉诸于经验方法。如果这么做,那就像是在 1992 年评估互联网的隐私性。

1992 年时,欧洲核子研究中心 CERN 是仅有的网站。那会儿还没有定向广告和跟踪 cookie;谷歌 AdWords 直到 2000 年才推出。理查德·斯托曼 Richard Stallman 被视为杞人忧天的怪人。在当时,我们还没有真正使用网络做任何值得追踪的事情。

在当前的密码货币生态系统中,你无法查看人们的使用情况,无法以此对隐私技术是否 或有哪些 确实有效进行权威评估。我们无从获得必要的数据。如今,几乎所有的交易都是投机性的,这说明了热爱风险的投资者的隐私需求,但却忽略了其他所有人。

出门买张火车票,走到当地市场买一个三明治,到邮局寄一个包裹,然后在自动贩卖机买点东西,这会产生复杂的交织结构。这种行为及其产生的数据在绝大多数密码货币用户中并不明显。

作为一名研究人员,即使这些数据存在,我也不能使用它们。出于成本方面的考虑,我对数据的访问受到了限制,我和其他学术研究人员也受到了机构审查委员会施加的伦理限制。

但我们的对手不理这一套。

结果就是,我们不可能根据经验对未来的隐私需求做出评估。我们不能靠数据,只能依靠思想上的实验探索。我们需要仔细考虑我们的系统在未来几十年的使用情况,并思考它将如何发挥作用。一种可行的方法是检视相关领域中的问题。

现实世界的隐私威胁

人们提出的最常见的威胁是政府和执法部门利用区块链数据。就像投机者的隐私需求一样,这是一个威胁,但不是唯一的威胁。这也不是最可能影响公众的威胁。话虽如此,但我们不应忽视活动人士和异见人士的担忧。

在密码货币领域之外,我们最近了解到,谷歌一直在从 Visa 和万事达卡那里收集离线支付数据,并利用这些数据建立个人档案,用于投放定向广告。你可能认为谷歌做得很好,并且设置了合理的安全控制,也可能不这么认为。无论如何,这是一个令人担忧的趋势。如果谷歌正在这么做,那么某些不那么谨慎的个人和实体也会这么做。你从未听说过他们,也不知道他们是如何使用你的交易信息的。

同样,我们知道一些公司希望建立关于客户行为的丰富的档案。有许多数据来源可供他们整合,例如会员积分卡和优惠券的使用情况。零售商可以跟踪和分析这些信息,在一定程度上,他们可以猜测顾客什么时候怀孕,因为怀孕的顾客会表现出特定的购买模式。其他的医疗状况也可能呈现同样的模式。

有新闻报道指出,零售商的目标是在你甚至还不了解自己之前,或者至少在你的家人知道之前,就率先发现这些情况。

2012 年,查尔斯·杜伊格 Charles Duhigg 为《纽约时报杂志》写了一篇特写,里面有这样一则轶事:

在塔吉特百货 Target 数据科学家安德鲁·波尔 Andrew Pole 建立了一个怀孕预测模型一年后,一名男子走进明尼阿波利斯郊外的一家塔吉特门店,要求见经理。据参与谈话的一名员工说,他手里拿着寄给女儿的优惠券,显得很生气。「这是给我女儿寄来的!」他说,「她还在上高中,你们给她寄婴儿衣服和婴儿床的优惠券,这是什么意思?你们是在鼓励她怀孕吗?」经理不明就里。他瞄了一眼信封。果然,信封上写的是这名男子女儿的名字,里面夹着孕妇服和婴儿房家具的广告单张。经理立刻道歉。

几天后,这位经理又打专门电话再次道歉。

然而,在电话里,父亲显得有点尴尬。「我和我女儿谈过,」他说。「现在我才知道,在我的眼皮子底下出现了某些情况,而我自己竟然完全没有察觉到。她的预产期是 8 月份。我应该向你道歉。」

人们购买的数据存在严重的隐私问题。性取向也可能以同样的方式成为目标。这些示例可能比你从区块链中提取的更具细粒度,但问题还是体现在比特币这样的系统中。

一个更直观的例子是 Venmo。解释下,Venmo 是一项主要用于朋友之间的支付服务,比如用来支付酒吧账单或者吃饭时进行 AA。默认情况下,Venmo 对用户进行的每笔交易都有一个公共信息流,当中记录了你的姓名、收款方姓名和一个描述支付目的的备忘录字段。这与比特币区块链的数据非常接近。

我们已经看到了不少 Venmo 的公共信息流的失败案例,包括兼职大麻贩遭到逮捕,以及看似轻松的前男友盯梢指南。这在理论上蛮好玩,但实际上令人毛骨悚然,是对信息的滥用。

人们不应该对任何具有这些功能的系统听之任之。

另一个在密码货币领域更为人熟知的威胁是「可替代性 fungibility」。我们知道,对于某些密码货币,新挖出的虚拟货币会溢价出售。交易所有时会根据客户的交易历史,也就是过去曾把钱寄到何处,来屏蔽客户。

需要注意的是,交易所很强大。我们不能把他们仅仅看作是第三方观察员。它们对你的了解不仅限于交易图表。它们经常代表用户进行交易。这里的隐私问题类似于你在安卓手机上使用 Gmail 和谷歌地图的同时,还要试图保护隐私不受谷歌侵犯。在某种程度上,你在左右手互搏。

记住,比特币是你银行账户的「Twitter」,而且,这不是那种你可以选择写什么和发布什么的 Twitter。

比特币更像是一个令人毛骨悚然的另类世界的 Twitter,它能自动传输你的所有想法。

防御和失败

什么是可行的防御?

在一个海量数据被收集和供机器学习的世界里,似是而非的否认是行不通的。通常当我谈论这个问题的时候,总有人走过来对我说,「我可以跟警察讲:你不能证明那是我!他们还能怎样?」

这太天真了,对现实世界来说根本不够。正在部署的算法并不关心似是而非的可否认性;它们是基于概率操作。在概率足够高的时候,对于投放广告可行,对执法亦然。

区块链的隐私性不是直观的。通常人们倾向于认为,被动的第三方观察者是主要的威胁。但至为关键的还是要考虑主动攻击者,他们可以向你发送付款要求、接收你的付款,并与第三方进行交互。关于这类攻击,明显的例证是跟踪客户的商家或商户垄断巨头、试图识别支付接收者真实身份的人,以及希望追踪你的交易所。

隐私问题的假设解决方案范围十分广泛,所以我不会一一回顾。不过,我们可以从三种不同的系统的角度来看待这些方法。

首先,有些系统看起来像普通的比特币,你可以明确地识别支付的来源,唯一的保护是没有真名。基础层甚至不尝试混淆交易数据,这在密码货币圈中已经得到了广泛的理解。

另一种方法,我将其称为诱捕式系统 decoy-based system,在这种系统中,可以通过选择一定数量的可能支付来源来隐藏给定事务中真正发生的事情。最强有力的方法是 Zerocoin 和 Zerocash,在协议中根本无法识别来源。

在诱捕式系统中,例如 CoinJoin、门罗币 Monero 的 RingCT 等,你需要显式验证资金来源,但你会试图通过包含一些并非真正来源的诱饵来隐藏它。从理论上讲,任何查看交易的人都无法加以区分。通过添加噪声,实际的原点被混淆了。

同样,在使用 Zerocash 原理的系统中,没有任何标识符。

我的看法是,我们还没有正确地研究诱捕式系统的缺点。这是一个重大的疏忽,因为许多密码货币社区都将「诱饵」作为可伸缩隐私的来源。诱捕式系统统不能提供人们以为的周全的、抗攻击的隐私性。

诱捕式匿名 

Decoy-Based Deanonymization

假设你正在发送一个诱饵混淆的交易,该协议确定了资金的可能来源以及一些诱饵。现在,观察者或攻击者可以访问历史上可能相关的支付树。他们不能准确地指出到底发生了什么,因为它就像一个模糊的族谱,但是他们可以根据这个单一的交易推断出发生了什么。这个族谱,我称之为「污染树」,在未来也同样有效。

监督者攻击

假设你的交易是支付给一个商户。钱接下来会流向哪里?攻击者无法准确知道,因为系统使用了诱饵。但他们将能够追踪有限数量的可能性,以确定资金可能的流向。接下来,他们可以展开一个排除的过程。

污点树状图为攻击者提供了强大的追逐能力,特别是在对多个事务上重复跟踪分析时。如果你是一个商户,或者一组相互结盟的商户,你可以做的一件事就是跟踪有重复支付行为的客户。

打比方说,我每天都去塔吉特门店,用现金购物。应该没有办法追踪我的行踪,有的话也会非常费劲,比如采集指纹或 DNA,这需要已掌握生物识别技术,或者预先知道我要用的钞票的序列号。

如果我开始使用密码货币在塔吉特购物呢?尽管大型零售商目前还不接受加密货币,但这是这些技术的最终阶段。理想情况下,我可以分别进行三次购买,而不至于将它们联系在一起。拥有真正隐私的加密货币将实现这一点。

如果你只从表面上看诱捕式系统,它似乎确实实现了这一点。这些交易貌似并没有联系起来:

中本村没穿衣服!该全面评估区块链隐私保护了

情况只是更糟。让我们再次思考我对一家商户的多次支付。我不想让他们知道我是同一个人,但在一个诱捕式系统中,你会产生污点树状图,而这当中或许就有你的资金源。万一它们有一个共同的原点会怎样呢?我去 Coinbase 之类的交易所,买了一些加密货币,然后转到区块链上。

这样,这些资金将可以被归集到一个来源上。如果回溯污点树状图,可以查看交叉点并甄别出进行这些交易的人。这种方法不仅适用于一家商户,也适用于多家商户或其他接受支付的实体。他们可以联合起来搞清楚你是谁,对包括隐私来说,这是个大问题。

手电筒攻击

假设我想接受匿名在线支付。比方说,我是一个极权国家的异见人士,需要接受捐赠,但不能透露自己的真实身份;在我从事活动的地方,我的生命处于危险之中。但我的工作需要经费支持。当然,政府试图把我给拎出来。他们可以调动情报机构和秘密警察。

如果我使用的是一种保护隐私的密码货币,那么将捐赠的资金存入本地交易所应该是安全的,即使这个交易所由政府控制也是如此。理想情况下,那些可以用来识别我的数据,无论时基于概率或其他因素,是完全不可用的。无论交易所是否被黑客入侵、涉及腐败、遭到传唤或以其他方式渗透,我都应该是安全的。

我在这里描述的是它应该如何工作,而不是实际如何工作。

如果政府想要确认我的身份,他们是有我的密码货币地址的,因为我为了接受捐赠已经公开了它们。也许我的网站只有通过 Tor 才能访问;也许我甚至会在每次捐款时使用唯一的地址。当然,我依赖的是一种诱捕式的密码货币。

政府意识到他们可以向我的地址发送追踪付款。可能是 3 笔、20 笔、100 笔。支付数额可能非常小;毕竟金额无关紧要。在某个时候,我会把这些钱存起来。

现在我有大麻烦了。任何能够访问该交易所记录的人都可以测试该储户是否与那位民主活动人士是同一个人。他们可以检查我存储的那一套代币,重建那污点树状图和可能的资金源组合。

对于任何一个随机的人来说,他们的存款与污点支付扯上关系都不会太引人注目。诱饵是随机挑选的,所以在偶然的情况下其中一笔被污染的付款可能会流入它们的存款。另一方面,这种情况多次发生的概率很低。不可能有 100 笔污染款项都发给了同一位活动人士。

政府可以查看我的所有存款,并且看到我的污点树状图中包含他们发送的所有追踪付款。这些证据极有可能将我的法定身份与我的社会活动联系起来。

正如你所看到的那样,污点树状图对于去匿名是可行的,因此诱捕式系统违背了人们关于隐私保护在加密货币中应该如何发挥效用的认知。污点树状图有可能导致隐私遭到破坏。

中本村没穿衣服!该全面评估区块链隐私保护了

这可能是对诱捕式系统最容易执行和最令人不安的攻击。

结论就是,与恶意发送方或接收方的重复互动是危险的。情况会越来越糟!

污染尘埃攻击

还记得我说过污点树状图可以用来追踪未来的资金走向吗?在你付款之后,可能会有一堆不确定的交易涉及这些资金。这也可能被滥用。例如,攻击者可以发现朋友、家人、前男友或前女友、或任何熟人在哪里花钱。

假设攻击者支付了一小笔钱。它甚至可能是一笔尘埃交易。他们先付钱给商户,然后付钱给受害者。攻击者一直在观察污点树状图的生长,尽可能多地花钱。

中本村没穿衣服!该全面评估区块链隐私保护了

 

在某种程度上,这是一个有趣的交叉。攻击者注意到一个交易,它看上去涉及到发送给商家的资金和发送给受害者的资金。

 

中本村没穿衣服!该全面评估区块链隐私保护了

这有许多貌似合理的解释。这种交叉可能是随机诱饵造成的。或者,接收到攻击者交易的受害者可能正在与该商户一起消费。攻击者现在看到的是商户将资金从热钱包中取出,或将其用于支付账单等。同样,任何一个实例都不是确定的。但是如果这个模式重复几次,那么你就有了强有力的概率证据,证明你的朋友多次向这个商户支付。

中本村没穿衣服!该全面评估区块链隐私保护了

执法部门可以使用类似的分析来验证某个特定的人确实使用了特定的供应商。或者你也可以发现你的朋友在 Pornhub 上有购买行为。

中本村没穿衣服!该全面评估区块链隐私保护了

 

总之,一旦你对攻击者可能如何接近这些系统进行威胁建模,诱捕型隐私系统的局限性就很明显了。你必须考虑人们能主动做什么,不能做什么,以及他们可能有什么目标。

各种隐私提案都需要这种严格的评估,否则就不能指望它们能够对抗聪明而且资源丰富的对手。加密货币的设计者一定要问问自己:「如果我要通过这个系统甄别某人,我会怎么做?」

那位接受捐赠的民主活动人士可能会想:「我很安全,有七个交易代理人在给我做掩护!」但在一个诱捕型的系统中,这并不可靠。一旦有人开始给你发送追踪付款信息,并从交易所获得数据,你就失去了所有的隐私。

解决诱饵问题

中本村没穿衣服!该全面评估区块链隐私保护了

对这些技术的普遍看法似乎是:「嗯,比特币可能不具有私密性,但比特币以外的任何东西都会增加有意义的隐私。」

现实情况是,具体的技术和实施很关键。细节至关重要。用户需要了解他们所使用的特定系统所提供的利弊。购买兴奋剂与抗议独裁政权有着不同的威胁模式。

我并不是说基于诱饵的系统不可能提供有意义的隐私,如果你的诱饵集非常大。这里的「大」,指的是 500 万个可能的来源,而不是 5 个,这将改变攻击者能够发现的概率证据。最重要的是,诱饵集必须在最近的所有交易中大量重叠。否则,在与商家进行多次购买时,仍然会看到重复的共同起源等。

最后,重要的是仔细进行诱饵取样。这里我就不细讲了,有两篇论文对门罗币进行了研究,表明门罗币的诱饵样本分布与人们交易的分布并不一致。这当中存在差距。在之前的门罗币版本中,诱饵集的最后一个交易实际上是真实的交易。

大多数诱捕型系统都是实用的。为了得到大量的诱饵集,你不能让系统线性地缩放诱饵的数量。以门罗币和它的「bulletproofs」技术为例,每增加一个诱饵,事务大小就会增加 1-2 千字节。很明显,线性缩放后,交易中不会有 100 个、500 个或 1,000 个诱饵。证明生成与验证规模相等,这破坏了实用性。

你需要的是对数大小。事务大小在诱饵集中应该是对数的,而事务生成和验证时间如果不是常量,那也应该至少是对数。

零知识的方法

我可能存在个人好恶,但在我看来,解决方案应该是一种 Zerocash 风格的协议。交易输出是对接收地址中的值的承诺,你可以在 UTXO 集的某个部分上生成一个 Merkle 树,无论你可以计算出什么。零知识证明用于表明你付款的来源存在于 UTXO Merkle 树中,可以在不暴露相关 UTXO 的情况下对其进行验证。这就是隐私的来源。这是 Zerocash 的基本方法,其中整个 UTXO 集包含在Merkle树中。

如何使其可伸缩?你必须选择一种你喜欢的零知识证明安全技术,我所说的「喜欢」是指:你认为其加密是安全的,你认为假设是合理的,并且设置属性可以满足你的任何操作需求。可能是 SNARK,可能是 STARK,也可能是 bulletproof。选择零知识证明之后,你可以修改可伸缩性。

方案和参数已经选定,现在轮到效率了。基准测试开始。随着 Merkle 树变长,如果你不像 Zcash 那样使用基于 QAP 的 zk-SNARK,那么交易就会变大,验证时间也会变慢。目标是找到一个深度,其效率可以满足性能要求。也许是 Zcash Sapling 在用的 d=32。也许 d=4,也许是 8。其实这并不重要,无论你做什么,你的诱饵集现在是 2 ^ d,这超过了大多数基于诱饵的方法。

我应该稍微说一下,这些技术的水准正在提高。对于 zk-SNARK,生成交易的时间从大约 40 秒缩短到约 2 秒。过去需要大量的内存,往往超过 3G,现在是 40MB。同样,bulletproof 也越来越快。

结论

我们需要深入考虑保护隐私的方法。密码货币应该构建健壮的、抗攻击的解决方案来保护财务信息。这可能发生在链上,但这不是一个给定条件。现在人们常说,隐私将在链外得到保障。这很好,我希望它真能起到作用,但这不能免除你评估系统默认弱点的责任。仅仅因为它是链下的,并不意味着信息不会泄露。

我在 「Scaling Bitcoin」和 Devcon 两个会议上做了关于隐私的演讲之后,观察大家对此的反应非常有趣。有些项目非常认真并且准确地向用户说明了其隐私保护可以达到的程度。例如,Grin 项目在 github 上面专门撰文写明了该该项目在隐私保护方面的整体状况。这正是密码货币开发人员应该做的,而且其文件非常出色。Grin 的团队采取了非常保守的立场,谈论的是目前可用的隐私,而不是假设。我唯一担心的是 Grin 低估了泄漏交易图 transaction graph,他们称之为「输入和输出链接」的风险。但总而言之,Grin 开发团队所写的这篇关于该项目隐私保护情况概览的文章非常好,我希望更多的团队也能争取做得类似的行动,向用户说的明明白白。

不幸的是,还有很多人的反应让人失望。那些声称 CT、秘密地址或 Dandelion 可以提供全面或完美的隐私保护的说法是不负责任的。这些技术都不能解决我提出的问题。它们都无法阻止手电筒攻击,而这种攻击可以让政府通过与接受支付的暗网互动来甄别某人的合法身份。

最后,许多人注意到,我提到的一些攻击在实践中可能很难发起,因为存在噪音和大量的交易。对于污染尘埃攻击,这么说完全正确。但对于手电筒攻击或者监督者攻击来说就根本不是这样了。

总的来说,我所描述的攻击都是思想上的实验。其目的是让你认识到许多系统并不像人们认为的那样私密,并指导对实际隐私级别的探索。

可能的情况是,在有了足够的流量和足够大的诱饵集时,你能得到可行的隐私保护。然而,除非有分析证明这一点,否则我们必须考虑哪些实施通过了基本的嗅觉测试。此外,我的示例是在考虑使用真实的加密货币时遇到的基本攻击。不要忘了,对手聪明、有创造力,而且孜孜不倦。

记住,被动的第三方不是唯一的攻击者。这并不是当今人们在互联网上使用现有技术所面临的主要威胁。数据正在被企业或恶意满满的前男友前女友,或被暴虐的政府追踪。

还要记住,攻击只会越来越强大。我们处于密码货币功能发展和使用的早期。与互联网或其他较老的系统相比,我们在构建或保护加密货币的经验还很少。

无论如何,作为开发人员和社区,目前把优先事项放在扩展而非隐私上,这是一个合理的选择。但是当你这么做的时候,要明白你在隐私方面放弃了什么,并应该对此保持透明。不要随意选择一种方式,然后说:「这增加了一些隐私,所以现在我们已经实现了完全私密。」这不是实情;添加一些隐私并不能使协议完全私密,而且用户仍然很容易受到攻击。

我们花了 20 年的时间才明白互联网的隐私问题有多严重。发展在加速,但仅仅几年是不够的。五年,也许十年。现在为隐私奠定基础至关重要。

本文作者 Ian Miers 是康奈尔大学博士后,也是 Zcash 基金会董事会的成员。他参与创建了 Zcash,并与人合著了 Zcash 的前身 Zerocoin 和 Zerocash 的有关论文。在 2018 年,Miers 在「Scaling Bitcoin」和 Devcon4 两个会议上发表了关于隐私攻击的演讲。本文以这些演讲为基础撰写。

生成图片
8

发表评论

中本村没穿衣服!该全面评估区块链隐私保护了

星期二 2019-02-12 18:03:44


中本村没穿衣服!该全面评估区块链隐私保护了

希望那些参加了「Scaling Bitcoin」和 Devcon4 大会的中国区块链开发者还记得 Zcash 基金会董事会成员 Ian Miers 在大会上的演讲。他在演讲中大声疾呼:我们处于密码货币开发和使用的早期,我们对如何保护区块链上数据隐私的经验还很少,所以我们必须小心谨慎地评估目前所有的技术解决方案,别轻易就说「我们已经实现了隐私保护」!

最近,Ian Miers 再次撰文,针对目前一些区块链隐私保护系统,提出了一些「假象」中的攻击隐私保护体系和追踪用户的方法,希望以此打破人们对现有区块链隐私保护技术抱有的幻想。他说,人们应该认识到,许多系统并不像大家认为的那样私密。

撰文:Ian Miers,Zcash 基金会董事会的成员,参与创建了 Zcash

编译:詹涓

密码货币社区在评估隐私性方面做得不怎么地,他们在向普通用户解释不同项目之间关于隐私性的利弊时就甚至更加差劲了。必须要改进,并且现在就得改进。区块链世界涌现出了不少协议中,其中很多都希望成为未来的支付方式,其中某个还真有可能会胜出,到那时,想再考虑关于隐私性的正确设计是什么,就为时太晚了。

2011 年,当我开始研究密码货币的隐私性时,人们还普遍认为比特币是具有隐私性的。维基解密在推特上募集匿名的比特币捐赠,现在想想,这多少有些可悲。可现在再看,往轻里说,维基解密的一些捐赠者所处的形势有点敏感。

现在我们终于意识到了,比特币远非匿名的。许多学术论文表明,你可以将各种假名交易联系在一起,从而追踪某人在区块链上的行迹。此外,像 Chainalysis 这样的公司也在从事发现和披露此类分析的业务。

比特币可以认为是你银行账户的「Twitter」。任何人都能看到你在做什么,这些人中包括你的家人和朋友、现在和以前的恋人、商业伙伴、竞争对手,甚至包括政府机构。即使是政府决策者自己也应该记住,其他政府,包括那些他们不喜欢的政府,会通过比特币的交易深入研究他们的财政细节。

人们常说:「隐私已死」。这意味着,你没法指望自己的隐私得到保护,总会有人,包括政府、谷歌、或者某个神秘的妖怪,永远知道关于你的事情。但是,有人知道你最深最黑暗的秘密,和每个人都知道它们,这之间是有区别的。仅仅因为谷歌知道你的浏览历史,并不意味着你希望将浏览历史公诸于众。

在过去的七、八年里,我们看到了许多为密码货币增加隐私性的提议。这些技术的跨度很大,从像避免地址重复使用这类简单的事务,到复杂的密码协议,不一而足。事实上,衡量某个特定实施项目所提供的隐私性是很棘手的事情。

现在,我们不能只是诉诸于经验方法。如果这么做,那就像是在 1992 年评估互联网的隐私性。

1992 年时,欧洲核子研究中心 CERN 是仅有的网站。那会儿还没有定向广告和跟踪 cookie;谷歌 AdWords 直到 2000 年才推出。理查德·斯托曼 Richard Stallman 被视为杞人忧天的怪人。在当时,我们还没有真正使用网络做任何值得追踪的事情。

在当前的密码货币生态系统中,你无法查看人们的使用情况,无法以此对隐私技术是否 或有哪些 确实有效进行权威评估。我们无从获得必要的数据。如今,几乎所有的交易都是投机性的,这说明了热爱风险的投资者的隐私需求,但却忽略了其他所有人。

出门买张火车票,走到当地市场买一个三明治,到邮局寄一个包裹,然后在自动贩卖机买点东西,这会产生复杂的交织结构。这种行为及其产生的数据在绝大多数密码货币用户中并不明显。

作为一名研究人员,即使这些数据存在,我也不能使用它们。出于成本方面的考虑,我对数据的访问受到了限制,我和其他学术研究人员也受到了机构审查委员会施加的伦理限制。

但我们的对手不理这一套。

结果就是,我们不可能根据经验对未来的隐私需求做出评估。我们不能靠数据,只能依靠思想上的实验探索。我们需要仔细考虑我们的系统在未来几十年的使用情况,并思考它将如何发挥作用。一种可行的方法是检视相关领域中的问题。

现实世界的隐私威胁

人们提出的最常见的威胁是政府和执法部门利用区块链数据。就像投机者的隐私需求一样,这是一个威胁,但不是唯一的威胁。这也不是最可能影响公众的威胁。话虽如此,但我们不应忽视活动人士和异见人士的担忧。

在密码货币领域之外,我们最近了解到,谷歌一直在从 Visa 和万事达卡那里收集离线支付数据,并利用这些数据建立个人档案,用于投放定向广告。你可能认为谷歌做得很好,并且设置了合理的安全控制,也可能不这么认为。无论如何,这是一个令人担忧的趋势。如果谷歌正在这么做,那么某些不那么谨慎的个人和实体也会这么做。你从未听说过他们,也不知道他们是如何使用你的交易信息的。

同样,我们知道一些公司希望建立关于客户行为的丰富的档案。有许多数据来源可供他们整合,例如会员积分卡和优惠券的使用情况。零售商可以跟踪和分析这些信息,在一定程度上,他们可以猜测顾客什么时候怀孕,因为怀孕的顾客会表现出特定的购买模式。其他的医疗状况也可能呈现同样的模式。

有新闻报道指出,零售商的目标是在你甚至还不了解自己之前,或者至少在你的家人知道之前,就率先发现这些情况。

2012 年,查尔斯·杜伊格 Charles Duhigg 为《纽约时报杂志》写了一篇特写,里面有这样一则轶事:

在塔吉特百货 Target 数据科学家安德鲁·波尔 Andrew Pole 建立了一个怀孕预测模型一年后,一名男子走进明尼阿波利斯郊外的一家塔吉特门店,要求见经理。据参与谈话的一名员工说,他手里拿着寄给女儿的优惠券,显得很生气。「这是给我女儿寄来的!」他说,「她还在上高中,你们给她寄婴儿衣服和婴儿床的优惠券,这是什么意思?你们是在鼓励她怀孕吗?」经理不明就里。他瞄了一眼信封。果然,信封上写的是这名男子女儿的名字,里面夹着孕妇服和婴儿房家具的广告单张。经理立刻道歉。

几天后,这位经理又打专门电话再次道歉。

然而,在电话里,父亲显得有点尴尬。「我和我女儿谈过,」他说。「现在我才知道,在我的眼皮子底下出现了某些情况,而我自己竟然完全没有察觉到。她的预产期是 8 月份。我应该向你道歉。」

人们购买的数据存在严重的隐私问题。性取向也可能以同样的方式成为目标。这些示例可能比你从区块链中提取的更具细粒度,但问题还是体现在比特币这样的系统中。

一个更直观的例子是 Venmo。解释下,Venmo 是一项主要用于朋友之间的支付服务,比如用来支付酒吧账单或者吃饭时进行 AA。默认情况下,Venmo 对用户进行的每笔交易都有一个公共信息流,当中记录了你的姓名、收款方姓名和一个描述支付目的的备忘录字段。这与比特币区块链的数据非常接近。

我们已经看到了不少 Venmo 的公共信息流的失败案例,包括兼职大麻贩遭到逮捕,以及看似轻松的前男友盯梢指南。这在理论上蛮好玩,但实际上令人毛骨悚然,是对信息的滥用。

人们不应该对任何具有这些功能的系统听之任之。

另一个在密码货币领域更为人熟知的威胁是「可替代性 fungibility」。我们知道,对于某些密码货币,新挖出的虚拟货币会溢价出售。交易所有时会根据客户的交易历史,也就是过去曾把钱寄到何处,来屏蔽客户。

需要注意的是,交易所很强大。我们不能把他们仅仅看作是第三方观察员。它们对你的了解不仅限于交易图表。它们经常代表用户进行交易。这里的隐私问题类似于你在安卓手机上使用 Gmail 和谷歌地图的同时,还要试图保护隐私不受谷歌侵犯。在某种程度上,你在左右手互搏。

记住,比特币是你银行账户的「Twitter」,而且,这不是那种你可以选择写什么和发布什么的 Twitter。

比特币更像是一个令人毛骨悚然的另类世界的 Twitter,它能自动传输你的所有想法。

防御和失败

什么是可行的防御?

在一个海量数据被收集和供机器学习的世界里,似是而非的否认是行不通的。通常当我谈论这个问题的时候,总有人走过来对我说,「我可以跟警察讲:你不能证明那是我!他们还能怎样?」

这太天真了,对现实世界来说根本不够。正在部署的算法并不关心似是而非的可否认性;它们是基于概率操作。在概率足够高的时候,对于投放广告可行,对执法亦然。

区块链的隐私性不是直观的。通常人们倾向于认为,被动的第三方观察者是主要的威胁。但至为关键的还是要考虑主动攻击者,他们可以向你发送付款要求、接收你的付款,并与第三方进行交互。关于这类攻击,明显的例证是跟踪客户的商家或商户垄断巨头、试图识别支付接收者真实身份的人,以及希望追踪你的交易所。

隐私问题的假设解决方案范围十分广泛,所以我不会一一回顾。不过,我们可以从三种不同的系统的角度来看待这些方法。

首先,有些系统看起来像普通的比特币,你可以明确地识别支付的来源,唯一的保护是没有真名。基础层甚至不尝试混淆交易数据,这在密码货币圈中已经得到了广泛的理解。

另一种方法,我将其称为诱捕式系统 decoy-based system,在这种系统中,可以通过选择一定数量的可能支付来源来隐藏给定事务中真正发生的事情。最强有力的方法是 Zerocoin 和 Zerocash,在协议中根本无法识别来源。

在诱捕式系统中,例如 CoinJoin、门罗币 Monero 的 RingCT 等,你需要显式验证资金来源,但你会试图通过包含一些并非真正来源的诱饵来隐藏它。从理论上讲,任何查看交易的人都无法加以区分。通过添加噪声,实际的原点被混淆了。

同样,在使用 Zerocash 原理的系统中,没有任何标识符。

我的看法是,我们还没有正确地研究诱捕式系统的缺点。这是一个重大的疏忽,因为许多密码货币社区都将「诱饵」作为可伸缩隐私的来源。诱捕式系统统不能提供人们以为的周全的、抗攻击的隐私性。

诱捕式匿名 

Decoy-Based Deanonymization

假设你正在发送一个诱饵混淆的交易,该协议确定了资金的可能来源以及一些诱饵。现在,观察者或攻击者可以访问历史上可能相关的支付树。他们不能准确地指出到底发生了什么,因为它就像一个模糊的族谱,但是他们可以根据这个单一的交易推断出发生了什么。这个族谱,我称之为「污染树」,在未来也同样有效。

监督者攻击

假设你的交易是支付给一个商户。钱接下来会流向哪里?攻击者无法准确知道,因为系统使用了诱饵。但他们将能够追踪有限数量的可能性,以确定资金可能的流向。接下来,他们可以展开一个排除的过程。

污点树状图为攻击者提供了强大的追逐能力,特别是在对多个事务上重复跟踪分析时。如果你是一个商户,或者一组相互结盟的商户,你可以做的一件事就是跟踪有重复支付行为的客户。

打比方说,我每天都去塔吉特门店,用现金购物。应该没有办法追踪我的行踪,有的话也会非常费劲,比如采集指纹或 DNA,这需要已掌握生物识别技术,或者预先知道我要用的钞票的序列号。

如果我开始使用密码货币在塔吉特购物呢?尽管大型零售商目前还不接受加密货币,但这是这些技术的最终阶段。理想情况下,我可以分别进行三次购买,而不至于将它们联系在一起。拥有真正隐私的加密货币将实现这一点。

如果你只从表面上看诱捕式系统,它似乎确实实现了这一点。这些交易貌似并没有联系起来:

中本村没穿衣服!该全面评估区块链隐私保护了

情况只是更糟。让我们再次思考我对一家商户的多次支付。我不想让他们知道我是同一个人,但在一个诱捕式系统中,你会产生污点树状图,而这当中或许就有你的资金源。万一它们有一个共同的原点会怎样呢?我去 Coinbase 之类的交易所,买了一些加密货币,然后转到区块链上。

这样,这些资金将可以被归集到一个来源上。如果回溯污点树状图,可以查看交叉点并甄别出进行这些交易的人。这种方法不仅适用于一家商户,也适用于多家商户或其他接受支付的实体。他们可以联合起来搞清楚你是谁,对包括隐私来说,这是个大问题。

手电筒攻击

假设我想接受匿名在线支付。比方说,我是一个极权国家的异见人士,需要接受捐赠,但不能透露自己的真实身份;在我从事活动的地方,我的生命处于危险之中。但我的工作需要经费支持。当然,政府试图把我给拎出来。他们可以调动情报机构和秘密警察。

如果我使用的是一种保护隐私的密码货币,那么将捐赠的资金存入本地交易所应该是安全的,即使这个交易所由政府控制也是如此。理想情况下,那些可以用来识别我的数据,无论时基于概率或其他因素,是完全不可用的。无论交易所是否被黑客入侵、涉及腐败、遭到传唤或以其他方式渗透,我都应该是安全的。

我在这里描述的是它应该如何工作,而不是实际如何工作。

如果政府想要确认我的身份,他们是有我的密码货币地址的,因为我为了接受捐赠已经公开了它们。也许我的网站只有通过 Tor 才能访问;也许我甚至会在每次捐款时使用唯一的地址。当然,我依赖的是一种诱捕式的密码货币。

政府意识到他们可以向我的地址发送追踪付款。可能是 3 笔、20 笔、100 笔。支付数额可能非常小;毕竟金额无关紧要。在某个时候,我会把这些钱存起来。

现在我有大麻烦了。任何能够访问该交易所记录的人都可以测试该储户是否与那位民主活动人士是同一个人。他们可以检查我存储的那一套代币,重建那污点树状图和可能的资金源组合。

对于任何一个随机的人来说,他们的存款与污点支付扯上关系都不会太引人注目。诱饵是随机挑选的,所以在偶然的情况下其中一笔被污染的付款可能会流入它们的存款。另一方面,这种情况多次发生的概率很低。不可能有 100 笔污染款项都发给了同一位活动人士。

政府可以查看我的所有存款,并且看到我的污点树状图中包含他们发送的所有追踪付款。这些证据极有可能将我的法定身份与我的社会活动联系起来。

正如你所看到的那样,污点树状图对于去匿名是可行的,因此诱捕式系统违背了人们关于隐私保护在加密货币中应该如何发挥效用的认知。污点树状图有可能导致隐私遭到破坏。

中本村没穿衣服!该全面评估区块链隐私保护了

这可能是对诱捕式系统最容易执行和最令人不安的攻击。

结论就是,与恶意发送方或接收方的重复互动是危险的。情况会越来越糟!

污染尘埃攻击

还记得我说过污点树状图可以用来追踪未来的资金走向吗?在你付款之后,可能会有一堆不确定的交易涉及这些资金。这也可能被滥用。例如,攻击者可以发现朋友、家人、前男友或前女友、或任何熟人在哪里花钱。

假设攻击者支付了一小笔钱。它甚至可能是一笔尘埃交易。他们先付钱给商户,然后付钱给受害者。攻击者一直在观察污点树状图的生长,尽可能多地花钱。

中本村没穿衣服!该全面评估区块链隐私保护了

 

在某种程度上,这是一个有趣的交叉。攻击者注意到一个交易,它看上去涉及到发送给商家的资金和发送给受害者的资金。

 

中本村没穿衣服!该全面评估区块链隐私保护了

这有许多貌似合理的解释。这种交叉可能是随机诱饵造成的。或者,接收到攻击者交易的受害者可能正在与该商户一起消费。攻击者现在看到的是商户将资金从热钱包中取出,或将其用于支付账单等。同样,任何一个实例都不是确定的。但是如果这个模式重复几次,那么你就有了强有力的概率证据,证明你的朋友多次向这个商户支付。

中本村没穿衣服!该全面评估区块链隐私保护了

执法部门可以使用类似的分析来验证某个特定的人确实使用了特定的供应商。或者你也可以发现你的朋友在 Pornhub 上有购买行为。

中本村没穿衣服!该全面评估区块链隐私保护了

 

总之,一旦你对攻击者可能如何接近这些系统进行威胁建模,诱捕型隐私系统的局限性就很明显了。你必须考虑人们能主动做什么,不能做什么,以及他们可能有什么目标。

各种隐私提案都需要这种严格的评估,否则就不能指望它们能够对抗聪明而且资源丰富的对手。加密货币的设计者一定要问问自己:「如果我要通过这个系统甄别某人,我会怎么做?」

那位接受捐赠的民主活动人士可能会想:「我很安全,有七个交易代理人在给我做掩护!」但在一个诱捕型的系统中,这并不可靠。一旦有人开始给你发送追踪付款信息,并从交易所获得数据,你就失去了所有的隐私。

解决诱饵问题

中本村没穿衣服!该全面评估区块链隐私保护了

对这些技术的普遍看法似乎是:「嗯,比特币可能不具有私密性,但比特币以外的任何东西都会增加有意义的隐私。」

现实情况是,具体的技术和实施很关键。细节至关重要。用户需要了解他们所使用的特定系统所提供的利弊。购买兴奋剂与抗议独裁政权有着不同的威胁模式。

我并不是说基于诱饵的系统不可能提供有意义的隐私,如果你的诱饵集非常大。这里的「大」,指的是 500 万个可能的来源,而不是 5 个,这将改变攻击者能够发现的概率证据。最重要的是,诱饵集必须在最近的所有交易中大量重叠。否则,在与商家进行多次购买时,仍然会看到重复的共同起源等。

最后,重要的是仔细进行诱饵取样。这里我就不细讲了,有两篇论文对门罗币进行了研究,表明门罗币的诱饵样本分布与人们交易的分布并不一致。这当中存在差距。在之前的门罗币版本中,诱饵集的最后一个交易实际上是真实的交易。

大多数诱捕型系统都是实用的。为了得到大量的诱饵集,你不能让系统线性地缩放诱饵的数量。以门罗币和它的「bulletproofs」技术为例,每增加一个诱饵,事务大小就会增加 1-2 千字节。很明显,线性缩放后,交易中不会有 100 个、500 个或 1,000 个诱饵。证明生成与验证规模相等,这破坏了实用性。

你需要的是对数大小。事务大小在诱饵集中应该是对数的,而事务生成和验证时间如果不是常量,那也应该至少是对数。

零知识的方法

我可能存在个人好恶,但在我看来,解决方案应该是一种 Zerocash 风格的协议。交易输出是对接收地址中的值的承诺,你可以在 UTXO 集的某个部分上生成一个 Merkle 树,无论你可以计算出什么。零知识证明用于表明你付款的来源存在于 UTXO Merkle 树中,可以在不暴露相关 UTXO 的情况下对其进行验证。这就是隐私的来源。这是 Zerocash 的基本方法,其中整个 UTXO 集包含在Merkle树中。

如何使其可伸缩?你必须选择一种你喜欢的零知识证明安全技术,我所说的「喜欢」是指:你认为其加密是安全的,你认为假设是合理的,并且设置属性可以满足你的任何操作需求。可能是 SNARK,可能是 STARK,也可能是 bulletproof。选择零知识证明之后,你可以修改可伸缩性。

方案和参数已经选定,现在轮到效率了。基准测试开始。随着 Merkle 树变长,如果你不像 Zcash 那样使用基于 QAP 的 zk-SNARK,那么交易就会变大,验证时间也会变慢。目标是找到一个深度,其效率可以满足性能要求。也许是 Zcash Sapling 在用的 d=32。也许 d=4,也许是 8。其实这并不重要,无论你做什么,你的诱饵集现在是 2 ^ d,这超过了大多数基于诱饵的方法。

我应该稍微说一下,这些技术的水准正在提高。对于 zk-SNARK,生成交易的时间从大约 40 秒缩短到约 2 秒。过去需要大量的内存,往往超过 3G,现在是 40MB。同样,bulletproof 也越来越快。

结论

我们需要深入考虑保护隐私的方法。密码货币应该构建健壮的、抗攻击的解决方案来保护财务信息。这可能发生在链上,但这不是一个给定条件。现在人们常说,隐私将在链外得到保障。这很好,我希望它真能起到作用,但这不能免除你评估系统默认弱点的责任。仅仅因为它是链下的,并不意味着信息不会泄露。

我在 「Scaling Bitcoin」和 Devcon 两个会议上做了关于隐私的演讲之后,观察大家对此的反应非常有趣。有些项目非常认真并且准确地向用户说明了其隐私保护可以达到的程度。例如,Grin 项目在 github 上面专门撰文写明了该该项目在隐私保护方面的整体状况。这正是密码货币开发人员应该做的,而且其文件非常出色。Grin 的团队采取了非常保守的立场,谈论的是目前可用的隐私,而不是假设。我唯一担心的是 Grin 低估了泄漏交易图 transaction graph,他们称之为「输入和输出链接」的风险。但总而言之,Grin 开发团队所写的这篇关于该项目隐私保护情况概览的文章非常好,我希望更多的团队也能争取做得类似的行动,向用户说的明明白白。

不幸的是,还有很多人的反应让人失望。那些声称 CT、秘密地址或 Dandelion 可以提供全面或完美的隐私保护的说法是不负责任的。这些技术都不能解决我提出的问题。它们都无法阻止手电筒攻击,而这种攻击可以让政府通过与接受支付的暗网互动来甄别某人的合法身份。

最后,许多人注意到,我提到的一些攻击在实践中可能很难发起,因为存在噪音和大量的交易。对于污染尘埃攻击,这么说完全正确。但对于手电筒攻击或者监督者攻击来说就根本不是这样了。

总的来说,我所描述的攻击都是思想上的实验。其目的是让你认识到许多系统并不像人们认为的那样私密,并指导对实际隐私级别的探索。

可能的情况是,在有了足够的流量和足够大的诱饵集时,你能得到可行的隐私保护。然而,除非有分析证明这一点,否则我们必须考虑哪些实施通过了基本的嗅觉测试。此外,我的示例是在考虑使用真实的加密货币时遇到的基本攻击。不要忘了,对手聪明、有创造力,而且孜孜不倦。

记住,被动的第三方不是唯一的攻击者。这并不是当今人们在互联网上使用现有技术所面临的主要威胁。数据正在被企业或恶意满满的前男友前女友,或被暴虐的政府追踪。

还要记住,攻击只会越来越强大。我们处于密码货币功能发展和使用的早期。与互联网或其他较老的系统相比,我们在构建或保护加密货币的经验还很少。

无论如何,作为开发人员和社区,目前把优先事项放在扩展而非隐私上,这是一个合理的选择。但是当你这么做的时候,要明白你在隐私方面放弃了什么,并应该对此保持透明。不要随意选择一种方式,然后说:「这增加了一些隐私,所以现在我们已经实现了完全私密。」这不是实情;添加一些隐私并不能使协议完全私密,而且用户仍然很容易受到攻击。

我们花了 20 年的时间才明白互联网的隐私问题有多严重。发展在加速,但仅仅几年是不够的。五年,也许十年。现在为隐私奠定基础至关重要。

本文作者 Ian Miers 是康奈尔大学博士后,也是 Zcash 基金会董事会的成员。他参与创建了 Zcash,并与人合著了 Zcash 的前身 Zerocoin 和 Zerocash 的有关论文。在 2018 年,Miers 在「Scaling Bitcoin」和 Devcon4 两个会议上发表了关于隐私攻击的演讲。本文以这些演讲为基础撰写。