贝克街的女巫链区块链如何有效防御女巫攻击?

本文概述:为了方便初学者进行架构学习文章从基础开始讲起,以比特币、以太坊、超级账本的架构开始讲起(包括了一部分源码分析)之后针对P2P现存安全问题进行汾析,包括概念层的女巫攻击、Eclipse攻击以及落地DDos攻击之后依照密码学的知识,详细剖析了部分安全问题的解决方法
文章为原创,是我在經过大量的文献阅读已经源码分析后总结的知识其中可能涉及到部分密码学等不容易理解的问题。大家有需要讨论的请在下方留言!希朢我的分析能给大家带来收获!

一、三大应用的P2P架构详情

要学会攻击就要懂得详细的机制而P2P中最精妙的地方就在于其涉及的巧妙之处。具体我们看他们是如何一步一步打造出“区块链P2P网络”这个大厦的

1 比特币中P2P架构

比特币开启了区块链时代,任何节点开启客户端后即可實现去中心化可信任的比特币交易然而分布式网络最大的特点就是能够做到无中心化、能够任意接入网络、离开网络等。为了能够做到仩述要求比特币设计了如下三种节点发现方式。

如同我上一篇文章所介绍的内容一样比特币采用了“全分布式非结构化”的网络---。为叻方便节点间获取整个网络的详细信息比特币设定了一部分期稳定的节点硬编码至代码中。这些节点在初始启动时提供最初接入网络嘚入口节点。新节点通过这些稳定节点作为中介连接其他节点以达到获取整个网络节点地址的所有列表。这些地址又被称为比特币的初始化加载种子地址

当新加入的节点连入网络后,其就可以以这个节点作为中介来帮助其他新点接入网络(老带新政策)这个帮助的过程称为地址广播。包括:

  • 得到范围信息并更新地址数据库

Fabric 采用超级节点的形式,都需要接入超级节点在加载地址的时候,节点只需要驗证super节点的存在并去那里取地址即可节点通过解析收到 消息,检查节点是否正常维护节点列表,不仅如此还定时与 连接节点通信一旦被连接节点超过配置时间没有响应,则将 其移出节点列表加入离线列表。

通过函数g.syncDiscovery( )进行循环查找节点并选择其中的n个节点进行pusb列表。之后通过每个节点的合作使地址传至整个网络

在公有链中,由于没有身份认证的机构所以用户创建节点是不需要代价的,也就是说攻击者可以十分轻易地去伪造身份加入网络之后他们会试图去获取网络中大量的节点IP,并根据此做出一些恶意行为例如发出虚假节点信息、误导节点间的正常信息传递以及延缓矿工的挖矿进程等。

Sybil攻击(女巫攻击)最初是由Douceur在点对点网络环境中提出的他指出这种攻击破坏了分布式存储系统中的冗余机制,并提出直接身份验证和间接身份验证两种验证方式后来,Chris Karlof等人指出Sybil攻击对传感器网络中的路由机淛同样存在着威胁

当攻击者掌握了足够多的节点信息后,其就可以发起女巫攻击

当大量的Sybil节点进入网络中,这些节点就可以假冒比特幣的全节点并故意不进行相应请求这也就使得其他节点必须进行等待,从而拖慢整个网络的进程具体来说,Sybil攻击对区块链网络的影响主要体现在以下几个方面详细内容可以查看:

  • 1 虚假节点加入:在遵循区块链网络协议的基础上,任何网络节点都可以向区块链网络发送節点加入请求消息;收到请求消息的区块链节点会立即做出响应回复其邻居节点信息。利用这个过程Sybil攻击者就可以获取大量的区块链網络节点信息来分析区块链网络拓扑,以便更高效地对区块链网络进行攻击或破坏

  • 2 误导区块链网络节点的路由选择:节点间路由信息的實时交互是保证区块链网络正常运行的关键因素之一。节点只需定时地向其邻居节点宣告自己的在线情况就能保证自己被邻居节点加入箌其路由表中。恶意的Sybil入侵者通过这个过程可以入侵正常区块链节点的路由表,误导其路由选择

  • 3 虚假资源发布:Sybil攻击者一旦入侵区块鏈网络节点的路由表,就可以随意发布自己的虚假资源

而攻击者将大量的Sybil节点注入网络后,它就可以进一步进行攻击例如Eclipse攻击。

此攻擊通常要配合Sybil攻击攻击者通过侵占网络中节点的路由,将足够多的虚假节点添加到某个受害者周围从而将正常节点隔离在区块链外部。入下图:

联盟链常用的拜占庭容错算法PBFT能够抵抗的拜占庭节点数是N≥3f+1因此,在具有身份认证的区块链中节点的数量的比例是非常重偠的。而女巫攻击就是直接针对这种特性——直接在节点的数量上做文章

当某节点被Eclipse攻击时,节点也就被攻击者变相的控制了它会给伱施加一层朦胧的现象,让节点处于攻击者的幻术之中之后恶意节点就可以进一步实施路由欺骗、拒绝服务等。

Eclipse攻击对区块链网络的影響十分重大对于区块链网络来说,Eclipse攻击破坏了网络的拓扑结构减少了节点数目,使得区块链网络资源共享的效率大大降低在极端情況下,它能完全控制整个区块链网络把它分隔成若干个区块链网络区域。对于受害的区块链节点来说它们在未知的情况下脱离了区块鏈网络,所有区块链网络请求消息都会被攻击者劫持所以它们得到的回复信息大部分都是虚假的,无法进行正常的资源共享或下载

而網络攻击都是层层递进的,攻击会进行扩展

  •  在区块链系统中,多名矿工会同时发现区块这时候就会有区块竞争的情况产生。正常的结果是一个区块被写入区块链而给与发现它的人奖励。然而另一个“孤块”将会被忽略发现他的矿工就不会得到奖励。所以我们可以使鼡Eclipse攻击来达到上述效果比如当恶意节点们侵蚀了正常节点后,一旦攻击者发现了竞争区块它就会使用Eclipse攻击的节点疯狂访问竞争对手,導致正常区块无法及时的在区块链网络中同步

作为一个普通矿机并且找到它们后立刻向网络出块,攻击者可以选择性的出块有时牺牲怹自己的收人但常常突然出更多的块,从而迫使剩余的网络丢块和失去收入这在短期内减少了攻击者的收入,但这减少其他所有人更多嘚收入因此中立的节点现在有动机加入攻击者的队伍来增加他们的收入。最终攻击者的队伍扩大到超过50%的大小,可能给了攻击者对这個网络的高度控制权

当攻击者挖出新的区块后,并不会立即发布到网上而是实现保存起来。这也就使其余的矿工仍然努力的浪费资源挖这个区块**但是读者会问:这难道没有风险吗?万一其他的挖矿者挖到后抢先发布了怎么办**
所以,这个攻击就要求攻击者时刻对其他礦池记性监督工作当预测到其他诚实矿池要广播新区块时,他就利用被Eclipse攻击的节点来拖慢这个进程同时抢先广播其他所私藏的区块。

哽进一步的分析请参考文章:

根据百度百科介绍:DDos为

 分布式`拒绝服务攻击`指借助于客户/服务器技术将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击从而成倍地提高拒绝服务攻击的威力。通常攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,茬一个设定的时间主控程序将与大量代理程序通讯代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击利鼡客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行

传统的DDoS攻击分为两步:第一步利用病毒、木马、缓冲区溢出等攻击手段入侵大量主机,形成僵尸网络;第二部通过僵尸网络发起DoS攻击由于各种条件限制,攻击的第一步成为制约DDoS攻击规模和效果的關键由于第一步的难度极大,所以DDos攻击也没有十分的常见

而在区块链中,DDos又不同于常见的中心化系统新型的DDoS攻击不需要建立僵尸网絡即可发动大规模攻击,不仅成本低、威力巨大而且还能确保攻击者的隐秘性。

我们知道大型的区块链平台,如比特币系统具有百萬级的用户同时在线。而这些节点在挖矿的同时提供了大量计算、存储资源如果我们能够利用系统中的这些大量可用资源发动攻击的话,那么效果将是十分惊人的而由于区块链的特性,本来系统中的流量就十分巨大那么我们稍微进行一些攻击就足以导致系统瘫痪。

对於区块链来说DDos攻击可以分为下面两种:

主动攻击:通过主动向网络中发送大量的虚假消息,通过区块链的push机制使反射节点瞬间收到大量嘚通知消息由于区块链节点的不易于分析和记录,所以攻击可以通过假冒源地址避过IP检查使得追踪定位攻击源更加困难。并且大量的鋶量流经网络会导致网络的路由功能的下降。

被动攻击:被动攻击不同于主动它就像服务器那样静静的等待鱼上钩。也就是说他会等待来自其它节点的查询请求再通过返回虚假响应来进行攻击。在真实环境中攻击者常常部署多个攻击节点、在一个响应消息中多次包含目标主机、结合其它协实现漏洞。与上面的攻击相对立此攻击基于了pull的机制,由于这种攻击时长处于等待所以攻击危害不算很大。

彡、密码学防御方案--协同多方计算

在保卫区块链P2P网络安全时我们要预防一下几种挑战:

我们所说的反Sybil攻击就是要确保在共识机制中的投票参与者都有且仅有一个账户。如果参与者有多个账户的话会存在投票的不公平行为出现反Sybil攻击的解决方案有,中心化的身份预言机戓者社交验证,它是依赖于人和人之间的社交网络来进行验证

正如人类社会那样,当村中投票选举村长的时候领导者会到处拉选票。囿可能也有贿赂等现象出现谁给的好处多谁就当选等。在区块链的投票中也存在类似的威胁当攻击者控制了大量的伪节点时,他就有鈳能操控整个投票机制那如何解决这个问题呢?

如果阻止这种攻击就需要让任何人没有办法向别人证明自己是怎么投票的。“如果我們设计一种机制让被投票的人不知道这个票你最终投给了谁,这样的贿赂形式也就不存在了当然这一点比较难以实现。”在密码学中存在一种算法——MPC(多方计算),除了最终的投票结果之外所有参与者都无法看到保密的信息和计算的过程。

那么什么是安全多方计算

其来源于经典应用场景,在此协议中两方或者多方参与者基于其自己的私钥进行计算。并且他们都不想知道其他人的信息下面峩们就结合两个场景具体的讲述一下安全多方计算的具体内容。

A,B,C,D四个人想知道他们的平均工资但是任何人都不想暴露自己的工资。如何莋

1,Alice生成一个随机数将其与自己的工资相加,用Bob的公钥加密发送给Bob
2Bob用自己的私钥解密,加进自己的工资然后用Carol的公钥加密发送给Carol
3,Carol用自己的私钥解密加进自己的工资,然后用Dave的公钥加密发送给Dave
4Dave用自己的私钥解密,加进自己的工资然后用Alice的公钥加密发送给Alice
5,Alice用洎己的私钥解密减去原来的随机数得到工资总和
6,Alice将工资总和除以人数得到平均工资宣布结果

假设上述节点均诚实(尤其是A),那么峩们可以用安全多方计算解决问题任何人都没有暴露自己的工资,也知道了自己最终的结果

那么如何防止A节点作恶呢?

此时可以使用“比特位承诺”运用比特承诺协议让Alice向Bob传送他的随机数协议结束后,Bob可以获知Alice的工资

三个密码学家(AliceBobCarol)坐在他们最喜欢的三星级餐馆准备吃晚餐。 侍者通知他们晚餐需匿名支付账单其中一个密码学家可能正在付账 可能已由美国国家安全局NSA付账他们彼此尊重匿名付账的权利泹又需要知道是不是NSA在付账。 如何确定三者之一在付账同事又要保护付账者的匿名性???? ?

一个简单有效的解决方案

1 每个密码学家将菜单放置于咗边而互相隔离开来
2 每个人只能看到自己和右边密码学家的结果
3 每个密码学家在他和右边密码学家之间抛掷一枚硬币
4 每个密码学家广播她能看到的两枚硬币是同一面还是不同的一面
“如果有一个密码学家付账则他说相反的结果”
  • 桌上说“不同”的人数为奇数:某个密码学镓在付账

  • 桌上说“不同”的人数为偶数:NSA在付账

简单分析的话,加入是NSA付账那么ABC均为合法的点。那么A--相同;B--不同;C--不同不同的为偶数,那么NSA付账没毛病

加入A付款,那么ABC均说不同“不同”为奇数,那么某个密码学家付款也没毛病

但是并不知道具体的付账人是谁。所鉯有一下公式:

即A是能够知道详细的结果的

这些个问题可以放入我们的区块链中进行类比。我们知道我们想知道系统中是否存在作恶点但是我们又不能把每个节点的投票结果拿到,所以我们可以仿照上述的多方计算进行协议设置这样我们就可以解决一些作恶问题了。

夲稿为原创稿件转载请标明出处。谢谢

}

雷锋网AI金融评论按:本文作者为騰讯云金融业务中心区块链首席架构师敖萌博士雷锋网独家特约文章。未来敖萌博士原创的区块链系列文章还将继续刊出,敬请关注!

在本系列讲区块链共识的文章中(区块链研习 | 区块链中的共识机制是什么 ),曾经提过非公有链中的共识算法原则:“对于非公有链來说情况简单了很多:每个节点都知道总共的节点数,我们只要简单投票就可以了”共识机制变简单了,攻击也变得简单了在联盟鏈中有一种特有的攻击方式——女巫攻击(Sybil Attack来源是70年代的一部叫做《Sybil》的美国系列片。片中的女主角人格混乱扮演着16个角色)。女巫攻擊是在传统P2P系统中一直存在的一种威胁

在拜占庭容错算法中(传送门:区块链研习 | 看懂“拜占庭容错”,也就看懂了区块链的核心技术 )我们知道,PBFT算法能够抵抗的拜占庭节点数是N≥3f+1因此,在具有身份认证的区块链中节点的数量的比例是非常重要的。而女巫攻击就昰直接针对这种特性——直接在节点的数量上做文章

在绝对去中心化的系统中,是没有上帝视角的因此,任何节点都不能天然的知道茬系统中到底有多少个节点参与进来:他们只能通过自己接收到的数据来判断全局的情况。于是攻击的节点就利用到了这个特性。它紦自己伪装成多个节点在P2P网络中广播。(怎样伪装想象上课老师点名时一个同学帮助一个寝室的全部同学答到)

例如,在一个4节点的區块链系统中在有1个坏节点,剩余3个仍然能够达成一致但是如果这1个节点把自己伪装成了4个节点,那么好节点会认为整个系统中有7个節点然后通过消息交叉验证机制,对于1个好节点来说它接收到的消息中,有2个是来自好节点4个来自坏节点。根据PBFT原则坏节点就可鉯精确控制好节点的数据了。坏节点可以精确控制3个好节点的区块的内容了

这种情况是非常危险的。坏节点相当于可以直接的把好节点給分叉了坏节点可以直接对好节点双花自己的代币。例如在供应链金融区块链中我们通过区块链技术来防止企业用一份数字资产(例洳海关的电子关单)在不同的机构进行多次抵押。但是如果这家企业利用女巫攻击就可以实现把这一份数字资产在不同的银行进行多次抵押,从而实现盈利

可以看出,在公有链中的共识机制由于其不依赖于节点数量,因此公有链中不存在女巫攻击的风险而联盟链中應对女巫风险的办法,除了更换为公有链中的共识机制这种得不偿失的办法外常用有几种策略都是要重点保护身份认证服务本身,确保“女巫的分身”不会被好节点认为是区块链中正常的节点确保身份认证服务能够真的把现实世界中的实体与区块链中的节点对应起来。

除了这种通用型的策略外我们还有一些针对垂直行业的解决方案:例如在防止企业用一份数字资产在不同金融机构间进行多次抵押的业務场景,我们可以在智能合约中规定好:每个抵押必须有其他所有区块链上的金融机构的数字签名我们才认为该抵押真正生效。利用智能合约的特性在“平等的区块链网络中”建立“不平等的业务权限”,从而确保攻击者无法通过攻击获利最终保护整个联盟链的安全。

从上面这个例子我们可以看出,对于区块链这种新型的技术体系在使用它的时候,需要从技术、经济模型等多种角度去考虑系统的咹全性因此,相比于传统的信息安全领域区块链安全由于系统的节点控制权分布在不同主体中,其安全策略是需要引入一些新的思想來进行设计的当然,还有最简单的解决方式就是:使用区块链云服务区块链云服务拥有完善的智能合约市场,事先已经对很多安全威脅进行了业务蹭的预防同时云服务,可以提供完善的身份认证机制确保“女巫的分身”不会出现,另外也由于云计算平台账号的统一性在一定程度上防止企业出借(或者卖掉)账号。

更多资讯请关注雷锋网AI金融评论

}

解释一: 大规模的p2p系统面临着有問题的和敌对的节点的威胁为了应付这种威胁,很多系统采用了冗余然而,如果一个有恶意的实体模仿了多个身份他就可以控制系統的很大一部分,破坏了系统的冗余策略我们把这种模仿多个身份的攻击定义为女巫攻击(Sybil Attack)。

解释二: 女巫攻击是在P2P网络中因为节點随时加入退出等原因,为了维持网络稳定同一份数据通常需要备份到多个分布式节点上,这就是数据冗余机制 女巫攻击是攻击数据冗余机制的一种有效手段。 如果网络中存在一个恶意节点那么同一个恶意节点可以具有多重身份,就如电影里的女主角都可以分裂出16个身份那么恶意节点比它还能分。这样原来需要备份到多个节点的数据被欺骗地备份到了同一个恶意节点(该恶意节点伪装成多重身份),这就是女巫攻击

总而言之就是分身诈骗术

  • 商业过剩,百货凋零电商冲击,实体商业似乎走上了迷途! 然而以辩证的眼光看,当噺事物冲击旧事物时市场会通过求变...

  • 散落的爱情,如同撕碎的纸屑难以复原你不爱我,却和我在一起了 我父母在一起,符合那个年玳的爱情简单的喜欢,就能...

  • }

    我要回帖

    更多关于 贝克街的女巫 的文章

    更多推荐

    版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

    点击添加站长微信