車步波 郭改枝
(內蒙古師范大學計算機與信息工程學院, 呼和浩特 010022)
無線傳感器網(wǎng)絡以其低成本、低功耗、分布密集、自組織等特點,在軍事、環(huán)境監(jiān)測、智能交通、醫(yī)療健康等領域有著極為廣泛的應用[1],但其最大的不足是節(jié)點的能耗問題無法解決。針對這個問題,多種路由協(xié)議被成功提出,比如SPIN、LEACH和TEEN。TEEN協(xié)議是分層成簇多跳路由協(xié)議,該協(xié)議是在LEACH協(xié)議的基礎上發(fā)展而來的[2-3]。然而這些協(xié)議雖然考慮了節(jié)點的能耗問題,但對節(jié)點之間通信的安全性缺乏考慮,容易遭受網(wǎng)絡攻擊,如DoS、sybil(女巫)、篡改路由信息。針對出現(xiàn)的安全性問題,提出使用混合型加密來確保通信安全。
TEEN[2-4]是閾值敏感的高能效傳感器網(wǎng)絡協(xié)議。依照應用模式的不同可以將無線傳感器網(wǎng)絡路由協(xié)議分為主動(proactive)和響應(reactive)2種類型。主動型傳感器網(wǎng)絡持續(xù)監(jiān)測周圍的物質現(xiàn)象,并以恒定速率發(fā)送監(jiān)測數(shù)據(jù);而響應型傳感器網(wǎng)絡只是在被觀測變量發(fā)生變化時才傳送數(shù)據(jù)。相比之下,響應型傳感器網(wǎng)絡更適合于對時間敏感的應用[4-6]。TEEN是第1個針對響應型網(wǎng)絡的層次型WSN路由協(xié)議。TEEN的工作方式基本和LEACH相同,只不過在每一次重新選簇成立簇區(qū)域之后,簇首節(jié)點需要向簇內成員廣播3個參數(shù)。
(1) 特征值:用戶所關心數(shù)據(jù)的物理參數(shù)。
(2) 硬門限值(Hard Threshold,簡稱HT):監(jiān)測數(shù)據(jù)特征值的絕對門限值。當節(jié)點監(jiān)測到的特征值超過該門限時,才啟動發(fā)射機向簇首節(jié)點報告該數(shù)值。
(3) 軟門限值(Soft Threshold,簡稱ST):監(jiān)測特征值的小范圍變化門限,從而觸發(fā)節(jié)點啟動發(fā)射機向簇首報告數(shù)據(jù)。
在TEEN中定義了硬門限值和軟門限值,以確定是否需要發(fā)送監(jiān)測數(shù)據(jù)。具體工作過程如下:
(1) 節(jié)點持續(xù)不斷地從外界感應獲取數(shù)據(jù)。
(2) 感應數(shù)據(jù)的特征值第1次超過了硬門限值,節(jié)點就在接著到來的時隙內啟動發(fā)射器發(fā)送該感應數(shù)據(jù)。這個特征值也被存儲到節(jié)點的外部變量中,稱為感應值(Sensed Value,簡稱SV)。
(3) 當且僅當以下2個條件都成立時,節(jié)點才會啟動下一次的數(shù)據(jù)傳送:①當前感應到的特征值大于硬門限值;②當前感應到的特征值與SV的差值大于等于軟門限值。
(4) 每次節(jié)點發(fā)送完當前感應的特征值數(shù)據(jù)后,SV就設置為該值。直至1個周期過去,新的簇形成后,又重新設置硬門限值。其中,硬門限值是根據(jù)用戶對感興趣的數(shù)據(jù)范圍來設定的,這樣做減少了不必要的數(shù)據(jù)傳輸次數(shù)。如果感應到的數(shù)據(jù)和先前的數(shù)據(jù)變化不大,就不用向簇頭節(jié)點報告,這就是設置軟門限值的意義所在,這樣做也降低了不必要的數(shù)據(jù)傳輸次數(shù)。另外,軟門限值可以隨時變更,是否需要變更完全取決于用戶的需要。設置較小的軟門限使得網(wǎng)絡數(shù)據(jù)更加精確,但其代價是增大了傳輸過程的能量消耗,因此在工作的時候要根據(jù)實際情況選擇一個合適的軟門限值。通過調節(jié)軟門限值的大小,可以在監(jiān)測精度和系統(tǒng)能耗之間取得合理的平衡。采用這種方法,可以監(jiān)視一些突發(fā)事件和熱點地區(qū),減小網(wǎng)絡內信息包的數(shù)量。
對于分層成簇路由協(xié)議,每個簇都有一個簇頭CH,簇頭將簇內節(jié)點node發(fā)送的數(shù)據(jù)轉發(fā)給基站BS或上一層簇頭,如圖1所示。因此有3種類型的通信方式:node→CH、CH→BS、CH→CH。為了保證使用TEEN協(xié)議進行數(shù)據(jù)傳輸?shù)陌踩裕虼嗽诖貎仁褂脤ΨQ加密、簇間使用公鑰加密[5-6]。
圖1 分層成簇路由協(xié)議
對于node→CH,使用對稱加密算法。而CH→BS和CH→CH則使用公鑰加密算法。表1所示為加密過程中需要用到的符號。
對稱密鑰生成過程如圖2所示。首先,在節(jié)點部署前為每個節(jié)點插入1個隨機數(shù)S。當節(jié)點部署過程完成后,每個節(jié)點將產(chǎn)生屬于自己的隨機數(shù),如在節(jié)點i處nodei產(chǎn)生ri。而當節(jié)點產(chǎn)生1個隨機數(shù)后,nodei和CHj將建立或交換消息來獲取密鑰,進而進行安全通信。步驟如下:
(1) nodeiand CHj: H(S)=m;
(2) nodei→CHj:EK(IDi,ri)‖IDi,H[EK(IDi,ri)‖IDi];
(3) nodei←CHj:EK(IDj,rj)‖IDj,H[EK(IDj,rj)‖IDj];
(4) nodeiand CHj:Sri×rj。
表1 在描述中用到的符號
在步驟(1)中,每個節(jié)點通過哈希函數(shù)H和插入的隨機數(shù)S計算出1個哈希值m。當簇頭CH選擇成簇時,節(jié)點nodei發(fā)送加入信號給簇頭CHj,請求成為簇內成員節(jié)點,此時節(jié)點nodei也將EK(IDi,ri)‖IDi和其哈希值H[EK(IDi,ri)‖IDi]發(fā)送給簇頭CHj。
對于步驟(2)來說,加上IDi是為了確認消息發(fā)送者的身份,簇頭CHj使用發(fā)送過來的EK(IDj,ri)‖IDi計算哈希值。如果計算出來的哈希值和收到的哈希值一樣,就確認節(jié)點nodei發(fā)送過來的消息準確,否則對消息進行忽略。通過對消息的身份驗證和解密,簇頭CHj能夠得到節(jié)點i的身份信息IDi和隨機數(shù)ri。
在步驟(3)中,簇頭CHj發(fā)送TDMA(Time Division Multiple Address)時隙調度給節(jié)點nodei,同時,CHj也發(fā)送加密后的數(shù)據(jù)EK(IDj,rj)‖IDj和哈希值H[EK(IDj,rj)‖IDj]給節(jié)點nodei。如果收到的消息是準確的,在進行解密后會得到節(jié)點的身份IDj和隨機數(shù)rj。
在經(jīng)過步驟(1)、(2)、(3)后,nodei和CHj就可以交換它們自己產(chǎn)生的隨機數(shù)ri和rj,進而得出對稱密鑰Sri×rj。
圖2 對稱密鑰生成過程
CHk和BS之間密鑰生成過程如圖3所示。
(1) CHk←BS:pk,H(pk);
(2) CHk→BS:Epk(data,IDk)‖IDk,H[Epk(data,IDk)‖IDk]。
當簇頭將成簇情況通知給基站時,基站將會創(chuàng)建公鑰和私鑰密鑰對。在步驟(1)中,為簇頭CHk產(chǎn)生一個公鑰pk和哈希值H(pk),并發(fā)送給CHk。如果CHk計算出來的哈希值和收到的哈希值一樣,當簇頭CHk發(fā)送簇內成員數(shù)據(jù)給基站BS時,公鑰pk將用來給數(shù)據(jù)加密。在步驟(2)中,對數(shù)據(jù)進行加密,簇頭CHk發(fā)送加密后的數(shù)據(jù)Epk(data,IDk)‖IDk和哈希值H[Epk(data,IDk)‖IDk]給基站,基站將加密數(shù)據(jù)的哈希值和收到的哈希值進行比較。如果相同,就使用私鑰qk對加密后的數(shù)據(jù)進行解密Dqk(Epk(data))。
圖3 CHk和BS之間密鑰生成過程
CHk、CHj和BS之間密鑰生成過程如圖4所示。
(1) CHk←BS:pk,H(pk);
(2) CHk→BS:Epk(data,IDk)‖IDk,H[Epk(data,IDk)‖IDk];
(3) CHk←BS:pk,H(pk);
(4) CHk→BS:Epk(data,IDk)‖IDk,H[Epk(data,IDk)‖IDk]。
當簇頭CHj將成簇情況通過簇頭CHk通知給基站BS時,CHk將(CHj‖CHk)發(fā)送給BS。BS為CHj產(chǎn)生密鑰對(pj,qj),為CHk產(chǎn)生密鑰對(pk,qk)。之后L1和其哈希值H(L1)發(fā)送給CHk,其中,L1=(CHk,pk)‖(CHj,pj)。然后CHk計算L1的哈希值,如果計算的哈希值和收到的哈希值相同,CHk就將它在L1中的密鑰pk應用于CHk和BS。CHk也會將L2和其哈希值H(L2)發(fā)送給低層簇頭CHj,其中,L2=(CHj,pj)。同樣地,CHj會比較計算的哈希值和收到的哈希值是否一樣,若一樣就把在L2中的密鑰pj應用于CHj和CHk。當CHj通過CHk給BS發(fā)送數(shù)據(jù)時,會將加密后的數(shù)據(jù)Epj(data, IDj)‖IDj和哈希值H[Epj(data, IDj)‖IDj]發(fā)送出去。在計算和比較哈希值后,CHk會在加密數(shù)據(jù)上加上它的身份信息IDk即Epj(data, IDj)‖IDj‖IDk和哈希值H[Epj(data, IDj)‖ IDj‖IDk]。當BS從CHk收到數(shù)據(jù)后,BS會計算和比較哈希值是否一樣,若一樣,BS會使用私鑰qj對數(shù)據(jù)進行加密和解密。而CHk和BS之間的通信過程如圖3所示。
圖4 CHk、CHj和BS之間密鑰生成過程
使用NS-2進行仿真,對比網(wǎng)絡在遭受攻擊時分別使用了對稱加密、公鑰加密和混合型加密算法后傳輸成功率,如圖5、圖6所示。其中,r為每個節(jié)點在遭受攻擊時的基本傳輸成功率。
圖5 r為0.99時的傳輸成功率
從圖5可以看出,當r為0.99時,3種情況的傳輸成功率都高于97%,并且它們之間的差距比較小。從圖6可以看出,當r降為0.90時,公鑰加密離混合型加密的差別要比對稱加密離混合型加密的差別大,它們的平均傳輸成功率依次為89.9%、87.3%、79.8%。也就是說,隨著r的下降,僅僅使用對稱加密不能夠保證傳輸?shù)陌踩?。雖然隨著r的下降,使用混合型加密算法的成功率也在下降,但是和使用公鑰加密算法的差別相對較小。
圖6 r為0.90時的傳輸成功率
3.2.1 抵御女巫攻擊
對于女巫攻擊,每個惡意節(jié)點在網(wǎng)絡中呈現(xiàn)多個節(jié)點身份,既可盜用其他節(jié)點身份,也可偽造網(wǎng)絡不存在的身份。女巫攻擊可對選舉、資源公平分配等機制構成嚴重威脅。當nodei傳輸數(shù)據(jù)給nodej時,將會使用nodei和nodej的共享密鑰Sri×rj發(fā)送MAC認證。因為共享密鑰只有節(jié)點i和節(jié)點j知道,因此混合型加密算法能夠抵御女巫攻擊。
3.2.2 防止篡改路由信息
每個簇都是由簇頭來管理的,包括路由信息。當簇頭CHj向簇內節(jié)點發(fā)送信息時,簇頭會加上自己的身份信息IDj和哈希值,因此簇內成員在確認哈希值后進而確認消息的準確性,這樣攻擊者就難以篡改路由信息。
鑒于路由協(xié)議TEEN在使用過程中存在的安全問題,提出了使用混合型加密算法應用于TEEN協(xié)議,即簇內使用對稱加密,簇間使用公鑰加密。對node→CH、CH→BS、CH→CH等3種類型消息傳遞方式所使用的加密算法進行了分析,利用NS-2仿真軟件得出仿真結果。結果表明混合型加密算法的TEEN協(xié)議相較于只使用對稱加密算法的TEEN協(xié)議具有更高的傳輸成功率,并且能夠抵御女巫攻擊、防止路由信息篡改。
[1] 劉貞賢,陳祥光,赫永霞.一種新型的傳感器網(wǎng)絡[J].現(xiàn)代電子技術,2013,36(16):18-20.
[2] 麥力軍.基于LEACH協(xié)議的無線傳感器網(wǎng)絡路由算法[D].南京:南京郵電大學,2008:26-28.
[3] 張言嘉.無線傳感器網(wǎng)絡中LEACH算法的研究與改進[D].沈陽:東北大學,2008:17-18.
[4] 任豐原,黃海寧,林闖,等.無線傳感器網(wǎng)絡[J].軟件學報,2003,14(7):1282-1291.
[5] SHI E, PERRIG A. Designing secure sensor networks[J]. IEEE Wireless Communications, 2004, 11(6):38-43.
[6] KARLOF C, WAGNER D. Secure routing in wireless sensor networks: attacks and counter measures[J]. Ad Hoc Networks, 2003, 1(23):293-315.