POS共识区块链中的权益流损攻击

 

0x01 Absert

本文描述了一种在没有检查点(checkpointing)的情况下对权益证明(PoS)区块链的攻击,即权益流损攻击(Stake-bleeding Attack)。该攻击利用交易费用、“脱离上下文”的处理交易的能力、以及标准最长链规则来完全支配区块链。攻击行为随着诚实交易的数量和攻击者持有权益的增加而增加,并且可以由任何控制不变权益的攻击者发起。

根据目前区块链协议的统计概况,在经过了之前几年区块链操作的情况下可以发起攻击;因此,这在PoS协议的可行性范围之内。最重要的是,它证明了交易费用和报酬与PoS协议的安全性紧密相关。

 

0x02 Proof-of-Stake

权益证明(PoS)区块链协议被设想为解决基于工作量证明(PoW)的区块链系统中矿工节点巨大能源需求的解决方案。

PoS是在比特币论坛的讨论中提出的,并采纳了以下原则:生产新区块链区块的权利应授予权益相关者,其概率与他们当前的权益成正比,正如区块链本身所记录的那样。可以想象,这样的区块链可以在不消耗大量实际资源的情况下产生理想的分类账本属性:无需花费大量能源来运行该协议。这样的协议自然会以系统中权益诚实大多数的假设取代了哈希能力诚实大多数的假设。

目前有许多PoS协议,例如PPCoin和NXT。最近还开始严格地对PoS设置中的安全性进行分析,从而产生了具有正式保证的协议,例如Algorand,Ouroboros,Snow White 和Ouroboros Praos,将这些协议分为两类:

1)将某种形式的最长链规则应用于区块链的最终共识协议。在此设置中,块的不变性会随着在其顶部创建的块数而逐渐增强。

2)逐块BA协议,该协议通过完全执行拜占庭协议(BA)来实现每个单个块的不变性,然后再继续生产任何后续块。

在上面列出的PoS协议中,Algorand是逐块BA协议,而所有其他协议都旨在最终达成共识。

 

0x03 Long-Range Attack

所有这些协议都必须面对远程攻击的问题,额外的后期腐败(posterior corruption)表明,仅检查时间戳不足以应对远程攻击。实际上,攻击者可以尝试破坏在系统历史记录中某个时刻拥有大量权益的帐户相对应的秘钥。假设当前此类帐户所占的权益很小(甚至为零),那么它们极易受到行贿(或简单的失误),这会使他们的秘钥暴露给攻击者。有了这样的一组(当前低风险)密钥,攻击者可以进行远程攻击,在这种情况下,所产生的区块链在时域上的密度可能与诚实生成的公共区块链不可区分。

为了解决后期腐败和其他远程攻击,已采用了多种缓解方法(有时结合使用),可以将其分为三种类型:

(i)引入某种类型的频繁检查点机制,该机制通过为节点提供相对较新的块将节点引入系统。

(ii)使用密钥演化密码学(key-evolving cryptography),该技术要求用户演化其秘钥,以使即使在完全暴露其当前秘密状态的情况下也无法伪造过去的签名。

(iii)加强严格的链密度统计(strict chain density statistics),其中在协议的任何步骤的预期参与者数量是已知的;因此,表现出显著较小参与的被替代的协议执行历史可以立即被视为对抗性的。

在上述PoS方案中,所有最终共识协议(即NXT,PPCoin,Ouroboros,Snow White和Ouroboros Praos)均采用第一种缓解策略并采取某种形式的检查点。 Ouroboros Praos采用第一种和第二种方法(密钥演变签名)来额外处理自适应破坏,而Algorand则采用第二种和第三种方法(严格的链密度统计)达到相同的目的。

但是,这带有明显的模型限制:要使任何类型的检查点正常工作,节点必须要么经常在线(因此它们采用从网络作为活动参与者接收的最近检查点块),要么在接收到可靠(受信任)信息时长时间离线后(或首次加入时)引入(重新)引入系统。这相当于系统安全运行所必需的额外信任假设,因此在分布式,无许可的设置中显然是不希望的。

类似地,强制执行严格的链密度统计需要可靠地估计协议任何阶段的参与者数量,并且还存在模型限制:协议将无法在允许任意数量的参与方被执行的环境中运行。另一方面,密钥演化密码学是一种更具算法缓解力的模型,对模型的要求最低:节点应仅具有擦除私有状态的能力。只要有可能,算法缓解措施似乎显然比模型限制措施更可取。

远程攻击的系统化表示,它们的要求以及可以减轻它们的方式,如上图所示。如果取消检查点机制,权益流损攻击将对所有当前提出的最终共识PoS协议产生不利影响。因此,在将来从这些协议中删除不希望的检查点机制时,以及设计不依赖检查点的新的最终共识PoS协议时,都必须考虑到这一点。在交易中引入上下文制约性是一种简单的算法缓解机制,因此可以将其添加到PoS区块链协议的设计库中,以放宽模型假设,例如可忽略的交易费用或频繁的检查点。

 

0x04 The Computational Model

即使是在为区块链协议提供许多优势的计算模型中,也可以发起权益流损攻击。

•攻击者无需控制消息传递:攻击可以在完全同步的通信和计算环境中发起,所有消息(包括攻击者生成的消息)均通过可靠的广播传递。

•攻击者不需要动态腐败:攻击可以由在执行开始时确定的固定对抗方集合发起。

•攻击者不需要引入新的参与者或停用诚实参与者:攻击可以在静态的完全参与的参与者中进行。

下面概述了一个简单,强大的计算模型,反映了上述功能。采用如此强大的模型只会扩大攻击的适用性和强度,可以在典型的区块链模型中启动,从而为攻击者提供更大的力量。

a)时间,时隙和同步性:考虑一种将时间明确地划分为称为时隙的离散单元的设置;参与方配备了指示当前时段的同步时钟。该模型还允许可靠,同步的广播:各方可以在每个时隙的开头广泛广播一条消息,然后在该时隙结束时将消息可靠地传递给所有其他方。

b)对抗性腐败:该模型涉及固定的参与方U集合。模型中的攻击者A与固定的对抗性方子集相关联。将符号A以表示对抗方子集;诚实方集表示为H。诚实方始终处于活动状态,接收其他方发送的所有消息,并遵循所考虑的协议。攻击者在每个时段都被激活,并且可以任意指挥攻击者一方的行为。请注意,攻击者发送的消息会受到广播限制-它们会同步传递到所有诚实方。

c)INIT功能:初始股权和交易的环境:模型与(理想化的)初始化功能INIT相关联。 INIT功能由初始权益分配参数化。这是给参与者分配的非负数,写成S0 =((U1,s1),…,(Un,sn))。

功能INITS0的操作如下:

•在进行各方的任何计算之前,该功能会为每个方U∈U确定一对公钥和私钥(pkU,skU)。

•在协议期间,该功能使用skU(用户U的私钥skU)响应来自格式为key的用户U的消息。

•在协议期间,该功能以“创世模块” B0响应genesis_lock形式的任何消息,其中包括初始权益分配和与用户相关联的公钥

该模型引入了另一个实体:环境Z。在环境中,环境仅负责生成交易,这些交易作为各方的输入提供。特别地,在协议的每一轮中,环境可以向各方提供交易的集合。具有(U,U’,s)形式,要求将s的股份从U方转移到U’方。 (对于攻击,仅将环境视为交付给各方的固定交易时间表就足够了。请注意,典型的区块链安全模型将赋予环境更大的强大力量:攻击者的信息通道,自适应选择交易,消息传递的安排等)

最后,给定初始化功能INITS0和环境Z,协议的执行由生成块B0、各方的密钥、环境交付给参与者的交易顺序,以及参与者广播的整个消息序列组成。

 

0x05 Blockchains, Ledgers and Proof-of-stake Protocols

a)交易分类账本属性:区块链是一种与每个时隙(最多)一个块关联的数据结构。除了特定于协议的元数据外,各个块还包含一组交易。在上述模型的上下文中,假设创世区块B0在与时间0相关的任何区块链中均显示为默认初始区块。一个链也立即进行股权分配SC,通过将链中的交易应用于创世区块的股权分配来实现。对于区块链C,让C⌊i表示通过删除最后i块获得的C的前缀。

直观地,区块链协议Π允许各方集合共同维护一个公共分类帐本。将关注于实际上在每个时间点为参与者维护一个单独的分类帐本的协议;协议Π的适当持久性和可用性特性可确保公共分类账本的概念:

持久性:一旦系统的某个节点宣布某笔交易tx稳定,则其余的诚实节点(如果被查询)将要么在分类帐中的同一位置报告tx,要么不会报告任何与tx有冲突的交易。在这里,稳定性的概念是由安全性参数k参数化的断言。具体来说,当且仅当交易出现在C⌊k中时,它才被宣布为稳定交易(由拥有C链的一方)。

可用性:如果系统中所有诚实节点都试图包括某个事务,则在经过与相对应的时间u(称为事务确认时间)之后,如果所有节点被查询并做出诚实响应,它将报告该交易稳定。

直观地讲,安全的区块链协议保证这些特性由诚实方持有的账本(记录在区块链中)拥有,在对手A的适当约束下。

b)链选择规则—最长链规则:将注意力集中在由链选择规则定义的协议上:协议的每个步骤都要求某些参与者广播区块链;参与者然后采用选择规则,这可能导致用广播链之一替换其本地链。关注“最长链规则”:检查广播区块链的有效性(一种依赖协议的属性),然后采用最长有效链,包括参与者持有的链。 (长度仅是块的数量;为具体起见,假设联系在字典上是断开的)

c)权益证明协议:关注通过权益证明协议Π维护的分类账 本,该账本赋予将链扩展到参与者U的权利,该概率与U在该链中的权益(前缀)成正比。

权益比例增长。SC⌊i,由C⌊i导致的权益分配,允许一方扩展给定链C的概率(表示为ExtendOpportunityΠ的事件)与在该方控制下的权益成正比。 i是协议特定参数,通常与上述安全参数k有关。

d)相对权益和诚实大多数:作为一种符号,对于一组X的参与者和一个权益分配S,用S(X)表示参与者在X中所持的股份。在执行区块链协议的特定时刻(通常从上下文中可以理解),让αX∈[0,1]表示X中各方的相对权益。具体来说,是SC(X)/ SC(U),其中C是诚实用户的链。 (请注意,由于广播假设,所有诚实的参与者在每个时隙中都拥有相同的最长有效链。)如果协议的每个步骤中的αA<1/2,则具有诚实大多数执行Π。

e)区块奖励和交易费用:大多数区块链协议都涉及某种形式的区块奖励和交易费用。为了能够对所有考虑的协议做出通用声明,引入以下符号:

FeesΠ(E,i)表示Z在执行E的时隙i中创建的所有新交易的总费用(占总权益的一部分)。

rewardsΠ(C,i)表示由协议Π创建并提供给在时隙i中在区块链C中创建区块的一方的代币总数。

transfersX→Y(C,i)表示时隙i中区块链C上从X中的参与者转移到Y中的参与者的总金额。

 

0x06 The Stake-bleeding Attack

在协议Π定义的通用权益证明区块链的上下文中,首先非形式化地描述攻击的运作方式。为了简化表示,始终假设攻击者控制一定比例的股份αA<1/2。攻击者A模拟诚实协议,并维护该协议规定的当前区块链的本地副本(表示为C)。此外,它还维护了一个替代的区块链Cˆ,该区块链最初是空的,对诚实参与者来说是隐藏的。

攻击者在每个时隙中根据协议的规则检查是否允许扩展链C或Cˆ。它忽略了扩展C的所有机会,因此根本没有对C的增长做出贡献。另一方面,每当出现扩展Cˆ的机会时,A便用一个新的块来扩展Cˆ,并将诚实链Cˆ中尚未包括在Cˆ中并且在Cˆ上下文中有效的所有交易插入该新块中。 (或Π规则所允许的数量)。这使A有权(在Cˆ上)获得任何块创建奖励和来自所包含交易的任何交易费用。

随着协议的发展,C和Cˆ都将以极大的概率增长,而C增长更快。由于授予C中区块创建者的区块创建奖励,A在C上的相对权益可能会减少,但由于区块奖励和交易费用,其在链Cˆ中的相对权益将会增加。在关于交易费用和大笔奖励的相对大小的一些现实假设下,Cˆ的对抗性相对权益最终将超过C的诚实相对权益。

从这一点开始,链Cˆ(比预期中)的增长快于C链,并最终变得更长。如果使用普通最长链规则,则A现在可以通过发布Cˆ轻松违反分类帐本的持久性,之后所有诚实方都将采用Cˆ。而且,如果A在发布之前将交易添加到Cˆ的末尾,在该交易中A将足够的股份转让给诚实方以不再控制多数,则它不会违反“诚实大多数”假设。

上图中给出了执行攻击的对手的更简洁描述。该描述使用ExtendOpportunityΠ(C),只要允许A根据Π规则扩展给定链C,就为true。另外,从攻击者的角度来看length(C)表示链C的长度。

 

0x07 Attack Analysis

权益证明协议Π必须满足几个属性才能使攻击成功,主要需求是:

(i)没有频繁的检查点:协议必须按照最长链规则操作:在诚实方看到的所有有效链中,规定它们采用最长的链。尽管可能会偏离此要求,但Π必须一定要允许很久以前的重组:如果指定了最大重组深度且规模很小(即Π不允许诚实参与者更多地改变其对主链的看法,即使有一个更可取的候选链),也不会超过过去的几个区块(或时隙),则该攻击不适用。

(ii)存在交易费用:协议Π必须涉及交易费用,或更广泛地说,涉及从交易方到维护分类账的方的任何代币转移。更详细地讲,只有在Cˆ最终比C增长快时,攻击才会成功。由于C的增长速度(分别为Cˆ)与诚实方在C中的相对权益(Cˆ对手的相对比例)成正比,因此需要后者最终超过了前者。当攻击者创建一个区块时,在每个时隙i中,Cˆ中攻击者的相对权益都会增加:

•此块的奖励为Π(Cˆ,i);

•从诚实方到攻击方的所有转移H→A(Cˆ,i);

•所有费用

对于包含Cˆ中包含前一个块的时隙i’之后的所有时隙j≤i。

另一方面,当通过奖励Π(C,i)在C中创建区块时,诚实的参与者在C中的相对权益在每个时隙中都会增加(不收取任何feesΠ,因为C中的所有费用均由诚实的参与者支付)

(iii)上下文无关的交易:根据Π产生的有效交易必须忽略在区块链中使用交易的上下文:Π必须允许A从C进行交易,并在Cˆ的不同上下文中使用它们。

(iv)低增长链的有效性:协议Π必须支持“沉睡的大多数”,以确保仅由少数攻击者扩展的链Cˆ(因此在其开始时链增长很小)仍然根据规则被认为是有效的。

在以下定理中,根据初始对抗性权益αA和每个时隙中的交易产生的费用数量,来估算进行攻击所需的时隙数。为简单起见,即使攻击对任何常数αA> 0起作用,也分析1/3 <αA<1/2的情况。

定理1:设Π为权益证明增长满足上述条件(i)-(iv)的权益证明区块链协议。考虑使用图3中给出的对手A来执行协议Π。

对于C’∈{C,Cˆ}且所有i> 0都满足执行E的要求。1/3 <αA<1/2表示对手A的初始相对权益。T表示长度为( Cˆ)>长度(C)。有:

证明:设P∈{A,H},C’∈{C,Cˆ}的αC’P[i]且i> 0表示时隙i中链C’中的一组参与者P的相对权益(A和H分别表示对手和诚实方)。另外,从对手的角度来看,令lengthi(C’)表示时隙i中的链C’的长度。然后,由于权益比例增长假设,不等式E [lengthT(Cˆ)]> E [lengthT(C)]转换为:

由于奖励Π(C’,i)= 0且C中的费用全部由诚实方支付(和接收),因此对于所有i> 0,都有:

在某个时隙i处C和Cˆ的长度由每个≤1≤j≤i的时隙的独立随机变量之和确定。

首先,专注于1/3 <αA<1/2,否则定义T2的事件将永远不会发生。但是,很容易看出,虽然攻击得益于较高的(低于50%)初始对抗性权益,但也可以通过对αA<1/3进行稍加修改的分析来进行攻击。

其次,假设零块奖励和从H到A的转移。但是请记住,transfersH→A(C,i)完全受环境控制 (这是为了表明区块链协议的安全性不依赖于要存储在分类账中的交易的任何特定假设;相反,它必须针对任何此类交易序列安全地运行)因此对于任何rewardsΠ(C,i),可以通过设置transfersH→A(C,i)来简单地实现相同分析的情况,以使C中的诚实股权比率保持恒定(因为Cˆ中的对抗性股权比率将不断增加)。另一方面,非零rewardsΠ(Cˆ,i)只会使攻击成功更快。

通过更仔细的考虑可以获得更优边界T≈(2-4αA)/ f。

 

0x08 Implications for Existing PoS Protocols

现在总结一下各种PoS协议在多大程度上满足了之前描述的前提条件,主要关注最终共识协议,也指出了攻击概念在逐块BA设置中的适用性。

所有最终共识协议都采用某种形式的检查点,以防止后期腐败攻击。这种一般的对策可以防止权益流损(以及任何其他远程攻击),并且可以以小规模(和模型限制)的方式进行。有趣的是,如果取消检查点,则所有考虑的最终共识构造都将容易受到流损攻击,因为它们都满足条件(ii)-(iv):它们使用交易费用,交易是上下文相关的-遗忘和低增长链被认为是有效的。。

NXT和PPCoin:NXT协议仅允许重组最后的720个块,因此形成了所谓的移动检查点,并且违反了条件(i)。 PPCoin中采用了类似的检查点机制。

Snow White:Snow White协议还使用移动检查点来防止后腐败攻击,并且如果没有它,也很容易受到权益流损攻击的影响。

Ouroboros:使用移动检查点作为其maxvalid链选择规则的一部分,以中和远程攻击。如果没有检查点,那么Ouroboros将不容易受到后期腐败和权益流损的攻击,因为它不使用密钥演化的加密技术。

Ouroboros Praos:使用与Ouroboros相同的maxvalid链选择规则,强加了移动检查点。如果没有这种对策,那么由于其使用密钥演化签名来签名区块,Ouroboros Praos仍将消除后期腐败攻击。但是,这很容易受到权益流损攻击的影响。

正如已经讨论过的,Algorand并不是最终的共识协议,而是遵循逐块BA。尽管如此,可以考虑对Algorand进行权益流损攻击的核心思想的适用性,其目的是创建另一种区块顺序,并利用权益流损来获得那里的临时多数股权。但是对于Algorand而言,这种攻击是通过要求足够多的利益相关方来证明逐块BA的结果而得以防止的,这可以视为违反了(iv)。实际上,Algorand强制执行严格的参与规则,因此始终可以以模型限制的方式找到正确的协议执行。

 

0x09 Mitigations

a)时域中的最小链密度:可以用来减轻权益流损攻击的第一个结果是,的攻击产生的区块链有一段时期,在这段时期内区块链的密度为比较稀疏。接下来阐明密度的概念:在所有PoS协议中,允许某些参与方可能并非一直在线(尽管事实是他们被选为参加协议)。通过观察区块链可以发现他们没有参与。例如对于Ouroboros,将有许多时隙留空,没有相应的块;其他协议中也存在类似的可观测量。这允许协议检测和清除具有此缺陷的区块链,从而将其与诚实方生成的正确区块链区分开。

b)上下文制约性:权益流损攻击的基本特征是“脱离上下文”进行交易,也就是说,将其从诚实维护的区块链复制到攻击者维护的私有区块链。防止这种情况发生的一种非常简单而有效的方法是在每个事务中包括“上下文”,即最近块的哈希。

 

0x10 Conclution

本文提出了一种新型的远程攻击,称为权益流损攻击,适用于在没有任何模型限制假设的情况下运行的所有最终共识PoS协议。鉴于当前的加密货币统计数据,权益流损攻击将需要多年的区块链历史才能成功,因此它们并不是紧迫的问题。

但是,它们从密码学角度指出了重要的设计考虑因素。它们显示了在不依靠后期腐败的情况下进行远程攻击的可能性。从中可以很容易地推断出,密钥演化加密本身不足以缓解远程攻击,需要研究其他算法缓解措施,可以在不受信任的、未经许可的环境中阻止长期攻击,而无需使用检查点或其他方法。

(完)