林海峰 白 荻 蔡正宇 劉云飛
(1南京林業(yè)大學(xué)信息科學(xué)技術(shù)學(xué)院,南京 210037)(2南京農(nóng)業(yè)大學(xué)工學(xué)院,南京 210007)(3南京大學(xué)電子科學(xué)與工程學(xué)院,南京 210093)
無(wú)線傳感器網(wǎng)絡(luò)(WSNs)由于其潛在的應(yīng)用熱點(diǎn),目前正廣泛用于民事和軍事領(lǐng)域[1-2].無(wú)線傳感器網(wǎng)絡(luò)包括眾多網(wǎng)絡(luò)設(shè)備,這些網(wǎng)絡(luò)設(shè)備通過(guò)短距離無(wú)線連接器,實(shí)現(xiàn)數(shù)據(jù)處理、數(shù)據(jù)存儲(chǔ)以及通信功能.WSNs不需要基礎(chǔ)設(shè)施,但能夠作為一個(gè)網(wǎng)絡(luò)配置,構(gòu)建自己的路由表.
在無(wú)線傳感器網(wǎng)絡(luò)中,電池為傳感器提供能源,但是電池在不充電的情況下,工作時(shí)間有限.然而,無(wú)線傳感器網(wǎng)絡(luò)經(jīng)常部署在偏遠(yuǎn)或者敵對(duì)的環(huán)境,如戰(zhàn)場(chǎng)或沙漠,無(wú)法更換新電池為這些傳感器提供能源[3-5].其中,最消耗能源的操作是數(shù)據(jù)傳輸,如果大量的傳感器不在服務(wù)區(qū)內(nèi),那么整個(gè)無(wú)線傳感器網(wǎng)絡(luò)將不起作用.因此,在不犧牲系統(tǒng)的可靠性的前提下,通過(guò)節(jié)能設(shè)計(jì)延長(zhǎng)系統(tǒng)壽命,是大型無(wú)線傳感器網(wǎng)絡(luò)設(shè)計(jì)中的一個(gè)重要挑戰(zhàn)[6-7].
安全是網(wǎng)絡(luò)的重要因素,尤其是在無(wú)線傳感器網(wǎng)絡(luò)中,將面臨更多入侵攻擊,而這些攻擊通常與傳統(tǒng)的有線網(wǎng)絡(luò)的攻擊存在很大差異.為了保證無(wú)線傳感器網(wǎng)絡(luò)的安全性,需要考慮身份驗(yàn)證、可用性、保密性、實(shí)時(shí)更新、完整性和不可抵賴性等因素.
①通過(guò)驗(yàn)證.傳感器能夠確認(rèn)對(duì)方身份.如果沒有驗(yàn)證,對(duì)方可以偽裝成傳感器,并能夠未經(jīng)授權(quán)訪問(wèn)并獲得重要信息.利用數(shù)據(jù)驗(yàn)證,接收者能夠確保數(shù)據(jù)的確是從真正的發(fā)送者發(fā)出.
②可用性.確保網(wǎng)絡(luò)在受到拒絕服務(wù)攻擊(Dos)時(shí)的可用性.
③保密性.未經(jīng)授權(quán)的實(shí)體不能獲得機(jī)密信息.常用的解決方法是對(duì)數(shù)據(jù)進(jìn)行加密,只有授權(quán)的接收者才具有密鑰,來(lái)保證保密性.
④實(shí)時(shí)更新.數(shù)據(jù)以及密鑰都需要實(shí)時(shí)更新,數(shù)據(jù)的實(shí)時(shí)更新保證數(shù)據(jù)一直是最新的,不會(huì)重播舊消息,密鑰的實(shí)時(shí)更新意味著在一個(gè)加密組合中使用的密鑰不能再用于其他的組合,因此在某一時(shí)段使用的密鑰將一直處于最新的狀態(tài).
⑤完整性.保證信息在傳輸過(guò)程中沒有被篡改,如修改、插入、刪除或重放.
⑥不可抵賴性.針對(duì)某些實(shí)體否認(rèn)全部參與或部分參與通訊的情況,提供服務(wù),從而保證信息的發(fā)送由指定部分來(lái)控制[8].
在WSNs中存在多種安全問(wèn)題,但本文只考慮保密性、身份驗(yàn)證以及實(shí)時(shí)更新,提出了一種數(shù)據(jù)加密算法,該算法只使用基本算術(shù)指令,從而達(dá)到節(jié)能的效果.
本文介紹了流密碼的概念,提出了在無(wú)線傳感器網(wǎng)絡(luò)中保護(hù)隱私數(shù)據(jù)的高效節(jié)能模型,并進(jìn)行安全性分析.
在密碼學(xué)中,流密碼是明碼結(jié)合的偽隨機(jī)位加密流對(duì)稱加密算法(密鑰流),通常包括異或(XOR)操作[9],在流密碼中,明碼是一次加密,并且在加密期間,連續(xù)數(shù)碼發(fā)生不同的轉(zhuǎn)變,如圖1所示.流密碼的另一種名稱是狀態(tài)密碼,因?yàn)槊總€(gè)數(shù)碼加密是依賴于當(dāng)前狀態(tài),每個(gè)數(shù)碼通常是一個(gè)比特或一個(gè)字節(jié)組成.
圖1 流密碼
在圖1中,密鑰流生成器是一個(gè)“偽隨機(jī)“的位序列,即使給定一些密鑰流的位信息,產(chǎn)生結(jié)果依然是不可預(yù)測(cè)的.它是一個(gè)初始向量,被典型應(yīng)用于塊加密.在OFB模型中,密鑰流的密鑰大小受限制,例如128 bit,因此它不能永遠(yuǎn)安全.
流密碼以不同的方式對(duì)分組密碼進(jìn)行對(duì)稱加密,分組密碼應(yīng)用于固定不變的大塊數(shù)碼中.然而,流密碼與分組密碼相比,具有更高的速度和較低的硬件復(fù)雜度[5].流密碼消耗計(jì)算資源和能源少的性質(zhì)使得它更適合于無(wú)線傳感器網(wǎng)絡(luò).
本文綜合利用認(rèn)證和密鑰管理協(xié)議,提出一個(gè)數(shù)據(jù)包編碼加密算法.利用先前數(shù)據(jù)包的線性組合來(lái)產(chǎn)生流密碼中偽隨機(jī)的密鑰位.為了達(dá)到這樣的效果,本文對(duì)初始的支配集使用了聚類算法.
一個(gè)支配集圖G=(V,E),其中子集S?V,對(duì)于每一個(gè)頂點(diǎn)v∈V或者包含在S中,或者是S的相鄰頂點(diǎn)[6].在集合S中的頂點(diǎn)稱為簇首節(jié)點(diǎn),集合S的相鄰頂點(diǎn)稱為簇內(nèi)節(jié)點(diǎn)[6].每一個(gè)簇群可以與所有簇內(nèi)節(jié)點(diǎn)直接通信,每一個(gè)簇內(nèi)節(jié)點(diǎn)也可以直接發(fā)送數(shù)據(jù)給簇首節(jié)點(diǎn).本文將安全程序分成兩個(gè)階段,簇間和簇內(nèi)聚類算法.
假設(shè)所有的簇首節(jié)點(diǎn)和簇內(nèi)節(jié)點(diǎn)都使用相同的Hash函數(shù)h(M),該函數(shù)根據(jù)任意長(zhǎng)度的消息產(chǎn)生唯一的定長(zhǎng)的編碼[5],該散列函數(shù)可以被放置在任意傳感器節(jié)點(diǎn)上.Hash函數(shù)有如下4個(gè)性質(zhì):
性質(zhì)1 h(M)易于計(jì)算,用β表示h(M)的結(jié)果.
性質(zhì)2 給定β,不能求出M使得h(M)=β成立,稱之為“單向函數(shù)”.
性質(zhì)3 給定M,不存在M'≠M(fèi),使得h(M')=h(M)成立,稱之為“弱碰撞性”.
性質(zhì) 4 不存在任意一對(duì)(M',M),使得h(M')=h(M)成立,稱之為“強(qiáng)碰撞性”.
根據(jù)后三條性質(zhì),如果Hash函數(shù)的構(gòu)造是保密的,那么其他節(jié)點(diǎn)將無(wú)法模擬該傳感器節(jié)點(diǎn).這樣就可以防止偽裝攻擊或假冒攻擊.根據(jù)“弱碰撞性”和“強(qiáng)碰撞性”,可以檢測(cè)接收到的信息是否被篡改.由于Hash編碼易于計(jì)算,可以忽略傳感器計(jì)算哈希函數(shù)的能量消耗.為了防止應(yīng)答報(bào)文攻擊,在每一條報(bào)文中加入時(shí)間戳.
在本文的協(xié)議中,僅計(jì)算部分Hash編碼,即Hash函數(shù)的輸入是從簇內(nèi)節(jié)點(diǎn)發(fā)送給簇首節(jié)點(diǎn)純文本的數(shù)據(jù)包.根據(jù)這部分的哈希函數(shù),可以發(fā)現(xiàn)丟包并可以容忍一些包的丟失,本文后續(xù)小節(jié)將進(jìn)行討論.
由于不需要考慮數(shù)據(jù)接收器的能源消耗,則可以使用公鑰來(lái)實(shí)現(xiàn)數(shù)據(jù)隱私.首先,數(shù)據(jù)接收器將廣播公鑰到所有簇首節(jié)點(diǎn),過(guò)程如報(bào)文交換1所示.
報(bào)文交換1 數(shù)據(jù)接收器分配公共密鑰的階段:
報(bào)文1.數(shù)據(jù)接收器→簇首節(jié)點(diǎn):KS+Stamp
報(bào)文2.簇首節(jié)點(diǎn)→數(shù)據(jù)接收器:EKS+(packet)
數(shù)據(jù)接收器廣播公鑰到簇內(nèi)節(jié)點(diǎn),如報(bào)文交換1中的報(bào)文1所示.在報(bào)文1中,使用K+S表示數(shù)據(jù)接收器中的公鑰.當(dāng)簇首節(jié)點(diǎn)接收到報(bào)文1,根據(jù)接收到的報(bào)文計(jì)算β,并將其與接收到的β'進(jìn)行比較,從而驗(yàn)證其一致性.如果通過(guò)驗(yàn)證,仍然需要檢查此報(bào)文的時(shí)效性.如果是最新的報(bào)文,簇首節(jié)點(diǎn)使用公共密鑰對(duì)數(shù)據(jù)進(jìn)行加密,然后將密文發(fā)送到數(shù)據(jù)接收器.
使用報(bào)文2表示發(fā)送到簇內(nèi)節(jié)點(diǎn)的報(bào)文.當(dāng)數(shù)據(jù)接收器接收到報(bào)文2,根據(jù)接收到的報(bào)文計(jì)算β,并將其與接收到的β'進(jìn)行比較,從而驗(yàn)證其一致性.如果通過(guò)驗(yàn)證,仍然需要檢查此報(bào)文的時(shí)效性.如果是最新的報(bào)文,數(shù)據(jù)接收器存儲(chǔ)該數(shù)據(jù)包.
本文通過(guò)兩步措施來(lái)保證簇內(nèi)數(shù)據(jù),分別是初始密鑰分組交換和數(shù)據(jù)收集.
1)初始密鑰分組交換.首先,每個(gè)簇首節(jié)點(diǎn)與簇內(nèi)節(jié)點(diǎn)需要交換密鑰數(shù)據(jù)包,用于每次會(huì)話的加密和認(rèn)證,過(guò)程如報(bào)文交換2所示.
報(bào)文交換2 初始密鑰分組交換階段:
報(bào)文1.簇內(nèi)節(jié)點(diǎn)→簇首節(jié)點(diǎn):E Kmaster(key_packet )Time_Stamp
簇內(nèi)節(jié)點(diǎn)發(fā)送報(bào)文1給簇首節(jié)點(diǎn),其中報(bào)文組織格式為 EKmasterkey_packet_Stampβ,KKmaster為萬(wàn)能鑰匙,存儲(chǔ)在每一個(gè)傳感器中,β是key_packetTime_Stamp的Hash編碼.
每一個(gè)簇內(nèi)節(jié)點(diǎn)需要存儲(chǔ)密鑰數(shù)據(jù)包,使用密鑰數(shù)據(jù)包產(chǎn)生大小為k的密鑰池,從而能夠密鑰數(shù)據(jù)包向左平移.如圖2所示,每一個(gè)簇內(nèi)節(jié)點(diǎn)中的密鑰池對(duì)簇首節(jié)點(diǎn)發(fā)送來(lái)的數(shù)據(jù)包進(jìn)行編碼,密鑰池是一個(gè)先進(jìn)先出(FIFO)隊(duì)列.
圖2 每個(gè)傳感器中的密鑰池(密鑰數(shù)據(jù)包為00000001,密鑰池大小為5)
簇首節(jié)點(diǎn)接收到的報(bào)文1中包含初始化密鑰數(shù)據(jù)包,根據(jù)接收到的報(bào)文計(jì)算β,并將其與接收到的β'進(jìn)行比較,從而驗(yàn)證其一致性.如果通過(guò)驗(yàn)證,仍然需要檢查此報(bào)文的時(shí)間戳.如果是最新的報(bào)文,簇首節(jié)點(diǎn)存儲(chǔ)并產(chǎn)生類似于簇內(nèi)節(jié)點(diǎn)的密鑰池,利用該密鑰池對(duì)簇內(nèi)節(jié)點(diǎn)發(fā)送的報(bào)文進(jìn)行解碼.最后簇首節(jié)點(diǎn)發(fā)送報(bào)文2,通知相應(yīng)的簇內(nèi)節(jié)點(diǎn)密鑰池已經(jīng)設(shè)置完成.
報(bào)文交換3 數(shù)據(jù)收集階段:
報(bào)文1.簇內(nèi)節(jié)點(diǎn)→簇首節(jié)點(diǎn):
簇內(nèi)節(jié)點(diǎn)密鑰池隨機(jī)地對(duì)數(shù)據(jù)包進(jìn)行編碼,其中,β是packetTime_Stamp的 Hash編碼,(g1,g2,…,gk)為系數(shù).
當(dāng)簇首節(jié)點(diǎn)接收到此報(bào)文,根據(jù)接收到的報(bào)文計(jì)算β,并將其與接收到的β'進(jìn)行比較,驗(yàn)證其一致性.如果通過(guò)驗(yàn)證,仍然需要檢查此報(bào)文的時(shí)間戳.如果是最新的報(bào)文,簇首節(jié)點(diǎn)利用接收到的系數(shù)以及密鑰池對(duì)簇內(nèi)節(jié)點(diǎn)發(fā)送的報(bào)文進(jìn)行解碼.解碼完成后,將報(bào)文存儲(chǔ)在密鑰池中.
本文的數(shù)據(jù)收集過(guò)程如圖3所示,其中Mi表示簇內(nèi)節(jié)點(diǎn),KP表示密鑰池.
圖3 數(shù)據(jù)收集過(guò)程
1)簇間安全性.簇首節(jié)點(diǎn)發(fā)送的每一個(gè)報(bào)文都使用公鑰進(jìn)行編碼,從而保證每個(gè)數(shù)據(jù)包都是安全的.
2)簇內(nèi)安全性.為了實(shí)現(xiàn)每個(gè)簇內(nèi)節(jié)點(diǎn)的保密性,使用公鑰對(duì)簇內(nèi)節(jié)點(diǎn)發(fā)送的密鑰數(shù)據(jù)包進(jìn)行加密,根據(jù)公鑰的加密性質(zhì),可以保證信息安全.
由于每一個(gè)簇內(nèi)節(jié)點(diǎn)隨機(jī)產(chǎn)生初始密鑰數(shù)據(jù)包,所以密鑰空間為2n,數(shù)據(jù)包的長(zhǎng)度為n.在本文的模型中,數(shù)據(jù)包的長(zhǎng)度超過(guò)192比特,使得攻擊者無(wú)法破譯初始密鑰數(shù)據(jù)包,從而保證密鑰池的安全性.
通過(guò)異或⊕操作,隨機(jī)使用先前的數(shù)據(jù)包與當(dāng)前數(shù)據(jù)包進(jìn)行編碼,如報(bào)文交換3所示,其中packet表示簇內(nèi)節(jié)點(diǎn)接收到的數(shù)據(jù)包,⊕gi表示簇內(nèi)節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包,密鑰空間的大小與源數(shù)據(jù)包空間大小成正比.
企業(yè)并購(gòu)分為兼并、收購(gòu)和合并三種,企業(yè)并購(gòu)是指兩個(gè)或者兩個(gè)以上的企業(yè)為了提高自身競(jìng)爭(zhēng)力,雙方自愿平等的發(fā)生交易,一方企業(yè)付出一定的經(jīng)濟(jì)代價(jià)從而取得另一方的股權(quán)和資產(chǎn),從而對(duì)其進(jìn)行控制和管理的行為。
本文構(gòu)建的模型有以下幾方面的優(yōu)勢(shì).
1)節(jié)省通信.本文所構(gòu)建的模型隨機(jī)使用先前的數(shù)據(jù)包對(duì)當(dāng)前數(shù)據(jù)包進(jìn)行編碼,不需要定期交換會(huì)話密鑰.一般情況下,如果需要交換密鑰,至少需要兩個(gè)報(bào)文,如圖4所示.
交換密鑰的過(guò)程如下:
①簇內(nèi)節(jié)點(diǎn)隨機(jī)產(chǎn)生一個(gè)會(huì)話并發(fā)送至簇首節(jié)點(diǎn),用報(bào)文1表示;
②報(bào)文1使用簇首節(jié)點(diǎn)的公鑰對(duì)會(huì)話密鑰進(jìn)行加密,得到Ksess;
③當(dāng)簇首節(jié)點(diǎn)接收到報(bào)文1時(shí),根據(jù)接收到的報(bào)文計(jì)算β,并將其與接收到的β'進(jìn)行比較,從而驗(yàn)證其一致性;
④如果通過(guò)驗(yàn)證,仍然需要檢查此報(bào)文的時(shí)效性;
⑤如果是最新的報(bào)文,簇首節(jié)點(diǎn)將回復(fù)ACK到簇內(nèi)節(jié)點(diǎn)告之它收到了一個(gè)新的會(huì)話密鑰.
整個(gè)信息交換過(guò)程可以顯著地降低能耗.
2)節(jié)省計(jì)算能耗.本文所構(gòu)建的模型只需要通過(guò)⊕操作對(duì)數(shù)據(jù)包進(jìn)行編碼和解碼,與AES相比,此操作只需要少量的能量消耗.
3)節(jié)省計(jì)算資源.本文所構(gòu)建的模型只需要對(duì)數(shù)據(jù)包進(jìn)行異或操作,因此硬件成本可以顯著降低.
4)本文的協(xié)議適用于任何編碼算法.本文所構(gòu)建的模型中,在發(fā)送數(shù)據(jù)包之前,可以使用任何編碼算法對(duì)數(shù)據(jù)包進(jìn)行編碼,而不會(huì)影響到模型的安全性,原因在于編碼算法不會(huì)影響源數(shù)據(jù)包空間信息統(tǒng)計(jì).
5)擁有數(shù)據(jù)包丟失檢測(cè)以及容錯(cuò)能力.以圖4為例,說(shuō)明數(shù)據(jù)包丟失檢測(cè)能力.使用先前的數(shù)據(jù)包對(duì)當(dāng)前數(shù)據(jù)包進(jìn)行編碼后得到g=(000…1),如果傳感器節(jié)點(diǎn)發(fā)送的第3個(gè)數(shù)據(jù)包丟失,那么簇首節(jié)點(diǎn)將使用第2個(gè)數(shù)據(jù)包來(lái)進(jìn)行編碼.因?yàn)榻邮盏降摩?是 h(110),但是所接收?qǐng)?bào)文中的 β是 h(011),從而可以驗(yàn)證數(shù)據(jù)包丟失.簇首節(jié)點(diǎn)沒有通過(guò)驗(yàn)證,將會(huì)要求簇內(nèi)節(jié)點(diǎn)重置通信狀態(tài).
圖4 數(shù)據(jù)包丟失檢測(cè)
以圖5為例,說(shuō)明數(shù)據(jù)包丟失容錯(cuò)能力.同樣假設(shè)使用先前的數(shù)據(jù)包對(duì)當(dāng)前數(shù)據(jù)包進(jìn)行編碼后得到g=(000…1),如果傳感器節(jié)點(diǎn)發(fā)送的第4個(gè)數(shù)據(jù)包丟失,但先前的數(shù)據(jù)包與丟失的數(shù)據(jù)包完全相同,因此簇首節(jié)點(diǎn)仍然可以對(duì)第5個(gè)數(shù)據(jù)包進(jìn)行解碼.顯然丟包不會(huì)影響簇首節(jié)點(diǎn)對(duì)后續(xù)包的解碼工作.
圖5 數(shù)據(jù)包丟失容錯(cuò)
圖6展示了AES算法的生命周期和輕量級(jí)流密碼算法的對(duì)比.從圖中可以看出所設(shè)計(jì)的數(shù)據(jù)包編碼加密算法的生命周期幾乎是AES算法的2倍.
圖6 AES算法系統(tǒng)生命周期和本文模型對(duì)比
本文首先介紹了無(wú)線傳感器網(wǎng)絡(luò)中安全設(shè)計(jì)問(wèn)題面臨的挑戰(zhàn),然后討論了無(wú)線傳感器網(wǎng)絡(luò)的概念和網(wǎng)絡(luò)編碼,此外還提出了一種利用流密碼和網(wǎng)絡(luò)編碼方法的數(shù)據(jù)加密機(jī)制,用于高效安全的數(shù)據(jù)傳輸,通過(guò)仿真實(shí)驗(yàn)以及安全性分析,表明本文構(gòu)建的模型能夠顯著地提高能源利用率,并保證高水平的數(shù)據(jù)安全性.
由于簇首節(jié)點(diǎn)比簇內(nèi)節(jié)點(diǎn)有更多的能源消耗,需要進(jìn)一步設(shè)計(jì)一種新的聚類算法來(lái)平衡能源消耗,延長(zhǎng)整個(gè)系統(tǒng)的壽命,另外還需要提高檢測(cè)簇首節(jié)點(diǎn)的故障和修復(fù)能力.
References)
[1]Estrin D,Govindan R,Heidemann J,et al.Next century challenges:scalable coordination in sensor networks[C]//Proceeding of the fifth Annual International Conference on Mobile Computing and Networks.Seattle,Washington,USA,1999:89-92.
[2]Pottie G,Kaiser W.Wireless integrated network sensors[C]//Communication of the ACM.New York,NY,USA,2000:263-270.
[3]Chen Hao.Efficient compromising resilient authentication schemes for large scale wireless sensor networks[C]//3rd ACM Conference on Wireless Network Security.Hoboken,NJ,USA,2010:99-102.
[4]Qin Ronghus,Sun Qi,You Xing,et al.A key management scheme for manually deployed wireless sensor networks based on dual directional hash chains[C]//2nd International Conference on Intelligent Systems Design and Engineering Applications. Sanya, China,2012:43(5):23-30.
[5]Shwe Hninyu,Adachi Funiyunki.Power efficient adaptive network coding in wireless sensor networks[C]//IEEE InternationalConferenceon Communications.Kyoto,Japan,2011:5963363.
[6]Wieselthier J E,Nguyen G D,Ephremides A.Algorithm for energy-efficient multicasting in static ad hoc wireless networks[J].Mobile Networks and Applications.2001,6(3):251-263.
[7]Singh S,Stepanek J,Raghavendra C.Power-aware broadcasting in mobile ad hoc networks[C]//Proceedings of IEEE PIMRC'99.Osaka,Japan,1999:503-508.
[8]Stallings William.Cryptography and network security:principles and practices[M].Prentice Hall,2003.
[9]West D.Introduction to graph theory[M].2nd ed.Prentice Hall,2001.