基于IPv6的无线传感器网络安全路由方法
技术领域
本发明涉及一种基于IPv6的无线传感器网络安全路由方法,主要解决支持IPv6(英文全称:Internet Protocol Version6,中译文:互联网协议[版本6])的传感器节点的数据安全通信问题,属于信息安全与IPv6技术的交叉领域。
背景技术
无线传感器网络(Wireless Sensor Networks,简称WSN)是在当今社会上备受关注的、多学科交叉的研究领域,在未来人类生活中的方方面面将起着不可或缺的作用,推动了现代化社会的进程,为人们提供最及时、最有效和最真实的信息。随着无线通信技术的飞速发展及无线应用领域的扩大,无线传感器网络日渐成为互联网领域研究的热点之一。IEEE802.15.4标准的出现及Zigbee联盟的工作,大力推动了无线传感器网络的发展。IPv6是下一代网络发展的重点,将IPv6引入无线传感器网络,是无线传感器网络发展的一个重要方向。基于IPv6的无线传感器网络不仅可实现其与Internet的互联互通,还能成为IPv6的杀手级应用,进而大力推进IPv6的发展。随着物联网和无线传感网应用的日益成熟和普及,人们越来越多的涉及个人或公司的隐私信息需要通过无线传感器网络来传送,针对无线传感器网络的移动节点攻击方式越来越多样化,规模也越来越大。
无线传感器网络现有的移动节点具有很大的安全漏洞。攻击者可以将合法的移动节点的本地地址与攻击者的IP地址绑定,从而可以使得原本发送给合法节点的数据流向攻击者期望的节点。由于无线传感器网络的可移动性,当网络中加入新节点时,攻击者可以将自己的本地IP地址作为Sink节点地址发送给传输数据的双方,通信双方都以攻击者作为通信的中间地址,攻击者得以成功窃取双方数据。攻击者也可以先和一个流量非常大的服务器(如图像服务器)建立连接,然后将服务器发送的目的地址设为需要攻击的节点地址,由于不经验证,服务器会认为刚刚发起会话的是现在的目的地址,并将大量该节点无法承受的数据发送至节点,从而导致节点拒绝服务。
WSN中的路由协议是网络攻击的主要目标,其安全性方面存在很多问题。典型的路由安全问题主要有数据在传输过程中被非法获取、未经授权的用户介入无线网、无线信道上传输的数据被非法修改等3个方面。解决这些问题的方法主要有:加密,保证没有密钥的用户无法还原处理信息;身份认证,保证没有非法用户使用网络;数据完整性校验,保证无线信道上传输的数据没被非法修改过。用户不可能接受并部署一个没有解决好安全和隐私问题的传感网络,因此在进行WSN协议和软件设计时,必须充分考虑WSN可能面临的安全问题,并把安全防范和检测机制集成到系统设计中去。只有这样,才能促进传感器网络的广泛应用,否则,传感器网络只能部署在有限、受控的环境中,这和传感器的最终目标——实现普遍性计算并成为人们生活中的重要组成部分是违背的。
在无线传感器网络中,由于传输的数据类型多且节点的安全无法得到保障。在有限的资源下进行尽可能高效安全的传输,必须要解决“在保障传感器网络的生命周期的前提下,对数据进行安全传输”的问题,在安全性和传输效率之间寻求很好的平衡。
发明内容
本发明一种基于IPv6的无线传感器网络安全路由方法,节点采用随机虚拟MAC地址的方法来产生其IPv6地址,该地址只对通信双方透明,从而使得恶意节点无法与正常节点进行通信。随机虚拟MAC地址同时可以防止恶意节点通过RSSI测距法确定节点的物理位置,防止节点被偷取或销毁而造成的数据丢失。本发明能大大提高无线传感器节点数据传输的可靠性,适合应用于军事和机场监控等多个领域。
术语解释
MAC-to-EUI64转换法:采用接口的48位MAC地址,在这个MAC地址中间插入一个保留的16位数值0xFFFE,并把它的全局/本地(Universal/Local,简写为U/L)位翻转设置为1,这样就把它转换成了一个64位的接口ID。
RPL路由协议:RPL是一种距离矢量路由协议,基于有向无环图的拓扑概念,通过使用目标函数(Object Function,OF)和度量集合构建以目的节点为导向的有向无环图。
三角质心法:如图1所示,在圆周定位模型中,理论上如果知道移动节点到三个信标节点的物理距离,分别以这三个信标节点作为圆心,到移动节点的物理距离为半径,画三个圆,这三个圆与移动节点都应该是相交的,即三个圆的公共交点就是移动节点MS的位置。
RSSI(Radio Signal Strength Indicator)无线电信号强度:已知发射功率,接收节点通过接收功率,计算传播损耗,再通过理论或者经验的传播模型将传播损耗转换为距离。在自由空间中,距发射d(米,或者m)处的天线接收到的信号强度的公式如下:[Pr(d)]dbm=[Pr(d0)]dbm-10nlg(d/d0)+Xdbm,其中d为接收端与发射端之间的距离(m);d0为参考距离(m),一般取1m;Pr(d)是接收端的接收信号功率(dBm);Pr(d0)是参考距离d0点对应的接收信号功率(dBm);Xdbm是一个平均值为0的高斯随机变量(dBm),反映了当距离一定时,接收信号功率的变化;n为路径损耗指数,是一个与环境相关的值。通过测量接收信号的强度,利用这个公式即可计算收发节点之间的大概距离。
ZigBee:一种无线通信技术的名称,其功耗非常低,网络容量大,ZigBee标准在IEEE802.15.4标准基础上发展起来,ZigBee协议被认为是当前无线传感器网络最适用的协议之一。
Sink节点:在无线传感器网络中指的是汇聚节点,主要负责传感器网与外网(例如Internet)的连接,可以看作是网关(或基站)节点,Sink节点还主要负责全网的数据汇聚。
IPv6通信技术:IPv6是Internet Protocol Version6的缩写,IPV6具有更大的地址空间,使用更小的路由表。在无线传感器将定位信息传送到网外或者要实现传感节点与其它异构通信设备的数据通信,将采用网络层的IPV6通信协议。本发明专利中的无线传感器节点基于6LowPAN(基于IEEE802.15.4标准实现IPV6通信的草案标准,由国际互联网工程任务组IETF提出)体系,该体系可以有效实现无线传感器网络的全IP通信。
DAG(Directed Acyclic Graph):有向非循环图。
DODAG(Destination Oriented DAG):面向目的地的有向非循环图,以单独一个目的地生根的DAG。
DIS:DADAG请求信息(DADAG Information Solicitation),用于发现附近的DODAG和从附近的RPL节点请求DIO消息。
DIO:DODAG信息对象(DODAG Information Object,DIO),其包含节点自身信息,如RANK(排位),MAC地址。
一种基于IPv6的无线传感器网络安全路由方法,在节点建立邻居关系阶段,利用IPv6地址自动配置功能和随机生成虚拟MAC地址的方法,使用MAC-to-EUI64转换法的机制生成只有同一条链路上的通信节点知道的随机IPv6地址来进行通信;通信双方约定一个产生IPv6地址的算法,不定时的更改IPv6地址进行通信。
进一步地,利用IPv6协议,根据MAC地址来生成接口ID,继而根据接口ID加上一个链路本地前缀组合在一起构成一个完整的IPv6地址。
进一步地,根据MAC地址来生成接口ID具体为:将MAC地址转换成二进制格式,第三位后插入0xFFFE后,再反转U/L位得到二进制数,由该二进制数得到接口ID。
进一步地,随机产生MAC地址的算法:
MAC地址由6个00-FF的数字组成,依次随机产生这6个数字来达到随机产生整个MAC地址的算法,选取节点出厂的序列号和动态的时钟序列作为随机数种子,然后直接采用伪随机函数产生一个范围在00-FF的伪随机数作为第一个8bit数,重复6次,产生完整的随机虚拟MAC地址。
进一步地,具体步骤为:
步骤1:将若干个无线传感器节点部署到位,打开开关使得传感器节点开始工作;
步骤2:任一传感器节点A随机产生虚拟MAC地址,不妨假设为a,A的任一邻居传感器节点B也产生一个虚拟MAC地址:g;
步骤3:B向A请求DIS包,征集邻居节点A的信息;
步骤4:A收到DIS包,向B发送包含虚拟随机MAC地址的DIO包;
步骤5:B收到DIO包后更新自身的邻居表,向A发送数据包;
步骤6:A将其随机MAC地址a转换成二进制格式b,第三位后插入0xFFFE得到c再反转U/L位得到d,根据上面的二进制数得到接口ID:e,将接口ID与链路本地前缀组合在一起得到IPv6地址:f;
步骤7:节点B将其随机MAC地址g转换成二进制格式h,第三位后插入0xFFFE得到i再反转U/L位得到j,根据上面的二进制数得到接口ID:k,将接口ID与链路本地前缀组合在一起得到IPv6地址;
步骤8:双方由DIO包中得知对方的IPv6地址,然后将数据包的目的地址设为对方地址进行数据传输;
步骤9:节点A的随机MAC地址建立一次邻居关系后即作废,并不定期的更新MAC地址,重复以上过程建立与B的连接。
本发明的有益效果是,该方法具有较高的数据传输安全性:
首先,本发明的安全解决方案,从IPv6地址的随机性进行考虑,采用类似于跳频通信的思想,不定时的更改IPv6地址,从而使得恶意节点无法得知攻击目标的IPv6地址,进而难以进行相关攻击。
其次,现有的安全解决方案,大多没有考虑到节点的物理安全。当节点在建立邻居关系之前的阶段采用真实的MAC地址进行DIO包的发送,容易使得攻击者能够通过采集MAC地址的方法进行入侵。由于MAC地址的相对唯一性,使得节点暴露在存在恶意节点的环境中会很容易的暴露出其物理位置,产生安全隐患。本方法在建立邻居关系阶段采用随机MAC地址,从而避免了这一问题。
附图说明
图1是通过三角质心法来确定节点的位置的测距原理图;
图2是实施例的方案说明示意图。
具体实施方式
下面结合附图详细说明本发明的优选实施例。
实施例针对目前无线传感器网络中数据包传输过程中遇到的安全问题提出了一种改进的方案,利用IPv6地址自动配置功能和随机生成虚拟MAC地址的方法,使用MAC-to-EUI64转换法的机制生成只有同一条链路上的通信节点知道的随机IPv6地址来进行通信。此方法类似于跳频通信,通信双方约定好一个产生IPv6地址的算法,如MAC-to-EUI64转换法,不定时的更改IPv6地址进行通信。
本发明方法可在各种无线传感器网络应用环境下实现,不针对特定场合和需求。但本方法中的无线传感器网络节点应该具有以下功能:
1)支持IPV6协议栈以及6LowPAN体系;
2)具备数据采集和无线通信模块;
3)支持RPL路由协议。
实施例利用IPv6协议可以根据MAC地址来生成接口ID,继而根据接口ID加上一个链路本地前缀0xFE80::/64构成一个完整的IPv6地址的原理。让节点在发送DIO包建立邻居关系时采用随机虚拟MAC地址,既可以达到隐藏节点位置保障节点物理安全的目的又可以让随机的MAC地址产生随机的IPv6地址与网络中其他节点进行通信,使得数据传输得到双重的安全保障。
首先定义随机产生MAC地址的算法:
MAC地址由6个00-FF的数字组成,依次随机产生这6个数字来达到随机产生整个MAC地址的目标。首先选取节点出厂的序列号和动态的时钟序列作为随机数种子,然后直接采用随机数产生函数产生一个范围在00-FF的伪随机数作为第一个8bit数,重复6次,产生完整的随机虚拟MAC地址。
虚拟产生的MAC地址理论上一定会产生冲突。假设A和B的随机MAC地址冲突,A发送一个请求包,B正常发送接收数据,C节点收到A的建立邻居关系请求,会产生一个应答,C收到B的建立邻居关系请求,必然也会发送一个应答给B,这时,A和B都会收到相同的应答包。当A,B再发送确认包给C时,让C同时放弃A,B的确认包来放弃建立与A,B的邻居关系来解决这个问题。当然在建立邻居阶段,出现A,B随机到相同MAC地址同时向C发送DIO包的情况是极小概率事件。
当一个节点采用固定的MAC地址向周围节点发送DIO包时,周围潜在的3个恶意节点可能同时接收到该节点发出的DIO包,并分别通过RSSI方法确定3个恶意节点到攻击目标节点的距离,以三个点分别到该节点的距离为半径作圆,通过三角质心法来确定节点的位置,从而留下安全隐患。本方案中节点在建立邻居关系阶段随机生成MAC地址,从而使得节点难以被恶意定位。
具体实施流程如下:
步骤1:将若干个无线传感器节点部署到位,打开开关使得传感器节点开始工作。
步骤2:任一传感器节点A随机产生虚拟MAC地址,不妨假设为a。A的任一邻居传感器节点B也产生一个虚拟MAC地址g。
步骤3:B向A请求DIS包,征集邻居节点A的信息。
步骤4:A收到DIS包,向B发送包含虚拟随机MAC地址的DIO包。
步骤5:B收到DIO包后更新自身的邻居表,向A发送数据包。
步骤6:A将其随机MAC地址a转换成二进制格式b,第三位后插入0xFFFE得到c再反转U/L位(即第七位)得到d。根据上面的二进制数得到接口ID:e,将e与链路本地前缀组合在一起得到IPv6地址:f。
步骤7:节点B将其随机MAC地址g转换成二进制格式h,第三位后插入0xFFFE得到i再反转U/L位(即第七位)得到j。根据上面的二进制数得到接口ID:k,将k与链路本地前缀组合在一起得到IPv6地址l。
步骤8:双方由DIO包中得知对方的IPv6地址,然后将数据包的目的地址设为对方地址进行数据传输。
步骤9:节点A的随机MAC地址建立一次邻居关系后即作废,并不定期的更新MAC地址,重复以上过程建立与B的连接。
两方交战,我方隐秘的在敌方营地中部署了若干无线多媒体传感器网络节点(支持RPL路由协议和IPV6通信),例如代号为C的节点和代号为D的用于数据存储的节点。敌方间谍获悉了这一情报,但不知我方节点的具体部署位置。于是,敌方在其营地的敏感区域部署了若干个同样支持RPL路由协议和IPV6通信的节点,例如L、M和N来试图获取多媒体节点C的地理位置信息。
步骤1:敌方将恶意节点L,M,Q部署在我方敏感区域,并使节点开始工作。
步骤2:传感器节点C想要将拍摄到的数据传输给D,于是想与D建立连接,C产生虚拟MAC地址:A0-B0-C0-D0-E0-F0。传感器节点D也产生一个虚拟MAC地址:A1-B1-C1-D1-E1-F1。
步骤3:C向D发送DIS包,请求与节点D建立邻居关系来传输数据。
步骤4:D收到DIS包,向C发送包含虚拟随机MAC地址A1-B1-C1-D1-E1-F1的DIO包。
步骤5:D收到DIO包后更新自身的邻居表,向C发送数据包。
步骤6:建立邻居关系后,C将其随机MAC地址A0-B0-C0-D0-E0-F0转换成二进制格式10100000 10110000 11000000 11010000 11100000 11110000,第三位后插入0xFFFE得到10100000 10110000 11000000 11111111 11111110 1101000011100000 11110000再反转U/L位(即第七位)得到10100010 10110000 1100000011111111 11111110 11010000 11100000 11110000。根据上面的二进制数得到接口ID:A2B0:C0FF:FED0:E0F0,将接口ID与链路本地前缀组合在一起得到IPv6地址:FE80::A2B0:C0FF:FED0:E0F0。
步骤7:D将其随机MAC地址A1-B1-C1-D1-E1-F1转换成二进制格式10100001 10110001 11000001 11010001 11100001 11110001,第三位后插入0xFFFE得到10100001 10110001 11000001 11111111 11111110 11010001 1110000111110001再反转U/L位(即第七位)得到10100011 10110001 11000001 1111111111111110 11010001 11100001 11110001。根据上面的二进制数得到接口ID:A3B1:C1FF:FED1:E1F1,将接口ID与链路本地前缀组合在一起得到IPv6地址:FE80::A3B1:C1FF:FED1:E1F1。
步骤8:双方由DIO包中得知对方的IPv6地址,然后将数据包的目的地址设为对方的IPv6地址进行数据传输。
步骤9:节点C的随机MAC地址建立一次邻居关系后即作废,为了保证摄像节点能监视至少一天一夜,更新周期定位30分钟一次,重复以上过程建立与D的连接。从而使得恶意节点无法知道C的真实IPv6地址。进而使得数据能够安全传输。
敌方发现无法远程入侵我方节点,试图通过物理入侵的办法消灭节点。节点L向我方部署的节点请求建立邻居关系,其中C收到L的请求后虚拟了MAC地址:A2-B2-C2-D2-E2-F2,将其封装在发往L的DIO中。L获知其中一个节点的地址后(敌方并不知道我方部署了多少个节点),将其MAC分享给了节点M,N。节点M试图向MAC地址为A2-B2-C2-D2-E2-F2的节点请求邻居关系,却无法找到这个节点,因为此时C的MAC地址已经改变,敌方的攻击失败。