首页> 中国专利> 用于快速提升Sybil节点重要性的渗透方法

用于快速提升Sybil节点重要性的渗透方法

摘要

本发明公开了一种用于快速提升Sybil节点重要性的渗透方法,目的是提供一种快速提升Sybil节点在Kademlia网络中的入度和Sybil节点重要性的方法。技术方案是根据距离远近将被渗透节点分为多个编组,根据活跃程度对编组内节点进行排序,实现活跃节点优先和远距离节点优先;成为高活跃度节点的邻居,Sybil节点借助该高活跃度节点让更多其它节点访问到它,从而获得提高入度的更多机会;成为远距离节点的邻居,Sybil节点更频繁地被该远距离节点推荐给其它节点,从而获得提高入度的更多机会。整个渗透方法每隔一个渗透周期重新实施一次。采用本发明可以大大提升Sybil节点的入度,快速提高Sybil节点的重要性,且有效克服Kademlia网络动态性对Sybil节点重要性的影响。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-02-01

    授权

    授权

  • 2014-09-24

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20140618

    实质审查的生效

  • 2014-08-27

    公开

    公开

说明书

技术领域

本发明涉及Sybil节点的一种渗透方法,是一种快速提升Sybil节点在 Kademlia网络中重要性的方法。

背景技术

Sybil节点原指具有多重身份的单个实体节点,目前通常将网络中的虚假节 点都称为Sybil节点。对于Kademlia网络中的Sybil节点,其重要性主要体现为 能够成为多少节点的邻居节点,即该Sybil节点的入度大小。快速提高Sybil节 点的重要性,有助于利用Sybil节点更多、更高效地获知网络中大量节点的活动 情况,从而为快速发现和遏制网络中的恶意活动提供技术支撑。

Kademlia协议是一种典型的DHT(Distributed Hash Table,分布哈希表)协 议,广泛用于构建大规模、纯分布式P2P(Peer to Peer)网络,如电驴、BitTorrent 等。Kademlia给每个结点分配一个唯一、随机的标识,即nodeID,为每个对象 分配一个类似的标识,即objectID(又称为key)。这些ID通常使用SHA-1这种 单项散列函数来生成,ID之间的距离采用异或运算来度量。

在Kademlia网络中,每个对象都存储在nodeID最接近其objectID的K个节 点上。K一般取值为20。

每个Kademlia节点的路由表由L(L等于节点标识的比特位数)个链表组 成,每个链表称为一个“K-bucket”,用于记录网络中到自己的异或距离在区间 [2i,2i+1)(i为K-bucket的序号,0≤i<L)内的邻居节点的信息,每条信息以三 元组<IP地址,UDP端口号,nodeID>形式表示和存储。Kademlia协议规定, K-bucket长度以K为上限。每当Kademlia节点收到来自其他节点的消息,它就 根据该消息发送节点到自己的异或距离以及消息中的 <IP地址,UDP端口号,nodeID>信息来更新K-bucket中的记录,这称为捎带确 认(piggybacking)。L个K-bucket组成一个Kademlia节点的路由表,因此路由 表也称“K-buckets”。一个路由表中的L个K-bucket通过连续的序号i区分。

Kademlia协议由四个RPC(Remote Process Call,远程过程调用,是一种命 令)组成,其名称分别是PING,STORE,FIND_NODE,FIND_VALUE,它们 的工作如下所示:

PING:用来探测一个结点是否在线;

STORE:指示一个结点存储一个<key,value>对,以便于将来的数据获取。 key为对象散列值,即objectID,value为真正的数据对象(或其索引);

FIND_NODE:以ID为参数,FIND_NODE RPC的接收者以 <IP地址,UDP端口号,nodeID>的形式返回他所知的离目标ID最近的K个节 点;

FIND_VALUE:以key为参数,寻找key对应的value。

P2P网络爬虫是指用于获取P2P网络中各个节点信息及其拓扑结构的软件系 统。这种软件系统通过迭代地向P2P网络中的已知节点发送特定消息,获得新 的节点;再重复向新的节点发送特定消息,就可以获得整个网络的拓扑结构和各 个节点信息。P2P网络爬虫能够用于获取Kademlia网络的节点信息和拓扑结构。

目前尚未发现有针对P2P网络、旨在提高Sybil节点重要性的Sybil节点渗 透方法的其他公开研究成果。

发明内容

本发明要解决的技术问题在于:针对目前Sybil节点难以快速、充分地渗透 到Kademlia网络中、尽可能多地进入其他节点路由表,进而产生较大重要性的 问题,提出一种使Sybil节点高效渗透进入Kademlia网络的方法。该方法能够快 速提升Sybil节点在Kademlia网络中的入度,从而快速提升Sybil节点的重要性。

为解决上述技术问题,本发明的技术方案如下:

为了使Sybil节点能够在提升重要性的过程中克服Kademlia动态性带来的影 响,整个渗透方法每隔若干小时(如6小时)重新实施一次。每次实施称为一个 渗透周期,并用T记录当前为第几个渗透周期。为了快速高效地提升重要性,本 方法还根据距离远近将被渗透节点分为多个编组(用G表示组号),并根据活跃 程度对编组内节点进行排序,实现活跃节点优先和远距离节点优先。成为高活跃 度节点的邻居,Sybil节点就可以借助该高活跃度节点让更多其它节点访问到它, 从而获得提高入度的更多机会。成为远距离节点的邻居,Sybil节点就能够更频 繁地被该远距离节点推荐给其它节点,从而获得提高入度的更多机会。

具体技术方案为:

第一步,设置渗透周期计数值T=1,分组编号G=L,L为Kademlia网络 节点标识(即nodeID)的比特位数,初始时刻的活跃节点列表ActiveNodes(0)为 空(NULL),ActiveNodes(T)是第T个渗透周期时的活跃节点列表,列表中的元 素为活跃节点信息,项数为第T个渗透周期中的活跃节点数nT,每个表项包括 IP、UDPport、nodeID、active四个域,IP表示活跃节点的IP地址,UDPport指 活跃节点的UDP端口号,nodeID是活跃节点的节点标识,active表示活跃节点 的活跃程度值,会被动态更新。

第二步,利用P2P网络爬虫(如开源的Emule客户端程序、Nutch、Crawler4j 等)获取Kademlia网络第T个渗透周期活跃节点列表ActiveNodes(T)的 IP、UDPport、nodeID信息。

第三步,依次计算ActiveNodes(T)中各个活跃节点的active值,假设 ActiveNodes(T)中的任一表项q(0≤q≤nT-1)对应的IP、UDPport、nodeID 信息为IPq、UDPportq、nodeIDq,则具体计算方法如下:

3.1)令q=0;

3.2)对于ActiveNodes(T)中的表项q,若ActiveNodes(T-1)中含有表项 <IPq,UDPportq,nodeIDq,active_old>,则ActiveNodes(T)中的表项q为 <IPq,UDPportq,nodeIDq,active_old+1>;若ActiveNodes(T-1)中不含有这种表 项,即节点标识为nodeIDq的活跃节点是第一次出现在活跃节点列表中,则 ActiveNodes(T)中的表项q为<IPq,UDPportq,nodeIDq,1>;

3.3)q=q+1;

3.4)判断q是否等于nT,如果等于,则转第四步,否则,转3.2)。

第四步,将ActiveNodes(T)中nT个节点的nodeID值依次与Sybil节点的 nodeID值进行异或,得到nT个异或距离,并根据得到的异或距离值对 ActiveNodes(T)中的nT个表项进行编组,将异或距离在[2j,2j+1)范围内的节点编 为第j(0≤j≤L-1)组,则编组的数目为L(因为编组规则与Kademlia节点路由 表的K-bucket区分方法类似,所以编组的数目等于K-bucket的数目L),通过对 编组的遍历得出每组的节点数记为σT(0≤σT≤nT)。

第五步,对L个编组,按照active值降序重排每个组的σT个表项,得到L个 降序重排后的编组。

第六步,G=G-1。

第七步,从第G组的首节点开始,Sybil节点依次向该组所有节点发送PING 探测命令。根据Kademlia网络的捎带更新策略,被渗透节点收到PING命令后, 将Sybil节点的nodeID值与自身的nodeID值进行异或,并根据该异或值确定 Sybil节点的K-bucket,如果该K-bucket中有空位,就将Sybil节点作为邻居节 点保存在该K-bucket中,从而提高Sybil节点的入度。

第八步,如果G=0,执行第九步;否则,转第六步。

第九步,设置计时器为m小时。这是为了间歇m小时,m一般取6;

第十步,间歇5秒。

第十一步,判断是否收到退出指令:是,转第十四步;否则转第十二步。

第十二步,判断是否计时器结束:是,转第十三步;否,转第十步。

第十三步,T=T+1,转第二步。

第十四步,结束。

采用本发明可以达到以下技术效果:

通过第四、五和七步中的设置,优先对远距离节点和高活跃度节点进行渗透, 可以大大提高Sybil节点经由这些节点进入更多其它节点路由表的机会,从而可 以快速提升其入度。通过第九、十、十三步中的设置,周期性地进行渗透,能够 有效克服Kademlia网络动态性对Sybil节点重要性的影响,保证Sybil节点始终 能够有较高的入度。快速提高Sybil节点的重要性,有助于利用Sybil节点更多、 更高效地获知网络中大量节点的活动情况,从而为快速发现和遏制网络中的恶意 活动提供技术支撑。

附图说明

图1为本发明的总流程图。

具体实施方式

图1是本发明的总流程图:

第一步,设置渗透周期计数值T=1,分组编号G=L,初始时刻的活跃节点 列表ActiveNodes(0)为Null。

第二步,利用P2P网络爬虫获取Kademlia网络第T个渗透周期活跃节点列 表ActiveNodes(T)的IP、UDPport、nodeID信息。

第三步,依次计算ActiveNodes(T)中nT个活跃节点的active值,假设 ActiveNodes(T)中的任一表项q(0≤q≤nT-1)对应的IP、UDPport、nodeID 信息为IPq、UDPportq、nodeIDq

第四步,将ActiveNodes(T)中nT个节点的nodeID值依次与Sybil节点的 nodeID值进行异或,并根据得到的异或距离值对ActiveNodes(T)中的nT个表项 进行编组,将异或距离在[2j,2j+1)范围内的节点编为第j(0≤j≤L-1)组,则编组 的数目为L,通过对编组的遍历得出每组的节点数记为σT(0≤σT≤nT)。

第五步,对L个编组,按照active值降序重排每个组的σT个表项。

第六步,G=G-1。

第七步,从第G组的首节点开始,Sybil节点依次向该组所有节点发送PING 探测命令。根据Kademlia网络的捎带更新策略,在被渗透节点收到PING命令 后,如果根据它的nodeID值Sybil节点的nodeID值进行异或得到的距离确定的 被渗透节点的K-bucket中有空位,就将Sybil节点作为邻居节点保存在该 K-bucket中,从而提高Sybil节点的入度。

第八步,如果G=0,执行第九步;否则,转第六步。

第九步,设置计时器为m小时。这是为了间歇m小时,m一般取6;

第十步,间歇5秒。

第十一步,判断是否收到退出指令:是,转第十四步;否则转第十二步。

第十二步,判断是否计时器结束:是,转第十三步;否,转第十步。

第十三步,T=T+1,转第二步。

第十四步,结束。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号