石家莊郵電職業(yè)技術(shù)學院 張 靜 馬紅靜 史永琳 何柳青
無線傳感網(wǎng)絡(luò)(WSNs)是物聯(lián)網(wǎng)的重要組成部分,深入應(yīng)用于智慧家居、智能農(nóng)業(yè)、環(huán)境監(jiān)測等領(lǐng)域。WSNs由大量傳感器節(jié)點組成,這些傳感器節(jié)點共同采集網(wǎng)絡(luò)區(qū)域信息,并允許外部用戶訪問節(jié)點,獲取實時數(shù)據(jù)進行操控。這些數(shù)據(jù)通過傳感網(wǎng)或公共網(wǎng)絡(luò)傳輸,且傳感器節(jié)點大部分部署在無人看管環(huán)境中,這使得WSNs容易受到攻擊。因此,提供安全的身份認證與密鑰協(xié)商協(xié)議以驗證用戶身份并加密通信內(nèi)容對保障網(wǎng)絡(luò)安全至關(guān)重要。
身份認證是無線傳感網(wǎng)絡(luò)安全中的重點問題,一般分為節(jié)點身份認證和信息認證兩種。身份認證是接入控制中心的核心環(huán)節(jié),網(wǎng)絡(luò)中心根據(jù)某種協(xié)議驗證節(jié)點身份后,才能做出與節(jié)點身份對應(yīng)的操作。
無線傳感器節(jié)點入網(wǎng)到相關(guān)區(qū)域之后,要和周圍節(jié)點或者匯聚節(jié)點或基站之間建立合法身份認證,為節(jié)點接入自組織網(wǎng)絡(luò)提供準入“鑰匙”。隨著偽裝節(jié)點被識破、新節(jié)點加入網(wǎng)絡(luò)等情況的出現(xiàn),需要將一些節(jié)點從列表中刪除。其次,來自匯聚節(jié)點或者網(wǎng)關(guān)的控制信息,往往需要節(jié)點間的多跳轉(zhuǎn)發(fā),這就必須引入認證機制對控制信息發(fā)布源進行驗證身份,確保信息的完整性、可靠性,同時,也為了防止“偽節(jié)點”對信息進行非法篡改。
一個典型的WSNs身份認證協(xié)議一般包含3個層面網(wǎng)絡(luò)架構(gòu):一個或者多個網(wǎng)關(guān),一組匯聚節(jié)點,以及大量的傳感器節(jié)點。因為傳感器節(jié)點受限于自身的計算能力和存儲能力,而且,一般應(yīng)用在安全需求較高的環(huán)境中,但是密鑰和協(xié)議都需要輕量級的,能夠抵抗外部攻擊,并且希望具備前向安全性等特性。通常來說,WSNs環(huán)境的身份認證流程有以下幾步:
(1)匯聚節(jié)點及傳感器節(jié)點在網(wǎng)關(guān)注冊,成為合法參與方。
(2)當網(wǎng)關(guān)想訪問某傳感器節(jié)點的實時數(shù)據(jù)時,需先向匯聚節(jié)點發(fā)起訪問請求。
(3)傳感器節(jié)點實時采集數(shù)據(jù),完成之后發(fā)送給匯聚節(jié)點,匯聚節(jié)點匯總多個傳感器節(jié)點數(shù)據(jù)后,打包發(fā)送給網(wǎng)關(guān)。
(4)如果請求的傳感器節(jié)點處于本地網(wǎng)關(guān)覆蓋中,網(wǎng)關(guān)對匯聚節(jié)點完成認證后,對傳感器節(jié)點進行認證;如果訪問的傳感器節(jié)點處于其他網(wǎng)關(guān)覆蓋范圍,則向外部匯聚節(jié)點發(fā)起訪問請求,雙向認證后,由外部匯聚節(jié)點傳達用戶請求。
(5)本地網(wǎng)關(guān)和匯聚節(jié)點與傳感器節(jié)點需要完成認證,認證結(jié)束后,進行密鑰協(xié)商,確定一個會話密鑰來保護數(shù)據(jù)傳輸過程。
圖1 網(wǎng)絡(luò)體系結(jié)構(gòu)
通過認證過程,可以看出不管是注冊、登錄以及數(shù)據(jù)傳輸,都存在一定的風險。本文通過研究無線傳感網(wǎng)中的身份認證方法,發(fā)現(xiàn)可以將橢圓加密算法應(yīng)用到無線傳感網(wǎng)認證過程中,從而保證在無線環(huán)境下的安全傳送。跟之前胡認證過程比較可以看出,橢圓加密算法讓原本明文發(fā)送的不安全性得到改善,并且可以阻擋重放攻擊,協(xié)商秘鑰加密發(fā)送信息也保證通信及用戶的安全。
橢圓曲線密碼學ECC屬于非對稱密碼學的,其私鑰的計算公式如下:
(1)私鑰是一個隨機數(shù)d,取值范圍在1……n-1,其中n是子群的階。
(2)公鑰是點H=dG,G是子群的基點。
如果知道私鑰d和橢圓曲線參數(shù)G,求公鑰H是很容易的,但是只知道公鑰H和橢圓曲線參數(shù)G,求解私鑰d是非常困難的,需要解決離散對數(shù)難題,橢圓曲線的安全性保證有賴于此。
橢圓加密算法主體包括用戶A和B,雙方通信過程如下:
(1)節(jié)點根據(jù)橢圓曲線參數(shù)確定Ep(a,b),并在橢圓曲線上取一點,作為基點G。
(2)節(jié)點隨機選擇一個私有密鑰k,并通過公式K=kG生成公開密鑰K。
(3)節(jié)點將橢圓曲線相關(guān)信息Ep(a,b)以及K,G傳給網(wǎng)關(guān)。
(4)網(wǎng)關(guān)接到信息后,將待傳輸信息編碼到橢圓曲線Ep上的一點N,根據(jù)信息隨機產(chǎn)生整數(shù)r。在這里編碼方法很多,就不作討論。
(5)網(wǎng)關(guān)計算點C1=N+rK;C2=rG。
(6)網(wǎng)關(guān)將C1、C2傳給節(jié)點。
(7)節(jié)點接到信息后,進行C1-kC2的運算,結(jié)果可以得到N。
可以獲得原始信息,是因為C1-kC2=N+rK-k(rG)=N+rKr(kG)=N,再對這個點N進行解密就可以得到原始發(fā)送數(shù)據(jù)。
整個加密過程中,如果有偷窺者S,他也只能看到Ep(a,b)、K、G、C1、C2,而通過K、G求k或通過C2、G求r都是相對困難的。因此,任何偷窺者都無法得到節(jié)點和網(wǎng)關(guān)間傳送的任何信息。
傳感器節(jié)點是通過匯聚節(jié)點,將數(shù)據(jù)傳給網(wǎng)關(guān)的。因此在C正式加入網(wǎng)絡(luò)之前,先要獲得協(xié)調(diào)器節(jié)點認證密鑰。
網(wǎng)絡(luò)初始化過程如下:
(1)符合協(xié)議要求的匯聚節(jié)點連接網(wǎng)關(guān),在此認為匯聚節(jié)點已經(jīng)連接網(wǎng)關(guān)。
(2)匯聚節(jié)點主要通過網(wǎng)關(guān)獲取對方的證書進行身份確認,身份確認后再進行密鑰協(xié)商,這樣雙方就可以獲得共享密鑰對數(shù)據(jù)進行加密傳送。
(3)匯聚節(jié)點會向周圍發(fā)送信息,等待傳感器節(jié)點的加入。(4)普通傳感器節(jié)點根據(jù)匯聚節(jié)點信號強弱,選擇信號強度高的,給匯聚節(jié)點發(fā)送包含節(jié)點自身ID號的信息。
(5)匯聚節(jié)點收到相關(guān)傳感器節(jié)點發(fā)送的信息后,將這些信息加上自己的ID號加密發(fā)送給網(wǎng)關(guān)。
(6)網(wǎng)關(guān)收到信息后,生成該傳感器節(jié)點的證書,并用這個節(jié)點之前預(yù)留的認證密鑰加密后發(fā)送給匯聚節(jié)點。
(7)匯聚節(jié)點收到加密信息后,解密獲得傳感器節(jié)點的證書,并用預(yù)置胡密鑰解密獲得傳感器節(jié)點的認證密鑰,并用認證密鑰加密匯聚節(jié)點的認證密鑰發(fā)送給傳感器節(jié)點。
(8)傳感器節(jié)點C收到消息后用自身的認證密鑰KC解密,從而獲得自己的CERT和匯聚節(jié)點之間的認證密鑰KB。
ECDHE密鑰協(xié)商算法基于橢圓曲線密碼系統(tǒng)(ECC)和DHE算法(Diffie-Hellman Ephemeral,短暫臨時的DH算法),使用較短的密鑰長度可提供與RSA或DH算法同等的安全等級,密鑰長度有160~256位比特的橢圓曲線算法與密鑰長度1024~3072位比特的非ECC算法安全強度相同。
傳感器節(jié)點C獲得了網(wǎng)關(guān)和匯聚節(jié)點的認證密鑰,網(wǎng)絡(luò)正常運行,節(jié)點和網(wǎng)關(guān)之間進行ECDHE密鑰協(xié)商之前雙方要有共同的共享參數(shù),即必須選擇相同的橢圓曲線方程、大素數(shù)p、生成源G。
密鑰協(xié)商過程如下:
(1)傳感器節(jié)點C隨機產(chǎn)生一個數(shù)Rc,并用KC加密,生成消息(Rc||CERT(C))KC,之后選擇一個比橢圓曲線階小的隨機數(shù)rc作為私鑰,計算公鑰Hc=rcG,將{Hc|(Rc||CERT(C))KC}發(fā)送給匯聚節(jié)點。
(2)匯聚節(jié)點B收到后,首先用KC解密,解密后根據(jù)證書的正確與否,驗證確定消息的完整性。如果解密不成功,則說明傳感器節(jié)點證書失效或者無效,中止通信;若消息完整,則進一步核驗該節(jié)點的身份是否合法,如有ID號合法,則保存該數(shù)據(jù)包。至此,B就獲得了C的公鑰。
然后,B也選擇一個比橢圓曲線階小的隨機數(shù)rb作為私鑰,計算公鑰HB=rbG,并將{HB|(Rc'||CERT(B))KB}發(fā)送給節(jié)點C。
(3)C收到后計算共享密鑰S=rcHB。進一步得到S=rcHB=rcrbG。
(4)B收到后計算共享密鑰S′=rbHc。進一步得到S′=rbHc=rbrcG。
(5)可以看出,S=S′,密鑰協(xié)商過程完成。
(1)在認證協(xié)議中,所有信息都會進行加密處理,傳輸過程中全程保證通信雙方的信息機密性和完整性。
(2)節(jié)點發(fā)送的信息中采用隨機數(shù)作為私鑰,可以保證每次通信使用的共享密鑰都是不同的。攻擊者即使破解獲取了私鑰,也只是影響本次通信,不會獲取之前通信的內(nèi)容,這樣的特征保證了前向安全性。而且更安全的是,協(xié)商出會話密鑰后,雙方私鑰都可丟棄,進一步提升了安全性,
(3)節(jié)點和網(wǎng)關(guān)密鑰協(xié)商過程中,用到的是隨機數(shù)作為私鑰,如果兩次或多次收到的隨機數(shù)完全一致,便可判斷收到的數(shù)據(jù)的為偽造數(shù)據(jù),這樣可以防止重放攻擊。
(4)傳感器網(wǎng)絡(luò)中常見的攻擊是:一是“偽節(jié)點”攻擊;二是截取信息,分析數(shù)據(jù),獲取重要信息。但是本認證協(xié)議采用的是基于橢圓曲線的加密算法,密鑰位數(shù)相同的情況下,安全性優(yōu)于RSA算法。更好的保證系統(tǒng)安全,即使公鑰泄漏,攻擊者也無法獲取私鑰,更無法獲取共享密鑰,安全性大大提高了。
為解決無線傳感網(wǎng)中身份認證的問題,本文提出了一個基于ECC的加密認證協(xié)議ECDHE,對傳感網(wǎng)的公私鑰密碼機制進行了初步研究,通過協(xié)議提高了節(jié)點的安全性,但是仍舊有一些沒有解決的難題,比如,能否將加密算法進一步簡化,減輕對節(jié)點的計算要求,使協(xié)議更加的完善簡約,是下一步工作需要努力的方向。