最近有一位之前找过币牛牛的用户问了我们小编的一个问题,我相信这也是很多币圈朋友经常会疑惑的问题:sybil攻击相关问题,sybil攻击是什么相关问题,带着这一个问题,让专业的小编告诉您原因。
一、DDoS攻击/ DDoS攻击
DDoS攻击是指来自不同地点(IP地址)的多个攻击者定期向同一个目标发送服务器请求,请求过载导致服务器资源瘫痪。其中,可以伪造不同的源IP地址,使得入侵检测非常困难。
二、侧信道攻击
侧信道攻击是基于目标设备的物理信息(电流、电压、电磁辐射、执行时间、温度等)与保密信息之间的依赖关系,实现对保密信息的获取。这种攻击方式对加密设备构成了严重威胁。
三、中间的人进攻
中间人攻击是对通信链路的间接攻击。通过技术手段将攻击者放置在通信链路中。例如,在车辆攻击中,攻击者通常将自己置于TSP和T-Box之间,然后作为MITM与通信双方建立正常连接,以欺骗通信双方的数据。
四、车辆僵尸网络
攻击者以各种方式传播机器人,感染互联网上的大量智能设备。被感染的设备通过控制通道接收并执行攻击者的指令,导致大量目标设备瘫痪,从而形成僵尸网络攻击。
五、嗅探攻击
嗅探攻击是一种对汽车CAN总线数据包、网络数据包或蓝牙数据包进行拦截和分析的方法。在嗅探攻击下,汽车设备之间的通信可能被窃听,甚至数据可能被篡改。由于汽车CAN总线中的数据是广播的,因此嗅探攻击是CAN总线攻击中最常见、最有效的攻击方法。
六、黑洞攻击
黑洞攻击在通信系统中非常常见。黑洞攻击是指攻击者丢弃数据包而不是将数据包转发到目的地,从而造成数据包无法通过网络的漏洞。如果攻击者位于两组用户之间的关键路径上,且不存在其他路径,则黑洞攻击实际上是指两组用户之间无法通信,相互隔离。
七、Sybil攻击?
Sybil攻击,有时被称为模仿攻击,涉及用户创建大量的假名。传统上,Sybil攻击主要用于P2P网络,因为P2P网络中用户较多,攻击者对网络的影响较大。此外,Sybil攻击还可以用来改变特定方向的路由流量。
![sybil攻击[sybil攻击是什么]](https://btchangqing.oss-accelerate.aliyuncs.com/KeyDatas/2023/03/2260709062378642907.jpg)
详细的你可以看看这个空间的介绍
大规模的p2p系统面临着有问题的和敌对的节点的威胁,为了应付这种威胁,很多系统采用了冗余。然而,如果一个有恶意的实体模仿了多个身份,他就可以控制系统的很大一部分,破坏了系统的冗余策略。我们把这种模仿多个身份的攻击定义为女巫攻击(Sybil Attack)。一个防止女巫攻击的方法是采用一个信任的代理来认证实体。
区块链的特点之一是去中心化。也就是节点会分布在各个地方组成分布式系统。各个节点需要对1个问题达成一致,理想情况下,只需要同步状态即可。
如上图所示 B节点将a=1= a=2的状态同步给? ACDE四个节点,这时系统中状态变为a=2, 但如果其中有恶意节点 AE 收到通知后把a=1=a=3修改为错误的节点,这个时候大家的状态就不一致了,此时需要共识机制使系统中得到1个唯一正确的状态。
如上面说到分布式系统存在恶意节点导致系统中状态不一致的情况有1个比较著名的虚拟问题-拜占庭将军问题。
拜占庭将军问题是指,N个将军去攻打一座城堡,如果大于一定数量的将军同时进攻则可以攻打成功,如果小于则进攻失败。将军中可能存在叛徒。
这个时候有2种情况
1.如果2个叛徒都在BCDE中,那么共识算法需要让其余2个将军听从A的正确决策进攻城堡。
2.如果A是1个叛徒,共识算法需要让BCDE中剩余的3个忠诚将军保持一致。
这个问题有很多种解法,大家有兴趣可以自行查阅(推荐学习PBFT),我们重点来看看以太坊中目前正在使用的Nakamoto?共识和将要使用的?Casper Friendly Finality Gadget共识是如何解决拜占庭将军问题的。
说到Nakamoto共识和Casper Friendly Finality Gadget共识可能大家不太熟悉,但他们的部分组成应该都比较熟悉-POW(工作量证明)和POS(权益证明)。
POW或POS称之为Sybil抗性机制,为什么需要Sybil抗性机制呢,刚刚我们说到拜占庭将军问题,应该很容易看出恶意节点越多,达成正确共识的难度也就越大,Sybil攻击就是指1个攻击者可以伪装出大量节点来进行攻击,Sybil抗性是指抵御这种攻击能力。
POW通过让矿工或验证者投入算力,POS通过让验证者质押以太坊,如果攻击者要伪装多个节点攻击则必将投入大量的算力或资产,会导致攻击成本高于收益。在以太坊中保障的安全性是除非攻击者拿到整个系统51%算力或资产否则不可能进攻成功。
在解决完Sybil攻击后,通过选取系统中的最长链作为大家达成共识的链。
很多人平时为了简化将pow和pos认为是共识机制,这不够准确,但也说明了其重要作用,我们下面分析pow和pos。
通过hash不可逆的特性,要求各个矿工不停地计算出某个值的hash符合某一特征,比如前多少位是000000,由于这个过程只能依赖不停的试错计算hash,所以是工作量证明。计算完成后其他节点验证的值符合hash特征非常容易验证。验证通过则成为成为合法区块(不一定是共识区块,需要在最长链中)。
以太坊中的挖矿算法用到2个数据集,1个小数据集cache,1个大数据集DAG。这2个数据集会随着区块链中区块增多慢慢变大,初始大小cache为16M DAG为1G。
我们先来看这2个数据集的生成过程
cache生成规则为有1个种子随机数seed,cache中第1个元素对seed取hash,后面数组中每个元素都是前1个元素取hash获得。
DAG生成规则为?找到cache中对应的元素后?根据元素中的值计算出下次要寻找的下标,循环256次后获得cache中最终需要的元素值进行hash计算得到DAG中元素的值。
然后我们再看看矿工如何进行挖矿以及轻节点如何验证
矿工挖矿的过程为,选择Nonce值映射到DAG中的1个item,通过item中的值计算出下次要找的下标,循环64次,得到最终item,将item中的值hash计算得到结果,结果和target比较,符合条件
则证明挖到区块,如果不符合则更换nonce继续挖矿。矿工在挖矿过程中需要将1G的DAG读取到内存中。
轻节点验证过程和矿工挖矿过程基本一致,
将块头里面的Nonce值映射到DAG中的1个item,然后通过cache数组计算出该item的值,通过item中的值计算出下次要找的下标,循环64次,得到最终item,将item中的值hash计算得到结果,结果和target比较,符合条件则验证通过。轻节点在验证过程中不需要将1G的DAG读取到内存中。每次用到DAG的item值都使用cache进行计算。
以太坊为什么需要这2个不同大小的数组进行辅助hash运算呢,直接进行hash运算会有什么问题?
如果只是进行重复计算会导致挖矿设备专业化,减少去中心化程度。因为我们日常使用的计算机内存和计算力是都需要的,如果挖矿只需要hash运算,挖矿设备则会设计地拥有超高算力,但对内存可以缩小到很小甚至没有。所以我们选用1G的大内存增加对内存访问的频率,增加挖矿设备对内存访问需求,从而更接近于我们日常使用的计算机。
我们看看在Nakamoto共识是如何解决拜占庭将军问题的。首先看看区块链中的拜占庭将军问题是什么?
区块链中需要达成一致的是哪条链为主链,虽然采用了最长链原则,但由于分叉问题,还是会带来拜占庭将军问题。
本来以太坊pow目标是抵抗51%以下的攻击,但如上图如果恶意节点沿着自己挖出的区块不断挖矿,由于主链上有分叉存在,恶意节点不需要达到51%算力就可以超过主链进而成为新的主链,为此以太坊使用了ghost协议给上图中的B1和C1也分配出块奖励,尽快合并到主链中,这样主链长度(按照合并后的总长度算,长度只是抽象概念,以太坊中按照区块权重累加)还是大于恶意节点自己挖矿的。
网络中的用户通过质押一定数量的以太坊成为验证者。每次系统从这些验证者从随机选择出区块创建者,其余验证者去验证创建出的区块是否合法。验证者会获得出块奖励,没有被选中的区块不进行验证则会被扣除一定质押币,如果进行错误验证则会被扣除全部质押币。
如上图,权益证明在每隔一定区块的地方设置一个检查点,对前面的区块进行验证,2/3验证者通过则验证通过,验证通过则该区块所在链成为最长合法链(不能被回滚)。
我们简化地只分析了权益证明本身,在以太坊中权益证明较为复杂的点在于和分片机制结合在一起时的运行流程,这部分会在后面单独将分片机制的一篇文章中详述。
本篇文章主要讨论了共识机制是解决分布式系统中的拜占庭将军问题,以及分析了以太坊中的共识机制一般包括最长链选择和一种sybil抗性机制(pow或pos)。重点分析了pow和pos的流程以及设计思想。后续将开始重点讨论智能合约的部分。
5.2种拒绝服务攻击
一个标准的无线传感器网络攻击只是塞到一个节点
或是一系列的节点。干扰,在这种情况下,仅仅是一个传播
无线电信号,干扰无线电频率和正在使用的
传感器网络[88]。一个网络的干扰可以进来两种形式。
不断干扰,断断续续的干扰。不断干扰涉及
完整的干扰的整个网络。没有消息能够
发送或接收到。如果干扰,然后只断断续续节点能完成
定期交换讯息,但不会长久。这也可以
在传感器网络有害影响的信息被交换
节点之间可以时间敏感的[88]。
攻击也可以在链路层本身。一种可能性是
一个攻击者可能只是故意违反通信协议的情况下,
例如,ZigBee[94]或电器和电子工程师协会801.11 b(无线)协议,不断传播
讯息,试图产生碰撞。这种碰撞就需要
任何封包的重传受撞了。使用这项技术
很可能耗尽,攻击者传感器节点的简单
电源retransmissions迫使太多。
在路由层、一个节点可能会利用一个multihop网络
藉由简单的拒绝路线信息。这可能是断断续续的。做
不断与最终结果是,任何邻居路线通过
恶意节点将无法交换讯息,至少部分
网络。这种技术的延伸包括故意路由
信息不正确的节点(误导)[88]。
传输层也极易受到攻击的情况下,像在洪水。
洪水可以是简单的,许多连接请求发送
敏感的节点。在这种情况下,资源必须分配给处理
请求连线。最后一个节点的资源也会疲惫,如此
渲染节点无用的。
西比尔的攻击5.3
Newsome王汝成等描述西比尔的攻击,因为它涉及到无线传感器
网络(59)。简单地说,西比尔的攻击是定义为“恶意的装置
以多重身份的非法“[59]。它本来是描述
作为一个攻击能够打败冗余的分布式机制
在点对点网络数据存储系统[18]。除了击败
分布式数据存储系统中,西比尔进攻也就是能有效的对抗
路由选择算法中,区域数据聚合、投票、公平的资源分配
一些不良的检测。不管目标(投票、路由、聚合),
西比尔功能的算法类似。所有的技术
利用多重身份的涉及。例如,在传感器网络投票
方案、西比尔可能利用多重身份的攻击产生附加
“选票。”同样,攻击,西比尔路由协议的攻击
将依靠一个恶意节点以多个节点的身份,因此多路径路由通过一个单一的恶意节点
网球专业术语
a
approach shot 上网球
attacking return 攻击性回击球
asphalt courts 沥青球场
advantage 领先
alternate service 换发球
alley 单打与双打之间的场区
all 平(比分相同)
b
back-hand 反手击球
back-hand volley 反手截击
back-hand half-volly 反手半截击
back-hand drop shot 反手放放球
ball 网球
ball sense 网感
ball control 控球技术
blocked return 堵截回击球
bodyline ball 贴身球
base line 底线
ball boy 拾球员
ball change 换球
bye 比赛轮空
be quiet 安静
c
chip shot 削球
cement courts 三合土球场
clay courts 泥球球场
centre mark 中点
consistency 稳定性
court surfaces 场地表面
cross-court shot 斜线球
change sides 交换
championship 锦标赛
champion 冠军
correction 更正
chair-umpire 主裁判
d
doubles 双打
double-handed backhand 双手反手击球
drop shot 短球
depth shot 打深度球
down-the-line shot 落底线球
driven return 抽击回击球
duce 平分
double hit 在一次挥拍中球碰撞球拍两次
double fault 发球双错误
double bounces 球弹地两次
default 弃权
disqualiy 取消比赛资格
double elimination tournament 双打淘汰赛
e
event begins 赛事开始
etnaer service line 中线
exhibition 表演赛
eastern forehand 东方式正手
f
forehand 正手
forehand volley 正手截击球
forehand half-volley 正手半截击球
footwork 步法
foot fault 脚部犯规
faults 失误
fitness 状态
first service 第一发球
follow-through 跟进动作
foul shot 技术犯规
fifteen 15
fourty 40
g
grip 握拍姿势
grass courts 草地球场
grab-punch position 截击位置
ground stroke 弹地球
game 盘
good ball 好球
good return 有效回击
h
half-volley 半截击球
hitting the ball 击球
hand signal 手势
hindrance 妨碍
i
interference 干扰
j
just out 刚好出界
k
knock-out 淘汰赛
l
lob 高吊球
low volley 低截击球
let 发球时球触网
love 0分
linesman 视线员
m
mental skills 心理状态
mixed 混双
make the draw 抽签
n
net 球网
net-post 网柱
net-cord judge 球网裁判员
no-man’s-land 真空地带
not up 球在地上弹跳两次
o
over-grips 护柄带
out 出界
overhead 高球
overhand service 上手发球
p
partner 伙伴
player 参赛者
passing shot 超越球
percentage play 沉著应战
place-up 抛球
point-up 指著球
progressive playing 改善打法
postpone 延期
permanent fixtures 场上的固定物
q
r
racket 网球拍
rallies 连续
ready position 预备位置
receiver 接发球员
receiving formation 接发球的位置
return 回击球
rules 规则
referee 裁判
round robin tournament 循环赛
ranking 名次
s
service 发球
service return 回发球
shots 球路
spin 旋转球
sidespin 侧旋转球
slice service 削发球
smash 扣杀球
split-stepping 分开两脚站立
stamina 耐力
stance 站姿
stretching exercisees 伸展运动
strings 球拍线
surprise return 突然的回击
swing 挥拍
second service 第二发球
score 得分
strap 中央带
side line 边线
service line 发球线
service court 发球区
single court 单打场区
suspension 暂停
seeding player 非种子球员
seeded player 种子球员
single eliminatin tournament 单淘汰赛
t
tactics 战术
take-back 拉拍
tennis lines 网球场上的线
throwing position 准备击球姿势
timing 击球时间的掌握
topspin 上旋转球
turn 转身
thirty 30分
through the net 穿网球
tie-breaker 平局?胜制
u
umpire 裁判
underspin 下旋球
v
volley 截击
w
warming up 热身运动
wide ball 离身球
双发失误(Double):连续两次发球都失败,并被判为丢掉一分。
穿越球(Passing shot):当一记回球从站在网前的对方球员身边任一侧经过并导致接球失误的球即为穿越球。
第二发球(Second serve):发球时,发球球员有两次发球机会,将球发到对方发球区内。如果第一次发球失误,就只剩下第二发球的机会。
种子选手排位(Seeding):参加某项赛事的优秀选手。通常,在赛事开始前,优秀选手被列为“种子选手”。这可以避免这些优秀选手在参加比赛的过程中过早相遇、被淘汰出局。
澳洲式双打阵型(Australian doubles formation):在双打比赛中,两人的站位通常是分布左右的一前一后,但这里指的则是两人站在同侧,另一人站在发球者的前方。
非受迫性失误(Unforced error):在对方未对自己施予压力的情况下出现的主动失误。
外卡(Wildcard):赛事组织者以颁给外卡的方式,邀请一位或更多球员参加赛事,无论其排名如何。这使赛事组织者可以为有潜力的年轻选手提供参赛席位,或给错过报名时间的优秀选手提供方便。
我这个比楼上的仁兄强多了吧~~
在传统的互联网公司或金融机构中,如果一家公司,在一年之内,被委托的交易结算的总量为万亿美元的话,这家公司要么拥有可靠的技术和雄厚的资本,要么就是其它大公司及政府为其信用来做背书。而比特币却在没有政府或公司背书的情况下,在过去一年内支持了相当于一万亿美元的交易。这是因为比特币的工作量证明(PoW)机制确保了全世界的比特币矿工以点对点的方式去分布式地维护账本,且保证了其正确性和不可篡改性。
实际上,PoW?协议并不完美,它在运行过程中需要消耗大量的能量来计算哈希函数的结果,以保护区块链系统不被攻击。很多人认为这是一种“无用的能源消耗”。为了避免这种消耗,股权证明协议(PoS)便作为替代方案被提出。包括以太坊在内的几个著名的项目也开始探索股权证明协议(PoS),?甚至有人认为,PoS协议在未来将完全取代PoW协议。
但是,在对PoS?协议进行了深入的技术剖析之后,我们会发现:在一个公链项目的早期阶段,PoS?协议会带来很多问题,而这些问题在PoW协议下是可以避免。首先,使用PoS协议启动主网的公链项目,会不可避免地存在共识中心化的问题,因为主网上线的时候股权分布往往是相对集中的。此外,纯?PoS?协议还面临着远程攻击(Long Range attack)的威胁。最严重的远程攻击会导致新加入的节点必须信任一些中心化的网站给出的信息,而这会导致?PoS?公链成为一个本质上中心化的网络。去使用PoW协议启动主网的区块链则可以实现分散的共识,从而避免这些问题。当PoW公链经过一段时间的发展,股权分布相对分散以后,还可以选择PoW/PoS复合机制。
除此之外,还有一点值得注意的是,很多人误以为比特币的扩容问题是PoW机制的局限性造成的。我们经常在媒体网站或白皮书中看到这样的句子,“比特币因为使用了PoW机制,所以只能处理每秒3-7笔交易”。而事实上,经过适当的设计,例如,GHOST, Conflux?这样的PoW算法可以显著提高出块效率,达到每秒处理数千笔交易,且每笔交易都能得到全网节点的验证。
PoW v.s. PoS:如何确定投票权
关于PoW和PoS之间的主要区别,就是在于如何确定区块链共识中的投票权。?在PoW中,系统中的投票权与节点的计算能力成正比。每秒可以计算哈希函数次数越多,节点就越有可能赢得区块链中下一个区块的出块权。而在PoS中,系统的投票权与持有的股权比例成正比。节点拥有资金越多,能为确定的下一个区块投的票数就越多。
在公链早期阶段,股权中心化将导致共识中心化
对于一个公有链来说,其上线初期往往是股权最集中的时候。在主网上线伊始,创始块中分配的币绝大多数属于项目方和私募投资人,而这些人的数量往往非常有限。对于PoW共识机制,初始股权的集中不会带来安全性问题,因为它的出块和安全性不依赖于股权持有的分散,而是依赖于算力的分散。对于使用反?ASIC?矿机的挖矿算法的公有链来说,任何人只要拥有显卡和网络就可以成为矿工,这有助于促进更多人参与挖矿,实现早期算力的分散。只要超过50%的算力来自于诚实的矿工,区块链中的交易就是安全不可逆转的。
然而,在PoS共识机制下,股权集中会导致共识协议的参与者集中。区块链的出块权只能由少数在创世块中拥有股权的玩家决定。如果这些人合谋对区块链进行攻击,则完全可以成功的实现双花攻击(Double spending attack).?尽管开发者和投资人出于利益考虑不会进行这样的攻击来摧毁他们自己的公链,但PoS公链也无可避免的在主网上线后就被这些人垄断和支配。更糟的是,如果出块可以获得大量奖励和交易费用,这些垄断者就会将大量股权牢牢控制在自己的手里,使得PoS公链成为一个本质上由巨头控制的网络。
我们不要忘了,区块链的核心价值是什么?是去中心化的共识协议,保证了区块链系统中每笔交易的正确性、不可篡改性。如果共识协议无法保证参与者的分散,区块链就无法做到无需信任的安全性,那么区块链和传统的分布式系统相比就没有任何优势了,甚至传统的分布式系统能做得更经济更高效。因此,公链项目在早期使用PoW,?是避免共识中心化,保护区块链核心价值的明智选择。
“长程攻击”与“主观依赖”问题
在一个公有链中,一个攻击者如果拥有当下足够多的算力或股权,无疑是可以打破公有链安全性完成攻击的。但是在PoS?公链中,如果攻击者获得了一些账户的私钥,这些私钥在历史上某一时刻控制了超过51%的股权,也可以完成攻击,这种攻击的方式被称为长程攻击(Long Range Attack)。
在长程攻击中,攻击者首先获得一些私钥,只要这些私钥在历史上曾经获得了足够多的股权,便可以从这一时刻开始分叉进行51%?攻击,制造一条分叉链出来。而?PoS?的出块不需要进行工作量证明,攻击者可以短时间内让重写历史的分叉链追赶上原本的主链,从而造成PoS链的分叉和防篡改性被打破。
攻击者能够取得这些私钥不是天方夜谭。如果PoS公链的早期投资人在二级市场将持有的代币卖掉后,将账户私钥卖给攻击者,攻击者就可以从创世块进行长链攻击,从而可以打破一个链的安全性。如果一些投资者追求短期收益而非价值投资,攻击者从他们手里获得私钥就成为了一个可能的事情。
而为了应对长程攻击,则有各种各样的解决方案被提出:例如使用密钥演化算法更新密钥,以避免密钥被盗。但是如果早期投资者一开始就决定通过出售私钥获利,那么他完全可以保留密钥种子以绕开这一限制。还有一些解决方案基于这样一个事实:如果攻击者挖了一条完全不同的链,长期在系统中运行的节点或许有能力探测出这种异常。但是,这些方案依然存在如下问题:
PoS?长程攻击造成的分叉与?PoW?的分叉有所不同。PoW?的分叉链难以获得比特币全网算力,比特币矿工很容易从总算力中辨别谁是真正的比特币。鉴于PoS共识协议在实际运行时,绝大多数股权持有者只是区块链的使用者,并不会一直运行一台服务器。攻击者只要在一个历史节点拥有了相当与PoS实际参与者的股权比例,就可以制造出一条难以辨别的分叉链出来。配合女巫攻击(Sybil Attack),攻击者可以从区块历史和节点数量上都获得和被攻击主链接近的水平,令新加入的节点无法区分,只能通过人工指定的方式选择。这样新参与者必须咨询受信任节点来安全地加入系统,这一问题被称为“主观依赖”(Weak Subjectivity)
无利害攻击
无利害攻击(Nothing at Stake)是另一种PoS攻击方式。当一个?PoS?链因为网络延迟、长程攻击或其他原因出现分叉时,PoS?矿工可以选择在两个分叉的链上同时出块,以获取最大收益。而这违反了共识协议。
在PoW?链中,如果一个矿工想同时在多个分叉上挖矿,就必须将自己的算力分散在多个分叉上,所有分叉上分配的算力总和不会超过矿工拥有的总算力。对于多数矿工而言,将自己的全部算力投入到协议指定的链上是最优的选择。
然而,在PoS?多个分叉上同时出块所带来的额外成本可以忽略不计,而选择同时出块可以保证无论哪一条分叉链最终胜出都可获得收益。如果矿工遵守共识协议,只在协议指定的链上挖矿。一旦这个链被丢弃,矿工将会失去挖矿奖励。只追求挖矿收益最大化的矿工会在两边同时参与,不惜因此打破协议——这会导致链长时间维持分叉的状态。
与长程攻击不同,精巧的激励机制设计可以避免这一攻击。但无利害攻击依然表明让PoS链正确地运行是一件很困难的事情。
总结
虽然PoS?具有节省能源等优势,从而很多项目表示将采用PoS。但我们在分析区块链安全性假设后发现,避免了计算“无用的哈希”之后会引入很多攻击情形,而且目前没有很完美的解决方案。诚然PoS有能源效率的优势,但也带来了很多安全性威胁。在PoS很好地解决这些威胁之前,PoW消耗的能源,就像和平时期国家军队用掉的军费一样,阻挡了很多潜在的威胁。最重要的是,其中许多威胁在区块链项目早期显得尤其致命。这也是我们为什么相信新的公链项目应该从PoW开始。
经过以上对sybil攻击的分享介绍,相信你对sybil攻击是什么有了大概的了解,想知道更多关于sybil攻击的知识,关注币牛牛,我们将持续为您分享!
© 版权声明
文章版权归作者所有,未经允许请勿转载。