基于跳数的防御无线传感器网络中虫洞攻击方案
无线传感器网络作为一种新型的无线网络形式,有着很好的发展前景。与此同时,由于无线传感器网络自组织、无控制中心和拓扑频繁变化等特点,其安全性也受到了越来越多的关注。无线传感器网络中的虫洞攻击就是一种主要针对网络路由协议的恶意攻击,该攻击通过扰乱网络路由层数据分组的传输,达到攻击整个网络的目的。现有的针对虫洞攻击检测和防御的相关研究中,有的方案引入GPS模块或者有向天线等辅助硬件,还有一些方案依赖于网络节点精确的地理位置信息或者节点之间的时钟同步来对攻击节点进行定位。这些方案对能量资源和处理能力都有限的网络节点来说,是很大的挑战。本文基于无线传感器网络反应式路由协议——AODV路由协议,不需引入辅助硬件,也不要求节点间时钟同步,仅通过对路由协议进行优化,来实现对虫洞攻击的防御。
1 虫洞攻击
虫洞攻击一般由至少两个相距较远的恶意节点合谋发起,合谋节点之间建立一条比正常节点间高效的私有信道。当虫洞攻击发起时,合谋节点之一在网络的一端获取网络中的数据分组,通过私有信道将数据分组传递至另一个合谋节点,然后该合谋节点再把数据分组重放回网络中。数据分组在私有信道的传递过程中被恶意节点实施选择性丢弃或者数据篡改等恶意行为,实现对网络的攻击。虫洞攻击模型如图1所示。
N1和N2是网络中相距较远的两个节点,两节点不在可通信范围之内。正常情况下,两者需要经过多跳路由才能实现互相通信。M1和M2是两个恶意节点,它们之间建立起一条私有信道。M1和M2分别处于N1和N2的通信范围,当N1发送数据时,M1会首先收到该数据,然后M1通过私有信道把该数据传递给其合谋节点M2。M2接收到数据后继续将其转发给N2。这样,N1和N2就会误认为彼此是邻居节点,M1和M2也因此获得路由权。
表面现象让我们觉得,如果虫洞合谋节点是忠实可靠的节点,虫洞私有信道反而形成了一条更加高效的网络链路,提供了一个高效的网络连接服务,有效地减少了数据传输的延时。但实际上,虫洞合谋节点在数据传递的过程中并不忠实于传递所有数据,而是对数据包实施选择性丢弃或者数据篡改等恶意行为。更严重的是,即使网络通信已经采用了加密或认证机制,恶意节点仍然可以发起虫洞攻击。
2 相关工作
参考文献中提出了“数据包限制”机制,并采用一种有效的认证协议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)(0ab 1),如图2所示。区间(a,b)的设置是灵活的,网络管理者可以依据网络规模和网络拓扑结构来调整区间值,以适应不同的网络环境。安全区间对应的跳数区间(i,j)称之为安全跳数区间。
无线传感器网络 虫洞攻击 AODV协议 IAODV协议 NS2仿真 相关文章:
- 传感器网络操作系统平台TinyOS下CC2420驱动组件的设计(11-27)
- 基于TinyOS的CC2430 RSSI定位的设计与实现(05-27)
- 一种基于移动基站的无线传感器网络数据收集方法(12-21)
- ZigBee无线传感器网络技术在油田信息采集系统中的(12-20)
- 基于无线传感器网络的LED路灯远程控制系统(12-02)
- 基于PIC32上实现TCP/IP网络协议和zigbee无线传感器网络的智能家(11-29)