基于跳数差异和局部监听的安全邻居发现方法与流程

文档序号:12493499阅读:242来源:国知局
基于跳数差异和局部监听的安全邻居发现方法与流程

本发明涉及无线传感网技术领域,尤其涉及传感网中的安全邻居发现,具体是一种基于跳数差异和局部监听的无线传感器网路安全邻居发现方法。

二、

背景技术:

由于无线传感器网络所具有的低成本、易于部署、可以实时监测目标的一些物理信息,并且可以代替人类长时间工作在恶劣环境中的优点,得到了广泛的应用。无线传感器网络最初起源于军队,通过将大量无线传感器节点部署到敌人阵地使军方可以实时监视敌人的行动以及敌人军火分布等重要信息,有利于军方采取及时有效的行动措施。但是将无线传感器网络部署到敌人阵地等恶劣环境中使其面临着众多的安全问题。从安全的角度来说,需要格外注意的协议就是邻居(在本发明中提到的邻居是直接邻居、一跳邻居)发现。这是因为无线传感器网络大多是自组织的,在组网前,节点缺乏周围邻居的信息,因此邻居发现是网络构建的第一步和路由的前提。安全可信的邻居发现是保证物理层和网路层的接入控制、数据包的路由和节点定位等高层网络协议安全和系统功能正常的基石。当邻居发现出现错误或失败,无线传感器网络的通信和其他应用就会受到影响。以下两个因素增加了确保安全正确的邻居发现的难度。一是,由于无线传感器网络使用的是无线信道,而该信道直接暴露在外界环境中,且传感器节点之间使用广播的方式进行通信,这就增加了通信信息被窃听和伪造的风险。二是,由于传感器节点受到存储空间、计算能力等各种资源限制,使得现有的一些安全技术如非对称密钥技术不能直接应用到无线传感器网络中。因此,如何保证安全正确的邻居发现是设计无线传感器网络面临的一项重要的挑战。

虫洞攻击是无线传感器网络中威胁邻居发现的最主要的攻击之一,它不但会引导正常节点之间建立错误的邻居关系而且会吸引大量的数据流,可以对流经的数据包选择性的丢弃。所谓虫洞攻击是指恶意节点在相距很远的不同网络区域内通过建立高速链路来将这些区域进行连接,使得原本相距很远、跳距很大的两个区域表现为相距很近、跳距很小,从而虫洞链路可以吸引大量的数据流。根据发动虫洞攻击的恶意节点的不同,也可以将虫洞攻击分为外部虫洞攻击和内部虫洞攻击。外部虫洞攻击,顾名思义就是由外部恶意节点建立的虫洞发起的攻击。由于外部恶意节点不拥有传感器网络中的密钥,不属于传感器网络,它们对传感器网络来说是透明的,因此其只能通过转发包的方式形成虫洞链路。虫洞链路的端点在窃听到信息包后,可以通过它们之间建立的通信链路将数据包转发到虫洞的另一端(比如物理层转发),这种通信链路可以是带外信道或有线网络,这就使得其不易被检测。内部虫洞攻击的发起者一般是传感器网络中的节点(被敌人挟持的节点)或是拥有传感器网络密钥的节点。这些节点之间相互串通形成虫洞链路,并且可以简单将数据包进行转发,也可以伪造、篡改数据包,其危害性更大,也更难检测。对于外部恶意节点形成的虫洞攻击来说,要想很成功的影响到整个网络,那么虫洞必须能够通过提供更短的路径来吸引大量的数据包,因此从源点出发到目的节点并且绕过虫洞的跳距一定远大于经过虫洞表现出来的跳距。而对于内部节点形成的虫洞攻击,如果敌人想制造很长的虫洞链路,则需要挟持很多的正常节点,然后这些被挟持的正常节点之间相互协助形成虫洞链路。但是由于邻居发现的时间通常很短,因此被挟持的节点的数量是少量的,这就使得内部恶意节点形成的虫洞的链路长度较短。

由于安全邻居发现的重要性,吸引了不少学者的注意,同时也有不少安全邻居发现方法被提出。根据方法中所利用的资源的不同,一般可以将安全邻居发现分为三类:基于时间的方法、基于位置的方法和基于连接的方法。其中基于时间的安全邻居发现方法都是在准确的时间测量的基础上展开的,这需要节点具备比较精准的同步时钟,比如TTM方法(Van Tran P,Le Xuan Hung Y K L,Lee S,et al.TTM:An efficient mechanism to detect wormhole attacks in wireless ad-hoc networks[C].Consumer Communications and Networking Conference,2007,pp.593-598.)。但是精准的时钟同步对延迟比较高的无线传感器网络来说是比较苛刻的条件。在节点的位置关系能安全的通知其他节点以及节点通信范围可知的条件下,基于位置的安全邻居发现方法能比较有效的确保正确的邻居发现。在知道对方节点的位置之后,节点将会检查信息包在它们之间传递所经过的跳数或时间来检测它们之间是否存在虫洞,如端到端的虫洞检测方法(Wang X and Wong J.An end-to-end detection of wormhole attack in wireless ad-hoc networks[C].Computer Software and Applications Conference 2007,COMPSAC2007,31st Annual International IEEE,2007,1:39-48.)。但是该类方法需要节点配备GPS或其他定位设备,增加了传感器网络的成本。由于基于连接的方法一般不需要额外的硬件设备,可以在现有节点硬件基础上实现,该类方法吸引了不少研究者的目光。TRM方法(Wu G,Chen X,Yao L,et al.An efficient wormhole attack detection method in wireless sensor networks[J].Computer Science&Information Systems,2014,11(3):1127-1141.)的思想是:在进行邻居发现之后,节点通过将自己的通信半径扩大一倍的方式查看其所有二跳邻居是否成为了其直接邻居,如果不是,则说明存在虫洞。但是这种方法也不太容易实现,首先,有的节点是不能够改变其通信辐射功率的;其次,即便是将节点的辐射功率增大一倍,由于环境的影响,也不能保证节点的通信半径一定增加一倍。RiteshMaheshwari(Maheshwari R,Gao J,Das S R.Detecting Wormhole Attacks in Wireless Networks Using Connectivity Information[J].Proceedings-IEEE INFOCOM,2007,pp.107-115.)等人提出了利用节点之间的连接将网络抽象成连通图,通过寻求连通图中是否存在不合理的子图的方式来检测虫洞的方法。该方法需要传感器网络是高度连通的;另外该算法只适用于集中式的传感器网络。SEDINE方法(Hariharan S,Shroff N B and Bagchi S.Secure neighbor discovery through overhearing in static multihop wireless networks[J].Computer Networks,2011,55(6):1229–1241.)是通过监听的方式来判断静态网络中数据包是否被其他节点转发,利用直接邻居节点作为某一条链路的证人,从而判断该链路是否存在虫洞。但是该方法不能应对恶意节点使用带外信道或者有线网络的方式转发数据包,而这种虫洞攻击方式也是比较常见的。还有的方法采用定向天线来进行虫洞检测,虽然这种方式也具有较好的效果,但是这种方法要求节点配备定向天线设备;另一方面,采用定向天线会降低整个网络的连通度。HayajnehThaier等提出的SECUND方法(Hayajneh T,Krishnamurthy P,Tipper D,et al.Secure Neighborhood Creation in Wireless Ad Hoc Networks using Hop Count Discrepancies[J].Mobile Networks&Applications,2012,17(3):415-430.)是利用节点之间的跳数差异来实现安全邻居发现的。其主要思想是通过寻找两个直接邻居节点彼此的邻居节点(除去共有邻居节点)之间的新的链路上所经过的跳距是否大于一定阈值来检查两个节点之间是否存在虫洞,如果存在则移除虚假的链路。

我们研究发现SECUND不能检测短距离的虫洞,而且传感器网络中未受虫洞影响的节点对一般是占绝大部分,而对于这些节点对,SECUND也需要经过很多跳来进行判断,导致其有一大部分不必要的能耗。因此,我们在SECUND和SEDINE的基础上提出了“基于跳数差异和局部监听的安全邻居发现方法”。在该方法中我们提出了“特有邻居”的概念,特有邻居是一个相对的概念,对于两个一跳邻居节点A和B来说,节点A的特有邻居节点是那些属于A的邻居但不是B的邻居的节点。通过检测节点特有邻居节点之间的跳数差异来判断是否存在虫洞。对于未受到虫洞影响的邻居对来说,它们的特有的邻居节点都是分布在通信范围中的一侧,相距比较近,因此通过特有邻居节点之间的跳数差异来检测虫洞相较于SECUND方法节省了较大部分能量。通过跳数差异和局部监听,我们的方法有着较好的虫洞检测性能。

三、

技术实现要素:

本发明的目的在于解决现有无需硬件设备的安全邻居发现技术虫洞检测性能不够好的问题。针对现有技术不能检测使用带外信道和有线网通信的虫洞或不能检测虫洞链路较短的虫洞的情况,将跳数差异应用于特有邻居来检测虫洞,同时将跳数差异与局部监听相结合提高虫洞检测成功率。

本发明的目的是这样达到的:

通过利用跳数差异来检测虫洞链路较长的外部虫洞,然后利用局部监听的方法来检测内部恶意节点形成的链路长度较短的虫洞。

具体做法是:

在进行外部虫洞检测时,每对邻居节点(比如A和B)首先计算出它们的共有邻居,然后可以得出它们的特有邻居节点。然后在A(B)的特有邻居节点之间寻找新的避开B(A)的邻居的链路,并计算该链路的跳数与一定阈值的大小,如果跳数大于阈值则认为存在虫洞,否则不存在。在进行内部虫洞检测时,要检测的每对邻居节点将它们自己和它们的共有邻居作为证人来监听它们之间的通信验证信息,如果它们自己或者超过一半的共有邻居节点监听到信息被转发,则认为存在虫洞,否则不存在。

在实施中具体步骤是:

第一步,进行邻居发现,可以使用其他低占空比的邻居发现方法来发现邻居,进而进行组网。在节点发现自己的一跳邻居时,目标区域的传感器节点广播加密的Hello消息,接收到Hello数据包的传感器节点将源点的ID加入邻居表中并记录收到的Hello包的信号强度,然后接收到消息的节点向源点发送经过认证的回复报文。源点接收所有在时间τ(τ为传感器网络中两个相邻的节点之间的最大通信延迟)内经过认证的回复,同时源点对这些收到的信息包进行验证并将验证通过的节点的ID加入到自己的邻居表中并记录收到的相应的信号强度。传感器节点进行完一跳邻居发现之后接着进行二跳邻居的发现,节点将自己的邻居表进行加密并广播给其邻居。同样的,接收到该数据包的邻居节点验证该信息包是否真实合法,若是,则进行相应的存储;然后接收节点将它自己的邻居表加密并回复给源点。源点在τ时间内收到其他节点的回复后进行验证,若验证通过,将节点的邻居表存储起来。如果在τ时间内,源点没有接收到其邻居表中的一些节点发来它们的邻居表,则源点将这些节点从其邻居表中删除。最后,如果源点确实将一些节点从其邻居表中删除了,则源点将其删除的邻居信息加密通知其他邻居节点,直到所有节点的邻居表不再发生变化。

第二步,利用跳数差异进行外部虫洞检测及邻居关系的修正。如图1所示,对于邻居关系A和B,节点A的直接邻居集合NA={B,C,D,E,I,J,K,L,N,O,P,Q},A的特有邻居集合为{I,J,K,P,Q}。对节点A来说,若不存在虫洞,如图2a所示,则A认为其特有邻居均分布在其通信范围的一侧,且这些特有的邻居节点之间的距离较小且跳距不会太大。但事实却是{I,J,K}与{P,Q}相距很远。A、B中的一个节点,比如A,通知其特有邻居集合中的节点寻找到该集合中其他节点绕过B的直接邻居节点的新的最短路径,并判断该路径的跳距是否超过一定阈值(虫洞阈值)来判断虫洞的存在。如果存在跳距大于虫洞阈值,如图3所示,则认为存在虫洞;若存在虫洞,则从直接邻居表中删除对方并通知其邻居。当两节点的特有邻居数量均小于2时,这种情况下节点A和B各自先计算其直接邻居节点平均的邻居数目h1,其次再计算其所有二跳邻居节点平均每个节点的邻居的数目h2,然后计算h1与h2的比值,所得结果与邻居比阈值的关系来判断是否存在虫洞(邻居比阈值是存在虫洞和不存在虫洞两种情况下节点的直接邻居数量的比值,由于虫洞的存在,其值大于1。经过实验验证,其值取为1.2可以取得较好的效果。),如果两节点计算的该比值均大于邻居比阈值则认为该节点附近存在虫洞,否则认为不存在虫洞。

其中虫洞阈值的计算如图2b所示,在没受虫洞影响的情况下,节点A与B是直接邻居关系,它们之间的距离为d(0<d≤r),节点A的两个特有邻居之间的绕过B的邻居节点的链路跳距最大的情况是两节点分别在E和F处,因此我们可以计算从E到F的绕过B的通信范围的距离来近似计算跳距。其中O是线段AB的中点,线段BE的长度为节点通信半径r,∠α为ΔBOE的内角,那么在ΔBEM中,线段EM的长度为由对称性,从E经过M、N到达F的折线的长度为可以通过该折线近似计算跳距。节点通信圆的半径为r,则从E到F的跳距大约为令对f(d)求导得:则f(d)是单调递减的,当d无限趋近于0时,趋近4。当d等于r时,f(d)最小,f(d)向上取整得3。因此虫洞阈值可以取值4。

第三步,利用局部监听的方式检测内部恶意节点形成的虫洞并进行邻居关系的修正。经过邻居发现阶段和外部恶意节点形成的虫洞的检测和邻居关系的修正后,每个节点可以知道它与其直接邻居形成的一跳链路上的证人;同时,每个节点也能确定其自身是哪些节点对形成的通信链路的证人。为了减少不必要的检测,节省能量,对邻居关系(比如AB)先要进行如下判断。首先,节点A和B中特有邻居集合不为空的节点,比如节点A,如图4所示(由于恶意节点M1的存在,使得A、B误以为是彼此的直接邻居),A收到的B的RSSI值为RSSIBA,A先计算其与节点B的共有邻居数量hAB,然后通知其特有邻居节点计算它们与它们收到RSSI值为RSSIBA±ω(ω为RSSI允许浮动的范围,ω一般取值为5dbm,对应的距离变化大约为1米)范围内的邻居节点之间公共邻居数目。A收到其特有邻居反馈的邻居数目后求平均值然后求hAB和的比值,通过判断所得结果与邻居比阈值之间的关系来判断是否需要进行内部虫洞的验证,如果大于邻居比阈值,则需要进行内部虫洞检测。进行检测时,要验证的节点对要先获得验证权。所谓验证权就是节点对在验证时该节点通信范围内其他节点不能发送消息以防冲突。验证时,两者中的一个节点,比如A,发送一个验证包,将目的地址设为B。然后A以及A和B的公共邻居作为证人进入监听状态。这些证人节点根据监听到的信息对AB之间的链路设标识,如果监听到信息被转发,则标识为-1;若监听到B的回复则标识为1,否则标识为0。验证阶段结束后,若节点A置标识为-1,则认为存在虫洞;否则,A向B及其与B的公共邻居发起标识收集,并求标识的和,若和小于或等于0,则认为存在虫洞,其过程类似于投票。若存在虫洞,A删除与B的邻居关系并通知其邻居。

到此,无论是外部恶意节点还是内部恶意节点形成的虫洞,都差不多被检测过了,安全邻居发现算法也就结束了。

本发明的积极效果是:

1、根据虫洞形成的原因将虫洞分为两类:外部虫洞和内部虫洞。并分别根据虫洞的特点寻找应对策略,细化了虫洞检测过程,提高了虫洞检测的成功率。

2、在检测外部虫洞时,将跳数差异应用于特有邻居集合,相较于其他使用跳数差异的方法,该方法可以大大减少跳数差异检测时的能量消耗。

3、利用邻居比阈值来检查是否需要进行内部虫洞检测,由于受虫洞影响的是少数节点对,因此使用该方法可以使大部分节点对避免能量消耗大的局部监听检测,减少不必要的能量损耗。

四、附图说明

图1是外部恶意节点形成的虫洞。

图2a是节点的特有邻居节点示意图,图2b是计算虫洞阈值的理论值的示意图。

图3是本发明使用跳数差异检测虫洞的示例图。

图4是本发明使用局部监听检测内部虫洞的示例图。

图5是本发明的总的流程图。

图6是利用跳数差异检测外部虫洞的流程图。

图7是利用局部监听检测内部虫洞的流程图。

图8是本发明在节点的度变化的情况下与其他方法的对比效果。

五、具体实施方式

本发明采用跳数差异与局部监听的方法来检测虫洞,具体分为利用跳数差异对外部恶意节点形成虫洞进行检测,利用局部监听对内部恶意节点形成虫洞进行检测。下面结合附图对本发明的具体实施方式作进一步的详细说明。

本发明大略可以分为两阶段,分别是邻居发现阶段和邻居验证阶段。其中,邻居验证阶段又可以分为外部虫洞检测及邻居关系修正和内部虫洞检测及邻居关系修正。

首先是第一阶段。

在将节点部署之后,所有节点将进行邻居发现。由于可能存在虫洞,所以该阶段的邻居发现结果可能不是正确的。在节点发现自己的一跳邻居时,目标区域的传感器节点比如节点A进行邻居发现,通过广播密钥Kbroad加密后向外广播Hello数据包(一跳广播),接收到Hello数据包的传感器节点比如B将A的ID加入邻居表中并记录其收到的Hello包的信号强度,然后B向A发送经过认证的回复报文。节点A接收所有在时间τ内经过认证的回复,同时A对这些收到的信息包进行验证并将验证通过的这些回复信息的节点的ID加入到自己的邻居表中并记录收到的相应的信号强度。传感器节点进行完一跳邻居发现之后接着进行二跳邻居的发现,比如节点A,A使用广播密钥Kbroad将自己的邻居表信息(包括每个邻居节点的ID以及收到的RSSI值)加密并广播给其邻居;同样的,接收到该数据包的节点比如B,验证该信息包是否真实合法,若是,则进行相应的存储;然后节点B将它自己的邻居表使用KBA进行加密并回复给节点A。节点A在τ时间内收到B的回复后进行验证,若验证通过,将节点B的邻居表存储起来。如果在τ时间内,节点A没有接收到其邻居表中的一些节点发来它们的邻居表,则节点A将这些节点从其邻居表中删除。最后,如果节点A确实将一些节点从其邻居表中删除了,则节点A继续使用广播密钥Kbroad将其删除的邻居信息加密并进行一跳广播,通知其邻居节点。

接下来是第二阶段。

首先是外部恶意节点形成的虫洞的检测及邻居关系的修正。如图1所示,由于恶意节点的存在,使得A、B误认为是彼此的邻居。此时,节点A的特有邻居集合为{I,J,K,P,Q}。首先节点A、B计算各自的特有邻居的数量,发现A的特有邻居数量大于2,于是A通知其特有邻居集合中的节点寻找到该集合中其他节点绕过B的直接邻居节点的新的最短路径,并判断该路径的跳距是否大于虫洞阈值。如果存在跳距大于虫洞阈值,如图3所示,则认为存在虫洞;若存在虫洞,则从直接邻居表中删除对方并通知其邻居。

接着,进行内部恶意节点形成的虫洞的检测及邻居关系的修正。如图7所示,A收到的B的RSSI值为RSSIBA,B收到A的RSSI值为RSSIAB。A先计算其与节点B的公共邻居数量hAB,然后通知其特有邻居节点计算它们与它们收到RSSI值在[R(ij)-ω,R(ij)+ω]区间范围内的邻居节点之间公共邻居数目。A收到其特有邻居反馈的邻居数目后求平均值然后求hAB和的比值。如果该比值大于邻居比阈值,则需要进行内部虫洞检测。获得验证权之后,节点A发送一个验证包,将目的地址设为B。然后A以及A和B的公共邻居作为证人进入监听状态。这些证人节点如果监听到信息被转发,则标识为-1,;若监听到B的回复则标识为1,否则标识为0。验证阶段结束后,节点A检查其所置标识,若标识为-1,则认为存在虫洞;否则,A向B及其与B的公共邻居发起标识收集,并求标识的和,若和小于等于0,则认为存在虫洞。若存在虫洞,A删除与B的邻居关系并通知其邻居。

实验的仿真图如图8所示,其中虫洞阈值取值为4,邻居比阈值取值为1.2,实验运行20次,然后求平均值。这幅图描述的是本发明方法与其他两种经典安全邻居发现方法的错误邻居数目随节点的度的变化情况。由于本发明详细分析了虫洞的特点,根据虫洞的特点寻找应对策略,细化了虫洞检测过程,提高了虫洞检测的成功率。从图8中明显的可以看到本发明方法要优于其他两种方法。

本发明的用户使用场景举例:

场景一:红军、蓝军两军对垒。为监视敌方情况,了解敌方行动,红军通过炮弹向蓝军阵地发射了一些传感器节点。蓝军已经想到红军可能会利用传感器节点来监视自己,因此,事先在自己的阵地中安置了一些传感器节点,为了干扰、误导红军的传感器的工作,蓝军将自己部署的传感器节点通过高速有线网络连接,并将这些节点的通信频道设置成和红军的一样。在这种场景下,红军可以利用该方法来保护自己的传感器节点正常工作。

在上述场景中,本发明的方法取得了好的效果。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1