Skip to content

Commit

Permalink
update Ch<区块链安全问题>
Browse files Browse the repository at this point in the history
  • Loading branch information
chaseSpace committed Nov 24, 2022
1 parent db18193 commit 6963999
Showing 1 changed file with 40 additions and 2 deletions.
42 changes: 40 additions & 2 deletions blockchain_tech_detail.md
Original file line number Diff line number Diff line change
Expand Up @@ -282,20 +282,58 @@ DAO事件所造成的以太坊分叉为ETH和ETC两条链,虽然为用户挽
例如在比特币网络,这意味着总体算力的下降,网络会更容易遭受51%攻击。而且,目前发起DDoS攻击的成本非常低,大量的攻击工具可以从黑市上轻易购买。

#### 3.2 女巫攻击
女巫攻击(Sybil Attack)是2002年提出的,它是作用于P2P网络中的一种攻击形式,攻击者利用单个节点来伪造多个身份存在于P2P网络中,从而达到削弱网络的冗余性,
女巫攻击(Sybil Attack)是2002年提出的,它是作用于P2P网络中的一种攻击形式,攻击者控制**多个节点**来伪造多个身份存在于P2P网络中,从而达到削弱网络的冗余性,
降低网络健壮性,监视或干扰网络正常活动等目的。

目前,对抗女巫攻击的手段主要是防止身份伪造。由于公链和联盟链的网络结构不同,抗女巫攻击的方式一般也分为两种。

**【一、公有链】**
主要做法是设计共识机制时,不依赖于节点数量。常用共识机制PoW采用算力证明节点身份不是伪造的(算力提高伪造成本),算力大的具有主导权;
主要做法是设计共识机制时,不依赖于节点数量。常用共识机制PoW采用算力证明节点身份不是伪造的(算力提高伪造单个节点的伪造成本),算力大的具有主导权;
PoS采用代币也就是股权证明节点的身份不是伪造的,股权大的具有主导权;DPoS采用代币投票,而不是一机一票。

**【二、联盟链】**
联盟链主要采用的共识机制都是一机一票形式的,如PBFT。联盟链一般是引入身份认证的机制,具体分两种,基于第三方的身份认证和纯分布式的身份认证。
二者区别在于,前者需要一个可信机构管理身份认证,而纯分布式身份认证则需要全网大多数节点认证才可以加入网络。

#### 3.3 日蚀攻击
日蚀攻击(Eclipse Attack)是指攻击者利用节点间的拓扑关系实现网络隔离的一种典型攻击方式。其基本思想是攻击者通过网络拓扑控制目标节点的数据传入传出节点,
限制目标节点与外界的数据交互,甚至将目标节点与区块链主网隔离,使目标节点仅能接收到攻击传输的消息,导致目标节点保存的区块链视图与主网视图不一致,
破坏局部的一致性。

日蚀攻击最早是一种针对比特币网络的攻击。每个比特币网络的节点最多可以允许117个网络节点接入(输入连接),同时默认向8个其他节点发起连接(输出连接)。日蚀攻击的目标就是建立足够多的节点,
让某个节点的输入连接和输出连接都是恶意节点,使得这个节点只可以和恶意节点通信,之后再发起攻击。这种攻击行为最常见的是攻击交易所的服务器。

除了比特币网络,也有研究人员在2018年1月9日向以太坊透露了它们的攻击方法,为此,以太坊开发者发布了一个补丁 Geth v1.8.1来修复这个漏洞。

### 4. 共识层安全
共识机制是区块链中各分布式节点能够协同运作的核心,但是现在没有一种完美的共识机制可以适用所有应用场景。通常来说,一般都是根据区块链平台的应用环境、
网络拓扑选择适合的共识机制。每一种共识机制都有自己的漏洞,本节我们列出几种常见的对共识算法的攻击手段。

#### 4.1 51%攻击
51%攻击主要针对PoW算法。PoW中如果攻击者掌握了全网51%的算力,那么就可以很轻易的从某个历史区块开始,生成一条高度大于现有主链的新链,这样就达到了篡改账本的目的。
虽然达到全网51%的算力是一件非常困难的事,但也并非不可能,如2019年1月份,以太经典(ETC)就受到了51%攻击。

#### 4.2 币龄累积攻击
这种攻击手段针对的是PoS算法。在PoS算法中,币龄条件也作为记账权的竞争资格之一,攻击者可以通过长期囤积代币的方式来轻易提高获得记账权的概率,
再通过组建大量节点获得记账权就能控制整个区块链网络的**共识**

#### 4.3 自私挖矿
自私挖矿的概念最早在2014年提出。正常状态下,矿工挖到某个区块就立刻进行全网广播获取奖励,而在自私挖矿中,矿工维护了两条链,一条公开的,一条私有的,
具体操作流程如下:
1. 自私矿池挖到块A之后不直接发布全网,只在自己的矿池中广播该快,形成私有链,并且继续挖下一块B;
2. 当检测到网络上有人发出下一块A'时,再广播自己挖到的块A,使网络进入竞争状态(A与A'是相同高度区块);
3. 再当自私矿池挖出B时,就直接发布,由于B是跟在A后面的,所以A-B这条链会大概率成为最长链,进而使得自私矿池可以获得块A和块B的收益,导致网络中其他节点在A'以及其分叉链上的挖矿行为无效;
4. 倘若其他诚实节点在A后挖出新块,自私矿池也可以享受A的收益;
5. 还有一种情况是其他诚实节点更快的挖到了A'之后的区块,那么自私矿池就没有任何收益。

这通常需要自私矿池在全网中拥有占比较高的算力,才能达到一定的收益率。

#### 4.4 贿赂攻击
贿赂攻击更多的针对节点个数有限的联盟链,一般是指恶意攻击者通过数字货币或法币贿赂共识节点,使其与自己共同工作在特定区块或分叉上,
来生成有利于攻击方的分叉链。以PBFT算法为例,可以容忍f个节点发生错误(全网至少有3f+1个节点),因此,只需贿赂f+1个节点就可以使共识停止,
贿赂2f+1个节点就能转变共识方向。

### 5. 应用层安全
TODO

参考:
Expand Down

0 comments on commit 6963999

Please sign in to comment.