一种无线传感器网络安全轻量重编程方法
【技术领域】
[0001]本发明属于无线通信技术领域,尤其涉及一种无线传感器网络安全轻量重编程方法。
【背景技术】
[0002]无线传感器网络(Wireless Sensor Networks, WSNs)是由众多传感器节点组成的网络,在医疗、环境检测、军事等关键领域有非常重要的应用。传感器节点一旦部署在某些特定的领域,就很难再通过手动的方式进行大规模地修复节点上的某些bug或者更新和安装一些软件,因而需要利用重编程协议来对传感器中的节点进行大规模地重编程。
[0003]现有的重编程协议和方法,关注的重点是程序镜像分发的可靠性。在程序镜像分发的第一个阶段,传感器节点首先周期性地广播其关于程序镜像的摘要信息,当节点收到摘要信息时会和自身保存的摘要信息进行比较,以调整其广播的频率。当节点收到相关的摘要信息比自身存储的新时(通过比较摘要信息中的版本号即可确定),传感器节点将向该节点发送请求信息来更新节点上相应的程序镜像和摘要信息;当节点收到相关的摘要信息比自身存储的旧时,该传感器节点将广播自身的摘要信息;当传感器节点收到的摘要信息和自身相同时,该传感器节点将延长其广播的时间间隔以延长整个传感器网络的生命周期。在程序镜像分发的第二个阶段,传感器节点根据程序镜像数据包携带的循环冗余纠错码来确保数据在传送的过程中未出现错误。在程序镜像分发的第三个阶段,如果目标传感器节点未收到所有的数据包,目标传感器节点将向发送方发送数据包重传请求,确保每个传感器节点都能收到全部的程序镜像。在程序镜像分发的这些阶段,已有的重编程协议为了确保数据分发的高可靠性,采用了以上保障机制。然而,却忽略了无线传感器网络中重编程的安全保密性。由于无线传感器网络是基于无线通信的基础上发展而来,因而在一些特殊的环境中攻击者很容易通过窃听、篡改、拒绝服务等方式来对其发起攻击。这些攻击会严重危害到程序镜像的保密性、软件安装的正确性以及网络的正常使用。因而,加强对程序镜像的安全保护非常关键。
[0004]本发明的目的在于克服现有技术的缺点与不足,提供一种无线传感器网络安全轻量重编程的方法,该方法具有的优点有:可抵抗传感器节点的妥协,在丢包和数据包传送失序上具有高鲁棒性,整个网络无时间同步要求,确保信息的保密性,以及能够高效抵抗拒绝服务攻击。
【发明内容】
[0005]本发明提出了一种无线传感器网络安全轻量重编程方法,包括如下阶段:
[0006]系统初始化阶段:基站将每个待发送的页面对应位置的原始数据包分组,根据所述页面的数目和每个页面所包含的数据包的数目,基站为其生成多路单向哈希链作为秘钥,并将每条单向哈希链的定向哈希值存储在各个传感器节点上;所述基站生成自己的公钥和私钥,并将公钥安装在各个传感器节点上;
[0007]数据包预处理阶段:所述基站对待发送的数据包进行预处理,使用先编码后加密的方式构建加密数据包和Merkle哈希树,然后依次发送所述数据包;
[0008]数据包验证阶段:各个传感器节点在收到所述数据包,对所述数据包进行解密和验证后,对各个数据包进行解码以恢复成所述原始数据包,并判断所接收到的数据包的有效性成立后接受所述原始数据包。
[0009]本发明提出的所述无线传感器网络安全轻量级重编程方法中,所述初始化阶段包括以下步骤:
[0010]步骤Al:所述基站将所述页面中相同位置的数据包分到同一个组内,并为每个数据包组选取一个随机数作为单向哈希链的种子数字;
[0011]步骤A2:所述基站利用所述种子数字为对应的数据包组创建一条单向哈希链作为秘钥,所述种子数字作为哈希链头的初始值,其它链上的值由其前一个单向哈希链上的值作为输入运用哈希函数运算而产生的,在足以满足当前页面数据包个数的情况下,获得最后一个哈希值即定向哈希值,所述定向哈希值用于验证所述数据包的完整性;
[0012]步骤A3:把所述定向哈希值组成的定向哈希值向量分配到对应传感器节点上,作为密钥向量,在后续步骤中将用于对接收的数据包进行解密;
[0013]步骤A4:使用七元组表示每一个数据项。
[0014]本发明提出的所述无线传感器网络安全轻量级重编程方法中,步骤A4中所述七元组分别为:编码标识、传感器节点标识、版本号、已完成的页面、已完成的数据包、冗余验证位和数据值;其中,所述编码标识表示采用的编码方式,所述传感器标识表示数据的传输的来源,所述版本号表示程序镜像的新旧,所述已完成的页面表示现已经收到程序镜像页面的总数,所述已完成的数据包表示已完成页面的下一页面中已经接收的数据包,所述冗余验证位表示用于对数据分发的正确性进行校验的二进制数,所述数据值表示数据项的数据值。
[0015]本发明提出的所述无线传感器网络安全轻量级重编程方法中,所述的数据包预处理阶段包括以下步骤:
[0016]步骤B1:基站首先利用产生的随机数,先对各个页面的各个数据包进行异或操作,生成编码的数据包,然后利用目标传感器节点上的密钥对编码的数据包进行对称加密。
[0017]步骤B2:所述基站采用广播模式将加密后的数据包分发到每一个传感器节点,所述传感器节点之间程序镜像的分发采用事先生成的秘钥簇来认证节点双方,以确定通信双方所发送数据的真实性以及数据的完整性。
[0018]本发明提出的所述无线传感器网络安全轻量级重编程方法中,步骤BI中所述的基站利用传感器节点上的密钥对数据包进行对称加密的步骤为:基站利用所产生的多路单向哈希链对所述数据包组进行加密,加密时采用纵向加密的方法,其第一个单向哈希链对每个页面第一个数据包所组成的集合进行加密,第二个单向法哈希链对每个页面的第二个数据包所组成的集合进行加密,依次类推;然后将该加密数据包和加密下一个数据包的密钥连接在一起构建一个新的数据包用于广播到各个传感器节点。
[0019]本发明提出的所述无线传感器网络安全轻量级重编程方法中,所述数据包验证阶段包括以下步骤:
[0020]步骤Cl:由基站发送的加密的数据包传送到目标传感器节点后,所述传感器节点利用自身的存储的密钥向量对其中的各个数据包进行逐一解密,只有经过所述密钥向量进行验证过的数据包才能算成功解密;
[0021]步骤C2:成功解密后对所述数据包进行验证;
[0022]步骤C3:传感器节点将成功解密后的数据包进行解码,解码的过程根据目标传感器节点所收到的数据包上的编码标识进行解码,恢复原始的程序镜像数据包。
[0023]本发明提出的所述无线传感器网络安全轻量级重编程方法中,步骤C2对所述数据包进行验证包括如下步骤:
[0024]步骤C21:若接收到的数据包的版本号比原有的版本号更新,则执行步骤C22,否则执行步骤C25 ;
[0025]C22:若所述数据包的密钥值通过哈希函数计算后得到的哈希值与所述传感器节点上保存的密钥值相同,则执行步骤C23,否则执行步骤C24 ;
[0026]C23:所述传感器节点用所述数据包中的密钥值替换原来的密钥值,若数据包的版本号是新的,且已经接收完成一个完整的页面,则所述传感器节点接收所述数据包以更新数据,否则执行步骤C24;
[0027]C24:抛弃所述数据包;
[0028]C25:若所述数据包的数据的版本号和所述传感器节点上的版本号相同,则所述传感器节点根据Trickle算法增大广播数据包的时间间隔;若接收到的数据包的版本号较所述传感器节点上的版本号更早,则广播所述传感器节点自身存储的数据包。
[0029]本发明提出的所述无线传感器网络安全轻量级重编程方法中,步骤C3对所述数据包进行解码过程包括如下步骤:
[0030]步骤C31:当所述传感器节点收到足够的编码数据包时,对数据包进行解码,解码前首先依据编码标志位获得第一个编码数据包,所述编码数据包是该页面所有数据包编码的结果;
[0031]步骤C32:将后续的编码数据包依次与第一个编码数据包进行异或操作,恢复出除了最后一个原始数据包之外的其余原始数据包;
[0032]步骤C33:将所有已经恢复出来的原始数据包与第一个编码数据包进行异或操作,恢复出所述最后一个原始数据包。
[0033]本发明提出的所述无线传感器网络安全轻量级重编程方法中,在所述数据包验证阶段中,根据设定的阈值动态启动弱的验证机制,以降低传感器网络应对拒绝服务攻击所消耗的资源,从而延长传感器网络的寿命。
[0034]本发明的有益效果在于:
[0035]抵抗传感器节点的妥协:只要未被妥协的传感器节点依旧能够连接到基站,贝1J不管已经妥协传感器节点的数目多少,协议都能抵抗传感器节点妥协。
[0036]在丢包和数据包传送失序上具有高鲁棒性:在无线传感器网络中高频率的出现丢包和数据包传送失序现象,这要求协议设计能够在最大限度上容忍高丢包率和传送失序。
[0037]基站与传感器节点间无时间同步:基站与传感器节点间不要求时间同步。因此,无需对数据包到达间隔时间