针对共识机制攻击方式

通常来说,常见的针对网络层和共识协议层面的攻击有拒绝服务攻击(DoS)和女巫攻击(Sybil Attack)。拒绝服务攻击通过向节点发送大量的数据(比如发送大量的小额交易请求从而导致系统无法处理正常的交易)导致节点无法处理正常的数据。女巫攻击则是通过控制网络中大部分节点来削弱正确数据冗余备份的作用。在PoW共识机制中,矿工会立即向全网播报新发现的区块。

而在Selfish Mining攻击中,行为不端的矿工会通过以下方式浪费计算资源:当其发现新的有效区块时,并不立即向全网播报,而是继续进行挖矿,并尝试在其他矿工挖到新区块之前挖到更多的区块;当其他矿工挖到有效区块时,攻击者便立即向全网播报之前持有的有效区块。但一些研究人员认为,在实际操作中实现这种攻击并非易事。在Short-range攻击中,攻击者通过控制一定比例的、保障系统安全性的各种资源(如计算资源、加密货币资源等)从而实现在执行交易(如花费代币或执行智能合约)后将其回滚(从而进行双花攻击,也就是将一个加密货币进行多次花费)。

当攻击者发起short-range攻击时,首先向全网提交一个待回滚的交易,并在上一个区块的分叉上(不包含待回滚交易的分叉)继续进行挖矿,直到该交易得到n个区块确认信息。若分叉上的区块数多于n,则攻击者公布包含有待回滚交易的区块。这样,由于分叉链的长度大于原本的主链,则全网节点将分叉链视为主链。此时,交易得到回滚。

在Long-range攻击中,攻击者通过控制一定比例的系统资源,在历史区块、甚至是创始区块上对区块链主链进行分叉,旨在获取更多的区块奖励和/或者达到回滚交易的目的。这种攻击更多的是针对基于权益证明共识机制的系统。即使攻击者可能在分叉出现时仅持有一小部分的代币,但他可以在分叉上自由地进行代币的交易,从而导致攻击者能够更加容易地进行造币并快速的形成一条更长的区块链。

反观基于PoS共识机制的系统中,攻击者可以利用币龄计算节点权益,并通过总消耗的币龄确定有效的区块链。未花费交易输出(UTXO)的币龄是根据币龄乘以该区块之前的历史区块的数量得出(比如后面章节会介绍的点点币)。在币龄累计攻击中,攻击者将其持有的代币分散至不同的UTXO中,并等待直至其所占权益远大于节点平均值。这样,攻击者有极大的可能性连续进行造币,从而达到对主链的分叉或交易回滚(如实施双花攻击)的目的。在PoS共识机制中,解谜当前区块取决于前一个区块的哈希值。拥有足够算力和权益的攻击者可以在第h个区块的虚拟挖矿过程中,通过随机试错法对该区块的哈希值进行干涉,直至攻击者可以对第h+1个区块进行挖矿。这就是所谓的pre-computation攻击。接此方法,攻击者可以连续的进行造币,并获取相对应的区块奖励或者发起双花攻击。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2576
来自专栏跟着阿笨一起玩NET

c#实现打印功能

2802
来自专栏杨龙飞前端

scrollto 到指定位置

2524
来自专栏张善友的专栏

LINQ via C# 系列文章

LINQ via C# Recently I am giving a series of talk on LINQ. the name “LINQ via C...

2665
来自专栏芋道源码1024

熔断器 Hystrix 源码解析 —— 断路器 HystrixCircuitBreaker

本文主要基于 Hystrix 1.5.X 版本 1. 概述 2. HystrixCircuitBreaker 3. HystrixCircuitBreaker....

5327
来自专栏闻道于事

js登录滑动验证,不滑动无法登陆

js的判断这里是根据滑块的位置进行判断,应该是用一个flag判断 <%@ page language="java" contentType="text/html...

6948
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3185
来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

31810
来自专栏飞扬的花生

jsencrypt参数前端加密c#解密

      写程序时一般是通过form表单或者ajax方式将参数提交到服务器进行验证,如何防止提交的请求不被抓包后串改,虽然无法说绝对安全却给非法提交提高了难度...

3869
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2070

扫码关注云+社区