法律状态公告日
法律状态信息
法律状态
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,转第二步。
第十四步,结束。
机译: 识别能够确保匿名和防止Sybil攻击的表达式的方法,用于注册的方法,用于存储用户的识别信息的方法,以及用于验证用户的方法
机译: 1.用于测量原生水果的皮肤渗透性以快速确定其质量的设备,包括密封的丙烯腈盒,分为不同的距离,每端用于安装湿度控制溶液。相对而言,测量皮肤渗透性的方法。
机译: 用于内燃机的提升阀的力控制,具有实现快速切换的夹紧装置,从而基于凸轮轴相对于提升阀的角度调节,可以使打开和/或关闭挺杆的提升运动脱开。