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