張 旸,何涇沙
(北京工業(yè)大學(xué) 軟件學(xué)院,北京100124)
無線傳感器網(wǎng)絡(luò)[1]是一種由大量帶有無線通信模塊的傳感器節(jié)點,通過相互轉(zhuǎn)發(fā)數(shù)據(jù)實現(xiàn)的多跳網(wǎng)絡(luò),該網(wǎng)絡(luò)具有自組織、抗毀性強等特點,已經(jīng)在軍事和民用的多個領(lǐng)域進行了應(yīng)用。由于無線傳感器節(jié)點在開放的環(huán)境中進行無線通信,并且具有攜帶能量有限,存儲能力較低等特點,因此容易遭受惡意攻擊[2-3]。為防范各個層面的惡意攻擊,建立有效的安全機制十分重要,而實現(xiàn)傳感器節(jié)點之間有效的身份認證,則是一切安全技術(shù)的前提[4]。本文針對多級分簇的無線傳感器網(wǎng)絡(luò)拓撲結(jié)構(gòu),提出一種新的身份認證機制,該機制能夠有效地為多級分簇網(wǎng)路中的傳感器節(jié)點提供身份認證,并且相比傳統(tǒng)的點到點認證機制具有更小的能量消耗和內(nèi)存要求。
分簇結(jié)構(gòu)[5]是一種特殊的無線傳感器網(wǎng)絡(luò)拓撲結(jié)構(gòu),通過把一個區(qū)域的傳感器節(jié)點劃分成許多個簇(cluster),并在簇中選取簇頭(cluster header)節(jié)點。簇頭負責(zé)簇內(nèi)節(jié)點的管理和數(shù)據(jù)轉(zhuǎn)發(fā),普通節(jié)點通過簇頭向外部傳輸數(shù)據(jù)。
在無線傳感器網(wǎng)絡(luò)中,將網(wǎng)絡(luò)中的節(jié)點劃分成簇,主要有以下優(yōu)點:
(1)不同于平面拓撲結(jié)構(gòu)中所有節(jié)點需要偵聽數(shù)據(jù),導(dǎo)致無用的數(shù)據(jù)偵聽成了網(wǎng)絡(luò)壽命的最大殺手,在分簇拓撲結(jié)構(gòu)中,普通節(jié)點可以有計劃地關(guān)閉通信模塊,從而大量減少自身通信能量消耗;
(2)由于簇內(nèi)節(jié)點往往是空間上相鄰的,多個節(jié)點采集到的數(shù)據(jù)具有相關(guān)性,因此簇頭節(jié)點可以對簇內(nèi)采集到的數(shù)據(jù)進行融合處理,從而大量減少總通信量;
(3)簇內(nèi)節(jié)點輪流擔(dān)任簇頭,從而使得全網(wǎng)節(jié)點負載均衡,避免了平面路由中主干節(jié)點 “死亡”較快的情況;
多級分簇結(jié)構(gòu)[6]是對分簇結(jié)構(gòu)的擴展,是指在分簇拓撲結(jié)構(gòu)的基礎(chǔ)上,簇頭之間再次成簇并產(chǎn)生新的簇頭,并依此方式一級級迭代直到基站或匯聚(Sink)節(jié)點。網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。

圖1 多級分簇?zé)o線傳感器網(wǎng)絡(luò)模型
多級分簇結(jié)構(gòu)的出現(xiàn)是為了解決大規(guī)模部署節(jié)點時,簇頭和基站間直接通信所導(dǎo)致巨大能量消耗的問題[7]。通過將節(jié)點分成多級的簇結(jié)構(gòu),不但可以降低全網(wǎng)的能量消耗,同時極大增強了網(wǎng)絡(luò)的可擴展性。由于多級分簇拓撲結(jié)構(gòu)具有以上優(yōu)良特性,因此該結(jié)構(gòu)在無線傳感器網(wǎng)絡(luò)大規(guī)模部署的現(xiàn)實需求中具有十分重要的應(yīng)用價值和研究價值。
該網(wǎng)絡(luò)具有如下特點:
(1)網(wǎng)絡(luò)拓撲為多叉樹結(jié)構(gòu),在這種結(jié)構(gòu)中,所有節(jié)點都扮演者根節(jié)點和成員節(jié)點的屬性。
(2)在該多叉樹網(wǎng)絡(luò)結(jié)構(gòu)中,基站為整個網(wǎng)絡(luò)的根節(jié)點,底層普通節(jié)點視為沒有成員節(jié)點的根節(jié)點。
(3)成員節(jié)點只能通過根節(jié)點與外界交換數(shù)據(jù),屬于同一個根節(jié)點的成員節(jié)點內(nèi)部可以相互交換數(shù)據(jù)。
網(wǎng)絡(luò)工作的過程為:各層節(jié)點采集到的數(shù)據(jù)逐級向上匯聚至基站,以及由基站下發(fā)的指令逐級向下分散至目標(biāo)節(jié)點。
關(guān)于無線傳感器網(wǎng)絡(luò)下的身份認證,各國學(xué)者提出了多種算法及技術(shù)手段[8-10],主要圍繞對稱密碼,非對稱密碼等進行算法方面的研究和改進,多是研究相鄰節(jié)點間的相互認證方式。本文針對多級分簇拓撲結(jié)構(gòu)提出一種以基站為核心的間接身份認證機制,該機制拋開了傳統(tǒng)點到點直接認證的局限,從多級分簇拓撲結(jié)構(gòu)的特點入手進行全網(wǎng)性的身份認證機制設(shè)計。該機制可用于在分簇結(jié)構(gòu)初始化階段建立認證密鑰,局部簇頭的調(diào)整等網(wǎng)絡(luò)拓撲變化過程中分發(fā)認證密鑰。
針對多級分簇?zé)o線傳感器網(wǎng)絡(luò)的特點,本文提出的身份認證技術(shù)的設(shè)計原則如下:
(1)以基站為核心,由基站作為身份信息的授予者和仲裁者。由于在多級分簇?zé)o線傳感器網(wǎng)絡(luò)中,基站如果癱瘓則其余節(jié)點便無法正常工作,因此把基站視為可信者是合理的。
(2)以節(jié)點預(yù)分配的主密鑰作為身份識別的依據(jù),由基站掌握全網(wǎng)的主密鑰,對節(jié)點身份判定以建立信任關(guān)系,并傳遞這種信任關(guān)系至其余節(jié)點。
(3)網(wǎng)絡(luò)中的所有節(jié)點,只需要與其簇頭節(jié)點進行相互的身份認證即可。除此之外的點到點認證都是不必要的,這是因為只要節(jié)點與簇頭建立了相互的身份認證,便可由簇頭節(jié)點把對該節(jié)點的信任傳遞給其余成員節(jié)點。而由于網(wǎng)絡(luò)是遞歸的樹狀結(jié)構(gòu),因此這一過程能實現(xiàn)對整個網(wǎng)絡(luò)中所有節(jié)點的全覆蓋。
(4)兩個節(jié)點間的身份認證通過間接的方式進行,基于對基站的信任實現(xiàn)。由于對稱密鑰不具備非對稱密鑰的可直接識別的特點,因此兩個節(jié)點相互的身份信任需要通過可信的第三方來進行傳導(dǎo)。
節(jié)點密鑰預(yù)分配過程如圖2所示,由基站為所有節(jié)點建立認證密鑰并分發(fā)至各節(jié)點中,基站處存儲所有節(jié)點的認證密鑰。

圖2 密鑰預(yù)分配
具體步驟如下:
(1)基站讀取節(jié)點的id,為保證不同節(jié)點的認證密鑰沒有關(guān)聯(lián)性,使用隨機值產(chǎn)生器Rand產(chǎn)生一個隨機密鑰,作為Kid。
(2)基站保存id與Kid的對應(yīng)關(guān)系:id=>Kid,針對id建立B-Tree索引,以方便快速根據(jù)id查找Kid。
(3)基站將Kid寫入節(jié)點中,此時節(jié)點保存了數(shù)據(jù) {id| Kid}。
以上步驟在所有節(jié)點中進行后,則每個節(jié)點擁有了一個獨特的且相互之間沒有關(guān)聯(lián)的密鑰,服務(wù)器掌握所有節(jié)點的密鑰信息。
2.3.1 原始簇的形成
首先,在節(jié)點首次部署或全網(wǎng)周期性重新分簇時,通過傳統(tǒng)非安全分簇協(xié)議(如LEACH等)形成底層簇并產(chǎn)生簇頭,之后通過在簇頭節(jié)點間繼續(xù)成簇,以形成多級分簇結(jié)構(gòu)。此時,網(wǎng)絡(luò)已通過高效的分簇算法形成原始的拓撲結(jié)構(gòu),但節(jié)點間并沒有進行安全性驗證,且相互是明文傳輸數(shù)據(jù),這個時候形成的多級簇稱之為原始簇。
2.3.2 統(tǒng)一身份認證過程
在該階段,原始的多級分簇網(wǎng)絡(luò)拓撲結(jié)構(gòu)已經(jīng)形成,節(jié)點間的通信還在以非安全形式進行。此時,由底層的簇內(nèi)節(jié)點向上逐層發(fā)起認證請求,各級簇頭依次匯集認證請求信息并壓縮與融合后向上級匯集,直到認證請求包匯集至基站。基站通過各節(jié)點的認證密鑰對節(jié)點身份進行識別,并將識別結(jié)果逐級下發(fā),各級簇頭節(jié)點通過反饋信息識別簇內(nèi)節(jié)點身份,并繼續(xù)向合法節(jié)點下發(fā)來自基站的反饋信息。下級節(jié)點收到反饋信息后,檢查其簇頭節(jié)點的合法性,之后檢查下級節(jié)點并下發(fā)反饋信息,該過程重復(fù)進行,直到底層簇內(nèi)節(jié)點時停止。整個過程上傳和下發(fā)的數(shù)據(jù)協(xié)議格式如下

該階段的具體步驟如下:
(1)由底層的普通節(jié)點向簇頭節(jié)點匯聚認證請求,請求的具體數(shù)據(jù)內(nèi)容如下:
id:{id}
該節(jié)點的唯一標(biāo)識id,該部分數(shù)據(jù)為明文形式。
Certificateid:{P(kid){id|rand|hash(Data)}}
該部分把節(jié)點id,一個隨機值rand(該值需要記錄下來以校驗與反饋信息的一致性),和數(shù)據(jù)域的哈希值hash(Data)連接在一起后,用節(jié)點的密鑰Kid加密。
Data:{}
最底層的簇內(nèi)節(jié)點,該部分內(nèi)容為空。
(2)簇頭節(jié)點匯集所有來自簇內(nèi)節(jié)點的認證請求后,產(chǎn)生自己的認證請求,并把簇內(nèi)節(jié)點的認證請求壓縮后存在數(shù)據(jù)的Data部分,計算hash(Data)并生成自己的認證請求。之后簇頭節(jié)點把數(shù)據(jù)繼續(xù)向上一級簇頭發(fā)送,同時緩存該數(shù)據(jù)直到收到合法的反饋消息。該過程在各級簇頭節(jié)點進行,直到數(shù)據(jù)到達基站。
簇頭發(fā)送的數(shù)據(jù)中,id和Certificateid部分與普通節(jié)點的相同,Data部分為:
Data:{Compress(List(sub data))}
遞歸的結(jié)構(gòu),存儲壓縮后的數(shù)據(jù),該部分內(nèi)容解壓縮后為來自下層數(shù)據(jù)的認證請求。
(3)基站獲取的認證請求經(jīng)逐級解壓縮后為圖3所示的樹狀結(jié)構(gòu)。

圖3 認證請求的樹狀結(jié)構(gòu)
基站遍歷該樹中的所有節(jié)點,并對其進行身份認證,具體流程如下:
(1)根據(jù)節(jié)點id在密鑰庫中查詢其密鑰Kid。
(2)使用Kid解密Certificateid數(shù)據(jù),獲得:{id|rand| hash(Data)}
(3)檢查數(shù)據(jù)中的id與節(jié)點聲稱的id是否一致,如果一致則該節(jié)點通過身份認證,否則無法通過。
(4)如果該節(jié)點通過身份認證,對其Data域計算哈希值,并與上述的hash(Data)做比較,如果一致說明下一層節(jié)點的數(shù)據(jù)是完整的,則解壓縮Data域,并對其中節(jié)點重復(fù)認證步驟。
(5)基站根據(jù)通過身份認證的節(jié)點的信息,生成反饋消息,數(shù)據(jù)內(nèi)容如下:
id:{id}
目標(biāo)節(jié)點的唯一標(biāo)識id,該部分數(shù)據(jù)為明文形式。
Certificateid:
{P(Kid){id | copyrand|(id,Kid)Header|[id,Kid]Members|hash(Data)}}
該部分把節(jié)點id,認證請求中隨機值的拷貝copyrand,簇頭級與簇頭通信密鑰(id,Kid)Header,下級簇內(nèi)各節(jié)點的密鑰[id,Kid]Members和數(shù)據(jù)域的哈希值hash(Data)連接在一起后,用目標(biāo)節(jié)點的密鑰Kid加密。
Data:{Compress(List(sub data))}
遞歸的結(jié)構(gòu),存儲壓縮后的數(shù)據(jù),該部分內(nèi)容解壓縮后為反饋給目標(biāo)節(jié)點下層各節(jié)點的響應(yīng)數(shù)據(jù)。
(4)各級簇頭節(jié)點接收到來自基站的反饋數(shù)據(jù)后,執(zhí)行以下步驟:
1)若超出預(yù)設(shè)的超時時間Ttime-out沒有獲得反饋,則跳至步驟4),若收到反饋數(shù)據(jù),則使用預(yù)存的密鑰Kid解密Certificateid數(shù)據(jù),獲得
{id| copyrand|(id,Kid)Header|[id,Kid]Members|hash(Data)}
2)檢查數(shù)據(jù)中的id與自身id是否一致,確認消息合法性;判斷copyrand與上次發(fā)送請求時的rand值是否一致,確定本次反饋是針對上次請求的;檢查接受反饋的簇頭節(jié)點id與idHeader是否一致,防止其它節(jié)點偽裝;記錄與簇頭的通信密鑰KHeader,從而可以與簇頭安全通信;記錄子簇的通信組密鑰[id,Kid]Members,從而可以與即將身份認證的下級簇的節(jié)點安全通信;計算Data部分的哈希值并和數(shù)據(jù)中的hash(Data)做比較以檢查運載數(shù)據(jù)的完整性。若以上步驟未全部通過,則跳至步驟4)。
3)解壓縮Data部分,獲得List(sub data),依次向其中的各下級節(jié)點發(fā)送對應(yīng)的數(shù)據(jù)sub data。
4)如果簇頭身份不可信,則該節(jié)點進入等待局部再認證階段。等待時間為一經(jīng)驗值Ttime-out,該值需要結(jié)合節(jié)點的計算能力、通信帶寬、節(jié)點休眠時間、服務(wù)器計算能力等實際情況得出,且每下一級的等待時間Ttime-out不小于上一級 Ttime-out的兩倍。
由于sub data中的節(jié)點均是通過了服務(wù)器的認證的,因此此時已完成了該節(jié)點對其簇內(nèi)節(jié)點的身份認證。同時,通過校驗加密信息中的idHeader,因而完成了對簇頭節(jié)點的身份認證。也即是說,當(dāng)反饋消息順利經(jīng)過一個節(jié)點時,該節(jié)點就同時完成了對直接上級和直接下級節(jié)點的單向身份認證。該過程是從上級往下級依次進行的,因此:每個反饋消息驗證成功的節(jié)點,都完成了對上級節(jié)點的雙向身份認證;反饋消息驗證失敗的節(jié)點,表示上級簇頭身份不可信;無法收到反饋消息的節(jié)點,表示從基站到該節(jié)點的通信鏈路上存在認證失敗的節(jié)點。
2.3.3 局部再認證過程
當(dāng)節(jié)點在Ttime-out時間內(nèi)無法獲得反饋消息,則啟動局部再認證流程,具體為:
(1)重新進行本級簇的簇頭節(jié)點的選舉;
(2)將緩存的認證信息Compress(List(sub data))再次發(fā)給新簇頭節(jié)點,之后重新進行2.2–2.5的認證流程。
(3)由于每一級的超時時間至少大于上一級的兩倍,因此新的簇頭如果認證通過,則不影響整體認證流程的進行;多次重復(fù)仍然失敗時,則下一級節(jié)點將發(fā)起簇頭選舉,產(chǎn)生新的簇頭和上一級簇頭,并重復(fù)認證流程;以此類推,重建所有受到影響的層級的簇。
經(jīng)過局部再認證階段,簇頭中的非法節(jié)點被隔離,避免了因中間層級的簇頭不合法導(dǎo)致大范圍節(jié)點認證的失敗。
針對傳統(tǒng)點到點的雙向認證方式,本文提出的方法通過基站作為媒介傳遞身份信任關(guān)系,可以有效地減少能量消耗和內(nèi)存空間需求。下面將以傳統(tǒng)點到點認證機制和本文提出的間接認證機制作對比,分析該機制的特點。
傳統(tǒng)的點到點機制以直接進行雙向身份認證的方式進行,在多級分簇?zé)o線傳感器網(wǎng)絡(luò)中,其實現(xiàn)步驟如圖4所示。
為實現(xiàn)這種方式的點到點驗證,有基于對稱加密算法和基于非對稱加密算法兩種方式,其中對稱加密算法要求建立預(yù)共享密鑰池,存在容易泄露認證信息和難以擴展的缺點,因此基于非對稱加密算法逐漸成為研究的主要方向。
本文提出的認證機制過程如圖5所示。


由于采用了獨立的預(yù)存認證密鑰,該機制所有認證過程均使用對稱密鑰實現(xiàn),同時由于是聯(lián)機認證,因此沒有泄露認證信息和失去可擴展性的問題。
在多級分簇網(wǎng)絡(luò)中,使用點到點的基于對稱密碼的認證、使用點到點的基于非對稱密碼的認證以及本文提出的間接認證機制的對比關(guān)系見表1。
由此可見,本文提出的方法同時具有傳統(tǒng)基于對稱密鑰的計算量小和基于非對稱密鑰算法的安全性和擴展性的優(yōu)點,不足之處是高級別的簇頭在簇形成階段要承擔(dān)一定的通信量,但是由于該方法只在成簇階段使用,因此通信增加對能量的消耗有限。

表1 多級分簇?zé)o線傳感器網(wǎng)絡(luò)中認證機制特點對比
本文提出了一種在多級分簇?zé)o線傳感器網(wǎng)絡(luò)下的身份認證機制,該機制在多級分簇網(wǎng)絡(luò)的形成階段,通過基站的參與完成了各相關(guān)節(jié)點的相互身份認證。由于將身份認證放在網(wǎng)絡(luò)初始化階段完成,因而其節(jié)點間身份可信的效果能完全覆蓋網(wǎng)絡(luò)形成后的所有工作過程,從而避免了在具體業(yè)務(wù)中承擔(dān)身份認證的開銷。同時,該機制以逐層匯聚和分發(fā)的方式進行,可高效地進行數(shù)據(jù)的壓縮傳輸,從而大幅減少了通信開銷。在未來的工作中,需要針對本文的機制,找到適合的數(shù)據(jù)壓縮方法,減少高層簇頭節(jié)點的通信負載,同時由于能量開銷主要集中在簇形成階段,需要找到局部的簇調(diào)整和認證的辦法,盡量減少全網(wǎng)規(guī)模的簇重建和身份認證過程。
[1]ZHU Zhengjian,TAN Qingping,ZHU Peidong.Research on wireless sensor network security:A survey[J].Computer Engineering and Science,2008,30(4):101-105(in Chinese).[朱政堅,譚慶平,朱培棟.無線傳感器網(wǎng)絡(luò)安全研究綜述[J].計算機工程與科學(xué),2008,30(4):101-105.]
[2]WU Fan.Research on wireless sensor network security[D].Nanchang:Nanchang University,2007(in Chinese).[范武.無線傳感器網(wǎng)絡(luò)安全研究[D].南昌:南昌大學(xué),2007.]
[3]PEI Qingqi,SHEN Yulong,MA Jianfeng.Survey on wireless sensor network technology[J].Journal of China Institute of Communications,2007,28(8):113-122(in Chinese).[裴慶祺,沈玉龍,馬建峰.無線傳感器網(wǎng)絡(luò)安全技術(shù)綜述[J].通信學(xué)報,2007,28(8):113-122.]
[4]Chen X Q,Makki K,Yen K,et al.Sensor network security:A survey[J].IEEE Communications Surveys and Tutorials,2009,11(2):52-73.
[5]ZHOU Wei.Research on key technologies of clustering wireless sensor networks[D].Shanghai:Shanghai University,2011(in Chinese).[周偉.基于分簇的無線傳感器網(wǎng)絡(luò)關(guān)鍵技術(shù)研究[D].上海:上海大學(xué),2011.]
[6]LIU Shugang,LIU Hongli.Energy-efficient Multi-layer clustering algorithm in wireless sensor networks[J].Application Research of Computers,2011,28(6):2257-2260(in Chinese).[劉述鋼,劉宏立.無線傳感器網(wǎng)絡(luò)中能量有效的多層分簇算法[J].計算機應(yīng)用研究,2011,28(6):2257-2260.]
[7]JIA Yongcan,LIU Yuhua,XU Kaihua,et al.LEACH-based multi-layer clustering routing scheme in WSN[J].Computer Engineering,2009,35(11):74-76(in Chinese).[賈永燦,劉玉華,許凱華,等.WSN中基于LEACH的多層分簇路由方案[J].計算機工程,2009,35(11):74-76.]
[8]MA Haisong,LIU Yijun,ZHU Yuhai.Research on wireless sensor network security authentication[J].Computer Knowledge and Technology,2011,7(12):2791-2792(in Chinese).[馬海松,劉怡俊,朱昱海.無線傳感器網(wǎng)絡(luò)安全認證的研究[J].電腦知識與技術(shù),2011,7(12):2791-2792.]
[9]ZENG Yingzhi,SU Jinshu,XIA Yan,et al.Survey on security authentication technology of wireless sensor networks[J].Computer Applications and Software,2009,26(3):55-58(in Chinese).[曾迎之,蘇金樹,夏艷,等.無線傳感器網(wǎng)絡(luò)安全認證技術(shù)綜述[J].計算機應(yīng)用與軟件,2009,26(3):55-58.]
[10]ZHU Lei.Research on certain key technologies of wireless sensor network security authentication[D].Zhengzhou:PLA Information Engineering University,2010(in Chinese).[朱磊.無線傳感器網(wǎng)絡(luò)安全認證若干關(guān)鍵技術(shù)研究[D].鄭州:解放軍信息工程大學(xué),2010.]