首页> 中国专利> 一种无线传感器网络安全轻量重编程方法

一种无线传感器网络安全轻量重编程方法

摘要

本发明公开了一种无线传感器网络安全轻量重编程方法,包括:系统初始化阶段:基站将每个待发送的页面对应位置的原始数据包分组,根据页面的数目和每个页面所包含的数据包的数目,基站为其生成多路单向哈希链作为秘钥,并将每条单向哈希链的定向哈希值存储在各个传感器节点上;基站生成公钥和私钥,并将公钥安装在各个传感器节点上;数据包预处理阶段:基站对待发送的数据包进行预处理,使用先编码后加密的方式构建加密数据包和Merkle哈希树,然后依次发送数据包;数据包验证阶段:各个传感器节点在收到数据包,对数据包进行解密和验证后,对各个数据包进行解码以恢复成原始数据包,并判断所接收到的数据包的有效性成立后接受原始数据包。

著录项

  • 公开/公告号CN105228157A

    专利类型发明专利

  • 公开/公告日2016-01-06

    原文格式PDF

  • 申请/专利号CN201510590508.6

  • 发明设计人 何道敬;陈得鹏;黄琳;

    申请日2015-09-16

  • 分类号H04W12/12(20090101);H04W84/18(20090101);

  • 代理机构上海麦其知识产权代理事务所(普通合伙);

  • 代理人董红曼

  • 地址 200062 上海市普陀区中山北路3663号

  • 入库时间 2023-12-18 13:28:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-06-30

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04W12/12 变更前: 变更后: 变更前: 变更后: 申请日:20150916

    专利权人的姓名或者名称、地址的变更

  • 2019-05-17

    授权

    授权

  • 2016-02-03

    实质审查的生效 IPC(主分类):H04W12/12 申请日:20150916

    实质审查的生效

  • 2016-01-06

    公开

    公开

说明书

技术领域

本发明属于无线通信技术领域,尤其涉及一种无线传感器网络安全轻量重编程方法。

背景技术

无线传感器网络(WirelessSensorNetworks,WSNs)是由众多传感器节点组成的网络,在医疗、环境检测、军事等关键领域有非常重要的应用。传感器节点一旦部署在某些特定的领域,就很难再通过手动的方式进行大规模地修复节点上的某些bug或者更新和安装一些软件,因而需要利用重编程协议来对传感器中的节点进行大规模地重编程。

现有的重编程协议和方法,关注的重点是程序镜像分发的可靠性。在程序镜像分发的第一个阶段,传感器节点首先周期性地广播其关于程序镜像的摘要信息,当节点收到摘要信息时会和自身保存的摘要信息进行比较,以调整其广播的频率。当节点收到相关的摘要信息比自身存储的新时(通过比较摘要信息中的版本号即可确定),传感器节点将向该节点发送请求信息来更新节点上相应的程序镜像和摘要信息;当节点收到相关的摘要信息比自身存储的旧时,该传感器节点将广播自身的摘要信息;当传感器节点收到的摘要信息和自身相同时,该传感器节点将延长其广播的时间间隔以延长整个传感器网络的生命周期。在程序镜像分发的第二个阶段,传感器节点根据程序镜像数据包携带的循环冗余纠错码来确保数据在传送的过程中未出现错误。在程序镜像分发的第三个阶段,如果目标传感器节点未收到所有的数据包,目标传感器节点将向发送方发送数据包重传请求,确保每个传感器节点都能收到全部的程序镜像。在程序镜像分发的这些阶段,已有的重编程协议为了确保数据分发的高可靠性,采用了以上保障机制。然而,却忽略了无线传感器网络中重编程的安全保密性。由于无线传感器网络是基于无线通信的基础上发展而来,因而在一些特殊的环境中攻击者很容易通过窃听、篡改、拒绝服务等方式来对其发起攻击。这些攻击会严重危害到程序镜像的保密性、软件安装的正确性以及网络的正常使用。因而,加强对程序镜像的安全保护非常关键。

本发明的目的在于克服现有技术的缺点与不足,提供一种无线传感器网络安全轻量重编程的方法,该方法具有的优点有:可抵抗传感器节点的妥协,在丢包和数据包传送失序上具有高鲁棒性,整个网络无时间同步要求,确保信息的保密性,以及能够高效抵抗拒绝服务攻击。

发明内容

本发明提出了一种无线传感器网络安全轻量重编程方法,包括如下阶段:

系统初始化阶段:基站将每个待发送的页面对应位置的原始数据包分组,根据所述页面的数目和每个页面所包含的数据包的数目,基站为其生成多路单向哈希链作为秘钥,并将每条单向哈希链的定向哈希值存储在各个传感器节点上;所述基站生成自己的公钥和私钥,并将公钥安装在各个传感器节点上;

数据包预处理阶段:所述基站对待发送的数据包进行预处理,使用先编码后加密的方式构建加密数据包和Merkle哈希树,然后依次发送所述数据包;

数据包验证阶段:各个传感器节点在收到所述数据包,对所述数据包进行解密和验证后,对各个数据包进行解码以恢复成所述原始数据包,并判断所接收到的数据包的有效性成立后接受所述原始数据包。

本发明提出的所述无线传感器网络安全轻量级重编程方法中,所述初始化阶段包括以下步骤:

步骤A1:所述基站将所述页面中相同位置的数据包分到同一个组内,并为每个数据包组选取一个随机数作为单向哈希链的种子数字;

步骤A2:所述基站利用所述种子数字为对应的数据包组创建一条单向哈希链作为秘钥,所述种子数字作为哈希链头的初始值,其它链上的值由其前一个单向哈希链上的值作为输入运用哈希函数运算而产生的,在足以满足当前页面数据包个数的情况下,获得最后一个哈希值即定向哈希值,所述定向哈希值用于验证所述数据包的完整性;

步骤A3:把所述定向哈希值组成的定向哈希值向量分配到对应传感器节点上,作为密钥向量,在后续步骤中将用于对接收的数据包进行解密;

步骤A4:使用七元组表示每一个数据项。

本发明提出的所述无线传感器网络安全轻量级重编程方法中,步骤A4中所述七元组分别为:编码标识、传感器节点标识、版本号、已完成的页面、已完成的数据包、冗余验证位和数据值;其中,所述编码标识表示采用的编码方式,所述传感器标识表示数据的传输的来源,所述版本号表示程序镜像的新旧,所述已完成的页面表示现已经收到程序镜像页面的总数,所述已完成的数据包表示已完成页面的下一页面中已经接收的数据包,所述冗余验证位表示用于对数据分发的正确性进行校验的二进制数,所述数据值表示数据项的数据值。

本发明提出的所述无线传感器网络安全轻量级重编程方法中,所述的数据包预处理阶段包括以下步骤:

步骤B1:基站首先利用产生的随机数,先对各个页面的各个数据包进行异或操作,生成编码的数据包,然后利用目标传感器节点上的密钥对编码的数据包进行对称加密。

步骤B2:所述基站采用广播模式将加密后的数据包分发到每一个传感器节点,所述传感器节点之间程序镜像的分发采用事先生成的秘钥簇来认证节点双方,以确定通信双方所发送数据的真实性以及数据的完整性。

本发明提出的所述无线传感器网络安全轻量级重编程方法中,步骤B1中所述的基站利用传感器节点上的密钥对数据包进行对称加密的步骤为:基站利用所产生的多路单向哈希链对所述数据包组进行加密,加密时采用纵向加密的方法,其第一个单向哈希链对每个页面第一个数据包所组成的集合进行加密,第二个单向法哈希链对每个页面的第二个数据包所组成的集合进行加密,依次类推;然后将该加密数据包和加密下一个数据包的密钥连接在一起构建一个新的数据包用于广播到各个传感器节点。

本发明提出的所述无线传感器网络安全轻量级重编程方法中,所述数据包验证阶段包括以下步骤:

步骤C1:由基站发送的加密的数据包传送到目标传感器节点后,所述传感器节点利用自身的存储的密钥向量对其中的各个数据包进行逐一解密,只有经过所述密钥向量进行验证过的数据包才能算成功解密;

步骤C2:成功解密后对所述数据包进行验证;

步骤C3:传感器节点将成功解密后的数据包进行解码,解码的过程根据目标传感器节点所收到的数据包上的编码标识进行解码,恢复原始的程序镜像数据包。

本发明提出的所述无线传感器网络安全轻量级重编程方法中,步骤C2对所述数据包进行验证包括如下步骤:

步骤C21:若接收到的数据包的版本号比原有的版本号更新,则执行步骤C22,否则执行步骤C25;

C22:若所述数据包的密钥值通过哈希函数计算后得到的哈希值与所述传感器节点上保存的密钥值相同,则执行步骤C23,否则执行步骤C24;

C23:所述传感器节点用所述数据包中的密钥值替换原来的密钥值,若数据包的版本号是新的,且已经接收完成一个完整的页面,则所述传感器节点接收所述数据包以更新数据,否则执行步骤C24;

C24:抛弃所述数据包;

C25:若所述数据包的数据的版本号和所述传感器节点上的版本号相同,则所述传感器节点根据Trickle算法增大广播数据包的时间间隔;若接收到的数据包的版本号较所述传感器节点上的版本号更早,则广播所述传感器节点自身存储的数据包。

本发明提出的所述无线传感器网络安全轻量级重编程方法中,步骤C3对所述数据包进行解码过程包括如下步骤:

步骤C31:当所述传感器节点收到足够的编码数据包时,对数据包进行解码,解码前首先依据编码标志位获得第一个编码数据包,所述编码数据包是该页面所有数据包编码的结果;

步骤C32:将后续的编码数据包依次与第一个编码数据包进行异或操作,恢复出除了最后一个原始数据包之外的其余原始数据包;

步骤C33:将所有已经恢复出来的原始数据包与第一个编码数据包进行异或操作,恢复出所述最后一个原始数据包。

本发明提出的所述无线传感器网络安全轻量级重编程方法中,在所述数据包验证阶段中,根据设定的阈值动态启动弱的验证机制,以降低传感器网络应对拒绝服务攻击所消耗的资源,从而延长传感器网络的寿命。

本发明的有益效果在于:

抵抗传感器节点的妥协:只要未被妥协的传感器节点依旧能够连接到基站,则不管已经妥协传感器节点的数目多少,协议都能抵抗传感器节点妥协。

在丢包和数据包传送失序上具有高鲁棒性:在无线传感器网络中高频率的出现丢包和数据包传送失序现象,这要求协议设计能够在最大限度上容忍高丢包率和传送失序。

基站与传感器节点间无时间同步:基站与传感器节点间不要求时间同步。因此,无需对数据包到达间隔时间做任何假设,当传感器节点接收到数据包时便可即刻对所述接收到的数据包进行认证。

高效地抵抗拒绝服务攻击:传感器节点首先假设收到的数据包时真实的数据包,并对其进行验证,当验证失败的次数大于设置的阈值时,启动弱的验证机制。不仅能够抵抗拒绝服务攻击而且能够节约传感器节点的能量,达到延长无线传感器网络生命周期的目的。

增加密码分析者获取数据信息的难度:由于采用先编码后加密的方式,密码分析者只能获得一些编码后的信息,难以获得原始的数据信息。

附图说明

图1是本发明数据进行加密的流程图。

图2是多个单向哈希链产生m个密钥的结构示意图。

图3是Merkle哈希树的构建示意图。

具体实施方式

结合以下具体实施例和附图,对本发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。

本发明中有关的技术术语代表的含义如下:

Ki,j表示第i条单向哈希链的第j个数据项,其中j≥0;

Pti,j表示第i个页面的第j个数据项;

C(m,n)表示一个组合数,即从m个元素选取n个元素所有的方法的数目;

E(X,K)表示用对称密钥K给数据项X进行对称加密;

D(X,K)表示用对称密钥K给数据项X进行解密;

H(.)表示单向密钥哈希函数;

H(M)表示数据项M的哈希值;

Kpr表示数字签名的私钥;

Kpb表示数字签名的公钥;

SIGk(e)表示使用密钥k对信息e进行数字签名;

Verk(r,s)表示验证对接收到的信息r和签名s进行认证;

pCount表示已收到不同编码数据包的个数;

fCount表示已收到错误验证数据包的个数;

F_COUNT表示一个常量即错误接收包数目的阈值;

⊕表示异或运算;

||表示连接运算。

本发明基于使用编码和加密相结合的方法以及利用轻量级的防护策略,对无线传感器网络中著名的重编程协议(Deluge)进行安全扩展,实现轻量级的机密以及高效的验证的无线传感器网络安全轻量重编程方法。本发明无线传感器网络安全轻量重编程方法(Xluge)分为系统初始化,数据包预处理和数据包验证三个阶段,具体为:

系统初始化阶段:基站将每个页面对应位置的数据包分组,根据所发送页面的数目和每个页面所包含的数据包的数目,基站为其生成多路单向哈希链作为秘钥,并将每条单向哈希链的定向哈希值作为一个数组项存储在各个节点上。且基站生成自己的公钥和私钥,并将公钥安装在各个节点上用于后续的验证环节。

数据包预处理阶段:基站对所发送数据包进行预处理,使用先编码后加密的方式构建加密数据包,然后将依次发送数据包;

数据包验证阶段:各个传感器节点在收到包后,首先对其解码获得解码数据包,然后对各个数据包进行解密恢复数据包,并判断所接收到的数据包是否有效。依据判断的结果,确定是否接收该数据包。同时,在此阶段,为了降低传感器网络应对拒绝服务攻击所消耗的资源来延长传感器网络的寿命,本发明采用动态启动弱的验证机制。本发明具有保证程序镜像机密性,增加攻击者获得原始信息难度,动态且能高效地抵制拒绝服务攻击,以及能够容忍节点不按顺序接收数据包等优点。

在系统初始化阶段基站首先将即将分发的代码镜像分成m个页面,每个页面分为n个数据包,同时将页面中相同位置的数据包分到同一个组内,如图1所示,每个组都是由各个页面纵向相同位置数据包组成的,例如图1中的第一组数据包即为(Pt1,1,Pt2,1,…,Ptm,1),其它组别依次类推,共分为n组,并为每个数据包组选取一个随机数作为单向哈希链的种子数字;基站利用上述步骤中随机产生的种子数字为对应的数据包组创建一条长度为m单向哈希链,其创建方式为Ki,j=H(Ki+1,j)(其中0≤i≤m,1≤j≤n),如图2所示,其中m的取值可以为任意正整数,但必须大于每个页面所包含数据包的个数。该种子数字作为哈希链头的初始值,其它链上的值由其前一个单向哈希链上的值作为参数运用哈希函数H(.)运算而产生的(第一个哈希链节点的哈希值由选取的随机数作为参数通过H(.)函数计算而来),在足以满足页面数据包个数的情况下,获得最后一个哈希值即定向哈希值,该定向哈希值将会被用来验证数据包的完整性;利用所生成的多路单向哈希链,将所有的单向哈希链的定向哈希值作为一个定向哈希值向量K<K0,1,K0,2,K0,3,…,K0,n>分配给网络中的传感器节点,该向量K将用于数据的解密与更新环节。

其中,Xluge用七元组(flag,userID,version,pNumber,ptNumber,data,CRC)表示每一个数据项,七个参数意义如下:flag(标识)值表示数据编码的方式(根据预先定义的编码方式,来确定数据包所采用的编码的方式),userID(传感器节点标识)值是数据分发时目标传感器节点可根据发送者身份判断是否接受数据包,version(版本号)用于表示数据新旧的版本号(version值越大,数据越新),data(数据值)则表示传播的数据值(一般由16进制数字组成)。pNumber(页面数目),表示该数据项所属的页面;ptNumber(数据包数目),表示该数据项所属的数据包。CRC(循环冗余校验码)是一串二进制数字,用来对数据分发的正确性进行校验。flag可以设置为1个字节,userID,pNumber,ptNumber可以设置为2字节。其他数据项可根据实际需求进行设置。

在完成了系统初始化阶段后,进入数据包预处理阶段。基站利用随机产生的随机数flag来确定节点编码的方式,其中flag的取值满足1≤flag≤n(n为页面数据包的个数)。本算法编码的方式为:每个页面第一个编码数据包C1(将编码后的数据包记为Ci,其中1≤i≤n)是由该页面所有n个数据包进行异或操作的结果,其它剩余的n-1个编码数据包则根据flag值来确定其编码模式(即剩余的每个编码数据包根据flag值来选择n-1个元数据包进行异或操作)。

基站通过函数E({C1,Ki,1},Ki-1,1)||…||E({Cn,Ki,N},Ki-1,N)对要分发的数据项进行对称加密,其中Ci为要分发的数据项(1≤i≤n),Ki,j(1≤j≤N)目标传感器节点接受数据包后要更新的密钥值,Ki-1,j(1≤j≤N)为每一层继承的密钥(即目标传感器节点存储的密钥)。Ki,j,Ki-1,j均为通过哈希函数H(.)计算而得的各个单向哈希链上的哈希值。基站利用传感器节点上的密钥对数据包进行对称加密的具体过程为:基站利用目标传感器节点现有的密钥对数据包进行对称加密,加密时采用纵向加密的方式,即第一条单向哈希链对每个页面的第一个数据包所组成的数据包组进行加密,第二条单向哈希链对每个页面的第二个数据包所组成的数据包组进行加密,以此类推。如图1所示,使用多路单向哈希链对编码后的数据包进行纵向加密,每一组数据包使用一条单向哈希链进行加密。

当基站按照上述编码加密的方式进行预处理之后,需要构建认证页面(该页面用于对数据包完整性进行验证)记为Page0。Page0是由第一个页面的数据包构建的数据项以及由这些数据项创建的Merkle哈希树组成,如图3所示。其中V1,V2,V3,V4分别由Page1的数据包均分得到,例如Page1包含48个数据包,则每12个数据包的连接操作可以组成一个元素V,即V1可以由1到12号数据包连接操作组成,V2由13到24号数据包连接组成,剩余的数据包按相同方式组成V3和V4。最后V1,V2,V3,V4通过哈希函数构建出如图3的Merkel哈希树。Merkle哈希树的根节点、程序镜像的元数据(包含镜像版本号)等相关内容的签名都包含在一个签名(Signature)信息中。此签名信息由基站使用其私钥和相关的签名算法产生。基站将使用广播模式向传感器节点发送程序镜像数据包,目标传感器节点通过验证数字签名(Signature)和其存储的密钥向量进行H(.)运算来确定数据包的完整性和真实性。

数据包验证阶段对数字签名数据包及Page0进行验证,其主要步骤如下:节点收到该签名数据包时,通过利用节点上存储的Kpb和签名算法进行验证,验证Verk(r,s)是否成立(其中s为签名,r为接收到的信息),如果成立则继续利用Merkle哈希树的方法来验证整个Page0数据包;否则,丢弃该数据包。成功接收Page0的所有数据包之后,可以依次接收剩余页面的数据包。传感器节点利用自身存储的密钥向量K<K0,1,K0,2,K0,3,…,K0,n>对收到的数据包进行解密。其解密公式为:

D(E({Ci,Ki,j},Ki-1,j)={C,Ki,j}

传感器节点成功解密后,使用H(.)函数来判断其数据完整性。如果H(Ki,j)=Ki-1,j,则接受该数据包;否则,将直接丢弃改数据包。

成功对数据包进行解密后,将对数据包进行解码工作。当收到当前页面的第一个编码包C1时,目标传感器节点就可以开始解码,其解码的主要步骤如下:

1)当成功解密一个数据包时,将其和其它数据包的编码信息进行比较,如果和已收到的数据包都不相同,则pCount的值增加1各个单位,将该数据包和该页面的C1编码包进行异或操作,恢复相关的数据包;如果收到的数据包已经存在于当前存储的数据包,则直接将其丢弃。

2)当pCount的值为n(n为该页面总的数据包数目)时,则表明已经成功接收到所有的编码数据包,此时按1)中的描述已经解码出n-1个数据包,最后的一个元数据包可以使用以下的循环操作获得:将恢复的n-1个数据包依次与C1进行异或操作,恢复出该页面的最后一个数据包。

拒绝服务攻击是无线传感其网络中较为常见的攻击行为,现有的主流的应对方法是在解码中使用弱的验证作为第一道防线,如使用信息特定迷惑(Messagespecificpuzzle)或密码迷惑(Cipherpuzzle)等。然而虚假数据包的到来在一定程度上是服从泊松分布的,因而本方法采用如上述的先进行正常的验证行为,一旦该数据包的验证失败,则将fCount的值增加1,在发现接收到的错误包数目达到一定阈值(F_COUNT)时,才启用弱的验证机制作为第一道防线。这样能够最大限度地节约传感器节点的能量,延长传感器网络的寿命。同时,本方法设置的阈值可根据传感器节点部署的网络环境进行调整。在结合编码和加密方法的基础上,本方法将Deluge扩展为一个抵抗攻击者在线监听、安全保密、高效抵抗拒绝服务攻击(DOS,DenialofService)并且能够容忍数据包的不按顺序接收。

本发明的保护内容不局限于以上实施例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号