面向以太坊的活动网络拓扑感知方法

文档序号:32443170发布日期:2022-12-06 22:57阅读:46来源:国知局
面向以太坊的活动网络拓扑感知方法

1.本发明属于网络空间安全技术领域,具体为一种面向以太坊的活动网络拓扑感知方法。


背景技术:

2.作为对等节点通信的基础,以太坊网络层因其在相关参与者之间的通信中扮演的关键角色而受到广泛的关注。非结构化的对等网络在拓扑结构上存在拓扑失配的问题,逻辑链路与物理链路之间的不匹配导致网络中低下的数据传输效率。以太坊的开发者通过含蓄地隐藏网络拓扑结构的方式来实现维护以太坊安全的目的,任何接入以太坊的节点都可以从网络中获得其他节点的信息,但是节点间的连接是隐藏的。尽管隐藏以太坊的网络拓扑提高了攻击的难度,但是通过侧信道攻击等技术来推断网络连接可以跨越这个限制,可见拓扑混淆并非一个有效的防御策略。鉴于对维护以太坊网络安全的需求,实现以太坊网络拓扑的感知具有极其重要的意义。现有的以太坊网络拓扑感知方法以感知节点的静态路由表为主,并通过静态路由表绘制以太坊的网络拓扑。但是,以太坊节点之间的连接具有迟滞性,断开连接的节点并不会立刻从邻居节点的路由表中清除,从而导致所感知的拓扑结构精确度和时效性较低。除此之外,传统以太坊网络拓扑感知方法在感知过程会产生冗余流量,导致拓扑感知过程可控性差和效率低的问题。


技术实现要素:

3.本发明的目的在于提出一种面向以太坊的活动网络拓扑感知方法,以克服现有技术中节点路由表感知和节点间活动连接验证等问题,实现更加高效、更准确的以太坊的活动网络拓扑感知方案
4.实现本发明目的的技术方案为:一种面向以太坊的活动网络拓扑感知方法,包括以下步骤:
5.步骤1、节点路由表感知;感知节点基于目标节点的全局唯一标识符生成16个特定的target目标值以映射到目标节点的不同bucket中,并执行改进的以太坊节点发现协议,以轮询的形式对bucket进行请求,获得目标节点的潜在活动连接节点集合;
6.步骤2、活动连接数量推测;感知节点在网络中被动收集目标节点的消息转发记录,将目标节点转发的消息划分为本体消息和哈希消息两种类别,并在指定时间内统计两种消息类别的数量;
7.步骤3、隔离验证;根据以太坊内存池对事务替换策略的支持和未来事务的处理策略,感知节点通过向网络中依次传播指定价格的未来事务的方式,验证目标节点之间的活动连接;在目标节点的潜在活动连接集合和活动连接数量的限制下,通过对隔离验证方法的不断迭代,得到目标节点的活动连接节点集合;
8.步骤4、活动拓扑绘制;根据隔离验证得到的目标节点的活动连接节点集合进行网络拓扑绘制。
9.本发明与现有技术相比,其显著优点为:(1)基于改进的节点发现协议可以在可控请求次数内实现对目标节点的路由表感知,极大地减少了网络中的冗余流量的注入,具有高效、可控、便于调整等优势;(2)基于消息转发协议的节点活动连接数量的推测加速了隔离验证的过程,使得目标节点的活动连接节点集合能够快速收敛;(3)基于以太坊的内存池支持的事务策略,隔离验证的方法实现了节点间活动连接的可验证性,极大程度地提高了以太坊网络拓扑绘制的实时性和准确性;(4)本发明具有实施简单、高效率等优点,为每一个接入以太坊的用户可提供更加高效、更准确的以太坊的活动网络拓扑感知方案。
附图说明
10.图1是本发明的总体架构图。
11.图2是本发明的路由表感知工作流程图。
12.图3是本发明的隔离验证的示意图。
13.图4是数次迭代内感知节点对以太坊网络拓扑的感知趋势。
具体实施方式
14.本发明的一种面向以太坊的活动网络拓扑感知方法,包括以下步骤:
15.步骤1、节点路由表感知,感知节点根据改进的节点发现协议,向目标节点发起对等节点信息请求以感知其路由表数据。作为节点发现协议的一部分,以太坊的相邻节点存储机制通过kademlia dht为每个节点保留了17个bucket用于存储其对等节点,每个bucket中存储16个节点;针对感知节点向目标节点请求路由表,必须生成不同的target目标值向bucket映射。
16.步骤2、活动连接数量推测,感知节点从目标节点接收其消息转发记录,统计目标节点转发的消息本体数量和消息哈希数量,并根据统计数据进行计算,推测目标节点的活动连接数量。针对以太坊的消息转发机制,节点无论是选择消息本体还是消息哈希,对等节点的选择总是随机的,即使对于同一组邻居节点;针对目标节点的消息转发,首先记录一段时间内节点转发的消息本体和消息哈希的数量,根据消息转发的随机性,然后利用统计学原理可知短时间内感知节点收到的消息本体数量与消息哈希数量保持在一定的比例关系;在eth/66中,节点在消息转发过程中将消息本体转发给平方根个已连接节点,将消息哈希转发给其余节点。
17.设节点存在m个活动连接,其中msg
full
为消息本体数量,msg
hash
为消息哈希数量,即为:
[0018][0019]
之后求出节点活动连接数量m:
[0020][0021]
步骤3、隔离验证,以太坊的内存池支持事务替换和事务驱逐两种策略,已经存在于内存池中的事务可以被后续高价的事务替换或者驱逐,针对以太坊中未来事务的特性和
事务替换策略,设计未来事务的隔离验证方法来检查节点间是否存在活动连接;首先,感知节点m向目标节点a发送nonce值为h高价未来事务txa,然后向目标节点路由表中的潜在对等节点b发送nonce值为h的低价未来事务txb,最后向网络中的其他节点c发送nonce值为h的中价未来事务txc,通过感知节点m广播前置事务进行状态激活后,根据事务的替换策略,节点a的高价事务txa经过节点c到达节点b的路径被中价事务txc所隔离,若节点a的高价事务txa传播到节点b并替换低价事务txb,则证明节点a和节点b之间存在活动连接。在步骤2中所得目标节点的潜在活动连接节点集合和步骤3中目标节点活动连接数量推测的限制下,迭代隔离验证的方式以极快地速度收敛,得到目标节点的活动节点集合。
[0022]
步骤4、活动网络拓扑绘制,将从目标节点获得的新的对等节点纳入待感知节点集合中,通过不断迭代新的节点,得到以太坊的活动网络拓扑。针对以太坊的活动网络拓扑感知,首先对于单个节点感知其节点路由表,并在活动连接数量的限制下,不断对路由表中的对等节点进行迭代的隔离验证,最终得到单个节点的活动连接;通过向以太坊中发现的尚未请求的节点进行迭代感知,最后可以绘制出以太坊网络的活动网络拓扑。
[0023]
下面结合说明书附图和实施例对本发明作进一步描述。
[0024]
如图1所示,本发明实施例中的一种面向以太坊的活动网络拓扑感知方法,具体步骤为:
[0025]
步骤1、感知节点,对以太坊源码中节点发现协议和消息转发协议进行重构。首先在节点发现协议中,根据目标节点的全局唯一标识符计算生成16个target目标值映射的到目标节点的不同bucket中;其次在消息转发协议中,统计邻居节点转发的消息本体和消息哈希,将其数量记录到数据库中。重编译以太坊源码,生成以太坊账户、私钥和keystore,根据以太坊源码中提供的dns种子列表接入以太坊网络,将感知节点的对等节点纳入待感知节点集合。
[0026]
步骤2、节点路由表感知,作为节点发现协议的一部分,以太坊的相邻节点存储机制通过kademlia dht为每个节点保留了17个bucket用于存储其对等节点,每个bucket中存储16个节点;针对感知节点向目标节点请求路由表,必须根据目标节点的全局唯一标识符生成不同的target目标值向bucket映射。如图2所示,节点路由表感知的具体流程如下:
[0027]
(1)对于感知节点,通过握手协议检测目标节点的活跃性,向其发送ping数据包进行验证,若目标节点处于活跃状态则以pong数据包进行回应;
[0028]
(2)感知节点生成指定target目标值,发送findnode数据包请求靠近target目标值的bucket中的节点,目标节点以neighbor数据包进行回应;
[0029]
(3)计算生成16个不同的target目标值,向目标节点轮询请求尚未标中的bucket中的节点;
[0030]
(4)将所有请求所得对等节点汇聚、筛选、去重,所得对等节点集合即为目标节点的潜在活动连接。
[0031]
步骤3、活动连接数量推测,针对以太坊的消息转发机制,节点无论是选择消息本体还是消息哈希,对等节点的选择总是随机的,即使对于同一组邻居节点;针对目标节点的消息转发,首先记录一段时间内节点转发的消息本体和消息哈希的数量,根据消息转发的随机性,然后利用统计学原理可知短时间内感知节点收到的消息本体数量与消息哈希数量保持在一定的比例关系;在eth/66协议中,节点在消息转发过程中将消息本体转发给平方
根个已连接节点,将消息哈希转发给其余节点,根据消息转发协议中的特性和关系,计算出目标节点的活动连接数量。
[0032]
步骤4、隔离验证,以太坊节点的内存池存在事务替换和事务驱逐两种策略,以太坊节点的内存池中的事务可以被后续高价事务替换或者驱逐。当节点从其他节点接收到传播的新事务时,节点会对事务进行验证并决定是否接纳事务进入内存池,一旦节点选择接纳事务进入内存池,则可能触发事务替换或者事务驱逐。事务替换是指一个事务可以被来自同一个发送方账户且具有相同nonce值的高价事务所替换。事务驱逐则是指内存池中已经存在的事务可以被来自不同发送方或者不同nonce值的其它事务驱逐出内存池,一般发生于内存池溢出时,一个低价事务会被来自于不同发送方或者不同nonce值的另一个事务所驱逐;
[0033]
设感知节点为m,目标节点为a,潜在活动连接集合中的任一节点为b,以太坊的网络中其余节点为c,如图3所示,所述方法具体为:
[0034]
(1)针对目标节点及其路由表中对等节点信息和推断所得目标节点的活动连接数量,通过隔离验证的方式验证节点a到节点b之间是否存在活动连接;
[0035]
(2)节点m向节点a发送一个高价的未来事务txa,未来事务不会被直接广播,经过合法性验证后被放入内存池中的等待队列;
[0036]
(3)节点m向节点b发送一个低价的未来事务txb,未来事务不会被直接广播,经过合法性验证后被放入内存池中的等待队列;
[0037]
(4)节点m向节点c发送两个中价且连续的挂起事务tx
p
和txc,其中txa、txb和txc是由同一节点m发出的具有相同nonce值的事务,根据事务预设的价格,高价事务txa无法替换中价事务txc,中价事务txc无法替换低价事务txb,高价事务txa可以替换低价事务txb;tx
p
作为激活以上事务的前置事务;
[0038]
(6)节点c收到tx
p
和txc后将其广播,节点a收到节点c广播的tx
p
和txc后,tx
p
作为激活事务促使txa和txc发生事务替换,但由于未达到替换所需价格门槛而替换失败,节点a内存池中驻留事务仍为txa。
[0039]
(7)节点c收到tx
p
和txc后将其广播,节点b收到节点c广播的tx
p
和txc后,tx
p
作为激活事务促使txb和txc发生事务替换,但由于未达到替换所需价格门槛而替换失败,节点b内存池中驻留事务仍为txb。
[0040]
(8)当前节点a内存池中驻留事务为txa,节点b内存池中驻留事务为txb,节点c内存中驻留事务为txc;感知节点m进行简单调整后,促使节点a中的事务txa对外传播,由于txa、txb和txc事务之间的替换关系,节点a内存池中的事务txa经由节点c到达节点b的路径均被中价事务txc所阻断,实现了路径隔离;一旦节点b中的低价事务txb被高价事务txa所替换,则说明节点a到节点b之间存在活动连接,否则节点a和节点b之间不存在活动连接。
[0041]
(9)在目标节点的活动连接数量的限制下对隔离验证方法通过不断迭代,最终得到目标节点的活动连接节点集合。
[0042]
步骤5、活动网络拓扑绘制,将从目标节点获得的新的对等节点纳入待感知节点集合中,通过不断迭代新的节点,得到以太坊的活动网络拓扑。针对以太坊的活动网络拓扑感知,首先对于单个节点感知其节点路由表,并在活动连接数量的限制下,不断对路由表中的对等节点进行迭代的隔离验证,最终得到单个节点的活动连接;通过向以太坊中发现的尚
未请求的节点进行迭代感知,最后可以绘制出以太坊的活动网络拓扑。如图4所示,经过数次迭代之后,本发明所提出的方法能够感知到网络中超过95%的节点。
[0043]
综上,本发明通过向以太坊网络中部署感知节点,通过改进以太坊网络规范协议中的节点发现协议实现目标节点的路由表感知;通过利用以太坊网络规范协议中的消息转发协议实现目标节点的活动连接数量的推测;最终根据以太坊内存池对未来事务的处理策略,通过事务隔离验证的方式对目标节点与其路由表中的对等节点之间是否存在活动连接进行验证。本发明具有实施简单、高效率等优点,可提供更加高效、更准确的以太坊的活动网络拓扑感知方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1