了解这种攻击手段,能有效减少黑客对区块链网络的骚扰!

2024-04-19 10:08

本文主要是介绍了解这种攻击手段,能有效减少黑客对区块链网络的骚扰!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

公开、透明、不可篡改,区块链技术自诞生以来仿佛就带着碾压一切互联网技术的光环,被看做未来极具潜力的一项技术,但是区块链技术同样也存在着不可忽视的安全隐患。比如,上次文章中提及的DDOS攻击就是对区块链网络的一大威胁。除此之外,今天要说的“女巫攻击”则是对区块链网络的另一大威胁。

什么是“女巫攻击”?

所谓“女巫攻击”,简而言之就是一个恶意节点伪装成多个节点进入P2P网络中,从而达到控制网络的目的。如果还不能理解“女巫攻击”的原理,那么请想像这样一个场景:某个网络论坛发起了一个选举投票,你利用自己的账号给你看好的人投了一票,但是因为你无法控制其他投票的人会选谁,所以最终结果是无法确定的。

于是,为了确保自己选的人能够成功当选,一般人会选择怎么做?没错,刷票!最简单的刷票方式就是自己去注册大量论坛账号,为自己看好的人去投票。这其实就是“女巫攻击”的原理,尽管每个账号显示的信息都不同,但背后对应的控制者都是同一个人,而这个实际控制者就是所谓的“女巫”。

“女巫攻击”这个名字来源于小说《女巫(Sybil)》改编的同名电影。电影讲述的是一个化名Sybil Dorsett的女人心理治疗的故事。她被诊断为分离性身份认同障碍,兼具16种人格,高度精分一枚。

如果区块链网络中也存在一个如此“高度精分”的恶意节点,那么同一个恶意节点可以通过伪造ID具有多重身份,就如电影里的女主角可以分裂出16个身份,其实真实的恶意节点远比电影女主角还能分。于是,原来需要备份到多个节点的数据被欺骗地备份到了同一个恶意节点(该恶意节点伪装成多重身份),这时候该恶意节点就会影响到整个网络,数量达到一定程度后甚至可以轻易控制网络,这就是区块链网络中的“女巫攻击”。

在区块链、加密货币领域中,女巫攻击为什么如此重要?因为有别于一般论坛上的带带风向,在区块链中,如果攻击者创建了足够数量的假身分,他可以用多数票压倒其他真实节点,进而控制区块,阻止其他用户进入网络。这时,如果他想要获取加密货币,便可以轻易地更改交易,或防止交易被确认,轻松实现“双花”。

特别是在中心化的联盟链当中,“女巫攻击”问题更为棘手。因为联盟链为了提高共识效率,将节点数减少在一定范围内。就相当于把共识机制变简单了,于是攻击也变得简单了。所以,“女巫攻击”便成了所有区块链项目研究中,最先要解决的问题。

如何防范“女巫攻击”?

既然“女巫攻击”的特点是利用一个节点伪造多重身份信息进入网络,那么只要提高节点入网的门槛,就能有效避免“女巫攻击”。

首先,提高节点入网门槛的有效方法之一就是身份验证。就好像乘坐火车、飞机需要检票一样,任何节点都需要进行身份验证后才能进入网络。身份验证又可以分为去中心化的验证和中心化的验证,其中去中心化验证是指当一个节点要进入网络时,需要网络当中已经存在较长时间或者信誉较高的多数节点进行共同验证,并达成共识。中心化的身份验证就是通过可靠的第三方节点对每一个新加入的节点进行身份验证,从而保证网络免受“女巫攻击”。

另一种防范“女巫攻击”的方法是提高恶意节点进行“女巫攻击”的成本。在区块链的世界里,这种解决方法通常通过各种“共识机制”来实现。常见的工作量证明(PoW)、股权证明(PoS)等共识机制,都是为了解决这样的问题而产生的。原理上,它是为了增加攻击的成本,让攻击行为变得无利可图。

举例来说,比特币使用的是工作量证明机制(PoW),也就是你必须去计算区块的加密哈希(HASH),解开谜题才能拥有产生区块的权力。如果想进行“女巫攻击”,去计算HASH(也就是挖矿)所花费的电力、设备等成本将会相当高昂。这就在一定程度上防止了“女巫攻击”。

此外,还可以通过一种叫做“特征向量”的方法来防范“女巫攻击”。所谓“特征向量”的方法就是限制具有某一特征的IP节点进入网络的数量。但是,这种方法很有可能造成误杀,因为并非来自同一个IP段的节点也可能是恶意节点。在P2P网络中,尽管可以通过这种特征向量来区分这个节点是不是伪造的节点,但是这种方式只能有效减少攻击,并不能完全避免攻击。所以可能还需要一种更加准确的方式去分析一个节点的行为,区分一个节点。

写在最后

一般“女巫攻击”都是以低成本获取高收益,而且通常会结合其他攻击手段同时进行。尽管以上的各种防御方法有一定效果,但近年来还是发生了很多次黑客成功发起攻击的例子,各类专家目前仍非常努力研究着各种机制,但目前还没有人设计出绝对完善的解决方案。

这篇关于了解这种攻击手段,能有效减少黑客对区块链网络的骚扰!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917240

相关文章

【Altium】查找PCB上未连接的网络

【更多软件使用问题请点击亿道电子官方网站】 1、文档目标: PCB设计后期检查中找出没有连接的网络 应用场景:PCB设计后期,需要检查是否所有网络都已连接布线。虽然未连接的网络会有飞线显示,但是由于布线后期整板布线密度较高,虚连,断连的网络用肉眼难以轻易发现。用DRC检查也可以找出未连接的网络,如果PCB中DRC问题较多,查找起来就不是很方便。使用PCB Filter面板来达成目的相比DRC

有效利用MRP能为中小企业带来什么?

在离散制造企业,主流的生产模式主要为面向订单生产和面向库存生产(又称为预测生产),在中小企业中,一般为面向订单生产,也有部分面向库存和面向订单混合的生产方式(以面向订单为主,面向库存为辅),主要是应对市场需求的波动,对生产稳定性造成影响。 制定资源计划至关重要,但很多中小企业目前依赖人工、Excel表格等传统方式做各种记录、统计分析。时常会遇到: 生产任务无法统筹安排, 采购不及时, 订单

通信系统网络架构_2.广域网网络架构

1.概述          通俗来讲,广域网是将分布于相比局域网络更广区域的计算机设备联接起来的网络。广域网由通信子网于资源子网组成。通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网构建,将分布在不同地区的局域网或计算机系统互连起来,实现资源子网的共享。 2.网络组成          广域网属于多级网络,通常由骨干网、分布网、接入网组成。在网络规模较小时,可仅由骨干网和接入网组成

Toolbar+DrawerLayout使用详情结合网络各大神

最近也想搞下toolbar+drawerlayout的使用。结合网络上各大神的杰作,我把大部分的内容效果都完成了遍。现在记录下各个功能效果的实现以及一些细节注意点。 这图弹出两个菜单内容都是仿QQ界面的选项。左边一个是drawerlayout的弹窗。右边是toolbar的popup弹窗。 开始实现步骤详情: 1.创建toolbar布局跟drawerlayout布局 <?xml vers

@ControllerAdvice:你可以没用过,但是不能不了解

1.概述 最近在梳理Spring MVC相关扩展点时发现了@ControllerAdvice这个注解,用于定义全局的异常处理、数据绑定、数据预处理等功能。通过使用 @ControllerAdvice,可以将一些与控制器相关的通用逻辑提取到单独的类中进行集中管理,从而减少代码重复,提升代码的可维护性。 定义如下 /*** Specialization of {@link Component @

使用 GoPhish 和 DigitalOcean 进行网络钓鱼

配置环境 数字海洋VPS 我创建的丢弃物被分配了一个 IP 地址68.183.113.176 让我们登录VPS并安装邮件传递代理: ssh root@68.183.113.176apt-get install postfix 后缀配置中的点变量到我们在 DigitalOcean 中分配的 IP:mynetworks nano /etc/postfix/main.cf

Linux网络编程之循环服务器

1.介绍 Linux网络循环服务器是指逐个处理客户端的连接,处理完一个连接后再处理下一个连接,是一个串行处理的方式,比较适合时间服务器,DHCP服务器.对于TCP服务器来说,主要阻塞在accept函数,等待客户端的连接。而对于UDP服务器来说,主要阻塞在recv函数. 2.循环服务器模型 TCP循环服务器: 算法如下:          socket(...);

Linux网络编程之简单并发服务器

1.概念 与前面介绍的循环服务器不同,并发服务器对服务请求并发处理。而循环服务器只能够一个一个的处理客户端的请求,显然效率很低. 并发服务器通过建立多个子进程来实现对请求的并发处理,但是由于不清楚请求客户端的数目,因此很难确定子进程的数目。因此可以动态增加子进程与事先分配的子进程相结合的方法来实现并发服务器。 2. 算法流程 (1)TCP简单并发服务器:     服务器子进程1:

Android 扇形网络控件 - 无网络视图(动画)

前言 一般在APP没有网络的情况下,我们都会用一个无网络的提示图标,在提示方面为了统一app的情况,我们一般使用简单的提示图标,偶尔只需要改变一下图标的颜色就一举两得,而不需要让PS来换一次颜色。当然app有图标特殊要求的就另当别论了。 效果图 当你第一眼看到这样的图,二话不说直接让UI给你切一张图标来的快对吧,我其实开始也是这么想的,但是到了做的app越来越多的时候,你就会发现就算是用

poj 2391 Ombrophobic Bovines (网络流)

这是一道很经典的网络流的题目。首先我们考虑假如我们的时间为无穷大。我们吧每个点拆成2个点 i和i' .。虚拟源点s和汇点t。对于每个点建边(s,i, a[i])  (i‘,t,ib[i]) 。 其中a[i]为给点有多少牛,b[i]为容量。i和j连通 建边 (i,j',inf);如果最大流==所有牛的个数,就可能装下所有的牛。那么现在我们考虑时间。假设最大时间为T.那么如果i到j的的最短时间>T