一种无线传感器网络的安全性分析方法与流程

文档序号:11410764阅读:613来源:国知局
一种无线传感器网络的安全性分析方法与流程

本发明属于物联网安全领域,特别是涉及一种无线传感器网络安全性分析方法。



背景技术:

无线传感器网络作为物联网的重要组成与技术支撑,其安全问题受到人们越来越广泛的关注。无线传感器网络不同于有线网络,因其协议多样性与网络动态性,网络安全性受到极大威胁。现有的无线传感器网络安全检测系统没有对协议形式化分析,也没有对攻击类型做深入研究。这致使其检测到的攻击类型不够全面,检测效果可靠性差。现有的安全检测方法受到特定协议的局限性,每个方法只能针对一个协议,难以移植应用到其它协议。

无线传感器网络的网络拓扑会随不稳定的环境因素而动态改变,而网络传播只能通过广播的形式。这两个特点使得无线传感器网络的安全性受到挑战。在无线传感器网络的众多安全问题中,最严重的威胁就是在组网与传输部分,容易受到中间人攻击、泛洪攻击、女巫攻击、选择性转发攻击等。可能造成严重的国家财产损失与人民安全威胁,例如输电网络中的偷电漏电、森林火警的警报失效、智能家居的隐私泄露等。

传统网络的安全检测方法不能直接应用于无线传感器网络系统的主要原因有两点:1、无线传感器网络资源有限。无线传感器网络的电量、cpu、内存、带宽等关键资源非常有限,检测系统会严重影响原有网络的运行,使原有无线传感器网络失去了低能耗、低成本的优势;2、无线传感器网络协议不完善。无线传感器网络技术刚刚起步,无线传感器网络协议还没有形成统一的标准,厂商之间的协议均有不同,目前没有一个稳定的无线传感器网络安全协议,也没有成熟的攻击类型分析。研究者只能根据自己的理解去构造攻击者,检测能力不能得到检验与保障。所以需要一个更加全面、更加可靠的安全检测机制,这也是建立无线传感器网络安全检测平台的目标。



技术实现要素:

为了克服现有技术中无线传感器网络的安全检测经常出现分析不全面、研究者很少将一个协议的所有攻击类型全部分析到位的问题,本发明提出了一种无线传感器网络的安全性分析方法,主要用于对无线传感器网络协议进行形式化分析,根据不同的协议,结合“攻击点”模型实现自动化的分析,得到该协议的全部攻击类型。

本发明提出了一种无线传感器网络的安全性分析方法,该方法包括以下步骤:

步骤一、进行awn形式化语言扩展设计,扩展设计所包含的定义内容具体为:

将顺序进程定义为:

p=e1→e2→...→en

其中,e为组成顺序进程的事件序列的事件,n为事件编号;事件包括修改变量值e:={x=a},x为程序中待修改的变量,a为变量值,e:=send(msg)为发送数据包,e:=receive(msg)为接收数据包;

将同步进程定义为:

p=p2<<p1,p1、p2分别表示两个进程;

将并发进程定义为:

p=preceive|||psend|||phandle,

preceive、preceive、phandle表示一个节点内部,同时存在的一个接收程序、一个发送程序一个接收的处理程序;

将阻塞进程定义为:

p1=[condition]p2

其中,condition表示进程p2需满足的条件,这样进程p2都会满足阻塞条件后,进程p1才继续执行;

将进程状态转移定义为:

p1=e1

p2=e2→e1=e2→p1

表示进程状态转移是随着事件的发生,进程的状态会随之转移的情形。

将上述的顺序进程、并发进程、同步进程、阻塞进程四种进程之间的以下关系分别定义为:

定义有阻塞条件的顺序进程为:

其中,condition.e2代表对condition中的变量,用e2的操作来更新。

定义同时具有转移关系的同步进程为:

,(e2=receive(msg),e1=send(msg))

表示如果进程p1与p2不涉及收包、发包的事件,执行任何一个进程的第一个事件;而如果涉及到了p2的收包事件,或者p1的发包事件,必须两个事件同时执行,且将p1的msg信息传递给了p2;

对于并发进程,其状态转移规则为:对任意一个并发的进程可以执行其第一个事件,表示为:

对于阻塞进程,其执行条件为,当condition满足阻塞要求时,执行后面的操作;在下面的公式中,符号|=代表条件condition“满足”条件(var==rval),事件τ代表“空事件”,

至此,所有awn语言的语法规则已经定义好;

步骤二、基于扩展的awn形式化语言,进行无线传感网络协议(aodv)形式化描述,具体包括如下几点:

网络模型描述:

定义节点进程np、节点从信道接收包的接收进程rcp;

针对每个节点i(1≤i≤n),有节点的进程与节点收包进程同步;表示为:

npi<<rcpi(1≤i≤n)

将一个节点b发送消息给节点a的过程表示为:

npa<<rcpa<<npb

含义是:每一个节点b的节点进程npb与节点a的收包进程同步,同时,节点a的节点进程npa与自己的接收进程rcpa同步,即三个进程同步;

用一个进程组每个网络来表示网络的联通状态与运行状态;

步骤三、构建并分析无线传感网络aodv协议模型,包括构建aodv协议的模型、构建含有攻击者的网络模型,该模型具体包括;

构建aodv协议的模型:

将aodv协议节点主进程用三个协议的进程并发来表示:

np()=handlemsg()|||sendmsg()|||recmsg()

分别为处理消息、接收消息和发送消息;

另外,将节点的运行定义为处理ack信息量的进程handleack;

构建含有攻击者的网络模型:将攻击者节点的攻击进程表示为ap,与其有关的攻击接收进程表示为arcp,依据攻击者节点的进程arcp和其它节点的接收进程rcp构建一个进程组来表示每一个含有攻击者的网络模型。

步骤四、生成攻击者模型,具体包括:

将攻击点描述为按照六个操作中某种特定的条件执行的结果,这六个操作即为广播broadcast、单播unicast、组播groupcast、确认ack、收包receive与更新路由表rtupdate;

将攻击类型描述为破坏原有路由breaking、阻止新路由建立preventing、渗透penetrating和资源消耗攻击consuming这四种类型,;攻击点模型是对所有攻击者集合的一个有交集的覆盖,也就是一个攻击类型可能包含一个或多个攻击点,一个攻击点可以导致多个攻击类型;

四种攻击类型所对应的无线传感器网络基本事件及其条件,如下所示:

规则1:breaking;执行更新路由表rtupdata(valid==false)多次;

规则2:preventing;阻止执行更新路由表rtupdata();

规则3:penetrating;单播unicast(type==data,dip==m);

规则4:consuming;执行广播broadcast或者组播groupcast多次;

搜索,确认哪些receive值会导致最终执行到4条规则所描述的awn对应语句,确定攻击者行为;

将攻击者的攻击入口设定为对应的是正常节点收包事件receive;

步骤五、生成对应检测方法,包括基于误用例检测方法与异常检测方法。

与现有技术相比,本发明具有以下效果:

1、提高了检测效果的通用性,可以检测到所有可能的攻击,并且可以检测所有攻击者类型;同时,这种形式化的检测方法也大大提高了协议分析的可靠性;实现对多种协议通用的无线传感器网络安全检测系统;

2、改进了形式化awn建模语言,扩展了其表达能力,使其能够更好的描述无线传感器网络协议;

3、给出了一个能够分析协议弱点的方法。这一点对该领域的所有工作者都有一定帮助,在设计检测模型与验证检测结果中,都可以起到重要参考作用;

4、自动化地生成针对性强且能耗小的攻击检测方法;以往的协议检测方法都是需要分析协议后,实现整个协议的有限自动机模型,能耗较大,且对攻击的针对性不强。实现的检测方法是在分析潜在攻击的基础上,分析数据的特点,生成的对应性很强的误用例检测方法,效果好,能效小。

附图说明

图1为无线传感器网络安全检测系统框架图;

图2为aodv协议寻址过程一模型图;

图3为aodv协议寻址过程二模型图;

图4为处理ack进程中发起rrer场景模拟图;

图5为攻击者生成流程图;

图6为penetrating攻击点的场景模拟示意图;

图7为本发明的一种无线传感器网络的安全性分析方法整体流程示意图;

图8为实验结果漏报率比较结果示意图;

图9为实验结果误报率比较结果示意图;

图10为实验结果准确率比较结果示意图。

具体实施方式

为解决无线传感器网络协议繁多、手动分析每次只能分析某一个协议的问题;本发明使用改进的awn语言对无线传感器网络协议形式化建模,用一个通用的模型分析法解决所有的协议分析问题。对原awn语言中节点内进程并发、条件执行等行为描述能力进行扩展,提高awn语言的通用性,使改进后的awn语言可以刻画所有的协议模型。针对每一条攻击类型,生成对应的检测方法。在检测方法的选择上,尽量生成基于误用例的检测方式。基于误用例的方式对每种攻击的针对性更强,检测率更高,能量消耗更少。

下面结合附图对本发明作进一步详细描述。

如图1所示,为本发明所基于的无线传感器网络安全检测系统整体框架图。该系统一共有五部分,包括环境因素分析、应用需求分析、协议分析、检测框架与方法及检测反馈部分;根据外部环境条件挑选检测框架,并结合具体协议分析的弱点,生成具体的检测方法。

影响安全性检测的外界因素包括:

因素一、环境因素,在安全检测系统中,外部因素是由于无线传感器网络应用本身决定的,检测系统只能去适应它,不能去改变它。

因素二、采集方式:检测节点可以是传感节点本身,也可以是另外部署的独立采集节点,甚至在某些一跳网络中,采集节点可以是基站本身。

因素三、处理位置:分为分布式与集中式,分布式的相对需要带宽较小,对检测单元的硬件要求较高;集中式的对带宽消耗较大,需要将信息发送给基站或者簇头节点,对电量消耗较大,而且对应用本身的性能可能影响较大。

因素四、检测频率:分为连续性检测与周期性检测。连续性检测耗电较大,但是信息更全面。而周期检测只能收集一段时间的信息,对检测方法的要求比较高。

因素五、应用需求:分为两部分,安全需求与性能需求。

因素六、检测与反馈:根据检测到的攻击情况,以及运行应用本身的数据情况,分析是否达到了预期的安全需求与性能需求。根据分析结果,再相应地调整检测方法。

步骤一、进行awn形式化语言扩展设计,扩展设计所包含的定义内容具体为:

将一个进程连同此时变量的状态表示为:在不强调变量状态时表示为process,简写为p;

(1-1)、当进程为顺序进程时,表示为:

p=e1→e2→...→en

e为组成顺序进程的事件序列的事件event简写表达,1,2......n为事件编号。事件包括修改变量值e:={x=a}(其中,x为程序中的某个变量,a为要赋予该变量的值)、发送数据包e:=send(msg)和接收数据包e:=receive(msg)等。

(1-2)、当进程为同步进程时,表示为:

p=p2<<p1

同步进程为两个需要同步的两个进程。例如事件接收和发送,必须是“同时”发生的;那么这样两个需要同步的两个进程,用符号<<来表示:p2<<p1表示进程p2接收进程p1发送的数据包。

(1-3)、当进程为并发进程时,表示为:

p=preceive|||psend|||phandle,符号|||表示进程的并发关系;

并发进程的进程之间具有并发关系:例如在节点内部,需要实现进程的并发,无论是通过多线程、多进程或者是中断形式。一个节点内部,同时要有一个接收程序preceive、一个发送程序preceive可能还有一个接收的处理程序phandle,这些进程代表了若干个进程,如果它们处理的三个事件分别为事件e1:={x=1};事件e2:={x++};事件e2:={x=2}。这三个事件的处理顺序就很重要。如果要精密检测这个多线程节点是否会造成“意料之外”的结果,那么对事件并发的模拟,就需要模拟它们所有可能的发生顺序。

(1-4)、当进程为阻塞进程时,表示为:

p1=[condition]p2

其中,condition表示进程p2需满足的条件,这样进程p2都会满足某个条件后,进程p1才继续执行;

(1-5)、进程状态转移,表示为

p1=e1

p2=e2→e1=e2→p1

进程状态转移是随着事件的发生,进程的状态会随之转移的情形。

顺序进程、并发进程、同步进程、阻塞进程这四种不同构成的进程,它们之间的关系如下所示:

顺序进程表示为:

其中,condition.e2代表对condition中的变量,用e2的操作来更新。

同步进程表示为p2<<p1,若同时有转移关系,表示为:

,(e2=receive(msg),e1=send(msg))

上式的含义为:如果进程p1与p2不涉及收包、发包的事件,可以执行任何一个进程的第一个事件;而如果涉及到了p2的收包事件,或者p1的发包事件,必须两个事件同时执行,且将p1的msg信息传递给了p2。

针对并发进程中有进程状态转移的规则定义为:对任意一个并发的进程可以执行其第一个事件,表示为:

阻塞进程的执行条件为,当condition满足阻塞要求时,执行后面的操作。符号|=代表条件condition“满足”条件(var==rval),事件τ代表“空事件”。

至此,所有awn语言的语法规则已经定义好。下面使用这些规则描述并分析aodv协议。

aodv协议中,路由只在需要传输数据时建立。一个从源节点s到目的节点d的路由,可以表示为一个节点序列串[s,n1,n2…nk,d],其中n1,n2…nk是位于节点s到d的中间节点。如图2、3所示的aodv协议流程中:其中图(2a)代表四个节点s,d,a,b,节点间的连线代表两个节点处于通信范围内。例如a和b处于通信范围内,而s和d不处于通信范围内。图(2a)中当节点s欲传输数据给节点d,但是节点d的路由信息不在节点s的路由表里,于是s节点发起一个路由请求包rrep(用带箭头的实线表示),广播给它所有的邻居节点。在此假设此时a和b不知道d的路由信息,节点a收到s的请求节点d的路由信息,a查询自己的路由表,并不知道d的路由信息,于是节点a转发这条rrep给它所有的邻居节点,包括节点s,b,d,如图(2b)。节点b收到s发起的rrep请求后,和节点a做了相同的处理动作。而后节点b和s收到a转发的路由请求后,查看自己“处理”过这条路由请求,所以并不理会这条请求。图(2c)中当节点d收到a转发的路由请求后,发现自己就是目的节点,于是按照rrep的发送路径,节点d发起了一个rrep(用带箭头的虚线表示),通知源节点s,路径已经建立,按照这条路径就可以发送数据。节点d回复一个rrep数据包给节点s,如图(2c)。与rreq请求包用广播发送不同,rrep是一个单播,只发送给路径中下一跳节点。在这个例子中,虽然节点b与a都可以当作下一跳节点,但是根据跳数的多少、rreq抵达节点d的时间先后,只能选取一条路径,图2的(2c)中,选节点a作为下一跳节点。

如果节点a在收到路由请求后,再路由表中已有节点d的路由信息,则直接回复一个rrep数据包给节点s。如图3所示:节点a会立即发给s节点一个rrep数据包,通知它路径这样可以建立。而节点b不知道d的路由信息,会继续转发rreq。

除了查找过对方目的地址之外,aodv协议规定了一些其它方式可以添加对方节点信息到自身路由表中。主要目的是为了使得网络状态更快收敛。当转发rreq路由请求时,每个中间节点要同时更新其路由表,增加一条“反向”路由到rreq的发起者s,代表s节点可以发送rreq到自己,自己也能通过原路找到s,并且到s的路径跳数(经过节点的个数)等于rreq的跳数。而当d节点送rrep信息给源节点s时,如果经过自身,也要把源节点的路径信息添加到路由表之中,与rreq的添加原理类似。添加一条到目的节点d的路径,跳数等于rrep的跳数。如图2所示的例子中,s节点除了知道d节点的路由,根据a节点发给自己的rreq包,也添加了a节点的路由。a节点在帮忙转发rreq、rrep包的同时,也添加了s节点和d节点的路由。

协议规范化:无线传感器网络协议的官方规范是用英语描述的rfc(requestforcomments)文档。然而无线传感器网络实际使用中,厂商会根据应用的自身特点和需求,即便是同一个协议,不同的厂商也会有不同的实现版本,细节上会有些许的不同,所以需要一种比rfc文档更为精细的形式化语言来刻画协议的属性。在不同的应用环境中,指令集使用不同,所以不能使用代码级的编程语言来描述协议。因此本文要选取的形式化语言。awn(algebraofwirelessnetworks)语言是专门为无线传感器网络协议量身制作的语言。用awn语言描述的一个无线传感器网络协议,是一个节点内并行处理的若干个进程。包括了与信道的交互(收发数据包),节点内的同步(等待接收缓存返回信息),对节点局部变量的增加、删除、修改、查看等操作。而原有awn语言是针对环路分析而设计的,为了着重安全性,对其语言能力进行了一定的扩充,提高了描述安全问题的能力。进程状态由自身的变量状态决定,同时进程内的变量值由进程来保持。根据进程的操作规则,可以操作、预测变量的值。对关键变量的操作与预测,就是分析协议的本质与实现方法。

步骤二、基于扩展的awn形式化语言,进行无线传感网络协议(aodv)形式化,具体包括网络模型描述:

定义节点进程np(nodeprocess),为节点对其内部变量的操作,如更新路由表,接收信道的数据包,发送数据包,修改某个局部变量等;

定义节点从信道接收包的接收进程rcp(receivechannelprocess),主要负责接收其它邻居节点发给自己的包,并且递交给节点进程np;

每个节点i(1≤i≤n)都需要从自己的信道范围内接收包:即自己节点的进程与节点收包进程同步,表示如下:

npi<<rcpi(1≤i≤n)

一个节点b发送消息给节点a的过程为:节点b的节点进程npb与节点a的收包进程同步,同时,节点a的节点进程npa与自己的接收进程rcpa同步,即三个进程同步。表示如下:

npa<<rcpa<<npb

每一个网络用一个进程组来表示网络的联通状态与运行状态。

例如,对图2中(2a)的网络中,相邻的节点有(a、b)、(a、s)、(a、d)、(b、s)、(b、d)。那么,利用网络进程组将该网络表示为:

用大括号括起来的接收进程rcp,代表“同时”与右边的进程同步。如第一个式子代表节点b发送的信息,可以被节点a,s,d同时接收到。需要补充的是,本模型不能考虑网络丢包状态。一个节点或者100%可以发送给另一个节点信息,或者就不可能发送到。不存在“一定概率”的丢包情况。

步骤三、构建并分析协议模型:

(3-1)、构建aodv协议的模型

aodv协议节点主进程由三个协议的进程并发组成,表示如下:

np()=handlemsg()|||sendmsg()|||recmsg()

分别为处理消息、接收消息和发送消息。下面将依次介绍这3个进程:(i)接收消息进程recmsg是将消息从接收进程rcp中同步接收到,并放在自身的接收缓冲区receivebuffer中。完成这一动作之后,再回到接收消息recmsg,以等待接收下一个消息。如果接收到的消息是ack包,则发送信号量,使得等待在这一条信号量上的消息知道已经成功发送。如果是一条pkttype或者rreptype类型的包,证明这是一条单播包,则回复一个ack给发送方,让对方了解已经成功发送,然后把这条信息写入接收缓存区。如果是其它类型的包(rreqtype和rerrtype)证明这是一条广播包,不需要发送ack包,直接将信息写入接收缓存区即可。(ii)处理消息进程handlemsg:这个进程首先去判断,接收缓存区是否为空。如果不为空,则取出第一个需要处理的消息msg。之后判断这条msg的类型,根据类型,交予不同的处理函数newpkt、pkt、rreq、rrep、rerr。特别的需要注意,如果是后三种消息,根据aodv的文档要求,需要将发送者的路由信息加入到路由表中。也就是说这条消息路径从节点a发送到节点b,如果节点b收到了,那么节点b应该更新自说己到节点a的路由(比如路由a是刚启动或者之前有移动),更新内容为:节点b可以路由寻址到a,且经过跳数为1跳,下一跳地址为节点a。(iii)发送进程sendmsg:发送进程与处理进程类似,首先需要等待发送缓冲区有消息待发送。当发送缓冲区不为空时,取出发送缓冲区的第一个待发送消息ste,然后判断ste的目的地址dip是否在自己的路由表中有记录,能寻址。如果能找到,并且这条消息有效性为真,则开始发送unicast,发送后,回到sendmsg进程,同时并发一个等待ack的进程(handleack)。该ack进程需要等到对方回复ack包,而后确认发送成功,或者没有发送成功就要记录该链路错误,然后再通知给相关节点。如果这条消息有效性valid并不为真,那么判断其req属性。req属性代表这条消息是否需要重新发起路由请求,如果req为真,那么就发起一个路由请求rreq,目的地址为ste的dip,而sn=sn+1。发送rreq之后,回到sendmsg进程。

除了以上三个“主进程”,节点的运行还需要处理ack的进程handleack。handleack进程:在之前发送包进程sendmsg中已经提到,handleack就是处理一些单播之后的“善后”工作:首先节点m将等待一个ack信号量,如果这个信号量被唤醒,那么判断这个ack是否发送成功。如果是,则将发送缓冲区的这个包扔掉。如果这个包没正常发送,或者过时间后系统触发ack信号量,那么代表这条路径出问题了。对出问题的路径,aodv文档rfc中规定,首先需要报告一个rerr错误包,给所有相关的节点。如图4所示:节点m作为中间节点,记录了每条路由中,相关的前驱节点pre的信息。例如节点a、b都发起过请求rreq,目的地点为节点s2,经过节点m。最后路径建立后,节点m记录在节点s2的路由条目中的前驱集合rt.get(s2).pre:={a,b}。而节点c发起过请求,目的节点为节点s1,节点m记录在节点s1的路由条目中的前驱集rt.get(s1).pre:={c}。当节点a发起一条到节点s2的数据包时,如果节点m在转发数据包给节点s2的时候,ack出现了错误。那么节点m除了要通知节点a这个错误信息,还需要通知节点b这个错误信息。以便这两个节点重新发起rreq包,寻找到达节点s2的路径。

(3-2)、构建含有攻击者的网络模型

攻击者的节点执行逻辑,以进程形式表示为攻击进程ap:attackprocess()。同其它节点一样,它也需要一个接收进程arcp:attackreceivechannelprocess()。在第一个例子(图2中(2a)所示网络示例)中,用大括号括起来的rcp,代表“同时”与右边的进程同步。如第一个式子代表b节点发送的信息,可以被节点a,s,d同时接收到。原有网络节点a、b、s、d,如果加入攻击者节点attacker且其通信范围有节点a、s、d。那么网络的进程组为:

设定arcp的进程与其它节点的接收进程rcp一样。在某些特殊环境下,攻击者可以选择强度更高的发送信号,而接收信号能力一般不太容易提升。这样攻击者的“发送邻居”可能就会覆盖整个网络,对网络产生更大的安全威胁。

再分析进程ap的目的,就是为了使得节点a、s、d至通信范围外的b节点出现“异常”。下面举两个实例,说明什么样的攻击进程ap会达到这样的效果。

如图5所示,为了从形式化的协议生成所有的攻击类型,需要明确无线传感器网络中攻击者的特点。首先找到所有协议的共有弱点,再根据本协议的特点,去匹配是否存在这些弱点,如果存在,则作为一条攻击类型。

步骤四、生成攻击者模型:

(4-1)、攻击点描述;

攻击类型:攻击者对无线传感器网络的最基本破坏方式,主要体现在对无线传感器网络的基础事件的破坏。攻击一共有以下四类:

1、破坏原有路由(breaking):攻击者破坏原有路由,使得原有路径不能正常使用,需要重新发起组网。该攻击点会导致dos攻击,泛洪攻击等。

2、阻止新路由建立(preventing):在新路由建立时,阻止新的路由建立。使部分网络处于孤立状态。该攻击点可以导致dos攻击,选择性转发等。

3、渗透(penetrating):参与正常组网流程,采用欺骗手段,成为路由中的节点。该攻击点最为常见,可以导致选择性转发,污水池攻击,女巫攻击,中间人攻击等。

4、资源消耗攻击(consuming):低成本、低能耗是无线传感器网络的核心竞争力。节点的资源包括cpu、带宽、电量等。然而攻击者如果用恶意手段,阻止节点睡眠,或者令节点反复执行较高消耗的行为,则被视为资源消耗攻击。常见的攻击有,泛洪攻击,虚假寻址攻击等。

攻击点模型并不能对攻击者进行分类,从数学定义来讲,攻击点模型不是一个划分。攻击点模型是对所有攻击者集合的一个“有交集的覆盖”:一个攻击类型可能包含一个或多个攻击点,一个攻击点可以导致多个攻击类型。表1罗列攻击模型的覆盖:

表1、攻击点对攻击类型的覆盖

利用awn语言中有六个基本事件,即广播broadcast,单播unicast,组播groupcast,确认ack,收包receive与更新路由表rtupdate,将一切攻击点描述为这六个操作按照某种特定的条件执行的结果。攻击者的最根本目的,就是通过发送一些恶意的信息,导致正常节点再收到信息后,会按照攻击者设定的操作执行。也就是说,攻击者的攻击入口对应的是正常节点收包事件receive。

如图6所示的,为penetrating攻击点的场景模拟示意图。攻击点是让正常节点执行某种它所设定的操作,例如攻击点penetrating,就是让被攻击者(节点a)发送给节点dest,本来应该途径节点c,后来因为攻击者节点m对节点a发送了恶意信息,节点a误以为节点m比节点c更适合当作中间节点,就把信息发送给了攻击者m。而攻击者m并不一定把信息转发给dest。其中,攻击者的目标就是让被攻击者a触发事件unicast(type==data,dip==m)。

四种攻击类型所对应的无线传感器网络基本事件及其条件,如下所示:

规则1:breaking。执行rtupdata(valid==false)多次;

规则2:preventing。阻止执行rtupdata()

规则3:penetrating。unicast(type==data,dip==m)

规则4:consuming。执行broadcast或者groupcast多次

从四条规则出发,就可以得到awn描述的协议中,所有能够触发攻击的语句。即需要搜索,哪些receive值,会导致最终执行到4条规则所描述的awn对应语句。

(4-2)、攻击者类型分析:

如果协议进程执行到某一个状态被认为达成了一次攻击者想要的攻击。分析需要了解,如果要达到这个状态,之前发生了哪些事件,进程达到了哪些状态。分析表示为:

其中为已知协议进程状态,et为需要搜索前一事件,为前一进程状态。上式表示的含义是,已知在t时刻,在进程运行到某个状态npt,变量条件为ct;进行搜索,直至搜索到哪些进程状态npt-1,变量条件ct-1以及执行那一条语句et会导致进入状态

例如,consuming攻击点搜索,最初,从攻击点consuming,对应aodv协议第141行的广播事件。攻击者的目的就是让正常节点多执行此事件broadcast,而进程执行条件为空。

而推导出三个可能的进程状态,为简化次例子的搜索结果,只选第一个进程状态继续做推导。

最终得到的条件ct-6解释为:收到了一个rreq的寻址,目的地址dip不为自己,也不在路由表的有效路由中,即该节点并不知道这条路由。另外这rreq条消息是第一次“处理”,那么就“可能会”按照npt-6→npt-5→k→npt的进程转移顺序到达攻击点,进而完成一次攻击。

这条攻击点的另一个条件为“多次执行”。也就是说,攻击者要尽可能多的循环发起这样的rreq信息。

这样的攻击特性,正是泛洪攻击的攻击特性。泛洪攻击也就是这类攻击的一个代表。

步骤五、生成对应检测方法

对应检测方法主要是基于误用例检测方法与异常检测方法。生成误用例检测方法:针对所有检测变量通过一步监听得到的变量,检测流程为:每个节点开启混杂模式,监听邻居节点的发包与收报行为。遇到可以情况,分两种级别。第一是确定该行为一定是攻击,就发起一个遭到攻击的警报。第二是不确定该行为是否是攻击,发起一个可疑警报,如果一个区域内没有人为可疑警报做“证人”则将可疑警报提升为攻击警报;如果有证人,证实该行为为正常行为,则解除警报。相应的,检测到可以邻居节点正常行为,需要发起“证实”信号,为了让其它邻居节点解除警报。

生成异常检测方法,目的是对误用例检测的一种补足,以便减少异常检测的使用。

由于基于误用例的检测方法具有很多优点,主要体现在检测速度快,检测准确率高以及耗费资源小等特点。然而,基于误用例的检测主要问题是不能检测到未知攻击。这一点上,基于异常的检测可以检测到一些未知攻击。

下面为aodv协议的完整的验证实验过程。

实验使用tinyos系统平台,tinysec安全协议。在监控数据方面,使用西普公司提供的snap平台。在tinyos平台上,编译nesc代码实现的aodv程序,烧录到telesb节点。其通信模块采用cc2420通信芯片。该芯片在普通模式下,只监听自己的相关信息。而该实验环境需要节点开启混杂模式监听周围节点的收包请求,即开启混杂模式。

监控得到数据包括发包信息、打印信息或者收包信息,包的内容以16进制字符表示。

假设按照每个攻击者生成70次攻击,混合30次正常收发包。实验规模为10-50个节点,部署在10m*10m的范围内。其中5%的节点作为攻击者。

实验环境可以直接获取每个节点串口传回的信息,检测过程中,不必在节点上直接处理数据,而是集中传回snap平台,模拟节点的分析过程而做攻击检测。

首先分析aodv协议,可能受到哪些攻击者类型的攻击。根据前文的检测方法,aodv协议可能受到的攻击有以下9类,如表6.1所示。

其中,攻击类型1-6是渗透(penetrating)型攻击点,这些攻击会导致中间人攻击、污水池攻击、女巫攻击等。攻击类型1-3可以将自己的ip信息篡改,使得被攻击节点误以为可以直接连接到某个“虚拟”节点。当被攻击节点发起对“虚拟”节点的信息后,攻击者利用混杂模式,接收该信息,并继续跟踪破坏。而攻击类型4-6是攻击者伪造了一条虚假目的地址的信息,无需改动自己的ip。当被攻击者接收到该信息后,会更新路由表,并将攻击者作为虚假目的地址的最优路由。此后每当被攻击者发起向虚假目的地址的信息时,攻击者都会截获该信息。此外,攻击类型4-6会产生更严重影响,当另外一个正常节点,想被攻击者问询虚假目的地址路径时,被攻击者会将自己的错误信息告诉给那个正常节点,造成了攻击效果急速扩大。攻击者类型7-8是破坏原有路由(breaking)型攻击点。攻击者7描述的是攻击者伪造一些并不存在的rerr信息,使得收到这个rerr信息的节点误以为一些路径不能正常到达了,就删除了原有路由,进而破坏了整个网络。攻击者类型8描述攻击者阻止、干扰一些ack的正常发送,使得节点间的通信没有及时ack反馈,这样发送方就会误以为接收方失去链接,进而删除这条路由,破坏网络。

攻击者类型9是一种资源消耗攻击(consuming)型攻击点,这类攻击会导致dos等攻击。攻击者可以定期发起rreq请求,寻找一个网络中并不存在的id号。这样整个网络都会帮助攻击者转发rreq消息,并且不会有最终返回。攻击者可以每次寻找不同的id号,也可以寻找同一个id号而选择不同的序列号。

针对以上9种攻击类型,对应的检测方法如表6.2所示。(带*的攻击类型6-9,说明需要用基于异常的检测)

攻击类型1-3,检测方法主要是检测mac地址与ip地址相同,这样可以杜绝这三类攻击者伪造自己ip而导致的虚假路由信息。

攻击类型4-5是在转发rreq与rrep包时,监听可疑节点的收包信息与发包信息是否匹配。对特别敏感的变量:跳数hop与sn信息,不能再转发过程中随意篡改。如果篡改这些信息,攻击者可以使被攻击者更容易接收自己作为路由。

攻击类型6:在回复rrep路由信息时,可能是因为节点转发前后继节点的rrep信息,也可以是回复前驱节点的rreq信息。对于转发后继节点的rrep信息,可以构造转发时的检测规则。而对于自己产生的rrep信息,需要用基于异常的方法检测。

攻击类型7是检测,rerr是通过转发形式产生,或者通过缺少ack的原因产生。不能随意构造rerr信息。其中,转发类型的规则可以检测,而自己构造rerr的情况,需要用基于异常的方式检测。

攻击类型8-9,因为其没有关键变量的对比检测方式,只能使用基于异常的检测方法,分析网络中各个包类型的流量分析,判断该节点是否属于可疑攻击者。

实验方法:进行模拟实验,每类攻击模拟了70次攻击,正确检测到这是攻击的次数为p,则漏报率为而对30次正常实验,正确的报告这不是一个攻击的次数为n,则误报率为最终,准确率为

对攻击类型1-9,分为三组,第一组为攻击类型1-5,对应的检测方法是算法生成的基于误用例的检测方。而攻击类型6-7是基于误用例的检测方法与基于异常检测方法的结合方法。最后攻击类型8-9只能依赖基于异常检测的方法。检测结果的漏报率、误报率与准确率如图8、9、10所示。

实验结果表明,本方法在节点较少时准确率较高。而同样节点个数的情况下,基于误用例的检测方法准确率较高。出现的错误主要是在异常检测的误报情况,可能将某些协议正常的节点数据流的变化,报告为存在攻击(误报),这可能是因为网络拓扑的变化过程使得某些节点的转发率急剧变化。如果是使用基于异常的检测方法,会将网络拓扑的正常变化也界定为一个“异常”变化,并报告错误。

表6-1、生成攻击类型

表6-2、aodv检测方法

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