基于跳数的防御无线传感器网络中虫洞攻击方案
作为网络的管理者,应该清楚网络的规模与拓扑结构。在数据传输过程中,如果源节点和目的节点之间的路由要经过10跳左右才能实现源节点和目的节点的通信,而某一条路由仅经过5跳甚至更少的跳数就可以实现节点间通信,网络管理者就可以断定此路由遭受到了虫洞攻击。本文算法的提出正是基于这种思想。
在描述本文提出的算法之前,为了使描述更加清晰,首先对网络作如下假设:
①整个网络是一个分层结构;
②每个节点都有其唯一的ID;
③源节点和目的节点不是虫洞攻击的合谋节点;
④节点与其邻居节点之间进行直接通信,与非邻居节点之间以多跳方式进行通信。
本文提出的虫洞攻击防御路由算法IAODV是在AODV协议算法的基础上,增加了源节点路由跳数判断和路由随机选择机制。改进后的IAODV协议路由发现过程的算法描述如下:
①当源节点希望与目的节点进行数据传输,并且源节点路由表中没有到达此目的节点的有效路由时,源节点就会发起路由发现过程。
②源节点生成一个路由请求分组即RREQ分组,RREQ分组中包含其ID号、源节点地址、源节点序列号、目的节点地址、目的节点序列号和跳数计数器等信息,写入RREQ分组中,然后泛洪广播该RREQ分组。
③当中间节点接收到该RREQ分组后,首先检查RREQ分组的ID号和源节点地址信息,以确认自己之前是否已经处理过相同的RREQ分组。若是已经处理过,则丢弃该分组,以防止路由环路的出现。若之前没有收到过该RREQ分组,中间节点将做两项工作:一是更新本地路由表,更新内容包括目的序列号、定时器等;二是建立到达源节点的反向路由。完成上述更新工作后,中间节点将RREQ分组中的跳数加1,然后继续将其转发。
④当RREQ到达目的节点或者到目的节点路由的中间节点,目的节点或者该中间节点就会沿着反向路由向源节点回复路由响应分组,即RREP分组。RREP分组中包括目的节点地址、目的节点序列号、源节点地址以及源节点到目的节点的跳数值等信息。
⑤同转发RREQ分组的中间节点类似,转发RREP分组的中间节点也会做两项工作,一是更新本地路由表,二是建立从源节点到目的节点正向路由,为源节点向目的节点传送数据分组创建路由。完成上述更新工作后,中间节点将RREP分组中的跳数加1,然后继续转发,直至将RREP分组转发至源节点。
⑥源节点在接收到从目的节点转发来的第一个RREP分组后,并不立即传输数据。源节点首先会创建一个路由表,将RREP分组存储起来,同时设置一个定时器,等待随后从其他反向路由转播到源节点的所有的RREP分组。定时器时间的设置要使得源节点能接收到随后到达的所有RREP分组。另外,随后到达的RREP分组不对源路由保存的RREP分组作任何更新,这样能保证源节点可以接收到所有从源节点到目的节点的路由。
⑦定时器时间结束后,源节点将所有RREP分组的跳数字段中的跳数信息提取出来。
⑧利用分布函数模型,以路由跳数为随机变量X,其分布函数为F(X)。根据路由跳数的分布函数F(X),设置一个安全区间(a,b)(0ab 1),如图2所示。区间(a,b)的设置是灵活的,网络管理者可以依据网络规模和网络拓扑结构来调整区间值,以适应不同的网络环境。安全区间对应的跳数区间(i,j)称之为安全跳数区间。
⑨根据安全跳数区间,源节点将接收到的RREP分组里处于安全跳数区间内的路由保存起来,并在数据传输过程中随机使用这些路由。随机使用这些路由的目的在于:一是可以平衡节点能量的使用,延长网络寿命;二是即使包含在安全区间内的路由再次遭受攻击,随机使用安全跳数区间内的路由也能降低网络遭受虫洞攻击的概率。
另外,在此仅讨论路由发现阶段路由算法的改进,所以,路由维护过程所需要的控制分组(RRER、HELLO)在改进后的IAODV中保持和AODV中同样的分组格式。
4 实验分析
实验仿真是在Windows XP+Cygwin+NS2平台上完成的。实验内容主要包括虫洞攻击模块的仿真和改进协议IAODV协议移植至NS2平台后的仿真。
虫洞攻击中私有信道的建立是违背常规通信模型的。对私有信道的仿真要实现它的三种特性:高效性、隐蔽性和恶意性。为了使虫洞路径能够优于其他路径的延时和跳数,体现出其高效性,本实验采取的解决方案是对虫洞合谋节点和其余普通节点使用不同的无线信号功率,使得虫洞合谋节点之间的传输距离远远大于普通节点的信号范围。虫洞信道中传输的数据应该对外界隐蔽,为了模拟这个特性,需要在数据链路层中对虫洞链路设置对外的隐蔽性。为了模拟虫洞信道对传输数据的恶意性,本实验通过使用NS2中提供的无线遗失模型对虫洞信道设置了2%的随机丢包率。
通过使用NS2中的TCL脚本语言对网络属性的定义和对NS2相关源程序的修改,本实验建立起一个具有如下参数的网络仿真环境。
◆节点数:14个。
◆仿真时间:20 s。
◆环境大小:1000 m×1000 m。
◆传输半径:正常节点100 m,恶意节点250 m。
◆遗失模型丢包率2%。
如图3所示是本实验中网络仿真环境的拓扑结构。其中节点10被设置为源节点,节点2被设置为目的节点。节点0和1被设置为恶意节点,这两个节点之间建立起一条高质量的私有信道,吸引从节点10发出的数据包,然后直接传输至节点私有信道的另一端。恶意节点在私有信道的传输过程中对数据包进行随机丢包,以实现虫洞攻击的目的。
评论