虫洞攻击定位方法

文档序号:7804234阅读:334来源:国知局
虫洞攻击定位方法
【专利摘要】本发明公开了一种虫洞攻击定位方法,应用于传感器网络中的汇聚节点,所述方法包括:获取所述汇聚节点接收到的数据包中的属性值;依据所述属性值,重构所述传感器网络的当前网络拓扑;将所述传感器网络的初始网络拓扑与所述当前网络拓扑进行比对,得到拓扑比对结果,所述初始网络拓扑为所述传感器网络在初始化完成时的网络拓扑;判断所述拓扑比对结果是否满足预设的网络拓扑变化规则,如果是,依据所述当前网络拓扑定位虫洞节点。可见本发明公开的方法完全不影响传感器网络的正常运行,不依赖于特别的事件或行为,探测过程持续发生在网络运行的整个过程,能有效抵抗主动敌手发起的虫洞攻击。
【专利说明】虫洞攻击定位方法
【技术领域】
[0001]本发明涉及网络安全【技术领域】,更具体地说,涉及一种虫洞攻击定位方法。
【背景技术】
[0002]传感器网络系统通常包括传感器节点、汇聚节点(sink node)和管理节点,大量传感器节点随机部署在监测区域内部或附近,以自组织方式构成传感器网络,传感器节点(源节点)监测的数据沿着其他传感器节点(中间节点)逐跳传输,在传输过程中监测数据可能被多个传感器节点(中间节点)处理,经过多跳后路由到汇聚节点。
[0003]传感器网络中的虫洞攻击是一种主要针对网络路由协议的恶意攻击,该攻击通过在两个恶意节点之间建立一条透明于网络中其他节点的私有信道,对无线传感器网络进行攻击。发起虫洞攻击的敌手中,主动敌手不但具备被动敌手吸引流量的能力,而且还可以根据网络的状态自适应调整攻击策略,有时甚至对数据包进行任意的篡改、伪造与丢弃,严重影响了无线传感器网络的数据传输过程,为此必须准确有效的定位出传感器网络中存在的虫洞攻击。
[0004]现有的虫洞攻击定位方法中,在汇聚节点上广播一个控制包,以获得全网每个节点的邻接表,基于邻接表分析网络拓扑变化,进而判断网络拓扑变化是否由虫洞攻击引起,最终定位虫洞。
[0005]发明人研究发现,上述方法中,在汇聚节点进行广播控制包的过程可被视作网络启动探测程序的标志性事件,主动敌手发起的虫洞攻击节点发现这个控制包之后就可以临时中断攻击以躲避网络的探测。也就是说,这种依赖于特别事件或行为的虫洞定位方法无法抵抗主动敌手发起的虫洞攻击。

【发明内容】

[0006]有鉴于此,本发明提供了 一种能有效抵抗主动敌手发起的虫洞攻击的方法及其装置。
[0007]提出的方案如下:一种虫洞攻击定位方法,应用于传感器网络中的汇聚节点,所述方法包括:
[0008]获取所述汇聚节点接收到的数据包中的属性值,所述属性值由其所经由的中间节点进行设置;
[0009]依据所述属性值,重构所述传感器网络的当前网络拓扑,所述当前网络拓扑中包括每个源节点至所述汇聚节点的路径;
[0010]将所述传感器网络的初始网络拓扑与所述当前网络拓扑进行比对,得到拓扑比对结果,所述初始网络拓扑为所述传感器网络在初始化完成时的网络拓扑;
[0011]判断所述拓扑比对结果是否满足预设的网络拓扑变化规则,如果是,依据所述当前网络拓扑定位虫洞节点。
[0012]上述方法,优选地,所述属性值由其所经由的中间节点通过以下步骤进行设置:[0013]当所述中间节点的信息列表中有与所述中间节点接收到的数据包所属源节点对应的记录,且所述记录中序列号与所述数据包的序列号属性值连续时:
[0014]将所述中间节点的ID值写入所述数据包的前跳节点ID属性值字段内,判断所述数据包的跳数属性值与所述记录中跳数是否相等,如果相等,将所述数据包的跳数属性值加1,将由密钥、前跳节点ID和序列号计算得到的消息认证码写入所述数据包的消息认证码属性值字段内,如果不相等,将所述数据包的跳数属性值改写为所述记录中的跳数,生成告警信息,将所述告警信息写入所述数据包的标记节点ID属性值字段内,将由密钥、前跳节点ID、序列号和跳数计算得到的消息认证码写入所述数据包的消息认证码属性值字段内;
[0015]当所述信息列表中有与所述数据包所属源节点对应的记录,且所述记录中序列号与所述数据包的序列号属性值不连续时:
[0016]将所述中间节点的ID值写入所述数据包的标记节点ID属性值字段内,将由密钥、标记节点ID、由前跳节点ID和序列号计算得到的消息认证码和跳数计算得到的消息认证码写入所述数据包的消息认证码属性值字段内;
[0017]当所述信息列表中没有与所述数据包所属源节点对应的记录时:
[0018]将所述中间节点的ID值写入所述数据包的标记节点ID属性值字段内,将由密钥、标记节点ID、由前跳节点ID和序列号计算得到的消息认证码和跳数计算得到的消息认证码写入所述数据包的消息认证码属性值字段内。
[0019]上述方法,优选地,所述属性值包括源节点ID、序列号、跳数、标记节点ID、前跳节点ID及消息认证码;
[0020]相应的,所述依据所述属性值,重构所述传感器网络的当前网络拓扑包括具体步骤:
[0021]当所述汇聚节点接收到的数据包的序列号与所述汇聚节点中记录的序列号之差等于I时,检查所述数据包的前跳节点ID是否和所述汇聚节点记录的路径中对应位置的节点ID相同,如果相同,则将所述数据包的标记节点ID写入所述路径中对应位置,清空所述路径中从所述位置到所述汇聚节点之间的所有节点;
[0022]当所述数据包的序列号与所述汇聚节点中记录的序列号之差大于I时,检查所述数据包的标记节点ID是否和所述汇聚节点记录的路径中对应位置的节点ID相同,如果不相同,清空所述路径中“跳数-所述数据包序列号与所述路径中序列号之差”之后的所有节点,将所述数据包的标记节点ID写入所述路径中对应位置。
[0023]上述方法,优选地,所述网络拓扑变化规则包括:网络拓扑中变化路径的比例大于或等于比例阈值,且路径平均缩短距离大于或等于距离阈值;
[0024]相应的,所述判断所述拓扑比对结果是否满足预设的网络拓扑变化规则,具体包括:
[0025]判断所述拓扑比对结果是否表明所述当前网络拓扑中相对于所述初始网络拓扑发生变化的路径的比例大于或等于比例阈值,且所述发生变化的路径的平均缩短距离大于或等于距离阈值。
[0026]上述方法,优选地,依据所述当前网络拓扑定位虫洞节点具体包括:
[0027]将所述当前网络拓扑中相对于所述初始网络拓扑发生变化的路径中距离所述汇聚节点最近且发生了距离缩短的节点确定为虫洞入口节点;
[0028]将所述路径中虫洞入口节点的下一跳节点确定为虫洞出口节点。
[0029]上述方法,优选地,在获取所述汇聚节点接收到的数据包中的属性值之后,在重构所述传感器网络的当前网络拓扑之前,还包括:
[0030]判断所述数据包的消息认证码属性值是否正确,如果正确,执行所述重构所述传感器网络的当前网络拓扑步骤,否则,报告路径中有虫洞攻击。
[0031]上述方法,优选地,在获取所述汇聚节点接收到的数据包中的属性值之后,在重构所述传感器网络的当前网络拓扑之前,还包括:
[0032]识别所述数据包的标记节点ID属性值字段内是否存有告警信息,如果有,定位所述标记节点ID的前一跳节点为虫洞节点,否则,执行所述重构所述传感器网络的当前网络拓扑步骤。
[0033]本方案还提供了一种虫洞攻击定位装置,应用于传感器网络中的汇聚节点,所述装置包括:
[0034]获取模块,用于获取所述汇聚节点接收到的数据包中的属性值,所述属性值由其所经由的中间节点进行设置;
[0035]重构模块,用于依据所述属性值,重构所述传感器网络的当前网络拓扑,所述当前网络拓扑中包括每个源节点至所述汇聚节点的路径;
[0036]拓扑对比模块,用于将所述传感器网络的初始网络拓扑与所述当前网络拓扑进行比对,得到拓扑比对结果,所述初始网络拓扑为所述传感器网络在初始化完成时的网络拓扑;
[0037]规则判断模块,用于判断所述拓扑比对结果是否满足预设虫洞攻击的网络拓扑变化规则,如果是,触发定位模块;
[0038]定位模块,用于依据所述当前网络拓扑定位虫洞节点。
[0039]上述装置,优选地,所述属性值由其所经由的中间节点通过以下模块进行设置,包括:
[0040]第一判断模块,用于判断是否所述中间节点的信息列表中有与所述中间节点接收到的数据包所属源节点对应的记录,如果有,判断是否所述记录中序列号与所述数据包的序列号属性值连续,如果是,则触发第一设置模块;
[0041]第一设置模块,用于将所述中间节点的ID值写入所述数据包中属性值的前跳节点ID字段内,并触发第二判断模块;
[0042]第二判断模块,用于判断所述数据包的跳数属性值与所述记录中跳数是否相等,如果相等,触发第二设置模块,如果不相等,则触发第三设置模块;
[0043]第二设置模块,用于将所述数据包的跳数属性值加1,将由密钥、前跳节点ID和序列号计算得到的消息认证码写入数据包的消息认证码属性值字段内;
[0044]第三设置模块,用于将所述数据包的跳数属性值改写为所述记录中的跳数,生成告警信息,并将所述告警信息写入数据包的标记节点ID属性值字段内,将由密钥、前跳节点ID、序列号和跳数计算得到的消息认证码写入数据包的消息认证码属性值字段内;
[0045]第三判断模块,用于判断是否所述信息列表中有与所述数据包所属源节点对应的记录,如果有,判断是否所述记录中序列号与所述数据包的序列号属性值不连续,如果是,则触发第四设置模块;
[0046]第四设置模块,用于将所述中间节点的ID值写入所述数据包的标记节点ID属性值字段内,将由密钥、标记节点ID、由前跳节点ID和序列号计算得到的消息认证码和跳数计算得到的消息认证码写入数据包的消息认证码属性值字段;
[0047]第四判断模块,用于判断是否所述信息列表中没有与所述数据包所属源节点对应的记录,如果是,触发第五设置模块;
[0048]第五设置模块,用于将所述中间节点的ID值写入所述数据包的标记节点ID属性值字段内,将由密钥、标记节点ID、由前跳节点ID和序列号计算得到的消息认证码和跳数计算得到的消息认证码写入数据包的消息认证码属性值字段。
[0049]上述装置,优选地,所述重构模块包括:
[0050]第一判断子模块,用于判断所述汇聚节点接收到的数据包的序列号与所述汇聚节点记录的序列号之差是否等于1,如果是,则触发第二判断子模块,如果否,则触发第三判断子模块;
[0051]第二判断子模块,用于判断所述数据包的前跳节点ID是否和所述汇聚节点中记录的路径中对应位置的节点ID相同,如果相同,则触发第一重构子模块;
[0052]第一重构子模块,用于将所述数据包的标记节点ID写入所述路径中对应位置,清空所述路径中从所述位置到所述汇聚节点之间的所有节点;
[0053]第三判断子模块,用于判断所述数据包的标记节点ID是否和所述汇聚节点中记录的路径中对应位置的节点ID相同,如果不相同,触发第二重构子模块;
[0054]第二重构子模块,用于清空所述路径中“跳数-所述数据包中序列号与所述路径中序列号之差”之后的所有节点,将所述数据包的标记节点ID写入所述路径中对应位置。
[0055]上述装置,优选地,所述规则判断模块包括:
[0056]第一规则判断子模块,用于判断所述拓扑比对结果是否表明所述当前网络拓扑中相对于所述初始网络拓扑发生变化的路径的比例大于或等于比例阈值;
[0057]第二规则判断子模块,用于判断所述拓扑比对结果是否表明所述当前网络拓扑中相对于所述初始网络拓扑发生变化的路径的平均缩短距离大于或等于距离阈值。
[0058]上述装置,优选地,所述定位模块包括:
[0059]第一虫洞节点确定子模块,用于将所述当前网络拓扑中相对于所述初始网络拓扑发生变化的路径中距离所述汇聚节点最近且发生了距离缩短的节点确定为虫洞入口节
占.[0060]第二虫洞节点确定子模块,用于将所述路径中虫洞入口节点的下一跳节点确定为虫洞出口节点。
[0061]上述装置,优选地,还包括:
[0062]消息认证码判断模块,用于在所述获取模块获取到数据包的属性值之后,在所述重构模块重构拓扑网络之前,判断数据包的消息认证码属性值是否正确,如果正确,触发所述重构模块,否则,触发第一虫洞攻击报告模块;
[0063]第一虫洞攻击报告模块,用于报告路径中有虫洞攻击。
[0064]上述装置,优选地,还包括:
[0065]告警信息识别模块,用于在所述获取模块获取到数据包的属性值之后,在所述重构模块重构拓扑网络之前,识别所述数据包的标记节点ID属性值字段内是否存有告警信息,如果有,触发第二虫洞攻击报告模块,否则,触发重构模块;
[0066]第二虫洞攻击报告模块,用于报告所述标记节点ID的前一跳节点为虫洞节点。
[0067]从上述方案可以看出,本发明公开的虫洞攻击定位方法中,汇聚节点根据获得的数据包中的属性值,重构当前网络拓扑,比对初始网络拓扑与当前网络拓扑,根据虫洞攻击特征定位虫洞攻击节点。可见本发明中的方法完全不影响传感器网络的正常运行,不依赖于特别的事件或行为,探测过程持续发生在网络运行的整个过程,能有效抵抗主动敌手发起的虫洞攻击。
【专利附图】

【附图说明】
[0068]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0069]图1为本发明实施例一提供的一种虫洞攻击定位方法流程图;
[0070]图2为本发明实施例一提供的一种数据包数据结构图;
[0071]图3为本发明实施例一提供的一种节点信息列表数据结构图;
[0072]图4为本发明实施例二提供的一种虫洞攻击定位方法的部分流程图;
[0073]图5为本发明实施例三提供的一种虫洞攻击定位方法的部分流程图;
[0074]图6为本发明实施例三提供的一种路径数据结构图;
[0075]图7为本发明实施例三提供的一种路径重构示例图;
[0076]图8为本发明实施例四提供的一种虫洞攻击定位方法的部分流程图;
[0077]图9为本发明实施例五提供的一种虫洞攻击定位方法的部分流程图;
[0078]图10为本发明实施例六提供的一种虫洞攻击定位方法的部分流程图;
[0079]图11为本发明实施例七提供的一种虫洞攻击定位方法的部分流程图;
[0080]图12为本发明实施例八提供的一种虫洞攻击定位装置的结构框图;
[0081]图13为本发明实施例八提供的一种虫洞攻击定位装置的另一结构框图;
[0082]图14为本发明实施例八提供的一种虫洞攻击定位装置的另一结构框图;
[0083]图15为本发明实施例八提供的一种虫洞攻击定位装置的另一结构框图;
[0084]图16为本发明实施例九提供的一种虫洞攻击定位装置的结构框图;
[0085]图17为本发明实施例十公开的一种虫洞攻击定位装置的结构框图;
[0086]图18为本发明实施例十一公开的一种虫洞攻击定位装置的结构框图。
【具体实施方式】
[0087]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0088]参考图1,其示出了本发明实施例一提供的一种虫洞攻击定位方法的流程图,所述方法包括以下步骤:
[0089]S101、获取所述汇聚节点接收到的数据包中的属性值,所述属性值由其所经由的中间节点进行设置;
[0090]其中,设置数据包中属性值的主要操作是让传感器节点将其ID写入到经过的数据包中。设置数据包中属性值的步骤由中间节点进行判断并执行,中间节点为除汇聚节点和源节点之外的其他传感器节点。
[0091]由于数据包本身的长度限制,只能利用几个字节的空间来存放属性值。原数据包包括:表示数据包来源的源节点ID、表示数据包产生序列的序列号、表明数据包所转发的跳数。如果当前应用对数据包格式的设计不包含这些字段,那么中间节点设置数据包中属性值的算法将把它们添加到数据包当中。在原数据包的基础上,本发明新增加三个属性值字段:标记节点ID、前跳节点ID和消息认证码MAC,数据包的数据结构如图2所示。其中标记节点ID记录给该数据包做标记的节点ID,前跳节点ID记录给该节点做标记的节点的上一跳节点ID,MAC保证标记信息的完整性,以防止敌手的恶意篡改。MAC由安全哈希算法shal计算,MAC密钥由标记节点和汇聚节点端共享。其他实施例中数据包中属性值不限于此,只要起到标识作用,能通过获取的属性值实现网络拓扑重构即可。另外,其他实施例中MAC可由其他安全算法计算,不限于安全哈希算法shal。
[0092]每个中间节点维护着一个信息列表,里面存放着源节点的相关信息,信息列表的数据结构如图3所示,由源节点ID,来自于相应源节点的数据包最新序列号和距离该源节点的跳数组成。两个序列号连续是指来自同一源节点的两个数据包的序列号相差为1,即这两个数据包是该源节点连续发出的。当源节点产生数据包时,它把跳数置为0,前跳节点ID置为自己ID,MAC置为MAC(前跳节点ID,序列号)。
[0093]需要说明的是,很多数据包中的属性值并不会被设置,本发明中所述属性值设置均指中间节点对属性值的设置,非源节点生成数据包时对属性值的设置。如果网络是静态的,属性值设置操作会在收集完网络拓扑后自动停止,如果网络是动态的,例如虫洞链路存在或者网络动态性引起路径变化时,属性值设置操作会自动重新启动并重新收集网络拓扑,数据包被设置属性值的原因一定是因为网络发生了变化,要么是存在虫洞链路等攻击,要么是网络动态性引起了路径变化,那些沿着之前数据包所走过的路径传到汇聚节点的数据包不会被设置属性值。
[0094]S102、依据所述属性值,重构所述传感器网络的当前网络拓扑,所述当前网络拓扑中包括每个源节点至所述汇聚节点的路径;
[0095]传感器网络中,传感器节点监测的数据包沿着其他传感器节点逐跳进行传输,经过多跳后路由到汇聚节点,汇聚节点维护整个网络拓扑。
[0096]汇聚节点通过分析收到的大量数据包中零星包含设置了属性值的数据包,在汇聚节点上运行的重构当前网络拓扑步骤追踪重构每个源节点到汇聚节点的路径,通过对所有源节点到汇聚节点的路径进行组合拼装,就能够在汇聚节点重构并维护整个网络拓扑。
[0097]S103、将所述传感器网络的初始网络拓扑与所述当前网络拓扑进行比对,得到拓扑比对结果,所述初始网络拓扑为所述传感器网络在初始化完成时的网络拓扑;
[0098]网络初始化阶段,合法用户随机部署所有传感器节点,显然合法用户不会部署虫洞节点,这时首先命令各节点发送一定量的数据包,汇聚节点利用这些数据包很快建立初始网络拓扑,并将初始网络拓扑保存起来。
[0099]网络运行阶段,经过步骤102之后会得到重构后的当前网络拓扑。比对初始网络拓扑与当前网络拓扑,得到拓扑比对结果,拓扑比对结果也就是两个网络拓扑中每一条从源节点出发到汇聚节点的路径变化。
[0100]S104、判断所述拓扑比对结果是否满足预设的网络拓扑变化规则,如果是,执行步骤 S105 ;
[0101]S105:依据所述当前网络拓扑定位虫洞节点。
[0102]其中,所述预设的网络拓扑变化规则是根据虫洞攻击引发的网络病症来制定的,按照虫洞攻击的定义,有虫洞攻击的网络拓扑会出现特有的特征,例如流量吸引、变化的路径多、路径距离缩短等等,如果发现当前网络拓扑出现这些特征,则推断存在虫洞攻击。本发明公开的方法紧扣虫洞攻击的特征,有效的降低了检测中的误报。
[0103]其中,优选地,虫洞节点定位过程还包括:汇聚节点获取到数据包属性值后,首先判断MAC是否正确,如果不正确,说明主动敌手篡改了数据包的属性值,此时认为该路径中存在虫洞攻击。
[0104]其中,优选地,虫洞节点定位过程还包括:汇聚节点获取到数据包属性值后,判断标记节点ID字段中是否存有告警信息,如果有,说明主动敌手篡改了跳数,此时认为虫洞攻击节点就在标记节点的前跳节点。
[0105]其中,优选地,虫洞节点定位过程还包括:汇聚节点比较了数据包标记节点ID的前跳节点ID与路径中对应位置的节点ID,如果不一致,则说明主动敌手随机选择下一跳节点来转发数据包,此时认为虫洞攻击节点就在标记节点的前跳节点。
[0106]由上述方案可知,相对于现有技术中无法定位主动敌手发起的虫洞攻击节点的问题,本发明实施例一提供的虫洞攻击定位方法,通过获取数据包的属性值,重构当前网络拓扑,实时监测路径变化,从而基于虫洞攻击引发网络病症的特征推断虫洞是否存在,并定位出虫洞节点位置。本发明中汇聚节点在收集网络拓扑进行虫洞节点定位过程中不会有特殊的特征。针对被动敌手发起的虫洞攻击,有两种情况,如果敌手设置自己的节点ID到数据包中,则汇聚节点可以发现虫洞节点并能定位出虫洞节点所在位置,如果敌手不设置自己的节点ID到数据包中,汇聚节点虽无法在路径信息中发现虫洞节点的存在,但虫洞节点的邻居节点会表现出虫洞特征并且由于邻居节点会设置自己的ID进数据包,所以汇聚节点可以定位出虫洞节点的邻居节点。针对主动敌手发起的虫洞攻击,主动敌手不能觉察网络的检测行为,所以无法躲避检测,如果主动敌手通过故意错误设置数据包属性值或随机选择下一跳节点来转发数据包的方式破坏正确网络拓扑的收集,本发明利用数据包的消息认证码MAC以及告警信息,能立即定位出虫洞攻击节点位置,另外汇聚节点还比较了数据包标记节点ID的前跳节点ID与路径中对应位置的节点ID,即使主动敌手随机选择下一跳节点来转发数据包也能将虫洞攻击节点定位出来。故无论是被动敌手发起的虫洞攻击还是主动敌手发起的虫洞攻击,本发明的虫洞攻击定位方法都能有效定位出来。
[0107]此外,本发明还有一个显著优势,整个虫洞检测及虫洞节点定位过程都不会给网络带来额外信息开销,设置数据包属性值的过程发生在传感器节点转发数据包过程中,而不是额外的附加过程,这个优点在大部分节点计算能力和通信能力都有限的无线传感器网络中显得弥足珍贵。[0108]额外地,本发明的实现不受任何硬件、技术和资源的限制,易于实现。
[0109]由上述实施例可知,所述属性值是由其经由的中间节点进行设置,属性值除了原始数据包中的源节点ID、序列号和跳数以外,还包括:标记节点ID、前跳节点ID和消息认证码,其中,参考图4,其示出了本发明实施例二提供的一种虫洞攻击定位方法的部分流程图,其中,优选地,所述步骤SlOl获取数据包属性值时,中间节点S收到数据包P之后,设置数据包P的属性值的具体实现包括:
[0110]S401:判断所述中间节点的信息列表中是否有与所述中间节点接收到的数据包所属源节点对应的记录,如果有,则执行步骤S402,如果没有,则执行步骤S403 ;
[0111]具体地,检查中间节点S的信息列表,如果信息列表中有关于数据包P所属源节点的记录,则执行步骤S402,如果没有,则执行步骤S403。
[0112]S402:判断所述记录中序列号与所述数据包中序列号是否连续,如果连续,则执行步骤S404,如果不连续,则执行步骤S405 ;
[0113]具体地,判断数据包P的序列号与中间节点S的信息列表中对应记录中的序列号之差是否为I,也就是判断在数据包P之前有没有丢包,如果连续,则执行步骤S404,如果不连续,则执行步骤S405。
[0114]S403:将所述中间节点的ID值写入所述数据包的标记节点ID字段内,将由密钥、标记节点ID、由前跳节点ID和序列号计算得到的消息认证码和跳数计算得到的消息认证码写入数据包的消息认证码字段内;
[0115]具体地,如果中间节点S的信息列表中没有数据包P的源节点的相关记录,说明中间节点S第一次接收到来自P的源节点发送的数据包,用中间节点S设置数据包P的标记节点ID,用MAC (密钥、标记节点ID、MAC (前跳节点ID,序列号)、跳数)更新数据包p的MAC,此外,为了使中间节点S接收到下一个数据包时仍能做出正确的属性值设置,步骤S403还包括:根据数据包P中的源节点ID、序列号和跳数信息在中间节点S的信息列表中创建一条记录,然后转发数据包P,完成对数据包P的处理。
[0116]S404:将所述中间节点的ID值写入所述数据包的前跳节点ID字段内,并判断所述数据包的跳数与所述记录中跳数是否相等,如果相等,将数据包中跳数加1,将由密钥、前跳节点ID和序列号计算得到的消息认证码写入数据包的消息认证码字段,如果不相等,将数据包的跳数改写为所述记录中的跳数,生成告警信息,将所述告警信息写入数据包的标记节点ID字段,将由密钥、前跳节点ID、序列号和跳数计算得到的消息认证码写入数据包的消息认证码字段;
[0117]具体地,将中间节点S自己的ID写入数据包P的前跳节点ID,然后判断数据包P的跳数和中间节点S的信息列表中对应记录中的跳数是否相等,如果相等,将数据包中跳数加1,用MAC(密钥、前跳节点ID、序列号)更新P的MAC,此外,为了使中间节点S接收到下一个数据包时仍能做出正确的属性值设置,步骤S404还包括:将P的序列号写入中间节点S的信息列表中对应记录的序列号,然后转发P。如果跳数不相等,生成告警信息,将所述告警信息写入数据包P的标记节点ID字段,用MAC(密钥、前跳节点ID、序列号、跳数)更新P的MAC。需要说明的是,数据包中跳数与对应记录中跳数不相等是因为主动敌手故意篡改,中间节点S的信息列表中对应记录中的跳数才是正确的跳数,为了后续虫洞节点定位过程能准确定位出恶意节点位置,用中间节点S的信息列表中对应记录中的跳数代替数据包P中跳数,然后转发数据包P,完成对数据包P的处理。
[0118]S405:将所述中间节点ID值写入所述数据包的标记节点ID字段内;将由密钥、标记节点ID、由前跳节点ID和序列号计算得到的消息认证码和跳数计算得到的消息认证码写入数据包的消息认证码字段内;
[0119]具体地,用中间节点S自己的ID设置数据包P的标记节点ID,用MAC (密钥、标记节点ID、MAC(前跳节点ID,序列号)、跳数)更新P的MAC。其中,为了使中间节点S接收到下一个数据包时仍能做出正确的属性值设置,步骤S405还包括:将数据包P的序列号和跳数写入中间节点S的信息列表对应记录中,然后转发数据包P,完成对数据包P的处理。
[0120]需要说明的是,如果数据包P的属性值已经被设置过,则直接转发P,本实施例中提供的属性值设置方法只针对未设置过属性值的数据包设置,也就是说一个数据包只可能被设置一次,这样,对于设置数据包属性值的中间节点来说,其影响可以忽略不计,对于获取数据包属性值的汇聚节点来说,因为设置了属性值的数据包比较少,所以其影响也比较小。
[0121]由上述方案可知,本实施例利用一种安全数据包属性值设置算法对数据包属性值进行设置。这种属性值设置算法发生在数据包转发过程中,不产生任何额外的网络流量,利用这种属性值设置算法,一个被设置了属性值的数据包记录了一条路径中的一个节点和该节点在路径中的位置。而且,一个数据包在属性值设置算法中只能被设置一次,所以这可以避免重复设置带来的不必要的开销,提高了设置算法的收敛速度。这种属性值设置算法下,利用获取的属性值,除了能重构当前网络拓扑,还能为提前识别出敌手的一些简单攻击行为做准备,例如,为防止主动敌手修改属性值,属性值设置阶段会更新MAC,为防止主动敌手修改数据包的跳数,属性值设置阶段会设置数据包告警信息。这对进一步提高虫洞攻击定位覆盖率及准确率大有益处。
[0122]基于前述实施例一或实施例二,汇聚节点收到由上述数据包属性值设置算法设置了属性值的数据包之后,先检查接收到的数据包有没有设置属性值,也就是获取数据包的属性值。每当汇聚节点接收到属性值中标记节点ID字段不为空的数据包时,其源节点与标记节点之间的路径会被重构,同时这也告诉我们这条路由发生了变化。具体的,参见图5所示,其示出了本发明实施例三提供的一种虫洞攻击定位方法的部分流程图,汇聚节点SO收到属性值中标记节点ID不为空的数据包pi之后,重构pi所属源节点到汇聚节点SO的路径的步骤具体如下:
[0123]S501、检查接收到的数据包的序列号与所述汇聚节点中记录的序列号之差是否为1,如果d等于1,则执行步骤S502,如果d大于1,则执行步骤S503 ;
[0124]具体地,判断数据包pi的序列号和汇聚节点SO记录的路径中的序列号之差d是否为1,如果是,则执行步骤S502,如果否,则执行步骤S503。需要说明的是,如果数据包Pl的标记节点ID为空,则说明该数据包沿着之前的数据包所走过的路径传到了汇聚节点,此时不需要重构路径,汇聚节点将Pl的序列号存入路径中的序列号之后不再对数据包进行任何操作。
[0125]S502、检查所述数据包的前跳节点ID是否和所述汇聚节点中记录的路径中对应位置的节点ID相同,如果相同,将所述数据包的标记节点ID写入所述路径中对应位置,清空所述路径中从所述位置到汇聚节点之间的所有节点;[0126]具体地,检查pi的前跳节点ID是否和汇聚节点SO中记录的路径中对应位置的节点ID相同,如果相同,将数据包的标记节点ID写入路径中的对应位置,清空从该位置到汇聚节点之间的所有节点;
[0127]其中,步骤S502还包括生成路径变化报告,路径变化报告告知网络管理员此处发生了路径变化,网络管理员可据此报告排查网络是否出现故障;
[0128]需要说明的是,如果发现pi的前跳节点ID和路径中对应位置的节点ID不相同,步骤S502还会生成关于pi的标记节点的前跳节点所在位置的攻击报告,也就是定位Pl的标记节点的前跳节点为虫洞攻击节点,针对主动敌手随机转发数据包到其任意邻居节点的情况,可以不经过后续重构、拓扑比对、规则判断及定位步骤就快速定位出虫洞节点所在位置。
[0129]S503、检查所述数据包的标记节点ID是否和所述汇聚节点存有的路径中的对应位置节点ID相同,如果不相同,清空路径中“跳数-所述数据包序列号与所述路径中序列号之差”之后的所有节点,将所述数据包的标记节点ID写入路径中对应位置的节点ID ;
[0130]具体地,检查pi的标记节点ID是否和路径中对应位置的节点ID相同,如果不相同,则清空该路径中“跳数-d”之后的所有节点,将pi的标记节点ID写入路径中的对应位置ID ;
[0131]其中,步骤S503还可以包括生成丢包报告,丢包报告告知网络管理员此处发现了数据包丢失,网络管理员可据此报告排查丢包原因。此外,针对主动敌手随机丢弃数据包的情况,可以快速定位出攻击节点所在位置;
[0132]其中,步骤S503在发现pi的标记节点ID是否和路径中对应位置的节点ID不相同时还包括生成路径变化报告,路径变化报告告知网络管理员此处发生了路径变化,网络管理员可据此报告排查网络是否出现故障。
[0133]具体地,参见图6所示,汇聚节点缓存区定义了一个叫做“路径”的数据结构,用来存储源节点到汇聚节点所经过的路由信息。一个路径包含一个数组,数组中每个位置存放一个数据包途径节点的ID,这些节点ID在数组中的位置由它们到源节点的跳数距离来索弓I。一个路径同时还包含一个字段,记录对应的源节点到达汇聚节点的数据包的最新序列号。这样的存储方式简单明了,但并不限于数组,其他实施例中可利用链表、队列、树等其他数据结构存储路由信息。
[0134]汇聚节点收到一个新数据包时,检查汇聚节点是否已经有源节点对应的路径,如果有,则比较数据包的序列号以及路径当前的序列号来决定进一步操作。这里将数据包中序列号与当前路径中记录的序列号的差记为d,如果数据包序列号小于路径中记录的序列号(d< I),说明这是一个重复或者延迟收到的数据包,因为重复和延迟包中的设置的属性值信息通常已经过时,而且很可能给属性值获取和网络拓扑重构过程带来错误,因此本发明中直接忽略这些数据包中设置的属性值;如果新数据包序列号与路径中记录的序列号仅相差Ud = I),也就是序列号连续,则说明没有数据包丢失;如果d>i,序列号出现不连续,说明有数据包在传输途中丢失,丢失的包的数目为d-1,此时先生成丢包报告。如果数据包中设置的标记节点ID和路径数组中对应索引位置上当前记录的ID不一致,则认为有路由变化发生,并且路由发生变化的位置在跳数索引的位置和其之前d跳范围内,网络拓扑重构时会据此生成一个路由变化报告。在发生路由变化的情况下,路径数组中当前所记录的从跳数之前d跳开始到汇聚节点的路由信息很可能已经与实际路由不一致,因此将该数组中该范围内的数据都清空。
[0135]下面以一个路径重构例子详细说明路径重构的原理,参见图7所示。汇聚节点收到一个新的标记节点ID不为空的数据包,标记节点是S*,距离源节点4跳,因为该数据包标记节点ID不为空,所以一定是路由发生了变化,故S*和路径中对应位置当前存储的节点ID,即S4肯定不一致。现在的问题是如何准确定位出路由变化所发生的起始位置,在没有数据包丢失的情况下,可以判断出此时的路由变化是S3节点将其下一跳节点从S4变为S*。在本例中d = 2,意味着有一个数据包在传输过程中丢失了,当然实际系统中还存在更复杂的情况。路由变化发生的起始位置可能在S2节点处,即S2将其下一跳节点从S3变为S*,根据本发明的属性值设置算法,S*节点将会设置同一源节点接下来到达的数据包的属性值,但是此被设置的数据包可能在下面的途中丢失了,因此汇聚节点并没有及时发现这个路由的变化。直到之后的一个数据包被S*设置了属性值并到达汇聚节点,汇聚节点才能够了解到该源节点至汇聚节点的路由已经发生了变化。另一种可能的情况就是路由变化的起始位置就在S3,但是S3没有把该源节点的下一个数据包成功发送给S*,因此直到第二个数据包到来S*才进行属性值设置。综合可能存在的多种情况,在此路由变化的例子中,汇聚节点当前路径中从S3到汇聚节点之间的路由信息都是不准确的。故路径重构算法将S4更新为S*并清空数组中 其他位置,等待进一步的信息来更新整条路径。
[0136]按照上述重构网络拓扑方式,理想情况下,重构一条路径所需的时间=所需要的数据包数量*发包周期,而所需要的数据包数量等于该节点距离汇聚节点的跳数。
[0137]下面以一条完整路径为例,进一步说明重构网络拓扑的过程。假设初始路径为{S5,S4,S3,S2,SI},重构后路径为{S5,S4,S6,S2,SI}。重构过程如下:数据包经过距源节点S5两跳的节点S6时,由于该数据包第一次经过节点S6,故节点S6会设置数据包的属性值,之后数据包被转发到节点S2,节点S2发现该数据包被设置了属性值,直接将该数据包转发到节点SI,节点SI也发现该数据包被设置了属性值,直接将该数据包转发到汇聚节点。汇聚节点收到这个数据包之后,发现当前维护的路径中与源节点S5距离为两跳的节点是S3而不是S6,但前跳节点仍为节点S4,这说明路由发生了变化,但无法确认是否存在虫洞攻击。在没有数据包丢失的情况下,汇聚节点将路径中S3、S2及SI清空,将S6写入路径与其跳数对应的位置,此时路径变为{S5,S4, S6},接下来下一个数据包经过节点S2时,节点S2因数据包序列号不连续会对数据包进行属性值设置,SI仍直接将数据包转发至汇聚节点,汇聚节点接收到由S2设置了属性值的数据包之后,发现前跳节点仍为S6,将S2写入路径与其跳数对应的位置,此时路径变为{S5,S4,S6,S2}。同样,接下来的一个数据包会由SI设置属性值,汇聚节点将SI写入路径对应位置,最终重构出路径{S5,S4,S6,S2,SI}。
[0138]参考图8,其示出了本发明实施例四提供的一种虫洞攻击定位方法的部分流程图,其中,所述步骤103具体可以通过以下步骤实现:
[0139]S801:比较初始网络拓扑U和当前网络拓扑Ukt中每一条从同一源节点出发的路径,也就是下标一致的路径;减去路径中相似的部分,得到在U中变化的部分
'U和在Urt中的变化部分仏7.={Sk”Sk2”』.b) > t表不变化路径的条数。
[0140]其中,网络初始化阶段结束后,初始网络拓扑记为U,网络运行阶段,实时收集的当前网络拓扑记为Urt,U可表示为U = Cr1, r2,...rn), T1表示一条从节点i出发到汇聚节点的路径,假设无线传感器网络中有η个源节点,则U中就有η条路径。同样的,Ukt可表示为Uet = (S1, S2,...sn), Si表示一条从节点i出发到汇聚节点的路径。t小于或等于η。
[0141 ] S802:计算路径的平均缩短长度,路径的平均缩短长度为[(I rkl | -1 skl |) + (| rk21 -1%21) +…+ (I rkt H skt I) ] /t。
[0142]虫洞节点是在网络初始化阶段结束之后布置的,因此在成功的参与网络之后它只会存在于变化的路径中。本实施例中比对了没有虫洞攻击的初始网络拓扑和可能有虫洞攻击的当前网络拓扑,比对结果是每一条从源节点出发到汇聚节点的路径变化。
[0143]与网络动态性相比,虫洞是网络中路径缩短的主要原因,针对这个特点,汇聚节点通过两个因素来搜寻虫洞攻击,一个是变化路径的比例,因为虫洞节点吸引了网络中很大一部分流量,所以很多路径会发生变化,虽然网络拓扑的动态性也能引起路径变化,但经过仿真发现,虫洞攻击对路径的影响比网络动态性大得多。另一个是变化路径的缩短长度,经过仿真实验发现,虫洞攻击很大程度的减少了变化路径的长度。因此本实施例在找出变化的路径之后,还计算了变化路径的条数及平均路径缩短长度,为后续虫洞攻击的定位做好了准备。
[0144]参考图9,其示出了本发明实施例五提供的一种虫洞攻击定位方法的部分流程图,步骤104中定位虫洞节点包括以下步骤:
[0145]步骤S901:判断所述拓扑比对结果是否表明所述当前网络拓扑中相对于所述初始网络拓扑发生变化的路径的比例大于或等于比例阈值,如果大于,执行步骤S902 ; [0146]其中,变化路径的比例也就是t/n的值,也就是所有路径中变化的路径所占的比例,如果这个比例小于预设的比例阈值,我们认为路径变化是网络动态性引起的,因为它对路径的影响不明显。相反的,如果这个比例大于比例阈值,意味着发生了一个不可忽略的路径变化事件。通过仿真发现,比例阈值可以设定为1%~5%。
[0147]步骤S902:所述发生变化的路径的平均缩短距离大于或等于距离阈值,如果大于,则执行步骤S903 ;
[0148]其中,如果平均缩短长度大于设定的距离阈值,则认为存在虫洞攻击。同样通过仿真发现距离阈值可以设定为1.5跳来区别虫洞攻击和网络动态性对路径缩短的影响。
[0149]步骤S903:将所述当前网络拓扑中相对于所述初始网络拓扑发生变化的路径中距离所述汇聚节点最近且发生了距离缩短的节点确定为虫洞入口节点;将所述路径中虫洞入口节点的下一跳节点确定为虫洞出口节点。
[0150]具体地,在变化的路径中统计哪些节点出现了距离缩短现象,然后找出所有路径中距离所述汇聚节点最近且发生了距离缩短的节点,此节点就是虫洞的入口节点,路径中虫洞入口节点的下一跳节点即是虫洞的出口节点,从而定位出了虫洞节点对。
[0151 ] 由上述方案可知,本实施例中预设的虫洞攻击网络拓扑变化规则为变化路径在所有路径中所占比例及路径的平均缩短距离。本发明其他实施例中不限于这个规则,只要是虫洞攻击引发的网络特征都可用于判断虫洞攻击并定位虫洞攻击节点。
[0152]上述实施例中,虽然主动敌手不会发现传感器网络正在检测并定位虫洞节点,但是,主动敌手会故意通过错误设置数据包属性值或随机选择下一跳节点来转发数据包的方式破坏正确网络拓扑的收集。
[0153]为了防止主动敌手故意篡改数据包的属性值,优选地,参考图10,其示出了本发明实施例六提供的一种虫洞攻击定位方法的部分流程图,在步骤SlOl之后,在步骤S102之前,虫洞攻击定位方法还包括以下步骤:
[0154]S1001:汇聚节点接收到数据包之后,判断数据包的消息认证码是否正确,如果正确,执行步骤S102 ;如果不正确,执行步骤S1002 ;
[0155]其中,汇聚节点需要计算两次MAC,一次由前跳节点计算的MAC,另一次是由标记节点计算的MAC,如果MAC有误,说明有敌手伪造或篡改了 MAC。
[0156]S1002:汇聚节点生成关于该源节点所在路径的攻击报告。
[0157]由上述方案可知,本实施例利用消息认证码来防止数据包属性值被恶意篡改,它保护了数据包所有属性值。在主动敌手故意篡改数据包属性值的情况下,不需要拓扑重构、拓扑比对、规则判断和定位等后续步骤即可实现虫洞攻击的快速定位。
[0158]为了保护数据包的跳数这一属性值,防止主动敌手故意篡改,优选地,参考图11,其示出了本发明实施例七提供的一种虫洞攻击定位方法的部分流程图,在步骤SlOl之后,在步骤S102之前,虫洞攻击定位方法还包括以下步骤:
[0159]SllOl:汇聚节点接收到数据包之后,判断数据包中标记节点ID字段中是否存有告警信息,如果有,执行步骤SI 102,如果没有,执行步骤S102 ;
[0160]S1102:汇聚节点生成关于数据包中标记节点的前一跳节点所在位置的攻击报告。
[0161]结合上述实施例给出的数据包属性值设置过程,由上述方案可知,本实施例保护了跳数不被主动敌手随意篡改。在主动敌手故意篡改数据包跳数的情况下,不需要拓扑重构、拓扑比对、规则判断和定位等后续步骤即可实现虫洞攻击的快速定位。
[0162]基于上述两个实施例,其他实施例中虫洞攻击定位方法可同时包括步骤S1001、S1002、SllOl和S1102,当主动敌手故意篡改任意数据包属性值阻碍正确收集网络拓扑时,这样的虫洞攻击定位方法可快速定位出虫洞节点位置。
[0163]参考图12,其示出了本发明实施例八提供的一种虫洞攻击定位装置,所述装置包括:获取模块1201、重构模块1202、拓扑对比模块1203、规则判断模块1204和虫洞攻击定位模块1205,其中:
[0164]所述获取模块1201,用于获取所述汇聚节点接收到的数据包中的属性值,所述属性值由其所经由的中间节点进行设置;
[0165]其中,原始数据包属性值包括:源节点ID、序列号、跳数,本发明还新增加三个属性值:标记节点ID、前跳节点ID和消息认证码,中间节点缓存的信息列表包括:源节点ID、序列号、跳数。
[0166]所述重构模块1202,用于依据所述属性值,重构所述传感器网络的当前网络拓扑,所述当前网络拓扑中包括每个源节点至所述汇聚节点的路径;
[0167]其中,优选地,参考图13,其示出了本发明实施例的另一结构框图,所述重构模块1202包括第一判断子模块1221和第二判断子模块1222:
[0168]第一判断子模块1221,用于判断数据包中序列号与所述汇聚节点存有的序列号之差是否为1,如果等于1,则触发第二判断子模块1222,如果大于1,则触发第三判断子模块1223 ;
[0169]第二判断子模块1222,用于判断所述数据包中前跳节点ID是否和所述汇聚节点存有的路径中对应位置节点ID相同,如果相同,则触发第一重构子模块1224 ;[0170]其中,所述路径是指记录从源节点到汇聚节点所走过的有序节点集,汇聚节点会维护所有路径,也就是网络拓扑。
[0171]第一重构子模块1224,用于将数据包标记节点ID写入路径中对应位置的节点ID,清空路径中从该位置到汇聚节点之间的所有节点;
[0172]第三判断子模块1223,用于判断所述数据包标记节点ID是否和所述汇聚节点存有的路径中的对应位置节点ID相同,如果不相同,触发第二重构子模块1225 ;
[0173]第二重构子模块1225,用于清空路径中“跳数-所述数据包序列号与路径中序列号之差”之后的所有节点,将数据包的标记节点ID写入路径中对应位置的节点ID。
[0174]所述拓扑对比模块1203,用于将所述传感器网络的初始网络拓扑与所述当前网络拓扑进行比对,得到拓扑比对结果,所述初始网络拓扑为所述传感器网络在初始化完成时的网络拓扑;
[0175]所述规则判断模块1204,用于判断所述拓扑比对结果是否满足预设虫洞攻击的网络拓扑变化规则,如果是,触发定位模块1205 ;
[0176]其中,优选地,参考图14,其示出了本发明实施例的另一结构框图,所述规则判断模块1204包括第一规则判断子模块1241和第二规则判断子模块1242,其中:
[0177]第一规则判断子模块1241,用于判断所述拓扑比对结果是否表明所述当前网络拓扑中相对于所述初始网络拓扑发生变化的路径的比例大于或等于比例阈值;
[0178]第二规则判断子模块1242,用于判断所述拓扑比对结果是否表明所述当前网络拓扑中相对于所述初始网络拓扑发生变化的路径的平均缩短距离大于或等于距离阈值。
[0179]其中,同时满足第一规则判断子模块1241和第二规则判断子模块1242得出的结果时,满足预设的虫洞攻击的网络拓扑变化规则,说明有虫洞攻击存在。
[0180]所述定位模块1205,用于依据所述当前网络拓扑定位虫洞节点。
[0181]其中,优选地,参考图15,其示出了本发明实施例的另一结构示意图,所述定位模块1205包括:
[0182]第一虫洞节点确定子模块1251,用于将所述当前网络拓扑中相对于所述初始网络拓扑发生变化的路径中距离所述汇聚节点最近且发生了距离缩短的节点确定为虫洞入口节点;
[0183]第二虫洞节点确定子模块1252,用于将所述路径中虫洞入口节点的下一跳节点确定为虫洞出口节点。
[0184]基于上述实施例,所述属性值包括标记节点ID、前跳节点ID和消息认证码MAC,优选地,参考图16,其示出了本发明实施例九提供的结构框图,本实施例中所述属性值由其所经由的中间节点通过以下模块进行设置,包括:
[0185]第一判断模块1601,用于判断是否所述中间节点的信息列表中有与接收到的数据包所属源节点对应的记录,如果有,判断是否所述记录中序列号与所述数据包中序列号连续,如果是,则触发第一设置模块1602 ;
[0186]第一设置模块1602,用于在所述数据包的前跳节点ID字段内,写入所述中间节点ID值,并触发第二判断模块1603 ;
[0187]第二判断模块1603,用于判断所述数据包的跳数与所述记录中跳数是否相等,如果相等,触发第二设置模块1604 ;如果不相等,触发第三设置模块1605 ;[0188]第二设置模块1604,用于将所述数据包的跳数加1,将由密钥、前跳节点ID和序列号计算得到的消息认证码写入数据包的消息认证码字段;
[0189]第三设置模块1605,用于将所述数据包的跳数改为所述记录中的跳数,生成告警信息,并将告警信息写入数据包的标记节点ID字段内,用于将由密钥、前跳节点ID、序列号和跳数计算得到的消息认证码写入数据包的消息认证码字段;
[0190]第三判断模块1606,用于判断是否所述信息列表有与所述数据包所属源节点对应的记录,如果有,判断是否所述记录中序列号与所述数据包中序列号不连续,如果是,则触发第四设置模块1607;
[0191]第四设置模块1607,用于在所述数据包的标记节点ID字段内,写入所述中间节点ID值;将由密钥、标记节点ID、由前跳节点ID和序列号计算得到的消息认证码和跳数计算得到的消息认证码写入数据包的消息认证码字段;
[0192]第四判断模块1608,用于判断是否所述信息列表中没有与所述数据包所属源节点对应的记录,如果是,触发第五设置模块1609 ;
[0193]第五设置模块1609,用于在所述数据包的标记节点ID字段内,写入所述中间节点ID值,将由密钥、标记节点ID、由前跳节点ID和序列号计算得到的消息认证码和跳数计算得到的消息认证码写入数据包的消息认证码字段。
[0194]本实施例中的属性值设置模块在数据包大小允许的情况下,只设置了与虫洞攻击定位有关的属性值,设置规则简单直观,且设置过属性值的数据包不再多次设置,对执行属性值设置的中间节点来说影响可忽略不计。其他实施例中属性值设置模块不限于此,只要能起到标识作用,利于后续网络拓扑重构即可。
[0195]其中,优选地,参考图17,其示出了本发明实施例十的结构框图,所述虫洞攻击定位装置还包括消息认证码判断模块1701和第一虫洞攻击报告模块1702,其中:
[0196]消息认证码判断模块1701,用于在所述获取模块1201获取到数据包属性值之后,在所述重构模块1202重构拓扑网络之前,判断属性值中消息认证码是否正确,如果正确,触发重构模块1202 ;否则,触发第一虫洞攻击报告模块1702 ;
[0197]第一虫洞攻击报告模块1702,用于报告路径中有虫洞攻击。
[0198]其中,判断消息认证码是否正确,需要判断数据包的属性值的消息认证码与由前跳节点ID或标记节点ID计算的消息认证码是否一致。
[0199]本实施例中的装置增加了两个模块,利用数据包信息认证码,保护了数据包的所有属性值,针对主动敌手故意篡改数据包属性值的情况,不需要经过后续重构、拓扑比对、规则判断和定位模块的处理就可快速定位出虫洞节点位置。
[0200]其中,优选地,参考图18,其示出了本发明实施例十一提供的另一结构示意图,所述虫洞攻击定位装置还包括告警信息识别模块1801和第二虫洞攻击报告模块1802,其中:
[0201]告警信息识别模块1801,用于在所述获取模块1201获取到数据包属性值之后,在所述重构模块1202重构拓扑网络之前,识别所述数据包的标记节点ID字段中是否存有告警信息,如果有,触发第二虫洞攻击报告模块1802,否则,触发重构模块1202 ;
[0202]第二虫洞攻击报告模块1802,用于报告所述标记节点的前一跳节点为虫洞节点。
[0203]本实施例中的装置增加了两个模块,利用数据包告警信息,针对主动敌手故意篡改数据包跳数的情况,不需要经过后续重构、拓扑比对、规则判断和定位模块的处理就可快速定位出虫洞节点位置。
[0204]基于上述两个实施例,其他实施例中虫洞攻击定位装置可同时包括消息认证码判断模块1701、第一虫洞攻击报告模块1702、告警信息识别模块1801和第二虫洞攻击报告模块1802,当主动敌手故意篡改任意数据包属性值阻碍正确收集网络拓扑时,这样的虫洞攻击定位装置可快速定位出虫洞节点位置。
[0205]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0206]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。[0207]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【权利要求】
1.虫洞攻击定位方法,其特征在于,应用于传感器网络中的汇聚节点,所述方法包括:获取所述汇聚节点接收到的数据包中的属性值,所述属性值由其所经由的中间节点进行设置; 依据所述属性值,重构所述传感器网络的当前网络拓扑,所述当前网络拓扑中包括每个源节点至所述汇聚节点的路径; 将所述传感器网络的初始网络拓扑与所述当前网络拓扑进行比对,得到拓扑比对结果,所述初始网络拓扑为所述传感器网络在初始化完成时的网络拓扑; 判断所述拓扑比对结果是否满足预设的网络拓扑变化规则,如果是,依据所述当前网络拓扑定位虫洞节点。
2.根据权利要求1所述的方法,其特征在于,所述属性值由其所经由的中间节点通过以下步骤进行设置: 当所述中间节点的信息列表中有与所述中间节点接收到的数据包所属源节点对应的记录,且所述记录中序列号与所述数据包的序列号属性值连续时: 将所述中间节点的ID值写入所述数据包的前跳节点ID属性值字段内,判断所述数据包的跳数属性值与所述记录中跳数是否相等,如果相等,将所述数据包的跳数属性值加1,将由密钥、前跳节点ID和序列号计算得到的消息认证码写入所述数据包的消息认证码属性值字段内,如果不相等,将所述数据包的跳数属性值改写为所述记录中的跳数,生成告警信息,将所述告警信息写入所述数据包的标记节点ID属性值字段内,将由密钥、前跳节点ID、序列号和跳数计算 得到的消息认证码写入所述数据包的消息认证码属性值字段内; 当所述信息列表中有与所述数据包所属源节点对应的记录,且所述记录中序列号与所述数据包的序列号属性值不连续时: 将所述中间节点的ID值写入所述数据包的标记节点ID属性值字段内,将由密钥、标记节点ID、由前跳节点ID和序列号计算得到的消息认证码和跳数计算得到的消息认证码写入所述数据包的消息认证码属性值字段内; 当所述信息列表中没有与所述数据包所属源节点对应的记录时: 将所述中间节点的ID值写入所述数据包的标记节点ID属性值字段内,将由密钥、标记节点ID、由前跳节点ID和序列号计算得到的消息认证码和跳数计算得到的消息认证码写入所述数据包的消息认证码属性值字段内。
3.根据权利要求1或2所述的方法,其特征在于,所述属性值包括源节点ID、序列号、跳数、标记节点ID、前跳节点ID及消息认证码;相应的,所述依据所述属性值,重构所述传感器网络的当前网络拓扑包括具体步骤:当所述汇聚节点接收到的数据包的序列号与所述汇聚节点中记录的序列号之差等于I时,检查所述数据包的前跳节点ID是否和所述汇聚节点记录的路径中对应位置的节点ID相同,如果相同,则将所述数据包的标记节点ID写入所述路径中对应位置,清空所述路径中从所述位置到所述汇聚节点之间的所有节点; 当所述数据包的序列号与所述汇聚节点中记录的序列号之差大于I时,检查所述数据包的标记节点ID是否和所述汇聚节点记录的路径中对应位置的节点ID相同,如果不相同,清空所述路径中“跳数-所述数据包序列号与所述路径中序列号之差”之后的所有节点,将所述数据包的标记节点ID写入所述路径中对应位置。
4.根据权利要求3所述的方法,其特征在于,所述网络拓扑变化规则包括:网络拓扑中变化路径的比例大于或等于比例阈值,且路径平均缩短距离大于或等于距离阈值; 相应的,所述判断所述拓扑比对结果是否满足预设的网络拓扑变化规则,具体包括:判断所述拓扑比对结果是否表明所述当前网络拓扑中相对于所述初始网络拓扑发生变化的路径的比例大于或等于比例阈值,且所述发生变化的路径的平均缩短距离大于或等于距离阈值。
5.根据权利要求4所述的方法,其特征在于,依据所述当前网络拓扑定位虫洞节点具体包括: 将所述当前网络拓扑中相对于所述初始网络拓扑发生变化的路径中距离所述汇聚节点最近且发生了距离缩短的节点确定为虫洞入口节点; 将所述路径中虫洞入口节点的下一跳节点确定为虫洞出口节点。
6.根据权利要求1或2所述的方法,其特征在于,在获取所述汇聚节点接收到的数据包中的属性值之后,在重构所述传感器网络的当前网络拓扑之前,还包括: 判断所述数据包的消息认证码属性值是否正确,如果正确,执行所述重构所述传感器网络的当前网络拓扑步骤,否则,报告路径中有虫洞攻击。
7.根据权利要求1或2所述的方法,其特征在于,在获取所述汇聚节点接收到的数据包中的属性值之后,在重构所述传感器网络的当前网络拓扑之前,还包括: 识别所述数据包的标记节点ID属性值字段内是否存有告警信息,如果有,定位所述标记节点ID的前一跳节点为虫洞节点,否则,执行所述重构所述传感器网络的当前网络拓扑步骤。
8.虫洞攻击定位装置,其特征在于,应用于传感器网络中的汇聚节点,所述装置包括: 获取模块,用于获取所述汇聚节点接收到的数据包中的属性值,所述属性值由其所经由的中间节点进行设置; 重构模块,用于依据所述属性值,重构所述传感器网络的当前网络拓扑,所述当前网络拓扑中包括每个源节点至所述汇聚节点的路径; 拓扑对比模块,用于将所述传感器网络的初始网络拓扑与所述当前网络拓扑进行比对,得到拓扑比对结果,所述初始网络拓扑为所述传感器网络在初始化完成时的网络拓扑; 规则判断模块,用于判断所述拓扑比对结果是否满足预设虫洞攻击的网络拓扑变化规贝U,如果是,触发定位模块; 定位模块,用于依据所述当前网络拓扑定位虫洞节点。
9.根据权利要求8所述的装置,其特征在于,所述属性值由其所经由的中间节点通过以下模块进行设置,包括: 第一判断模块,用于判断是否所述中间节点的信息列表中有与所述中间节点接收到的数据包所属源节点对应的记录,如果有,判断是否所述记录中序列号与所述数据包的序列号属性值连续,如果是,则触发第一设置模块; 第一设置模块,用于将所述中间节点的ID值写入所述数据包中属性值的前跳节点ID字段内,并触发第二判断模块; 第二判断模块,用于判断所述数据包的跳数属性值与所述记录中跳数是否相等,如果相等,触发第二设置模块,如果不相等,则触发第三设置模块; 第二设置模块,用于将所述数据包的跳数属性值加1,将由密钥、前跳节点ID和序列号计算得到的消息认证码写入数据包的消息认证码属性值字段内; 第三设置模块,用于将所述数据包的跳数属性值改写为所述记录中的跳数,生成告警信息,并将所述告警信息写入数据包的标记节点ID属性值字段内,将由密钥、前跳节点ID、序列号和跳数计算得到的消息认证码写入数据包的消息认证码属性值字段内; 第三判断模块,用于判断是否所述信息列表中有与所述数据包所属源节点对应的记录,如果有,判断是否所述记录中序列号与所述数据包的序列号属性值不连续,如果是,则触发第四设置模块; 第四设置模块,用于将所述中间节点的ID值写入所述数据包的标记节点ID属性值字段内,将由密钥、标记节点ID、由前跳节点ID和序列号计算得到的消息认证码和跳数计算得到的消息认证码写入数据包的消息认证码属性值字段; 第四判断模块,用于判断是否所述信息列表中没有与所述数据包所属源节点对应的记录,如果是,触发第五设置模块; 第五设置模块,用于将所述中间节点的ID值写入所述数据包的标记节点ID属性值字段内,将由密钥、标记节点ID、由前跳节点ID和序列号计算得到的消息认证码和跳数计算得到的消息认证码写入数据包的消息认证码属性值字段。
10.根据权利要求8或9所述的装置,其特征在于,所述重构模块包括: 第一判断子模块,用于判断所述汇聚节点接收到的数据包的序列号与所述汇聚节点记录的序列号之差是否等于I,如果是,则触发第二判断子模块,如果否,则触发第三判断子模块; 第二判断子模块,用于判断所述数据包的前跳节点ID是否和所述汇聚节点中记录的路径中对应位置的节点ID相同,如果相同,则触发第一重构子模块; 第一重构子模块,用于将所述数据包的标记节点ID写入所述路径中对应位置,清空所述路径中从所述位置到所述汇聚节点之间的所有节点; 第三判断子模块,用于判断所述数据包的标记节点ID是否和所述汇聚节点中记录的路径中对应位置的节点ID相同,如果不相同,触发第二重构子模块; 第二重构子模块,用于清空所述路径中“跳数-所述数据包中序列号与所述路径中序列号之差”之后的所有节点,将所述数据包的标记节点ID写入所述路径中对应位置。
11.根据权利要求10所述的装置,其特征在于,所述规则判断模块包括: 第一规则判断子模块,用于判断所述拓扑比对结果是否表明所述当前网络拓扑中相对于所述初始网络拓扑发生变化的路径的比例大于或等于比例阈值; 第二规则判断子模块,用于判断所述拓扑比对结果是否表明所述当前网络拓扑中相对于所述初始网络拓扑发生变化的路径的平均缩短距离大于或等于距离阈值。
12.根据权利要求11所述的装置,其特征在于,所述定位模块包括: 第一虫洞节点确定子模块,用于将所述当前网络拓扑中相对于所述初始网络拓扑发生变化的路径中距离所述汇聚节点最近且发生了距离缩短的节点确定为虫洞入口节点; 第二虫洞节点确定子模块,用于将所述路径中虫洞入口节点的下一跳节点确定为虫洞出口节点。
13.根据权利要求8或9所述的装置,其特征在于,还包括: 消息认证码判断模块,用于在所述获取模块获取到数据包的属性值之后,在所述重构模块重构拓扑网络之前,判断数据包的消息认证码属性值是否正确,如果正确,触发所述重构模块,否则,触发第一虫洞攻击报告模块; 第一虫洞攻击报告模块,用于报告路径中有虫洞攻击。
14.根据权利要求8或9所述的装置,其特征在于,还包括: 告警信息识别模块,用于在所述获取模块获取到数据包的属性值之后,在所述重构模块重构拓扑网络之前,识别所述数据包的标记节点ID属性值字段内是否存有告警信息,如果有,触发第二虫洞攻击报告模块,否则,触发重构模块; 第二虫洞攻击报告模块,用于报告所述标记节点ID的前一跳节点为虫洞节点。
【文档编号】H04W12/12GK103957526SQ201410214743
【公开日】2014年7月30日 申请日期:2014年5月20日 优先权日:2014年5月20日
【发明者】鲁力, 罗国星, 韩志罡, 刘永帅 申请人:电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1