WSN中基于hash算法的抗共谋组密钥分发方法
技术领域
本发明涉及无线传感器网络的加解密技术,具体涉及一种WSN(WirelessSensorNetwork,无线传感器网络)下的基于hash算法的抗共谋组密钥分发方法。
背景技术
随着当前物联网技术的飞速蓬勃发展,涌现出大量基于无线传感器网络的服务系统,但是由于当前市面上的无线传感器网络系统的设计缺乏安全性考虑,加之无线传感器网络设计的特殊性,使得当前的无线传感器网络组密钥分发技术的抗共谋攻击的防范措施严重不足,从而产生了严重的安全风险和技术障碍。因此急需提供一种拥有较强抗共谋能力的组密钥分发系统来解决此问题。
发明内容
本发明的目的是针对现有技术的不足,提供了一种WSN(无线传感器网络)下的基于hash算法的抗共谋组密钥分发方法,解决无线传感器网络下组密钥分发中的共谋攻击问题。
为达到上述目的,本发明采用的技术方案包括如下步骤:
步骤1、树莓派和协调器共同组成网关,网关使用hash算法生成密钥链,所述密钥链包含两条hash密钥链,分别为前向hash密钥链K(sf)和后向hash密钥链K(bw);
密钥链是整个系统抗共谋和组密钥生成功能的基础,其由前向密钥链K(sf)和后向密钥链K(bw)组成。在进行首次hash前向密钥链K(sf)和后向密钥链K(bw)时,K(sf)和K(bw)将各选定一个随机数作为hash的一组种子;
前向密钥链K(sf)的生成方法如下:
将自身种子连续hashm次(m是经人为设定的整数)后生成前向密钥链K(sf),具体的将第一次hash获得的结果作为第一轮通信的K(sf)1,将第二次hash获得的结果作为第二轮通信的K(sf)2依次类推;
后向密钥链K(bw)的生成方法如下:
将自身种子连续hashm次(m为人为设定且与K(sf)的m相同)后生成后向密钥链K(bw),且以第m次的hash结果作为第一轮通信的K(bw)1,将第m-1次的hash结果作为第二轮通信的K(bw)2,依次类推。每一组种子分别生成m个K(sf)n和K(bw)n(0<n≤m)可用于m轮无线传感器网络的通信,当需进行第m+1轮通信时K(sf)和K(bw)将分别重新选定一个随机数作为新一轮hash的一组种子再次进行m次hash以维持后续m轮通信的保密安全性。以此循环,往复不绝。网关在每轮通信初始时从两条hash密钥链上选择一组对应数据K(sf)n、K(bw)n(0<n≤m)作为生成此轮组密钥的数据,通过协调器向整个网络以广播包形式广播。
步骤2、网关以广播包形式同时广播包含K(sf)n的多项式A和包含K(bw)n的多项式B;对n进行判断,若n=1时,广播的包含K(sf)1的多项式A和包含K(bw)1的多项式B均为非空;若1<n≤m时,广播的包含K(sf)n的多项式A为空,包含K(bw)n的多项式B为非空;多项式A和B中均包含大数乘法用于节点标识认证;n=m+1时n被重新赋值为1;
步骤3、网络中所有节点通过路由器获取广播包,并进行解析;
若n=1,且节点合法,则解析获得K(sf)1和K(bw)1,然后合成通信key1,通信key1的生成规则为key1=(K(sf)1+K(bw)1)%RING,%为取余运算,然后跳转至步骤2;
若1<n≤m,且节点合法,则解析获得K(bw)n,然后合成通信keyn,通信keyn的生成规则均为keyn=(K(sf)n+K(bw)n)%RING,%为取余运算后跳转至步骤2;
若n=m+1,则n被重新赋值为1并重复上述循环;
其中RING为一特定有限域,该有限域由网关向整个无线传感器网络广播,各节点在获得该广播指令后存储该有限域以用于key合成。为保证有限域的完全覆盖性,网关将定期广播该有限域以便新加入或有限域丢失的节点重新获取。
网络中所有合法节点都拥有唯一且私密的认证标识,用于解析广播包;且网络中所有合法节点只拥有生成K(sf)n和验证K(bw)n合法性的能力。
步骤4、当网络中合法节点成员数量发生变动时,网关将立即更新K(sf)n;网关以广播包形式再次广播更新后的两种数据;其中一种包括多项式A和更新后的K(sf)n;另一种为空;
当某节点因故障等原因需要离开无线传感器网络时,其可信认证标识将暂时从用于获取K(sf)n和K(bw)n的广播多项式A和B中移除。在有新节点(撤销后重新加入的节点也称作新节点)加入网络时,虽然该新节点具备合成K(sf)n的算法,由于其未知当前网络所用K(sf)n的hash种子,将不能立刻加入通信中。同时为了确保组密钥前后向安全性,在每次有节点加入或离开时都会触发网关更换K(sf)n种子并重新广播新K(sf)n的操作。所有在网可信节点必须获取该K(sf)n的新种子重新hash以便维持顺利通信。
步骤5.网络中所有节点通过路由器获取更新后的广播包,并进行解析,多项式A用于验证各个节点的合法性。
所述的步骤3中解析步骤具体如下:
设s1、s2、…、sn为网络中各个合法节点的唯一认证标识,且每个合法节点内置有K(sf)n的生成算法,但不具有K(bw)n的生成算法,所以多项式A只有在网关更换了新种子以进行新一轮hash或在合法节点成员有变动时才为非空,其余时刻网关以广播包形式发送的多项式A为空;任何时候的生成算法的多项式B均为非空;其中多项式A和B的内容如下:
多项式A:K(sf)n×[R2×(x-s1)×(x-s2)...(x-sn)+1];
其中R2为干扰项,为随机大素数;在获得该多项式指令后,各节点将自己的认证标识作为多项式中的x带入多项式,若该认证标识属于s1、s2、…、sn,则原多项式将变成K(sf)1×[0+1];顺利提取K(sf)1,且后续的K(sf)n通过合法节点自带算法生成;反之若该节点的标识不属于s1、s2、…、sn,则原多项式无法化简,K(sf)1则不能获取。
多项式B:K(bw)n×[R1×(x-s1)×(x-s2)...(x-sn)+1];
其中R1为干扰项,为随机大素数;在获得该多项式指令后,各节点把自己的认证标识作为多项式中的x带入多项式,若该认证标识属于s1、s2、…、sn,则原多项式将变成K(bw)n×[0+1];此时该合法节点获得的K(bw)n能够与由自身算法合成的K(sf)n生成keyn;反之若该节点的标识不属于s1、s2、…、sn,则原多项式无法化简,K(bw)n则不能获取。
步骤3所述的K(bw)n有效性的验证如下:
广播的包含K(bw)n的多项式B中还包含有用于代表当前会话实时次数的参数;合法节点每次获取到的K(bw)n都是前一轮K(bw)n-1的原数据再次hash的结果数据,因此能够根据当前的会话次数j,对当前获得的K(bw)n自行进行j次hash,并将第j次hash结果与当前总会话中首次获取到的K(bw)1进行比对,若相同,则证明此次获取的K(bw)n有效,反之则无效。
由于硬件节点资源有限,在广播多项式和大多数指令时,无法实现一次广播完毕,因此将存在多个数据包的排序和解析合并问题。所以节点在接收广播时具备数据检查和分片排序机制。所谓分片,指当前数据包在总数据内容中属第几部分,例如某数据包对于总数据而言是总数据的第二个数据包部分,则该包的分片序号为2。
因此,每一个分片序号为1的数据包代表着该数据的起始,因此该包需要有一个特殊标识,代表其是一个数据的开始,同时该包还必须拥有一个名为“总分片数”的参数,以便节点确认其获得的数据包个数是否与数据包总数一致。
本发明有益效果如下:
本发明提供的WSN下的基于hash算法的抗共谋组密钥分发系统,每个合法结点都有唯一且保密的认证标识,网关通过使用具有单向性的hash算法生成一条前向hash密钥链和一条后向hash密钥链并每次以两条密钥链中的一组对应数据来作为计算生成用于合成组密钥的两组数据,并通过大数乘法混淆数据,结点通过认证标识来还原数据并以该两组数据合成组密钥。同时在节点成员发生改变时系统将立刻更换新的组密钥,旧组密钥将不能使用,保证了密钥的前向安全性和后向安全性,从而达到抗共谋的的目的。本发明有效提高了组密钥分发的安全性和WSN下系统的抗共谋能力,降低了恶意攻击成功的可能性。
附图说明
图1为前向hash密钥链K(sf)和后向hash密钥链K(bw)的生成示意图
图2为组密钥分发示意图
图3为分发过程流程图
图4-1为有可信节点成员退出时K(sf)n分发示意图
图4-2为有可信节点成员加入时K(sf)n分发示意图
图5为分片包合成及多项式降阶组合算法流程图
图6为抗共谋效果图
具体实施方式
下面结合附图对本发明作进一步说明。
如图1-6所示,WSN下的基于hash算法的抗共谋组密钥分发方法,具体包括如下步骤:
步骤1、树莓派和协调器共同组成网关,网关使用hash算法生成密钥链,所述密钥链包含两条hash密钥链,分别为前向hash密钥链K(sf)和后向hash密钥链K(bw);
密钥链是整个系统抗共谋和组密钥生成功能的基础,其由前向密钥链K(sf)和后向密钥链K(bw)组成。在进行首次hash前向密钥链K(sf)和后向密钥链K(bw)时,将各选定一个随机数作为hash的一组种子;
前向密钥链K(sf)的生成方法如下:
将自身种子连续hashm次(m是经人为设定的整数)后生成前向密钥链K(sf),具体的将第一次hash获得的结果作为第一轮通信的K(sf)1,将第二次hash获得的结果作为第二轮通信的K(sf)2依次类推;
后向密钥链K(bw)的生成方法如下:
将自身种子连续hashm次(m为人为设定且与K(sf)的m相同)后生成后向密钥链K(bw),且以第m次的hash结果作为第一轮通信的K(bw)1,将第m-1次的hash结果作为第二轮通信的K(bw)2,依次类推。每一组种子分别生成m个K(sf)n和K(bw)n(0<n≤m)可用于m轮无线传感器网络的通信,当需进行第m+1轮通信时K(sf)和K(bw)将分别重新选定一个随机数作为新一轮hash的一组种子再次进行m次hash以维持后续m轮通信的保密安全性。以此循环,往复不绝。网关在每轮通信初始时从两条hash密钥链上选择一组对应数据K(sf)n、K(bw)n(0<n≤m)作为生成此轮组密钥的数据,通过协调器向整个网络以广播包形式广播。具体图示请见下图1,图2,图3。
步骤2、网关以广播包形式同时广播包含K(sf)n的多项式A和包含K(bw)n的多项式B;对n进行判断,若n=1时,广播的包含K(sf)1的多项式A和包含K(bw)1的多项式B均为非空;若1<n≤m时,广播的包含K(sf)n的多项式A为空,包含K(bw)n的多项式B为非空;多项式A和B中均包含大数乘法用于节点标识认证;n=m+1时n被重新赋值为1
步骤3、网络中所有节点通过路由器获取来自网关的广播包,并进行解析;
若n=1,且节点合法,则解析获得K(sf)1和K(bw)1,然后合成通信key1,通信key1的生成规则为key1=(K(sf)1+K(bw)1)%RING,%为取余运算,然后跳转至步骤2;
若1<n≤m,且节点合法,则解析获得K(bw)n,然后合成通信keyn,通信keyn的生成规则均为keyn=(K(sf)n+K(bw)n)%RING,%为取余运算后跳转至步骤2;
若n=m+1,则n被重新赋值为1并重复上述循环;
其中RING为一特定有限域,该有限域由网关向整个无线传感器网络广播,各节点在获得该广播指令后存储该有限域以用于key合成。为保证有限域的完全覆盖性,网关将定期广播该有限域以便新加入或有限域丢失的节点重新获取。
网络中所有合法节点都拥有唯一且私密的认证标识,用于解析广播包;且网络中所有合法节点只拥有生成K(sf)n和验证K(bw)n合法性的能力。
步骤4、当网络中合法节点成员数量发生变动时,网关将立即更新K(sf)n;网关以广播包形式再次广播更新后的两种数据;其中一种包括多项式A和更新后的K(sf)n;另一种为空;
如图4-1和4-2所示,当某节点因故障等原因需要离开无线传感器网络时,其可信认证标识将暂时从用于获取K(sf)n和K(bw)n的广播多项式A和B中移除。在有新节点(撤销后重新加入的节点也称作新节点)加入无线传感网络时,虽然该新节点具备合成K(sf)n的算法,由于其未知当前网络所用K(sf)n的hash种子,将不能立刻加入通信中。同时为了确保组密钥前后向安全性,在每次有节点加入或离开时都会触发网关更换K(sf)n种子并重新广播新K(sf)n的操作。所有在网可信节点必须获取该K(sf)n作为新种子重新hash以便维持顺利通信
步骤5.网络中所有节点通过路由器获取更新后的广播包,并进行解析,多项式A用于验证各个节点的合法性。
所述的步骤3中解析步骤具体如下:
设s1、s2、…、sn为网络中各个合法节点的唯一认证标识,且每个合法节点内置有K(sf)n的生成算法,但不具有K(bw)n的生成算法,所以多项式A只有在网关更换了新种子以进行新一轮hash或在合法节点成员有变动时才为非空,其余时候网关以广播包形式发送的多项式A为空;任何时候的生成算法的多项式B均为非空;其中多项式A和B的内容如下:
多项式A:K(sf)n×[R2×(x-s1)×(x-s2)...(x-sn)+1];
其中R2为干扰项,为随机大素数;在获得该多项式指令后,各节点将把自己的认证标识作为多项式中的x带入多项式,若该认证标识属于s1、s2、…、sn,则原多项式将变成K(sf)1×[0+1];顺利提取K(sf)1,且后续的K(sf)n通过合法节点自带算法生成;反之若该节点的标识不属于s1、s2、…、sn,则原多项式无法化简,K(sf)1则不能获取。
多项式B:K(bw)n×[R1×(x-s1)×(x-s2)...(x-sn)+1];
其中R1为干扰项,为随机大素数;在获得该多项式指令后,各节点将把自己的认证标识作为多项式中的x带入多项式,若该认证标识属于s1、s2、…、sn,则原多项式将变成K(bw)n×[0+1];
此时该合法节点获得的K(bw)n能够与由自身算法合成的K(sf)n生成keyn;反之若该节点的标识不属于s1、s2、…、sn,则原多项式无法化简,K(bw)n则不能获取。
步骤3所述的K(bw)n有效性的验证如下:
广播的包含K(bw)n的多项式B中还包含有用于代表当前会话实时次数的参数;合法节点每次获取到的K(bw)n都是前一轮K(bw)n-1的原数据再次hash的结果数据,因此能够根据当前的会话次数j,对当前获得的K(bw)n自行进行j次hash,并将第j次hash结果与当前总会话中首次获取到的K(bw)1进行比对,若相同,则证明此次获取的K(bw)n有效,反之则无效。
由于硬件节点资源有限,在广播多项式和大多数指令时,无法实现一次广播完毕,因此将存在多个数据包的排序和解析合并问题。所以节点在接收广播时具备数据检查和分片排序机制。所谓分片,指当前数据包在总数据内容中属第几部分,例如某数据包对于总数据而言是总数据的第二个数据包部分,则该包的分片序号为2。
因此,每一个分片序号为1的数据包代表着该数据的起始,因此该包需要有一个特殊标识,代表其是一个数据的开始,同时该包还必须拥有一个名为“总分片数”的参数,以便节点确认其获得的数据包个数是否与数据包总数一致。
同时作为总数据的最后一个数据包,其将包含数据结束表示以帮
助节点确定数据已结束,此处假定该数据表示为oxffff。
则其实现如下
switch(cmd)
{
caseox0000(代表开始的指令)
数据包起始,接收该数据包并解包
break;
caesoxffff(代表结束的指令)
结束接受数据包过程,组合数据
break;
default:(该数据包既没有开始命令也没有结束名字,则为中间数据包)
检查该包分片数是否与前包连续以判断是否丢包
若没有丢包则执行解析合并操作
若分片数不连续则等待中间丢失的数据包(由于网络延迟可能顺序传到节点时是打乱的)若一直获取不到丢失数据,则为数据缺失,此轮会话失败,请求网关重新广播
}
同时,由于节点的数据计算能力也很有限,对于获取的多项式指令一般均采取如图5所示的多项式降阶组合算法。
具体如下
假设获取的多项式内容为
0×x^6+a×x^5+b×x^4+c×x^3+d×x^2+e×x+f
由于节点资源有限计算多阶乘法过于占用资源所以将其降阶为以下形式:
(((((0+a)×x+b)×x+c)×x+d)×x+e)×x+f其中每轮只计算一个一元一阶算式即可,此处需定义一个sum变量并初始为零,用于每轮存储当前轮的一阶算式结果并用于下一轮计算。
对于节点获取到的数据解析后即为上式格式,以方便节点在消耗较低资源情况下完成运算。
根据抗共谋技术的概念,对于攻击者而言,若其在获得一个撤出的合法节点并加入了一个伪装的合法节点后,若能根据这两个节点的数据计算出以后每轮的keyn即为其共谋成功,而抗共谋则指的是若其在获得一个撤出的合法节点并加入了一个伪装的合法节点后仍不能根据这两个节点的数据计算出以后每轮的keyn。而在该系统的设计中,每次有节点撤出,将会触发网关更换新的K(sf)n,并且K(bw)是一个逆向hash链,由于hash的不可逆性,攻击者不能从已获取的第c轮会话中那个已经被hash过n轮的K(bw)c逆推出第c+1轮会话中要用到的被hash过n-1轮的K(bw)c+1。(0<n≤m)由于其既不能获取到新K(sf)n又不能计算出新K(bw)n所以其如图6所示不能实现共谋,即该系统实现了抗共谋技术。