肖 希 金 亮
(1.海裝重慶局 綿陽 621000)(2.海裝電子部 北京 100021)
Ad Hoc網(wǎng)絡(luò)(Mobile Ad Hoc Network,簡稱 MANET)是由一組無線用戶(節(jié)點)組成的自治集合。它不需要固定基站支持,無中心管理,可臨時組織,并且具有高度移動性,可廣泛應(yīng)用于軍事戰(zhàn)術(shù)通信、應(yīng)急通信、臨時通信、傳感器網(wǎng)絡(luò),以及其他需要快速布署、動態(tài)組網(wǎng)的通信場合。然而,由于其本身固有的特性(如開放式介質(zhì)、動態(tài)拓?fù)浼胺植际胶献鞯龋?,移動自組網(wǎng)也很容易受到各種攻擊[1]。
密鑰管理在移動自組網(wǎng)中是一種重要的安全管理手段,也是當(dāng)前研究的一個熱點和難點。由于在Ad Hoc網(wǎng)絡(luò)中缺乏集中控制,使得傳統(tǒng)網(wǎng)絡(luò)中密鑰管理十分困難。傳統(tǒng)網(wǎng)絡(luò)中往往有一個服務(wù)器作為密鑰管理中心,基于PKI的方法需要一個全局可信任的權(quán)威證書(CA,certificate authority)給每個節(jié)點提供證書,同時證書可以通過CA的公鑰進(jìn)行證明[2]。而在Ad Hoc網(wǎng)絡(luò)中因為節(jié)點都在運動,所以缺乏這樣一個密鑰管理中心,每個節(jié)點是平等的,有線網(wǎng)絡(luò)中公鑰PKI方法在Ad Hoc中并不適用,很低的資源可用率使得不能使用很復(fù)雜的認(rèn)證和編碼算法,而且移動節(jié)點往往依賴電池,因而限制了計算能力,傳統(tǒng)的基于PKI的方法的認(rèn)證和編碼機(jī)制在無線網(wǎng)絡(luò)中產(chǎn)生和認(rèn)證數(shù)字簽名的開銷都很大;對稱密鑰方法由于其很小的計算復(fù)雜度在移動網(wǎng)絡(luò)中應(yīng)該更有效,但由于通訊方要有各自的私鑰,存在一個問題就是如何在第一個位置產(chǎn)生共享的密鑰。所以在Ad Hoc網(wǎng)絡(luò)中需要使用分布式密鑰管理方法[3]。
開發(fā)一個新的適合于Ad Hoc網(wǎng)絡(luò)的有效的認(rèn)證和加密算法是十分具有挑戰(zhàn)性的。本文介紹了一種新的移動自組網(wǎng)絡(luò)中分布式密鑰管理和認(rèn)證的方法,該方法基于身份驗證,密鑰由多個節(jié)點共同產(chǎn)生和驗證,而不需要一個可信的第三方。
基于身份加密思想就是采用共知的信息(如IP地址,e-mail地址或身份)作為其公鑰,這樣就不用通過網(wǎng)絡(luò)傳播共知的信息。
采用基于身份的加密方法有四個步驟:設(shè)置,抽取,加密,解密。
·設(shè)置:產(chǎn)生主公/私鑰對和普通的參數(shù)。
·抽?。航o定任意字符串作為公鑰,并產(chǎn)生相應(yīng)的私鑰。
·加密:取消息并用其公鑰進(jìn)行加密。
·解密:使用相應(yīng)的私鑰進(jìn)行解密。
傳統(tǒng)的基于身份的加密,所有的私鑰是由一個可信任的密鑰產(chǎn)生器 PKG(private key generator)而產(chǎn)生的[4~5]。PKG擁有一個主密鑰,用于計算私密鑰,也就是說,沒有主鑰,任何私鑰不可能被計算。和其他基于中心的方法類似,基于身份加密系統(tǒng)的PKG中的主密鑰也容易暴露,因而不能滿足Ad Hoc網(wǎng)絡(luò)分布式密鑰管理的需要,可以使用門限方案來提高網(wǎng)絡(luò)的容錯能力。
首先假定:1)Ad Hoc網(wǎng)絡(luò)中的每個節(jié)點只有唯一的身份號或IP地址;2)每個節(jié)點運動的節(jié)點可以發(fā)現(xiàn)它的一跳鄰居,并可以得到網(wǎng)絡(luò)中其他節(jié)點的身份。
假定一個Ad Hoc網(wǎng)絡(luò)在初始階段有n個節(jié)點。網(wǎng)絡(luò)有一個公/私鑰對,稱為主鑰〈PK,SK〉,用于產(chǎn)生網(wǎng)絡(luò)節(jié)點中的所有密鑰。主鑰對由密鑰產(chǎn)生部件產(chǎn)生,其中主鑰PK讓網(wǎng)絡(luò)中的所有節(jié)點知道,主私鑰SK則由網(wǎng)絡(luò)中的n個節(jié)點分享。每個節(jié)點擁有主私鑰SK的一部分,每個節(jié)點依據(jù)其本身的信息不能重建主私鑰。任意k個節(jié)點可以重建主私鑰,但任意少于k-1個節(jié)點的信息不能重建。當(dāng)一個節(jié)點加入網(wǎng)絡(luò)時,每個節(jié)點擁有一個唯一的身份或IP地址。網(wǎng)絡(luò)中每個節(jié)點的公鑰就是它的身份標(biāo)志,對應(yīng)其身份,每個節(jié)點可獲得其私鑰,在利用網(wǎng)絡(luò)服務(wù)之前要注冊身份。獲得私鑰的方式至少對k個鄰居節(jié)點提出私鑰產(chǎn)生(PKG)服務(wù)請求。
認(rèn)證步驟包括以下幾個方面:主公/私鑰產(chǎn)生,分布式密鑰產(chǎn)生,新的主私鑰創(chuàng)建和認(rèn)證過程。
1)主鑰產(chǎn)生
設(shè)計的分布式密鑰產(chǎn)生機(jī)制不同于基本的(k,n)門限方案,它不需要一個可信的第三方來計算主鑰,并將其分成很多片并分配到各個節(jié)點中去。主私鑰不是在一個單節(jié)點中構(gòu)建,主鑰對是由網(wǎng)絡(luò)中最初節(jié)點合作產(chǎn)生的。
2)分布式私鑰產(chǎn)生
使用基于身份的機(jī)密,移動節(jié)點的公鑰是字符串。在我們的方法中,公鑰計算公式為:QID=H(ID‖生存時間),其中H()代表身份加密中定義的哈希功能,ID代表節(jié)點的身份,生存時間是保護(hù)私鑰丟失的一個印戳。當(dāng)一個公鑰過期后,節(jié)點需要獲得一個新的公鑰及其相應(yīng)的私鑰。
為了利用網(wǎng)絡(luò)服務(wù)并使用其公鑰QID來解密從其他節(jié)點而來的加密的消息包,節(jié)點同樣需要獲得它相應(yīng)的私鑰。獲得私鑰至少要聯(lián)系k個鄰居節(jié)點,表示身份并請求私鑰產(chǎn)生PKG(request private key generation)服務(wù),擁有主鑰分享的節(jié)點可以是PKG服務(wù)節(jié)點。由于網(wǎng)絡(luò)中所有節(jié)點分享了主私鑰,因而網(wǎng)絡(luò)中的任何一個節(jié)點都可以是PKG服務(wù)節(jié)點。
k個PKG服務(wù)節(jié)點中的任何一個產(chǎn)生一個新的私鑰sk并將其發(fā)送到請求節(jié)點。為了保證產(chǎn)生的分享值能安全地傳輸,當(dāng)發(fā)出傳送請求時,請求節(jié)點同樣提出它自己產(chǎn)生的臨時公鑰。每一個PKG服務(wù)節(jié)點使用請求節(jié)點的臨時公鑰pk-temp發(fā)送加密的分享值到請求的節(jié)點。新密鑰sk分享的產(chǎn)生過程可以表示為:ski=SiQID,其中Si(i=1,…,k)是服務(wù)節(jié)點的主私鑰的分享值,ID是請求節(jié)點的身份,QID是它的公鑰,ski表示對請求節(jié)點產(chǎn)生的私鑰分享。
總之,任意k個分享主密鑰的節(jié)點能夠?qū)ζ渌?jié)點完成PKG服務(wù),只要被攻擊的個數(shù)少于k個,就不會知道節(jié)點的私鑰。在分布式密鑰產(chǎn)生階段,網(wǎng)絡(luò)中的每個節(jié)點獲得其公/私密鑰對,同時注冊它的NID。它丟棄它的臨時公/私密鑰對,同時保持新的密鑰對為以后的認(rèn)證和通訊使用。由于PKG為一個特定的節(jié)點只組織一次,因而攻擊者不能夠復(fù)制在網(wǎng)絡(luò)中存在的身份。一種可能就是需要PKG服務(wù)的節(jié)點不能得到k個可達(dá)到的鄰居,但移動可以解決這個問題,請求節(jié)點為了獲得k個節(jié)點的門限值,需不停地在網(wǎng)絡(luò)中運動,以發(fā)現(xiàn)更多的節(jié)點。
3)節(jié)點新主鑰的創(chuàng)建
4)基于身份的認(rèn)證
認(rèn)證用于保證每個移動節(jié)點都有獨一無二的身份,沒有一個攻擊者能夠獲得非授權(quán)的信息從而偽造一個節(jié)點,我們的方法使用基于身份的認(rèn)證提供點對點的認(rèn)證。假如源節(jié)點S想向節(jié)點D發(fā)送一個認(rèn)證消息,源節(jié)點S能使用它的私鑰簽署消息,使用目標(biāo)節(jié)點的身份(公鑰)來加密并發(fā)送到目標(biāo)節(jié)點。只有節(jié)點D才能解密。而且,節(jié)點D能夠保證消息是否真的從源節(jié)點S發(fā)送而來。源節(jié)點S只是使用它的私鑰簽署消息,使用目標(biāo)節(jié)點的身份(公鑰)來加密,同時發(fā)送到目標(biāo)節(jié)點。當(dāng)目標(biāo)節(jié)點接受到這個加密的消息,它首先用它的私鑰解密,然后使用源節(jié)點的公鑰。如果驗證過程成功,目標(biāo)節(jié)點接收包,作為一個有效的消息。以上的認(rèn)證方法是一個加密和簽名的方法,數(shù)字簽名用于消息的認(rèn)證,加密是用于消息的機(jī)密性。同時,通過稍微修改基于身份的密碼系統(tǒng),通訊節(jié)點可以不需要額外的密鑰交換在雙方產(chǎn)生一個共享的密鑰:在源節(jié)點這邊,共享的密鑰是通過使用源節(jié)點的私鑰和目的節(jié)點的公鑰產(chǎn)生,同時目的節(jié)點通過使用它們的私鑰和源節(jié)點的公鑰計算出這個私鑰。產(chǎn)生的共享密鑰可以作為對稱密鑰來加密和認(rèn)證,而且使用對稱密鑰可以節(jié)省大量的帶寬,而且該方法不像很多協(xié)議需要握手機(jī)制,這樣可以大大減少通訊開銷。
可用性保證在有攻擊時網(wǎng)絡(luò)的生存能力。在我們的方法中,(k,n)門限的算法中n個節(jié)點中任意k個節(jié)點共同工作用于密鑰產(chǎn)生和密鑰管理。我們的安全措施是容忍k-1個節(jié)點,即攻擊方已經(jīng)讓k-1個節(jié)點中斷了密鑰的產(chǎn)生和管理。
機(jī)密性保證特定的信息不會暴露給未授權(quán)的實體。完整性保證消息不會因為傳輸失敗而中斷。在本文的方法中,機(jī)密性和完整性通過基于身份的加密機(jī)制完成?;谏矸莸募用苁窃趦蓚€節(jié)點一次通訊完成。在這個過程中,他們計算和交換一個對稱性密鑰,這個對稱密鑰還可用于之后的通訊。
認(rèn)證性保證每個通訊節(jié)點的身份,以致沒有攻擊者能偽造一個節(jié)點,未獲得授權(quán)而訪問資源。在我們的方法中,獲得一個安全的認(rèn)證是基于身份的加密。非認(rèn)可機(jī)制保證最初的消息不能否認(rèn)發(fā)送了消息。非認(rèn)可機(jī)制還可用于檢測和隔離已被攻擊的節(jié)點。當(dāng)節(jié)點A從節(jié)點B接受到一個錯誤的消息,非認(rèn)可機(jī)制允許節(jié)點A使用消息通知其他節(jié)點,節(jié)點B已經(jīng)受到攻擊。
比較傳統(tǒng)的PKI的方法,本文的方法只有很低的通訊開銷。公/私鑰對產(chǎn)生于PKG服務(wù)節(jié)點,而公鑰來源于節(jié)點的身份,是一個公共的信息。因此沒有必要進(jìn)行證書產(chǎn)生、傳播和存儲的過程。同時常規(guī)的PKI密鑰管理的方法假定每個節(jié)點的公/私鑰對是自主產(chǎn)生的,公鑰在網(wǎng)絡(luò)中傳播,為了確定每個節(jié)點的身份,公鑰必須由一個可信任的認(rèn)證中心產(chǎn)生(CA)。證書同樣需要在網(wǎng)絡(luò)中傳播,以致于每個節(jié)點能夠得到其他節(jié)點的證書,傳播這些公鑰和證書要消耗大量的帶寬,同時導(dǎo)致了大量的網(wǎng)絡(luò)延遲。在本文的方法中,公鑰是基于每個節(jié)點的身份,而且長度很短,使用較短的公/私鑰對并且不用傳播很長的證書大大降低了計算的消耗和通訊開銷,此外在傳統(tǒng)的PKI方法中,緩沖存儲這些公鑰和證書要增加相當(dāng)可觀的本地開銷。
在我們的方法中,通訊開銷主鑰產(chǎn)生在密鑰產(chǎn)生階段,在網(wǎng)絡(luò)初始階段,n個節(jié)點需要共同產(chǎn)生主鑰對,這增加了網(wǎng)絡(luò)設(shè)置時間。此外,每個節(jié)點需要廣播一個密鑰產(chǎn)生要求到它的鄰居上,而且每個PKG服務(wù)節(jié)點需答復(fù)它的分密鑰給要求的節(jié)點,所以在網(wǎng)絡(luò)初始階段的PKG服務(wù)同樣會帶來很多通訊開銷,但它是安全和通訊開銷的一個權(quán)衡,我們使用門限來提高網(wǎng)絡(luò)的容錯能力,同時給網(wǎng)絡(luò)帶來更多的通訊開銷。
我們的方法中主鑰計算量來自密鑰產(chǎn)生和密鑰操作,例如:加密、解密、簽名和認(rèn)證。主鑰產(chǎn)生使用門限密鑰分享,計算復(fù)雜度依賴于門限的數(shù)量?;谏矸莸暮灻a(chǎn)生和認(rèn)證的復(fù)雜度和傳統(tǒng)方法一樣,基于身份的加密由于密鑰長度較短,消耗的計算量較小。
本文介紹了一種在移動自組網(wǎng)中基于身份認(rèn)證的密鑰管理方法。比較基于PKI的認(rèn)證方法,該方法使用一個自組織的方法提供密鑰的產(chǎn)生和分配,而不用一個可信的第三方。而且,建議的認(rèn)證機(jī)制提供了點對點的安全機(jī)制,并且使用了較少的通訊開銷和資源消耗。
[1]RAMANATHAN R,REDI Jason.A brief overview of mobile Ad Hoc networks:Challenges and Directions[J].IEEE Communications Magazine 50th anniversary commemoratives issue,2002-05:20-26.
[2]L Buttyan,J P Hubaux.Report on a working session on security in wireless Ad Hoc networks[J].Mobile Computing and Communications Review,2003,7(1):74-94.
[3]Lidong Zhou,Zygmunt J Haas.Securing ad hoc networks[J].IEEE Networks Special Issue on Network Security,2003,13(6):24-30.
[4]Seung Yi,Robin Kravets.MOCA:Mobile certificate authority for wireless Ad Hoc Networks[C]//Proc of 2nd Annual PKI Research Workshop Program(PKI 03).Gaithersburg,Maryland,2003,4:65-79.
[5]P.Papadimitratos,Z.Haas.Secure Routing for Mobile Ad Hoc Networks[C]//Proceedings of the SCS Communication Networks and Distributed Systems Modeling and Simulation Conference,2002,1:98-101.
[6]K.Paul,S.Bandyopadhyay,D.Saha,et al.Communication-Aware Mobile Hosts in Ad-h(huán)oc Wireless Network[C]//Proc.of the IEEE International Conference on Personal Wireless Communication,Jaipur,India,2003,2:125-138.
[7]D.Bonh,M.Franklin.Identity-Based Encryption from Weil Pairing.Advances in Cryptology,CRYPTO 2001,Lecture Notes in Computer Science,Springer Verlag,2001,2139:213-229.
[8]J.Kong,P.Zerfos,H.Luo,et al.Providing Robust and U-biquitous Security Support for Mobile Ad-Hoc Networks[C]//Proceedings of the IEEE 9thInternational Conference on Network Protocols(ICNP'01),2001.
[9]A.Shamir.How to Share a Secret[J].Communications of the ACM,2004,22(11):612-613.
[10]孫昕,王鑫.一種改進(jìn)的無線傳感器網(wǎng)絡(luò)動態(tài)密鑰管理方案[J].計算機(jī)與數(shù)字工程,2011,39(10).
[11]張浩,王培東,王巖.鄰位異或算法在WEP協(xié)議密鑰更換中的應(yīng)用[J].計算機(jī)與數(shù)字工程,2010,38(3).
[12]T.P.Pederson.Non-Interactive and Information-Theoretic Secure Verifiable Secret Sharing.Lecture Notes in Computer Science,1992:129-140.