基于仿真技术的以太坊网络探测方法、装置、设备及介质

文档序号:31854331发布日期:2022-10-19 02:14阅读:158来源:国知局
基于仿真技术的以太坊网络探测方法、装置、设备及介质

1.发明属于计算机网络安全技术领域,特别是涉及一种基于仿真技术的以太坊网络探测方法、装置、计算机设备及存储介质。


背景技术:

2.目前以太坊是区块链应用最广泛的智能合约平台。尽管针对以太坊共识算法和合约代码安全性分析的研究越来越多,但是针对以太坊的点对点网络特性的研究还没有得到充分的重视。有研究表明,使用工作量证明机制的区块链系统其安全性依赖于点对点网络的可靠性。
3.以太坊使用点对点网络来交流其区块链的状态,以太坊的网络旨在模拟基于kademlia dht的结构化图。由于以上不同,需要对以太坊点对点网络进行完整、全面的探测分析,找出其中可能存在的风险和隐患。
4.以太坊的点对点网络上主要运行了两个协议,分别是基于udp的节点发现协议和基于tcp的rlpx协议。
5.节点发现协议中,节点之间通过相互探测来发现网络中的其他节点。为了加入以太坊网络并开始进行区块同步,以太坊客户端会指定一组种子节点来发现其他的活跃节点并将它们的信息保存到对应的桶中。为了能够在节点间尽快地沟通节点记录,以太坊的node discovery protocol使用udp作为传输层协议。在该协议的v4版本中包括六种消息类型:ping、pong、findnode、neighbors、enrrequest、enrresponse,其中每两个之间互相作为应答数据包。ping和pong包用于判断远程节点是否存活, neighbors包每次返回16个同findnode包中节点距离最近的记录。运行节点发现协议并添加节点记录到节点数据库的过程,第一个rtt时间内本地发送findnode包并接收远程节点返回的neighbors包,将其中保存的16条节点记录保存至节点数据库;第二个rtt时间本地将向远程节点发送ping包尝试激活远程节点,收到返回pong包说明对方存活,此后对剩余节点循环往复不断执行上述操作。
6.以太坊网络中的所有节点都有各自独立的节点记录,每个节点记录通过节点id进行标识。节点id是一个使用16进制表示的512位的ecdsa公钥。目前有enode和enr两种形式的节点记录,enode为明文表示,enr是使用节点私钥签名并分别进行rlp 编码和base64编码后的结果。两个节点之间的距离被称为对数距离。以太坊使用的计算函数是对kademlia算法的修改,本地节点得知的所有节点记录会按照对数距离进行排序。计算对数距离的过程如下:(1)使用keccak256算法计算两个节点id哈希值。 (2)对两个哈希值取异或,然后对异或结果取对数。
7.节点发现完成后的下一个步骤就是同新发现的节点交换数据,rlpx协议就是用来在两个节点之间建立一个可以进行安全通讯的tcp连接。建立连接的过程可以被划分为两个步骤:加密握手和子协议握手。加密握手基于ecies构造接下来通信使用的对称加密密钥,子协议握手为通信双方沟通子协议名称和版本,选择合适的协议进行数据传输。通讯双
方首先向对方发送一条hello消息,其中包含了自身节点id、devp2p 协议版本、客户端名称、支持的应用层协议以及本地监听的端口号(默认30303)。
8.节点发现协议的规范指明每一次返回的相邻数据包将包括16条节点记录,这些节点记录在数据库中与发现节点发送的记录距离最近。此前的探测方法并没有考虑节点数据库中存储的历史节点记录,对每个节点的探测只有一次发现节点和相邻数据包往返,因此仅能获取相当有限的节点记录条目。


技术实现要素:

9.为了解决上述现有技术的不足,本发明提供了一种基于仿真技术的以太坊网络探测方法、装置、计算机设备和存储介质,该方法基于仿真技术创建启动节点后,利用原有节点发现协议的特点,通过利用节点发现协议的特点,对对等节点进行反复查询并聚合去重,节点数据库得到此前未被分析的节点相识关系,进而利用采集到的节点相识关系以及节点元数据对以太坊网络中节点的行为进行分析,发现的活跃节点数量比现有其他方法都多,表明本方法可以更加完整地展现以太坊网络的性质。
10.本发明的第一个目的在于提供一种基于仿真技术的以太坊网络探测方法。
11.本发明的第二个目的在于提供一种基于仿真技术的以太坊网络探测装置。
12.本发明的第三个目的在于提供一种计算机设备。
13.本发明的第四个目的在于提供一种存储介质。
14.本发明的第一个目的可以通过采取如下技术方案达到:
15.一种基于仿真技术的以太坊网络探测方法,所述方法包括:
16.采集数据,所述数据包括节点间相识关系和节点元数据;创建启动节点后,通过利用节点发现协议的特点,对对等节点进行反复查询并聚合去重,节点数据库得到此前未被分析的节点相识关系;
17.根据所述节点间相识关系和节点元数据,对以太坊网络中节点的行为进行分析。
18.进一步的,所述根据所述节点间相识关系和节点元数据,对以太坊网络中节点的行为进行分析,包括:
19.将所有节点间相识关系和节点元数据保存在本地数据库中,对本地数据库中的数据进行分表;
20.将表中的节点划分为活跃节点、关键节点、路由节点以及恶意节点;
21.统计各表中节点的类别;
22.根据统计结果,对以太坊网络中节点的行为进行分析。
23.进一步的,所述对本地数据库中的数据进行分表,即按照节点类型对本地数据库中的数据进行分表,包括活跃节点表、相识关系表以及关键节点表。
24.进一步的,所述根据统计结果,对以太坊网络中节点的行为进行分析,包括:
25.根据统计结果计算各类活跃节点在网络中所占的比重;
26.遍历相识关系表,找出全部活跃节点,采用pagerank算法分析表中的关键节点及其影响因子;针对恶意节点进行分析,对伪造行为的原理以及对网络的影响进行分析。
27.进一步的,所述活跃节点为当前存在于网络中正常运行区块链协议的节点,是区块链运行不可或缺的因素;
28.所述关键节点为活跃节点,并拥有优秀的网络条件和硬件资源,对新区块的出块和广播有着很大影响力;
29.所述路由节点为一类特殊的节点,不运行任何应用层协议,只进行节点记录的转发,对新节点快速加入区块链网络具有重要意义;
30.所述恶意节点不运行任何区块链协议,也没有与其他节点的相识关系,却大量广播伪造的节点记录或伪造节点身份让活跃节点与其进行连接的特殊节点。
31.进一步的,所述节点元数据包括节点记录序号、客户端版本及开发语言、操作系统类型以及支持的应用层协议,其中:
32.获取节点记录序号数据包括:
33.启动节点向远程节点模拟发送enr request packet,从接收到的enr response packet中解析出节点记录序号数据;
34.获取其余元数据包括:
35.启动节点与远程节点完成rlpx协议的ecies握手后,双方再进行协议握手,在协议握手阶段从对方的握手包中获取客户端版本及开发语言、操作系统类型以及支持的应用层协议;根据对以太坊客户端源码的分析,当远程节点返回错误信息“too manypeers”时将此节点视为连接超过50个节点,作为活跃节点。
36.进一步的,所述采集数据,通过探测器采集数据,包括仿真节点初始化和递归搜索,其中:
37.所述仿真节点初始化包括:
38.在初始状态下,基于仿真技术创建启动节点,并为启动节点指定一系列种子节点,启动节点对种子节点进行递归搜索直到没有新节点出现,即完成对整个以太坊网络的搜索;
39.所述递归搜索包括:
40.针对每个节点的查询过程包括:发送udp数据包在节点发现协议上获取节点相识的所有节点,再与其建立tcp连接并且通过模拟rlpx协议的握手过程来获取节点相应的元数据,从而获得需要采集的数据。
41.本发明的第二个目的可以通过采取如下技术方案达到:
42.一种基于仿真技术的以太坊网络探测装置,所述装置包括:
43.数据采集模块,用于采集数据,所述数据包括节点间相识关系和节点元数据;创建启动节点后,通过利用节点发现协议的特点,对对等节点进行反复查询并聚合去重,节点数据库得到此前未被分析的节点相识关系;
44.行为分析模块,用于根据所述节点间相识关系和节点元数据,对以太坊网络中节点的行为进行分析。
45.本发明的第三个目的可以通过采取如下技术方案达到:
46.一种计算机设备,包括处理器以及用于存储处理器可执行程序的存储器,所述处理器执行存储器存储的程序时,实现上述的以太坊网络探测方法。
47.本发明的第四个目的可以通过采取如下技术方案达到:
48.一种存储介质,存储有程序,所述程序被处理器执行时,实现上述的以太坊网络探测方法。
49.本发明相对于现有技术具有如下的有益效果:
50.1、本发明通过利用节点发现协议的特点,对对等节点进行反复查询并聚合去重,节点数据库中得到此前未被分析的节点相识关系;进而根据节点相识关系以及节点元数据对节点的行为进行分析,发现的活跃节点数量比现有其他方法都多,说明本方法可以更加完整的展现以太坊网络性质,即本方法在以太坊网络中具有更强的适用性。
51.2、本发明通过对路由节点的定义,对提高网络拓扑的建立效率具有举足轻重的作用,进而通过对关键节点行为的分析,发现底层点对点网络有着向中心化发展的趋势。
52.3、通过采用本发明提供的方法,发现了大量的节点记录伪造行为,有益于今后对以太坊网络的通信效率和网络安全问题工作进行定量分析。
附图说明
53.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
54.图1为本发明实施例1的基于仿真技术的以太坊网络探测方法的原理图。
55.图2为本发明实施例1的基于仿真技术的以太坊网络探测方法的流程图。
56.图3为本发明实施例1的仿真节点在网络中运行的示意图。
57.图4为本发明实施例2的基于仿真技术的以太坊网络探测装置的结构框图。
58.图5为本发明实施例3的计算机设备的结构框图。
具体实施方式
59.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。应当理解,描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
60.实施例1:
61.如图1、2所示,本实施例提供一种基于仿真技术的以太坊网络探测方法,该方法通过利用节点发现协议的特点,对对等节点进行反复查询并聚合去重,可以从节点数据库中得到此前未被分析的节点相识关系,进而利用采集到的节点相识关系以及节点元数据,可以对以太坊网络中节点的行为进行分析总结。
62.s101、通过探测器采集的数据包括节点间相识关系和节点元数据。
63.本实施例通过探测器采集的数据包括两种主要数据:节点间相识关系和节点元数据,其中:
64.(1)节点相识关系。
65.将每个节点本地数据库中存储的节点记录视作此节点的相识节点。节点发现协议的规范指明每一次返回的邻居数据包包括16条节点记录,这些节点记录在数据库中与发现节点发送的记录距离最近。此前的探测方法中没有考虑节点数据库中存储的历史节点记
录,对每个节点的探测只有一次发现节点和邻居数据包往返,因此仅能获取相当有限的节点记录条目。本发明采用反复查询,聚合后去重的方法获取对等节点保存的所有节点记录,将这种节点保存了另一个节点的节点记录的非对称关系称为节点相识关系,得到了此前未被分析的节点相识关系。
66.(2)节点元数据。
67.节点元数据包括节点记录序号、客户端版本及开发语言、操作系统类型以及支持的应用层协议。节点记录序号被称作seq,其数值可以从节点发现协议中获取。由于 geth和parity客户端针对ethereum node records标准的实现不同,geth客户端的seq 从0开始自增,而patiry客户端选择使用随机数作为初始值,因此可以将geth客户端的seq数值高低作为节点活跃度的衡量指标之一。rlpx协议完成加密握手过程后,需要继续执行协议握手,这一过程双方之间需要交换客户端名称以及支持的子协议,其余的数据可以在协议握手中获取。
68.获取节点元数据的过程包括以下步骤:
69.(2-1)获取节点记录序号。
70.启动节点向远程节点模拟发送enr request packet,从接收到的enr responsepacket中解析出节点记录序号(seq)数据。
71.(2-2)获取其余元数据。
72.启动节点与远程节点首先完成rlpx协议的ecies握手,下一步双方将进行协议握手,在这一阶段可以从对方的握手包中获取客户端版本、应用层协议等其他信息。根据对以太坊客户端源码的分析,当远程节点返回错误信息“too many peers”时将此节点视为连接超过50个节点,属于相当活跃的节点。
73.(3)通过探测器采集数据。
74.本实施例通过探测器采集的数据包括节点间相识关系和节点元数据,具体过程如下:
75.如图3所示,仿真节点在网络中的运行包括初始化和递归搜索两个步骤。探测器使用go语言在1.17版本下编译运行。为了提高数据存取效率,所有节点记录和相识关系保存在leveldb中,并通过前缀编码的方式模拟表结构来进行管理。探测器还提供了rpc接口来实时监控数据采集进度和当前发现的网络状态,其中:
76.(3-1)仿真节点初始化。
77.在初始状态下需要创建启动节点,该启动节点基于仿真技术虚拟化得出;此后为启动节点指定一系列种子节点,启动节点将对种子节点进行递归搜索直到没有新节点出现,即完成对整个以太坊网络的搜索。
78.(3-2)递归搜索。
79.针对每个节点的查询过程也分成两步,首先发送udp数据包在节点发现协议上获取此节点相识的所有节点,之后与其建立tcp连接并且通过模拟rlpx协议的握手过程来获取此节点相应的元数据。经过以上两个步骤就可以得到最终的实验数据集,即节点间相识关系和节点元数据。
80.s102、根据节点间相识关系和节点元数据,对以太坊节点的行为进行分析。
81.进一步的,步骤s102具体包括:
82.(1)数据分表。
83.在查询过程中为了提高数据存取效率,所有节点记录和相识关系保存在leveldb 本地数据库中,并通过前缀编码的方式模拟表结构来进行管理。
84.在对整个以太坊网络数据进行抓取结束后,使用python对数据库中的数据按照行为类型进行分表,包括活跃节点表、相识关系表以及关键节点表等。
85.本实施例提供的一个案例是从2021年12月2日到2022年3月2日,对以太坊网络进行了持续一个季度的监测,共采集33g共计2亿余条原始数据。探测器布置在服务器上(intel(r)xeon(r)gold 5220cpu@2.20ghz*72cpu,128g ram,2tb ssd),操作系统为linux 18.04。数据分析程序基于python 3.9版本,使用leveldb作为本地数据库对数据进行分类存储。
86.(2)节点定义。
87.为了便于分析和描述,依照网络中的典型行为将节点划分为四类:活跃节点、关键节点、路由节点以及恶意节点。其中:
88.(2-1)活跃节点。
89.活跃节点指当前存在于网络中可以正常运行区块链协议的节点,是区块链运行不可或缺的因素。若节点满足以下任意一个条件,则称之为活跃节点:
90.(a)该节点在rlpx协议握手阶段返回非错误元数据;
91.(b)可通过node discovery protocol v5获得非空enr记录;
92.(c)至少连接过其他节点一次(认识的节点超过一个)。
93.活跃节点代表以太坊网络中正常运行的节点,是所有点对点网络运行的根基,通过研究活跃节点可以得出以太坊网络的拓扑结构,从而了解以太坊自身能否安全稳定运行
94.(2-2)关键节点。
95.关键节点首先必须是活跃节点,并且拥有优秀的网络的条件和硬件资源,对新区块的出块和广播有着很大的影响力。通过对采集到的网络拓扑数据进行分析发现,底层网络有着向关键节点中心化发展的趋势。若节点满足以下所有条件,则称之为关键节点:
96.(a)运行最新版本客户端,表明此节点被积极维护;
97.(b)对等节点数量超过50,表明此节点对外活跃度很高;
98.(c)相识节点个数超过50000,表明此节点长期稳定运行。相识节点指本地节点在节点发现协议中发现的所有节点,保存在节点数据库中。
99.关键节点被精心维护,在区块链网络中占据核心地位。从出块情况看,它们占据了绝大多数算力,属于高价值节点,最容易成为攻击的目标。
100.(2-3)路由节点。
101.路由节点是一类特殊的节点,它们不运行任何应用层协议,只进行节点记录的转发,它们对新节点快速加入区块链网络具有重要意义。
102.(2-4)恶意节点。
103.恶意节点指不运行任何区块链协议,也没有与其他节点的相识关系,却大量广播伪造的节点记录或伪造节点身份让活跃节点与其进行连接的特殊节点。恶意节点会造成以太坊网络效率降低,并对特定节点的安全性造成重大影响。恶意节点的典型行为是伪造节点记录,这一主动进行的恶意行为进一步加剧了底层网络的混乱。恶意伪造节点记录是指
攻击者生成大量随机公钥封装成节点记录后向外广播。
104.本实施例提供的一个案例是经过一个季度的探测后,最终得到2578458条节点记录、124972682条相识关系。根据节点的典型行为将其划分成活跃节点、关键节点、路由节点、恶意节点四类。从数量上看,最终得到64559个活跃节点,其中包括关键节和2039个路由节点。活跃节点数量相比两年前翻了一番,说明以太坊网络规模在近两年快速扩张。同时通过采用本发明提供的方法,发现的活跃节点数量也比当前其余方法都多,说明本方法可以更加完整的展现以太坊网络性质。从节点性质上看,路由节点对提高网络拓扑的建立效率具有举足轻重的作用,关键节点对新区块出块和上链有主导作用,底层点对点网络有着向中心化发展的趋势。
105.恶意节点的典型行为是伪造节点记录,这一主动进行的恶意行为进一步加剧了底层网络的混乱。恶意伪造节点记录是指攻击者生成大量随机公钥封装成节点记录后向外广播。kademlia算法是造成恶意伪造节点记录行为的根本原因,攻击者只需要伪造大量不同公钥的节点记录并向外广播,就总会有距离相近的节点主动传递虚假记录到整个网络中。这一行为将迅速污染网络中大部分节点的节点数据库。攻击者还可以使用这种方法对任意节点发起日食攻击,因此所有关键节点都应该配置预防措施避免受到日食攻击。此外,不仅有恶意伪造的节点记录,还有许多关键节点为了提高网络权重,刻意生成不同的节点记录,诱导其余节点主动建立连接。这一行为明显不利于节点间的公平竞争,增强了网络的中心化。
106.针对当前以太坊网络中存在着普遍的节点记录伪造行为,目前全部记录中有近半数记录为随机伪造。导致这种伪造行为的根源在于以太坊节点发现协议使用的路由算法,区块链网络中各方为了自身利益,基于种种原因都有重复伪造记录的动机,这些动机将会产生的现象也与实际发现的数据相符。
107.(3)数据统计。
108.统计各表节点的所携带元数据并绘制统计图、ip地图以及热力图等,便于直观的观察分析。
109.(4)数据分析。
110.总结各类活跃节点在网络中所占的比重;遍历关系表,找出全部活跃节点,采用 pagerank算法分析节点表中的关键节点及其影响因子;针对恶意节点进行分析,揭示出以太坊网络中普遍存在的伪造节点记录行为,并对伪造行为的原理、目的以及对网络的影响进行分析,最后提出普通节点的应对方案。
111.本领域技术人员可以理解,实现上述实施例的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,相应的程序可以存储于计算机可读存储介质中。
112.应当注意,尽管在附图中以特定顺序描述了上述实施例的方法操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
113.实施例2:
114.如图4所示,本实施例提供了一种基于仿真技术的以太坊网络探测装置,该装置包括数据采集模块401和行为分析模块402,其中:
115.数据采集模块401,用于采集数据,所述数据包括节点间相识关系和节点元数据;创建启动节点后,通过利用节点发现协议的特点,对对等节点进行反复查询并聚合去重,节点数据库得到此前未被分析的节点相识关系;
116.行为分析模块402,用于根据所述节点间相识关系和节点元数据,对以太坊网络中节点的行为进行分析。
117.本实施例中各个模块的具体实现可以参见上述实施例1,在此不再一一赘述;需要说明的是,本实施例提供的装置仅以上述各功能模块的划分进行举例说明,在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
118.实施例3:
119.本实施例提供了一种计算机设备,该计算机设备可以为计算机,如图5所示,其通过系统总线501连接的处理器502、存储器、输入装置503、显示器504和网络接口 505,该处理器用于提供计算和控制能力,该存储器包括非易失性存储介质506和内存储器507,该非易失性存储介质506存储有操作系统、计算机程序和数据库,该内存储器507为非易失性存储介质中的操作系统和计算机程序的运行提供环境,处理器502 执行存储器存储的计算机程序时,实现上述实施例1的以太坊网络探测方法,如下:
120.采集数据,所述数据包括节点间相识关系和节点元数据;创建启动节点后,通过利用节点发现协议的特点,对对等节点进行反复查询并聚合去重,节点数据库得到此前未被分析的节点相识关系;
121.根据所述节点间相识关系和节点元数据,对以太坊网络中节点的行为进行分析。
122.实施例4:
123.本实施例提供了一种存储介质,该存储介质为计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时,实现上述实施例1的以太坊网络探测方法,如下:
124.采采集数据,所述数据包括节点间相识关系和节点元数据;创建启动节点后,通过利用节点发现协议的特点,对对等节点进行反复查询并聚合去重,节点数据库得到此前未被分析的节点相识关系;
125.根据所述节点间相识关系和节点元数据,对以太坊网络中节点的行为进行分析。
126.需要说明的是,本实施例的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器 (cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
127.综上所述,本发明通过采集全网节点本地数据库中存储的所有节点记录,获取更加完整全面的数据来对网络状态进行分析,并对发现的节点进行分类总结,将节点划分为活跃节点、关键节点、路由节点以及恶意节点,同时分析它们对网络的影响,并对伪造节点的恶意行为模式进行分析。
128.以上所述,仅为本发明专利较佳的实施例,但本发明专利的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明专利所公开的范围内,根据本发明专利的技术方案及其发明构思加以等同替换或改变,都属于本发明专利的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1