当前位置:首页 » 区块链精品文章 » 正文

9.5 51%攻击问题

1706 人参与  2018年09月30日 14:10  分类 : 区块链精品文章  评论

矿池算力集中产生51%攻击问题,准确来说,应当是50%+问题,从原理上看,只要能控制全网50%以上算力,攻击者将可以修改账本和阻止他人挖矿,从而 威胁到整个系统安全。那么拥有50%以上的算力是怎样劫持区块链的数据的呢?一种方法是通过分叉(forking)的方式。如图9-6所示,正常的矿工在 区块链上挖矿,攻击者把自己的货币花掉(购买服务商品等),这笔花费会记录在区块链的数据中,假定交易记录在区块4中。攻击者这时暗中伪造另一条区块链的 数据,将自己地址上的货币重新转账到其他地址,记录在自己伪造的区块4a中。由于在算力上的优势,攻击者比网络中其余的矿工计算得更快,从而得到一条更长 的区块链数据,如图9-6中区块4a到区块7a为攻击者的链,比其余矿工的链(区块4到区块6)更长。在公共区块链中,最长的链始终代表正确的分支,攻击 者只要把自己的较长的区块数据发布到网上,其余矿工就会认同攻击者的数据,从而接受区块4a到区块7a的数据,而原来区块4中的交易被推翻和抹去,这样就 达到了同一货币双重花费的目的。

image.png

图9-6 算力优势篡改数据的方式

从上述原理可以看到,攻击者要想更改账本数据,需要有一条比其他人更长的区块链数据。但是要实现这个目的,并不一定要 拥有超过50%的算力。如,某个矿工运气特别好,挖到两个连续的区块。他可以先隐藏这两个区块,等到其他矿工挖出一个区块数据后,他再广播自己的两个区 块,就可使得他人挖到的区块失效(因为长链占优)。这种做法称为“自私挖矿”(selfish mining),这就白白浪费了其他矿工的算力,而自私者获得了更多的收益。

那么矿工连续挖到两个区块的概率是多少呢?如果某矿工的算力占全网的比例为p,他连续算出n个区块的概率就是pn 。表9-1列出了部分p和n对概率的影响,当p=0.1(10%)时,连续挖到2个区块的概率为1%;如果p=0.5(50%)时,连续挖到两个区块的概 率为25%,这已是较大概率的事件了。从比特币的历史上看,确实发生过矿池连续挖到多个区块的事情。在比特币系统中,6个区块之前的数据被认为是相对可靠 和难以推翻的。可是在2014年,大矿池Ghash.io挖到6个连续的区块,具备了逆转之前交易的可能,引发了社区对比特币安全性的担忧。该矿池当时的 规模在50%上下,算出6个连续区块的概率约为1.5%(参见表9-1)。概率虽小,但日积月累不停地挖矿,使得小概率事件也很可能发生。为 此,Ghash.io也不得不承诺把规模控制在39.99%以下。

表9-1 挖出连续区块和算力的关系

image.png

发起51%的攻击并不是严格地需要51%的全网算力,实际上,只要能够控制的算力接近50%,加上分布式网络的延时和 随机数等偶然因素,还是有可能实施成功攻击的。当然,只拥有50%左右算力时,由于攻击者和其余矿工的算力相差不大,需要较长的时间才能攻击成功。还有研 究表明,如果攻击者控制了33%的算力,再配合前面提到的“自私挖矿”等手段干扰其他矿工正常挖矿,将有能力最终控制整个网络。

比特币等采用公有区块链技术的加密货币,所有发生的交易在理论上都没有“最终性”(Finality),只要有足够的 算力,都是可以被推翻的。在实际中,推翻之前的区块数据需要的算力和时间都相当惊人,所需成本可能远远大于收益,还不如按规矩挖矿,因此,即使存在理论上 的可能性,也极少有人发动算力攻击。51%攻击方法不能偷走别人地址里面的货币,却可以实现攻击者的货币多重使用,从而摧毁加密货币的信任体系,使得币价 大跌,攻击者或许可以通过做空货币的方式获利。鉴于51%攻击的破坏性强,加密货币的参与者(如开发者、用户、矿工等)都会密切监视可能存在的攻击,并随 时进行防备。


来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=1001

区块链是什么  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>

网站分类

标签列表

最近发表

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

本站资源大部分来自互联网,版权归原作者所有!