在线刊号(2278-8875)印刷版(2320-3765)
玛杜丽Bijjal1维迪亚·库尔卡尼2Vibha Amboji3.
|
有关文章载于Pubmed,谷歌学者 |
更多相关文章请访问国际电气、电子和仪器工程高级研究杂志
安全性是两层无线传感器网络的关键,它具有保密性和完整性的双重性质。为了保护隐私,中间层(即存储节点)必须在不知道传感器收集数据的实际值的情况下处理对编码数据的编码查询。为此,我们使用前缀会员函数。为了保证查询结果的完整性,我们考虑了Merkle哈希树和邻居链两种不同的技术,并比较了这两种技术的性能。
关键字 |
完整性,隐私,范围查询,传感器网络,默克尔哈希树,邻居链 |
介绍 |
无线传感器网络(WSN)可以定义为以节点为单位的设备网络,这些设备可以感知环境,并通过无线链路将从被监控现场收集到的信息进行通信。WSN已广泛应用于环境传感、建筑安全监测、地震预报等领域。在这里,考虑一个两层传感器网络架构,其中存储节点从附近的传感器收集数据并回答来自网络接收器的查询。存储节点充当传感器和接收器之间的中间层,用于存储数据和处理查询。存储节点为传感器网络带来三个主要好处。首先,传感器将所有收集到的数据发送到最近的存储节点,而不是通过长距离的路由发送到接收器,从而节省电力。其次,由于数据主要存储在存储节点上,传感器的内存可能会受到限制。第三,查询处理变得更加高效,因为接收器仅与存储节点进行查询通信。存储节点的加入也带来了重大的安全挑战。由于存储节点存储从传感器接收到的数据,并作为回答查询的重要角色,它们更容易受到攻击,特别是在恶劣的环境中。 A compromised storage node imposes significant threats to a sensor network. First, the attacker may obtain sensitive data that has been, or will be, stored in the storage node. Second, the compromised storage node may return forged data for a query. Third, this storage node may not include all data items that satisfy the query. |
因此,需要设计一种协议,防止攻击者从传感器收集的数据和接收器发出的查询(通常可以建模为范围查询)中获得信息,并允许接收器在行为不当时检测受损的存储节点。为了保护隐私,攻击者不能窃取存储节点中已经存储和将要存储的敏感信息,以及存储节点已经接收和将要接收的查询。请注意,我们将来自接收器的查询视为机密,因为这样的查询可能会泄露关于查询发出者的兴趣的关键信息,这些信息需要受到保护,尤其是在军事应用程序中。为了保证完整性,sink需要检测来自存储节点的查询结果中是否包含伪造的数据项,或者是否包含满足查询的所有数据。在解决隐私和完整性保护范围查询问题时,存在两个关键挑战。首先,存储节点需要正确地处理对编码数据的编码查询,而不需要知道它们的实际值。其次,接收器需要验证查询的结果是否包含满足查询的所有数据项,并且不包含任何伪造数据。 |
模型和问题陈述 |
系统模型 |
双疲劳传感器网络由传感器、存储节点和sink三种节点组成。传感器是一种廉价的传感设备,但存储和计算能力有限。它们通常大量分布在一个领域,用于收集物理或环境数据,例如温度。存储节点是功能强大的无线设备,具有比传感器更大的存储容量和计算能力。每个传感器定期将收集到的数据发送到附近的存储节点。接收器是传感器网络用户的接触点。雷竞技网页版每当接收器接收到来自用户的问题时,它首先将问题转换为多个查询,然后将查询分发到相应的存储节点,这些存储节点根据它们的数据处理查询并将查询结果返回给接收器。接收器将多个存储节点的查询结果统一为最终答案,并将其发送给用户。 |
![]() |
对于上述网络架构,假设所有传感器节点和存储节点都与接收器松散同步。在松同步的情况下,我们将时间划分为固定的持续时间间隔,每个传感器在每个时间间隔内收集一次数据。从所有传感器和接收器都同意的起始时间开始,每n个时间间隔形成一个时隙。从相同的起始时间开始,传感器采集n次数据后,发送一条包含三元组(i, t, {d1,···,dn})的消息,其中i为传感器ID, t为传感器si采集n个数据项{d1,····,dn}的时点序列号。范围查询“查找时间槽位t上采集的所有值在范围[A, b]内的数据项”记为{t, [A, b]}。请注意,大多数传感器网络应用中的查询可以很容易地建模为范围查询。 |
威胁模型 |
对于两层传感器网络,假设传感器和接收器是可信的,但存储节点是不可信的。在恶劣环境下,传感器和存储节点都可能受到威胁。如果传感器被泄露,攻击者就会知道该传感器后续收集到的数据,被泄露的传感器可能会将伪造数据发送到离其最近的存储节点。然而,单个传感器的数据只占整个传感器网络收集数据的一小部分。因此,本文主要以存储节点被泄露为例进行介绍。损坏一个存储节点对传感器网络的危害要比损坏一个传感器严重得多。当一个存储节点被入侵后,攻击者会知道该节点上存储的大量数据,当接收到sink的查询时,被入侵的存储节点可能会返回一个包含伪造数据或排除合法数据的伪造结果。因此,攻击者更有动机破坏存储节点。 |
问题定义 |
双疲劳传感器网络的基本问题是:如何在安全的情况下设计存储方案和查询协议?在这种情况下,安全有两种含义,比如隐私和完整性。对这个问题满意的解决方案应该满足以下两个要求: |
1.数据和查询隐私: |
数据隐私是指存储节点不能知道传感器采集数据的实际值。这确保了攻击者无法了解存储在受损存储节点上的数据。查询隐私意味着存储节点不能知道sink发出的查询的实际值。这确保攻击者无法理解受损存储节点收到的查询,或从查询中推断出有用的信息。 |
2.数据的完整性: |
如果存储节点向sink发送的查询结果中包含虚假数据或排除合法数据,则该查询结果将被sink判定为无效。除了这两个硬性要求外,理想的解决方案还应具有低功耗和空间消耗,因为这些无线设备的资源有限。 |
保障私隐计划 |
为了保护隐私,每个传感器si使用其密钥ki加密数据项d1,…,dn,记为(d1)ki,…(dn)吻。请注意,ki是与接收器共享的密钥。然而,关键的挑战是存储节点如何在不知道加密数据值的情况下处理加密数据的查询。我们的解决方案是将传感器收集的数据和sink发出的查询转换为前缀,然后使用前缀隶属度验证[8][9]来检查数据项是否满足范围查询。 |
为了防止存储节点知道数据项和范围查询的值,传感器和sink对数据项和范围查询转换的前缀分别应用HMAC (Hash Message Authentication Code)[6]。例如,考虑传感器收集的数据{1,4,5,7,9}和图2中的接收器发出的查询[3,7]。传感器首先将采集到的数据转换为范围[min,1], [1,4], ...., [9,max],其中min和max分别表示所有可能数据项的下界和上界。其次,传感器将每个范围[dj, dj+1]转换为前缀,记为p([dj, dj+1]),然后对p([dj, dj+1])中的每个前缀应用HMAC,记为hg(p([dj, dj+1]))。第三,传感器将结果发送到存储节点。当sink执行查询[3,7]时,它首先将3和6转换为前缀,分别记为p(3)和p(7),然后对p(3)和p(7)中的每个前缀分别应用HMAC,分别记为hg (p(3))和hg (p(6))。在接收到来自接收器的查询hg(p(3))和hg(p7)时,存储节点检查hg(p([dj, dj+1]))与hg(p(3))或hg(p(7))有共同元素。基于前缀隶属关系验证,如果hg (p(a))∩hg (p([dj, dj+1])) 6≠∅。, a∈[dj, dj+1]。 Therefore, hg (p(3)) ∩ hg(p([1, 4])) 6≠ ∅. And hg (p(7)) ∩ hg (p([5, 7])) ≠ ∅.. Finally, the storage node finds that the query result of [3,7] includes two data items 4 and 5, and then sends (4)ki and (5)ki to the sink. |
![]() |
完整性保持方案 |
在这种情况下,数据完整性的含义是双重的。在存储节点响应查询时发送给sink的结果中,首先,存储节点不能包含任何不满足查询的数据项;其次,存储节点不能排除满足查询的任何数据项。为了使sink能够验证查询结果的完整性,存储节点对sink的查询响应由两部分组成:(1)查询结果QR,包含满足查询的所有加密数据项;(2)验证对象VO,其中包括接收器验证QR完整性的信息。为了达到这一目的,我们基于两种不同的技术提出了两种方案:默克尔哈希树和邻域链。 |
默克尔哈希树(MHT) |
每当传感器将数据项发送到存储节点时,它都会为数据项构造一个Merkle散列树。图3显示了为8个数据项构造的Merkle哈希树。假设传感器si要向存储节点发送n=2m个加密数据项(d1)ki,.....(dn)ki。Sensor si首先为n=2m的数据项构建Merkle哈希树,这是一棵完整的二叉树。终端节点为H1.....Hn,其中Hj=h((dj)ki)对于每1≤j≤n。函数是单向哈希函数,如SHA-1。 |
每个非终端节点v的值,其子节点是vl和vr,是vl的值和vr的值的拼接的哈希值。例如,图3中H12=h(H1|H2)。请注意,如果数据项的数量n不是2的幂,则没有可以连接到的兄弟值的临时哈希值将在树中向上提升,而不做任何更改,直到找到兄弟值。注意,得到的Merkle哈希树将不会被平衡。以图3中的Merkle哈希树为例,如果我们去掉节点H6、H7、H8、H78,让H58 = H56 = H5,得到的不平衡树就是5个数据项的Merkle哈希树。我们的解决方案中使用的Merkle散列树有两个特殊属性,允许接收器验证查询结果的完整性。首先,使用键控HMAC函数计算根的值,其中键是ki,传感器和接收器之间共享的键。例如,图4中H18 = HMACki (H14 |H58)。使用键控制的HMAC函数为我们提供了只有传感器和接收器才能计算根值的属性。其次,终端节点根据每个数据项的值按升序排列。 |
![]() |
我们首先讨论传感器si需要沿其数据项dj向其最近的存储节点发送什么。每次传感器si想要将加密数据项发送到存储节点时,它首先计算加密数据项上的Merkle哈希树,然后将根值和n个加密数据项发送到存储节点。请注意,在Merkle哈希树中的所有节点中,只有根节点从传感器si发送到存储节点,因为存储节点可以自己计算Merkle哈希树中的所有其他节点。 |
接下来,可以讨论存储节点需要沿着查询结果向sink发送什么,即应该在验证对象中包含什么。对于离传感器较近的存储节点,每次接收到来自sink的查询[a,b],首先查找范围内的数据项。其次,它根据数据项计算Merkle哈希树(根除外)。第三,将查询结果QR和验证对象VO发送到接收器。给定某存储节点数据项(d1)ki,.....(dn)ki,其中d1,…dn,范围[a,b],其中dn-1< a < dn1< .....< dn2≤b < dn2+1和1≤n1-1 < n2+1≤n,且查询结果QR= {(dn1)ki......{(dn2)ki},则存储节点应包含和在验证对象VO= {(dn-1)ki, (dn+2)ki},因为(dn-1)ki和(dn+2)ki可以确保查询结果包含所有满足查询的数据项,查询结果以它们为界。我们称(dn-1)ki为查询结果的左界,称(dn+2)ki为查询结果的右界。注意(dn-1)ki左界和(dn+2)ki右界可能不存在。如果a <=d1,则左界(dn-1)ki不存在;如果b <= dn,则右界(dn+2)ki不存在。 The verification object includes zero to two encrypted data items and O(log n) proof nodes in the Merkel hash tree that are needed for the sink to verify the integrity of the query result. |
以图4为例,假设存储节点接收到传感器在t时刻采集的8个数据项{(2)ki, (5)ki, (9)ki, (15)ki, (20)ki, (23)ki, (34)ki, (40)ki}, sink想对存储节点进行查询[10,30]。根据定理4.1,存储节点发现查询结果包括满足查询的(15)ki、(20)ki和(23)ki。存储节点在查询结果(即3个数据项)的同时,将图4.5中灰色标注的(9)ki、(34)ki、H12、H8、H18发送给sink作为验证对象。 |
![]() |
接下来,我们讨论接收器如何使用Merkle散列树来验证查询结果的完整性。接收到查询结果及其验证对象后,sink计算Merkle哈希树的根值,然后验证查询结果的完整性QR= {(dn1)ki......{(dn2)ki}。当且仅当满足以下四个条件时,查询结果的完整性才会得到保证: |
1.查询结果中的数据项满足查询条件。 |
2.如果存在左界(dn-1)ki,验证dn-1 < a并且(dn-1)ki是Merkle哈希树中最近的左邻居;否则,验证(dn)ki是Merkle散列树中最左边的加密数据项。 |
3.如果存在右界(dn+2)ki,验证b < dn+2并且(dn+2)ki是Merkle哈希树中(dn2)ki最近的右邻居;否则,验证(dn2)ki是Merkle散列树中最右边的加密数据项。 |
4.计算的根值与VO中包含的根值相同。 |
请注意,在我们的方案中,对数据项进行排序对于确保查询结果的完整性至关重要。如果没有该属性,存储节点很难在不将所有数据项发送到sink的情况下证明查询结果的完整性。 |
社区链接(NC) |
一种新的数据结构来保持完整性,称为邻域链,然后讨论它在完整性验证中的使用。给定n个数据项d1,···,dn,其中d0 < d1 <···< dn < dn+1,我们称使用密钥ki加密的n个数据项的列表,(d0|d1)ki, (d1|d2)ki,···,(dn−1|dn)ki, (dn|dn+1)ki为n个数据项的邻域链。这里“|”表示连接。对于链中的任意项(dj−1|dj)ki,我们称dj为该项的值,称(dj |dj+1)ki为该项的右邻居。图5显示了1、3、5、7和9这5个数据项的邻域链。 |
![]() |
使用邻域链接保持查询结果完整性的方法如下。传感器si采集到n个数据项d1,···,dn后,将对应的邻域链(d0|d1)ki, (d1|d2)ki,···,(dn−1|dn)ki, (dn|dn+1)ki,而不是(d1)ki,···,(dn)ki发送给存储节点。给定一个范围查询[a, b],存储节点照常计算QR。对应的验证对象VO仅由QR中最大数据项的右邻居组成。注意,VO对于任何查询总是由一个项组成。如果QR = {(dn1−1 | dn1)吻 , · · · , ( dn2−1 | dn2) ki},然后签证官= {(dn2 | dn2 + 1) ki};若QR =∅,设dn2 < a≤b < dn2+1,则VO = {(dn2 |dn2+1)ki}。 |
接收器接收到QR和VO后,验证QR的完整性,如下所示。首先,接收器验证QR中的每个项是否满足查询。其次,接收器验证存储节点是否排除了满足查询的任何项。 |
以{(dn1−1|dn1)ki,···,(dj−1|dj)ki,···,(dn2−1|dn2)ki}为正确查询结果,QR为来自存储节点的查询结果。让我们考虑以下四种情况: |
1.如果存在n1 < j < n2使得(dj−1|dj)ki不属于QR, sink可以检测到这个错误,因为QR中的项没有形成邻域链。 |
2.如果(dn1−1|dn1)ki不属于QR,接收器可以检测到这个错误,因为它从(dn1 |dn1+1)ki中知道dn1的存在,并且dn1满足查询。 |
3.如果(dn2−1|dn2)ki不属于QR, sink可以检测到这个错误,因为它从VO中的项(dn2 |dn2+1)ki中知道dn2的存在,并且dn2满足查询。 |
4.如果QR =∅,sink可以验证这一事实,因为VO中(dn2 |dn2+1)ki项应满足dn2 < a≤b < dn2+1的性质。 |
请注意,我们的提交和查询协议旨在促进完整性验证。处理查询对数据项d1 [a, b] , · · · , dn,而不是测试每个数据项是否di在[a, b],我们测试范围(d0, d1)、(d1, d2 ], · · ·, [ dn, dn + 1]包含哪些范围包含b。因此,一个存储节点不仅可以找到哪些物品满足查询,还可以找到合适的邻居最大的数据项查询结果,验证对象。 |
实验结果 |
为了得到理想的结果,我们需要奔腾-4,正版英特尔,2GB RAM, 40GB硬盘,Windows XP/7,Eclipse indigo IDE, java语言,MySQL数据库。 |
![]() |
传感器节点抓取数据,发送到最近的存储节点。我们在实验中模拟了4个传感器节点。 |
![]() |
存储节点需要输入正确的密码才能看到传感器采集数据的实际值。这确保了攻击者无法了解存储在受损存储节点上的数据。这样可以保护隐私。 |
![]() |
从登录页面,用户可以登录到相应的接收器。在这里,我们给出了进入集成了Merkle哈希树的sink和集成了邻里链的sink的选项。 |
![]() |
Sink节点,融合Merkle Hash Tree(MHT),为查询结果提供完整性。Sink节点可以查看接收到的文件、不当行为详细信息、文件详细信息。它可以向存储节点抛出范围查询。 |
![]() |
汇聚节点(Sink node, NC),融合邻域链(Neighborhood chains),为查询结果提供完整性。该接收器也具有与融合Merkle散列树的接收器相同的功能。 |
![]() |
邻居链比默克尔哈希树消耗的空间更少。 |
![]() |
因为默克尔哈希树比邻居链做更多的计算。因此默克尔哈希树比邻里链消耗更多的空间。所以邻里链比默克尔哈希树更好。 |
结论及未来工作 |
SafeQ有效地保护了双疲劳传感器无线传感器网络的隐私性和完整性。SafeQ使用前缀成员验证、Merkle散列树和邻域链等技术。在安全性方面,SafeQ显著加强了两层传感器网络的安全性。SafeQ可以防止受损的存储节点获得对传感器收集的数据项和接收发出的查询的实际值的合理估计。SafeQ还允许接收器在受损的存储节点行为不当时检测它们。邻居链在存储空间和功耗方面优于Merkle哈希树。本论文未来的工作是用多维数据对SafeQ进行实验。 |
参考文献 |
|