袁 馳
(中國人民大學(xué)信息學(xué)院,北京 100872)
(?通信作者電子郵箱chiyuan@ruc.edu.cn)
常規(guī)的密鑰管理算法中以公鑰密碼基礎(chǔ)最為常見[1-3],這種密碼體制可分為三大類:基于公鑰證書的密碼體制、基于身份的密碼體制、無證書密碼體制[4-5],其中基于身份的密碼體制無論是在安全性或是計(jì)算復(fù)雜度上相對(duì)優(yōu)勢(shì)都較為明顯[6]。文獻(xiàn)[7]指出,基于身份密碼體制(ID-Based Cryptosystem,IBC)是最適合無線傳感器網(wǎng)絡(luò)(Wireless Sensor Network,WSN)的公鑰體制。但是基于身份體制有一個(gè)致命的缺陷就是密鑰托管問題,因?yàn)樗借€生成中心掌握著所有用戶的私鑰,它可以非常容易冒充任何節(jié)點(diǎn)用戶,私鑰生成中心可以解密任何用戶密文,可以偽造用戶簽名,并且不易被發(fā)現(xiàn)。因此,如何設(shè)計(jì)出既能充分利用各節(jié)點(diǎn)的身份信息從而簡(jiǎn)化密鑰管理開銷,又能避免私鑰生成中心帶來的密鑰托管問題的安全認(rèn)證算法,就成了無線傳感器網(wǎng)絡(luò)信息安全需要研究的一個(gè)重要問題。近年來,學(xué)者們針對(duì)此問題提出了各種解決方案,但多數(shù)方案仍然依靠私鑰中心(PRivate Key Generator,PRKG)來生成用戶私鑰,因此并沒有從根本上解決密鑰托管問題。
針對(duì)此,提出的基于身份的分簇認(rèn)證算法(Identity-based Dynamic Clustering authentication algorithm,IDC)算法,拋棄私鑰中心,引入一個(gè)可信第三方公鑰中心(Key Generating Center,KGC),直接產(chǎn)生用戶公鑰(與無證書密碼體制使用公鑰中心和用戶共同產(chǎn)生用戶私鑰完全不同),從根本上解決了密鑰托管問題,還可以動(dòng)態(tài)生成全局偽秘密、能耗較低、性能穩(wěn)定并且安全性好,非常適合WSN環(huán)境。具體特點(diǎn)如下:
1)沒有密鑰托管問題。IDC 算法結(jié)合橢圓曲線離散對(duì)數(shù)困難問題、哈希函數(shù)、解簽密等知識(shí),與傳統(tǒng)的基于身份認(rèn)證算法中由私鑰生成中心生成所有用戶私鑰不同,它利用一個(gè)公鑰生成中心,采用逆向思維方法,生成申請(qǐng)者的公鑰及其對(duì)應(yīng)的驗(yàn)證參數(shù),發(fā)送給申請(qǐng)者驗(yàn)證,而用戶的私鑰既不由公鑰中心生成,也不用和公鑰中心聯(lián)合生成(區(qū)別于傳統(tǒng)無證書系統(tǒng)),而是由用戶自己秘密選定。
2)算法擁有較低的計(jì)算、存儲(chǔ)量但安全性較高。IDC 算法同時(shí)考慮到WSN 的特性,首先,采用分層結(jié)構(gòu),將各群體分為不同的簇群;采用分級(jí)結(jié)構(gòu),將系統(tǒng)分為簇首層(Cluster-Head Layer)和內(nèi)部層(Intra-Cluster Layer)。由基站(Base Station,BS)為每一個(gè)簇首統(tǒng)一編發(fā)Id 號(hào),由簇首層身份信息構(gòu)成身份信息矩陣ID(Identity-matrix),內(nèi)部層節(jié)點(diǎn)身份信息不參與身份矩陣構(gòu)成。其次,在分層結(jié)構(gòu)的基礎(chǔ)上,又有針對(duì)性地采用了分級(jí)處理,針對(duì)BS、簇首、普通節(jié)點(diǎn)能量的差異,采用兩種不同的公鑰生成算法:簇首層(頂層)公鑰申請(qǐng)過程基于身份矩陣運(yùn)算,而內(nèi)部層(下層)節(jié)點(diǎn)公鑰申請(qǐng)基于身份Id 與哈希函數(shù)數(shù)學(xué)運(yùn)算得出。第三,身份Id 信息在算法中得到充分應(yīng)用,與算法結(jié)合緊密:由Id 信息生成的范德蒙矩陣,大大節(jié)約了存儲(chǔ)空間,同時(shí)也減低了計(jì)算量;由Id 信息產(chǎn)生單向多項(xiàng)式的各系數(shù),用以產(chǎn)生動(dòng)態(tài)偽秘矩陣,無需再采用隨機(jī)數(shù)等方式生成多項(xiàng)式系統(tǒng),也降低了計(jì)算量;動(dòng)態(tài)偽秘矩陣也使得算法的安全性大大提高。
3)結(jié)合WSN 環(huán)境特點(diǎn),節(jié)點(diǎn)間認(rèn)證采用一次(解)簽密方案,降低了通信能耗。IDC 算法采用一次(解)簽密方案,在一次通信過程中同時(shí)實(shí)現(xiàn)加密和認(rèn)證功能(一次通信是相對(duì)于一個(gè)節(jié)點(diǎn)的(解)簽密過程而言,不考慮節(jié)點(diǎn)認(rèn)證成功后的反饋信息或不成功的返回信息),極大地節(jié)省了資源。
需要指出的是,提出的IDC 算法,在解決了由私鑰中心帶來的密鑰托管問題的同時(shí),引入了公鑰中心KGC,產(chǎn)生了一個(gè)新問題,就是合謀攻擊問題,即由若干節(jié)點(diǎn)合謀,對(duì)公鑰中心掌握的全局秘密D 進(jìn)行破解的問題。對(duì)此,本文引入了身份Id 單向多項(xiàng)式,動(dòng)態(tài)生成偽秘密矩陣D',可以杜絕合謀攻擊,保證了算法的安全性。
較為典型的基于身份認(rèn)證算法有秦志光等[8]提到的密鑰隔離密碼系統(tǒng)(Key-insulated cryptography),將密鑰分成兩個(gè)部分,一部分由用戶自己控制,另一部分由一個(gè)物理安全的協(xié)助者保存。在需要使用密鑰時(shí)將兩部分的密鑰進(jìn)行“拼接”從而得到一個(gè)完整的密鑰;但其沒能利用有效各節(jié)點(diǎn)的身份信息。陳淵等[9]提出一種基于身份但無線性對(duì)運(yùn)算的加密算法,并在隨機(jī)預(yù)言機(jī)模型下證明了算法是適應(yīng)性選擇密文安全的。兩種算法都采取一定方法避免了計(jì)算量較大的對(duì)運(yùn)算操作,節(jié)省了開銷。但是兩種算法都借鑒無證書的思想,節(jié)點(diǎn)的私鑰由節(jié)點(diǎn)和私鑰生成中心(PRKG)共同生成,而非節(jié)點(diǎn)自己?jiǎn)为?dú)生成,因此這兩種算法并沒有真正解決基于身份體制中的密鑰托管問題。危蓉等[10]提出了一種基于身份的WSN層簇式密鑰管理算法,較好地解決了WSN 密鑰管理問題,算法運(yùn)用身份認(rèn)證加密技術(shù),對(duì)節(jié)點(diǎn)認(rèn)證后進(jìn)行分簇,并建立簇成員與簇頭之間共享簇密鑰,實(shí)現(xiàn)了系統(tǒng)構(gòu)建、簽名、加密一體化,并通過分析對(duì)比,驗(yàn)證了算法可以保證簇內(nèi)完全連通并滿足無線傳感器網(wǎng)絡(luò)各項(xiàng)要求;但其采用橢圓曲線的Weil 雙線性對(duì)運(yùn)算卻使得算法運(yùn)算量增大。
郭江鴻等[11]提出了一個(gè)新的無線傳感器網(wǎng)絡(luò)密鑰協(xié)商算法,有效地解決了傳感器網(wǎng)絡(luò)密鑰協(xié)商方案中雙線對(duì)運(yùn)算能耗較高且耗時(shí)較長(zhǎng)的問題,但其算法描述系統(tǒng)公私鑰對(duì)是預(yù)先設(shè)定,在其廣播階段并沒有將系統(tǒng)私鑰x 廣播,而在節(jié)點(diǎn)間相互通信之初卻直接利用了系統(tǒng)私鑰x,其算法并未說明x 是何種方式秘密傳送至各節(jié)點(diǎn),而系統(tǒng)私鑰x 如何有效分發(fā)正是此類算法一個(gè)關(guān)鍵環(huán)節(jié),因此此算法雖然有一定創(chuàng)新但是回避了一個(gè)重要問題,僅是理論可行。郭萍等[12]將基于身份的RSA 機(jī)制與輕量級(jí)(Certificate Authority,CA)思想相結(jié)合,構(gòu)建了一個(gè)基于身份及輕量級(jí)CA 混合模型的傳感器網(wǎng)絡(luò)密碼算法(簡(jiǎn)稱LCA)。但這兩種算法的計(jì)算量與通信量均較大,仍然需要改進(jìn)。
Yuan 等[13]提出一種(Authentication of Vandermonde Matrix,AVM)認(rèn)證算法,利用矢量的正交空間內(nèi)積與張量積特征,采用復(fù)雜度較低的矩陣相加(D+)方法來構(gòu)建密鑰,保證了算法的前向安全性。另外,引入了隨機(jī)數(shù)與零知識(shí)證明算法,算法的不可逆性得以提高,使得攻擊節(jié)點(diǎn)不能篡改和替換消息,有效杜絕了中間人攻擊。
李英磊等[14]提出一種動(dòng)態(tài)分簇的密鑰認(rèn)證算法,對(duì)節(jié)點(diǎn)能量消耗和網(wǎng)絡(luò)安全性作出分析,給出了相關(guān)的解決辦法;Rohbanian 等[15]提出了層簇式WSN 進(jìn)行密鑰管理,首先構(gòu)建最短路徑,使用基于橢圓曲線的密碼方案進(jìn)行會(huì)話密鑰分發(fā);董發(fā)志等[16]提出一種“集中分簇,分布簇頭選舉”的算法,綜合考慮節(jié)點(diǎn)能量、距離等因素,達(dá)到了較好的能量和安全性的平衡;鄧紹江等[17]提出采用網(wǎng)絡(luò)分化思想提高系統(tǒng)通信效率,利用分組加密算法EBS-GL(Grouping and Layered key management strategy in WSN based on Exclusion Basis System),通過匯總消息比對(duì)方法及奇異點(diǎn)排除策略進(jìn)行認(rèn)證,增強(qiáng)了系統(tǒng)可恢復(fù)性;危蓉等[10]提出的算法也屬于分簇管理研究范疇。
2.1.1 動(dòng)態(tài)安全過程
由用戶密鑰生成過程可知,公鑰中心在生成兩個(gè)集合B1和B2后利用B2產(chǎn)生公鑰中心驗(yàn)證參數(shù)Kij,將B1={bj0,bj1,…,bjn}發(fā)送至申請(qǐng)簇首用于生成Kij,分析部分矩陣[D'ID]T如式(1)所示(為表示方便,用“(B1)i”表示第i個(gè)簇首申請(qǐng)者得到的公鑰中心返回集合):
如果不引入偽秘密矩陣D',由秘密矩陣D 直接參與簇首節(jié)點(diǎn)的申請(qǐng)過程驗(yàn)證,由于秘密矩陣D 為對(duì)稱矩陣,易得(n*n)的D 有個(gè)獨(dú)立的矩陣項(xiàng),而集合B1會(huì)多次以固定的系數(shù)(dij)計(jì)算出結(jié)果返回給相應(yīng)節(jié)點(diǎn),這必然會(huì)導(dǎo)致相應(yīng)個(gè)數(shù)節(jié)點(diǎn)的合謀攻擊,從而使攻擊者得到全局秘密矩陣D。
2.1.2 合謀攻擊條件
設(shè)全局秘密矩陣 D 中元素 dij為未知數(shù)xij,且有i,j ∈{0,1,2,…,(n -1)},則對(duì)于每一個(gè)簇首申請(qǐng)節(jié)點(diǎn)而言,均可以得到一個(gè)如式(3)的線性方程組:
這些線性方程組的每一行中的未知數(shù)xij均相同,因此可以分別取各線性方程組的相同行(以第1 行為例),組成新的線性方程組,進(jìn)而可反推出全局秘密D的對(duì)應(yīng)行元素,最終破解全局秘密矩陣D,如式(4)所示:
2.1.3 應(yīng)對(duì)策略
本文引入偽秘密矩陣D',矩陣元素由一個(gè)單向函數(shù)多項(xiàng)式計(jì)算得出,分析多項(xiàng)式易知,由霍納法則(Honer’s Rule)通過不斷地把x作為公因子從降次后的剩余多項(xiàng)式中提取出來:
過程如表1所示。
可以看出,在已知x,Idi和p的情況下,非常容易求得y;而反過來,在已知y,Idi和p 的情況下,想求得x,則至少需要n2(lb p)2次乘法,當(dāng)n 及p 很大時(shí),可知由y 求x 幾乎不可能。由分析可以看出,引入偽秘密矩陣D'有兩個(gè)好處:
一是各偽秘密矩陣D'能保證動(dòng)態(tài)變化。對(duì)于不同的簇首申請(qǐng)者,公鑰中心都會(huì)根據(jù)不同的申請(qǐng)者驗(yàn)證份額Vi=(Vx,Vy)中的Vx(p=Vx)生成相應(yīng)的偽秘密矩陣D',因此不同的D'中對(duì)應(yīng)的元素d'ij也各不相同。
二是單向函數(shù)y=f(x)能保證算法的前向安全性。即便是攻擊者通過其他手段,得到了偽秘密矩陣D'中的元素d'ij,其想實(shí)現(xiàn)由d'ij推算出秘密矩陣D中的元素dij也幾乎不可能,從而杜絕了各不同的簇首申請(qǐng)者合謀攻擊。
表1 計(jì)算過程Tab.1 Calculation process
2.2.1 系統(tǒng)初始化
定義網(wǎng)絡(luò)中無線傳感器簇?cái)?shù)目為n,每個(gè)簇首賦予一個(gè)特定的數(shù)字作為其身份標(biāo)識(shí),即簇首節(jié)點(diǎn)集合為{Id1,Id2,…,…,Idn},公鑰中心首先進(jìn)行如下操作:
步驟1 選定素?cái)?shù)q,由此確定循環(huán)群Gq,之后選取此循環(huán)群上的橢圓曲線E,G為基點(diǎn),p為其階。
步驟2 選取公秘矩陣D 并秘密保存,D 必須滿足是(n×n)對(duì)稱矩陣。
步驟3 構(gòu)造兩個(gè)哈希函數(shù):
步驟4 構(gòu)建簇首身份范德蒙矩陣ID。
步驟5 依據(jù)簇首節(jié)點(diǎn)集合產(chǎn)生一個(gè)單向函數(shù)多項(xiàng)式,如下:
根據(jù)不同的簇首節(jié)點(diǎn)產(chǎn)生不同的偽秘密矩陣元素。
步驟6 公鑰中心對(duì)簇首層廣播循環(huán)群Gq、橢圓曲線E、基點(diǎn)G、哈希函數(shù)H0和H1。
2.2.2 用戶密鑰生成
步驟1 由申請(qǐng)者選取橢圓曲線上某一點(diǎn)P(xi,yi)作為自己的私鑰,即Si=(xi,yi);同時(shí)隨機(jī)選取數(shù)zi∈Ζ,計(jì)算得出用戶的驗(yàn)證份額Vi=ziSi=(Vx,Vy)。
步驟2 申請(qǐng)者秘密保存隨機(jī)數(shù)zi(用于隨后通信過程中的簽密過程),把自己的驗(yàn)證份額Vi連同身份信息Idi合并得[Vi‖Idi]一并發(fā)送至公鑰中心(隨機(jī)數(shù)zi不能發(fā)送給公鑰中心,以防止公鑰中心泄密,zi僅用于隨后簇首間通信)。
步驟3 公鑰中心收到信息后,利用單向函數(shù)多項(xiàng)式y(tǒng)=f(x)mod(p)和秘密矩陣D中元素dij,產(chǎn)生一個(gè)偽秘密矩陣D'中元素(為了保證每一個(gè)簇首節(jié)點(diǎn)對(duì)應(yīng)不同偽秘密矩陣,需要取申請(qǐng)者的驗(yàn)證參數(shù)參與到單向函數(shù)多項(xiàng)式的計(jì)算中,即有,如下:
從而得偽秘密矩陣D'。
步驟4 公鑰中心在身份范德蒙矩陣ID 中隨機(jī)選取一列,比如j列,與上步生成的偽秘密矩陣D'聯(lián)合,計(jì)算集合B1=并由此計(jì)算出用戶Idi的公鑰Pi=G ?Vi及公鑰中心的驗(yàn)證參數(shù)Kij=
步驟5 公鑰中心發(fā)送用戶公鑰Pi,集合B1及驗(yàn)證參數(shù)Kij至申請(qǐng)者。
步驟6 申請(qǐng)者收到公鑰中心返回的信息后計(jì)算Kji=并驗(yàn)證是否等于上步計(jì)算的Kij:如果通過,則申請(qǐng)接受公鑰Pi,并秘密保存自己的私鑰Si,同時(shí)公鑰中心對(duì)外公布用戶公鑰Pi;否則,返回錯(cuò)誤,申請(qǐng)失敗,輸出符號(hào)⊥。
至此,完成各簇首節(jié)點(diǎn)的公私鑰的配置。
2.2.3 簽密
身份為Idi的節(jié)點(diǎn)為了給身份Idj的簇首節(jié)點(diǎn)發(fā)送一個(gè)消息Msg,執(zhí)行以下步驟:
步驟1 Idi首先取公鑰申請(qǐng)階段秘密保存的隨機(jī)數(shù)zi,與橢圓曲線上的基點(diǎn)G 計(jì)算ziG=R(r1,r2);之后取r1與簇首Idj的公鑰Pj計(jì)算得驗(yàn)證參數(shù)(u,v)=r1×Pj;再用u對(duì)消息Msg加密得Ecr=Eu(Msg)。
步驟2 利用哈希函數(shù)計(jì)算參數(shù)M=H1(r1‖Ecr),參數(shù)N=H0(k1M)G。
步驟3 計(jì)算參數(shù)O'=Si-H0(r1M)mod q,參數(shù)O=M +O'。
步驟4 Idi將秘密保存的隨機(jī)數(shù)zi與上述各參數(shù),生成密文Ci=(Ecr,R:(r1,r2),N,O,z),發(fā)送至Idj。
2.2.4 解簽密
簇首節(jié)點(diǎn)Idj接收到密文Ci后,執(zhí)行以下步驟:
步驟1 首先提取節(jié)點(diǎn)Idi的R 的前半部分r1,與自己的公鑰Pj計(jì)算驗(yàn)證參數(shù)U'=r1Pj=(u,v)。
步驟2 計(jì)算M=H1(r1‖Ecr),O'=O-M。
步驟3 用u對(duì)加密消息Msg解密得到Msg=Du(Ecr)。
步驟4 計(jì)算P'=N+O'G,并驗(yàn)證(zi·P')?=(Pi):如果驗(yàn)證二者相等,則簇首Idi與Idj的共同的通信密鑰即為u,同時(shí)接受明文Msg,之后將v 保存,作為簇內(nèi)共享密鑰;否則驗(yàn)證失敗,輸出符號(hào)⊥。
至此,完成簇首之間通信。
2.3.1 簇內(nèi)密鑰對(duì)申請(qǐng)
在每個(gè)簇內(nèi)通過上述簇首節(jié)點(diǎn)解簽密過程預(yù)置對(duì)稱共享密鑰v。簇首為Idi的簇內(nèi)節(jié)點(diǎn)Idim需要申請(qǐng)自己的公私鑰對(duì)。按如下步驟:
步驟1 節(jié)點(diǎn)Idim選取隨機(jī)數(shù)rm,與簇共享密鑰v(由上述簇首層運(yùn)算得出)相乘之后發(fā)送[rm‖v(Sm)‖Idim]至簇首Idi。
步驟2 簇首Idi選取隨機(jī)數(shù)rn,依次計(jì)算兩個(gè)參數(shù)P1=rnSm-H0(Idim),P2=rn+H0(Idi)H0(P1Idim)。
步驟3 簇首Idi計(jì)算節(jié)點(diǎn)Idim的公鑰Pim=G·Sm,之后發(fā)送密文Ci=(P1,P2,H0(Idi))至簇內(nèi)節(jié)點(diǎn)Idim。
步驟4 節(jié)點(diǎn)Idim計(jì)算P2Sm的值是否等于P1+H0(Idim)+rmH0(Idi)H0(P1)的值:如果相等,則申請(qǐng)者接受公鑰Pim,并秘密保存自己的私鑰Sm,同時(shí)簇首Idi對(duì)外公布簇內(nèi)用戶公鑰P1;若不相等,則返回錯(cuò)誤,申請(qǐng)失敗,輸出符號(hào)⊥。
至此,完成各內(nèi)部節(jié)點(diǎn)的公私鑰的配置。
2.3.2 簇內(nèi)解簽密
簇內(nèi)各節(jié)點(diǎn)申請(qǐng)完密鑰對(duì)后,按上述簇首解簽密過程進(jìn)行簽密與解簽密,在此不再重復(fù)描述。
定理1可驗(yàn)證性。在簇首層(Cluster-Head Layer)公鑰中心和簇首Idi按照上述用戶密鑰生成步驟進(jìn)行公鑰申請(qǐng),驗(yàn)證若Kji=Kji,申請(qǐng)者接受分配公鑰的過程滿足算法正確性要求。
證明 首先將2個(gè)矩陣偽秘密矩陣D'和簇首身份信息矩陣ID)進(jìn)行乘和轉(zhuǎn)置運(yùn)算:
而在用戶密鑰生成步驟中,公鑰中心隨機(jī)選取的第j 列,與偽秘密矩陣D'聯(lián)合,計(jì)算集合B1={bj0,bj1,…,b(jn-1)}和集合
由上述過程可以看出,2 個(gè)矩陣(偽秘密矩陣D'和簇首身份信息矩陣ID)運(yùn)算后得到的新矩陣K 仍然是對(duì)稱矩陣,對(duì)于矩陣K 中的元素來說,均有Kij=Kji。因此公鑰中心公鑰分配過程滿足正確性要求。 證畢。
定理2不可否認(rèn)性。上述簇間通信過程中的簇首間驗(yàn)證參數(shù)Pi的再計(jì)算過程滿足算法正確性要求。
證明
因?yàn)镺'=Si-H0(RiM)mod q,N=H0(RiM)G
所以P'=N+O'G=N +(Si-H0(RiM)mod q)G=H0(RiM)G +(Si-H0(RiM)mod q)G=Si?G
因?yàn)镻i=Vi?G,Vi=zi?Si
所以Pi=zi?Si?G=zi?P' 證畢。
IDC 算法中,申請(qǐng)者的私鑰由申請(qǐng)者自己秘密保存,公鑰中心生成的是申請(qǐng)者的公鑰,在通信過程中傳遞的驗(yàn)證參數(shù)也是基于申請(qǐng)者的公鑰,即使某一節(jié)點(diǎn)被捕獲,并不會(huì)對(duì)算法的機(jī)密性產(chǎn)生影響。其次,由于偽秘密矩陣D'的引入,實(shí)現(xiàn)的全局秘密的動(dòng)態(tài)生成,敵手難以對(duì)偽秘密矩陣D'進(jìn)行破解,而由dij'到dij的單向性質(zhì)更加鞏固了這種假設(shè),說明算法的抗攻擊(合謀攻擊)性得到了保證。
初始化配置完成后,某一簇首申請(qǐng)者通過基于身份矩陣的方法申請(qǐng)自己的公鑰,在申請(qǐng)成功后擁有自己的私鑰si和由公鑰中心分配的公鑰Pi,之后通過和同級(jí)另一簇首相互簽密從而獲得共同的通信密鑰u,因此,IDC 算法采用矩陣D 作為公鑰中心的全局秘密,結(jié)合動(dòng)態(tài)偽秘密矩陣D'實(shí)現(xiàn)申請(qǐng)者公鑰生成,要比傳統(tǒng)基于身份的認(rèn)證系統(tǒng)中用簡(jiǎn)單數(shù)字或哈希函數(shù)等作為全局秘密要更為安全。
注 簇內(nèi)通信過程中簇首與普通節(jié)點(diǎn)的申請(qǐng)過程與解簽密過程相似,唯一不同點(diǎn)在于簇內(nèi)普通節(jié)點(diǎn)申請(qǐng)過程不是基于身份矩陣,而是基于身份Id 與哈希函數(shù)的數(shù)學(xué)運(yùn)算得出,這樣做是為了降低簇內(nèi)節(jié)點(diǎn)的計(jì)算量和存儲(chǔ)量,但二者生成密鑰對(duì)的思路相同,只是形式有差別,故此安全分析僅選擇簇間就可說明問題,簇內(nèi)不再假設(shè)。
3.3.1 場(chǎng)景設(shè)置
本文仿真實(shí)驗(yàn)環(huán)境搭建參考CMU 大學(xué)MONARCH 項(xiàng)目(CMU Monarch Projects Wireless and Mobility extension)[18]提出的multihop無線網(wǎng)線模擬實(shí)驗(yàn)所用方法。分3個(gè)步驟:一是修改并新增protocol 代碼文件*.cc 和*.h;二是對(duì)packet 頭文件*.tcl 和*.h 進(jìn)行修改,同時(shí)對(duì)參數(shù)文件ns_default.tcl 進(jìn)行定義;三是對(duì)makefile文件進(jìn)行修改。
利用方法中的Setdest 程序隨機(jī)生成規(guī)模為60 的WSN 場(chǎng)景,相關(guān)參數(shù)的設(shè)置具體有三塊:
第一塊是網(wǎng)絡(luò)性能方面,如表2所示。
第二塊為各比較算法能耗量化設(shè)置,對(duì)算法AVM、EBSGL、LCA與IDC算法進(jìn)行能耗和時(shí)耗比較。具體如表3所示。
第三塊為可變量固定場(chǎng)景設(shè)置。由于在AVM 算法、LCA算法中的參數(shù)N1、L1、N不是固定的長(zhǎng)度,其選取數(shù)值不同會(huì)導(dǎo)致計(jì)算能耗差異,因此需要對(duì)其進(jìn)行固定操作。文獻(xiàn)[1-2]中證明的RSA模數(shù)值最低安全保證長(zhǎng)度值與閾值的最優(yōu)典型設(shè)置域,本文將實(shí)驗(yàn)場(chǎng)景設(shè)置為6個(gè),具體為:S1(N1,L1,N):(256,64,1 024);S2:(256,128,1 024);S3:(512,64,1 024);S4:(256,256,2 048);S5:(1 024,256,2 048);S6:(2 048,128,2 048)。通過編寫tcl 腳本定義出相應(yīng)的通信過程,使用SET 命令對(duì)場(chǎng)景進(jìn)行設(shè)置,包括網(wǎng)絡(luò)的模擬結(jié)構(gòu)以及通信過程,之后通過tracefd文件記錄模擬過程的跟蹤數(shù)據(jù)。
表2 網(wǎng)絡(luò)性能參數(shù)設(shè)置Tab.2 Performance parameter settings of the network
表3 四種算法計(jì)算量對(duì)比Tab.3 Comparison of calculation amount of four algorithms
3.3.2 實(shí)驗(yàn)對(duì)比
圖1和圖2給出了四種算法的能量消耗與時(shí)間消耗對(duì)比,總體看來,IDC算法在能量消耗與時(shí)間消耗方面均優(yōu)于其他三種算法??梢钥闯?,在完成一輪最小粒度的通信過程中,IDC算法能量消耗達(dá)到了毫焦耳(mJ)級(jí),時(shí)間消耗基本接近毫秒(ms)級(jí),均遠(yuǎn)優(yōu)于LCA、AVM、EBS-GL算法,充分說明IDC算法的優(yōu)勢(shì)。原因有:1)因?yàn)镮DC算法在滿足上述安全需求的情況下,針對(duì)節(jié)點(diǎn)所處位置的不同及運(yùn)算能力的差異,采用分層分級(jí)方法,在減少系統(tǒng)存儲(chǔ)量的情況下同時(shí)提升了算法的處理效率。2)因?yàn)镮DC 算法采用的一次解簽密方案即實(shí)現(xiàn)了節(jié)點(diǎn)間的認(rèn)證及公密生成,大幅降低了通信成本,通信資源開銷也因此變少。3)因?yàn)楣€中心的核心秘密身份矩陣是由身份Id生成的范德蒙矩陣,矩陣的每一列元素都可以唯一生成,在節(jié)省存儲(chǔ)空間的同時(shí)也降低了算法計(jì)算復(fù)雜度。
其次,IDC 算法性能穩(wěn)定。由圖1 可以看出,從S1場(chǎng)景到S6場(chǎng)景(L1:64→128,N1:256→2 048)的變化過程中,IDC 算法在完成一次單精度乘法的耗時(shí)始終處于一個(gè)比較平穩(wěn)的水平,即能量消耗在1~10 mJ,跨度不大于1.3 mJ;時(shí)間消耗一直保持在0.002~0.006 s。而LCA 等算法在場(chǎng)景S3到S4的變化過程中,出現(xiàn)了比較大的波動(dòng)。特別地,在S3場(chǎng)景下,新算法耗時(shí)0.003 s,而LCA 算法耗時(shí)接近0.1 s,新算法的效率要高出其將近30 倍,如圖2 所示。這就表明IDC 算法在傳送的信息比特位長(zhǎng)度值變化幅度較大的情況下,具有較強(qiáng)的穩(wěn)定性。
圖1 四種算法的能耗對(duì)比Fig.1 Energy consumption of four algorithms
圖2 四種算法時(shí)耗對(duì)比Fig.2 Time consumption of four algorithms
無線傳感器網(wǎng)絡(luò)是一種非常有應(yīng)用前景的傳感器網(wǎng)絡(luò)。由于其自組織的網(wǎng)絡(luò)特點(diǎn),設(shè)計(jì)出安全且低能耗的輕量級(jí)通信協(xié)議尤為重要。本文提出的基于身份的IDC認(rèn)證算法,由公鑰中心生成申請(qǐng)者的公鑰,由用戶自己秘密選定私鑰,從而避免了基于身份認(rèn)證算法的密鑰托管問題。同時(shí),算法采用分層結(jié)構(gòu)和分級(jí)處理,增強(qiáng)了簇間通信的安全性,降低了簇內(nèi)節(jié)點(diǎn)的計(jì)算量和存儲(chǔ)量。通過實(shí)驗(yàn)對(duì)比,新提出的IDC算法能夠保證網(wǎng)絡(luò)通信安全,并且具有低能耗和高穩(wěn)定特性,非常適合于WSN。由于目前國內(nèi)外對(duì)研究對(duì)真實(shí)環(huán)境下的實(shí)際實(shí)驗(yàn)測(cè)試工作研究還很薄弱,而本文所提到的實(shí)驗(yàn)環(huán)境也僅是利用仿真軟件進(jìn)行人為設(shè)定,證明了算法的理論可行性,但缺乏在實(shí)際環(huán)境下的演練測(cè)試,所以下一步工作的重點(diǎn)除了對(duì)算法本身的性能研究之外,將嘗試在真實(shí)環(huán)境測(cè)試所研究的算法。