查看原文
其他

Filecoin是如何防止常见的攻击如DDOS、女巫攻击、51%攻击

Filecoin是如何防止女巫攻击的?

01

女巫攻击到底是什么?


女巫攻击(Sybil Attacks)是Filecoin面临的三种网络攻击之一,它的意思是恶意节点通过克隆ID的方式欺骗网络以获取额外的收益,这种方式被称为女巫攻击。那么,这个女巫攻击称呼来自何处呢?


根据Flora Rhea Schreiberie在1973年的小说《女巫》改编的同名电影,是一个化名Sybil Dorsett的女人心理治疗的故事。她被诊断为分离性身份认同障碍,兼具16种人格。


同样,如果网络中存在一个恶意节点,那么同一个恶意节点可以具有多重身份,就如电影中的女主角分裂出的16个身份,原来需要备份到多个节点的数据都被欺骗地备份到了同一个恶意节点,比如该恶意节点伪装成多重身份,这就是女巫攻击。



这种网络攻击方式就和女巫一样可怕


通俗理解:用户提交网络请求,存储N个独立备份。这时,某个恶意节点生成了Y个身份的标识,网络就以为是Y个独立存储节点,而恶意节点的实际存储分数少于N份或者干脆只有一份。


但是该恶意节点却可能获得N份独立备份(奖励),换句话说它可能获得了N倍区块FIL币奖励,此时,该恶意节点攻击成功。



那么Filecoin又是如何解决女巫攻击的呢?

 

02

Filecoin防止女巫攻击的解决方案


首先各位小伙伴要明白Filecoin中为什么要防止女巫攻击?


很简单,比如某厂商只有1个节点用来进行Filecoin挖掘,然后其通过女巫攻击实现10个节点同时进行挖掘Filecoin,但是该厂商却只贡献了1个节点的存储算力,就好像明明只干了一份工作却冒领了10份奖励,这种情况欺骗了Filecoin官方和Filecoin网络。


所以,为了防止欺诈和公平性,必须解决女巫攻击问题。




复制证明就是Filecoin防止女巫攻击的解决方案,复制证明的核心思想就是确保证明者保存了独立备份。那么,复制证明是如何实现的呢?


第一步,加密时间长,解密时间短。通过加密时间的延长使恶意矿工不能及时通过临时生成加密后的文件来挑战,因为要生成复制证明必须要求证明者使用加密后的文件作为输入,也就是说只有矿工实际存储了加密后的文件才能保证按时完成挑战,缩短解密时间是为了更快提取文件减少计算资源损耗。


第二步,定时提交存储证明。每间隔一段时间,矿工需要提交一次存储证明,说白了就是要定期上交证明给Filecoin网络检查验证。因为加密过程时间非常长,很占时间,所以要降低挑战时间、解密时间和验证时间的长度,即降低生成存储证明的复杂度。


上面的整个过程就是Filecoin的复制证明(PoRep)。


03

Filecoin的复制证明实现过程


PoRep的基本定义是这样的:验证者V向证明者P提供一段独特的数据证明π,以说服P自己存储了数据D的一个特定备份Di,这个证明是专为P生成的挑战C的应答。


通俗的理解是这样的:某矿工大刘(验证者V)给某用户小张(小张向网络发布了多个存储任务)说,“我手里有一个独特的数据证明,是你发布的存储任务中的某个备份,该备份仅此一份”。


只要两人“暗号证明”对上了,只要用户小张确认没问题,那么矿工大刘就能拿到对应备份的任务奖金(Filecoin网络挑战爆块出币)。




04

Filecoin是否能100%完美地防止女巫攻击呢?


并不是,在年初的时候,Filecoin网络还不稳定,甚至在测试网期间还出现了系统BUG,有节点矿工就恶意获得了很多虚拟FIL币。所以,各位小伙伴们明白了Filecoin网络为什么要进行测试了吗?


就是为了在正式主网上线运行后能够保证系统稳定,否则如果主网上线后出现问题或者漏洞,不仅对其他矿工来说不公平,对整个Filecoin网络生态都可能造成及其严重影响。


Filecoin官方之所以在主网上线前拿出425万FIL币作为奖励,刺激矿工们参与测试网和校准网,就是想以主网上线后的代码为真实模拟看看会不会出现什么问题。


Filecoin的核心:复制证明和时空证明是什么?
https://mp.weixin.qq.com/s/uTq3DIXwnejzGFsLMPmbfA

—————————————————

区块链常见的攻击如DDOS、女巫攻击、51%攻击

—————————————————


区块链通常被认为是高度安全的,但它们提供的安全级别与支持网络的哈希功率的大小成正比。矿工越多,采矿硬件越强大,就越难对网络进行攻击。在本文中,我们将涵盖大部分公共区块链上最常见的攻击情形。


拜占庭将军问题


在我们进入不同的攻击场景之前,我们想向您介绍一种思想实验,即拜占庭将军的问题,该问题在几个世纪以来一直未解决,直到区块链技术被引入,声称已经解决了它。

想象一下,几个世纪前你是一名将军,你想用你的军队攻击一座城堡,城堡非常强大,军队内部强大。你已经安排了许多其他军队来支援这次袭击,而且每支军队都会从不同的方面进行攻击。军队之间的距离是相距几英里的距离。如果他们同时攻击,那么胜利的机会非常高。如果攻击不协调,那么你很可能会遭受失败。

拜占庭将军问题

你作为将军有以下问题:你如何确保所有军队同时进攻。换句话说,如何在攻击时间达成共识?你不能用旗帜,火把或烟雾给出信号,因为这些信号可以被敌人拾取。

你可以在马背上派信使,但是如果他们中的一个人在到达友方的将军之前被俘或被杀了怎么办?要知道其他将军收到了这条消息,你可以让他们发回一个信使来确认。派遣出去确认的信使也可以在返回途中被捕获或杀死。其他将军不知道你是否收到他们的确认,所以你必须发出2次确认信使,但如果这些信使被抓获怎么办?即使没有冒充者传递欺诈性信息和叛徒,但如果因攻击有风险,需确认以不采取行动,这种情况也被认为是无法解决的。没有人能够绝对肯定地知道其他将军是否打算同时攻击与否。

区块链技术声称已经解决了这个问题。

每个将军现在都有一个事件分类账,这些事件总是与其他将军的分类账同步,而且没有中央方负责协调。每次开采一个区块,所有参与者都会同意最近几分钟的事件顺序。回到我们一般的问题,现在他们有办法知道他们是否都要攻击,或者他们是否应该集体撤退。

批评者可能会指出,工作证明区块链并非真正的拜占庭容错,因为共识没有终极性。交易的确认越多,或者更一般地说,块中包含的信息越多,该信息最终的概率就越高。但总有小概率会发生分叉,而另一个不同的长链将取代旧的。如果您不熟悉最长链规则,请查看我们关于共识机制/挖掘的文章。

查看具有大量哈希率的PoW区块链,例如比特币区块链,在一个区块之后有一个分叉的机会,只要在它有6个最少确认数就会被最终认定为一个区块。在我们关于高级部分51%攻击的文章中,我们将看一下计算这些机会背后的数学。

现在我们已经讨论了共识机制旨在解决的一般问题,让我们看看一些简单直观的攻击场景以及我们如何解决它们。


DDOS攻击


计算中的分布式拒绝服务(DDOS)攻击是一种攻击,其中犯罪者试图通过向网络充斥大量多余请求以试图使系统过载,使其用户无法使用网络资源。这是一种攻击不仅是区块链,而且任何在线服务都会受到影响。在一个简单的形式,DOS(拒绝服务)攻击,所有这些请求来自同一个来源。这使得它比较容易预防。如果单个IP地址发送了大量因合理原因却无法证明的请求,您可以采取措施自动阻止此IP地址。在DDOS攻击的情况下,分布式是指向不同源网络向外发出大量恶意请求。

DDOS攻击比较难以解决,因为这样做需要区分合法和恶意请求。这是一个非常难的问题。在区块链的背景下,这归结为一个几乎意识形态的问题。引入交易费的动机是消除垃圾邮件。有些人认为,只要请求附加了交易费,根据定义它们就不能被视为垃圾邮件。我认为,只要请求(在这种情况下是交易)的唯一目的是减慢网络速度,它仍然可以被视为垃圾邮件。这是一个强烈的主观观点,因为无法确定大量交易背后的动机。

Sybil女巫攻击


Sybil攻击是通过创建多个虚假身份来尝试操纵P2P网络。对于观察者来说,这些不同的身份看起来像个人用户,但在幕后,单个实体一次控制所有这些假实体。特别是当您考虑在线投票时,这种类型的攻击非常重要。我们看到Sybil攻击的另一个领域是社交网络,过多假账户可以引导公众的讨论。

Sybil攻击的另一个可能用途是审查某些参与者。许多Sybil节点可以围绕您的节点,并阻止它连接到网络上的其他诚实节点。这样可以防止您向网络发送或接收信息。

缓解Sybil攻击的一种方法是引入或提高创建身份的成本。这个成本必须仔细平衡。它必须足够低,以便不限制新参与者加入网络并创建合法身份。它同时也必须足够高,以至于在短时间内创建大量身份变得非常困难。在PoW区块链中,实际对交易打包的节点是挖矿节点。有一个现实世界的成本,即购买矿机的成本,与创建虚假的“采矿标识”相关联。另外,拥有大量挖掘节点仍然不足以对网络产生巨大影响。要产生大影响,你还需要大量的算力。换句话说,您需要大型计算机集群。相关的成本使Sybil难以对工作证明区块链发起攻击。

我们已将高级篇中的有一整篇文章,是专门用于Sybil攻击以及如何降低它们发生的风险。现在,让我们继续讨论我们想要介绍的最后一种类型的攻击。

51%的攻击力


对公共PoW区块链的最着名的攻击类型是51%的攻击。51%攻击的目标是执行双重花费,这意味着将硬币同时花出去两次。要对区块链网络执行51%的攻击,您需要控制网络的大部分哈希率或计算能力,正如名字一样,需要控制51%的算力才能发起攻击。

想要执行双花攻击的恶意矿工,他首先创建一个常规交易,再将其硬币存到交易所,再换成好币或其它货币。这发生在下面的#40区块中。与此同时,他们将开始私下挖出一条私链。这意味着他们将遵循通常的挖掘协议,但有两个例外。

首先,他们不会将自己的交易打包在自己的私人开采的链中。其次,他们不会将他们找到的块广播到网络,因此我们将其称为私有链。

如果他们控制大部分算力,他们的链条平均出块速度将比诚实链条快。PoW区块链中的最长链规则,也称为中本聪共识,用于在这种情况下发生的情况。具有更多区块的分支链,被认为是有效链。

一旦攻击者收到用他们的硬币购买的货币或其他货币,他们就会将私链广播到整个网络。所有诚实的矿工将放弃诚实的链条,并开始挖掘恶意链。攻击者的交易视为从未发生过,因为攻击者未将其包含在恶意链中。攻击者仍在控制他们的资金,现在可以再次使用它们。



51攻击原理过去,许多较小的区块链发生了这种情况。事实上,Horizen在2018年6月初遭受了51%的攻击。我们立即开始研究解决方案,以防止区块链被51%攻击,因为这些区块链没有像比特币区块链那么多的计算能力。


我们想出了一个解决延迟块提交区块的解决方案。矿工没有合理的理由同时向网络广播几个区块。我们的保护机制使这些攻击非常昂贵。如此昂贵,以至于对我们的网络进行这样的双花攻击没有任何经济意义。许多其他区块链现在正在寻求使用其协议实现类似的保护机制。您可以在官网找到我们防止双花攻击的白皮书。


总结


区块链解决了拜占庭将军在交易中,不能达成共识的问题。区块链可以通过不同方式受到攻击。随着更多的计算能力被添加到网络并且它变得更加健壮,随着时间的推移执行这些攻击变得更加困难。在DDOS攻击中,犯罪者希望通过向网络发送大量事务,或垃圾邮件来减慢或停止网络。在Sybil攻击中,恶意行为者控制许多假身份,并试图干涉在线选举或操纵P2P网络中的通信。在51%的攻击中,控制网络上大部分计算能力的矿工试图通过首先编写区块链的私有版本来花两次硬币,然后立即将所有区块广播给诚实的矿工。

除了51%攻击外,本文中介绍的攻击情形不是区块链的特有情况,并且自分布式对等网络开始以来一直存在。有许多措施可以降低不同攻击情形的风险。我们将在高级篇仔细研究它们。我们希望上一篇文章不会让您对区块链安全性留下错误的印象。区块链技术是高度安全的,但与数字领域的其他任何东西一样,没有无敌的协议。



区块链一直以不可篡改、分布式、永久可查验等特点得到人们的青睐,这些特点使区块链听起来非常安全,甚至像是个万无一失的技术。但实际上,针对区块链的攻击一直都存在,且每次发生,往往会造成巨大的损失。

对于区块链的开发者和使用者来说,了解这些攻击的原理是至关重要的。预防胜于治疗,切莫“头痛医头,脚痛医脚”。

基于对等网络(P2P)的攻击

1、日蚀攻击- 一个节点将选择“x”个节点作为访问区块链的基础,该节点从这“x”个节点获取区块链的数据。

如果攻击者可以使得此节点选择的“x”个节点都为攻击者可控制的节点,就可以使得被攻击节点处在一个“孤立”的状态。被攻击节点将从主网中被隔离出来,完全由攻击者控制。

如下图所示:


2、女巫攻击- 这里的“女巫”并不是指拥有魔法的女人,而是出自一部美国电影《Sybil》,剧中的主人公拥有16重人格,扮演着16个不同的角色。而女巫攻击就是指同一节点伪装成不同节点发起的一种攻击。

攻击者通过伪造的身份,使少量节点伪装成大量节点,进而影响整个网络。攻击者可能利用女巫攻击进行双花、实现51%攻击等,并且要实施日蚀攻击,一般都会先进行女巫攻击。


3、异形攻击-异形攻击又称为“地址污染”。

当不同公链使用兼容的握手协议时,我们称这些公链为同类链。攻击者将同类链的节点数据加入被攻击的公链节点中,当被攻击的公链节点进行通信并互换地址池时,就会污染其他正常节点的地址池,并持续污染整个公链网络,导致公链通信性能下降,最终造成节点阻塞等现象。

很多借鉴以太坊开发的区块链系统,与以太坊使用了相同的通讯算法,它们都属于以太坊的同类链。

基于共识和挖矿的攻击

1、自私挖矿 – 区块链的共识机制决定着节点会认同最长链才是真实有效的。攻击者可以在当前最新区块上持续挖矿但不进行广播,从而隐藏自己挖出的区块。

当攻击者节点隐藏的区块长于已在链上的公布的最长区块时再进行广播,从而成为最长链,使得原先的最长链进行回滚,从而实现双花等攻击。

同时,进行自私挖矿的节点可以比其他诚实节点获得更大的利益。假设在区块1的基础上继续的挖矿,自私节点挖出“2’”和“3’”,但其并不对外广播这两个区块,并继续在“3’”的基础上继续挖矿,而当其他节点挖出了“2”时,其也对外广播“2’”,使得链上产生分叉,如此继续,当自私节点挖出较长的链并进行广播时,其可以获得“2’”到最新区块的所有挖矿奖励。

如下图所示:


2、挖矿木马 – 攻击者通过上传恶意程序到公开网络或者制作蠕虫病毒等方式将挖矿程序传播到他人计算机上。

利用他人计算机资源和电力进行挖矿,获取挖矿利益。被攻击的计算机会消耗大量的资源,导致电脑卡顿,使用寿命减短。


3、51%算力攻击 – 51%算力攻击是区块链最著名的攻击方式之一。

在一个POW共识的区块链网络中,算力即是权力。当超过50%的算力都由一人控制时,此人就可以任意的撤销和阻止交易,进而实现双花。

这种攻击在大型网络中较难实现,在小型网络中发生的可能性更高。在POS共识中与之类似的有币龄累计攻击和长距离攻击。

4、时间劫持攻击 – 一个节点是通过其他节点时间的中位值来确定时间的。

如果攻击者将一个恶意的节点列表置入被攻击节点的对等节点列表中,就可以控制此节点的时间,例如通过日蚀攻击。

被攻击的节点将不会接收来自正常网络的出块。由于这些交易无法提交到实际的区块链网络,攻击者便可以对此节点发起双花等攻击。

基于0确认的攻击

1、芬尼攻击 – 如果攻击者可以隐藏一个包含自己交易的区块,就可能实现一笔双花。

当一个交易所或其他机构接受0确认的交易时,攻击者可以向其进行转账,花费其隐藏区块中已经花费的资金,在新交易的区块广播前,将隐藏的区块广播。

因为所隐藏的区块时间更早,所以在后面进行的花费将被回滚,从而实现双花。

2、种族攻击 – 此类型攻击是“芬尼攻击”的分支,攻击者将同时进行两笔交易,花费同一笔资金,一笔转给支持0确认的商家进行提现;一笔转账给自己,并给予更高的gas。

节点会优先处理gas更高的交易,所以后一笔交易将不会被执行。通常攻击者会连入与被攻击商家较近的节点进行操作,使得商家优先收到最终不被执行的交易。

区块链中的漏洞导致的代价可能非常之高,尤其是公链,任何人都可以匿名的连入公链。

而区块链的不可更改性又使得攻击发生后更难以挽回损失,虽然可以通过硬分叉和软分叉进行修复,但显然这不是一个好的方法。因此在实际上线前做好安全审计和是尤为重要的。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存