共同支出启发式方法在新型样本外测试中严重失效
区块链取证的基石——共同支出启发式算法,在受控实验中表现出的行为令人对其可靠性产生严重质疑。具体而言,它会在根本不存在结构和信号的地方检测到它们,并且整体准确率极低。
这不仅对区块链取证具有重大意义,而且对更广泛的数字资产法律和合规生态系统也具有重大意义。这一单一启发式方法是业内最大的取证和合规服务公司的基础,并为全球众多法律案件提供支持。我们认为这是首次对该启发式方法的性能进行样本外测试,结果表明其存在诸多局限性。
令人担忧的是,一项早在 2013 年就已发表,并被执法部门广泛使用的技术,其准确性却要等到 2025 年才能公开测试,而且测试的样本数据集非常小。
值得注意的是,一项于2013年首次发表并在随后几年被执法部门广泛使用的技术,其首次公开准确性测试结果却要等到2025年才会发布,而且测试数据集相对较小。此外,将我们的样本外结果与之前的样本内研究进行比较,发现存在与过拟合一致的迹象。这表明,整个行业的测试方法可能需要改进,因为用户和服务提供商可能没有充分验证他们的工具,或者可能得到了截然不同的结果。
这些说法很有分量。以下是我们支持这些说法的计划:
包含所有数据的详细论文可在此处获取。
这项工作建立在我们之前的工作之上,该工作表明Coinjoin 自 2009 年以来一直是比特币的普遍现象,这促使我们提交了一份法庭之友意见陈述,认为共同花费启发式方法在法庭上作为一种误报最少的取证方法提出之前需要进行更严格的测试,就像美国诉斯特林戈夫案中发生的那样。
随后,我们开发了将ZK Mixer 交易转换为 Coinjoin 交易的技术,从而开展了这项研究。
我们将其视为一项评估分类启发式算法的科学练习,类似于其他模型测试。但我们始料未及的是,样本外性能差异竟如此显著。
我们最初的假设是,该启发式方法的可靠性将支持执法部门向交易所等中间企业索取信息的要求,并且其结果足以满足搜查令请求和类似的“可能原因”法律程序的要求。
我们原本预期会发现可靠性水平较低,需要更多佐证才能达到更高的法律标准。然而,我们惊讶地发现,错误率似乎只是未经证实的猜测,根本不应被用于支持任何执法活动。
这是一项单一研究,我们并不声称这些性能特征可以推广到所有情况,或者一定可以推广到最重要的情况。
一项采用特定样本外测试方法的研究并不能否定该技术的价值。然而,它确实表明,需要对区块链分析进行更严格的测试,并重新审视法律体系如何评估区块链分析。
即使撇开我们的具体发现不谈,这种性质的全面测试在执法部门开始使用它们十多年后才首次出现,这本身就是一个问题。
样本内测试与样本外测试
开发任何任务的模型时,都必须从数据入手。对于分类模型(即给输入数据点贴标签的模型)而言,这些数据必须包含一组具有独立且客观可确定标签的输入点。
想象一下,构建一个模型,以人像照片为输入,输出人物的头发颜色。为了训练和评估这个模型,你需要一个流程来标注每张照片的头发颜色。你需要“黄金标准”数据,其标注准确率必须达到100%。
如果你用 100 张照片训练你的模型,然后用这 100 张照片测试模型的性能,这被称为“样本内”测试。
如果你用同一个模型在 100 张不同的照片上进行测试——这些照片以前从未有人正确标注过头发颜色——那就是“样本外”测试。
通常情况下,我们预期样本外性能会比样本内性能差。一位工程师在比较两个模型时,如果可以使用总共 200 张带标签的照片,通常会:
- 使用100张随机选择的照片训练每个模型
- 评估另外100张照片的表现
- 重复此操作 100 次
- 比较两种模型的平均样本外性能
这个过程背后的担忧是,对同一数据进行过多的训练和测试可能会导致“过拟合”。
该模型可能会捕捉到数据中存在的非预期特征,例如受试者的衬衫颜色、眼睛颜色、种族或其他特征。
重要的是,这种类型的过拟合和由此产生的模型偏差不需要工程师有任何偏见或有意识的努力。
如果你的数据集中所有金发女郎都有蓝眼睛,你就无法确定模型是学会了检测金发还是蓝眼睛。
如果所有金发女郎都是男性,都留着胡子,或者具有其他一些显著特征,那么即使工程师没有犯任何错误,该模型也可能存在偏见。
同样,如果一家公司只有 200 张照片,却花费数年时间建立模型,那么所有的测试都不能算是真正的“样本外测试”。工程师们根据上述过程中衡量的性能做出决策,而这个过程仍然依赖于同样的 200 张照片。
现在,将规模扩大到20万张照片、数百名工程师以及长达十年的模型构建。所有工具都依赖于数据集中的某些特征,而这些特征是人类无法察觉,但计算机却能始终如一地识别出来,这似乎就合情合理了。
对于照片来说,这是可以控制的,因为带标签的照片供应几乎是无限的。
DNA样本、指纹以及许多其他法医物证也基本如此,因为总能获取更多数据。对于测速雷达枪而言,也很容易进行新的实验。这类案例的测试数据比比皆是。
但是,如果你的模型研究的是极其罕见的疾病、熊猫交配、日食或极端天气呢?
在这种情况下获取更多数据并非易事。
广义相对论的早期检验需要等待特定类型的日食或月食。此后数十年,物理学家们致力于设计更好、更可靠、更可重复的理论检验方法。巧妙的检验设计是科学的核心组成部分。
共同支出启发式方法常用于分析非法区块链服务,因为只有在政府逮捕嫌疑人或查获软件代码、服务器或日志后,才能获得相关标签。这导致数据集有限,可能需要多年时间才能完成分析,任何分析实际上都只是样本内测试。
这与 DNA 检测有着根本的不同,DNA 检测是一种用于定罪罪犯的技术,可以使用任何来源的血液样本进行样本外测试。
本文旨在针对这一复杂案例设计更稳健的样本外检验方法。我们承认,我们的方法并非完美无缺,也存在一些妥协和不足。
然而,另一种方法是将研究范围限制在执法部门所掌握的服务范围内,这是一种本质上不科学的做法。
如果测试只能在抓捕之后进行,那么如何确定工具对仍在逃的罪犯(执法部门正在积极追捕的罪犯)是否有效呢?
Coinjoin — ZK Mixer 同构
我们的工作围绕着一种将以太坊上的 ZK Mixer 数据转换为类似比特币 Coinjoin 混淆数据的方法展开。我们最近发表的一篇论文对此进行了详细阐述,其中提供了严谨的定义和算法,精确地展示了如何在 ZK Mixer 和 Coinjoin 之间进行转换。具体细节请参阅该论文。这里我们仅对整个过程进行简要概述,以帮助读者建立直观理解。
Coinjoin 有多个输入和多个输出。暂且假设总输入量等于总输出量。我们可以将所有输入发送到同一个混合地址,然后从该地址分发所有输出,从而将其转换为一系列混合交易。这就是混合器的工作原理。
对于真正的搅拌机,我们不希望看到余额先为零、然后变大、最后又变回零的“充值-清空”模式。相反,我们预期搅拌机内部的初始余额会远远超过任何一次单笔交易的金额。
这可以通过将这些操作交错串联起来来实现。
如果第一次 Coinjoin 只提取了余额的 10%,则将剩余的 90% 存入下一次 Coinjoin,并重复此过程。通过这种方式串联 Coinjoin,每次充值和提现的金额都小于两轮之间转移的余额,这就是基于 Coinjoin 的混币服务的运作方式。
现在反向映射应该很明显了。
将所有 ZK Mixer 交易拆分成若干组,每组交易包含同一侧的连续交易。例如,是否存在 7 笔连续的存款交易而没有取款交易?如果存在,则构成一个包含 7 笔交易的批次。
连续四次提款而没有存款?又是一批。
然后,将这些批次的连续对进行 Coinjoin 构建,同时将初始余额结转至下一批次。
这就是全部流程。
这个过程很简单。Coinjoin 的工作原理是在两个独立的大型群体之间同时转移资金,使得所有产出都来自所有投入。多次链式操作意味着所有产出都源自如此庞大且分散的投入集合,以至于无法轻易确定具体责任。这实际上在 Coinjoin 执行过程中混合了资金。
ZK Mixers 通过将资金混合在公共账户中来明确这一点。
手动运行这类服务相对简单。
技术上的复杂性在于确保以下几点的某种组合:
- 记录销毁速度非常快,任何政府都无法找回;
- 足够的匿名性可以防止服务运营的归属;
- 现有记录不足以将投入与产出关联起来。
ZK Mixers 背后的理念是,仅靠公开记录不足以进行可靠的追踪,而且也不存在掌握特权信息的操作员。这需要高超的技术。但是,请注意以下两点。
首先,确实存在足以对该服务进行去匿名化的信息。该系统是“零知识”的,因为公开信息包含所有权证明,但不会泄露任何关于存款的信息。但是,如果您知道是哪台计算机生成了这些证明,以及它们在提交提款之前的位置,那么去匿名化就成为可能。这些证明是零知识的,但相关信息确实存在于宇宙中。
其次,如果任何人都无法访问或强制披露记录,那么位于安全地点的中央运营商同样能够有效运作。我们衡量的是公开记录,而不是整个“系统”中的所有信息。
溯源是利用公开信息进行重构的过程。在此框架下,这些技术提供的混淆效果是等效的。
测试结果
如上所述,我们通常预期样本外表现会比样本内表现更差。
但是,我们也关心样本外表现与样本内表现有何不同。
如果我们观察到模型在样本内从未出现某种类型的错误,但在样本外却经常出现该类型的错误,那么我们就有理由怀疑模型过拟合。
例如,如果一个模型在样本内从未漏掉金发,但在样本外的表现却与随机猜测无异,那么我们可能需要检查训练数据中是否存在眼睛颜色、性别、胡须、服装、种族或其他可能的偏差。即使错误率无法指出具体问题所在,这种行为本身也提供了极佳的线索,表明模型存在问题。
我们发现,共耗启发式算法在样本外的性能不仅更差,而且差得非常厉害。此外,我们还发现,某种类型的错误——即启发式算法错误地将地址分类到某个簇内的“假阳性”——在样本内几乎不存在,但在样本外却以有时超过 50% 的发生率出现。
至少,这些结果表明,需要对这种启发式方法进行更多测试。我们的结果还表明,在某些情况下,这种启发式方法存在显著局限性。
样本内
Chainalysis是历史最悠久、规模最大的基于共同消费启发式算法的工具提供商,该公司引用了一项研究,该研究分析了三种被捕获的非法服务,并测量了每种服务的“误报率”(FPR)和“漏报率”(FNR)。“误报”的定义如上所述,“漏报”指的是本应包含在某个聚类中的地址被错误地排除在该聚类之外的情况。
这项研究——被誉为准确性的证明——报告了以下结果:

在所有情况下,FPR 都接近于零,而 FNR 则各不相同:5%、21% 或 75%。这表明可能存在过拟合问题,因为启发式算法频繁出现一种类型的错误,而很少出现另一种类型的错误。
人们会期望一个运行良好的工具在两个方向上的故障频率大致相同——不一定是 1:1,但肯定不会像 BestMixer 那样高达 7,250:1。
尤其值得注意的是,其中一个错误率接近于零,而另一个错误率却高达75%。这种模式表明,工程师们可能主要以最小化误报率为优化目标。
在得出“低 FPR 是可以接受的”这一结论之前,要认识到,为了使 FPR 接近于零而调整模型可能会无意中导致过拟合或其他问题,表现为在不同数据上不同的性能。
将金发检测仪的误报率降至零可能会导致模型依赖于眼睛颜色、种族或其他因素。与所有建模一样,应对此类问题的办法是使用之前未见过的数据进行测试并重新审视假设。
样本外
为了获取样本外数据,我们考察了以太坊上的 10 个 Tornado Cash 实例,涵盖 4 种不同的 ERC-20 代币。论文中提供了我们选择标准和启发式方法应用的完整细节。以下是我们测试的假阳性率 (FPR) 和假阴性率 (FNR):

我们发现假阳性率 (FPR) 介于 7% 到 83% 之间,假阴性率 (FNR) 介于 18% 到 96% 之间。正如预期的那样,这些结果比样本内结果更差,也表明存在显著的性能局限性。
对于其中一款混合器(我们测试过的最小的型号),我们发现其假阳性率 (FPR) 为 83%,假阴性率 (FNR) 为 95%。这些结果非常糟糕,性能如此之差的工具不仅不适合用于法医鉴定,甚至还不如靠猜测。
情况变得更糟了。
我们的程序生成类似比特币的交易,其中只有一个大型集群——Tornado Cash——而其他所有地址都是一个包含 1 的集群。我们可以验证这一点,因为我们能够读取 Tornado Cash 的代码,并且我们编写了相应的转换软件。在任何情况下,最大的集群都应该是混币器,理想情况下,它应该只包含混币器地址。理想情况下,其他任何集群都不应该包含混币器地址。
下图蓝色部分显示了从 10,000 Dai Tornado Cash 实例中识别出的 100 个最大集群的集群大小,红色部分显示了集群中的服务地址数量:

显而易见的是:
- 大多数服务地址都位于最大的集群中。
- 这些集群通常包含许多非服务地址
- 存在大量并非单个地址的小型地址簇。
- 服务地址分布在许多这样的集群中。
这并非完全失败,因为启发式算法至少检测到了与服务相关的内容。然而,该启发式算法将服务地址与非服务地址混淆,并且在应该只找到一个服务的地方识别出了多个服务。
该软件也能识别与服务相关的模式,尽管识别并不完美。这表明该启发式方法在某些情况下可能有效,但其普遍适用性有限。
我们当然不是说这种启发式方法会产生随机结果,因为正确答案确实存在可观察的结构。但它的价值仅在于,检测出包含服务地址一半以上的最大簇比简单地猜测更有帮助。
请记住,50% 的错误识别率并不等同于抛硬币的结果,因为可能的结果远不止两种。然而,对于一款旨在用于法庭并可作为证据采纳的法医工具而言,这样的错误识别率确实令人担忧。
本文提供了所有 10 个混合器的这些结果。对于我们检查的所有Dai混合器,以下是每个已识别集群中 Tornado Cash 地址所占的比例:

每种颜色代表一种不同的混合器,从左到右依次展示100个最大的聚类。这些细节并非主要结论。理想的结果是,每种颜色在左侧对应一个100%的值,其余均为零。
相反,我们观察到每个混合器100个簇的速率分布大多在20%到80%之间。在这些测试中,该启发式算法未能达到预期的性能标准。
在论文中,我们明确地写下了我们对成功的定义,然后提出了数据,清楚地表明,所考察的例子没有一个接近这个定义。
比较
样本内FPR接近于零而FNR却显著偏高,这表明模型存在过拟合。我们的样本外分析表明,低FPR至少在某些新的数据集上无法推广。这提供了与过拟合相符的统计证据。
为了更清楚地说明这一点,让我们回到头发颜色检测的比喻。
一位工程师提供了一个黑盒子,声称它可以识别照片中的金发。他们的研究表明,当黑盒子显示“存在金发”时,99.9% 的情况下照片中确实存在金发。
然而,当使用同一个黑色方框来识别工程师自己提供的金发女郎照片时,它经常无法正确识别头发颜色。当它显示“金发”时,结果总是正确的。但当你提供一张金发女郎的照片时,它却经常出错,这时你可能已经怀疑这个工具出了问题。
然后你用自己的照片进行测试,发现它经常在两个方向上都出错——大约有一半的时间出错。
关于这个黑箱,你能得出什么结论?或许你使用它的方式不对。
或许那位工程师弄错了。
或许这位工程师缺乏足够的专业知识。
或者,你的照片可能与工程师接受培训时使用的照片有很大不同。
可能有多种解释。
重要的结论是,这些解释都不能说明黑匣子适合其预期的用途。
讨论
我们开发了一种新的方法来测试共付启发式算法,该方法利用以太坊上的 ZK Mixer 数据合成类似比特币的交易集,其中可以进行共付交易。我们承认这并非该启发式算法的理想样本外测试。理想的测试需要使用比特币上尚未公开的非法服务的完整标记数据。实现这一目标的唯一方法是运行此类服务,并在执法部门介入并查封软件代码、日志和服务器之前发布测试结果。
这样的测试方法会更优吗?
这样的测试不需要我们的同构,步骤更少,并且能更接近地模拟使用共同消费启发式方法来研究新型搅拌机的真实世界经验。
然而,这将要求测试团队运营非法服务,公开承认这一点,并公布有助于逮捕他们的数据。
虽然理论上有人可以匿名发表此类作品,但这需要同时承认犯有可判处长期监禁的罪行、公布足以定罪的证据以及质疑执法方法。
我们的方法只解决了第三个要素,这在实践中已经有些具有挑战性了。
如果唯一可接受的测试要求测试者承认犯罪行为并公布罪证,那么严格的测试就变得不切实际。在不提出替代测试方法的情况下否定我们的前提是不具建设性的。我们的方法是出于善意,合情合理,并且能够产生有意义的结果。
它完美吗?不。
我们是否期望共同支出启发式方法立即被放弃?当然不会。
我们既不希望也不认为这是合适的结果。
然而,我们的研究结果表明,各种区块链取证技术的可靠性可能在一段时间内被高估了。
区块链倡导和合规行业的很大一部分内容都围绕着这样一个说法:额外的分析工具可以解决web3的合规性挑战。然而,当这些工具缺乏严格的、批判性的或科学的测试时,很难认真对待这些说法。
测试工具能够帮助工具制造者改进产品。未经科学测试就想当然地认为工具有效,通常会导致糟糕的结果。这些观点自启蒙运动之前就已广为人知。
没有人会对降落伞进行双盲测试,因为:
- 这种方法会很有挑战性;
- 如果可能的话,受试者很可能会死亡;
- 令人信服的非盲测试是可行的;
- 显然,有降落伞比没有降落伞要好得多。
共同支出启发式方法并不符合这种模式。
适当的测试是必要的,尤其是在假阳性可能导致错误监禁的情况下,这使得降落伞测试的担忧从“测试可能会杀人”转变为“不进行测试可能会监禁无辜的人”。
我们提出的是一项富有创意、严谨且重要的科学研究,该研究表明,共同消费启发式方法在与最常见、最引人注目的用例(即调查新型非法区块链服务)不完全相似的条件下,表现出相当大的局限性。
这项研究表明,在某些合理条件下,该启发式方法无法充分发挥作用。仅此一点就足以引发人们对该启发式方法及其衍生工具在何种情况下适用和不适用的质疑,例如在何种情况下应使用该启发式方法、在何种情况下应被法庭采纳、在何种情况下应被作为搜查令的依据,以及在其他各种常见应用中应如何运用该启发式方法及其衍生工具。
我们希望这能开启一段关于多种技术可靠性的建设性讨论时期。我们希望它能引领该领域朝着更严格的标准迈进,更重要的是,制定一套与法医学其他领域相一致的标准制定流程。

《共同消费启发式幻觉》最初发表于 Medium 上的ChainArgos ,人们正在那里通过突出显示和回应这篇文章来继续讨论。




