主页 > imtoken1.0钱包下载 > 6.2 如何对比特币进行去匿名化

6.2 如何对比特币进行去匿名化

imtoken1.0钱包下载 2023-07-01 15:18:43

我们多次强调,比特币只是一个假名系统,所以你所有的交易记录或交易地址很可能是连在一起的。让我们进一步讨论这种关联是如何发生的。

图 6.1 显示了来自维基解密捐赠页面的片段(包括本章开头引用的那个),注意比特币地址旁边的刷新按钮。可能您会期望通过单击此刷新按钮,接收捐赠的地址将替换为新生成的地址。同样,如果你刷新页面或者关闭页面,当你重新打开它时,地址也会重新生成,并且之前没有出现过。这是因为 WikiLeaks 需要确保它收到的每一笔新捐赠都对应于一个新创建的仅用于该捐赠的公钥。在此过程中,维基解密充分利用了创建新假名的能力。这实际上是比特币钱包实现匿名的最佳方式。

image.png

图6.1 维基解密捐赠页面片段

注意:注意比特币地址旁边的刷新按钮。维基解密遵循比特币匿名化的最佳实践,为每笔捐款生成一个新的接收地址。

你可能会认为这些不同的地址一定是不相关的,维基解密收到的不同捐款是完全独立的,大概他们可以单独使用每一笔捐款,但事实并非如此。

链接

假设 Alice 想买一个茶壶,价格是 8 个比特币(可能以 2015 年比特币的价格计算,实际情况应该是 8 个比特币,1 = 100 美分)。进一步假设她的比特币被分成三个不同的地址,分别有 3、5 个和 6 个比特币。事实上,Alice 没有足够的 8 个比特币用于单个比特币地址,她必须将两个输出组合成一个输入来支付商店。

隐身地址

假设 Bob 想通过他的网站和广告牌宣传他的捐赠地址。目前没有办法向每个用户显示不同的地址,而且接收实时捐款的地址必然会轻松连接到 Bob 的站点。

这个问题的一个巧妙的解决方案是使用隐形地址。它允许接收者 Bob 发布一个静态的“永久”地址,任何发送者(如 Alice)都可以从中派生一个新地址,其私钥只有 Bob 知道。

这是怎么做到的?回想一下椭圆曲线数字签名算法 (ECDSA) 中公钥的函数形式是 gx,其中 x 是私钥,地址函数是 H(gx)。为了启用隐形地址,Bob 需要公布公钥本身,而不是较短长度的散列。然后 Alice 可以选择一个随机数 r,计算 (gx)r=gxr,然后将钱连接到这个公钥。如果 Alice 可以单独将值 r 发送给 Bob,则 Bob 可以计算出正确的私钥 xr 并将发送给公钥 gxr 的钱花掉。

这种方法并不完美,因为 Alice 需要将值 r 发送给 Bob,并且它还假设即使 Bob 不在线,比特币交易也可以进行。为了解决这个问题,有更复杂的协议允许 Alice 有效地将值 r 嵌入到比特币交易本身中。然后 Bob 可以扫描区块链,检测针对他的交易,并恢复私钥。这种方法用于旨在增强隐私的暗钱包,类似的想法也用于加密签名(CryptoNote)等替代硬币。

那么问题来了,这笔交易在区块链网络中会有一个永久的记录,任何看到这条记录的人都可以推断出这两个输入交易很可能是由同一个用户控制的。换句话说,共享消费成为不同输入地址共同控制的证据。当然,也可能有例外。有可能 Alice 和 Bob 是在同一个卧室的朋友,决定共同购买茶壶并分别付款。但是,一般来说,共同输入基本上意味着共同控制。

image.png

图6.2 多地址输入交易

注意:为了支付茶壶费用,Alice 从两个不同的比特币地址创建了一笔交易。通过这种方式,Alice 暴露了一个人控制两个不同地址的事实。

不仅如此,攻击者还可以重复上述过程,逐步关联此人所做的所有交易。如果另一个地址也与 Alice 用于交易的两个地址之一相关联,那么我们知道所有三个地址都属于同一个人,因此我们可以创建地址集群。一般来说,如果新地址的输出与地址簇中的任何已知地址一起使用,则新地址也将被添加到地址簇中。

在本章的 6.4 节中,我们将讨论一种名为 CoinJoin 的匿名技术,它与上述假设相反。但到目前为止,这种聚类技术对于不使用特殊匿名技术的普通比特币钱包用户来说非常有效。接下来,我们将很快讨论如何将这些地址集群与现实世界的身份相关联。

更改地址的随机化

早期版本的 Bitcoin-Qt 库 [现在也称为比特币核心] 有一个缺陷。对于具有两个输出地址的交易,它总是将输出地址放在最先存储更改的位置。,这意味着在许多交易中很容易辨别出变化的地址。这个漏洞在 2012 年被修复,但重点是:钱包软件在保护匿名性方面起着非常重要的作用,如果你正在开发钱包软件,你需要小心很多陷阱,特别是如果你需要保证更改地址的位置应始终是随机的,以避免给攻击者留下太多信息。

再回头看看我们的例子。假设茶壶的价格从 8 个比特币上涨到 8.5 个比特币,Alice 发现无法将未使用的消费账户合并生成只需要支付茶壶的金额。相反,Alice 使用交易可以有多个支出的特性。如图6.3所示,其中一笔支出是茶壶店的收货地址,另一笔是Alice自己的“找店”。零”地址。

现在从别人的角度来看这笔交易,他们可以推断出两个输入地址都属于同一个用户,甚至可能怀疑其中一个消费地址也属于这个用户,但无法知道是哪一个. 0.5 BTC 小于其他支付的事实并不意味着它是一个找零地址,Alice 可能有 10,000 BTC 参与交易,其中她支付了 8.@ >5 个比特币用于购买茶壶,剩下的 9 991.5 个比特币作为零钱还给了自己。在这种情况下,较大的输出是实际的更改地址。

image.png

图6.3 更改地址

注意:为了支付茶壶的费用,Alice 创建了一笔交易,其中一些比特币进入商家的钱包,其余的作为零钱返还给她自己。

另一个更好的解释是,如果茶壶只需要花费 0.5 个比特币,由于输入地址是 3 个比特币还是 6 个比特币都足够支付,Alice 根本不需要创建由两个比特币组成的交易不同的输入。但是,选择哪种交易方式完全取决于通常使用的钱包软件的特性。即使不是很有必要,钱包(或用户)也可以自由组合不同交易地址的比特币来完成支付。

成语

这种类型的实现细节称为“使用习惯”。2013 年,一组研究人员发现了大多数钱包软件使用的习语,并衍生出一种识别找零地址的强大方法。具体来说,钱包在需要时会生成一个全新的地址,并且由于使用了这个成语,这些新地址通常不会出现在区块链网络上。换句话说,非找零地址通常不是新地址,而是已经出现在区块链网络中,所以其他人可以利用这个特性来识别找零地址,并将其与输入地址相关联。

依靠成语来推测更改地址可能会出错。事实上,找零地址是一个新地址,这恰好是钱包软件的一个功能。研究人员在 2013 年对其进行测试时确实如此,现在可能仍然如此,但可能不再如此。用户可以选择覆盖原来的默认设置,最重要的是,当对手了解这种技术时,可以很容易地避免,甚至在 2013 年,研究人员发现这个功能经常会产生误报,根据这个规则,可以被分配到一个集群不一定属于同一个个体。研究人员声称,他们需要广泛的人工监督和干预才能消除这些误报。

关联真实世界的身份以解决集群

在图 6.4 中,我们可以看到 Meikle John 等人如何使用 Idiom 之类的启发式算法对比特币地址进行聚类,但这些聚类没有标签——也就是说,我们还没有将真实身份与该聚类相关联。

image.png

图 6.4 地址簇

注意:摘自 2013 年的一篇论文“Handful of Bitcoins: Finding Payment Characteristics”。在一组未命名的用户中,研究人员将联合支付地址和全新的找零地址分组为一组比特币地址。图中,圆圈的大小代表流入这些地址簇的货币数量,每一行代表一笔交易。

我们可以根据我们对比特币经济的了解做出合理的猜测。早在 2013 年,门头沟曾经是最大的比特币交易所,所以我们可以猜测图中较大的圆圈代表交易所控制的地址,我们也可能注意到图中左边较暗的圆圈代表少量的比特币,但同时交易量非常大。此功能非常适合名为 Satoshi Dice 的在线比特币赌博游戏,您可以在其中发送少量比特币作为赌注。总的来说,这不是一个很好的地址簇识别方法,需要大量的背景知识和推测匿名购买比特币,并且可能只对具有显着特征的情况有效。

用交易标记

如果只是通过访问交易所或商家的网站来找出它发布的接收比特币的地址怎么办?这实际上是没有意义的。因为大多数服务提供商会为每笔交易发布一个新地址,而这个新地址还没有在区块链网络上发布,所以等待这些地址发生交易是没有意义的,因为这些地址通常不会透露给其他人了。

推断地址的唯一可靠方法是与这些服务提供商进行实际交易、存入比特币或购买商品等。当您发送或接收比特币时,您将知道他们拥有的地址之一,很快该地址就会发布在区块链网络上(以及在其中一个集群中)。然后,您可以使用服务提供者的身份标签来标记集群。

这就是当时“少数比特币”的研究人员(以及此后的其他人)跟踪地址、购买不同的东西、加入矿池、使用比特币交易所、钱包服务、赌博网站以及其他产生比特币交易的行为的方式与这些服务提供商共进行了 344 笔交易。

在图 6.5 中,我们再次看到图 6.4 的集群,只是这次多了一个标签,我们对门头沟和中本聪骰子的猜测是准确的,这些研究人员还确定了其他一些如果没有交易方法,将难以识别的服务提供商。

识别个人

下一个问题是:我们可以对个人做同样的事情吗?也就是说,我们可以关联小集群以识别现实生活中的个人吗?

直接交易。任何与个人交易比特币的人——无论是商家、交易所、在线或离线,还是使用比特币分摊晚餐账单的朋友——都可以使用这种直接交易来了解他们的有效地址(至少一个)。

image.png

图 6.5 标签簇

注意:通过与各种比特币服务提供商进行交易,Mikel John 等人。能够识别和标记这些集群的真实身份。

通过服务提供商。在使用比特币的几个月甚至几年中,大多数用户会与交易所或其他中心化服务提供商进行一些互动,这些服务提供商会直接询问用户的真实身份——这通常是法律要求的必须这样做。我们将在下一章讨论这个话题。如果执法部门想要识别个人身份,他们可以直接去找这些服务提供商并要求他们提供数据。

疏忽。人们在公共论坛上发布他们的比特币地址的一个常见原因是通过这种方式请求捐款。当有人这样做时,他们在自己的身份和其中一个地址之间建立了关联,如果他们不使用我们将要讨论的匿名服务,所有交易都有被暴露的风险。

随着时间的推移,对隐私的攻击将变得更加有效。历史记录表明,随着越来越多的研究人员研究和开发新的去匿名化技术,越来越多的数据将被公开,去匿名化算法也将随着时间的推移而发展。连续的提高。此外,将会有越来越多的辅助信息可以帮助攻击者识别这些地址簇,如果你非常关心隐私,那么这个问题值得担心。

目前我们讨论的去匿名化技术都是基于区块链网络上的交易图分析,这些方法统称为交易图分析。

网络层去匿名化

用户是去匿名的,有很多方法不依赖交易图。在区块链网络中公开一笔交易,一种典型的做法是将交易广播到比特币点对点网络,在该网络中相应地发送消息,但不一定要在区块链网络中做永久记录。

在计算机网络术语中,区块链被归类为应用层,而点对点网络则是网络层。2011 年,Dan Kaminsky 在黑帽技术大会(Black Hat)上首次提出了网络层去匿名化的概念。他注意到,当一个节点创建交易时,该节点会与许多其他节点建立链接并广播该交易。如果网络上有足够多的节点串通起来(或者被同一个攻击者控制),他们就可以知道哪个节点是第一个广播交易的,因此可以推断出这个节点是由创建交易的用户拥有的。自己的。因此,攻击者可以将交易与节点的 IP 地址相关联,这已经非常接近真实世界的个人身份了——有很多方法可以发现 IP 地址背后的用户身份。因此匿名购买比特币,网络层去匿名化对于隐私保护来说是一个非常严重的问题(见图6.6).

image.png

图6.6 网络层去匿名化

注意:正如 Dan Kaminsky 在 2011 年黑帽技术大会上的演讲中指出的那样,“第一个通知交易的节点很可能是交易的来源”。当多个节点合作识别同一个交易源时,这种方式的实际效果会更加明显。

幸运的是,这是一个通信匿名问题,并且已经有很多研究探索这个话题。正如我们在前面的 6.1 部分中看到的,Tor 是一种广泛使用的通信匿名系统。

使用 Tor 系统为比特币实现网络层匿名化解决方案时有一些注意事项。首先,Tor 的协议与任何基于它的上层协议之间可能存在一些复杂的交互,这可能会导致打破匿名性的新方法。事实上,研究人员发现,在 Tor 协议之上使用比特币时存在一些潜在的安全问题,使用该方案时必须非常小心。其次,可能还有其他更适合与比特币一起使用的匿名通信技术。Tor 的目标是低延迟活动,例如网页浏览。您也不想在浏览网页时坐在那里等待半天,因此可能必须在匿名性方面做出一些牺牲以实现低延迟。相比之下,比特币是一个高延迟系统,因为比特币交易需要时间才能在区块链上得到确认。因此,至少在理论上,我们可能更愿意使用另一种替代方案来实现匿名性,例如混合货币网络(Mix Net,参见本章6.3 节)。但就目前而言,作为一个实际运行并拥有庞大用户群的系统,Tor 还是有一些优势的,这些用户的安全问题已经得到了深入研究。

到目前为止,我们已经看到通过事务图分析的方法,可以将不同的地址链接在一起,甚至可以进一步链接到现实世界的身份。我们还看到,基于对等网络,交易或地址可能与 IP 地址相关联。对于后一个问题,虽然不能说可以完全解决,但至少相对容易解决。前一个问题要麻烦很多,我们将在本章的其余部分继续探索如何解决。