胡喬木,鄧 昀
(1.桂林理工大學(xué) 信息科學(xué)與工程學(xué)院,廣西 桂林 541006;2.廣西嵌入式技術(shù)與智能系統(tǒng)重點(diǎn)實(shí)驗(yàn)室,廣西 桂林 541006)
無(wú)線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks,WSN)由大量資源受限的感知節(jié)點(diǎn)構(gòu)成[1-2],通過數(shù)據(jù)聚集和數(shù)據(jù)查詢等操作實(shí)現(xiàn)監(jiān)控以及偵查等功能,具有廣泛的應(yīng)用場(chǎng)景[3-5]。其中,兩層無(wú)線傳感器網(wǎng)絡(luò)由于路由簡(jiǎn)單、壽命較長(zhǎng)等優(yōu)點(diǎn),備受研究人員的關(guān)注,并基于兩層無(wú)線傳感器網(wǎng)絡(luò)提出范圍查詢[6-7]、top-k 查詢[8-9]、最值查詢[10-11]等安全高效的查詢方案。
文獻(xiàn)[12]中提出一種范圍查詢方法SafeQ,感知節(jié)點(diǎn)使用對(duì)稱加密算法對(duì)數(shù)據(jù)進(jìn)行加密得到鄰居鏈,同時(shí)使用了前綴成員驗(yàn)證技術(shù)對(duì)數(shù)據(jù)進(jìn)行加密獲得前綴成員編碼,存儲(chǔ)節(jié)點(diǎn)基于前綴成員編碼特性將滿足范圍查詢要求的鄰居鏈發(fā)送至基站,基站通過鄰居鏈對(duì)數(shù)據(jù)進(jìn)行完整性驗(yàn)證。但是由于SafeQ 采用了前綴成員編碼技術(shù),需要上傳較多的編碼數(shù)據(jù),同時(shí)其采用了鄰居鏈的方式進(jìn)行完整性驗(yàn)證,也增加了感知節(jié)點(diǎn)的負(fù)擔(dān)[13]。
因此,文獻(xiàn)[14]中提出了一種范圍查詢方法CSRQ(Communication-efficient Secure Range Query),該方法使用對(duì)稱加密算法對(duì)數(shù)據(jù)進(jìn)行加密構(gòu)建加密約束鏈,并使用0-1 編碼和HMAC(Hash-based Message Authentication Code)算法獲取比較項(xiàng),將加密約束鏈和比較項(xiàng)發(fā)送至存儲(chǔ)節(jié)點(diǎn)進(jìn)行存儲(chǔ),存儲(chǔ)節(jié)點(diǎn)利用比較項(xiàng)性質(zhì)返回滿足基站查詢要求的加密約束鏈,基站通過加密約束鏈特性對(duì)數(shù)據(jù)進(jìn)行完整性驗(yàn)證,但加密約束鏈依然包含了較多的冗余數(shù)據(jù),使得感知節(jié)點(diǎn)上傳的信息較多,能耗較高[13]。
為降低感知節(jié)點(diǎn)能量消耗,本文提出一種安全高效的多維數(shù)據(jù)范圍查詢方法。在數(shù)據(jù)上傳階段,感知節(jié)點(diǎn)運(yùn)用AES 加密算法加密數(shù)據(jù)得到數(shù)據(jù)密文,使用壓縮HMAC 算法減少上傳的HMAC 編碼,壓縮HMAC 算法對(duì)數(shù)據(jù)最值進(jìn)行加密得到最值比較鏈。在數(shù)據(jù)查詢階段,存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)感知節(jié)點(diǎn)上傳的信息,接收基站的查詢命令,通過最值比較鏈將滿足查詢條件的數(shù)據(jù)密文、加密索引鏈發(fā)送至基站。在數(shù)據(jù)驗(yàn)證階段,基站接收存儲(chǔ)節(jié)點(diǎn)發(fā)送的信息,根據(jù)加密索引鏈性質(zhì)對(duì)數(shù)據(jù)進(jìn)行完整性驗(yàn)證。
基于兩層無(wú)線傳感器網(wǎng)絡(luò),將網(wǎng)絡(luò)分割為多個(gè)查詢單元,每個(gè)查詢單元包含一個(gè)存儲(chǔ)節(jié)點(diǎn)φ和多個(gè)感知節(jié)點(diǎn){e1,e2,…,en},記為UUnit={φ,{e1,e2,…,en}}。在查詢單元中,感知節(jié)點(diǎn)資源有限,存儲(chǔ)能力較弱,而存儲(chǔ)節(jié)點(diǎn)資源豐富,存儲(chǔ)能力強(qiáng),可以存儲(chǔ)感知節(jié)點(diǎn)上傳信息,響應(yīng)基站查詢命令,發(fā)送相應(yīng)信息。兩層無(wú)線傳感器網(wǎng)絡(luò)模型如圖1 所示。
圖1 兩層無(wú)線傳感器網(wǎng)絡(luò)模型Fig.1 Two-layer wireless sensor networks’model
采用多維數(shù)據(jù)的查詢模型,以兩維數(shù)據(jù)為例,可以形式化為以下公式:
其中:E為待查詢感知節(jié)點(diǎn)集合;H為查詢時(shí)間周期集合;[low1,high1]為第一維數(shù)據(jù)的查詢范圍區(qū)間;[low2,high2]為第二維數(shù)據(jù)的查詢范圍區(qū)間,表示查詢集合E內(nèi)的感知節(jié)點(diǎn)在時(shí)間周期集合H內(nèi)第一維數(shù)據(jù)滿足范圍區(qū)間[low1,high1],第二維數(shù)據(jù)滿足范圍區(qū)間[low2,high2]的所有數(shù)據(jù)。如Q=({e1,e2,…,e20},{h1,h2},[10,30],[40,60]),表示感知節(jié)點(diǎn)e1~e20在時(shí)間周期h1~h2內(nèi)的第一維數(shù)據(jù)滿足區(qū)間[10,30],第二維數(shù)據(jù)滿足區(qū)間[40,60]的所有數(shù)據(jù)。
無(wú)線傳感器網(wǎng)絡(luò)普遍缺少人類的管理,容易被第三方竊取或者篡改感知節(jié)點(diǎn)數(shù)據(jù)。目前針對(duì)兩層無(wú)線傳感器網(wǎng)絡(luò)的研究,主要有以下3 種安全模型:
1)半誠(chéng)實(shí)模型。存儲(chǔ)節(jié)點(diǎn)可以遵守相應(yīng)規(guī)則,但可能會(huì)泄露其中的感知節(jié)點(diǎn)上傳信息。
2)完整性攻擊模型。被俘獲的存儲(chǔ)節(jié)點(diǎn)可能會(huì)對(duì)查詢結(jié)果進(jìn)行篡改或丟棄,使返回基站的查詢結(jié)果不完整。
3)強(qiáng)安全模型。被俘獲的存儲(chǔ)節(jié)點(diǎn)不僅會(huì)泄露感知節(jié)點(diǎn)上傳的數(shù)據(jù),而且會(huì)對(duì)查詢結(jié)果進(jìn)行偽造或丟棄,使得查詢結(jié)果不完整。
基于強(qiáng)安全模型,本文提出一種安全高效的多維數(shù)據(jù)范圍查詢方法,有效維護(hù)兩層無(wú)線傳感器網(wǎng)絡(luò)的安全。
使用反向0-1 編碼實(shí)現(xiàn)密文形式下的數(shù)值大小比較,該編碼方法不需額外進(jìn)行數(shù)值化處理,降低了節(jié)點(diǎn)的計(jì)算能耗。設(shè)S為長(zhǎng)度為n的二進(jìn)制序列,即S={sn sn-1…s1|1≤i≤n∧si∈{0,1}},則二 進(jìn)制序列S的反向0 編碼集合如下:
二進(jìn)制序列S的反向1 編碼集合如下:
性質(zhì)1設(shè)數(shù)字α和數(shù)字β的二進(jìn)制序列長(zhǎng)度相同,當(dāng)數(shù)字α的反向1 編碼和數(shù)字β的反向0 編碼有交集時(shí),則α>β。
證明如果2 個(gè)編碼集合存在一個(gè)相同的數(shù)據(jù)sn sn-1...si+10 1…1,則對(duì)于sn sn-1...si+1位α與β相同,而對(duì)于si位,α的該位實(shí)際為1,β的該位實(shí)際為0,由此可知α>β。而如果α>β,則其二進(jìn)制序列存在最高的某一位,α的該位為1 而β的該位為0,由于α采用反向1 編碼,該位的1 變成了0,β采用反向0 編碼,該位的0 保留,則從最高位到該位的序列必然相同,由此證明性質(zhì)1。
性質(zhì)2設(shè)數(shù)字α和數(shù)字β的二進(jìn)制序列長(zhǎng)度相同,當(dāng)數(shù)字α的反向1 編碼和數(shù)字β的反向0 編碼沒有交集時(shí),則α≤β。
證明由性質(zhì)1 可知,當(dāng)數(shù)字α的反向1 編碼和數(shù)字β的反向0 編碼有交集時(shí),則α>β,而數(shù)字α的反向1 編碼和數(shù)字β的反向0 編碼沒有交集,可知α≤β。而如果α≤β,數(shù)字α的反向1 編碼中的數(shù)據(jù)要小于α,數(shù)字β的反向0 編碼中的數(shù)據(jù)要大于等于β,數(shù)字α的反向1 編碼和數(shù)字β的反向0 編碼必然沒有交集,由此證明性質(zhì)2。
性質(zhì)3設(shè)數(shù)字α和數(shù)字β的二進(jìn)制序列長(zhǎng)度相同,當(dāng)數(shù)字α的反向0 編碼與數(shù)字β的反向0 編碼相同時(shí),或者數(shù)字α的反向1 編碼與數(shù)字β的反向1 編碼相同時(shí),則α=β。證明同理。
基于文獻(xiàn)[15]提出的壓縮HMAC 算法,本文提出一種新的壓縮HMAC 算法。設(shè)HMAC 編碼輸出有μ位,設(shè)Nμ為HMAC編碼的全局空間,則Nμ={0,1,…,2μ-1},采用如下Hash 函數(shù)對(duì)HMAC 編碼進(jìn)行壓縮處理:
其中:x∈Nμ∧τ<μ,經(jīng)過Hash 函數(shù)的處理后,可以將μ位的HMAC編碼轉(zhuǎn)換成τ位的壓縮HMAC編碼。
對(duì)于任意2 個(gè)在Nμ中的HMAC 數(shù)據(jù)x1、x2,根據(jù)Hash 的計(jì)算規(guī)則,如果x1=x2,則有Hash(x1)=Hash(x2)成立,如果x1≠x2,當(dāng)x1和x2對(duì)2τ求余相同時(shí),Hash(x1)=Hash(x2) 成立,否則Hash(x1)≠Hash(x2)成立。
性質(zhì)4對(duì)于2 個(gè)HMAC 編碼集合X和Y,若X∩Y≠?,則Hash(X)∩Hash(Y)≠?必然成立。
證明當(dāng)X∩Y≠?時(shí),則在X集合中至少存在一個(gè)xi,在Y集合中至少存在一個(gè)yi,滿足xi=yi,則可知必然滿足Hash(xi)=Hash(yi)。因此,如果2 個(gè)HMAC 集合相交不為空集,則這2 個(gè)集合經(jīng)過Hash運(yùn)算后的集合相交必然不為空集。也即若X∩Y≠?,則Hash(X)∩Hash(Y)≠?必然成立。當(dāng)2 個(gè)HMAC 集合相交時(shí),Hash 后的集合也相交,不影響其相交結(jié)果正確性。
性質(zhì)5對(duì)于2 個(gè)HMAC 編碼集合X和Y,若X∩Y=?,則Hash(X)∩Hash(Y)≠?可能成立。
證 明當(dāng)X∩Y=?時(shí),則對(duì)于任意xi∈X,yi∈Y,均有xi≠yi成立。當(dāng)xi和yi對(duì)2τ求余不同時(shí),有Hash(xi)≠Hash(yi)成立,此時(shí)Hash(X)∩Hash(Y)=?。然而,當(dāng)xi和yi對(duì)2τ求余相同時(shí),則有Hash(xi)=Hash(yi) 成立,即發(fā)生了碰撞,此時(shí)Hash(X)∩Hash(Y)≠?,Hash 后的2 個(gè)集合相交結(jié)果與原來(lái)集合相交的結(jié)果不一致,出現(xiàn)了失誤。因此,若X∩Y=?,則Hash(X)∩Hash(Y)≠?可能成立。
因此,本文主要討論出現(xiàn)失誤的概率Pe,即在X∩Y=?時(shí)發(fā)生Hash(X)∩Hash(Y)≠?的最大概率。設(shè)HMAC集合X包含v個(gè)HMAC數(shù)據(jù),即X={x1,x2,…,xv},HMAC 集合Y包含w個(gè)HMAC 數(shù)據(jù),即Y={y1,y2,…,yw}。假設(shè)HMAC 集合X經(jīng)過Hash 運(yùn)算后產(chǎn)生θ個(gè)數(shù)據(jù),可以知道1≤θ≤v,則在Nμ中共有(2μ/2τ)×θ個(gè)HMAC 數(shù)據(jù)組成集合R,滿足:R中任一數(shù)據(jù)x通過Hash 運(yùn)算得到的數(shù)據(jù)都在集合Hash(X)中。所以,對(duì)于Y中的任一數(shù)據(jù)yi,Hash(yi)?Hash(X)的概率等于yi不在集合R中的概率,即:
而只有當(dāng)HMAC 集合Y中所有w個(gè)HMAC 數(shù)據(jù),通過Hash 運(yùn)算后的數(shù)據(jù)都不在Hash(X)中時(shí),Hash(X)∩Hash(Y)=?才成立,即X∩Y=?時(shí)發(fā)生Hash(X)∩Hash(Y)=?的概率如下:
當(dāng)發(fā)生失誤時(shí),即當(dāng)X∩Y=?時(shí)發(fā)生Hash(X)∩Hash(Y)≠?的概率如下:
顯然,當(dāng)θ=v時(shí),Pe最大,即:
在范圍查詢算法中,設(shè)HMAC 集合X有16 個(gè)HMAC數(shù)據(jù),HMAC集合Y有32個(gè)HMAC數(shù)據(jù),即v=16,w=32,設(shè)μ=128,τ=24,代入式(8)可得到Pe=3.05×10-5。這一失誤概率對(duì)感知數(shù)據(jù)的大小比較的影響十分小,但Hash 運(yùn)算卻可以使得上傳的HMAC 數(shù)據(jù)顯著減少,有利于降低感知節(jié)點(diǎn)能量消耗。
算法主要包含數(shù)據(jù)上傳、數(shù)據(jù)查詢和數(shù)據(jù)驗(yàn)證3個(gè)階段。反向0-1 編碼記為RZO,反向0 編碼記為RZO0,反向1 編碼記為RZO1,MIN 表示取2 個(gè)集合中元素最少的集合,AES 加密算法記為AES,HMAC-MD5 加密算法記為HMAC,HMAC-MD5加密算法具有單向性和抗沖突性[16-17],經(jīng)過HMAC-MD5 加密后的數(shù)據(jù)依然能夠進(jìn)行大小比較[18-19],且不能逆向解密成原始數(shù)據(jù)[20-21]。
2.3.1 數(shù)據(jù)上傳階段
感知節(jié)點(diǎn)采集多維的數(shù)據(jù),以二維數(shù)據(jù)為例,采集二維數(shù)據(jù):
使用AES 加密算法進(jìn)行加密,得到數(shù)據(jù)密文φ:
同時(shí),獲取二維數(shù)據(jù)中的最小值和最大值,即:
使用AES 加密算法進(jìn)行加密得到加密索引鏈λ:
將二維數(shù)據(jù)的最小值和最大值進(jìn)行反向0-1 編碼:
為減少感知節(jié)點(diǎn)上傳的信息,獲取二維最值數(shù)據(jù)反向0-1 編碼的最小集合:
先對(duì)其使用HMAC 算法,再使用Hash 算法進(jìn)行優(yōu)化,得到最值比較鏈ψ:
將數(shù)據(jù)密文、加密索引鏈、最值比較鏈組成最終數(shù)據(jù)d1發(fā)送至存儲(chǔ)節(jié)點(diǎn),即:
2.3.2 數(shù)據(jù)查詢階段
基站獲取二維數(shù)據(jù)的查詢范圍區(qū)間:
對(duì)區(qū)間進(jìn)行反向0-1 編碼:
對(duì)反向0-1 編碼的結(jié)果運(yùn)用HMAC 算法和Hash算法得到查詢范圍區(qū)間的壓縮HMAC 數(shù)據(jù)ζ:
基站獲取查詢時(shí)間區(qū)間[Tstart,Tend],與查詢范圍區(qū)間的壓縮HMAC 數(shù)據(jù)ζ組合成查詢命令query 發(fā)送至存儲(chǔ)節(jié)點(diǎn),即:
存儲(chǔ)節(jié)點(diǎn)接收到基站發(fā)送的query 之后,在滿足查詢時(shí)間區(qū)間[Tstart,Tend]的數(shù)據(jù)中,判斷每維的數(shù)據(jù)是否滿足如下的三個(gè)條件之一,這里以第一維數(shù)據(jù)為例:
其中:當(dāng)Amin使用反向0 編碼時(shí),Alow和Ahigh使用反向1編碼進(jìn)行判斷,反之使用反向0 編碼進(jìn)行判斷;同理,當(dāng)Amax使用反向0 編碼時(shí),Alow和Ahigh使用反向1編碼進(jìn)行判斷,反之使用反向0 編碼進(jìn)行判斷。
如果所有維度的數(shù)據(jù)都滿足上述三個(gè)條件之一時(shí),表明該數(shù)據(jù)滿足基站的查詢要求,將數(shù)據(jù)中的數(shù)據(jù)密文φ,加密索引鏈λ發(fā)送至基站,即:
2.3.3 數(shù)據(jù)驗(yàn)證階段
基站接收來(lái)自存儲(chǔ)節(jié)點(diǎn)的信息,解密數(shù)據(jù)密文,獲取二維數(shù)據(jù)的最小值和最大值,即:
解密加密索引鏈,判斷數(shù)據(jù)密文中的最值是否與加密索引鏈中的數(shù)據(jù)最值一致,如果不一致則數(shù)據(jù)被偽造或者篡改,再與查詢區(qū)間進(jìn)行比較,以第一維數(shù)據(jù)舉例:
滿足上述條件后數(shù)據(jù)才是完整的,在數(shù)據(jù)密文中篩選滿足查詢要求數(shù)據(jù),并顯示在查詢程序界面中。
在兩層無(wú)線傳感器網(wǎng)絡(luò)中,范圍查詢方法的安全性分析分為隱私安全性分析和查詢結(jié)果完整性分析。隱私安全性分析主要針對(duì)范圍查詢過程中感知數(shù)據(jù),查詢范圍以及查詢結(jié)果是否泄露,而查詢結(jié)果完整性分析主要針對(duì)基站接收查詢結(jié)果之后判斷查詢結(jié)果是否被偽造或者刪除。
2.4.1 隱私安全性分析
范圍查詢方法使用AES 對(duì)稱加密算法對(duì)感知節(jié)點(diǎn)采集數(shù)據(jù)進(jìn)行加密,使數(shù)據(jù)不被破解,AES 對(duì)稱加密算法需要相同密鑰才可進(jìn)行解密,范圍查詢方法通過DH 密鑰交換(Diffie-Hellman key exchange)進(jìn)行密鑰的生成,第三方無(wú)法獲取密鑰信息,因此保障了感知數(shù)據(jù)的隱私安全性。
基站將查詢范圍進(jìn)行反向0-1 編碼、HMAC 加密和Hash 算法優(yōu)化,再發(fā)送至存儲(chǔ)節(jié)點(diǎn)。反向0-1 編碼用于進(jìn)行大小的比較,HMAC 具有單向不可逆性質(zhì),Hash 算法可以優(yōu)化HMAC 編碼,加密后的數(shù)據(jù)依舊可以用于大小比較,并且不能逆推回原始數(shù)據(jù),即使存儲(chǔ)節(jié)點(diǎn)被捕獲也無(wú)法獲取其明文數(shù)據(jù),從而確保了查詢范圍的隱私安全性。
感知節(jié)點(diǎn)上傳數(shù)據(jù)密文,加密索引鏈和最值比較鏈到存儲(chǔ)節(jié)點(diǎn),存儲(chǔ)節(jié)點(diǎn)接收數(shù)據(jù)并進(jìn)行存儲(chǔ),基站發(fā)送查詢命令給存儲(chǔ)節(jié)點(diǎn),存儲(chǔ)節(jié)點(diǎn)利用最值比較鏈進(jìn)行大小比較,將對(duì)應(yīng)的信息發(fā)送至基站。在比較過程中使用最值比較鏈進(jìn)行比較,第三方無(wú)法逆推出原始數(shù)據(jù),上傳的信息使用了AES 對(duì)稱加密,第三方無(wú)法在未知曉密鑰的情況下進(jìn)行破解。因此,保障了查詢結(jié)果的隱私安全性。
綜上,該范圍查詢算法可以保障感知數(shù)據(jù)、查詢范圍和查詢結(jié)果的隱私安全性。
2.4.2 查詢結(jié)果完整性分析
存儲(chǔ)節(jié)點(diǎn)返回的數(shù)據(jù)如下:
1)當(dāng)存儲(chǔ)節(jié)點(diǎn)返回?cái)?shù)據(jù)中的φ、λ兩者不全時(shí),表明數(shù)據(jù)被刪除,返回的數(shù)據(jù)不完整。
2)解密數(shù)據(jù)密文和加密索引鏈,若解密出錯(cuò),則數(shù)據(jù)被偽造或者篡改,返回?cái)?shù)據(jù)不完整。
3)將數(shù)據(jù)密文和加密索引鏈的最值進(jìn)行比較,如果兩者最值數(shù)據(jù)不一致,表明數(shù)據(jù)被偽造或者篡改,返回?cái)?shù)據(jù)不完整。
4)將數(shù)據(jù)密文最值與查詢區(qū)間進(jìn)行比較,如果數(shù)據(jù)密文最值不滿足查詢區(qū)間要求,則表明數(shù)據(jù)被偽造或者篡改,返回?cái)?shù)據(jù)不完整。
對(duì)于存儲(chǔ)節(jié)點(diǎn)返回基站的數(shù)據(jù),如果滿足上述4 個(gè)步驟,返回?cái)?shù)據(jù)才是正常的,滿足范圍查詢算法的查詢結(jié)果完整性要求。
在實(shí)驗(yàn)中,存儲(chǔ)節(jié)點(diǎn)開啟Wi-Fi,感知節(jié)點(diǎn)和基站連接該Wi-Fi,并在相同的局域網(wǎng)內(nèi)進(jìn)行密鑰交換和數(shù)據(jù)傳輸。在數(shù)據(jù)上傳階段,感知節(jié)點(diǎn)作為客戶端,而存儲(chǔ)節(jié)點(diǎn)作為服務(wù)器端,感知節(jié)點(diǎn)采集多維數(shù)據(jù),并將感知數(shù)據(jù)上傳至存儲(chǔ)節(jié)點(diǎn)。在數(shù)據(jù)查詢階段,存儲(chǔ)節(jié)點(diǎn)則作為客戶端,而基站作為服務(wù)器端,基站向存儲(chǔ)節(jié)點(diǎn)發(fā)送查詢命令,存儲(chǔ)節(jié)點(diǎn)響應(yīng)查詢請(qǐng)求并將相應(yīng)數(shù)據(jù)上傳至基站。在數(shù)據(jù)驗(yàn)證階段,基站接收存儲(chǔ)節(jié)點(diǎn)發(fā)送的查詢結(jié)果并進(jìn)行查詢結(jié)果完整性驗(yàn)證。
感知節(jié)點(diǎn)采用上海諾行信息技術(shù)公司的AliOS Things Developer Kit 開發(fā)板,搭載了阿里巴巴公司自主研發(fā)的AliOS 系統(tǒng),并包含有:音頻編解碼器,8 個(gè)傳感器,8 位數(shù)碼相機(jī),LCD 顯示屏,sixes LEDs,PCIe模塊,USB_OTG_FS模塊 和Wi-Fi模塊。
開發(fā)板先連接存儲(chǔ)節(jié)點(diǎn)開啟的Wi-Fi,確保自己可以正常進(jìn)行通信,再與基站進(jìn)行DH 密鑰交換,在不被第三方竊取密鑰的情況下安全獲取相同密鑰。在獲取相同密鑰后,再通過該開發(fā)板采集監(jiān)測(cè)區(qū)域物理數(shù)據(jù),并進(jìn)行加密運(yùn)算形成數(shù)據(jù)密文,同時(shí)構(gòu)建加密索引鏈和最值比較鏈,最終將數(shù)據(jù)密文、加密索引鏈和最值比較鏈傳輸?shù)酱鎯?chǔ)節(jié)點(diǎn)。圖2 所示為感知節(jié)點(diǎn)的程序流程,圖3 為AliOS Things Developer Kit 開發(fā)板。
圖2 感知節(jié)點(diǎn)程序流程Fig.2 Program procedure of perception node
圖3 AliOS Things Developer Kit 開發(fā)板Fig.3 AliOS Things Developer Kit development board
存儲(chǔ)節(jié)點(diǎn)采用迅為電子公司的iTOP-4412核心板,使用三星的Exynos 4412 四核處理器,系統(tǒng)為L(zhǎng)inux 系統(tǒng),主頻為1.4 GHz,內(nèi)置了8 GB 存儲(chǔ)空間,具有9 路的DC/DC 和28 路LDO 輸出電源,在-20~70 ℃范圍的高低溫測(cè)試中運(yùn)行良好。
在存儲(chǔ)節(jié)點(diǎn)通電后,先開啟Wi-Fi,確保感知節(jié)點(diǎn)和基站可以正常通信。如果感知節(jié)點(diǎn)和基站沒有成功連接Wi-Fi,則循環(huán)等待連接。在連接成功后,當(dāng)存儲(chǔ)節(jié)點(diǎn)接收到感知節(jié)點(diǎn)上傳的數(shù)據(jù)時(shí),判斷該數(shù)據(jù)是密鑰交換信息還是隱私數(shù)據(jù)信息,如果是密鑰交換信息則發(fā)送給基站,如果是隱私數(shù)據(jù)信息,則需要進(jìn)行存儲(chǔ)。判斷當(dāng)天的數(shù)據(jù)表是否已經(jīng)創(chuàng)建,如果已創(chuàng)建則將數(shù)據(jù)存入數(shù)據(jù)表,如果未創(chuàng)建,則先創(chuàng)建數(shù)據(jù)表再存入相應(yīng)數(shù)據(jù)。圖4 所示為存儲(chǔ)節(jié)點(diǎn)程序流程,圖5 為iTOP-4412 核心板。
圖4 存儲(chǔ)節(jié)點(diǎn)程序流程Fig.4 Program procedure of storage node
圖5 iTOP-4412 核心板Fig.5 iTOP-4412 core board
基站用電腦程序模擬,電腦型號(hào)為SAMSUNG 500R5H,系統(tǒng)為Windows 8.1,軟件環(huán)境為Visual Studio 2015,編程語(yǔ)言為Visual Basic.NET。
基站啟動(dòng)后先連接存儲(chǔ)節(jié)點(diǎn)開啟的Wi-Fi。連接Wi-Fi成功后,與感知節(jié)點(diǎn)進(jìn)行DH 密鑰交換,獲取相同的加密密鑰,如果交換密鑰失敗,則重新連接Wi-Fi。當(dāng)需要進(jìn)行范圍查詢時(shí),加密查詢區(qū)間,將查詢命令發(fā)送至存儲(chǔ)節(jié)點(diǎn),存儲(chǔ)節(jié)點(diǎn)接收到查詢命令后返回對(duì)應(yīng)的查詢結(jié)果。基站接收查詢結(jié)果并進(jìn)行查詢結(jié)果完整性驗(yàn)證,如果滿足驗(yàn)證,則篩選相應(yīng)數(shù)據(jù)并在程序界面進(jìn)行顯示,如果不滿足驗(yàn)證,則數(shù)據(jù)出錯(cuò),結(jié)束查詢。圖6 為基站的程序流程,圖7 為基站程序界面,圖8 為DH密鑰交換過程,圖9為感知節(jié)點(diǎn)上傳數(shù)據(jù),其中,data表示數(shù)據(jù)密文,index 表示加密索引鏈,comparer 表示最值比較鏈,圖10 是基站范圍查詢結(jié)果,其中,Illuminance 表示光照度,Temperature 表示溫度,Atmos表示大氣壓,Humidity 表示濕度。
圖6 基站程序流程Fig.6 Program procedure of base station
圖7 基站程序界面Fig.7 Base station program interface
圖8 DH 密鑰交換過程Fig.8 Process of DH key exchange
圖9 感知節(jié)點(diǎn)上傳數(shù)據(jù)過程Fig.9 Process of sensing node uploading data
圖10 基站范圍查詢結(jié)果Fig.10 Base station range query results
在感知節(jié)點(diǎn)通信過程中,電流做功使得電能轉(zhuǎn)化成其他形式能量,有多少電能轉(zhuǎn)化成其他形式能量即表明電流做了多少功,也即是電功的大小[22-23]。電子元件的電功大小與跟電流的大小、電壓的高低和通電時(shí)間長(zhǎng)短都有關(guān)系,有電功公式W=U?I?t,又因?yàn)殡姽β实扔陔娏骱碗妷旱某朔eP=U?I,可以推導(dǎo)出W=P?t,使用該公式測(cè)算感知節(jié)點(diǎn)的通信能量消耗。通過納普電子科技公司研發(fā)的PM9816 高精度功率計(jì)測(cè)量感知節(jié)點(diǎn)的通信功率,該功率計(jì)的電壓量程為0.5~600 V(AC/DC),電流量程為0.05 mA~40 A(AC/DC),功率量程為0.001 mW~24 KW,再在程序中獲取感知節(jié)點(diǎn)的通信時(shí)間,兩者相乘即可得到感知節(jié)點(diǎn)的通信能量消耗。
為描述方便,將本文提出的隱私保護(hù)范圍查詢方法稱為優(yōu)化HMAC 方法。HMAC 加密算法使用HMAC-MD5 算法,Hash 算法中的參數(shù)τ=24。
實(shí)驗(yàn)1以單個(gè)周期采集數(shù)據(jù)個(gè)數(shù)N為自變量,其他參數(shù)如表1 所示,優(yōu)化HMAC 方法和CSRQ 方法的通信時(shí)間如表2所示,N對(duì)能量消耗的影響如圖11所示。
表1 實(shí)驗(yàn)1 參數(shù)Table 1 Parameters of Experiment 1
表2 實(shí)驗(yàn)1 通信時(shí)間Table 2 Communication time of Experiment 1 s
圖11 N 對(duì)能量消耗的影響Fig.11 Effect of N on energy consumption
當(dāng)N增大時(shí),感知節(jié)點(diǎn)所需要進(jìn)行處理的數(shù)據(jù)增多。CSRQ 方法需要構(gòu)建比較項(xiàng)和加密約束鏈,數(shù)據(jù)增多后需要構(gòu)建更長(zhǎng)的加密約束鏈,同時(shí)需要構(gòu)建更多的比較項(xiàng),使得該方法中的加密約束鏈的長(zhǎng)度逐漸增大,比較項(xiàng)逐漸增多,感知節(jié)點(diǎn)的能量消耗也逐漸增大。而對(duì)于優(yōu)化HMAC 方法,數(shù)據(jù)密文是通過對(duì)采集數(shù)據(jù)進(jìn)行AES 對(duì)稱加密運(yùn)算生成,加密索引鏈則通過對(duì)采集數(shù)據(jù)的數(shù)據(jù)最值進(jìn)行AES 對(duì)稱加密運(yùn)算生成,最值比較鏈?zhǔn)峭ㄟ^對(duì)采集數(shù)據(jù)的數(shù)據(jù)最值進(jìn)行反向0-1編碼和壓縮HMAC 算法生成,N的增大只會(huì)增加采集數(shù)據(jù)總量,而不會(huì)增加采集數(shù)據(jù)中數(shù)據(jù)最值的個(gè)數(shù),因而不影響加密索引鏈以及最值比較鏈的長(zhǎng)度,只影響數(shù)據(jù)密文的長(zhǎng)度。隨著N的增大,數(shù)據(jù)密文長(zhǎng)度逐漸增大,加密索引鏈和最值比較鏈長(zhǎng)度不變,優(yōu)化HMAC方法通信能耗相比CSRQ 方法降低4.1 倍。
實(shí)驗(yàn)2以感知節(jié)點(diǎn)數(shù)據(jù)位數(shù)bit 為自變量,其他參數(shù)如表3 所示,優(yōu)化HMAC 方法和CSRQ 方法的通信時(shí)間如表4所示,數(shù)據(jù)位數(shù)對(duì)能量消耗的影響如圖12所示。
圖12 數(shù)據(jù)位數(shù)對(duì)能量消耗的影響Fig.12 Effect of data digits on energy consumption
表3 實(shí)驗(yàn)2 參數(shù)Table 3 Parameters of Experiment 2
表4 實(shí)驗(yàn)2 通信時(shí)間Table 4 Communication time of Experiment 2 s
當(dāng)數(shù)據(jù)位數(shù)增大時(shí),在CSRQ 方法中加密約束鏈長(zhǎng)度會(huì)緩慢增大,同時(shí)需要進(jìn)行處理的數(shù)據(jù)位數(shù)變多,對(duì)加密約束鏈中的約束因子進(jìn)行計(jì)算生成的比較項(xiàng)也會(huì)增多,使得通信能耗逐漸增大。而在優(yōu)化HMAC 方法中,數(shù)據(jù)密文以及加密索引鏈都是使用AES 對(duì)稱加密算法生成,數(shù)據(jù)密文和加密索引鏈不需要逐個(gè)比特位進(jìn)行處理,感知節(jié)點(diǎn)數(shù)據(jù)位數(shù)增多后,AES 對(duì)稱加密算法需要進(jìn)行加密的數(shù)據(jù)量增大,使得數(shù)據(jù)密文以及加密索引鏈的長(zhǎng)度緩慢增大,而最值比較鏈采用了反向0-1 編碼,需要對(duì)每一個(gè)比特位進(jìn)行處理獲取相應(yīng)的編碼結(jié)果,感知節(jié)點(diǎn)數(shù)據(jù)位數(shù)增多后,得到的編碼結(jié)果也會(huì)隨之增多,同時(shí)最值比較鏈?zhǔn)褂昧藟嚎sHMAC 算法,其中的元素長(zhǎng)度得到有效壓縮,使得元素長(zhǎng)度較短并能完成相應(yīng)的大小比較功能,最值比較鏈的長(zhǎng)度會(huì)逐漸增大。隨著數(shù)據(jù)位數(shù)的增大,優(yōu)化HMAC 方法通信能耗相比CSRQ 方法降低3.5 倍。
實(shí)驗(yàn)3以采集數(shù)據(jù)維度dim 為自變量,其他參數(shù)如表5 所示,優(yōu)化HMAC 方法和CSRQ 方法的通信時(shí)間如表6 所示,數(shù)據(jù)維度對(duì)能量消耗的影響如圖13所示。
表5 實(shí)驗(yàn)3 參數(shù)Table 5 Parameters of Experiment 3
表6 實(shí)驗(yàn)3 通信時(shí)間Table 6 Communication time of Experiment 3 s
圖13 數(shù)據(jù)維度對(duì)能量消耗的影響Fig.13 Effect of data dimensions on energy consumption
當(dāng)數(shù)據(jù)維度增大時(shí),在CSRQ 方法中需要為每一維度的數(shù)據(jù)構(gòu)建加密約束鏈,同時(shí)構(gòu)建對(duì)應(yīng)的比較項(xiàng),比較鏈以及加密約束鏈的增多使得CSRQ 方法的通信能量消耗逐漸增大。而對(duì)于優(yōu)化HMAC方法,感知節(jié)點(diǎn)需要對(duì)新增維度的采集數(shù)據(jù)進(jìn)行AES 對(duì)稱加密算法處理,使得數(shù)據(jù)密文的長(zhǎng)度逐漸增大,而加密索引鏈和最值比較鏈中只需要對(duì)相應(yīng)維度采集數(shù)據(jù)的數(shù)據(jù)最值進(jìn)行處理,數(shù)據(jù)最值自身所占字節(jié)數(shù)較少,經(jīng)過AES 對(duì)稱加密算法加密生成新增的加密索引鏈以及經(jīng)過反向0-1 編碼和壓縮HMAC 算法處理生成新增的最值比較鏈較短,從而有效減少了發(fā)送的數(shù)據(jù)信息,使得通信的能量消耗較低。隨著數(shù)據(jù)維度的增大,優(yōu)化HMAC 方法的通信能耗相比CSRQ 方法降低2.8 倍。
本文提出一種多維數(shù)據(jù)的安全高效范圍查詢方法。在數(shù)據(jù)上傳階段,感知節(jié)點(diǎn)采集數(shù)據(jù)后構(gòu)建數(shù)據(jù)密文,加密索引鏈得到最值比較鏈,加密索引鏈中的數(shù)據(jù)用于進(jìn)行數(shù)據(jù)的完整性驗(yàn)證,最值比較鏈則用于進(jìn)行密文形式的大小比較。采用反向0-1 編碼和壓縮HMAC 算法,能夠縮短最值比較鏈的長(zhǎng)度,降低感知節(jié)點(diǎn)通信能量消耗。實(shí)驗(yàn)結(jié)果表明,相比SafeQBloom、QuerySec、SecRQ 和ESRQ 等方法,優(yōu)化HMAC 方法通信能耗較低,具有良好的安全性和可行性。但本文方法基于強(qiáng)安全模型,主要針對(duì)存儲(chǔ)節(jié)點(diǎn)被俘獲的情況,在預(yù)防共謀攻擊方面,即感知節(jié)點(diǎn)與存儲(chǔ)節(jié)點(diǎn)同時(shí)被俘獲時(shí)仍有不足,下一步將對(duì)此進(jìn)行研究改進(jìn)。