石家莊郵電職業(yè)技術(shù)學(xué)院 張 靜 馬紅靜 史永琳 何柳青
無線傳感網(wǎng)絡(luò)(WSNs)是物聯(lián)網(wǎng)的重要組成部分,深入應(yīng)用于智慧家居、智能農(nóng)業(yè)、環(huán)境監(jiān)測等領(lǐng)域。WSNs由大量傳感器節(jié)點(diǎn)組成,這些傳感器節(jié)點(diǎn)共同采集網(wǎng)絡(luò)區(qū)域信息,并允許外部用戶訪問節(jié)點(diǎn),獲取實(shí)時數(shù)據(jù)進(jìn)行操控。這些數(shù)據(jù)通過傳感網(wǎng)或公共網(wǎng)絡(luò)傳輸,且傳感器節(jié)點(diǎn)大部分部署在無人看管環(huán)境中,這使得WSNs容易受到攻擊。因此,提供安全的身份認(rèn)證與密鑰協(xié)商協(xié)議以驗證用戶身份并加密通信內(nèi)容對保障網(wǎng)絡(luò)安全至關(guān)重要。
身份認(rèn)證是無線傳感網(wǎng)絡(luò)安全中的重點(diǎn)問題,一般分為節(jié)點(diǎn)身份認(rèn)證和信息認(rèn)證兩種。身份認(rèn)證是接入控制中心的核心環(huán)節(jié),網(wǎng)絡(luò)中心根據(jù)某種協(xié)議驗證節(jié)點(diǎn)身份后,才能做出與節(jié)點(diǎn)身份對應(yīng)的操作。
無線傳感器節(jié)點(diǎn)入網(wǎng)到相關(guān)區(qū)域之后,要和周圍節(jié)點(diǎn)或者匯聚節(jié)點(diǎn)或基站之間建立合法身份認(rèn)證,為節(jié)點(diǎn)接入自組織網(wǎng)絡(luò)提供準(zhǔn)入“鑰匙”。隨著偽裝節(jié)點(diǎn)被識破、新節(jié)點(diǎn)加入網(wǎng)絡(luò)等情況的出現(xiàn),需要將一些節(jié)點(diǎn)從列表中刪除。其次,來自匯聚節(jié)點(diǎn)或者網(wǎng)關(guān)的控制信息,往往需要節(jié)點(diǎn)間的多跳轉(zhuǎn)發(fā),這就必須引入認(rèn)證機(jī)制對控制信息發(fā)布源進(jìn)行驗證身份,確保信息的完整性、可靠性,同時,也為了防止“偽節(jié)點(diǎn)”對信息進(jìn)行非法篡改。
一個典型的WSNs身份認(rèn)證協(xié)議一般包含3個層面網(wǎng)絡(luò)架構(gòu):一個或者多個網(wǎng)關(guān),一組匯聚節(jié)點(diǎn),以及大量的傳感器節(jié)點(diǎn)。因為傳感器節(jié)點(diǎn)受限于自身的計算能力和存儲能力,而且,一般應(yīng)用在安全需求較高的環(huán)境中,但是密鑰和協(xié)議都需要輕量級的,能夠抵抗外部攻擊,并且希望具備前向安全性等特性。通常來說,WSNs環(huán)境的身份認(rèn)證流程有以下幾步:
(1)匯聚節(jié)點(diǎn)及傳感器節(jié)點(diǎn)在網(wǎng)關(guān)注冊,成為合法參與方。
(2)當(dāng)網(wǎng)關(guān)想訪問某傳感器節(jié)點(diǎn)的實(shí)時數(shù)據(jù)時,需先向匯聚節(jié)點(diǎn)發(fā)起訪問請求。
(3)傳感器節(jié)點(diǎn)實(shí)時采集數(shù)據(jù),完成之后發(fā)送給匯聚節(jié)點(diǎn),匯聚節(jié)點(diǎn)匯總多個傳感器節(jié)點(diǎn)數(shù)據(jù)后,打包發(fā)送給網(wǎng)關(guān)。
(4)如果請求的傳感器節(jié)點(diǎn)處于本地網(wǎng)關(guān)覆蓋中,網(wǎng)關(guān)對匯聚節(jié)點(diǎn)完成認(rèn)證后,對傳感器節(jié)點(diǎn)進(jìn)行認(rèn)證;如果訪問的傳感器節(jié)點(diǎn)處于其他網(wǎng)關(guān)覆蓋范圍,則向外部匯聚節(jié)點(diǎn)發(fā)起訪問請求,雙向認(rèn)證后,由外部匯聚節(jié)點(diǎn)傳達(dá)用戶請求。
(5)本地網(wǎng)關(guān)和匯聚節(jié)點(diǎn)與傳感器節(jié)點(diǎn)需要完成認(rèn)證,認(rèn)證結(jié)束后,進(jìn)行密鑰協(xié)商,確定一個會話密鑰來保護(hù)數(shù)據(jù)傳輸過程。

圖1 網(wǎng)絡(luò)體系結(jié)構(gòu)
通過認(rèn)證過程,可以看出不管是注冊、登錄以及數(shù)據(jù)傳輸,都存在一定的風(fēng)險。本文通過研究無線傳感網(wǎng)中的身份認(rèn)證方法,發(fā)現(xiàn)可以將橢圓加密算法應(yīng)用到無線傳感網(wǎng)認(rèn)證過程中,從而保證在無線環(huán)境下的安全傳送。跟之前胡認(rèn)證過程比較可以看出,橢圓加密算法讓原本明文發(fā)送的不安全性得到改善,并且可以阻擋重放攻擊,協(xié)商秘鑰加密發(fā)送信息也保證通信及用戶的安全。
橢圓曲線密碼學(xué)ECC屬于非對稱密碼學(xué)的,其私鑰的計算公式如下:
(1)私鑰是一個隨機(jī)數(shù)d,取值范圍在1……n-1,其中n是子群的階。
(2)公鑰是點(diǎn)H=dG,G是子群的基點(diǎn)。
如果知道私鑰d和橢圓曲線參數(shù)G,求公鑰H是很容易的,但是只知道公鑰H和橢圓曲線參數(shù)G,求解私鑰d是非常困難的,需要解決離散對數(shù)難題,橢圓曲線的安全性保證有賴于此。
橢圓加密算法主體包括用戶A和B,雙方通信過程如下:
(1)節(jié)點(diǎn)根據(jù)橢圓曲線參數(shù)確定Ep(a,b),并在橢圓曲線上取一點(diǎn),作為基點(diǎn)G。
(2)節(jié)點(diǎn)隨機(jī)選擇一個私有密鑰k,并通過公式K=kG生成公開密鑰K。
(3)節(jié)點(diǎn)將橢圓曲線相關(guān)信息Ep(a,b)以及K,G傳給網(wǎng)關(guān)。
(4)網(wǎng)關(guān)接到信息后,將待傳輸信息編碼到橢圓曲線Ep上的一點(diǎn)N,根據(jù)信息隨機(jī)產(chǎn)生整數(shù)r。在這里編碼方法很多,就不作討論。
(5)網(wǎng)關(guān)計算點(diǎn)C1=N+rK;C2=rG。
(6)網(wǎng)關(guān)將C1、C2傳給節(jié)點(diǎn)。
(7)節(jié)點(diǎn)接到信息后,進(jìn)行C1-kC2的運(yùn)算,結(jié)果可以得到N。
可以獲得原始信息,是因為C1-kC2=N+rK-k(rG)=N+rKr(kG)=N,再對這個點(diǎn)N進(jìn)行解密就可以得到原始發(fā)送數(shù)據(jù)。
整個加密過程中,如果有偷窺者S,他也只能看到Ep(a,b)、K、G、C1、C2,而通過K、G求k或通過C2、G求r都是相對困難的。因此,任何偷窺者都無法得到節(jié)點(diǎn)和網(wǎng)關(guān)間傳送的任何信息。
傳感器節(jié)點(diǎn)是通過匯聚節(jié)點(diǎn),將數(shù)據(jù)傳給網(wǎng)關(guān)的。因此在C正式加入網(wǎng)絡(luò)之前,先要獲得協(xié)調(diào)器節(jié)點(diǎn)認(rèn)證密鑰。
網(wǎng)絡(luò)初始化過程如下:
(1)符合協(xié)議要求的匯聚節(jié)點(diǎn)連接網(wǎng)關(guān),在此認(rèn)為匯聚節(jié)點(diǎn)已經(jīng)連接網(wǎng)關(guān)。
(2)匯聚節(jié)點(diǎn)主要通過網(wǎng)關(guān)獲取對方的證書進(jìn)行身份確認(rèn),身份確認(rèn)后再進(jìn)行密鑰協(xié)商,這樣雙方就可以獲得共享密鑰對數(shù)據(jù)進(jìn)行加密傳送。
(3)匯聚節(jié)點(diǎn)會向周圍發(fā)送信息,等待傳感器節(jié)點(diǎn)的加入。(4)普通傳感器節(jié)點(diǎn)根據(jù)匯聚節(jié)點(diǎn)信號強(qiáng)弱,選擇信號強(qiáng)度高的,給匯聚節(jié)點(diǎn)發(fā)送包含節(jié)點(diǎn)自身ID號的信息。
(5)匯聚節(jié)點(diǎn)收到相關(guān)傳感器節(jié)點(diǎn)發(fā)送的信息后,將這些信息加上自己的ID號加密發(fā)送給網(wǎng)關(guān)。
(6)網(wǎng)關(guān)收到信息后,生成該傳感器節(jié)點(diǎn)的證書,并用這個節(jié)點(diǎn)之前預(yù)留的認(rèn)證密鑰加密后發(fā)送給匯聚節(jié)點(diǎn)。
(7)匯聚節(jié)點(diǎn)收到加密信息后,解密獲得傳感器節(jié)點(diǎn)的證書,并用預(yù)置胡密鑰解密獲得傳感器節(jié)點(diǎn)的認(rèn)證密鑰,并用認(rèn)證密鑰加密匯聚節(jié)點(diǎn)的認(rèn)證密鑰發(fā)送給傳感器節(jié)點(diǎn)。
(8)傳感器節(jié)點(diǎn)C收到消息后用自身的認(rèn)證密鑰KC解密,從而獲得自己的CERT和匯聚節(jié)點(diǎn)之間的認(rèn)證密鑰KB。
ECDHE密鑰協(xié)商算法基于橢圓曲線密碼系統(tǒng)(ECC)和DHE算法(Diffie-Hellman Ephemeral,短暫臨時的DH算法),使用較短的密鑰長度可提供與RSA或DH算法同等的安全等級,密鑰長度有160~256位比特的橢圓曲線算法與密鑰長度1024~3072位比特的非ECC算法安全強(qiáng)度相同。
傳感器節(jié)點(diǎn)C獲得了網(wǎng)關(guān)和匯聚節(jié)點(diǎn)的認(rèn)證密鑰,網(wǎng)絡(luò)正常運(yùn)行,節(jié)點(diǎn)和網(wǎng)關(guān)之間進(jìn)行ECDHE密鑰協(xié)商之前雙方要有共同的共享參數(shù),即必須選擇相同的橢圓曲線方程、大素數(shù)p、生成源G。
密鑰協(xié)商過程如下:
(1)傳感器節(jié)點(diǎn)C隨機(jī)產(chǎn)生一個數(shù)Rc,并用KC加密,生成消息(Rc||CERT(C))KC,之后選擇一個比橢圓曲線階小的隨機(jī)數(shù)rc作為私鑰,計算公鑰Hc=rcG,將{Hc|(Rc||CERT(C))KC}發(fā)送給匯聚節(jié)點(diǎn)。
(2)匯聚節(jié)點(diǎn)B收到后,首先用KC解密,解密后根據(jù)證書的正確與否,驗證確定消息的完整性。如果解密不成功,則說明傳感器節(jié)點(diǎn)證書失效或者無效,中止通信;若消息完整,則進(jìn)一步核驗該節(jié)點(diǎn)的身份是否合法,如有ID號合法,則保存該數(shù)據(jù)包。至此,B就獲得了C的公鑰。
然后,B也選擇一個比橢圓曲線階小的隨機(jī)數(shù)rb作為私鑰,計算公鑰HB=rbG,并將{HB|(Rc'||CERT(B))KB}發(fā)送給節(jié)點(diǎn)C。
(3)C收到后計算共享密鑰S=rcHB。進(jìn)一步得到S=rcHB=rcrbG。
(4)B收到后計算共享密鑰S′=rbHc。進(jìn)一步得到S′=rbHc=rbrcG。
(5)可以看出,S=S′,密鑰協(xié)商過程完成。
(1)在認(rèn)證協(xié)議中,所有信息都會進(jìn)行加密處理,傳輸過程中全程保證通信雙方的信息機(jī)密性和完整性。
(2)節(jié)點(diǎn)發(fā)送的信息中采用隨機(jī)數(shù)作為私鑰,可以保證每次通信使用的共享密鑰都是不同的。攻擊者即使破解獲取了私鑰,也只是影響本次通信,不會獲取之前通信的內(nèi)容,這樣的特征保證了前向安全性。而且更安全的是,協(xié)商出會話密鑰后,雙方私鑰都可丟棄,進(jìn)一步提升了安全性,
(3)節(jié)點(diǎn)和網(wǎng)關(guān)密鑰協(xié)商過程中,用到的是隨機(jī)數(shù)作為私鑰,如果兩次或多次收到的隨機(jī)數(shù)完全一致,便可判斷收到的數(shù)據(jù)的為偽造數(shù)據(jù),這樣可以防止重放攻擊。
(4)傳感器網(wǎng)絡(luò)中常見的攻擊是:一是“偽節(jié)點(diǎn)”攻擊;二是截取信息,分析數(shù)據(jù),獲取重要信息。但是本認(rèn)證協(xié)議采用的是基于橢圓曲線的加密算法,密鑰位數(shù)相同的情況下,安全性優(yōu)于RSA算法。更好的保證系統(tǒng)安全,即使公鑰泄漏,攻擊者也無法獲取私鑰,更無法獲取共享密鑰,安全性大大提高了。
為解決無線傳感網(wǎng)中身份認(rèn)證的問題,本文提出了一個基于ECC的加密認(rèn)證協(xié)議ECDHE,對傳感網(wǎng)的公私鑰密碼機(jī)制進(jìn)行了初步研究,通過協(xié)議提高了節(jié)點(diǎn)的安全性,但是仍舊有一些沒有解決的難題,比如,能否將加密算法進(jìn)一步簡化,減輕對節(jié)點(diǎn)的計算要求,使協(xié)議更加的完善簡約,是下一步工作需要努力的方向。