自私攻击挖矿

Posted L4wk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自私攻击挖矿相关的知识,希望对你有一定的参考价值。

一、简介

激励相容:
        在市场经济中,每个理性经济人都会有自利的一面,其个人行为会按自利的规则而改变;
        如果能有一种制度安排,使个人追求利益的行为,正好与企业实现集体价值最大化的目标相吻合。
        那这一制度安排,就是“激励相容”的。

        比特币的挖矿协议在设计时是激励相容的,它可以抵御少数群体的合谋攻击,并激励矿工按照协议规定的方式进行挖矿。然而Eyal等学者为了反驳这一观点,引入了自私挖矿,该策略可以让少数矿池获得比他们诚实执行挖矿协议更多的收益。
“自私挖矿” 攻击的核心思想是“自私挖矿”矿池(下文中简称为“恶意矿池”)故意延迟公布其计算得到的新块,并构造一条自己控制的私有分支,造成链的分叉。其目的不是破坏比特币的运行机制,而是获取额外的奖励,并让诚实矿工进行无效计算。

二、 攻击策略与收益

        假设初始状态下,公开分支与恶意矿池构造的私有分支长度相同。
根据恶意矿池和诚实矿池算力挖出块的先后顺序不同,可能会造成以下两种情况:

  • 公开分支长于私有分支。因为公开分支上算力是肯定会大于私有分支的,所以恶意分支是很难再超过公开分支的。所以此时恶意矿池的策略为,动态更新私有分支,使得私有分支和公有分支再次相同长度,然后再进行挖矿。在该情况下恶意矿池是没有收益的。
  • 私有分支长于公开分支。恶意矿池先挖到块,并且私有分支长于公有分支1个块。此时恶意矿池的策略为,选择不公开此块,而是继续基于私有分支挖矿。这就会产生两种情况:
a. 公开分支上的诚实矿池先挖到一个块,这使得私有分支失去长度优势

        这种情况下,私有分支的优势被抵消,恶意矿池公开私有分支。
        所有的恶意矿池都选择在私有分支挖矿,而诚实的矿池则是根据新块的传播速度选择其中一条

                - 倘若恶意矿池先计算到下一个块,则直接公布私有分支,得到两个块的收益
                 - 倘若私有分支上的诚实矿池先计算到下一个块,则恶意矿池得到第一个块的收益,诚实矿池得到第二个块的收益。
                 - 倘若公开分支上的诚实矿池先计算到下一个块,则恶意矿池没有收益,收益分别属于挖到块的诚实矿池。

b. 恶意矿池又比诚实矿池先挖出一个块,使得私有分支的长度优势增加,私有分支比公有分支多2个块。

                 - 倘若公开分支上的诚实矿池挖到块,则恶意矿池也相应地公开一个块,使得两条分支的长度保持一致。
                 - 由于算力的差距,私有分支上的长度优势会逐渐降低。当只相差一个块时,恶意矿池会公开这条私有分支,然后让私有分支长于公开分支,则私有分支就会成为合法的主链。且所有的收益都归于恶意矿池。

三、攻击效果

        模拟了1000个节点,在这1000个节点中,有1000α(α表示全部节点中“自私挖矿”节点的比例)个节点运行“自私挖矿”算法,而其他节点则是运行比特币挖矿协议的诚实节点。再假设两条分支处于等长状态,并将诚实矿工分为两类,γ比例的诚实矿工基于私有分支挖矿,而1-γ比例的诚实矿工则基于公开分支挖矿。

  • 当γ=0时,也就是所有的诚实矿工都在公开分支上挖矿。恶意矿池所占算力最少是要掌握全网1/3的算力时,收益才会高于正常情况。
  • 当γ=0.5时,也就是一半的诚实矿工在公开分支上挖矿,另一半在私有分支上挖矿。则恶意矿池则需要掌握约1/4时,收益就比正常情况高。而这比起正常超过51%才可以攻击,难度降低了许多。
  • 当γ=1时,所有的矿工都在私有分支上挖矿时,一开始就超过正常情况。

四、结论

        针对区块链的攻击方式逐渐增多,“自私挖矿”只是诸多攻击中的一种。其他常见攻击方式包括针对区块链网络层的BGP劫持攻击与Eclipse攻击等,针对POW共识算法与交易过程的平衡攻击与活性攻击等,以及针对智能合约的the DAO攻击、“GovernMental”攻击等。

以上是关于自私攻击挖矿的主要内容,如果未能解决你的问题,请参考以下文章

区块链常见漏洞万字总结Web3从业者必备

让攻击挖矿耗能的攻击者闭嘴的方法是?

一次挖矿病毒攻击分析

攻击者利用WordPressJoomla和JBoss服务器“挖矿”

Linux应急响应:挖矿病毒

错误配置K8s机器学习框架Kubeflow易招来挖矿攻击