吳 昆,魏國珩
(海軍工程大學 信息安全系,武漢 430033)
隨著低功耗無線通信技術、微型傳感器技術及集成電路技術的飛速發展,無線傳感器網絡(Wireless Sensor Network,WSN)在社會生活中的應用越來越廣泛[1]。廣播是無線傳感器網絡中數據分發與收集的主要方式,不僅應用于網絡節點的配置與管理過程,且常用于節點之間的數據通信[2]。廣播認證是無線傳感器網絡安全認證中的重要部分,是保證廣播信息完整性和信息源真實性的重要方法。
傳統WSN廣播信息認證方式主要分為2種,分別是基于對稱加密的方式與基于數字簽名的認證方式[3]。其中,基于對稱加密的對稱方式是利用消息認證碼MAC的延遲認證,通過網絡節點共享秘密信息或者延遲公布密鑰的方式實現認證,主要為μTESLA[4]及其改進方案[5-6],由于引入了時間延遲機制,該方案很容易遭受DOS攻擊。基于數字簽名的認證方式主要是利用公鑰密碼實現,但是基于PKC的非對稱認證方案[7]需要復雜的公鑰基礎設施和數字證書管理[8],基于身份的認證方案[9-10]則將會面臨密鑰托管問題,而基于雙線性計算的無證書認證方案[11-12]將會造成極大的計算開銷。
針對上述問題,本文提出一種基于非雙線性的無證書WSN廣播認證方案,該方案利用橢圓曲線密碼(Elliptic Curve Cryptography,ECC)算法實現認證,利用節點之間的相互協作,以減少計算開銷,降低計算復雜度。

假設G為橢圓曲線上的一個階為q的循環加法群,P是它的一個生成元,已知P,aP∈G,對任意a∈F(p),計算a。
在概率多項式時間(Probabilistic Polynomial Time,PPT)內,算法Φ成功解決橢圓曲線離散對數(Elliptic Curve Discrete Logarithm,ECDL)問題的優勢定義如下:
AdvECDL(Φ)=Pr[Φ(P,aP)=a|a∈F(p)]
橢圓曲線離散對數問題的假設:對于任意的概率多項式時間算法Φ,優勢AdvECDL(Φ)是可以忽略的[14]。
在無線傳感器節點部署到指定區域后,迅速建立網絡連接,并進行網絡初始化。首先,以基站為網絡的密鑰生成中心(Key Generation Center,KGC),并執行以下步驟:
步驟1產生GF(2n)上的橢圓曲線E:y2=x3+ax+b(a,b∈GF(2n)),任選E上的循環群G中階為n的生成元P=(px,py)作為公開的基點,其中,px,pymodq∈GF(2n)。
步驟2隨機選擇s∈GF(2n)作為基站的主密鑰,計算PK=sP作為公鑰。
步驟3選擇2個安全Hash函數:
H1:{0,1}*×G×G→GF(2n);
H2:{0,1}*×G×{0,1}*×{0,1}*→GF(2n)。
步驟4向網絡中公開基站的系統參數Parameter=
節點注冊的步驟為:
步驟1節點Ni隨機選取秘密值s′i∈GF(2n),計算PK′i=s′iP為節點的部分公鑰,將身份標識符IDi和PK′i發送給基站。
步驟2基站選擇隨機數ki∈GF(2n),計算PK″i=kiP以及s″i=ki+sH1(IDi,PK′i,PK″i),基站通過安全信道將{PK″i,s″i}發送給節點Ni,其中,PK″i可作為節點的部分公鑰,s″i為節點的部分私鑰。此外,基站保存節點的身份標識符及部分公鑰信息PK′i,此時節點Ni完成在基站上的注冊。
步驟3節點Ni通過判斷等式s″iP=PK″i+H1(IDi,PK′i,PK″i)PK是否成立來確定基站產生的部分公鑰與私鑰是否正確。結合{PK″i,s″i},節點Ni產生自己的公私鑰對
當身份標識為IDa的節點A向網絡中廣播信息m時,需要利用其私鑰對消息進行簽名,步驟如下:
步驟1節點A獲取時間戳tt并選取隨機數ra∈GF(2n),計算Ra=raP,h=H2(tt,IDa,m,Ra,PK′a,PK″a),L=ra(s′a+s″a+h)-1,并生成m的簽名信息為σ=
步驟2結合簽名信息σ,節點A生成廣播信息δ=(tt,IDa,m,σ),并將信息發送給基站。
由于普通節點的通信距離一般較小,對其直接進行網絡廣播時,往往需要通過其他節點進行轉發,這樣會增加認證過程的時延且會引起更大的安全風險。因此,本文考慮以基站為中間人,基站的通信范圍能夠覆蓋整個網絡,直接與其他節點進行通信。
2.4.1 基站認證
基站收到廣播δ后,首先判斷時間戳tt是否較新,之后根據身份標識IDa查詢節點對應的公鑰PKa=(PK′a,PK″a),并根據公鑰信息對簽名信息進行驗證。計算R′a=L(PK′a+PK″a+haPK+hP),其中,ha=H1(IDa,PK′a,PK″a),再計算Hash值h′=H2(tt,R′a,IDa,PK′a,PK″a,m),并判斷h′=h是否成立。如果等式h′=h成立,則基站通過對廣播信息的驗證,并將節點A的公鑰信息結合廣播信息轉發到網絡δ′=(tt,IDa,m,PK′a,PK″a,σ)中;如果驗證失敗,則將信息丟棄。
正確性驗證過程如下:
R′a=L(PK′a+PK″a+haPK+hP)=
L(s′a+ka+sH1(IDa,PK′a,PK″a)+h)P=
L(s′a+s″a+h)P=raP=Ra
h′=H2(tt,R′a,IDa,PK′a,PK″a,m)=h
2.4.2 網絡節點協同認證
網絡中的普通節點在收到廣播信息δ′后,同樣需要通過判斷h′=h來驗證信息的真實性。然而從基站的驗證過程可知,判斷廣播信息的真實性需要計算haPK、hP以及LQ共3次點乘以及4次點加運算,其中,Q=PK′a+PK″a+haPK+hP。與點加運算相比,橢圓曲線上的點乘運算需要消耗大量的能量與較長的計算時間。由于節點在認證過程中都需要執行以上3次點乘運算,因此考慮使用相鄰節點進行協同認證,使網絡中的節點先計算haPK、hP中的一個值,并將中間計算結果共享給鄰居節點,以減少鄰居節點的計算量,提高廣播認證速度并降低能耗。節點協作廣播認證過程如圖1所示。

圖1 節點協作廣播認證過程
節點B接收到廣播信息后,首先隨機選擇計算hP,并將計算結果發送給其鄰居節點,那么節點C、D、E、F只需要計算haPK以及LQ共2次點乘運算即可實現對廣播信息的驗證。同樣,節點B也可以從其相鄰節點中接收到通過接受haPK的計算值進行快速認證。在此過程中,雖然節點增加了一部分接收數據包的過程,但是遠小于計算一次ECC點乘運算的消耗。因此,通過共享中間點乘計算結果,每個節點可以減少約33%的能耗。在網絡中,節點一般對其鄰居節點的狀態比較了解,因此,為防止網絡中的惡意節點散播虛假中間計算值,規定節點只能從其相鄰節點處接收中間計算值。
雖然通過節點協同認證減少了計算消耗,但是容易引起中間人攻擊。惡意節點通過散布虛假點乘計算值,使其相鄰的合法節點認為接收到的廣播信息不可信,從而干擾廣播信息的傳輸。為避免此類信任欺騙,本文對方案進一步改進,引入系統參數ω和θ。假設節點B計算的點乘結果為hP,節點等待θ時間之后,從其λ個相鄰節點中接收到ω個計算中間值,包括ω1個haPK1和ω2個hP1。節點判斷接收到的數據中是否含有與自身計算結果不同的hP,如果發現有不同的hP,則傳感器節點向基站發送報告存在隱藏攻擊;節點查找數據包中是否有自身需要的點乘運算結果haPK,如果有多個值且不相同,節點同樣向基站報告存在潛在攻擊;如果接收到的haPK值相同,則節點只需要在進行一次點乘運算LQ后即可完成驗證;如果接收到的haPK值不同,則由節點本身計算haPK得到R′a=LQ,并得到h′=H1(tt,R,IDa,PK′a,PK″a,m),完成對廣播信息的驗證。
在本文方案中,對于ω的選擇,假設傳感器節點B共有υ個可以直接通信的相鄰節點,且都將計算結果發送給B,網絡中傳感器節點被攻擊者影響的概率為τ,則節點最多收到υτ個虛假中間值,即至少有ω-υτ個合法的中間值。同時,只有節點接收到的haPK1全為虛假值,且ω-υτ個合法的中間值全為hP1時,才會對廣播信息認證的結果產生影響。否則,節點將放棄所有數據包,并向基站發送報告。因此,為了抵御節點信任欺騙造成的共謀攻擊,需要盡量保證接收到的haPK1的數量大于相鄰惡意節點的數量。
因為每個合法節點初始選擇計算的點乘值隨機,所以節點受到共謀攻擊的概率為?=1/2ω-υτ。為了使得?<1%,設置λ≥ω≥υτ+7。關于等待時間θ的選取,應該使節點B能夠在θ時間內接收到ω個數據包。θ值取決于節點的數據傳輸時間以及無線收發器的退避延時,退避延時主要是指節點在接收或者發送數據前對信道空閑狀態進行檢測的等待時間。因此,設置網絡的等待時間為θ≥(PackSize/TransRate+T)ω,其中,PackSize表示一個點乘計算結果haPK或hP的數據大小,TransRate表示節點的數據傳輸速率,T表示節點的退避延時。
根據AL-RIYAMI等人[15]針對無證書密碼體系(CL-PKC)提出的安全模型,本文主要考慮以下2種攻擊:
1)挑戰者A1是一個惡意的網絡參與節點,不能獲取系統的主私鑰,但是可以查詢和替換網絡中的合法節點的公鑰。
2)挑戰者A2是一個惡意的PKG,可以獲取系統的主密鑰,但是無法同時替換網絡中合法節點的公鑰信息。
挑戰者A1的安全性證明過程如下:

證明令算法Φ為二元組
的計算困難問題解決者,其目標是計算出a。Φ以挑戰者A1作為子程序并充當游戲的挑戰者。Φ創建列表Lu、L1、L2分別記錄新節點注冊查詢、H1查詢、H2查詢的結果。游戲開始時,所有的列表為空。
1)第一階段
算法Φ隨機選擇一個IDT作為目標節點,設置參數Parameter=
2)第二階段
挑戰者A1向Φ發送查詢信息并接收Φ的回復信息,具體如下:
(1)H1查詢:列表L1中的數據格式為(IDi,PK′i,PK″i,h1),當Φ接收到挑戰者A1對H1的查詢信息IDt時,若存在(IDt,PK′t,PK″t,h1)∈L1,則返回對應的h1給挑戰者A1;否則,挑戰者A1對IDt的新節點注冊查詢,之后Φ返回L1中相應的元組給挑戰者A1。
(2)H2查詢:列表L2中每一項的格式為(tti,IDi,mi,Ri,PK′i,PK″i,h2),當Φ接收到挑戰者A1對H2的查詢信息(ttt,IDt,mt,Rt,PK′t,PK″t)時,若存在(ttt,IDt,mt,Rt,PK′t,PK″t,h2)∈L2,則返回對應的h2給挑戰者A1;否則,Φ隨機選取h2且滿足(*,*,*,*,*,*,h2)?L2,并將(ttt,IDt,mt,Rt,PK′t,PK″t,h2)加入至列表L2,并返回h2給挑戰者A1。
(3)新節點注冊查詢(IDt):列表Lu中每一項的格式為(IDi,PK′i,PK″i,s′i,s″i),當Φ接收到挑戰者A1對IDt的新節點注冊查詢時,若存在(IDt,PK′t,PK″t,s′t,s″t)∈Lu,則返回(PK′t,PK″t);否則,Φ選取隨機數s′t、s″t和h1,計算PK′i=s′iP,PK″i=h1PK+s″tP。如果IDt=IDT,Φ隨機選取kt,s′t,計算PK′t=s′tP,PK″t=ktP,s″t=NULL。檢查列表L1,若已經存在(IDt,PK′t,PK″t,H1(IDt,PK′t,PK″t)),且H1(IDt,PK′t,PK″t)≠h1,則游戲終止;否則,返回(PK′t,PK″t),并將(IDt,PK′t,PK″t,s′t,s″t)保存至Lu,(IDt,PK′t,PK″t,h1)保存至L1。
(4)公鑰替換查詢(IDt,PK′t,PK″t):挑戰者A1可以選擇隨機數s′t,并將原來的公鑰PK′替換為PK′t=s′tP參與之后的計算。
(5)秘密值生成查詢(IDt):Φ接收到對IDt查詢時,查找列表Lu,如果存在(IDt,PK′t,PK″t,s′t,s″t)∈Lu,則返回相應的秘密值s′t;否則,Φ進行新節點注冊查詢,并返回s′t。
(6)部分私鑰提取(IDt):如果IDt=IDT,返回s″t=NULL,游戲終止;否則,Φ查找列表Lu,并返回s″t。一般情況下,在進行部分私鑰提取查詢前,已經完成了對應的新節點注冊查詢。
(7)簽名查詢(IDt,m):當接收到簽名查詢時,如果IDt=IDT,則終止游戲;否則,Φ首先搜索列表Lu,L1,如果s″t≠NULL,獲取
(8)簽名驗證查詢(IDt,m,Lt,h2):挑戰者A1在執行新節點注冊查詢之后,獲取
①存在
②如果列表Lu中不存在
3)第三階段
挑戰者A1針對信息。同時,Φ知道替換后的公鑰,如果偽造成功,那么根據r*=L*(s*′+k*+sh1*+h2*),Φ輸出s=(r*-L*(s*′+k*+h2*))/L*h1*,即為ECDL(G,P,PK=sP)問題的解答;否則,Φ沒有解決ECDL問題。
分析算法Φ解決ECDL(G,P,PK=sP)問題的概率。算法Φ成功的條件為:
1)Φ沒有停止游戲;
2)σ*是一個有效的偽裝廣播信息。
那么Φ的優勢Adv(Φ)=Pr[Con1∧Con2]=Pr[Con1]Pr[Con2|Con1],且Pr[Con2|Con1]=ε。
算法Φ沒有停止游戲的概率如下:

挑戰者A2的安全性證明過程如下:

證明思路與定理1類似,這里不再贅述。
為了證明本文方案的安全性,下面對方案的3個典型的安全屬性進行分析,具體如下:
1)密鑰托管
本文采用基于無證書的密碼體制,節點的私鑰si=(s′i,s″i)一部分s′i由節點隨機產生,另一部分s″i由基站結合節點的部分公鑰產生,因此即使基站被攻擊,攻擊者也無法獲取節點的另一部分私鑰,避免了密鑰托管的危險。
2)重放攻擊
節點向網絡發送的廣播信息中含有時間戳信息tt,可有效防范信息重放攻擊,而且廣播信息中通過加入廣播者的公鑰信息,并利用Hash函數進行完整性保護,可以防止攻擊者偽造廣播者的身份進行攻擊。
3)拒絕服務攻擊
本文方案中,節點利用基站對廣播信息進行中間廣播,基站的傳輸范圍可以覆蓋整個網絡,因此可以避免信息在網絡節點中的大部分傳輸延遲。對廣播信息的認證是通過非對稱密碼實時進行簽名認證的,每個節點都接收到了完整的廣播信息,節點只是利用其有限個相鄰節點的計算結果進行協同認證,設定了相應的閾值來避免DOS攻擊。而且,在檢測到攻擊時,節點可以將潛在攻擊報告發送給基站,并對網絡進行安全檢測,識別出惡意的攻擊者。
對方案性能進行分析時,為了更接近真實情況,設置節點為具有1個工作頻率為8 MHz ATmega處理器的MicaZ平臺,節點的工作電壓為3 V,工作狀態下節點的電流為8 mA,接收電流為10 mA,發送電流為27 mA,最大數據傳輸速率為250 Kb/s[17]。由于基站的計算能力和電量不受限制,因此本文在性能分析中不對其進行討論。
假設每個傳感器節點只從其鄰居節點中接收ω個中間計算結果。節點的計算開銷只考慮進行點乘計算的能耗,節點信息傳輸的能耗只與傳輸信息的長度有關,已知|G|=2n,則進行如下定義:
ES、ER分別為發送和傳輸一個字節信息的能量消耗,EM為計算一次點乘的能耗,l1、l2、l3分別為節點身份標識IDi的長度、時間戳tt的長度以及需要廣播的信息m的長度。
考慮到160 bit的ECC密碼安全性與1 024 bit的RSA安全性相當,設置ECC的密鑰長度n=160、l1=2 Byte、l2=2 Byte、l3=80 Byte;設置參數ω=15,同時,根據實際傳感器的性能,設置ES=2.59 μJ/Byte、ES=0.96 μJ/Byte。在ATmega處理器上完成一次160 bit點乘運算大約需要0.81 s[18],因此,EM=19.44 mJ。
一次廣播信息認證過程的能耗情況如下:
1)發送廣播信息的節點能量消耗
節點需要廣播信息長度為l3的信息m時,總共需要消耗EM+(l1+l2+l3)ES=19.66 mJ。
2)認證廣播信息的節點能量消耗
節點單獨進行廣播消息認證時,共需要執行3次點乘運算,總的能耗為3EM+(l1+l2+l3+2|G|/8)ER=58.48 mJ。在節點協同認證過程中,節點減少一次點乘運算能耗19.44 mJ,增加ω次接收信息和1次發送信息的能耗(2nES+2ωnER)/8=0.68 mJ,因此,共需要消耗約2EM+(l1+l2+l3+2|G|)ER+(2nES+2ωnER)/8=39.72 mJ。
由此可以看出,使用中間值共享的方式雖然增加了一定的能耗來進行數據的傳輸,但是能量值非常小。在廣播信息認證過程中,每個節點的能耗減少大約為18.76 mJ,理論上提升了32%。
在網絡廣播認證的時延方面,本文方案減少了節點進行一次點乘運算的時間,大約為0.81 s。雖然網絡中增加了防共謀攻擊機制,引入了退避時延θ,但是θ值很小,一般在微秒級,不會對認證時間產生較大的影響。
本文在仿真時,假設400個節點隨機均勻分布在360×360 m2的區域內,設置的節點通信半徑為50 m。實驗基于C++語言在OMNet++平臺上進行仿真,設備選用一臺運行Windows 7、擁有i5-3210M處理器、4.00 GB RAM的筆記本。
在實驗過程中,選擇文獻[19-20]以及不執行節點協作的認證方案進行對比分析。在進行網絡認證之后,重復進行30次廣播信息認證,記錄每個節點的能量消耗情況,同時記錄每次廣播認證完成的時延。統計各方案完成一次廣播信息認證中整個網絡的平均總能耗和平均時間,結果如表1所示。

表1 網絡中完成一次廣播的平均總能耗和平均時間Table 1 Average total energy consumption and average time to complete a broadcast in the network
從表1可以看出,本文方案的能耗相比不進行節點協作的方案降低約30.0%,相比文獻[19]方案減少了約28.6%,相比文獻[20]方案減少了約45.9%。同時,本文方案的廣播認證時間比不進行節點協作的方案降低了約19.5%,相比文獻[19]方案減少了約18.1%,相比文獻[20]方案減少了約31.3%。
假設節點的能量由兩節容量為500 mAh的AA電池提供,整個網絡中的總能量為2 160 000 J。假設節點的電壓低于2.2 V時,網絡就不能正常工作,此時網絡總能量低于約為1 600 000 J,則各方案下的網絡生存周期如圖2所示。

圖2 4種方案的網絡生存周期對比
從圖2可以看出,本文方案的網絡生存周期最長,可以達到33 000輪左右,而如果不進行節點協作,網絡在進行23 100輪左右的廣播認證之后就不能正常工作。
針對WSN節點信息廣播認證方案中安全性較低等問題,本文提出一種基于ECC的無證書廣播認證方案,利用節點相互協作來共享中間計算結果,有效減少了節點的計算消耗,延長了網絡的生存周期。實驗結果表明,該方案具有較強的安全性和優化資源消耗能力,能夠滿足WSN的應用需求。下一步將對鄰居節點協作方式進行優化,以期達到更好的節能效果和安全性能。