Mimblewimble / Grin加密货币隐私从根本上来说很脆弱。 在每周仅花费60美元在AWS上的费用之后,我就实时地将发件人和收件人链接起来,实现Grin 96%的交易。
漏洞是Mimblewimble协议的核心,我认为它无法解决。 因此,就保护隐私而言,Mimblewimble不再被视为Zcash或Monero的可行替代方案。
在过去的两年中,Mimblewimble作为一种用于私有加密货币(“ privacy coin”)的紧凑协议而流行。 Mimblewimble是一名黑客在2016年以笔名Tom Elvis Jedusor创造的。 他将
协议描述发送到IRC聊天,然后消失了。 从那以后,Mimblewimble最著名的实现是匿名开发人员创建的
Grin加密私有加密货币,以及吸引了风险投资的
Tari和
BEAM项目。 甚至Litecoin也正在考虑
Mimblewimble集成 。

一些研究人员已经
假设了Mimblewimble隐私机制的潜在弱点。 我的工作是证明了一种特定的攻击方法,证明了其在真实加密货币上的可行性并衡量了其有效性。 通过运行Grin实验,我能够成功取消匿名处理96%的交易。 因此,现在很明显,
如果您需要高度隐私 ,
就不能依赖Mimblewimble。在
我的github中,您将找到有关攻击的详细说明,播放源,收集的数据和技术常见问题解答。 本文稍后将对连接性,攻击的工作方式以及这对隐私技术意味着什么进行一般性的直观解释。
什么是连接性?
重要的是要了解这种攻击的含义和含义。
这种攻击使我们无法确定人们收到的金额。 Mimblewimble使用基于香草椭圆曲线的加密技术成功地隐藏了传输量(
Pedersen义务方案 )。 这次攻击使我们能够做的是确定
谁支付了谁 。 换句话说,它使我们能够将交易彼此联系起来并确定转账的方向。
为什么这很重要?
假设Coinbase知道特定地址属于名为Daniel的委内瑞拉。 您(美国用户)正尝试使用Coinbase提取硬币。 但是在扩大交易量之后,Coinbase确定您从Daniel收到了钱-即使他们不知道多少。 由于美国外国资产控制局对委内瑞拉施加的
限制 ,Coinbase将关闭您的帐户。 (当然,交易所会非常了解交易图,因为它们具有以法币显示的KYC用户数据)。
或想像一些威权政府知道某个地址属于政治异议人士。 您给这个持不同政见者送一个小甜甜圈。 以后,当您将Mimblewimble转移发送到本地交易所时,该交易所会将您的交易数据转移到政府。 由于政府可以看到交易的整个过程,因此它现在知道您支持了政治异议人士。
这种攻击在Zcash中是不可能的。 因为Zcash中的事务未连接,或者换句话说,每个Zcash事务都有大量
的匿名性 。 匿名集是无法区分您的交易的一组交易。 想象一下,这与人群混杂在一起:匿名集越大,交易的“人群”就越多。

在Zcash中,每笔交易的匿名集都包括所有受保护的硬币。 从理论信息的角度来看,这是最大可能的匿名性。

在Monero中,每个交易的匿名集是所有用户启用的诱饵交易的集。 尽管Monero客户端允许您设置一组诱饵的数量,但是当前的默认值是11。
最初,假定Mimblewimble匿名集由同一块中的所有事务组成,也就是说,看起来像这样:

但实际上看起来像这样:

这样可以将Mimblewimble匿名性设置为单个地址。
我想说的是,这并不是对格林的一般批评! 我非常尊重Grin社区和核心开发人员,他们总是在论坛上随时回答我的问题。
Grin仍比比特币和其他私人硬币提供更高的隐私性,因为它可以安全地加密金额。 但是Mimblewimble的隐私模型比Zcash或Monero的模型严格更弱。 因此,这对于需要隐私的许多实际用例来说是不够的。
攻击概述
您如何精确地在Mimblewimble中对交易图进行匿名处理?
我注意到,尽管对转移金额进行了加密,但Mimblewimble仍保留了可追踪的交易图。 但是协议的开发者对此很了解,因此Mimblewimble使用两种主要方法来消除连接性:
通过整个块和
“蒲公英”(Dandelion)的 聚合 。
端到端聚合的想法是,当在一个块中收集事务时,它们将被聚合为一个“超级事务”。 这种“超级
交易 ”看起来像一个巨大的
CoinJoin-所有输入和输出混合在一起,并且没有简单的方法来确定哪个支付给谁。 只有一堆输入和一堆输出,并且特定数量被隐藏。

听起来可靠吗? 只有一个问题:这个CoinJoin一次建立一个事务。 由于不断创建交易并从不同位置发送交易,因此,如果您拥有一个嗅探器节点,可以在端到端聚合完成之前收集所有交易,那么解开CoinJoin非常容易。 任何嗅探器节点都可以简单地监视网络并记住原始交易,然后再进行汇总。 如果您仅存档在P2P网络上看到的所有消息,这很容易。

在这里,您可能会感到惊讶-仅此而已?
实际上,Grin团队还创建了另一层保护:
Dandelion协议(“ dandelion”) 。 蒲公英是卡内基梅隆大学研究
人员开发的一种联网方法,该方法应隐藏交易创建者的IP。

通常,在诸如比特币之类的加密货币中,交易的创建者只是将交易发送给其所有对等方,并迅速通过P2P网络。 但是在Dandelion协议中,每笔交易的分发都是从一部坏掉的手机的秘密游戏开始的。 创建者将他的交易仅转移到一个宴会上,然后依次将其传递给另一个宴会,依此类推(沿着蒲公英)。 经过随机的此类举动后,最后的盛宴发送的交易完全类似于比特币(蒲公英“花”)中的交易。 但是,这一盛宴与交易的创建者相去甚远,以至于没有观察者可以告诉谁是链的发起者。
这非常适合隐藏提交事务的人的IP。 但是,Grin中的Dandelion具有第二个功能:在极少数情况下,即使网络中存在嗅探器节点,它也可以让您维护事务的匿名性。 由于每笔交易都是在蒲公英“词根”阶段开始的,因此当两个交易在“词根”传播阶段相交时,它们将被尽早汇总。 如果发生这种情况,那么在发送事务并对所有人可见时,嗅探器节点将无法粘贴事务:它们已被粘在CoinJoin中。
此事务发送机制是Grin防止嗅探节点进行事务连接的主要防御措施。 但是有一种轻松的方法可以打破她。
默认情况下,每个Grin节点都连接到其他8个对等节点。 但是通过增加对等点的数量,我可以将嗅探器节点连接到每个网络节点。 如果我的站点长时间连续在线,最终,网络中几乎所有节点都将连接到我,从而使我成为
超级枢纽 。
当我成为超级结时,我很有可能会出现在每笔交易的“蒲公英”链中。 因此,我可能无法在一笔交易汇总之前抓到一笔交易的唯一原因是,如果这两笔交易
在我看到至少一笔交易之前
在蒲公英的茎期相交 。 如果在汇总它们之前至少看到其中一个,则可以通过简单地减去集合来将它们分开。

在我的攻击中,我能够连接所有事务的96%,仅连接到Grin网络中总共3000个对等点中的200个对等点。 但是,如果我愿意花更多的钱,我可以轻松地连接到3,000个节点以完成几乎所有交易。 为此,没有必要保留一个大型超级用户-如果您运行具有唯一IP的3,000个单独的节点,则每个节点将仅连接到一个对等节点,则相同的攻击也将起作用。 只要我拦截所有事务性数据并将其转储到中央主数据库中,攻击就将以完全相同的方式进行。
那么可以保存Mimblewimble吗?
不清楚 我认为,在当前版本的Grin中,无法保护交易图。 仅延长“蒲公英”是不够的-正如我在
技术报告中所描述的那样,使用大量节点将很容易击败它。
但是,尽管有了事务连接,Mimblewimble仍然具有使协议与其他加密货币区分开的属性。 通过它,可以进行端到端聚合,这是减小区块链大小的有效方法,并且可以有效地隐藏交易量。 如果您希望获得较高的隐私,则可以始终将Mimblewimble与其他隐藏交易图表的协议结合使用,例如,在
以太坊9¾中 (将Mimblewimble与Zerocash样式的零重置方案结合使用)。
但是很明显,Mimblewimble本身不足以提供高度的隐私。
比特币现在已有11年历史了,但加密货币仍处于发展的早期阶段。 不久前,在
Zcash和
Monero中都发现了严重的漏洞。 这是可以预期的:大多数有趣的技术仍处于研究阶段。
但这就是科学一直在发展的方式:我们不断提出新的假设并加以驳斥,直到只有经过时间考验的那些假设存在。
感谢Hasib Kireshi在编写此报告和说明匿名性方面的大量帮助。 还要感谢Oleg Ostroumov,Elena Nadolinsky,Mohamed Fouda,Lucas Ryan和Nader Al-Naji审查了此职位的草稿。 非常感谢Jake Stutzman(NEAR协议)的蒲公英插图和块聚合。 感谢Daria Smirnova翻译本文。
如果您喜欢这篇文章,建议您订阅我的Twitter (他们首先去(英文))。
披露:Dragonfly Capital同意自发布之日起3天之内不买卖本报告中所列的资产。