面向两层传感器网络的可验证Top-k查询处理方法
技术领域
本发明涉及一种面向两层传感器网络的可验证Top-k查询处理方法,主要用于解决两层传感器网络中Top-k查询结果的真实性和完整性的验证问题,属于无线传感器网络安全技术领域。
背景技术
目前,无线传感器网络(Wireless sensor networks)已被广泛用于诸如环境监测、医疗卫生、智能交通、国防军事等各种重要领域。两层传感器网络(Two-tiered wireless sensor networks)是一种具有特殊结构的无线传感器网络,由基站(Base station)、存储节点(Storage nodes)和感知节点(Sensor nodes)这三类设备节点构成,其中基站是负责与外部用户交互的设备,如服务器、PC等;存储节点是计算、存储和能量资源充足的设备;感知节点是各类资源均受限的感知设备,通常其价格低廉,适用于大量部署。
如图1所示,两层传感器网络通常被划分为多个单元,每个单元由一个存储节点和多个感知节点构成,其中感知节点只负责采集数据,并上传至存储节点;而存储节点负责接收并存储感知节点发来的数据,同时还负责响应并处理基站发来的查询指令。单元内的所有感知节点构成下层多跳通信网络,而各单元中的存储节点构成上层多跳通信网络,基站通过按需无线链接(On demand wireless link)方式(如卫星等)与上层多跳通信网络中的一个或多个存储节点进行数据通信。在执行查询处理时,基站将查询指令发送至存储节点,然后由存储节点根据自身存储的感知数据执行查询处理过程,并将查询结果数据返回给基站,从而完成整个查询处理过程。显然,在查询处理过程中,存储节点上传的数据越少,则整个网络通信代价就越低,其使用效率就越高。两层传感器网络具有链路质量稳定、路由结构简单、查询高效和负载均衡等优点。
在两层传感器网络中,对于基站发起的任一查询,仅当满足查询要求的查询结果数据未被任何存储节点篡改或隐瞒时,该查询结果才是真实且完整的,将能够验证查询结果的真实性和完整性的查询方法称为可验证数据查询方法(Verifiable data query method)。
然而,由于存储节点不仅存储着单元内所有感知节点采集的大量数据,同时还负责执行上层的查询请求,使其在两层传感器网络中处于极其关键的位置,容易成为各种攻击的首要目标,从而影响着整个网络的安全性。当网络中存在由于外部攻击造成的恶意节点,若该节点在执行查询处理时恶意篡改数据或隐瞒符合查询要求的数据,基站将无法得到真实且完整的查询结果数据,进而造成上层用户决策或判断的失误。可见,如何验证查询结果的真实性和完整性是两层传感器网络安全技术研究和应用中的一个重要问题。
Top-k查询是无线传感器网络中应用较为广泛的数据查询方法。例如,在森林火灾预警中,通过监测温度最高的若干个传感器节点的感知数据,可以实现森林火灾预警和监控。
现有的与两层传感器网络中可验证Top-k查询方法密切相关的专利或文献主要有:
专利“基于无线传感器网络中复合型数据的Top-k查询方法及系统”(申请日期:2013.11.13,公开号:CN103617197A)、“在无线传感器网络中分布式Top-k查询方法”(申请日期:2013.7.19,公开号:CN103369570A)、“一种无线传感器网络中连续的Top-k区域查询方法”(申请日期:2011.1.24,公开号:CN102143547A)和“Secure outsourced aggregation with one-way chains”(申请日期:2010.11.18,公开号:US20100290617A1),这四项专利都是面向传统的传感器网络环境中的Top-k查询,并不适用于两层传感器网络环境,其应用场景受限。
论文“R.Zhang,J.Shi,Y.Liu,et al.,Verifiable fine-grained top-k queries intiered sensor networks,in Proceeding of the 29th IEEE International Conference onComputer Communications,San Diego,CA,USA,2010,pp.1199-1207”、“X.Ma,H.Song,J Wang,et al.,A novel verification scheme for fine-grained top-k queries intwo-tiered sensor networks,Wireless Personal Communications,vol 75,no.3,2014,pp.1109-1826”和“H.Dai,G.Yang,F.Xiao,et al.,EVTQ:An Efficient VerifiableTop-k Query Processing in Two-tiered Wireless Sensor Networks.Proceeding of 9thInternational Conference on Mobile Ad-hoc and Sensor Networks(MSN 2013),Dalian,China,2013.pp.206-211”都实现了面向两层传感网的可验证Top-k查询,但在存储节点执行查询处理时,即使查询目标感知节点产生的数据均不在查询结果中,本发明称该类节点为非贡献感知节点,存储节点也至少需要为每一个查询目标感知节点返回一个用于查询结果验证的校验码信息。可见,在执行查询时,存储节点需要返回的数据相对较多,因此其通信代价消耗相对更高。
发明内容
本发明目的是在面向两层传感器网络环境中,设计一种能够对Top-k查询的结果数据进行真实性和完整性验证的安全Top-k查询方法。
本发明的技术解决方案是:
一种面向两层传感器网络的可验证Top-k查询处理方法,基于Hash消息身份认证编码机制,感知节点在传输数据中加入信息校验码,基站利用信息校验码对查询结果进行验证,具体包括数据收集协议过程、查询处理协议过程,
数据收集协议过程包括:感知节点周期性采集感知数据,并根据其顺序关系生成对应的校验码,然后将感知数据及相应校验码上传至存储节点进行存储;
查询处理协议过程包括:基站发起Top-k查询,存储节点根据查询指令要求执行查询处理过程,并返回包含相关感知数据和校验码的查询反馈消息,最终由基站根据反馈数据计算查询结果,并对该查询结果的真实性和完整性进行验证。
进一步地,数据收集协议过程具体为:
在每一个时间周期t内,感知节点首先将自身采集的感知数据进行排序;
然后,利用仅与基站共享的密钥,计算与每一个感知数据相对应的校验码,该校验码蕴含t以及在t内采集的不小于该感知数据的所有感知数据的顺序关系信息;
感知节点构造数据收集消息并发送至其所在单元内的存储节点SM,该消息包含该节点的ID、时间周期t和在t内采集的所有感知数据及其对应的校验码;
存储节点SM接收每一个感知节点上传的数据收集消息,并存储该消息中的各项数据。
进一步地,感知节点si对时间周期t内采集到的N个感知数据Di={di,1,di,2,…,di,N}进行排序,排序后的结果不妨设为di,1>di,2>…>di,j>…>di,N;
感知节点si利用密钥Ki计算每一个感知数据对应的信息校验码V(di,j),对于第j个感知数据di,j而言,1≤j≤N,其信息校验码V(di,j)的计算方法为:
其中,||表示数据连接操作。
进一步地,查询处理协议过程包括查询指令发送、查询消息反馈、查询结果计算和验证。
进一步地,查询指令发送具体为:基站发送Top-k查询指令(T,k,C)至存储节点SM,然后等待存储节点SM的查询反馈消息;其中,T表示查询目标时间周期,k表示期望获得的最大感知数据的数量,C表示查询目标单元。
进一步地,查询消息反馈具体为:
存储节点SM接收到基站发来的查询指令后,根据自身存储的由C中感知节点在查询目标时间周期T内上传的所有感知数据,计算出其中最大的k个感知数据,该数据集记为R;
对于查询目标单元C内每一个感知节点,存储节点SM根据其在查询目标时间周期T内采集的感知数据是否存在于R中,判断其是否为贡献节点,若存在,则为贡献节点,否则为非贡献节点;并对贡献节点和非贡献节点进行处理,得到所有响应消息,进而构造查询反馈消息后,发送给基站。
进一步地,根据其是否为贡献节点,进行如下处理:
处理一:对于每一个贡献节点,构造对应的响应信息;存储节点SM将该节点的ID及其上传的且存在于R中的所有感知数据和外边界感知数据,加入到与该节点对应的响应消息中,并将上述感知数据中最小数据对应的校验码加入该响应消息;
处理二:对于所有的非贡献节点,构造所有非贡献节点对应的唯一的响应消息;存储节点SM将所有此类节点的ID及其在查询目标时间周期T内采集的最大感知数据,加入该响应消息;并将这些感知数据对应的校验码进行异或运算,然后将计算得到的编码数据作为新的校验码加入该响应消息;
当存储节点SM根据处理一和处理二完成对查询目标单元C内所有感知节点的处理后,存储节点SM汇总生成的所有响应消息,进而构造查询反馈消息,并发送给基站。
进一步地,查询结果计算和验证具体为:
步骤1:基站接收到存储节点SM的查询反馈消息后,首先对该消息进行预处理,确定其中各贡献节点的响应消息,以及与所有非贡献节点对应的唯一的响应消息,若所有非贡献节点对应的响应消息不唯一,则直接转步骤6;并根据各响应消息中的感知数据,计算最大的k个数据,即为基站获得的查询结果R’;
步骤2:基站获取步骤1确定的所有响应消息中的节点ID,检查是否与查询目标单元C内所有感知节点的ID完全一致,若不一致则转步骤6,否则继续;
步骤3:检查所有贡献节点对应的响应消息的合法性;对于每一个贡献节点的响应消息,基站先利用与该贡献节点共享的密钥计算校验码,该校验码蕴含T以及该响应消息中的所有感知数据的顺序关系信息,若得到的校验码数据与该响应消息中的校验码不相同,则转步骤6;否则根据该消息中感知数据的数量a与单位时间周期内感知节点采集的感知数据数量b之间的大小关系,分别执行如下过程:
执行一:如果a>b,则直接转步骤6;
执行二:如果a=b,则检查该响应消息中的最小感知数据是否不小于查询结果R’中的最小数据,若是,则该响应消息通过检查,否则转步骤6;
执行三:如果a<b,则检查R’中的最小数据是否介于该响应消息中最小的两个感知数据之间,若是,则该响应消息通过检查,否则转步骤6;
当且仅当所有贡献节点的响应消息均通过检查时,转步骤4;
步骤4:检查所有非贡献节点对应的响应消息的合法性;对于所有非贡献节点对应的响应消息,基站首先检查该响应消息中的所有感知数据是否都小于查询结果R’中的最小数据,若否,则转步骤6;否则,基站利用与该消息中的每一个ID对应的非贡献节点所共享的密钥,分别计算与该节点对应的校验码,该校验码蕴含T和该节点在响应消息中的唯一的感知数据,然后将得到的所有校验码进行异或运算,若最终得到的编码数据与响应消息中的校验码完全相同,则转步骤5,否则,转步骤6;
步骤5:查询结果R’通过验证,是真实且完整的查询结果,查询处理过程结束;
步骤6:查询结果R’未通过验证,是异常的查询结果,查询处理过程结束。
本发明的有益效果是,从安全性及通信代价这两个角度说明本发明的有益效果如下:
一、安全性分析
对于每个被查询的感知节点,其所采集的所有感知数据都按照从大到小的顺序依次链接起来,并用HMAC进行编码处理。而用于编码的密钥只被感知节点和基站所共享,因此存储节点在没有密钥的情况下伪造合法编码数据的复杂度与破解HMAC相同。只要使用复杂度相对较高的HMAC算法,如SHA-1、SHA-2等,就能够确保存储节点无法伪造任何合法的编码数据,因此也就无法在不被基站察觉的情况下篡改或隐瞒查询结果,如插入伪造的数据或者丢弃真实数据。
可见,本发明提出的方法能够验证查询结果的真实性和完整性。
二、通信代价分析
由前述数据收集协议和查询处理协议可知,在两层传感器网络中,数据的通信消耗可以分为两类:其一是单元内所有感知节点上传数据至存储节点的通信代价,记为Costs;其二是存储节点执行查询,返回查询结果至基站的通信代价,记为Costq。设lid为感知节点ID的字节长度,lt为单位时间的字节长度,ld为感知数据的字节长度,lh为HMAC编码数据的字节长度,L为感知节点到存储节点的平均跳数(Hop);在查询处理过程中,设有μ个贡献节点,则有n-μ个非贡献节点,且在μ个贡献节点中有λ个节点产生的N个数据均在查询结果中,显然0≤λ≤N且λ≤k。根据具体协议内容可知:
Costs=n·(lid+lt+N·(ld+lh))·L (1)
Costq=(μ·lid+(k+μ-λ)·ld+μ·lh)+((n-μ)·lid+(n-μ)·ld+lh)=n·lid+(n+k-λ)·ld+(μ+1)·lh (2)
与现有方法相比,由于本发明提出的方法将n-μ个非贡献节点的HMAC编码合并为一个,从而有效地降低了存储节点与基站之间的通信代价。具体有,在存储节点执行查询处理时,即使查询目标感知节点产生的数据均不在查询结果中,本发明称该类节点为非贡献感知节点,存储节点也至少需要为每一个查询目标感知节点返回一个用于查询结果验证的校验码信息;而在本发明中,所有非贡献感知节点只需共用一个校验码信息。可见,在执行相同的查询时,本发明提出的方法中存储节点需要返回的数据相对较少,因此其通信代价消耗相对更低;特别地,当查询目标节点较多,而查询目标数据相对较少时,即k较小时,本发明的查询处理通信代价消耗将显著低于现有方法。
附图说明
图1是两层传感器网络结构示意图。
图2是数据收集过程的流程示意图,表示本发明方法中的感知节点采集并上传感知数据的流程示意。
图3是查询处理过程的流程示意图,表示本发明方法中的基站与存储节点协作完成Top-k查询的流程示意。
具体实施方式
下面结合附图详细说明本发明的优选实施例。
实施例提供一种用于两层无线传感器网络的可验证Top-k查询方法,基于Hash消息身份认证编码(HMAC)机制,通过在传输数据中加入信息校验码,实现针对查询结果的真实性和完整性验证。通过使用该方法,可以使基站对查询结果进行验证,从而确定查询结果的真实性和完整性。
为了进一步说明技术方案,首先给出相关符号定义与假设,然后再给出技术方案详细过程。
相关符号定义与假设
在两层传感器网络中,由于各单元内部数据的存储和通信相互独立,对于覆盖多个单元的复杂Top-k查询而言,可以通过对各单元进行独立Top-k查询,再将查询结果在基站进行合并处理,即可获得最终的查询结果。因此,本发明将聚焦于在一个单元内获取最大的k个数据的Top-k查询,展开技术方案的描述。
假设单元C包含n个感知节点,记为Γ={s1,s2,…,sn},存储节点记为SM,t为时间周期标签;设网络中所有感知节点的采样频率相同,即所有节点在单位时间内采集的数据数量相同,对于任一感知节点si,id(si)表示si的ID,si在t内采集到N个数据,记为Di={di,1,di,2,…,di,N},si仅与基站共享密钥Ki。基站发布的查询指令记为Qt=(t,k,C),表示获取在时间周期t内由查询目标单元C中n个感知节点产生的最大的k个感知数据的指令信息。此外,设HK(·)为HMAC函数如HMAC-SHA1、HMAC-SHA2等,其中K为密钥,min(·)表示数据集合中的最小值,“||”表示数据连接操作。
在实际应用中,尽管感知节点采集的感知数据的数值可能相同,但如果在进行数据比较时,将采集时间以及感知节点的ID信息也考虑进来,则所有感知数据都可以比较大小。例如,同一感知节点采集的感知数据相同时,可以根据采集时间的先后顺序比较其大小关系;不同感知节点采集的感知数据相同时,可以根据节点ID数值比较其大小关系。因此,为了描述的方便,假设所有感知数据均不相等,即均可比较大小。
实施例方法包括数据收集协议和查询处理协议,其中数据收集协议过程包括:感知节点周期性采集感知数据,并根据其顺序关系生成对应的校验码,然后将感知数据及相应校验码上传至存储节点进行存储。查询处理协议过程包括:基站发起Top-k查询,存储节点根据查询指令要求执行查询处理过程,并返回包含相关感知数据和校验码的查询反馈消息,最终由基站根据反馈数据计算查询结果,并验证该结果的真实性和完整性。本发明的协议流程简单,易于实现;安全性高,能够验证查询结果数据是否被恶意篡改或隐瞒;查询处理执行过程的通信代价低,有利于提高网络的使用效率。
该方法的核心是设计两个数据传输协议:数据收集协议和查询处理协议,具体内容如下。
数据收集协议
在每一个时间周期t内,感知节点si采集感知数据,并进行编码处理,然后将处理后的数据上传并存储至其所在单元内的存储节点SM。详细协议过程如下:
(1)si对t内采集到的N个感知数据Di={di,1,di,2,…,di,N}进行排序,排序后的结果不妨设为di,1>di,2>…>di,N;
(2)si根据感知数据的顺序关系,利用密钥Ki计算每一个感知数据对应的信息校验码V(di,j)。对于第j(1≤j≤N)个感知数据di,j而言,其信息校验码V(di,j)的计算方法为:
(3)si按照如下格式构造数据收集消息MSGC(si),并上传至SM;
MSGC(si)=<id(si),t,di,1,V(di,1),di,2,V(di,2),...,di,N,V(di,N)>
(4)SM接收并存储si发来的数据收集消息。设SM接收到的所有感知节点上传的感知数据构成集合记为DSt,则
查询处理协议
查询处理过程通过SM和基站的协作完成:基站发布查询指令,SM根据指令执行查询处理过程,并返回相关数据消息;最终再由基站计算查询结果,并验证该结果的真实性和完整性。具体协议过程如下:
第1阶段:查询指令发送
基站将查询指令Qt=(t,k,C)发送至SM,然后等待SM的查询反馈消息;
第2阶段:查询消息反馈
(1)SM收到Qt后,根据自身存储的由单元C内感知节点{s1,s2,…,sn}在t内上传的所有感知数据DSt,计算其中最大的k个数据,记为topk(DSt),满足:
设感知节点si产生的数据中有δi个数据存在于topk(DSt)中,即有 则
δi=|Di∩topk(DSt)|,0≤δi≤min{N,k}
(2)SM根据si产生的数据在topk(DSt)中的数量δi的不同,构造如下响应消息:
①对于每一个δi>0的感知节点si,称之为贡献节点(Contributed Node),构造对应的响应消息msg1(si);
其中,感知数据称为si的外边界(Out-Bound),是si产生的不在topk(DSt)中的最大的感知数据。当si产生的所有感知数据均在topk(DSt)中时,外边界不存在;否则,对于si而言,有且仅有一个外边界存在。
②对于所有δi=0的感知节点,称之为非贡献节点(Non-Contributeed Node),构造所有非贡献节点对应的唯一的响应消息msg0,其中为异或运算操作符。
(3)SM汇总步骤(2)生成的所有响应消息,构造查询反馈消息MSGQ发送给基站。
MSGQ=<{msg1(si)|δi>0∧si∈Γ},msg0>
第3阶段:查询结果计算和验证
(1)当接收到SM发来的查询反馈消息后,基站首先对其进行预处理,确定各贡献节点的响应消息{msg1(si)|δi>0∧si∈Γ}和所有非贡献节点的响应消息msg0;
(2)基站对所有响应消息中的感知数据进行排序,确定其中最大的k个数据,即为查询结果,记为Rt,其下边界,即Rt中的最小数据,记为min(Rt);
(3)基站逐一验证如下条件是否成立,仅当所有条件均成立时,Rt才是满足真实且完整的要求的查询结果,否则该查询结果存在异常。
条件1:获取{msg1(si)|δi>0∧si∈Γ}和msg0中的所有的节点ID,设其构成的集合为记为Ω,则有Ω={id(si)|si∈Γ}成立。
条件2:设{msg1(si)|δi>0∧si∈Γ}中任一si的响应消息为 ,且基站利用与si共享的密钥Ki计算 )则下列两式中必有一个成立:
1)
2)
条件3:设MSG0为<id(s1),d1,id(s2),d2,…,id(sp),dp,H0>,即非贡献节点为{s1,s2,…,sp},该消息中的感知数据构成集合DN={d1,d2,…,dp}。基站利用与s1,s2,…,sp共享的密钥K1,K2,…,Kp计算 则有下式成立
由上述协议流程可知,数据收集协议给出了感知节点对自身采集数据的具体处理过程,而查询处理协议则描述了基站与存储节点之间如何进行协作以完成查询结果计算和验证的具体流程。
实施例描述为如下两个异步的处理过程:
一、数据收集过程,如图2所示:
(1)在每一个时间周期t内,感知节点首先将自身采集的感知数据进行排序;然后,利用仅与基站共享的密钥,计算与每一个感知数据相对应的校验码,该校验码蕴含t以及在t内采集的不小于该感知数据的所有感知数据的顺序关系信息;最后,感知节点构造数据收集消息并发送至其所在单元内的存储节点SM,该消息包含该节点的ID、时间周期t和在t内采集的所有感知数据及其对应的校验码。
(2)SM接收每一个感知节点上传的数据收集消息,并存储该消息中的各项数据。
二、查询处理过程,如图3所示:
(1)基站发送Top-k查询指令(T,k,C)至SM,然后等待SM的查询反馈消息。其中,T表示查询目标时间周期,k表示期望获得的最大感知数据的数量,C表示查询目标单元。
(2)SM接收到基站发来的查询指令后,根据自身存储的由C中感知节点在T内上传的所有感知数据,计算出其中最大的k个感知数据,该数据集记为R。
(3)对于C内每一个感知节点,SM根据其在T内采集的感知数据是否存在于R中,判断其是否为贡献节点,若存在,则为贡献节点,否则为非贡献节点;并根据其是否为贡献节点,进行如下处理:
①对于每一个贡献节点,SM将该节点的ID及其上传的且存在于R中的所有感知数据和外边界感知数据,加入到与该节点对应的响应消息中,并将上述感知数据中最小数据对应的校验码加入该响应消息。
由于外边界感知数据可能有不存在的情况,对于不存在外边界感知数据的情况时,外边界感知数据不需要加入到响应消息中。
②对于所有的非贡献节点,SM将所有此类节点的ID及其在T内采集的最大感知数据,加入与所有非贡献节点对应的唯一的响应消息;并将这些感知数据对应的校验码进行异或运算,然后将计算得到的编码数据作为新的校验码加入该响应消息。
当SM根据①和②完成对C内所有感知节点的处理后,SM汇总生成的所有响应消息,进而构造查询反馈消息,并发送给基站。
(4)基站接收到SM的查询反馈消息后,首先对该消息进行预处理,确定其中各贡献节点的响应消息,以及与所有非贡献节点对应的唯一的响应消息,若所有非贡献节点对应的响应消息不唯一,则直接转步骤(9),并根据各响应消息中的感知数据,计算最大的k个数据,即为基站获得的查询结果R’。
(5)基站获取步骤(4)确定的所有响应消息中的节点ID,检查是否与C内所有感知节点的ID完全一致,若不一致则转步骤(9),否则继续;
(6)检查贡献节点响应消息的合法性。
对于每一个贡献节点的响应消息,基站先利用与该贡献节点共享的密钥计算校验码,该校验码蕴含T以及该响应消息中的所有感知数据的顺序关系信息,若得到的校验码数据与该响应消息中的校验码不相同,则转步骤(9);否则根据该消息中感知数据的数量与单位时间周期内感知节点采集的感知数据数量之间的大小关系,分别执行如下过程:
①如果前者较多,则直接转步骤(9);
②如果相等,则检查该响应消息中最小感知数据是否不小于R’中的最小数据,若是,则该响应消息通过检查,否则转步骤(9);
③如果后者较多,则检查R’中的最小数据是否介于该响应消息中最小的两个感知数据之间,若是,则该响应消息通过检查,否则转步骤(9);
当且仅当所有贡献节点的响应消息均通过检查时,转步骤(7)。
(7)检查非贡献节点的响应消息的合法性。
对于所有非贡献节点对应的响应消息,基站首先检查该响应消息中的所有感知数据是否都小于R’中的最小数据,若否,则转步骤(9);否则,基站利用与该消息中的每一个ID对应的非贡献节点所共享的密钥,分别计算与该节点对应的校验码,该校验码蕴含T和该节点在响应消息中的唯一的感知数据,然后将得到的所有校验码进行异或运算,若最终得到的编码数据与响应消息中的校验码完全相同,则转步骤(8),否则,转步骤(9)。
(8)R’通过验证,是真实且完整的查询结果,查询处理过程结束。
(9)R’未通过验证,是异常的查询结果,查询处理过程结束。