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

文档序号:12698789阅读:来源:国知局

技术特征:

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

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

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

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

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

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

2.根据权利要求1所述的应用于无线传感器网络的动态密钥虚假数据过滤方法,其特征在于,所述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归零;

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

3.根据权利要求1所述的应用于无线传感器网络的动态密钥虚假数据过滤方法,其特征在于,所述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发送的r′={IDvj;x′i;M′i}进行验证;

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

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

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