一种应用于无线传感器网络的动态密钥虚假数据过滤方法与流程

文档序号:12698789阅读:193来源:国知局
一种应用于无线传感器网络的动态密钥虚假数据过滤方法与流程

本发明是一种应用于无线传感器网络中的动态密钥的虚假数据过滤方法。主要用于解决无线传感器中虚假数据的过滤,属于无线传感器网络技术领域。



背景技术:

随着无线传感网络技术的快速发展,无线传感网中在生活中应用也越来越广泛,无线传感器网络是面向应用的,贴近客观物理世界的网络系统,其产生和发展一直都与应用相联系。多年来经过不同领域研究人员的演绎,WSN(Wireless Sensor Network)技术在军事领域、精细农业、安全监控、环保监测、建筑领域、医疗监护、工业监控、智能交通、物流管理、自由空间探索、智能家居等领域的应用得到了充分的肯定和展示。随着无线传感器网络的大力发展,无线传感器络中数据传输量越来越大,其中包含了大量的虚假数据,传输这些虚假数据不仅会使数据接收端的决策者做出错误决定还会消耗节点大量的能量,缩短节点寿命,影响网络性能。



技术实现要素:

本发明提供一种应用于无线传感器网络动态密钥的虚假数据过滤方法,该方法有3个目的:

(1)通过环境数据在时间上的相关性,利用DKFS(Dynamic-Key Filtering Scheme)算法对节点接收到的数据进行验证,尽可能早的过滤出接收到的虚假数据,减少网络中虚假数据的传输量,节省节点能量,提高网络带宽利用率;

(2)通过DKFS算法可以对节点中存储的密钥进行动态更新,从采集节点端发起,层层递进式地进行密钥更新,先在采集节点与簇头节点之间进行密钥更新,然后,再对簇头节点与它的下游节点进行密钥更新,直到Sink节点更新结束;

(3)通过减少无线传感器网络中虚假数据的传输量,能提高无线传感器网络带宽利用率;

为了实现上述技术目的,本发明采取如下技术方案:

一种应用于无线传感器网络的动态密钥虚假数据过滤方法,具体包括以下步骤:

S1、簇头节点对所有簇内节点上传的数据r进形验证,验证不通过,则直接丢弃该数据,验证通过进入S2步骤;

S2、簇头节点验证完簇内节点上传的数据后,再检验是否需要密钥更新,同时生成数据报告R,将数据报告R发送给下游节点;

S3、如果需要更新,则簇头节点与需要更新的簇内节点进行密钥更新,并通知下游节点进行密钥更新;

S4、簇头节点的下游节点对数据报告R进行验证,同时检测是否需要进行密钥更新,中转节点将验证通过的数据报告R发送给下游节点,直到数据报告R发送到Sink节点;

S5、数据报告R到达Sink后,Sink节点进行最后验证,验证通过则保存数据报告R,反之,则丢弃数据报告R;同时检测是否需要进行密钥更新,如果需要就与上游节点进行密钥更新,更新成功后,向发起密钥更新的簇内节点发送密钥更新成功通知,新密钥可以使用。

所述S1步骤中,当簇内传感器节点vj上传数据时,vj利用密钥kl和数据值ej生成消息认证代码MAC:macj=kl(ej);各节点将自己生成的数据发送给簇头节点;F_Tj是生成rj的时间点,该值是由节点中定时器产生;当需要更新密钥时,才将Mj添加到rj中,是节点vj产生的第i个随机数,Mj是随机数生成的认证信息;

具体验证过程如下:

S1.1、簇头节点检测所有上传的数据中的ID是否是自己簇内节点的ID以及唯一性检测,如果不是,则直接丢弃该ID的数据rj

S1.2、验证完ID之后,接下来验证F_Tj与簇头节点存储的F_T′j:如果F_Tj≤F_T′j,则说明该数据为“过时”数据,丢弃;

S1.3、接下来,簇头节点利用自己拥有簇内所有节点的密钥对macj进行验证,即使用密钥与ej重新生成mac′j,与上传的macj进行对比,如不相等,则丢弃该数据,并将验证失败的rj中的ID列入“不信任”ID范围,下次不再接收该节点信息;

S1.4、在进行macj验证之后,获取合理数据:簇头节点取出各节点的事件值ej,计算出平均值再计算出如果Δd>d(设定误差范围阈值),则丢弃相应的rj数据;

S1.5、检测rj中是否有随机数如果有,验证对应的随机数的加密信息Mj

验证通过则进行密钥更新步骤,同时将存储的F_T归零;

验证不通过,则丢弃该数据。

所述S4步骤中,簇头节点对簇内采集节点上传的数据进行过滤后,生成一个数据包,该数据包中包含事件值、采集节点ID、认证消息MAC、密钥索引;

当中转节点接收到数据报告时,中转节点先对数据报告R中的ID、MAC以及密钥索引个数进行检查,然后再对MAC的正确性进行验证,最后检查数据报告R中的随机数,看是否需要更新密钥;转发节点中存储数据报告R的标记位F_T,该标记位用于验证重复数据报告,抵制重放攻击;中转节点存储的标记位在进行密钥更新时进行归零处理;

具体步骤如下:

S4.1、对数据报告R中的ID、MAC以及密钥索引个数进行检查,如果它们的个数均为t个,如果是则进行下一步检测,否则丢弃该数据报告R;

S4.2、检查数据报告R中是否包含簇头节点的ID以及簇头节点生成的MAC,如果不存在则直接丢弃该数据报告R;

S4.3、检测数据报告R中各个监测节点的ID是否是数据报告R中检测到的簇头节点所代表的簇内节点ID,如果有任意一个不是,就丢弃数据报告R;

S4.4、如果中转节点存储了数据报告R中节点vi(1≤i≤t)的密钥则利用对重新计算一个mac,与数据报告R中附带的mac进行比较:如果二者不等,丢弃数据报告R;

S4.5、检测数据报告R中随机数的密钥索引j1,j2,…,jt

如果需要更新,则验证对应的随机数的加密信息Mj

验证通过则进行密钥更新步骤,同时将存储的F_T进行归零处理;

验证不通过,则丢弃该数据;

如果不需要更新,则对数据报告R中的F_T进行检测,如果F_T小于或者等于上一次数据报告中的F_T,则将该数据报告认定为“过时”的重复数据,丢弃该数据报告;

S4.6、如果数据报告R通过上述验证后,则将数据报告R转发给下游节点。

4、根据权利要求1所述的应用于无线传感器网络的动态密钥虚假数据过滤方法,其特征在于,更新密钥池步骤如下:

步骤S5.1、簇内节点vj选出需要更新的第i条密钥链,利用随机函数Г生成一个新随机数xi,利用该链的第一个密钥对xi进行加密,

步骤S5.2、将xi、Mi添加到数据包r中发送给簇头节点;

步骤S5.3、簇头节点验证Mi

验证通过后,取出随机数xi保存;

验证不通过,丢弃数据包r;

步骤S5.4、簇头节点向验证通过的节点发送信息r′={xi;Mi},表示簇头节点已接收到更新通知:

如果节点没有接收到r′,在下次事件发生时,继续向簇头节点发送包含xi、Mi的数据包r;

如果节点接收到r′,验证Mi:

如果验证不通过,丢弃r′,并在下次事件发生时,继续向簇头节点发送包含xi、Mi的数据包r;

如果验证通过,在下次发生事件时,在向簇头节点发送的数据包r中添加密钥更新通知,并利用单向函数H,xi作为输入参数生成一条长度为w密钥链,更新密钥链;

步骤S5.5、簇头节点利用单向函数H,xi作为输入参数生成一条长度为w密钥链,并更新密钥;

步骤S5.6、在簇头节点与簇内节点更新完密钥之后,簇头节点将会与自己的下游节点数据R1进行密钥更新:将xi、Mi添加到数据报告R中发送给下游数据R1,下游数据R1执行类似与簇头节点执行步骤S5.2—S5.5功能,簇头节点将对下游节点数据R1发送的进行验证;

步骤S5.7、在下游节点数据R1更新完后,下游节点数据R1会与下游节点数据R2进行密钥更新,更新成功后下游节点数据R2会与下游节点数据R3进行密钥更新,直到Sink节点密钥更新完毕;

步骤S5.8、Sink节点更新成功后,将会向上游节点发送密钥更新成功通知,在采集节点收到该通知后,最新密钥将会被使用。

采用本发明的有益效果是:

本发明方法提出了无线传感器网络中动态密钥的虚假数据过滤方法,该方法在簇头端对簇内节点上传的数据进行虚假数据过滤,在中转节点处对簇头节点发送的数据进行验证,过滤出虚假数据。在簇头节点端对簇内节点上传的数据进行验证,可以减少簇内节点向网络中注入的虚假数据,可以减少中转节点的工作量;中转节点对接收到数据进行验证,可以有效保证数据的正确性,减少攻击者直接发送的虚假数据;实施密钥更新可以有效减少密钥被攻击者窃取密钥而带来的不良后果,对密钥进行更新可以使攻击者窃取到的密钥“过时”,提高网络安全性。

混合性:在本发明中,在虚假数据过滤时,将簇头节点与中转节点组成一个虚假数据过滤体系结构,可以有效地过滤出网络中传输的虚假数据;同时,采用密钥更新可以提高网络的安全性。

高效性:本发明能够有效较少无线传感器网络中虚假数据的传输量,节省节点能源,延长节点使用寿命,提高网络带宽利用利率;动态更新密钥可以提高网络的安全性。

附图说明

图1是本发明方法簇头节点虚假数据过滤执行流程示意图;

图2是本发明方法中转节点虚假数据过滤执行流程示意图;

图3是本发明方法的密钥更新流程示意图;

图4是本发明方法实现示意图。

具体实施方式

本发明一种应用于无线传感器网络的动态密钥虚假数据过滤方法,主要分为三部分:簇头节点过滤、中转节点过滤、密钥更新。

簇头节点过滤主要是对簇内采集节点上传的数据包进行验证,过滤出其中的虚假数据,执行过程如图1所示。

簇头节点将生成的数据报告转发给下游的中转节点,中转节点也会对接收到的数据进行过滤,其执行过程如图2。

当采集节点发起密钥更新通知时,从采集节点到Sink节点通信链上的所有节点将会进行密钥更新,如图3。

具体流程如下:

步骤S1簇头节点对所有簇内节点上传的数据r进验证,验证不通过,则直接丢弃该数据。

步骤S2.簇头节点验证完簇内节点上传的数据后,再检验是否需要密钥跟新,同时生成数据报告R,将数据报告R发送给下游节点;

步骤S3.如果需要跟新,则簇头节点与需要跟新的簇内节点进行密钥跟新,并通知下游节点进行密钥跟新;

步骤S4簇头节点的下游节点对数据报告R进行验证,同时检测是否需要进行密钥更新。

步骤S5.数据R到达Sink后,Sink节点进行最后验证,验证通过则保存数据R,反之,则丢弃R;同时检测是否需要进行密钥更新,如果需要就与上游节点进行密钥更新,更新成功后,向发起密钥更新的簇内节点发送密钥更新成功通知,新密钥可以使用。

一、部署在环境中的节点

在传感器节点被部署前,先对节点进行初始化,为每个节点分配唯一身份标识的ID,还用来生成随机数的随机函数Г,随机函数Г在一个节点中生成的随机数各不相同;此外,每个节点中还会初始化一个具有以下特性的单向函数H:当给单向函数H输入一个常量α时,函数H很容易生成一个数值β,H(α)=β;但是,却无法通过数值β来推出α的值。

簇内节点生成长度为w的密钥池:

1.节点利用随机函数Г生成s个随机数;

2.计算

3.接下来,簇内节点生成密钥池:可以得到密钥池其中,Ki表示节点vi中生成的密钥池,是簇内节点vi中密钥池中的密钥,是该节点中第i个随机数xi生成的第l个密钥。

在节点部署到实际的传感器网络中之前,先对要部署的节点进行初始化,簇内每个节点将自己生成的s个随机数发送给簇头节点1≤j≤n(n是簇内节点数),F_Tj是节点vj生成rx的时间点,由节点的定时器产生,由簇头节点存储。簇头节点会根据不同的ID节点上传的随机数分别进行存储,并利用每个节点上传的随机数来生成密钥池。簇头节点拥有自己生成的随机数而产生的密钥池,簇头节点将簇内节点上传的随机数生成随机数数据报告ID1表示簇头节点,并将生成的随机数数据报告Rx发送给下游节点,下游节点会和簇头节点一样生成密钥进行存储,Sink节点会接收网内所有的数据报告,并生成全局密钥进行存储。簇头的下游节点只存储簇头节点F_T,不存储其它节点的F_T。节点存储密钥方式。

二、消息认证代码

消息认证代码(MAC)为发送节点提供信息传输保障,MAC在传输过程中不被篡改。让h()函数成为一个安全的加密哈希函数,一个MAC可视为一个加密的哈希值,将其定义为

MAC(m,k,n)=h(m||k)mod 2n (1)

其中,h()是一个hash函数,m是消息(message),k是密钥(key),n是可调节的参数。当参数n=1时,MAC(m,k,1)提供1个bit验证位,过滤出虚假信息的概率为当参数n为α位时,MAC(m,k,α)能够以的概率过滤出虚假信息。

为了过滤攻击者注入的虚假数据,可以通过邻居节点、簇头节点、中转节点实现虚假数据过滤机制,当一个监测节点v0准备将一个信息m通过路由路径m首先在簇头节点处进行验证,验证m中mac信息,通过邻居节点来验证m中事件值,验证通过后,该簇头节点将生成消息认证代码M_C,M_C中包含v0和节点生成的mac:

M_C=(mac1 mac2 …mact)

三、簇头节点过滤

簇头节点对簇内节点上传的监测数据进行验证,对验证不通过的数据直接丢弃,如果其中有受妥协节点发送虚假数据,则将该节点ID视为不信任ID,不再接收该节点上传的数据。当簇内传感器节点vj上传数据时,vj利用密钥kl和数据值ej生成消息认证代码MAC:macj=kl(ej)。各节点将自己生成的数据发送给簇头节点。F_Tj是生成rj的时间点,该值是由节点中定时器产生。当需要更新密钥时,才将Mj添加到rj中,是节点vj产生的第i个随机数,Mj是随机数生成的认证信息。

簇头节点对簇内节点上传的数据验证过程如下:

步骤S1.1、簇头节点检测所有上传的数据中的ID是否是自己簇内节点的ID以及唯一性检测,如果不是,则直接丢弃该ID的数据rj

步骤S1.2、验证完ID之后,接下来验证F_Tj与簇头节点存储的F_T′j:如果F_Tj≤F_T′j,则说明该数据为“过时”数据,丢弃;

步骤S1.3、接下来,簇头节点利用自己拥有簇内所有节点的密钥对macj进行验证,即使用密钥与ej重新生成mac′j,与上传的macj进行对比,如不相等,则丢弃该数据,并将验证失败的rj中的ID列入“不信任”ID范围,下次不再接收该节点信息。

步骤S1.4、在进行macj验证之后,获取合理数据:簇头节点取出各节点的事件值ej,计算出平均值再计算出如果Δd>d(设定误差范围阈值),则丢弃相应的rj数据。

步骤S1.5、检测rj中是否有随机数如果有,验证对应的随机数的加密信息Mj

·验证通过则进行密钥更新步骤,同时将存储的F_T归零;

·验证不通过,则丢弃该数据;

经过对簇内的虚假数据过滤,可以大大减少中转节点对虚假数据过滤的工作量。将簇内受妥协的节点列为不信任的节点,可以在源头消除攻击者向网络注入的虚假数据,保证簇内数据的合法性,将减少网络数据传输量。

簇头节点对簇内节点上传的数据进行验证之后,对生成消息认证代码,选取t个合法节点则生成{mac1,mac2,…,mact},然后再生成数据报告,数据报告

其中是簇头节点计算出的平均值,ID1,ID2,…,IDt节点的ID号,mac1,mac2,…,mact是各节点的密钥与事件值生成的认证代码,mac1是簇头节点中的密钥与生成的认证代码信息,i1,i2,…,it为密钥索引,是节点需要更新密钥时才产生的随机数。在节点不需要更新密钥池时,不会上传随机数;M1,M2,…,Mt是生成的认证信息,用于验证随机数的合法性。F_T是生成数据报告R的标记位,F_T是由传感器中定时器产生的时间,转发节点根据数据报告中簇头节点ID进行存储F_T。

四、转发过滤

在簇头节点对簇内采集节点上传的数据进行过滤后,生成一个数据包,该数据包中包含事件值、采集节点ID、认证消息MAC、密钥索引,也有可能包含密钥更新所需的随机值和它的认证消息,转发节点需要对其进行验证。

当中转节点接收到数据报告时,中转节点先对R中的ID、MAC以及密钥索引个数进行检查,然后再对MAC的正确性进行验证,最后检查报告中的随机数,看是否需要更新密钥。转发节点中存储数据报告的标记位F_T,该标记位用于验证重复数据报告,抵制重放攻击。中转节点存储的标记位在进行密钥更新时进行归零处理。

中转节点验证数据报告步骤如下:

步骤S4.1、对数据报告R中的ID、MAC以及密钥索引个数进行检查,如果它们的个数均为t个,如果是则进行下一步检测,否则丢弃该数据报告R;

步骤S4.2、检查数据报告R中是否包含簇头节点的ID以及簇头节点生成的MAC,如果不存在则直接丢弃该数据报告R;

步骤S4.3、检测数据报告R中各个监测节点的ID是否是数据报告R中检测到的簇头节点所代表的簇内节点ID,如果有任意一个不是,就丢弃数据报告R;

步骤S4.4、如果中转节点存储了数据报告R中节点vi(1≤i≤t)的密钥则利用对重新计算一个mac,与R中附带的mac进行比较:如果二者不等,丢弃数据报告R;

步骤S4.5、检测数据报告R中随机数的密钥索引j1,j2,…,jt

·如果需要更新,则验证对应的随机数的加密信息Mj

··验证通过则进行密钥更新步骤,同时将存储的F_T进行归零处理;

··验证不通过,则丢弃该数据;

·如果不需要更新,则对数据报告R中的F_T进行检测,如果F_T小于或者等于上一次数据报告中的F_T,则将该数据报告认定为“过时”的重复数据,丢弃该数据报告;

步骤S4.6、如果数据报告R通过上述验证后,则将数据报告R转发给下游节点;

五、动态更新密钥

动态更新密钥每次只更新s条密钥链中使用时间最长的一条,在满足更新密钥池的条件时,节点会选出s条密钥链中使用时间最长的一条密钥链,被更新的密钥链不会再次被使用,直到整个网络密钥更新结束后,才会使用最新的密钥链。

更新密钥池步骤如下:

步骤S5.1、簇内节点vj选出需要更新的第i条密钥链,利用随机函数Г生成一个新随机数xi,利用该链的第一个密钥对xi进行加密,

步骤S5.2、将xi、Mi添加到数据包r中发送给簇头节点;

步骤S5.3、簇头节点验证Mi

·验证通过后,取出随机数xi保存;

·验证不通过,丢弃数据包r;

步骤S5.4、簇头节点向验证通过的节点发送信息r′={xi;Mi},表示簇头节点已接收到更新通知:

·如果节点没有接收到r′,在下次事件发生时,继续向簇头节点发送包含xi、Mi的数据包r;

·如果节点接收到r′,验证Mi:

··如果验证不通过,丢弃r′,并在下次事件发生时,继续向簇头节点发送包含xi、Mi的数据包r;

··如果验证通过,在下次发生事件时,在向簇头节发送的数据包r中添加密钥更新通知,并利用单向函数H,xi作为输入参数生成一条长度为w密钥链,更新密钥链;

步骤S5.5、簇头节点利用单向函数H,xi作为输入参数生成一条长度为w密钥链,并更新密钥;

步骤S5.6、在簇头节点与簇内节点更新完密钥之后,簇头节点将会与自己的下游节点R1进行密钥更新:将xi、Mi添加到数据报告R中发送给R1,R1执行类似与簇头节点执行(2)-(5)功能,簇头节点将对R1发送的进行验证;

步骤S5.7、在R1更新完后,R1会与R2进行密钥更新,更新成功后R2会与下游节点R3进行密钥更新,直到Sink节点密钥更新完毕;

步骤S5.8、Sink节点更新成功后,将会向上游节点发送密钥更新成功通知,在采集节点收到该通知后,最新密钥将会被使用;

在更新密钥的过程中,为了保证簇内节点的密钥与簇头节点保持同步,簇内节点vj在没收到簇头节点发送的信息r′时,vj不会更新自己的密钥池,并在接下来的发生的事件中,将xi,Mi添加到数据包r中再次发送给簇头节点,通知簇头节点要更新节点vi的密钥池;如果簇头节点在下次事件发生后检测到vj发送的数据包中没有密钥更新通知,则簇头节点再次向vj发送r′,以确保双方密钥保持同步。

密钥更新是层级向下的,当Sink节点更新完后,将向RrRr-1....R1,CHvj发送更新成功通知,采集节点可以使用最新密钥来进行数据加密。簇头节点的下游节点只要与自己的上游节点保持密钥的更新同步就能保证整个网络同步,保持网络能够安全通信。

攻击者很难做到实时捕获节点的密钥信息,抗捕获能力强;此外,当某节点不能正常工作,其它节点不会受到它的影响,簇内各节点与簇头节点之间的通信链路不相互干扰,抗毁性较强。

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