0x01 Absert
本文提出了一种针对区块链的自适应策略双花攻击。当提交的交易在区块链中可用时,攻击者会观察诚实分支的长度,然后相应地更新攻击策略。与常规双花攻击相比,提供了更强大的策略。文中推导了攻击成功概率和攻击矿工预期回报的闭式表达式。
分析表明,在建议的攻击策略下,当攻击者获得总网络处理能力的40%时成功进行攻击的可能性比传统攻击策略预期的要高60%。为了应对这种攻击可能性的增加,要求网络节点使用更多数量的确认块来验证区块链中的交易。计算了攻击者在区块链上挖掘恶意分支的预期回报,并探讨在经过几个区块确认后,预期回报会降至零。
0x02 Self Mining Attack
在最初的比特币原理中考虑了简化的攻击模型。在此模型中,假定区块链中主干链的块数遵循(r * q / p)的泊松分布,其中r是诚实矿工形成的块数,而q和p是攻击矿工和诚实矿工分别产生下一个区块的可能性。
攻击者矿工形成s个块所需的平均时间(如果s> r,则攻击成功)为rT / p,其中T是创建一个块的平均时间。这不是一个精确的模型,因为仅考虑攻击者创建的块的平均数量,而不是实际数量。
当受害矿工与攻击者发现的区块竞争时,攻击者会让他丢弃发现的所有区块。换句话说,攻击者仅将其自己对区块链的视图提供给受害矿工。这样滥用了受害者的计算能力来挖掘攻击者的区块链。在0-确认的交易中,攻击者向卖家支付交易,卖家在看到区块链中的交易之前向攻击者移交商品。然后,攻击者封锁了卖家节点的通信并将另一笔双花交易发送到网络的其余部分。但由于攻击者控制着所有卖家的连接,因此卖家无法将原始交易告知网络的其余部分。
0x03 System Model
上图说明了典型网络中网络节点与矿工之间的流量。系统模型包括以下内容:
网络节点:有n个网络节点可以相互通信以提供或请求服务。这些节点通过网络将其交易提交给矿工。
矿工:矿工接收交易并对其进行处理,以形成包含已提交交易的新区块。形成区块后,矿工竞争将新形成的区块添加到区块链中。鼓励矿工提供采矿服务的奖励是区块链代币形式的奖励。
交易池:假设提交的交易进入网络中的交易池。然后可以联系矿工进行挖掘。
区块链代币:网络节点和矿工就区块链代币的价值达成共识。节点将代币支付给其他节点以获取服务。代币也用于挖矿过程。每个矿工在为区块链创建新区块时都会收到一些代币作为奖励。奖励金额由区块链规则确定。
假设任何节点都可以加入矿工或网络节点。即网络是未经许可的。而且,每个节点都能够安全地生成和存储公钥/私钥。如果它不能生成则至少需要安全地存储一个公钥/私钥。
在双花攻击中,攻击者向另一个网络节点发出事务,该网络节点是一个诚实的节点。攻击者必须首先说服诚实的网络节点该交易已通过区块链机制确认。因此,攻击者一直等到诚实的网络节点在区块链的某个块中接收到交易。然后,攻击者创建一个块,其中包含另一个与诚实节点的第一个交易冲突的交易。
例如,在第一笔交易中,攻击者声明她/他已经从其帐户向真实节点的帐户发送了R代币,但是在第二笔交易中,攻击者声明了将相同的R代币转移至攻击者朋友的帐户。因此,攻击者试图双花相同的代币。如果其他网络节点接受了区块链中的第二笔交易,则实际上攻击者已说服那些网络节点第二笔交易有效,而第一笔交易则无效。因此,第一笔交易仅在短时间内有效。在此期间,诚实节点会不可逆地向攻击者提供服务。
0x04 Attack Model
在本研究中,通过定义新的攻击场景来考虑更全面的攻击模型。与传统攻击模型一样,模型中的攻击者在向矿工池提交诚实节点的交易后立即开始建立恶意分支。但是与传统的攻击模型不同,当提交的交易出现在区块链中的某个块上时,模型中的攻击者会验证其恶意分支是否比有效分支更长。
如果恶意分支更长,则攻击者将继续生成更多的块,直到它能够通过产生足够长的恶意链成功地对系统进行攻击。如果主干分支更长,则攻击者将其恶意分支替换为诚实链的副本,并将新块添加到重复的主干分支中,直到可以成功攻击系统为止。这种主动的方法使模型中的攻击者在控制区块链方面获得更高的成功概率。
攻击者是矿工网络中的矿工,或者是与少数矿工协作以通过攻击区块链来控制网络的网络节点。攻击区块链意味着创建新的区块链,以便在区块链中建立新分支,并使先前添加到区块链及其交易中的区块失效。
攻击者可以访问网络的控制通道,并且可以获取区块链的副本以获取有关区块链内交易的知识。同样,没有任何代币的攻击者可能会最初向其他节点提供一些服务以获取足够的代币。然后使用代币,攻击者能够提交虚假交易。
假设节点没有受到损害,也就是说攻击者无法访问合法网络节点或矿工的私钥。合法的网络节点可以处理并正确遵循区块链协议。例如,如果矿工节点接收到无效交易,如具有零代币的智能合约交易,则它将作为无效请求被丢弃。
攻击者无法生成错误的交易,例如在交易中添加无效的数字签名。这是由于区块链的性质。在将错误的交易插入到区块中之后,该区块无法从其他矿工那里获得足够的确认,因此无法被视为区块链中的新区块。
0x05 Security Goals
根据定义,如果每个在最大时间t运行的攻击者都以最高概率ε成功攻击安全方案,则该方案被称为(t,ε)-secure。这意味着为了证明方案的安全级别需要显示攻击方案所需的工作量及其相关概率。
如上图所示,不同的矿工和网络节点可能会在区块链中跟随不同的等长分支,从而在系统中创建了一个分叉。一个分叉具有两个等长的分支,导致平局,因为两个分支都可以被认为是有效的。
但是如图(b)所示,一旦在分支中挖掘了一个新块,所有网络节点都将接受更长的分支作为主干分支。因此,分叉的另一个链中的块将被忽略。如果该区块在距离链中最后一个区块的z区块之外,则在较长链中给定区块内发生的交易被称为z确认。例如,在(b)中,有一个针对块4b中所有交易的确认,而有两个针对在块3中所有交易的确认。
假设代币仅由区块链中定义的机制创建,例如工作量证明(PoW)机制。因此,代币的来源是基于矿工在采矿过程中花费的精力。矿工是诚实的还是攻击者。如果他们是攻击者,他们将不费吹灰之力就无法在区块链中创建新代币。
1)常规的双花攻击:现在回顾一下将在系统模型上映射的区块链中发生的双花攻击的发生率。攻击者生成交易以请求诚实的网络节点提供服务,并同意支付一些代币作为回报。例如,如果节点B向节点A提供了特定的网络服务,则节点A会将R代币转让给节点B。称此为良性交易。该交易然后被广播到网络(下图中的步骤A)。
广播良性交易后,攻击者创建与良性交易冲突的第二笔交易。例如,节点A将R代币转移到节点C。然后,在不向诚实矿工广播第二个交易的情况下,攻击者矿工秘密开始生成新块,然后添加这些块到与诚实分支并行的不同块链。将此称为恶意分支,该链中的一个块包含第二个交易。
经过一定时间后,良性交易将出现在主干链的第k块中(步骤B);也就是说,主干分支将成功创建k个连续的区块,直到提交的交易出现在其中一个区块中。假设攻击者在那之前一直在秘密挖掘m1块。攻击者将继续在其恶意链中秘密添加新块,直到网络节点在主干链的块k之后看到z个块为止。假定攻击者在步骤B和C之间创建了m2个以上的块。因此,恶意链的长度为m = m1 + m2。
在步骤C,接收到z个确认块之后,作为良性交易中提到的R代币的接收者的网络节点假定支付已经完成,并向攻击者提供服务(步骤C)。一旦攻击者从诚实的网络节点接收到服务,它就会向网络展示恶意链。这在区块链中产生了一个分支;主干分支和恶意分支。现在,如果恶意链长于主干链(m1 + m2> z + k),则网络节点将跟随恶意分支并忽略主干链。因此,良性交易被第二个交易代替,即双花攻击成功。
2)自适应策略双花攻击:与传统的攻击策略一样,攻击者在步骤A之后开始创建恶意链。在步骤B,交易出现在主干链中的区块中。这时,如果攻击者发现恶意链m1的长度比主干链的k长,将继续采用传统的攻击策略,即在恶意链中的m1块上添加新的块(下图中的状态1 )。即使攻击者在步骤A和步骤B之间计算了较长的链,也无法将其透露给网络,因为这会阻止正常事务中的接收方节点在步骤C提供服务。
但是,如果在步骤B中主干链较长,即m1小于k,则攻击者意识到它已经滞后,并且如果继续使用恶意链,则必须承担更高的计算成本(下图状态2 )。因此,与常规攻击策略不同,攻击者不会继续使用恶意链。相反,它会主动从恶意链中复制k-1块,并向该副本添加新块,以提高其受到攻击的可能性。主干链包含块k中的良性交易。因此,攻击者不会复制块k,而只考虑主干链的前k-1个块。两种情况都在下图所示。
0x05 Security Analysis
假设攻击者和诚实矿工而是居然下一个区块的概率分别为q和p =(1- q)。一旦攻击者创建了比主干链更长的恶意链,攻击者就可以控制该区块链。那么成功攻击区块链PV(k,z)的概率为:
其中P(m1 <k,m2> z)是m1<k和m2> z的联合概率,P(m1≥k,m1 + m2> z + k)是m1≥k和m1+m2> z + k的联合概率。在步骤A之后的任何时候,只要恶意链比主干链长g块,攻击者都会创建一条比主干链更长的恶意链的概率由p(g)表示:
也就是说,如果q≥p,则攻击者最终将以概率1控制该链。否则,攻击者将以ag的概率控制该链。下面命题1中以q和p给出ag的表达式。
命题1:将为区块链创建的新块建模为马尔可夫过程(连续时间,离散状态空间),如上图所示。攻击者和诚实矿工生成下一个块的概率分别是q和p =(1- q)(q <p)。假定攻击者当前制造的恶意链比诚实矿工挖掘的主干链短了g块。然后,攻击者通过创建比主干分支长一个区块的欸有分支来控制区块链的概率为:
其中a(g-1)是攻击者可以成功开采g-1个区块的条件概率,假设最后一个块也已被攻击者开采,a(g+1)是攻击者可以成功开采g+1个区块的概率,因为最后一个区块是由诚实的矿工开采的。
(3)采用考虑初始条件a-1 = 1和a0 = q / p的递归关系的形式证明等式。
现在检查攻击者的恶意链比主干链落后g块的概率。如果攻击者链和诚实链分别具有f和h个块,则知道g = h-f个块。下面的假设给出了当攻击者和诚实矿工分别生成概率为q和p的下一个块时,在恶意和诚实分支中存在f和h块的概率p(f,h)。
假设时间单位足够小,攻击者和诚实矿工无法同时生成两个块。因此,可以假定攻击者的恶意链落后主干链g=h-f块的概率相当于攻击者成功生成f块的概率,并且无法创建h块(因为h块是由诚实的矿工生成的),f<h。
然后将攻击者生成的块数f建模为负二项式随机变量,即f〜NB(h,q),因为f是h失败之前的成功次数,成功概率为q。那么,攻击者具有f成功和h失败的概率p(f,h)为:
当攻击者观察到恶意链在步骤A和B之间包含k个块时,得出系统受到攻击的概率的表达式。
命题2:当攻击者观察到主干链在步骤A和步骤B之间有k个块时,z个确认块验证下成功攻击的概率为:
其中p(m1,k)是恶意链和主干链中步骤A和B之间分别为m1和k个块的联合概率,p(m2,z)是步骤之间恶意链和主干链的块分别为m2和z的联合概率,ag是当恶意链比主干链落后g块时攻击成功的概率。
证明:根据(2)和(4),当主干链具有h个块且q<p时,攻击者成功攻击区块链的概率为:
根据(6),状态1中攻击者成功攻击区块链的概率为:
同样,状态2的攻击者成功攻击区块链的概率为:
最后,(8)和(7)代入(1)给出的成功攻击的概率为:
下图给出了当攻击者创建下一个区块的成功概率分别为q = 0.2、0.3和0.4时,(9)中针对不同z值的PV(k,z)。作为标准攻击方案,考虑在区块链文献中通常研究的攻击模型,攻击者在步骤B中没有观察(并利用)诚实链的长度。成功攻击的可能性较高,主要是因为如果攻击者未能在步骤B之前创建更长的链,则攻击者可以在步骤B使用有效链(前k个块)。
当q减小时,成功的攻击概率降低,因为q较小意味着攻击者生成下一个块的机会较小。还可以观察到,当增加块确认数z时,成功攻击的可能性会迅速降低。这表明,即使攻击者选择了适应性策略,当使用足够多的确认块来验证每笔交易时,区块链系统也能抵抗双花攻击。
关于选择的q值的讨论:在分析中选择了不超过0.4的q值。现在解释为什么选择的q值足够高。
在区块链文献中,假设攻击者制造新区块的概率q始终小于诚实矿工的相应概率p,即假设(q <p)。换句话说,在区块链中创建新块时,总是假定攻击者的网络处理能力不到总网络处理能力的一半。现在分析攻击者为了达到q = 0.4、0.3或0.2而必须进行的投入。
PoW机制旨在控制矿工网络生成新区块所需的时间持续时间T。现有系统中T的示例值对于比特币区块链为T = 600(s),对于以太坊区块链为T = 10(s)。现在,网络哈希率要求(hash/s)可以计算为(2^d/T)。如果假设矿工使用的每个硬件模块都具有最大的计算能力,如果哈希率为20(GH/s),则矿工应按照当前市场价值为每个硬件模块花费约500美元。
这表明矿工在比特币区块链上的总投资成本约为1,960亿美元。为了分别达到0.4、0.3和0.2的q值,攻击者应该分别拥有矿工网络中全部硬件模块的40%,30%和20%。这分别相当于总投资78.7、59.0和393亿美元。如此大的投资成本表明,分析选择的q值足够高以用于实际目的。
上图显示了当攻击者创建下一个区块的成功概率为q = 0.4和0.3,有效交易确认区块的数量为z = 5、10时,不同k值的区块链成功攻击概率。 z = 5和10时,攻击者的成功攻击概率随着k逐渐降低。这表明当攻击者采取策略时,网络就无法通过减慢交易确认的速度来显着降低成功攻击的可能性。相反,当攻击者选择传统的攻击策略时,成功的攻击概率会随着k的增加而迅速降低。上述行为差异表明,分析中考虑的主动攻击策略更加强大。
上图中,绘制了zmin与k的关系图,其中zmin是将成功攻击概率PV(k,z)分别保持在0.05、0.10和0.15以下所需的最小确认块数。首先观察到随着k的增加,直到阈值水平(k = 40左右),通常需要较少数量的确认块。超过此阈值水平,增加k不会影响zmin;也就是说,减慢网络速度以增加k并不一定意味着网络可以使用较少数量的确认块开始验证交易。在此分析中使用了Brent优化方法.,因此zmin可能不会随k单调减小。
0x06 Expected reward for attackers
每个节点将交易发送到矿工池,每个矿工从池中选择一组交易以创建一个新块。在框架中,矿工可以根据其工作量获得奖励,也就是说,矿工证明他们已经通过寻找有效的哈希值花费了一定的时间来解决难题。例如,矿工使用SHA256的哈希函数来计算某个块的哈希值。使用此算法,可能有2^256个哈希值。如果假设一个有效的哈希值具有d个前导零,找到第一个哈希值所需的哈希运算数是几何分布的,期望值为2^d。因此,产生有效块的预期成本Cb由下式给出:
其中Ch是矿工执行的每个哈希运算的成本。假设Rb是每个矿工可以组成区块链的区块奖励。否则它不会获得任何奖励,而只需要支付区块计算成本Cb(d)。因此,攻击者每块Rnet的预期净奖励为:
现在,假设在步骤A和B之间以及步骤B和C之间的主干链中分别有k个和z个块,并且在步骤A和B之间以及步骤B和B之间的恶意链中有m1和m2个块。可以使用(11)的每块净奖励Rnet和(9)的成功攻击概率PV来获得攻击者在挖掘恶意链时预期的奖励为:
其中,第一个和第二个求和项是指挖掘一条比主干链长至少一个区块的恶意链的净回报,即当m1≥k时,m1+m2>k+z和m1<k(分别为状态1和状态2)。第三和第四个求和项是指挖掘不超过主干链的恶意链的净回报,即m1+m2≤k+z。
上图显示,预期奖励受等待区块数k的影响,该数量与矿工创建新区块的延迟有关。
0x07 Conclution
分析表明,提出的自适应策略模型成功攻击的可能性比传统的双花攻击高得多。例如,对于0.01的成功攻击概率,使用常规攻击模型,网络节点需要等待确认块数z至少为52才能验证交易。
相反,在自适应攻击模型中需要z至少为60。因此为了减轻此攻击的影响,需要等待更多的确认块。然而如果诚实节点使用足够大量的确认块来验证交易,则成功的攻击概率可以降到很低。
此外还分析了在挖掘恶意链时对攻击者的预期奖励。结果表明,当使用大量的区块确认来验证交易时,预期的奖励很小。例如,在5个等待块中接收交易的情况下,诚实节点应等待30个确认块,以使攻击者的预期收到的奖励微乎其微。