面向区块链中以太坊节点女巫攻击的检测系统及检测方法

文档序号:29802476发布日期:2022-04-23 20:37阅读:469来源:国知局
面向区块链中以太坊节点女巫攻击的检测系统及检测方法

1.本发明属于区块链领域,涉及以太坊的网络安全,特别涉及面向区块链中以太坊节点女巫(sybil)攻击的检测系统及检测方法。


背景技术:

2.区块链技术是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。但随着越来越多的区块链技术应用到行业之中,区块链领域本身的安全漏洞和攻击威胁逐渐暴露出来。
3.攻击者可以利用基于自动做市商(amm)的预言机在基于以太坊的去中心化自治数字银行平台上进行了一系列恶意借贷操作,从而给数字银行平台造成损失。目前应用的众多以太坊技术同样存在着许多不可忽视的安全威胁,比如:在区块链中,由于没有中心化实体对网络上的新用户进行审核,sybil(女巫)攻击者可以创建多个用户。一旦创建了足够多的虚假身份,他们就可以以多数票击败网络上真实的节点,可以拒绝接收或者传输区块,从而有效的防止其它用户进入网络。在大规模中女巫攻击中,可以轻易更改交易的顺序,防止交易被确认,甚至可以逆转交易,导致产生双重支付等问题。从而并破坏区块链系统中数据的一致性和完整性,使得数据的真实性无法验证,数据传输记录无法真实追溯,损害了用户的利益。
4.尽管目前开展了一些关于以太坊安全的研究,但是这些研究主要侧重于数据完整性、共识机制、用户隐私保护和可扩展性等方面。对于以太坊网络层的安全威胁,尤其是针对sybil攻击,仍然缺乏有效的检测研究,也无法检测出以太坊诚实节点是否正在遭受sybil攻击。


技术实现要素:

5.本发明的目的是提出面向区块链中以太坊节点女巫攻击的检测系统及检测方法,从以太坊系统架构和实现技术原理出发,研究以太坊网络层的安全性,并针对以太坊系统中存在的上述sybil攻击的安全漏洞进行分析实施,从而了解以太坊安全漏洞的原理,挖掘出面向以太坊节点sybil攻击方式,进而研究针对上述安全漏洞的检测和防御措施,并通过计算出以太坊节点的总困难度,结合女巫攻击节点的id特性和ip特性,从而检测出发生女巫攻击的id信息和ip地址,并通过有效的机制阻断对应女巫攻击节点的通信。
6.在本发明的第一方面,本发明提供了一种面向区块链中以太坊节点女巫攻击的检测方法,所述方法包括:
7.获取以太坊诚实节点的ip地址、端口信息、总困难度和id信息;
8.根据以太坊诚实节点的ip地址、端口信息,通过椭圆曲线算法计算出可能的攻击节点的id信息;
9.根据诚实节点的ip地址和端口信息,构建出json-rpc接口请求,并根据该接口请求检测出诚实节点是否有新增连接数;
10.若有新增连接数,则继续检测诚实节点的各个传入节点的当前区块总困难度td,并判断出所述传入节点是否为疑似恶意节点;
11.若疑似恶意节点的id信息与可能的攻击节点的id信息一致,则直接判断该疑似恶意节点为女巫攻击节点且该疑似恶意节点对应的ip地址为女巫攻击节点的ip地址;
12.若疑似恶意节点的id信息与可能的攻击节点的id信息不一致,则检测疑似恶意节点的ip地址与其节点id信息的对应关系,如果多个疑似恶意节点的id信息对应一个ip地址,则判断这些疑似恶意节点的id信息为女巫攻击伪造的节点身份,且该ip地址为女巫攻击节点的ip地址。
13.在本发明的第二方面,本发明还提供了一种面向区块链中以太坊节点女巫攻击的检测系统,所述系统包括可视化模块和女巫攻击检测模块;所述可视化模块包括输入单元以及显示单元,所述女巫攻击检测模块包括计算单元、接口检测单元、区块解析单元、id检测单元、ip检测单元以及判决输出单元;
14.所述输入单元用于输入以太坊诚实节点的ip地址、端口信息、总困难度和id信息;
15.所述显示单元用于显示所述女巫攻击检测模块的实时检测结果;
16.所述计算单元用于根据以太坊诚实节点的ip地址、端口信息,通过椭圆曲线算法计算出可能的攻击节点的id信息;
17.所述接口检测单元用于根据诚实节点的ip地址和端口信息,构建出json-rpc接口请求,并根据该接口请求检测出诚实节点是否有新增连接数;
18.所述区块解析单元用于解析检测诚实节点的各个传入节点的当前区块总困难度td,并解析出作为疑似恶意节点的传入节点;
19.所述id检测单元用于检测疑似恶意节点的id信息与可能的攻击节点的id信息是否一致,并生成前置输入条件;
20.所述ip检测单元用于检测疑似恶意节点的ip地址与其节点id信息的对应关系,并生成前置输入条件;
21.所述判决输出单元用于响应于id检测单元或ip检测单元的前置输入条件,将id信息与可能的攻击节点的id信息一致的疑似恶意节点输出,以及用于将一个ip地址对应多个id信息的疑似恶意节点输出,并判断这些疑似恶意节点的id信息为女巫攻击伪造的节点身份,且该ip地址为女巫攻击节点的ip地址。
22.进一步的,所述女巫攻击检测模块还包括检测调度单元,所述检测调度单元用于调度所述女巫攻击检测模块中的其他单元,其中,当id检测单元生成的前置输入条件不满足判决输出单元设置的前置输入条件时,所述检测调度单元直接调度所述ip检测单元。
23.本发明的优点及有益效果如下:
24.本发明首先根据以太坊诚实节点的ip地址、端口信息以及id信息,采用代理ip通过椭圆曲线算法计算出可能的攻击节点,这种计算方式突破了诚实节点对ip数量的限制,能够模拟出更为真实的女巫攻击环境;本发明还基于诚实节点的区块总困难度和传入节点的区块总困难度的区别特性,来发现传入节点是否为疑似恶意节点;在后续的检测中,本发明可以直接将疑似恶意节点与上述模拟出的可能的攻击节点进行对比,如果属于本发明模拟出的可能的攻击节点,那么该疑似恶意节点就是本发明检测出的女巫攻击节点;另一方面,如果无法通过模拟出的可能的攻击节点直接判断疑似恶意节点是否为女巫攻击节点,
本发明还结合了女巫攻击的特性,将疑似恶意节点的ip地址和id信息的对应关系进行分析,如果属于一个ip地址对应多个id信息的情况,那么该疑似恶意节点就是本发明检测出的女巫攻击节点。本发明利用以太坊节点的区块困难度特性进行女巫攻击节点的初筛,再结合女巫攻击节点的id特性,对女巫攻击节点进行二次筛选;同时为了保证二次筛选的准确性,本发明还在不满足二次筛选条件下,继续利用女巫攻击节点的ip地址-id信息的对应关系,来找出最终的女巫攻击节点;本发明不仅提供了以太坊节点的女巫攻击检测的方案,还进一步针对女巫攻击的特性,提升了女巫攻击检测的准确性效果,能够尽可能地及时发现女巫攻击节点,避免女巫攻击节点对诚实节点的侵害,提升了以太坊的网络层安全性。本发明能够实时的根据诚实节点的传入连接数目进行女巫攻击的检测,通过传入连接表象统计与分析得出以太坊节点受到女巫攻击的侵占程度,再由实际以太坊区块的困难度关系内在的确定女巫攻击节点,提高了女巫攻击检测的准确度。
附图说明
25.图1是本发明实施例中面向以太坊节点sybil攻击的检测系统整体架构图;
26.图2是本发明优选实施例中面向以太坊节点sybil攻击的检测系统整体架构图;图3是本发明实施例中面向以太坊节点sybil攻击的检测方法流程图;
27.图4是本发明的sybil攻击检测系统传入连接侵占流程图。
具体实施方式
28.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
29.本发明从以太坊网络层的安全性出发,发现女巫攻击节点可以对诚实节点的传入连接进行侵占以下简称传入连接攻击,具体的,在传入连接攻击中,女巫攻击节点可以在以太坊rlpx网络协议上使用迪菲-赫尔曼(ecdh)算法与诚实节点交换密钥生成临时共享密钥,利用共享秘钥完成攻击节点和诚实节点间的协议握手,确定各自采用的协议版本,实现对p2p消息的协议层的数据分发和处理,最终完成攻击节点对诚实节点传入连接的侵占。
30.基于本发明分析得到的女巫攻击方式,本发明提出了对应的女巫攻击检测系统和检测方法,用于检测出这些面向以太坊节点的sybil攻击,保证以太坊节点的安全性,减小了以太坊网络层的安全威胁。
31.图1是本发明实施例中面向以太坊节点sybil攻击的检测系统整体架构图,如图1所示,所述检测系统100包括可视化模块101和女巫攻击检测模块102;其中所述可视化模块101又分为输入单元1011以及显示单元1012;所述女巫攻击检测模块102包括计算单元1021、接口检测单元1022、区块解析单元1023、id检测单元1024、ip检测单元1025以及判决输出单元1026;
32.其中,所述可视化模块101可以直接通过其输入单元1011填写以太坊诚实节点的ip地址,端口信息以及id信息等,这里的输入单元1011可以是任何的输入设备(inputdevice),包括键盘,鼠标,光笔,手写输入板,游戏杆,语音输入装置等。所述可视化
模块101可以直接通过其显示单元1012显示出整个女巫攻击节点与诚实节点的实时通信详情,以及所述女巫攻击检测模块的实时检测结果。
33.所述女巫攻击检测模块102中的计算单元1021可以根据诚实节点的ip地址、端口信息以及id信息计算出可能的攻击节点,这些可能的攻击节点可以作为后续检测过程中的一个判断条件,用于提高女巫攻击检测的准确性和有效性,减小误判率,提升通信有效性。
34.一方面,对于传入连接过程,以太坊中每个节点都有一个密码学身份,而这个密码学身份是一个椭圆曲线secp256k1的密钥。这些节点用其公钥作为身份认证或节点id。节点在通信的过程中会验证节点id是否符合以太坊节点身份规则,不符合则会阻止连接的建立。所以在本发明实施例中,通过椭圆曲线算法生成符合以太坊节点规则的节点id,即采用代理ip通过椭圆曲线算法随机生成节点私钥和节点公钥,并将所述节点公钥直接作为传入连接通信过程中可能的伪造节点的id信息;而以太坊节点在新的peer连接时,会根据版本号、协议名字来适配对应的协议,在对应的协议中最终实现对p2p消息的协议层的数据分发和处理。为了确保这些可能的攻击节点能与诚实节点建立连接后进行协议的协商,攻击方还会在伪造女巫攻击节点身份时,同时为这些可能的攻击节点伪造了所支持的协议、协议版本号、监听端口、等信息。因此,这些可能的攻击节点的身份信息数据如表1所示。
35.表1以太坊节点身份数据
36.编号字段名字段说明1node_id每一个以太坊都有一个唯一的id用于识别2difficulty表示当前区块的难度3protocol定义两以太坊节点换数据的方法4version协议的版本号5listenport监听的端口6head创世区块的区块头
37.所述女巫攻击检测模块102中的接口检测单元1022可以根据诚实节点的ip地址和端口信息,构建出json-rpc接口请求,并根据该接口请求检测出诚实节点是否有新增连接数;接口检测单元1022利用以太坊公开的json-rpc中的net_peercount方法对诚实节点的传入连接数目进行统计,在诚实节点有新增连接数的前提下,才会调用区块解析单元1023、id检测单元1024、ip检测单元1025进行后续的检测。其中,以太坊json-rpc的参数说明如表2所示:
38.表2 json-rpc的请求数据参数
[0039][0040]
在上述传入连接建立的过程中,由于以太坊传入连接是建立在tcp协议之上的,所以女巫攻击节点会首先跟诚实节点进行底层的tcp三次握手。在完成tcp连接后,女巫攻击
节点使用诚实节点的公钥(也就是在可视化模块输入的诚实节点id)加密,发送自己的公钥和包含临时公钥的签名,还有一个随机值nonce。诚实节点收到数据,获得女巫攻击节点的公钥,使用迪菲-赫尔曼从签名中获得女巫攻击节点的临时公钥;诚实节点将自己的临时公钥和随机值nonce用女巫攻击节点的公钥加密发送。并利用迪菲-赫尔曼算法从自己的临时私钥和女巫攻击节点的临时公钥计算出共享密钥。女巫攻击节点获取到诚实节点的临时公钥和nonce,利用迪菲-赫尔曼算法从自己的临时私钥和诚实节点的临时公钥计算出共享密钥,共享密钥用来加密之后的通信过程,并利用nonce用来验证之后诚实节点发来的信息是否篡改。之后的所有通信都将采用共享秘钥加密的方式发送。密钥交换完成后,女巫攻击节点发送自己支持的协议、节点名称、节点版本,等待诚实节点进行验证。诚实节点会对收到的协议请求进行判断,如果协议版本不符合则断开。反之诚实节点分配相应资源并将自己的协议,版本号等信息发送给女巫攻击节点。诚实节点向女巫攻击节点发起协议层握手请求,其中包含有:协议版本、网络号、区块头哈希、创世块哈希等值信息,进行协议区块数据,协议的交换判断。伪造节点收到诚实节点发起的协议层握手请求后,会根据诚实节点的协议版本分配资源,并将诚实节点的区块头哈希,创世块哈希值设定为自己的区块数据,确保诚实节点能够判断成功。为了避免应用层通信的过程中同步区块数据,女巫攻击节点将诚实节点当前区块的难度(difficulty)做适当自适应变化,避免之后的区块信息同步。在后续过程中,诚实节点与女巫攻击节点建立的以太坊通信,本次通信建立的协议是依靠上述过程中所确定的协议,比如eth,shh等协议。在协议上进行着包括以太坊交易的处理,区块的广播同步,ping-pong维持等通信。
[0041]
在上述通信过程中,诚实节点无法将女巫攻击节点与正常通信的以太坊节点进行区分,因此,本发明需要结合女巫攻击节点的区块总困难度,以及女巫攻击节点的ip地址特性和id信息特性,来检测出对应的女巫攻击节点。。
[0042]
所述女巫攻击检测模块102中的区块解析单元1023需要将当前区块的总困难度检测出来,这些总困难度信息能够反映女巫攻击节点与诚实节点之间的区别,通过这些区别才能调用id检测单元1024和ip检测单元1025进行后续的检测。
[0043]
其中,在区块链以太坊节点的通信过程中,以太坊节点之间具有数据同步模式,而女巫攻击节点为了躲避诚实节点拉取最新区块信息,会将其td值降低,是因为当女巫攻击节点(total difficulty,简称td)高于正常的诚实节点的td值时,此时诚实节点会向高td的女巫攻击节点请求同步数据,而女巫节点没有真实的区块数据,故在这种情况下,诚实节点可能直接检测出它为女巫攻击节点并直接断掉连接,所以在建立以太坊传入连接后女巫攻击节点会首先等待诚实节点发来的td,然后利用诚实节点的td减去预设阈值,使得恶意节点的td小于正常节点的td,从而建立正常的区块同步,交易处理流程,进而破坏对等网络的信誉系统。
[0044]
基于此,疑似恶意节点的td的构造过程就会首先通过等待诚实节点发来的td,将诚实节点的td减去预设阈值,使得疑似恶意节点的td小于诚实节点的td。所述预设阈值的计算公式表示为k≤k1+k2,其中,k表示预设阈值;k1表示诚实节点的当前区块与父区块之间的难度调整,k2表示诚实节点的当前区块与父区块之间的难度炸弹。
[0045]
这种方式下,本发明仅需利用区块解析单元1023解析出诚实节点在当前区块的td和传入节点在当前区块的td,若传入节点在当前区块的td小于诚实节点在当前区块的td,
且低于预设阈值,则判断传入节点所对应的当前区块为疑似恶意区块,且该传入节点为恶意疑似节点。
[0046]
但是,考虑到上述实施例的区块解析方式以及对应的判决方式太过武断,在实际的女巫攻击中,女巫攻击节点的td不可能设置为足够小,如果设置为足够小,当前诚实节点不愿意直接将所有区块信息同步给该节点,因为同步的过程会使用大量的通信资源;因此,本发明通过计算出诚实节点在当前区块的总困难度tdn和父区块的总困难度tdf的困难度差值td
n-f
;利用该困难度差值来找到更为合适的预设阈值k
*
,诚实节点检测出传入节点的区块总困难度tdi后,判断td
i-td
n-f
与预设阈值k
*
的关系,来判断当前传入节点是否为女巫攻击节点。0《td
i-td
n-f
《k
*
则可判断传入节点为女巫节点。若0=td
i-td
n-f
=k
*
则为正常节点。
[0047]
在一些优选实施例中,为了进一步优化判决方式,本实施例同样通过判断td
i-td
n-f
与预设阈值k
*
的关系,来判断当前传入节点是否为女巫攻击节点。当则可判断传入节点为女巫节点。若td
i-td
n-f
=k
*
则为正常节点。
[0048]
所述女巫攻击检测模块102中的id检测单元1024需要根据出区块解析单元1023的区块困难度结果所得出的疑似攻击节点进行id检测判断,若疑似恶意节点的id信息与可能的攻击节点的id信息一致,则直接判断该疑似恶意节点为女巫攻击节点,且该疑似恶意节点对应的ip地址为女巫攻击节点的ip地址;无论id检测单元1024的检测结果是否为女巫攻击节点,都需要生成前置输入条件,供判决输出单元1026进行判决输出。
[0049]
所述女巫攻击检测模块102中的ip检测单元1025需要将id检测单元1024无法检测出的疑似恶意节点进行ip检测判断,即在疑似恶意节点的id信息与可能的攻击节点的id信息不一致的前提下,继续检测疑似恶意节点的ip地址与其节点id信息的对应关系,如果多个疑似恶意节点的id信息对应一个ip地址,则判断这些疑似恶意节点的id信息为女巫攻击伪造的节点身份,且该ip地址为女巫攻击节点的ip地址;与id检测单元1024相同的是,无论是否检测出疑似恶意节点为女巫攻击节点,都需要生成前置输入条件,供判决输出单元1026进行判决输出。
[0050]
所述女巫攻击检测模块102中的判决输出单元1026在诚实节点有新增连接数时,且对于疑似恶意节点进行了传入连接通信时,检测出诚实节点正在遭受sybil攻击,所述判决输出单元1026需要在接口检测单元1022输出结果时,同时满足id检测单元1024或ip检测单元1025的输出结果时,即根据id检测单元1024或ip检测单元1025的前置判决条件,才能做出对应判决结果,这个判决结果包括疑似恶意节点的id信息为女巫攻击伪造的节点身份,且疑似恶意节点的ip地址为女巫攻击节点的ip地址,并可以通过所述可视化模块101的显示单元1012显示。通过显示单元1012的判决显示结果可以确定是否减少了诚实节点正常的传入连接数,是否阻碍诚实节点与外界通信,最大程度的拥有诚实节点的网络控制权,从而达到检测以太坊节点是否存在sybil攻击的可能性。
[0051]
其中,id检测单元1024的前置判断条件和ip检测单元1025的前置判断条件都可以以二元判断条件的形式输出,举个例子,当id检测单元1024的前置判断条件为1时,则表示当前疑似恶意节点为女巫攻击节点,否则不是女巫攻击节点;同理,当ip检测单元1024的前置判断条件为1时,则表示当前疑似恶意节点为女巫攻击节点,否则不是女巫攻击节点。
[0052]
可以理解的是,一般女巫攻击节点为了避免同步区块带来的验证影响,相对于诚
实节点的总困难度(total difficulty,简称td)而言,女巫攻击节点会将其节点困难度进行降低,绕过区块同步。所以,本发明可以通过解析诚实节点和传入节点的区块信息,得出传入节点的总困难度。如果区块解析单元1023得出与诚实节点的区块总困难度存在区别,则认为这些传入节点为疑似恶意节点,这些疑似恶意节点将会通过id检测单元1024和ip检测单元1025的检测,得出检测结果,并通过判决输出单元1026得出女巫攻击节点的id信息和ip地址。
[0053]
图2是本发明优选实施例中面向以太坊节点sybil攻击的检测系统整体架构图,如图2所示,所述检测系统200包括可视化模块201和女巫攻击检测模块202;其中所述可视化模块201又分为输入单元2011以及显示单元2012;所述女巫攻击检测模块202包括检测调度单元2020、计算单元2021、接口检测单元2022、区块解析单元2023、id检测单元2024、ip检测单元2025以及判决输出单元2026。
[0054]
与上述实施例不同的,本实施例新增了检测调度单元2020,所述检测调度单元2020用于调度所述女巫攻击检测模块202中的其他单元,
[0055]
举个例子,当id检测单元2024生成的前置输入条件不满足判决输出单元2026所设置的前置输入条件时,即无法触发判决输出单元2026,此时所述检测调度单元2020直接调度所述ip检测单元2025。
[0056]
图3是本发明实施例中一种面向以太坊节点女巫攻击的检测方法流程图,如图3所示,所述方法包括:
[0057]
301、获取以太坊诚实节点的ip地址、端口信息、总困难度和id信息;
[0058]
在本发明实施例中,以太坊中存在大量的诚实节点,本发明可以选择其中的一个或者一些诚实节点作为目标节点进行检测,在进行女巫攻击检测之前,需要确定好该以太坊诚实节点的ip地址、端口信息以及id信息,并检查填写的诚实节点的信息是否有参数错误,如果检查到参数错误,则重新填写这些信息,否则直接进入后续检测过程。
[0059]
在本发明实施例中,考虑到sybil攻击对于以太坊诚实节点而言是一种传入连接攻击;本发明需要对这些传入攻击节点进行可能的预测,因此需要结合女巫攻击节点的攻击特性,结合传入节点的区块困难度,以及传入节点的ip地址和id信息来检测出诚实节点是否遭受了女巫攻击。
[0060]
302、根据以太坊诚实节点的ip地址、端口信息,通过椭圆曲线算法计算出可能的攻击节点的id信息;
[0061]
在本发明实施例中,对于传入连接过程中的可能的攻击节点,本发明考虑到在以太坊中每个节点都有一个密码学身份,这个身份是一个椭圆曲线secp256k1的密钥。节点用其公钥作为身份认证或节点id。节点在通信的过程中会验证节点id是否符合以太坊节点身份规则,不符合则会阻止连接的建立。所以首先会采用代理ip通过椭圆曲线算法生成符合以太坊节点规则的节点id,在这个过程中,会利用椭圆曲线算法随机生成节点私钥和节点公钥,并将所述节点公钥直接作为传入连接通信过程中的可能的攻击节点的id信息,通过这种提前预测的方式,能够缩小攻击检测节点的范围,这样就能在一定程度上提升女巫攻击检测的实时性。
[0062]
303、根据目标节点的ip地址和端口信息,构建出json-rpc接口请求,并根据该接口请求检测出目标节点是否有新增连接数;
[0063]
在本发明实施例中,构造出包含net_peercount方法的json-rpc请求,来检测出诚实节点是否有新增连接数,在目标节点有新增连接数的前提下,才会调用id检测单元、ip检测单元进行后续的检测,若没有新增连接数,则表明诚实节点的网络层状态较为稳定,没有遭到sybil攻击。
[0064]
在对诚实节点的传入节点进行区块解析之前,还需要对诚实节点与传入节点的通信过程进行说明:
[0065]
在传入连接过程中,如图4所示,本实施例将以太坊诚实节点与女巫攻击节点的通信过程分为9个过程,其中这9个步骤分别如下:
[0066]
step1:tcp三次握手。由于以太坊的传入连接是建立在tcp协议之上的,所以女巫攻击节点会首先跟诚实节点进行底层的tcp三次握手。
[0067]
step2:女巫攻击节点发起密钥交换请求。在完成tcp连接后,女巫攻击节点使用诚实节点的公钥(也就是在可视化模块传入的诚实节点id)加密,发送自己的公钥和包含临时公钥的签名,还有一个随机值nonce。
[0068]
step3:诚实节点计算出共享密钥并回复请求。诚实节点收到数据,获得女巫攻击节点的公钥,使用迪菲-赫尔曼从签名中获得女巫攻击节点的临时公钥;诚实节点将自己的临时公钥和随机值nonce用女巫攻击节点的公钥加密发送。并利用迪菲-赫尔曼算法从自己的临时私钥和女巫攻击节点的临时公钥计算出共享密钥。
[0069]
step4:女巫攻击节点计算出共享密钥。女巫攻击节点获取到诚实节点的临时公钥和nonce,利用迪菲-赫尔曼算法从自己的临时私钥和诚实节点的临时公钥计算出共享密钥,共享密钥用来加密之后的通信过程,并利用nonce用来验证之后诚实节点发来的信息是否篡改。之后的所以通信都将采用共享秘钥加密的方式发送。
[0070]
step5:女巫攻击节点发起确定版本号,协议请求。密钥交换完成,女巫攻击节点发送自己支持的协议、节点名称、节点版本,等待诚实节点进行验证。
[0071]
step6:诚实节点验证请求信息并发送自己的版本号,协议请求。诚实节点会对收到的协议请求进行判断,如果协议版本不符合则断开。反之诚实节点分配相应资源并将自己的协议,版本号等信息发送给女巫攻击节点。
[0072]
step7:诚实节点发起协议层握手请求。诚实节点向女巫攻击节点发起协议层握手请求,其中包含有:协议版本、网络号、区块头哈希、创世块哈希等值信息,进行协议区块数据,协议的交换判断。
[0073]
step8:女巫攻击节点自适应改变区块数据。女巫攻击节点收到诚实节点发起的协议层握手请求后,会根据诚实节点的协议版本分配资源,并将诚实节点的区块头哈希,创世块哈希值设定为自己的区块数据,确保诚实节点能够判断成功。为了避免step9应用层通信的过程中同步区块数据,女巫攻击节点将诚实节点当前区块的总难度(total difficulty)做适当自适应变化,避免之后的区块信息同步。
[0074]
step9:应用层通信。到这一步才是诚实节点与女巫攻击节点建立的以太坊通信,本次通信建立的协议是依靠step8中所确定的协议,比如eth,shh等协议。在协议上进行着包括以太坊交易的处理,区块的广播同步,ping-pong维持等通信。
[0075]
304、若有新增连接数,则继续检测诚实节点的各个传入节点的当前区块总困难度td,并判断出所述传入节点是否为疑似恶意节点;
[0076]
在本发明实施例中,可以参考上述区块解析单元1023的解析过程,本实施例中,通过解析出诚实节点在当前区块的td和传入节点在当前区块的td,若传入节点在当前区块的td小于诚实节点在当前区块的td,且低于预设阈值,则判断传入节点所对应的当前区块为疑似恶意区块,且该传入节点为恶意疑似节点。
[0077]
同样的,考虑到上述实施例的区块解析方式以及对应的判决方式太过武断,在实际的女巫攻击中,女巫攻击节点的td不可能设置为足够小,如果设置为足够小,当前诚实节点不愿意直接将所有区块信息同步给该节点,因为同步的过程会使用大量的通信资源;因此,本发明通过计算出诚实节点在当前区块的总困难度tdn和父区块的总困难度tdf的困难度差值td
n-f
;利用该困难度差值来找到更为合适的预设阈值k
*
,诚实节点检测出传入节点的区块总困难度tdi后,判断td
i-td
n-f
与预设阈值k
*
的关系,当所述预设阈值。
[0078]
所述女巫攻击检测模块102中的id检测单元1024需要根据出区块解析单元1023的区块困难度结果所得出的疑似攻击节点进行id检测判断,若疑似恶意节点的id信息与可能的攻击节点的id信息一致,则直接判断该疑似恶意节点为女巫攻击节点,且该疑似恶意节点对应的ip地址为女巫攻击节点的ip地址;无论id检测单元1024的检测结果是否为女巫攻击节点,都需要生成前置输入条件,供判决输出单元1026进行判决输出。
[0079]
305、若疑似恶意节点的id信息与可能的攻击节点的id信息一致,则直接判断该疑似恶意节点为女巫攻击节点且该疑似恶意节点对应的ip地址为女巫攻击节点的ip地址;
[0080]
在本发明实施例中,若疑似恶意节点的id信息与可能的攻击节点的id信息一致,即疑似恶意节点的id信息属于本发明预先生成的可能的攻击节点的id信息集合,则直接判断该疑似恶意节点为女巫攻击节点,且该疑似恶意节点对应的ip地址为女巫攻击节点的ip地址。
[0081]
306、若疑似恶意节点的id信息与可能的攻击节点的id信息不一致,则检测疑似恶意节点的ip地址与其节点id信息的对应关系,如果多个疑似恶意节点的id信息对应1个ip地址,则判断这些疑似恶意节点的id信息为女巫攻击伪造的节点身份,且该ip地址为女巫攻击节点的ip地址。
[0082]
在本发明实施例中,若多个疑似恶意节点的id信息对应1个ip地址,则认为发生了女巫攻击,并利用了一个ip产生了大量不相同的id信息;那么这些疑似恶意节点的id信息即为女巫攻击伪造的节点身份,且该ip地址为女巫攻击节点的ip地址。
[0083]
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1