一种基于协议指纹的区块链节点主动发现方法技术

技术编号:27067749 阅读:34 留言:0更新日期:2021-01-15 14:49
本发明专利技术公开一种基于协议指纹的区块链节点主动发现方法,包括步骤一、选择扫描IP范围;步骤二、进行主机存活性检测;步骤三、选择协议指纹;步骤四、特定端口探测;步骤五、节点验证;本发明专利技术方法与基于种子节点关联的发现方法完全不同,不依赖于种子节点,主动对网络空间开展扫描探测,通过区块链应用特异性的协议指纹发现目标节点,覆盖范围广,可靠性高。

【技术实现步骤摘要】
一种基于协议指纹的区块链节点主动发现方法
本专利技术属于网络
,具体涉及一种基于协议指纹的区块链节点主动发现方法。
技术介绍
区块链是采用区块作为基本数据结构,基于分布式网络、密码算法、共识机制等技术的一种去中心化的新型网络应用。区块链系统采用分布式对等网络(P2P网络),网络节点及拓扑结构动态变化,对网络结构研究分析带来挑战。区块链网络中节点类型有:全节点、网络节点、钱包节点、矿工等,掌握这些节点的数量、分布及属性,对区块链系统的交易流向分析、网络性能分析、网络安全监管有着十分重要的意义。网络资源探测技术是通过协议分析、指纹构建、主动扫描等方法,对网络空间中的主机及设备进行探测,通过已知协议交互获取目标主机属性及状态。本专利对区块链网络节点的发现采用的是基于主动探测的方法。由于区块链系统底层是P2P网络,故现有的区块链节点发现方法主要是通过种子节点来发现关联服务节点。比如:比特币客户端内置了一些可靠的种子节点地址,通过访问这些种子节点可进一步获得dnsSeeds、httpSeeds和addrSeeds等文件,里边包含了大量的服务节点地址。再如:以太坊Geth客户端连接入网时,会访问内置的稳定节点地址,请求一定数量的服务节点地址,计算网络距离(Distance)后存储于自身K桶中(见图1)。更改客户端ID重新连接后,又可以获得新的地址,这样多次往复就可以获得很多节点地址。现有方法最大的缺点是无法发现节点全集。从理论上讲,如果测试客户端分布范围足够广,尝试次数足够多时,是可以获取全部服务节点地址的。然而,现实情况中,测试客户端的分布范围、尝试次数总是有限的,另外种子节点也总是倾向于连接网络距离(Distance)较近的节点,因此现有方法是无法获得全部服务节点地址的。比如:YuZhang等人使用Github开源程序bitcoin-seeder进行比特币网络节点爬取实验,采用多线程方式多次爬取,最终只能获得8000-9000个节点,而始终无法获取节点全集(大于10000个)。
技术实现思路
有鉴于此,本专利技术提供了一种基于协议指纹的区块链节点主动发现方法,能够基于协议指纹的区块链节点主动探测获得全部服务节点地址。实现本专利技术的技术方案如下:一种基于协议指纹的区块链节点主动发现方法,包括以下步骤:步骤一、根据探测任务需求选择IP地址进行扫描以探测区块链服务节点;步骤二、进行主机存活性检测;步骤三、构建区块链指纹库,针对不同类型的区块链应用,通过研究协议格式与通信机理,建立不同维度的指纹体系,将特异性的指纹数据记入指纹库中,根据待探测的区块链类型,从指纹库中选择相应的指纹数据;步骤四、对主机端口进行开放性探测,若所探测的端口开放,则进入步骤五;若未开放,则探测失败,返回步骤一重新选择扫描IP地址;步骤五、根据指纹库中的通信协议构造探测消息,向目标IP端口发送消息,若收到的返回消息格式正确且认证参数匹配,则节点验证成功;若未收到返回消息,或返回消息格式不正确,或认证参数不匹配,则节点验证失败,返回步骤一重新选择扫描IP地址。进一步地,所述指纹数据包含协议名称、端口号和认证参数。附图说明图1为以太坊K桶示意图。图2为本专利技术探测发现流程图。具体实施方式下面结合附图并举实施例,对本专利技术进行详细描述。本专利技术提供了一种基于协议指纹的区块链节点主动发现方法,本专利技术方法的实现步骤分为5步,分别是选择扫描IP范围、主机存活性检测、选择协议指纹、特定端口探测、节点验证如图2所示。步骤1、选择扫描IP范围IPv4地址由4个字节组成,因此理论上地址总量为232约为43亿个,选择的扫描IP范围直接决定任务的工作量。根据探测任务需求,可选择特定国家或特定网段内IP地址进行探测。如采用穷举方式,对IPv4全网地址进行逐一扫描,虽耗时较长,但可无遗漏地准确探测出全网区块链服务节点。步骤2、主机存活性检测目前,业界对主机存活检测已有较多成熟方法,如ARP探测、ICMP探测、TCP探测、UDP探测等,本专利对这一常规操作不做介绍。步骤3、选择协议指纹这一步骤是本专利的核心内容。经研究分析,每种区块链系统都有其独特的协议指纹,可用来识别服务节点设备。比如:比特币系统底层采用基于TCP的Bitcoin-Rpc协议,通过开放8333端口进行通信,在PING-PONG交互中以PING包中的4字节随机数作为认证参数。再如:以太坊底层采用基于UDP的discv4协议,通过开放30303端口进行通信,在PING-PONG交互中以PING包中的hash值作为认证参数。其它区块链系统也都具有一些诸如此类的独特协议指纹。基于此,我们可以构建区块链指纹库。针对不同类型的区块链应用,通过研究协议格式与通信机理,可以建立不同维度的指纹体系,如协议名称、端口号、认证参数等,将特异性的指纹数据记入指纹库中,在探测中备查。步骤2完成后,根据待探测的区块链类型,从指纹库中选择相应的指纹信息,进入步骤4。步骤4、特定端口探测特定端口是识别区块链服务节点的重要特征,比如比特币8333端口、以太坊30303端口。如果远端服务器开放了这些特殊端口,将成为重点验证目标。目前,业界对主机端口开放性探测已有较多成熟方法及工具,如UNIX系统中的nc命令,以及NMAP、ZMAP、ScanPort等成熟工具,这里不做更多讨论。若探测端口开放,则进入步骤5接点验证环节;若未开放,则探测失败,重新选择扫描IP地址。步骤5、节点验证完成步骤4后,需要对目标IP进行节点验证。根据指纹库中的通信协议构造探测消息,向目标IP特定端口发送消息,若收到的返回消息格式正确且认证参数匹配,则节点验证成功。若未收到返回消息,或返回消息格式不正确,或认证参数不匹配,则节点验证失败,重新选择扫描IP地址。有益效果:1、本专利技术方法与基于种子节点关联的发现方法完全不同,不依赖于种子节点,主动对网络空间开展扫描探测,通过区块链应用特异性的协议指纹发现目标节点,覆盖范围广,可靠性高。2、每种区块链系统都有其独特的协议指纹,可用来识别服务节点设备,因此可构建区块链指纹库,指纹类型通常有协议名称、端口号、认证参数等,基于指纹可实现对区块链服务节点的准确发现。3、本专利技术采用穷举方式对IPv4地址空间进行逐一探测,利用特异性的协议指纹发现服务节点,不遗漏任一IP,可实现对某种区块链应用全网服务节点的主动发现,较好地解决了传统方法对节点发现不全的问题,具有很强的实用性。4、本专利技术中除了利用协议指纹发现区块链服务节点外,还利用PING-PONG握手机制进行节点验证,探测结果的准确性、可靠性均很高。综上所述,以上仅为本专利技术的较佳实施例而已,并非用于限定本专利技术的保护范围。凡在本专利技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本专利技术的保护范围之内本文档来自技高网
...

【技术保护点】
1.一种基于协议指纹的区块链节点主动发现方法,其特征在于,包括以下步骤:/n步骤一、根据探测任务需求选择IP地址进行扫描以探测区块链服务节点;/n步骤二、进行主机存活性检测;/n步骤三、构建区块链指纹库,针对不同类型的区块链应用,通过研究协议格式与通信机理,建立不同维度的指纹体系,将特异性的指纹数据记入指纹库中,根据待探测的区块链类型,从指纹库中选择相应的指纹数据;/n步骤四、对主机端口进行开放性探测,若所探测的端口开放,则进入步骤五;若未开放,则探测失败,返回步骤一重新选择扫描IP地址;/n步骤五、根据指纹库中的通信协议构造探测消息,向目标IP端口发送消息,若收到的返回消息格式正确且认证参数匹配,则节点验证成功;若未收到返回消息,或返回消息格式不正确,或认证参数不匹配,则节点验证失败,返回步骤一重新选择扫描IP地址。/n

【技术特征摘要】
1.一种基于协议指纹的区块链节点主动发现方法,其特征在于,包括以下步骤:
步骤一、根据探测任务需求选择IP地址进行扫描以探测区块链服务节点;
步骤二、进行主机存活性检测;
步骤三、构建区块链指纹库,针对不同类型的区块链应用,通过研究协议格式与通信机理,建立不同维度的指纹体系,将特异性的指纹数据记入指纹库中,根据待探测的区块链类型,从指纹库中选择相应的指纹数据;
步骤四、对主机端口进行开放性探测,若所探测的端口开放,则进...

【专利技术属性】
技术研发人员:李锐光沈蒙段鹏宇纪玉春祝烈煌严寒冰朱佳伟于灏刘铭崔佳
申请(专利权)人:国家计算机网络与信息安全管理中心北京理工大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1