MBL:Dragonfly Capital 研究员说,可攻破 Mimblewimble 隐私模型_MIM

编者按:本文来自链闻,作者:IvanBogatyy,Odaily星球日报经授权转载。「每周60美元的AWS便可发现96%的Grin交易确切地址。很明显,Mimblewimble本身还不够强大,不足以提供健壮的隐私保护。」撰文:IvanBogatyy,区块链投资基金DragonflyCapital研究员,此前在区块链投资基金MetaStableCapital担任普通合伙人编译:詹涓Mimblewimble的隐私保护功能从根本上是有缺陷的。我只需每周支付60美元的AWS费用,就能实时发现96%的Grin交易发起者和收款者的确切地址。这个问题是Mimblewimble所固有的,我认为没有办法予以修补。这意味着,当涉及到隐私时,Mimblewimble不该被视为Zcash或门罗币(Monero)的可行替代品。在过去的两年中,作为一种新兴的轻量级隐私协议,Mimblewimble越来越受欢迎。Mimblewimble是2016年由一个化名为TomElvisJedusor的黑客发明的,他在一次IRC聊天中抛出了此协议的文字描述,然后就人间蒸发了。此后,Mimblewimble最著名的几个应用包括所谓「公平发布」的隐私代币Grin、由VC支持的Tari以及BEAM项目,甚至有人考虑将它集成到莱特币中。

已经有一些研究人员假设过Mimblewimble可能存在的隐私弱点。我的贡献在于:展示执行攻击的精确方法,证明其在实时网络上的可行性,并量度其有效性。在对Grin的真实测试中,我发现,揭开交易流信息的成功率达到96%。因此,现在显然不能指望Mimblewimble能提供健壮的隐私保护。这里是对Mimblewimble实施攻击的一个技术性深度研究,包括开源代码、可复现的数据和技术类常见问答。通过下文,我将对可链接性提供一个高层次的直观解释,介绍如何发起攻击,以及它对隐私技术的意义。什么是可链接性?

非常重要的一点是,理解此次攻击意味着什么、不意味着什么。这种攻击没有让我们得出人们收取款项的具体金额。Mimblewimble使用普通椭圆曲线加密成功地混淆了支付金额。但这种攻击确实能让我们找出谁给谁付款。换句话说,它让我们将各笔交易链接起来,并确认支付流。为什么这是一个大问题?可能需要展开解释下。假设Coinbase知道某个地址属于一个叫Daniel的委内瑞拉人,而你作为一个美国用户,想在Coinbase上兑换现金。但在揭开了被混淆的交易图之后,Coinbase知道了,你从Daniel那里收到了钱,尽管他们不知道你收到了多少。基于OFAC关于委内瑞拉的政策,Coinbase将关闭你的账户。交易所当然会对交易图有很多了解,因为它们拥有那些将加密币兑换为法币的用户的KYC信息。再举个例子,假如某个威权政府知道,某个特定的地址属于一位异见人士。你向这位异见者捐了一小笔钱。稍后,当你用Mimblewimble协议将钱发送到本地的交易所时,该交易所将与政府共享你的交易数据。因为政府可以看到交易图的全貌,他们现在知道,你支持过一个异见人士。这种类型的攻击在Zcash是不可能实现的。因为Zcash是「不可链接」的,换句话说,每一笔Zcash交易都有一个庞大的匿名集。匿名集本质上是一组交易,你的交易无法从中分辨出来。可以把它想象成混入人群:匿名集越大,你的交易就会混入到更大的「人群」中。

在Zcash中,每笔交易的匿名集包括所有获得了屏障防护的币。从信息论的角度来看,这是可能做到的最大匿名性。

在门罗币中,每笔交易的匿名集是所有诱饵交易的集合。虽然门罗币客户端允许你指定诱饵集的大小,但当前的缺省值为11。门罗币在安全采样诱饵方面也有自己的问题,但我认为它基本可行,看怎么取舍了。人们本以为Mimblewimble的匿名集看起来是这样的:

但实际上,它是这样的:

这将Mimblewimble的匿名集缩小到仅一个地址。需要说明的是,我并没有指责Grin的意思。我非常尊重Grin社区和核心开发人员,在听取了我的问题后,他们提供了极大的帮助。和比特币或其他非隐私币相比,Grin仍然提供了更强大的隐私模型,毕竟其交易金额是安全加密的。但与Zcash或门罗币相比,Mimblewimble提供了一个从严格意义上来看较弱的隐私模型,这使得它不足以满足许多实际的隐私用例。关于此次攻击的高阶概述

那么,在Mimblewimble中,将交易图「去匿名化」到底是怎么做到的呢?我注意到,尽管对支付金额进行了加密,Mimblewimble仍然会留下一个可链接的交易图。但是协议设计者意识到了这一点,所以Mimblewimble使用两种主要的技术来对抗可链接性:第一种是全区块直通聚合(full-blockcut-throughaggregation),第二种是蒲公英协议(Dandelion)。区块直通背后的思路是,当交易在一个区块内积累时,这些交易将聚合为一个「超级交易」。这种「超级交易」基本上就像一个巨大的代币混合(CoinJoin)——本质上,所有的输入和输出都被丢进一个巨大的桶里,没法轻易确定这个桶里谁付钱给了谁。只是一堆输入变成了一堆输出,金额被模糊了。

听起来没毛病,对吗?只有一个问题:这个混币必须一次构建一个交易。由于交易不断地被创建并从各个不同的地方广播,如果你运行一个嗅探器节点来在直通聚合完成之前获取所有的交易,那么解开CoinJoin就很简单了。任何嗅探器节点都可以检测网络,并在各交易聚合之前记录原初的交易。将你在P2P网络中检测的所有消息归档,其实是非常容易的一件事情。

等等,真的吗?就这些?Grin团队其实提出了另一条防线:蒲公英协议。蒲公英是CMU研究人员开发的一种网络技术,它试图模糊交易的发起方。

通常,在像比特币这样的加密货币中,交易的发起方只是向所有的对等方大声宣告他们的交易,然后通过P2P网络迅速传播。但在蒲公英协议中,每一笔交易的广播都是从一个秘密的电话游戏开始的。发起方只向一个对等点悄悄发布交易,而这个对等点又向另一个对等点悄悄发布,就这样链式传递。在随机跳了几次之后,最后一个对等点会像在比特币中一样宣告交易。但是这个对等点离发起方实在太远了,任何观察者都不可能分辨出谁是链条的起点。这对于混淆交易者的IP非常有用。但是蒲公英协议在Grin中还有第二个功能:它恰好可以击败嗅探器存档节点。因为每一笔交易都是从一个蒲公英链开始的,只要两笔交易在其蒲公英链中交叉,它们就会更早被聚合。如果发生这种情况,那么在将交易广播给所有观察者时,嗅探器节点已经无法拆解它们了。它们已经被混币了。这是Grin针对嗅探器节点以防御可链接性的主要措施。但是有一种简单的方法可以破解它。默认情况下,每个Grin节点连接8个其他对等点。但是通过猛增对等点的数量,我可以将我的嗅探器节点连接到网络中的所有其他节点。假设我在线时间足够长,最终几乎每个节点都会连接到我,使我成为一个超级节点。一旦我成为超级节点,很有可能任何一笔交易的蒲公英路径都会经过我。我基本可以在交易聚合之前捕捉到它:唯一不可能的情况是,在我看到它们之前,两个交易已经在蒲公英路径上相交。如果我在它们聚合之前看到其中的某一笔交易,我就可以使用一些简单的代数把它们拆解出来。

在我发起的攻击中,我能够连接96%的交易,而且在Grin网络中的总共3,000个节点中,我只连接了200个节点。如果我多花点钱,我可以很容易地连接到3,000个节点来分解几乎所有的交易。做这件事时我也不需要成为一个单一的超级节点;通过启动3,000个具有独立IP的节点,可以实现相同的攻击。我只要嗅探所有交易数据并将其转储到一个中央主数据库中,攻击就同样有效。那么Mimblewimble还有救吗?

看情况啦。我相信,正如目前所设想的那样,Grin没有明确的途径通向不可链接性。就像我在这篇技术文章中讨论的那样,仅仅提高蒲公英因子,并不足以应对一个雄心勃勃的攻击者。但除了可链接性,Mimblewimble仍然具有独特的价值!它支持直通聚合,这是一种针对完整节点的有效压缩技术,并可有效隐藏交易的金额。如果你需要较高的隐私保护,你可以将Mimblewimble与其他使交易图模糊化的协议结合使用,例如在以太坊9?中,它将Mimblewimble与一种Zerocash风格的承诺无效器方案结合在一起。但很明显,Mimblewimble本身还不够强大,不足以提供健壮的隐私保护。比特币问世已经有11年的历史了,但加密货币仍处于起步阶段。就在不久之前,在Zcash和门罗币中都发现了毁灭性的bug。这是意料之中的事情——大多数有趣的技术仍然处在基础科学阶段。但这就是科学进步的方式:我们提出新的理论,然后不断推翻它们,直到剩下的理论经受住时间的考验。感谢HaseebQureshi对本文的巨大帮助,以及他对文中匿名集动画制作的协助。还要感谢OlegOstroumov、ElenaNadolinks123rongi、MohamedFouda、LucasRyan和NaderAl-Naji审阅本文初稿。感谢JakeStutzman制作了蒲公英协议和区块集合的图表。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

[0:0ms0-3:179ms