本发明属于无线网络通信技术领域,特别涉及一种路由发现中的黑洞攻击防御方法,可用于无线自组织网中。
背景技术:
随着互联网及数字技术的飞速发展,人们对网络带宽的需求量逐年增加,并且在网络接入的便捷性和安全性上有更高的需求。无线自组织网络作为一种新型组网形式,与传统的有线网络相比,具有移动性强、覆盖区域大、部署灵活、部署成本低等特点,无线自组织网络接入将会成为人们访问互联网最主要的方式。然而,无线自组织网络具有各个节点地位平等、节点能量受限、节点计算能力受限等固有缺陷,且在设计之初其路由协议并没有考虑内部安全问题,因此上述问题造成在路由发现阶段极易受到黑洞攻击。黑洞攻击可以轻易的假冒目的节点或谎称自己有到目的节点的最优路由,而不被其他正常节点怀疑。并且除了恶意节点的黑洞攻击,对于因为能量耗尽等情况不能转发数据包的节点也会造成对网络的黑洞攻击。对于遭受黑洞攻击的网络,因为各个节点地位平等,使得源节点发送的数据包都会经过黑洞节点,造成严重的隐私泄露、网络可用性变差等问题。
在正常的无线自组织网络路由发现过程中,源节点在网络中通过广播RREQ包,查找目的节点;中间节点收到RREQ包后首先建立到源节点的反向路由,然后查找自己的路由表,如果自己的路由表存在到目的节点的路由,则通过反向路由向源节点发送RREP包,否则继续广播转发收到的RREQ包;直到真正的目的节点收到RREQ包后,并按照到源节点的反向路由发送RREP包给源节点;源节点收到RREP包后,提取目的序列号,如果该序列号大于自己的序列号,就把该路由添加为到目的节点的路由,否则不添加。但在网络环境中存在各个节点的地位平等,引入第三方困难等问题。因此,在自组织网络路由发现阶段如何高效、准确的检测出可能存在的内部恶意节点,是无线自组织网络在路由发现阶段防御黑洞攻击的关键。
在路由发现阶段针对无线自组织网络的黑洞攻击分为两种,分别为单节点黑洞攻击和多节点合谋黑洞攻击。单节点黑洞攻击是指在路由发现阶段,恶意节点在接收到源节点的RREQ包后,单独向源节点发送RREP包,使得源节点误认为恶意节点有到目的节点的最优路由,诱骗源节点与自己建立从源节点到目的节点的通信链路。当链路建立好后,源节点发往目的节点的数据包将会全部经过恶意节点,恶意节点可以对这些数据包采取丢弃、篡改、重放等一系列攻击行为,形成一个数据包“黑洞”;多节点合谋黑洞攻击是指在路由发现阶段,多个恶意节点合谋发起攻击,一个或多个恶意节点在接收到源节点的RREQ包后,共同向源节点发送RREP包,共同诱骗源节点把其中一个恶意节点当作真正的目的节点,并建立到该恶意节点的路由,在之后的数据发送过程中,恶意节点可以通过丢弃、篡改等方式进行攻击,对无线自组织网络安全造成严重影响。
在黑洞攻击中,黑洞节点为让自己发送的RREP包成为最新鲜的RREP包,并让源节点依据该RREP包建立到目的节点的路由,黑洞节点会故意将自己发送的RREP包的序列号设置成尽可能大的值。这样会造成在路由发现阶段,网络中真正目的节点和黑洞节点发送的RREP包序列号的值具有较大差别。
为在路由发现阶段防御黑洞攻击,研究人员提出了为RREP包的序列号设置静态阈值或动态阈值的方法。
静态阈值方法,是将阈值设定为一个不随网络状态变化的值,当源节点收到的RREP包的目的序列号大于该阈值时,源节点认为有黑洞攻击发生,就丢弃该RREP包;否则认为没有黑洞攻击发生。但是这种静态阈值的方法灵活性太差,当网络具有较大通信量时,RREP包的目的序列号会增加很快,使得该方法产生大量误报。
动态阈值方法,是将阈值设定为一个随着网络流量变化的值,其计算公式为:2×N+max(seqRREP),其中N为网络中节点的个数,seqRREP为RREP包的序列号,max(x)为取所有x的最大值。该方法的主要缺点是阈值过大,特别是在网络具有较小通信量情况下会出现的漏报过多的问题。
在现有专利中,面向无线自组织网络黑洞攻击的防御方法有主动探测方法、可信第三方检测方法。
主动探测方法,是通过建立多条探测路由,节点记录是否受到了黑洞攻击,如果受到了黑洞攻击则降低其信任度,而对成功路由的节点则提高其信任度。但是这种主动探测方法建立多条探测路由,过多消耗节点能量,降低网络的可用性。
可信第三方检测方法,是在分簇自组织网络中,将可信节点部署在所有簇头附近,利用可信节点对所有簇头区域进行实时监测,若簇头节点数据流量的变化异常,则存在黑洞攻击,否则不存在黑洞攻击。但是在无线自组织网络中,引入可信第三方困难,因此该方法的实际应用性很低。
技术实现要素:
本发明的目的在于针对上述现有技术的不足,提出一种路由发现中的黑洞攻击防御方法,以降低自组织网络防御机制在具有不同通信量的情况下对黑洞节点的漏报或误报,确保源节点可以建立一条到目的节点正确的路由。
为实现上述目的,本发明的技术方案包括:
1.一种路由发现中的黑洞攻击防御方法,其特征在于,包括:
(1)获取可疑节点步骤:
(1a)网络中的每个节点建立两张表,分别为接收路由请求表Tq、接收路由响应表Tp;
(1b)在路由建立阶段每隔一个时间间隔Δti比较一次接收路由请求表Tq和接收路由响应表Tp:若Tp中的IP地址均在Tq中,则路由建立阶段没有黑洞攻击发生,并将Tp和Tq中的IP地址进行排列,形成信任表Tt;否则存在黑洞攻击发生的可能性,记录下可疑节点,执行步骤(2);
(2)确认网络状态步骤:
(2a)建立一个训练集TR={tr|tr=Ai},其中Ai为路由响应包的目的序列号的阈值,tr为训练集TR的元素;
(2b)设训练集中的最后一个元素A'=ATR,每当节点收到一个路由响应包后,提取包中的目的序列号D,并与训练集中的最后一个元素A'进行比较,若D>A',则认为路由发现阶段发生黑洞攻击,节点记录发送该路由响应包的节点的IP地址,执行步骤(3),否则认为没有发生黑洞攻击,使用训练集TR中的全部元素和目的序列号D计算当前时刻路由请求包的目的序列号阈值其中λs=e-(s-i-1)表示记忆曲线函数,As为前i个时刻所有路由请求包的目的序列号阈值,得到Ai+1后将其放到训练集TR的末尾;
(3)发现、删除黑洞节点步骤:
(3a)在所有节点的接收路由响应表Tp中查找(2b)中记录下的IP地址,若某个节点node在接收路由响应表Tp中能找到(2b)中记录下的IP地址,则该IP地址对应的节点为黑洞节点;
(3b)节点node将黑洞节点从网络中剔除,即把黑洞节点的IP地址进行排列,形成黑名单Tb,将接收路由响应表Tp和接收路由请求表Tq中除了黑洞节点IP地址的其他IP地址进行排列,形成信任表Tt,并在之后的路由发现过程中不再向黑名单中的节点转发路由请求包,也不接收黑名单中节点发送的路由响应包。
本发明具有以下优点:
1.具有自验证性
本发明引入内部节点间的分布式验证方法,不需要引入额外可信第三方或可信节点来进行验证,在获取可疑节点、确认网络状态和发现黑洞节点的各项验证信息都是在各个内部节点上分布式进行的,只要不是所有节点被攻破后,就可以保证全局路由信息的安全,从而防止引入可信第三方或可信节点后,其被攻破后造成所有路由信息的泄露。
2.具有很强的适应性
本发明引入机器学习算法对阈值进行训练,保证阈值能根据网络繁忙程度的变化而变化。当网络负载小时,网络中序列号的最大值比较小,这时计算得出的阈值也比较小;当网络负载高时,网络中序列号的最大值比较大,这时计算得出的阈值也比较大。因此,本发明的动态阈值算法具有良好的适应性,能保证适用于多种繁忙程度的网络。
3.具有检测内部攻击的能力
黑洞攻击可以从内部发起,而目前多数的黑洞攻击防御方法都无能为力,本发明利用动态阈值,源节点通过比较RREP包的目的序列号和阈值,可以判断网络中是否存在黑洞攻击,实现在路由发现阶段防御从内部发起的黑洞攻击的目标。
4.可扩展性强
本发明提出的防御方法均部署在内部节点上,不用引入额外的节点,因此在扩大网络规模的时候不需要对方法本身进行改变,只需要简单的将防御方法配置到新部署的节点上即可,具有良好的可扩展性。
5.具有在路由发现阶段防御黑洞攻击的能力
现有的在无线自组织网络中防御黑洞攻击的安全机制均是以路由能正确建立为前提条件,在路由正确建立后的数据传输阶段发挥作用,本发明实现了在路由发现阶段防御黑洞攻击的方法,不需要特别设定一个前提条件。
6.提高了网络可用性
本发明采用分布式的方法比较RREP包目的序列号和阈值,而不是像现有方法那样将RREP包目的序列号和阈值的比较交由源节点处理。这个改进可以在有效降低源节点负载,节约源节点能量的基础上,还可以提高处理速度,提高网络的可用性。
附图说明
图1是本发明的实现流程图;
图2是本发明中计算阈值的子流程图;
图3是本发明中机器学习示意图。
具体实施方式
本发明使用基于接收路由请求表Tq和接收路由响应表Tp比较的方法得到可疑节点集合,之后利用机器学习算法获取路由响应包的目的序列号阈值,然后源节点利用接收到的路由响应包的目的序列号与阈值进行比较判断黑洞攻击是否发生,并且再次利用上述两表的比较得到黑洞节点。
本发明在接收路由请求表Tq、接收路由响应表Tp比较的步骤和应用机器学习算法动态计算序列号阈值的步骤中应用了集合论和工程优化的知识,所使用的符号如表1所示。
注:0<i<N
以下结合附图对本发明作进一步详细描述。
参照图1,本发明的实现如下:
步骤1,获取可疑节点
(1a)节点接收到邻居节点发送过来的路由请求包后,将发送该路由请求包的邻居节点的IP地址加入到接收路由请求表集合Q中,形成接收路由请求表Tq;
(1b)节点接收到邻居节点发送过来的路由响应包后,将发送该路由响应包的邻居节点的IP地址加入到接收路由响应表集合P中,形成接收路由响应表Tp;
(1c)在每个时刻,所有节点对各自的接收路由请求表集合Q和接收路由响应表集合P进行一次比较,并根据比较结果判断是否存在黑洞攻击;
(1c1)所有节点计算各自接收路由响应表集合P和接收路由请求表集合Q的差C=P-Q,若C=Φ,则表明当前路由发现阶段没有发生黑洞攻击,令集合E=P∪Q,将集合E中的元素进行排列,形成信任表Tt,若C≠Φ,则表明当前路由发现阶段可能发生了黑洞攻击,记录下可疑节点,形成可疑集合S,即S=C;
步骤2,确认网络状态
(2a)使用PCA算法获得初始阈值A1:
参照图2,本步骤的实现步骤如下:
(2a1)为路由发现刚开始的阶段创造一段安全时间Ts,该Ts包含k个时间片Δti,设在每一个时间片Δti内的网络序列号状态向量为xi=(xi1,xi2,xi3),0≤i<k;
(2a2)计算安全时间Ts内的网络序列号状态向量xi均值
(2a3)计算安全时间Ts内所有网络序列号状态向量xi到网络序列号状态向量均值的距离d(x)i:
(2a4)根据步骤(2a3)中计算出的k个距离d(x)i,计算出初始阈值A1:
A1=d(x)I,I=argmaxd(x)i, <3>
(2b)令训练集TR={tr|tr=Ai},基于机器学习算法计算出每个时间片的阈值;
参照图3,本步骤的实现如下:
(2b1)把(2a4)计算出的初始阈值A1加入到训练集TR中,作为训练集TR的初始元素;
(2b2)设训练集中的最后一个元素A'=A|TR|,当安全时间结束后,网络进入安全性未知的路由发现阶段,其每一个时间片为Δti;
(2b3)在每个时间片Δti中,节点提取接收到的每个路由请求包的目的序列号D,并与训练集TR中的最后一个元素A'进行比较,若D>A',则认为路由发现阶段出现黑洞攻击,节点记录发送该路由响应包的节点的IP地址,执行步骤(3),否则认为路由发现阶段没有出现黑洞攻击,执行步骤(2b4);
(2b4)计算当前网络序列号阈值Ai+1:
其中As为前i个时刻所有路由请求包的目的序列号阈值,λs=e-(s-i-1)表示记忆曲线函数,得到当前网络序列号阈值Ai+1后将其放入训练集TR中,即Ai+1∈TR。
步骤3,删除黑洞节点
(3a)在所有节点的接收路由响应表Tp中查找(2b3)中记录下的IP地址,若某个节点node在接收路由响应表Tp中能找到(2b3)中记录下的IP地址,则该IP地址对应的节点为黑洞节点;
(3b)节点node将黑洞节点的IP地址进行排列,形成黑名单Tb;
(3c)节点node将接收路由响应表Tp和接收路由请求表Tq中除了黑洞节点IP地址的其他IP地址进行排列,形成信任表Tt;
(3d)节点node删除黑洞节点,即节点node在之后的路由发现过程中只接收信任表Tt中IP地址对应的节点发送的路由响应包,只向信任表Tt中IP地址对应的节点发送路由请求包,而不再向黑名单Tb中IP地址对应的节点发送路由请求包,也不接收黑名单Tb中IP地址对应的节点发送的路由响应包,实现对黑洞攻击的防御。
以上描述仅是本发明的一个具体实例,不构成对本发明的任何限制。显然对本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修正和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。