权利压迫攻击——共识攻击介绍

权利压迫(Grinding Attacks)是指攻击者在获得记账权的时候,利用自己手中的权利实施一些计算或者一些操作让系统的随机数产生偏斜,来增加自己下一次获得记账权的可能性,可能的方式如下。

方式一:一个验证者通过一些参数组合或者找到一个特殊的参数来增加自己被选择,产生一个有效块的可能性。

方式二:利用对当前块的控制能力去影响下一个块。

举一个不真实的例子,块N+1的随机性依赖于块N的签名,如果一个验证者在当前块中一直指定自己是下一个块的验证者,便永远控制住了整个系统。

方式三:通过跳过块的方式,控制出块的随机性。

由于N+1的随机性依赖于N的验证者,验证者得以通过跳过自己创建的块的方式来控制出块的随机性。当然这会丢失一个块的奖励,但是随之而来的,他可能拥有下面数十个块高于平均数的随机性控制能力。

PoS提出了两种解决方案。

(1)第一种方法

权利压迫的方式一和方式二比较容易解决,一般的做法是要求验证者事先抵押自己的资产,并且也不使用那些容易被操纵的信息来产生随机数。对于方式三,可以采用以下的策略:首先考虑使用基于秘密共享或者确定性门限函数的方案,并且验证者协同生成随机值,那么除非大多数验证者勾结,否则这些方案对于所有操作都是强大的。

(2)第二种方法

使用验证者事先提交信息(即发布sha3(x))的密码方案,在块中发布x,随后将x添加到随机性池中。这里有两个理论攻击方式。

1)在承诺时间处理x。这是不切实际的,因为随机性结果会考虑到许多参与者的价值,如果他们中的一个是诚实的,那么产出将是一个统一的分配结果。均匀分布与任意多个任意偏置分布异或,仍然给出均匀分布。

2)有选择地避免发布块。这种攻击花费了一个块奖励机会的成本,并且因为该方案阻止任何人看到除了下一个以外的任何未来验证者,所以它几乎无法提供多于一个块的奖励。唯一的例外情况是,如果验证程序跳过,则下一个验证程序再运行,如果验证程序的内容是相同的,那么这会是一个严重的问题。对此可以通过明确的跳过惩罚,来加大惩罚更多的跳跃。

3)Iddo Bentov的“多数信标”是一种解决方案,它通过获取由其他信标生成的前N个随机数的位的大部分来产生随机数(即,如果大部分源数字中的第一个比特为1,则结果的第一比特位为1,否则为0;如果源数字中的大部分第二个比特为1,则结果的第二个比特为1,否则为0等)。总而言之,存在许多己知的权利压迫解决方案。这个问题更像差分密码分析,而不是

停滞的问题——一个让利益相关者、设计者最终理解

并且现在知道如何克服的麻烦,而不是一个根本的、不可避免的缺陷。

•PoW:记账权的争夺依赖于算力,因此不存在权利压迫。

•PoS:存在权利压迫,需要加入其他机制来避免。

•DPoS:DPoS其实更多的是一种理念,具体要看delegate的实现。如果不是确定的随机性,依然会存在权利压迫的可能性。如果是按照顺序执行的,则没有这个问题。

•PBFT:确定性的记账人顺序,公平的随机性,因此不存在权利压迫。

•DBFT:引入代议制的选举委托机制,在公平的基础上推选出可信的确定性的记账人列表,并按照顺序来验证出块,因此不存在权利压迫问题。

868区块链学习网为您整理《权利压迫攻击——共识攻击介绍》仅供参考。