背景技术
无线传感器网络是由大量部署在指定监测区域的传感器节点通过无线通信组成的动态网络,是一种综合了计算技术、通信技术、传感器技术和分布式技术的全新的信息采集与处理的技术。无线传感器网络能够实时地监测、感知和采集节点部署区各种信息(如光强、温度、湿度、噪音和有害气体浓度等物理现象),并对这些信息进行处理后以无线的方式发送出去,通过无线网络最终发送给观察者。无线传感器网络在军事侦察、环境监测、医疗护理、智能家居、工业生产控制以及商业等领域有着广阔的应用前景。
无线传感器网络的一个重要的特点就是大规模的部署。在某一监测区域可能存在着成千上万的传感器节点。无线传感器网络的大规模性因有大量冗余节点的存在,使得系统具有很强的容错能力;通过分布式处理大量的采集信息能够提高监测的精确度,降低对单个节点传感器的精度要求;大量节点能够增大覆盖的监测区域,减少盲区。
然而无线传感器网络常常被部署在很多不可控的甚至存在恶意攻击的环境中,而且部署之后通常没有后续的维护。同时传感节点通常是成本比较低廉,没有外部保护设施的硬件。因此当传感节点被攻击者发现后,攻击者就能够通过逆向分析技术破解其中的程序从而得到一些机密的数据如身份信息,密钥等。攻击者得到这些信息后就能大量复制与被捕获节点一样的复制节点,然后投入到网络中,这就是无线传感器网络的复制攻击。由于复制节点与原节点具有相同数据,所以网络中的通信协议很可能视它们为合法节点,并允许它们加入网络和其他节点进行通信。而一旦这些复制节点合法的加入网络,它们就能获得经过它们的所有消息,从而可以轻易发动各种内部攻击。例如复制节点丢弃需要转发的消息,篡改所有重要的机密信息,注入伪造的消息扰乱正常的时间检测等。因此复制节点攻击是一种极具破坏能力的攻击。
在2005年国外学者Bryan Parno,Adrian Perrig和Virgil Gligor在文章《Distributed Detection of Node Replication Attacks in Sensor Networks》中首次提出了无线传感器网络中的节点复制攻击,并提出了检测方法。在2010,Fu等人在文章《Key predistribution with location and time binding: novel approach against node replication attacks in wireless sensor networks》中提出了一种基于密钥预分配的抗节点复制攻击的方法。在该方案中节点间的密钥形成与节点的位置相关,因此某一节点的复制节点就无法与其他节点再建立通信了,除非该复制节点在原节点的位置上。然而现有的复制节点检测方案大多只能检测出一部分复制节点,当复制节点部署在原节点的邻居节点的通信范围内时无法检测出来,当合法节点初次进入网络时,并不能识别出网络中原本存在的其他节点的复制节点,因此建立通信后会导致秘密泄露。
发明内容
本发明提供一种无线传感器网络中复制节点的检测方法,为无线传感器网络提供一个安全、高效、高检测率的复制节点检测方法,从而解决复制节点进入网络,合法节点与复制节点通信以及提高复制节点检测率等问题。
采用的技术方案如下:
一种无线传感器网络中复制节点的检测方法,所述无线传感器网络包括基站以及与基站通信的一个或多个簇结构,所述簇结构包括与基站通信的簇头以及一个或多个与簇头通信的无线传感器,所述每个无线传感器为一个节点,所述无线传感器网络中复制节点的检测方法包括:
(11)基站为每个簇头预加载簇头安全参数;
(12)基站为每个节点预加载簇头安全参数、节点安全参数、节点标识及节点坐标;
(13)第j个节点接收到邻居节点发送的请求与簇头通信的信息;
(14)第j个节点计算邻居节点的节点坐标与第j个节点的节点坐标的节点距离,如果节点距离在预设的通信距离阈值之内,则第j个节点生成关于邻居节点的相邻证明,并向簇头发送关于邻居节点的相邻认证及邻居节点的请求与簇头通信的信息,否则第j个节点仅发送邻居节点的请求与簇头通信的信息到簇头;
(15)如果簇头接收到邻居节点的请求与簇头通信的信息,且接收到关于邻居节点的相邻证明,则执行步骤(16),如果簇头接收到邻居节点的请求与簇头通信的信息,且未接收到关于邻居节点的相邻证明则拒绝与邻居节点进行通信并退出;
(16)簇头验证关于邻居节点的相邻证明及邻居节点的已认证声明的有效性,如果关于邻居节点的相邻证明及邻居节点的已认证声明均验证为有效,则与邻居节点进行通信,否则拒绝与邻居节点进行通信并退出。
进一步:
所述请求与簇头通信的信息包括根据邻居节点的节点安全参数生成的已认证声明、节点标识及节点坐标;所述相邻证明由第j个节点采用邻居节点的节点标识及第j个节点的安全参数生成。
更进一步:
所述基站选择一个单向的哈希函数H()和一个具有对称性质的三元多项式f(x,y,z) =f(x,z,y);
所述步骤(11)具体包括:
基站为每个簇头预加载一个共享多项式
,簇密钥K,和哈希函数H(),其中GID为簇的标识;
所述步骤(12)具体包括:
基站为第m个节点预加载节点的标识
、节点的坐标(
,
)、坐标的哈希值
、节点的密钥
、所在簇的簇密钥K和所在簇的标识GID;
所述步骤(13)中,邻居节点的节点标识为
,节点坐标为(
,
),已认证声明为:
,其中
;
所述步骤(14)中,关于邻居节点的相邻证明为:
,其中
;
所述步骤(16)中:
簇头验证关于邻居节点的相邻证明的有效性具体包括:
计算第j个节点的共享密钥:
, 其中
,并验证
是否等于
,如果相等,则判断关于邻居节点的相邻证明为有效,否则判断关于邻居节点的相邻证明为无效;
簇头验证邻居节点的已认证声明的有效性具体包括:
计算与邻居节点的共享密钥:
,并验证
是否等于
,如果相等,则判断邻居节点的已认证声明为有效,否则判断邻居节点的已认证声明为无效。
再进一步:
所述步骤(13)中,邻居节点的节点坐标采用簇密钥K对(
,
)进行对称加密,得到
;
所述步骤(14)中,第j个节点采用簇密钥K对
进行解密得到(
,
)。
进一步,所述每个节点及簇头分别独立维持废除节点的列表,所述步骤(13)中第j个节点接收到邻居节点发送的请求与簇头通信的信息后,如果邻居节点不在第j个节点维持的废除节点的列表中,则执行步骤(14),否则退出;所述步骤(16)中,簇头对验证关于邻居节点的相邻证明及邻居节点的已认证声明的有效性,如果关于邻居节点的相邻证明及邻居节点的已认证声明均验证为有效,则与邻居节点进行通信,否则把邻居节点加入簇头维持的废除节点的列表中,并广播邻居节点的废除消息,拒绝与邻居节点进行通信并退出,第j个节点接收到簇头广播的邻居节点的废除消息,则把邻居节点加入第j个节点维持的废除节点的列表中。
更进一步:
所述步骤(13)中,邻居节点发送的请求与簇头通信的信息包括邻居节点发送请求与簇头通信的信息的发送时间戳,第j个节点保存接收到邻居节点发送的请求与簇头通信的信息的时间作为接收时间戳;
所述步骤(14)中第j个节点计算邻居节点的节点坐标与第j个节点的节点坐标的节点距离,如果节点距离在预设的通信距离阈值之内,则第j个节点执行时间验证,如果节点距离在预设的通信距离阈值之内且时间验证通过,则生成关于邻居节点的相邻证明,并向簇头发送关于邻居节点的相邻认证及邻居节点的请求与簇头通信的信息,否则第j个节点仅发送邻居节点的请求与簇头通信的信息到簇头;
所述时间验证包括:
第j个节点计算发送时间戳与接收时间戳的差值作为实际传播时间t1,根据邻居节点的节点标识查找保存在第j个节点上的与邻居节点的节点标识相对应的常态传播时间TT;
如果|TT-t1|小于或等于预设的时间门限,则判断为时间验证通过,否则第j个节点要求邻居节点发送一个包括有发送时间戳的测试包,第j个节点计算测试包的发送时间戳与接收时间戳的差值作为第二实际传播时间t2,如果|TT-t2|小于或等于预设的时间门限,则判断为时间验证通过,否则判断为时间验证不通过。
本发明提供了一个无线传感器网络中安全,高效,高检测率的复制节点检测机制。利用已认证声明,相邻证明和传播时间等方法,可以高效的检测出有效通信范围和无效通信范围中的复制节点。同时在检测出复制节点后可以快速将复制节点和被捕获的原节点放入黑名单,使它们在网络中处于孤立状态,任何节点都不会与它们通信。本发明提高了现有技术对无线传感器网络中复制节点的检测率,克服了现有技术无法检测出在有效通信范围内复制节点的安全问题。因此本发明增强了无线传感器网络对节点复制攻击的抵抗能力,有效地提高了无线传感器网络的安全性。
具体实施方式
下面结合附图和具体实施例对本发明做进一步详细的说明。
本发明实施例为一种无线传感器网络中复制节点的检测方法。如图1所示,所述无线传感器网络100包括基站1以及与基站1通信的多个簇结构2,所述簇结构2包括与基站通信的簇头21以及多个与簇头21通信的无线传感器22,所述每个无线传感器22为一个节点。在该无线传感器网络100中无线传感器22节点只能与所在簇结构2的簇头21进行秘密通信,无线传感器22节点间不能进行直接的通信,无线传感器22节点只负责转发邻居节点的消息。簇头21只能与基站1进行直接的通信,簇头21之间也不能进行直接的通信。在无线传感器网络100中的无线传感器22的位置在部署之后不再发生变化,即无线传感器22是固定的。
如图2所示,为本发明的第一个实施例,对如图1所示的无线传感器网络100的复制节点的检测方法,作为对无效通信范围内复制节点的检测,具体包括:
S201,基站1首先选择一个有限域Fq,其中q是长度至少为160位的大奇质数。基站1再选择一个单向的安全的哈希函数H()和一个t阶的三元多项式, 多项式为:
该多项式具有对称性质,即f(x,y,z)=f(x,z,y);
S202,基站1为每个簇头21预加载一个共享多项式
,簇密钥K,和哈希函数H(),其中GID为簇的标识,簇头21独立维持废除节点的列表;
S203,基站1为第m个节点预加载节点的标识
、节点的坐标(
,
)、坐标的哈希值
、节点的密钥
、所在簇的簇密钥K和所在簇的标识GID,每个节点分别维持独立的废除节点的列表;
S204,第j个节点接收到邻居节点发送的请求与簇头通信的信息,如果邻居节点不在第j个节点维持的废除节点的列表中,则执行步骤S205,否则退出,所述请求与簇头通信的信息包括根据邻居节点的节点安全参数生成的已认证声明、节点标识及节点坐标,邻居节点的节点标识为
,节点坐标为(
,
),已认证声明为:
,其中
,节点坐标采用簇密钥K对(
,
)进行对称加密,得到
;
S205,第j个节点采用簇密钥K对
进行解密得到(
,
),第j个节点计算邻居节点的节点坐标与第j个节点的节点坐标的节点距离,如果节点距离在预设的通信距离阈值之内,则第j个节点生成关于邻居节点的相邻证明,并向簇头发送关于邻居节点的相邻认证及邻居节点的请求与簇头通信的信息,否则第j个节点仅发送邻居节点的请求与簇头通信的信息到簇头, 所述相邻证明由第j个节点采用邻居节点的节点标识及第j个节点的安全参数生成,关于邻居节点的相邻证明为:
,其中
;
S206,如果簇头接收到邻居节点的请求与簇头通信的信息,且接收到关于邻居节点的相邻证明,则执行步骤S207,如果簇头接收到邻居节点的请求与簇头通信的信息,且未接收到关于邻居节点的相邻证明则拒绝与邻居节点进行通信并退出;
S207,簇头21验证关于邻居节点的相邻证明及邻居节点的已认证声明的有效性,如果关于邻居节点的相邻证明及邻居节点的已认证声明均验证为有效,则与邻居节点进行通信,否则把邻居节点加入簇头维持的废除节点的列表中,并广播邻居节点的废除消息,拒绝与邻居节点进行通信并退出,第j个节点接收到簇头广播的邻居节点的废除消息,则把邻居节点加入第j个节点维持的废除节点的列表中;
簇头21验证关于邻居节点的相邻证明的有效性具体包括:
计算第j个节点的共享密钥:
, 其中
,并验证
是否等于
,如果相等,则判断关于邻居节点的相邻证明为有效,否则判断关于邻居节点的相邻证明为无效;
簇头验证邻居节点的已认证声明的有效性具体包括:
计算与邻居节点的共享密钥:
,并验证
是否等于
,如果相等,则判断邻居节点的已认证声明为有效,否则判断邻居节点的已认证声明为无效。
作为一个例子:
复制节点出现在无效通信范围时的情况参照附图3,
表示节点S
1的复制节点。假设系统设定的通信半径为R,S
1的节点标识为
,节点坐标为(
,
),由于
为S
1的复制节点,因此其采用S
1的节点标识,具体流程参照附图4.
当节点
请求与簇头通信时,
首先产生一个已认证声明
。随后
把z
1,标识
,
,发送给CH。其中
表示利用簇密钥K对
,
进行对称加密。
,
为
当前的坐标,
;
与簇头同一簇结构的节点S
2收到了
的已认证声明,S
2首先检查
是否在它的废除列表上。如果
不在废除列表上则S
2就利用簇密钥K解密
得到坐标
,
,然后利用坐标判断
是否在系统设置的通信距离之内。假设通信距离为R,则经过判断
,因此S
2仅转发
的已认证声明,而不做出相邻证明;
簇头CH在收到
的消息后,首先检查是否包含了相邻证明。经检验
的消息包中没有包含S
2相邻证明,则CH认为
是一个复制节点。随后广播
的废除消息给
的邻居节点,
的邻居节点将
放入废除列表。
本发明的另外一个实施例对如图1所示的无线传感器网络100的中复制节点的检测,作为对有效通信范围内复制节点的检测,具体包括:
执行步骤S201~S207,然而:
在步骤S204中,邻居节点发送的请求与簇头通信的信息包括邻居节点发送请求与簇头通信的信息的发送时间戳,第j个节点保存接收到邻居节点发送的请求与簇头通信的信息的时间作为接收时间戳;
步骤S205中,第j个节点计算邻居节点的节点坐标与第j个节点的节点坐标的节点距离,如果节点距离在预设的通信距离阈值之内,则第j个节点执行时间验证,如果节点距离在预设的通信距离阈值之内且时间验证通过,则生成关于邻居节点的相邻证明,并向簇头发送关于邻居节点的相邻认证及邻居节点的请求与簇头通信的信息,否则第j个节点仅发送邻居节点的请求与簇头通信的信息到簇头;
所述时间验证包括:
第j个节点计算发送时间戳与接收时间戳的差值作为实际传播时间t,根据邻居节点的节点标识查找保存在第j个节点上的与邻居节点的节点标识相对应的常态传播时间TT;
如果|TT-t|小于或等于预设的时间门限,则判断为时间验证通过,否则判断为时间验证不通过,将邻居节点的状态置为不可信,并广播邻居节点已被捕获的消息。
为了减少误差的出现,还可以采用如下方式:
若|TT-t|大于预设的时间门限,第j个节点要求邻居节点再发送一个测试包来确认传播时间。若第二次发送的测试包的仍满足|TT-t|大于预设的时间门限,则第j个节点就认为真正的邻居节点已经被捕获,而请求通信的邻居节点是复制节点。
作为一个例子,节点S1上的与邻居节点的节点标识相对应的常态传播时间TT采用下表表示:
ID
|
TT
|
F
|
ID2
|
TT
2
|
0
|
ID3
|
TT
3
|
0
|
ID4
|
TT
4
|
0
|
ID5
|
TT
5
|
0
|
ID为节点的标识,TT为传播时间,F标识节点的状态:0表示合法,1表示是一个复制节点。
因为在无线传感器网络100中,无线传感器22节点是固定的,以节点S1为例,当S1节点被复制,则复制节点到S2(假设为S1的相邻节点)的时间与S1到S2的时间肯定是有出入的。所以在这里设置一个门限值来判断。只有当S1的复制节点刚好部署在S1与S2相同距离上时,才判断不出。而这样的概率是很小的。
作为一个例子:
复制节点出现在有效通信范围内的情况参照附图5.
表示S
1的复制节点。在检测有效通信范围内的复制节点时,每个节点都把到各个邻居节点的传播时间记录在一张表中。
检测流程参照附图6。假设S2中记录S1的传播时间为TT1。假设系统设置的时间门限为t’。
当
发送消息包给S
2时,消息包中必须包含发送时的时间戳T
1。S
2在收到消息包后,首先判断
是否在废除列表中,若
在废除列表内则S
2丢弃
消息包。若
不在废除列表内,则S
2判断是否在通信范围内。经判断
在S
2的通信范围内,则S
2利用收到消息包时的时间戳T
2计算得到当前
的 传播时间为t
1=|T
2-T
1|。经判断|t
1-TT
1|<=t’不成立,S
2要求
再发送一个测试包,第二次发送的测试包的传播时间为t
2,如果t
2仍满足|t
2-TT
1|>=t’,则S
2 认为请求通信的节点是
的复制节点。S
2将S
1的状态置为1(不可信),并广播S
1已被捕获的消息。具体如下:
当节点
请求与簇头通信时,
首先产生一个已认证声明
。随后
把z
1,标识
,
,时间戳T
1发送给簇头。其中
表示利用簇密钥K对
,
进行对称加密。
,
为
当前的坐标,
;
节点S
2收到了
的已认证包,S
2首先检查
是否在它的废除列表上。
如果
不在废除列表上则S
2就利用簇密钥K解密
得到坐标
,
,然后利用坐标判断
是否在系统设置的通信距离之内。假设通信距离为R,则经过判断
成立。
进一步,S
2利用收到消息包时的时间戳T
2计算得到当前
的传播时间为t=|T
2-T
1|。经判断|t-TT
1|<=t’不成立。
S
2要求
再发送一个测试包,第二次发送的测试包仍满足|t-TT
1|>=t’,则S
2认为请求通信的节点
是复制节点。S
2将
的状态置为1(不可信)并放入废除列表,随后广播
的废除消息给
的邻居节点,
的邻居节点将
的状态置为1(不可信)并放入废除列表。