无线传感器网络中防范选择性丢弃的途中过滤策略
章曙光1, 2, 周学海1, 杨峰1, 徐军1    
1. 中国科学技术大学计算机科学与技术学院, 合肥 230027;
2. 安徽建筑大学电子与信息工程学院, 合肥 230601
摘要

针对现有的虚假数据过滤策略难以防范合法数据包被恶意节点选择性丢弃的问题,提出了防范数据包选择性丢弃的途中过滤策略.策略中每个节点保存其1跳和2跳邻居节点的身份标识及单向链密钥,转发的数据包中附加的是L个节点的最新单向链密钥,而不是像传统途中过滤策略那样附加消息认证码.通过通信节点之间的共同邻居节点监听,采用逐步认证的方式递交数据包.实验结果表明,该策略不仅可高效过滤虚假数据,而且可防范途中恶意节点选择性丢弃合法数据包.

关键词: 无线传感器网络    邻居节点监听    选择性丢弃    途中过滤         
中图分类号:TP393 文献标志码:A 文章编号:1007-5321(2016)01-0068-06 DOI:10.13190/j.jbupt.2016.01.012
En-Route Filtering Strategy Against Selective Discarding in Wireless Sensor Networks
ZHANG Shu-guang1, 2, ZHOU Xue-hai1, YANG Feng1, XU Jun1    
1. School of Computer Science and Technology, University of Science and Technology of China, Hefei 230027, China;
2. School of Electronic and Information Engineering, Anhui JianZhu University, Hefei 230601, China
Abstract

Aiming at the problem of current false data filtering strategies that cannot prevent legitimate packets from discarded by the malicious nodes selectively, an en-route filtering strategy was put forward against selectively discarding packets. In this strategy, each node keeps its one-hop and two-hop neighbor nodes' identifications as well as one-way chain keys. Moreover, what the forwarded packets attached is the latest one-way chain keys of L nodes, not the message authentication codes in traditional en-route filtering strategies. Additionally, this strategy uses the stepwise certification to submit data packets by monitoring the communications between common neighbor nodes. Experiment shows that the strategy not only can efficiently filter false data, but also can prevent malicious nodes from selectively discarding packets.

Key words: wireless sensor networks    neighbor watch    selective discarding    en-route filtering    

拒绝服务(DoS,denial of service)和选择性丢弃攻击是无线传感器网络中常见的两种攻击形式. 途中过滤是防范DoS攻击的一种常用策略,其隐含的前提是假设途中转发节点都为合法节点. 目前的研究策略[1, 2, 3]主要是利用途中合法节点预保存的密钥信息对数据包中附加的消息认证码(MAC,message authentication code)进行验证,从而过滤虚假数据. 防范选择性丢弃策略,其隐含的前提则是假设转发的数据包都为合法的数据包. 目前的研究策略[4, 5, 6]主要是采用多路径转发或识别发动选择性转发攻击的恶意节点来确保数据包能被Sink节点接收到.

当远程恶意节点发动DoS攻击,而途中恶意节点与之配合发动选择性丢弃攻击时,若网络中存在丢包行为,则难以区分所丢弃的数据包是正常节点过滤掉的虚假数据还是恶意节点丢弃的合法数据. 若不理会丢包行为,则可能导致Sink节点难以接收到远程的监测信息;若盲目转发数据包,则加剧了DoS攻击. 针对该问题,笔者提出了一种防范选择性丢弃的途中过滤策略(EFASD,en-route filtering strategy against packet selective discarding).

1 方案描述 1.1 网络模型

假定无线传感器网络为一个静态网络,应用在一个规模较大的环境下,节点分布密集,通信半径相同,事件发生时至少有L个以上节点感应到事件的发生. Sink节点功能强大,安全性高,一般难以被俘获. 假定在网络的部署和初始化阶段的一段时间里,网络的状态是安全的,可确保在密钥的生成、邻居节点的识别、路由的建立等操作过程中,相关信息不被敌方俘获. 文献[7]证明了采用适当的部署策略和保护措施,在实际环境中是可以实现的.

1.2 策略的基本思想

EFASD策略中,各节点在网络初始化阶段,通过节点之间的信息交换,记录其1跳和2跳邻居节点的身份标识(ID,identification)及对应节点的单向链密钥K0. 当事件发生时,融合的数据包中需附加L个邻居节点的最新单向链密钥对数据包进行认证,这和传统过滤策略中的MAC认证不同.

当上游节点向下游节点转发数据包时,两相互通信的邻居节点也收到该数据包,并利用其保存的1跳和2跳邻居节点的最新单向链密钥对数据包进行验证,验证通过则向下游节点发送确认(ACK,acknowledge)包. 下游节点收到ACK包后,选择L-1个认证通过的ACK包节点及对应的最新单向链密钥替换原数据包中附加的认证信息,并将重组后的新数据包转发给自己的下一跳节点,途中各节点重复上述过程,直至Sink节点收到该数据包. 策略模型示意图如图 1所示.

图1 系统模型示意图

本策略中,数据包、ACK包格式如图 2所示. 其中,SrcID表示发送包的节点标识符,DstID表示目标节点的标识符,ImmID表示最后转发包的节点标识符,Route表示转发包的下一跳节点标识符,Packet_Src表示发起数据包节点,Packet_ID表示发起数据包节点设置的序列号,利用(SrcID,Packet_ID)保持数据包的唯一性,R表示事件报告,E表示加密操作,Mj为对称密钥KSrc,Dst对发送ACK包节点的最新单向链密钥KSrcj加密后的值,即Mj=E(KSrc,Dst,KSrcj).

图2 包格式
1.3 密钥分配与网络初始化

部署前,由密钥服务器在有限域Fq(q为一个足够大的质数,以容纳加密密钥)生成一个对称的二元k次多项式:

f(x,y)=$\sum\limits_{i,j=0}^{k}{{}}$aijxiyj=ak0xk+a(k-1)1xk-1y+…+a0kyk

该多项式满足f(x,y)=f(y,x)的性质,其中aij为多项式系数,各aij完全不同. 之后将该多项式分发给每个节点,各节点如u利用函数f(x,y)生成新的函数gu(y)=f(qu,y),其中qu代表u节点的ID,之后删除公共函数f(x,y). 当知道邻居节点的ID后,通过计算,可建立与邻居节点之间的对称密钥.

此外,每个节点需分发一个标志身份的唯一ID、一个公共的单向密钥生成函数F(x),时间阈值Tw1Tw2.

各节点如a随机生成一个随机数ran,利用单向密钥生成函数F(x)生成密钥Kam=F(ran‖qa),‖表示数据的顺序连接,之后通过函数Kaj=F(Kaj+1)生成对应的m+1个单向链密钥〈Ka0,Ka1,…,Kam〉. 为便于节省内存空间,每个节点仅保存自己的⌈m/d1⌉+d2个单向链密钥,其中⌈m/d1⌉表示间隔为d1的若干个密钥组,d2表示待使用的单向链密钥组.

当节点被部署到某一区域后,各节点如a广播包含自身ID和Ka0信息的数据包给自己的1跳邻居节点,其邻居节点如b收到后,记录收到的邻居节点a的ID和Ka0,然后将自己收到的所有1跳邻居节点的ID和K0广播给自己的1跳邻居节点保存. 利用该方式,网络中各节点记录了其1跳和2跳邻居节点的ID和K0,同时各节点将自己的1跳邻居节点的信任度置为1.

1.4 数据包的生成

当传感器监控某区域的事件发生时,最先收到L-1个邻居节点发送侦查数据的节点当选为簇头节点. 之后簇头节点收集相关节点的感知数据,依据一定融合策略生成融合数据e,并在簇内广播数据e,簇中各节点如vi依据应用要求及传感器精度判断融合数据是否和自己检测到的数据在预定的阈值范围内,如符合要求,计算与簇头节点共享的对称密钥Kvi,CH,并用该密钥对自己选取的最新密钥Kviji进行加密E(Kvi,CH,Kviji),并发送给簇头节点.

当簇头节点收到反馈数据后,首先检查发送数据的节点如vi是否来源于其邻居节点,之后计算与节点vi共享的对称密钥Kvi,CH,解密后获得节点vi的最新单向链密钥Kviji,并对之进行验证.

簇头节点从验证通过的节点中选取L-1个节点及自己的ID、最新单向链密钥等相关信息生成事件报告R,利用多跳转发的方式发送给Sink节点. R的格式为

CH$\xrightarrow{R}$ Sink:e,qCH,KCHjCH,qv1,Kj1v1,…,qvt-1,Kvt-1jt-1

1.5 路由节点的选择策略

当簇头节点CH生成数据包后,从自己的路由表中选择信任度大于系统规定阈值的某下游节点如u1,通过自己的2跳邻居信息表查找CH和u1的共同邻居节点,统计共同邻居节点中信任度大于系统规定的阈值的节点个数,若大于L,则将数据包转发给节点u1,否则从路由表中选择其他节点转发. 途中各转发节点采用和上述相同的策略选择下一跳节点,直至将数据包递交给Sink节点.

1.6 途中节点的过滤及转发过程

在数据包转发过程中,相互通信两节点的共同邻居节点即监听节点也将收到该数据包,通过检查数据包中ImmID和Route域,即可判断出自己是监听节点还是途中转发节点. 如图 1所示,发送节点(如u1)、接收节点(如u2)及监听节点(如v7v8v9等)的处理过程如下.

监听节点的工作主要有:

1) 验证数据包中的节点ID、单向链密钥个数是否都等于L,若不等则不处理该数据包;

2) 验证u1是否是自己的邻居节点,同时验证其他节点是否是u1的邻居节点,若存在不合法节点则不处理该数据包;

3) 检查数据包的SrcID和Packet_ID域,判断自己缓冲区是否存在对应记录;

① 若对应记录不存在,则将该数据包按格式〈SrcID,Packet_ID,ImmID,Route,Send,Time〉保存到该缓冲区中,并将Send值置为0,其中Send域表示该数据包是否已被Route节点所转发,Time值为接收数据包时间. 之后,验证附加的L个单向链密钥的合法性,若验证通过,更新相关单向链密钥,选取自己的新单向链密钥,计算与u2节点共享的对称密钥,加密后向节点u2发送ACK包;若存在不合法密钥,则只更新合法的单向链密钥.

② 若该数据包对应记录已存在,且Send值为1,不处理该数据包.

③ 若该数据包对应记录已存在,且Send值为0,则计算当前时间和Time之差,若差值大于系统规定的阈值Tw1且小于Tw2,表明Route域对应节点即u2节点未转发该数据包,该数据包为发送节点u1选择其他下游节点重新转发的数据包,则将缓冲区中对应记录的Time改为当前接收数据包时间,并用新Route值替换记录的旧Route值,之后,判断该数据包中各节点对应单向链密钥是否和自己保存的一致,若一致向新Route域对应节点发送ACK包,否则不处理该数据包.

4) 在Tw1时间内监听并验证u2节点转发的数据包,验证通过则更新相关单向链密钥;

5) 各监听节点若在Tw2时间内未监听到u2节点转发该数据包且u1节点未重发该数据包,各监听节点按数据包的生成策略选择一个合适节点如vi作为簇头节点,由节点vi转发该数据包.

接收数据包节点u2的主要工作为:按照监听节点的类似方法对数据包中附加信息的合法性进行验证,同时接收监听节点发送的ACK包,提取监听节点的最新单向链密钥,选取认证通过的L-1个监听节点和自己的ID及对应最新单向链密钥,替换原数据包中的L个节点的ID及对应密钥后,转发给自己的下一跳邻居节点u3.

发送数据包节点u1的工作主要为:监听u2节点是否转发数据包,并验证该数据包的合法性,合法则更新相关单向链密钥,并将u2节点的信任度增加0.1;若验证不通过或在Tw1时间内未转发该数据包,则将u2节点的信任度降低为原值的1/2,并选取其他合法下游节点重新转发.

2 方案应对各种攻击分析

1) 恶意节点向下游正常节点发送虚假数据包

当途中正常节点如u2收到其上一跳恶意节点u1发送的虚假数据包时,由于u1难以伪造自己1跳邻居节点中L个合法节点的最新单向链密钥,其发送的虚假数据包将被u2节点或u1u2的共同邻居节点识别出来,并将被u2节点过滤掉.

2) 途中恶意节点有选择性地丢弃合法数据包

当途中恶意节点如u2有选择性地丢弃上一跳节点发送u1的合法数据包时,u1节点将侦测该异常行为,降低u2的信任度,同时重新选择一个合适的下一跳节点转发数据包.

3) 簇头节点的邻居恶意节点发动恶意攻击

当恶意节点伪造数据发送给簇头节点时,由于其值通常明显异常,该值将被簇头节点丢弃掉. 当恶意节点用虚假的单向链参与认证时,该虚假密钥也将被簇头节点识别出来.

4) 相邻的两个恶意节点发动合谋攻击

合谋攻击情形1:恶意节点u1向下一跳恶意节点u2发送虚假数据包,而u2节点转发该数据包. 此情形下,u1u2节点的共同邻居节点将识别出该数据包为虚假数据包,由于不发送ACK包,u2节点将无法重组一个不被下游节点识别的数据包.

合谋攻击情形2:恶意节点u1将合法数据包转发给恶意节点u2后,u2节点丢弃该数据包,u1不转发数据包. 此情形下,u1u2的共同邻居节点将验证出该数据包为合法数据包,若在Tw1时间内未监听到u2发送数据包,且在Tw2时间内未监听到u1重发该数据包,各监听节点将选择一个合适监听节点如vi,由节点vi转发该数据包.

3 性能分析与仿真实验 3.1 延迟开销

新策略中延迟开销主要体现在两个方面:① 途中节点验证数据包中附加L个单向链密钥合法性所需花费的时间;② 途中节点收集认证其邻居监听节点发送的ACK包所需的等待时间. 延迟开销要比基于统计的途中过滤(SEF,statistical en-route filtering)方案[1]等相关策略高,但SEF等策略难以识别途中恶意节点选择性丢弃合法数据包的行为,导致Sink节点收到第1个合法数据包的时间要比本策略高很多,甚至根本收不到. 此外,SEF策略过滤一个虚假数据包所需的跳数也比本策略的1跳过滤要高得多.

3.2 能耗开销

节点附加的认证个数L越大,算法的过滤性能越好,L值一般需大于等于2,但L值越大,数据包的长度也越长,传输过程中消耗的能量也越多,综合考虑,算法将L值设置为5. 设数据包和ACK包头长度都为H,附加的认证个数L为5,数据包中纯数据e的长度为24B,密钥号为10bit,节点ID的长度为2B,MAC的长度为64bit,单向链密钥的长度为32bit,则SEF策略中数据包长度为H+70B,本策略中数据包长度为H+54B,各监听节点发送的ACK包长度为H+8B. 由于相关节点需监听邻居节点的行为,本策略消耗的总能量较大. 但若路径中存在恶意节点并丢弃合法数据包时,SEF等策略会导致合法数据包经过多跳传输后被丢弃,不仅浪费了节点能耗,也导致Sink节点难以收到合法数据包. 而新策略能以较高的概率确保数据包被递交给Sink节点且过滤虚假数据一般只需1跳,总能耗大大降低.

3.3 存储开销

本策略中,每个传感器节点需要存储一个一元n次多项式、⌈m/d1⌉+d2个单向链密钥、1跳邻居节点的ID和对应的单向链密钥及信任度值、2跳邻居节点的ID和对应的单向链密钥、每个1跳邻居节点所对应的2跳邻居节点. 节点保存一元n次多项式大约需占用(n+1)log q位个存储空间,假设n的值为10,q的值为264,则所需空间约为88B. 假设每个节点的邻居节点平均为c个且均匀布置,则每个节点的2跳邻居节点的个数为3c个. 每个节点的2跳邻居节点的ID和对应的单向链密钥用一个一维数组来保存,假设单向链密钥的长度为4B,节点ID的长度为2B,节点信任度为1B,则每个节点需要保存的1跳邻居节点的ID和对应的2跳邻居节点的ID的字节数为2(c+c2),需保存的单向链密钥字节数为4c(2+4),合计为(⌈m/d1⌉+d2)×4+2(c+c2)+4c(2+4)+c字节的存储空间. 如m=2000,d1=100,d2=10,c=20,则总耗费大约需要1548B的存储空间,满足传感器节点的要求.

3.4 仿真实验

利用OMNET++建立了模拟仿真平台,通过实验来对比分析SEF和EFASD策略的抗数据包丢弃性和途中过滤虚假数据性能.

将2000个节点随机部署在500m×500m的区域,通信和感知半径设置为29.8m,这样节点的平均度数为20. 对于SEF,密钥池大小为400,分成20个分区,每个分区有20个密钥,每个节点随机选取一个密钥分区的10个密钥存储. 此外2个策略的节点附加认证个数L都设置为5.

1) 抗数据包丢弃性能对比分析

首先在网络中随机部署一些恶意节点(1~50),接着在网络中随机选取一个非恶意节点发送一个合法的数据包给Sink节点,最后检测Sink能否收到该数据包. 实验重复1000次,统计数据包被成功传输到Sink节点的成功率,其结果如图 3所示. 可以看出,随着恶意节点的增多,在SEF策略中合法的数据包到达Sink节点的成功率越来越低,当网络中存在50个恶意节点时,合法数据包到达Sink节点的成功率只有67%,而EFASD的成功率为95%. 从对比的数据可以看出,EFASD具有非常有效的抗数据包恶意丢弃的能力.

图3 合法数据包到达Sink节点的成功率

2) 途中过滤虚假数据性能对比分析

假设恶意节点之间可以相互通信,并可发动合谋攻击. 实验将从过滤的成功率和过滤前虚假数据包被传输的平均跳数两个方面来衡量两个策略的过滤能力. 虚假数据包被过滤成功率如图 4所示. 可以看出,随着恶意节点数目的增多(1~50),SEF的过滤成功率呈指数型下降趋势,当网络恶意节点数量超过8个时,SEF过滤能力几乎为0;而EFASD则可有效应对多恶意节点合谋攻击,即使网络中存在多达50个恶意节点时,仍能达到71%的过滤成功率.

图4 虚假数据包过滤的成功率

虚假数据包被过滤前在网络中传输的平均跳数如图 5所示. 由于恶意节点之间可以相互配合发动合谋攻击,当网络中恶意节点数量超过8时,SEF几乎没有过滤能力,故在仿真实验中仅讨论了网络中恶意节点数量在1~8时的情况. 从图 5中可以看出,SEF过滤虚假数据包所需的平均传输跳数明显高于EFASD,且随恶意节点数量增加而增加,而EFASD只需常数跳就可过滤虚假数据包.

图5 虚假数据包被过滤前平均传输的跳数

综上可知,EFASD策略不仅能够应对恶意节点的选择性丢弃,而且可高效过滤虚假数据.

4 结束语

针对现有的虚假数据过滤策略难以防范合法数据包被选择性丢弃的问题,提出了一种EFASD策略,该策略采用逐步认证的方式递交数据包,不仅可识别虚假数据,而且可识别出合法数据被选择性丢弃的行为.

参考文献
[1] Ye Fan, Luo Haiyun, Lu Songwu, et al. Statistical en-route filtering of injected false data in sensor networks[J]. IEEE Journal on Selected Areas in Communication, 2005, 23(4):839-850.[引用本文:2]
[2] 章曙光, 周学海, 杨峰, 等. 无线传感器网络中基于邻居节点监听的虚假数据过滤策略[J]. 中国科学技术大学学报, 2014, 44(4):317-324. Zhang Shuguang, Zhou Xuehai, Yang Feng, et al. False reports filtering scheme based on neighbor watch for wireless sensor networks[J]. Journal of University of Science and Technology of China, 2014, 44(4):317-324.[引用本文:1]
[3] 刘志雄, 王江涛, 王伟平, 等. 传感器网络中一种基于单向哈希链的过滤方案[J]. 软件学报, 2014, 25(10):2385-2396. Liu Zhixiong, Wang Jiangtao, Wang Weiping, et al. One-way hash chain based filtering scheme in wireless sensor networks[J]. Journal of Software, 2014, 25(10):2385-2396.[引用本文:1]
[4] Karlof C, Wagner D. Secure routing in wireless sensor networks:attacks and countermeasures[J]. Ad Hoc Networks, 2003, 1(2):293-315.[引用本文:1]
[5] Cui Biru, Yang S. NRE:suppress selective forwarding attacks in wireless sensor networks[C]//2014 IEEE Conference on Communications and Network Security. CA:IEEE Press, 2014:229-237.[引用本文:1]
[6] Xiao Bin, Yu Bo, Gao Chuanshan. CHEMAS:indentify suspect nodes in selective forwarding attacks[J]. Journal of Parallel and Distributed Computing, 2007, 67(11):1218-1230.[引用本文:1]
[7] Zhu Sencun, Setia S, Jajodia S. LEAP:efficient security mechanisms for large-scale distributed sensor networks[C]//the 10th ACM Conference on Computer and Communications Security. USA:ACM Press, 2003:62-72.[引用本文:1]