【技术分享】远程侧信道攻击区块链匿名交
发布时间: 2023-07-11

注重隐私的加密货币,例如Zcash或Monero,旨在为交易的机密性和不可链接性提供强大的加密保证。在本文中描述了侧信道攻击,这些攻击使远程攻击者可以绕过这些保护措施。

进一步研究了计时侧信道对这些加密货币中使用的零知识证明系统的影响。注意到在Zcash的实施中,生成零知识证明的时间取决于秘密交易数据,尤其取决于交易资金的数量。因此,尽管证明系统具有零知识特性,但能够测量证明生成时间的攻击者可能会破坏交易的机密性。

本研究的攻击凸显了匿名加密货币中侧信道泄露的危险,并且需要系统地保护它们免受此类攻击。

01

Introduction

比特币是最大的加密货币,不是私有的:几项研究显示,人们可以有效地得到比特币交易的去匿名化图谱。许多其他加密货币也是如此。

对于那些希望在公共区块链上实现交易隐私的人来说,诸如Zcash,Monero和其他几个系统对记录网络中所有交易的一方提供不同程度的不可链接性(unlinkability)。将本文重点放在Zcash和Monero上,因为按市值计算它们是最大的两种匿名加密货币。但是,本研究的方法更通用,并且期望其他匿名加密货币也遭受类似的漏洞的困扰。

Zcash和Monero使用相当高级的加密原语,例如简洁的零知识参数(zk SNARK)和环签名。尽管有这些强大的密码学保护,但仍发现了一些针对交易隐私的协议级攻击并已纠正。

在本文中,采用不同的方法来分析匿名交易的隐私保证。与其攻击抽象协议,不如说是由系统中不同组件的实现所泄露的侧信道结构。具体来说,看一下计时网络通道和流量模式,这是由远程网络攻击者测得的。本研究证明,尽管在这些系统中使用的抽象零知识协议可以向观察者隐藏信息,但这些协议很容易遭受侧信道泄露。任何信息泄露都可能使零知识财产失效,并削弱或破坏匿名交易的隐私担保。

展开全文

1)结果

本研究在Zcashand、 Monero中描述了多种针对交易隐私的攻击,这些攻击利用了通信模式或系统不同部分泄露的计时信息。本文采用系统的方法,研究匿名交易在整个系统中的生命周期。在每一步中,都会寻找侧信道,并评估它们对用户隐私的影响。

匿名交易的生命周期:首先,可以在付款人的钱包中创建交易,可能借助远程服务器来生成必要的零知识证明以证明交易的有效性。最终,收款人的钱包接收到交易,可能需要在记录P2P网络中所有交易的远程P2P节点的帮助下进行。收款人的钱包必须扫描网络中的所有匿名交易,以查找收款人的交易。

攻击者可以在上述每个步骤中观察侧信道的信息,并尝试学习有关交易的信息,例如:预期收款人的身份(例如,其公钥或其P2P节点的IP地址),金额交易中转移的资金或资金来源。接下来,总结一下结果。

Zcash:在Zcash中,用户的钱包和P2P节点在单个过程中运行。钱包通过尝试使用其秘密密钥对其进行解密,以检查它是否是即将进行的每笔交易的收款人。这导致了侧信道泄露的两个来源:(1)如果解密成功,并且解密的事务(称为Note明文)格式正确,则钱包将执行额外的Pedersen承诺检查;(2)如果解密成功,但是解密的交易格式不正确,则钱包会抛出一个异常,并传播到该节点的P2P层。

在第一种情况下,执行额外的Pedersen承诺检查所花费的时间会导致P2P节点对后续网络消息的响应出现延迟。因此,本文展示了一种称为PING的攻击,该攻击将一个事务发送到节点,然后立即发出“ping”消息(Zcash的P2P网络中的标准保持活动消息)。攻击者可以使用ping响应中的延迟来推断该节点是否是交易的收款人。这构成了交易不可链接性的中断。

在第二种情况下,提出了REJECT攻击,其中攻击者精心制作了格式错误的交易,使用已知(但匿名)的公共密钥对其进行加密,然后将其发送到目标P2P节点。如果解密成功,则会触发异常,并且目标节点将明确的“reject”消息发送回攻击者。然后,收到此消息后,告知攻击者所选的公钥属于目标P2P节点的所有者,这违反了匿名性。

Monero:对于Monero,其中的钱包和节点在单独的流程中运行,证明付款的接收会改变钱包及其节点之间的通信模式。如果钱包连接到远程节点(在移动钱包中很常见,或者在首次与网络同步时很常见),如果钱包是最近交易的收款人,则被动网络攻击者可以推断出该钱包。此外,即使用户的钱包和节点位于同一位置,研究也表明,远程攻击者可以通过引起并观察节点资源上的锁争用来推断钱包到节点的通信模式。在WAN中验证这种计时攻击,攻击者(位于伦敦)推断受害者(在苏黎世运行一个节点和钱包)是否收到了付款。

这些攻击可能会使注重隐私的加密货币用户(例如,举报者或激进主义者)面临风险。例如,将用户的匿名公钥链接到其P2P节点的对手可能会发现用户的物理身份或位置。破坏了不可链接性的攻击者(并在它们进入P2P网络时监视交易)可以推断出哪些P2P节点属于彼此进行交易的用户。

本文发现和利用的漏洞比以前的工作中使用的加密计时侧信道更为深入,即使Zcash或Monero中的所有密码本原都是固定时间的,上述攻击仍将适用(ECDH密钥交换的启动时间除外)。这是因为本文的主要攻击在协议级别上缺乏恒定时间,而现有文献主要在较低级别的算法级别上研究密码学恒定时间保证。

zkSNARK生成中的侧信道:本文研究了交易创建时的计时侧信道,付款人在其中生成zkSNARK来证明交易有效。观察到在Zcash中,生成zkSNARK的时间不是恒定的,而是取决于秘密信息,例如交易金额的汉明权重。实验表明,当前的实现方式实际上不是零知识:从时序泄露中收集的信息使零知识属性无效。如果攻击者可以测量zkSNARK生成过程的运行时间,则它可以提取此信息。

2)披露和补救措施

本文中讨论的所有漏洞均已向Zcash和Monero公开,随后已修复为两个项目的最新版本。希望这项工作将有助于告知其他面向隐私的区块链项目有关匿名支付系统中侧信道泄露的危险。它还应激励诸如zkSNARK证明者之类的密码原语的恒定时间实现的发展。

02

Architecture of an Anonymous Payment System

本节介绍了一些针对隐私的加密货币的核心设计概念,例如Zcash和Monero。这些加密货币建立在比特币所谓的UTXO模型之上。每笔交易都花费先前交易的输出并产生新的输出。一组“未用交易输出”(UTXO)记录在区块链中,代表流通的总货币。

每个使用该货币的用户都拥有一个或多个公共密钥(也称为地址),并连接到P2P网络以发送和接收交易。

隐私目标:在比特币中,UTXO是形式(amount,pk)的元组,其中pk是收件人的公钥。为了以后花费此UTXO,接收者在相应的秘密密钥下产生一个签名。交易因此揭示了用掉的货币量,资金的来源(即,使用了哪些UTXO)以及目的地(即,新的UTXO的所有者的公钥)。此外,在将交易发送到网络时,用户的公钥可以链接到她所连接的P2P节点。

Zcash和Monero之类的货币旨在提供以下更强大的隐私保证:

•保密性:交易未透露交易金额。

•不可链接性:给定两笔交易发送到网络中(最多一笔交易由攻击者发送),攻击者无法确定他们是否支付相同的地址。此外,给定两个地址,对手无法确定它们是否属于同一地址给同一个用户。

•用户匿名:给定用户的地址(即公共密钥),对手无法确定该地址的所有者如何连接到P2P网络。

隐私技术:这些隐私保证是通过加密技术的组合来实现的,下面将对此进行正式介绍。

保密交隐藏了交易资金的数量。机密交易的UTXO的格式为(Commit(amount),pk),即,它们仅显示对交易金额的加密图形承诺。该交易还包括其总余额为零的证明。UTXO匿名集通过隐藏交易输入的身份来提供不可追溯性。具体而言,匿名交易不会显示其花费的UTXO,而只会显示一组超级UTXO,以及该组中某些UTXO所有权的零知识证明。

混淆和分散的地址保证了不可链接性:为了防止发送到同一地址的交易的可链接性,匿名交易的UTXO包含“混淆的”公共密钥(例如,对zcash中的密钥的承诺)。多样化的地址(或Monero中的子地址)使用户能够与多个实体进行匿名交易,而无需管理多个秘密密钥。用户可以从单个秘密密钥sk创建多个公共密钥pk1,…,pkn。这些密钥是不可链接的:很难确定两个公共密钥pk,pk’是否从同一个秘密密钥派生。

区块链扫描是不可链接的技术结果:由于匿名交易的UTXO不会明文显示收件人的公钥,因此用户必须扫描每笔新交易并执行各种加密操作,以检查交易是否适合他们。

用户匿名性由不可追踪性和不可链接性来保证:由于交易不会透露发送者或接收者的公钥,因此用户的公钥无法链接到她用来发送或接收交易的P2P节点。

软件部署:跨项目(以及使用相同货币的用户)的加密货币软件的部署有所不同。多种部署选择会极大地影响用户对本文提出的侧信道攻击的脆弱性。区分三种类型的软件:(1)节点是通过交换和验证交易和区块来处理区块链共识层的P2P客户端;(2)钱包

微信