无线传感器网络作为一种新型的无线网络形式,有着很好的发展前景。与此同时,由于无线传感器网络自组织、无控制中心和拓扑频繁变化等特点,其安全性也受到了越来越多的关注。无线传感器网络中的虫洞攻击就是一种主要针对网络路由协议的恶意攻击,该攻击通过扰乱网络路由层数据分组的传输,达到攻击整个网络的目的。现有的针对虫洞攻击检测和防御的相关研究中,有的方案引入GPS模块或者有向天线等辅助硬件,还有一些方案依赖于网络节点精确的地理位置信息或者节点之间的时钟同步来对攻击节点进行定位。这些方案对能量资源和处理能力都有限的网络节点来说,是很大的挑战。本文基于无线传感器网络反应式路由协议——AODV路由协议,不需引入辅助硬件,也不要求节点间时钟同步,仅通过对路由协议进行优化,来实现对虫洞攻击的防御。
虫洞攻击一般由至少两个相距较远的恶意节点合谋发起,合谋节点之间建立一条比正常节点间高效的私有信道。当虫洞攻击发起时,合谋节点之一在网络的一端获取网络中的数据分组,通过私有信道将数据分组传递至另一个合谋节点,然后该合谋节点再把数据分组重放回网络中。数据分组在私有信道的传递过程中被恶意节点实施选择性丢弃或者数据篡改等恶意行为,实现对网络的攻击。虫洞攻击模型如图1所示。
N1和N2是网络中相距较远的两个节点,两节点不在可通信范围之内。正常情况下,两者需要经过多跳路由才能实现互相通信。M1和M2是两个恶意节点,它们之间建立起一条私有信道。M1和M2分别处于N1和N2的通信范围,当N1发送数据时,M1会首先收到该数据,然后M1通过私有信道把该数据传递给其合谋节点M2。M2接收到数据后继续将其转发给N2。这样,N1和N2就会误认为彼此是邻居节点,M1和M2也因此获得路由权。
表面现象让我们觉得,如果虫洞合谋节点是忠实可靠的节点,虫洞私有信道反而形成了一条更加高效的网络链路,提供了一个高效的网络连接服务,有效地减少了数据传输的延时。但实际上,虫洞合谋节点在数据传递的过程中并不忠实于传递所有数据,而是对数据包实施选择性丢弃或者数据篡改等恶意行为。更严重的是,即使网络通信已经采用了加密或认证机制,恶意节点仍然可以发起虫洞攻击。
参考文献中提出了“数据包限制”机制,并采用一种有效的认证协议TIK来对虫洞节点检测和防御。该机制的主要思想是在数据分组中附加地理限制信息或者时间限制信息来限制分组的最大传输距离。数据分组接收节点依据附加在数据分组中的地理限制信息或者时间限制信息来计算自己到发送节点间的最大传输距离,由此判断数据分组来源的合法性。这种机制需要网络中节点真实的地理信息和精确的时钟同步。
参考文献从数据分组的延时出发提出了虫洞攻击的检测方案:记录从源节点到目的节点之间所有的不相交路径,然后计算出每条路径的长度和延时,进而得到每条路径平均每跳的延时。如果存在一条路径,其平均每跳的延时相比较于其他路径的平均每跳延时异常地大,那么就认为这条路径遭受到虫洞攻击。这种机制同样需要网络中节点的时钟同步。
参考文献基于数据包往返时间(RTT)的方法检测虫洞的存在,因为虫洞节点之间传输数据包的RTT必然大于真实邻居节点之间的RTT。这种方法虽然不需要额外的硬件,但是也需要网络中节点的时钟同步。
参考文献提出使用统计分析的方法进行虫洞检测。在虫洞攻击下,恶意节点所在的路径在路由表中出现的比例将很高。此方案统计出出现比例较高的路径,并使用测试包对其进行测试,由此来确定恶意节点。但是这种方法只适合在多路径协议中使用,对AODV等单播路由协议是失效的。
3 防御方案作为网络的管理者,应该清楚网络的规模与拓扑结构。在数据传输过程中,如果源节点和目的节点之间的路由要经过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)(0<a<b <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发出的数据包,然后直接传输至节点私有信道的另一端。恶意节点在私有信道的传输过程中对数据包进行随机丢包,以实现虫洞攻击的目的。
实验中,在部署了虫洞节点的网络环境中分别运行AODV协议和IAODV协议,并使用网络丢包率和网络吞吐量两个性能指标来对实验数据进行分析。实验数据分析结果如图4和图5所示。
如图4所示,在无线传感器网络的路由协议为AODV协议的情况下,网络数据包的丢包率在8.0%左右。而在IAODV协议的情况下,网络的丢包率降低至6.0%左右。两者2.0%的差距与本实验设置的遗失模型2.0%的丢包率是相互吻合的。数据说明了IAODV路由协议中的路由跳数判断机制将虫洞合谋节点创建的私有信道排除在安全跳数区间之外。
如图5所示,实验中为了在图中形象地表示数据传输的开始和结束,把开始和最后一笔记录的吞吐量数据均设为0。从图中可以看出,随着网络运行时间的逐渐增加,IAODV协议下的网络吞吐量要优于AODV协议下的网络吞吐量。这与图4中丢包率的差别也是吻合的。
结语
无线传感器网络是Ad Hoc网络的一种特殊形式,安全问题是无线传感器网络的关键技术。考虑到网络路由层数据传输的安全性,本文基于AODV路由协议提出一种针对虫洞攻击的防御方案,以降低在路由发现过程中选中含有虫洞私有信道的概率。实验仿真表明,改进协议对防御虫洞攻击有效。鉴于网络节点资源和处理能力的局限性、节点能量的有限性,以及网络拓扑的不确定性,本文提出的防御方案还有进一步优化的空间。