肖 希 金 亮
(1.海裝重慶局 綿陽 621000)(2.海裝電子部 北京 100021)
Ad Hoc網絡(Mobile Ad Hoc Network,簡稱 MANET)是由一組無線用戶(節點)組成的自治集合。它不需要固定基站支持,無中心管理,可臨時組織,并且具有高度移動性,可廣泛應用于軍事戰術通信、應急通信、臨時通信、傳感器網絡,以及其他需要快速布署、動態組網的通信場合。然而,由于其本身固有的特性(如開放式介質、動態拓撲及分布式合作等),移動自組網也很容易受到各種攻擊[1]。
密鑰管理在移動自組網中是一種重要的安全管理手段,也是當前研究的一個熱點和難點。由于在Ad Hoc網絡中缺乏集中控制,使得傳統網絡中密鑰管理十分困難。傳統網絡中往往有一個服務器作為密鑰管理中心,基于PKI的方法需要一個全局可信任的權威證書(CA,certificate authority)給每個節點提供證書,同時證書可以通過CA的公鑰進行證明[2]。而在Ad Hoc網絡中因為節點都在運動,所以缺乏這樣一個密鑰管理中心,每個節點是平等的,有線網絡中公鑰PKI方法在Ad Hoc中并不適用,很低的資源可用率使得不能使用很復雜的認證和編碼算法,而且移動節點往往依賴電池,因而限制了計算能力,傳統的基于PKI的方法的認證和編碼機制在無線網絡中產生和認證數字簽名的開銷都很大;對稱密鑰方法由于其很小的計算復雜度在移動網絡中應該更有效,但由于通訊方要有各自的私鑰,存在一個問題就是如何在第一個位置產生共享的密鑰。所以在Ad Hoc網絡中需要使用分布式密鑰管理方法[3]。
開發一個新的適合于Ad Hoc網絡的有效的認證和加密算法是十分具有挑戰性的。本文介紹了一種新的移動自組網絡中分布式密鑰管理和認證的方法,該方法基于身份驗證,密鑰由多個節點共同產生和驗證,而不需要一個可信的第三方。
基于身份加密思想就是采用共知的信息(如IP地址,e-mail地址或身份)作為其公鑰,這樣就不用通過網絡傳播共知的信息。
采用基于身份的加密方法有四個步驟:設置,抽取,加密,解密。
·設置:產生主公/私鑰對和普通的參數。
·抽取:給定任意字符串作為公鑰,并產生相應的私鑰。
·加密:取消息并用其公鑰進行加密。
·解密:使用相應的私鑰進行解密。
傳統的基于身份的加密,所有的私鑰是由一個可信任的密鑰產生器 PKG(private key generator)而產生的[4~5]。PKG擁有一個主密鑰,用于計算私密鑰,也就是說,沒有主鑰,任何私鑰不可能被計算。和其他基于中心的方法類似,基于身份加密系統的PKG中的主密鑰也容易暴露,因而不能滿足Ad Hoc網絡分布式密鑰管理的需要,可以使用門限方案來提高網絡的容錯能力。

首先假定:1)Ad Hoc網絡中的每個節點只有唯一的身份號或IP地址;2)每個節點運動的節點可以發現它的一跳鄰居,并可以得到網絡中其他節點的身份。
假定一個Ad Hoc網絡在初始階段有n個節點。網絡有一個公/私鑰對,稱為主鑰〈PK,SK〉,用于產生網絡節點中的所有密鑰。主鑰對由密鑰產生部件產生,其中主鑰PK讓網絡中的所有節點知道,主私鑰SK則由網絡中的n個節點分享。每個節點擁有主私鑰SK的一部分,每個節點依據其本身的信息不能重建主私鑰。任意k個節點可以重建主私鑰,但任意少于k-1個節點的信息不能重建。當一個節點加入網絡時,每個節點擁有一個唯一的身份或IP地址。網絡中每個節點的公鑰就是它的身份標志,對應其身份,每個節點可獲得其私鑰,在利用網絡服務之前要注冊身份。獲得私鑰的方式至少對k個鄰居節點提出私鑰產生(PKG)服務請求。
認證步驟包括以下幾個方面:主公/私鑰產生,分布式密鑰產生,新的主私鑰創建和認證過程。
1)主鑰產生
設計的分布式密鑰產生機制不同于基本的(k,n)門限方案,它不需要一個可信的第三方來計算主鑰,并將其分成很多片并分配到各個節點中去。主私鑰不是在一個單節點中構建,主鑰對是由網絡中最初節點合作產生的。


2)分布式私鑰產生
使用基于身份的機密,移動節點的公鑰是字符串。在我們的方法中,公鑰計算公式為:QID=H(ID‖生存時間),其中H()代表身份加密中定義的哈希功能,ID代表節點的身份,生存時間是保護私鑰丟失的一個印戳。當一個公鑰過期后,節點需要獲得一個新的公鑰及其相應的私鑰。
為了利用網絡服務并使用其公鑰QID來解密從其他節點而來的加密的消息包,節點同樣需要獲得它相應的私鑰。獲得私鑰至少要聯系k個鄰居節點,表示身份并請求私鑰產生PKG(request private key generation)服務,擁有主鑰分享的節點可以是PKG服務節點。由于網絡中所有節點分享了主私鑰,因而網絡中的任何一個節點都可以是PKG服務節點。
k個PKG服務節點中的任何一個產生一個新的私鑰sk并將其發送到請求節點。為了保證產生的分享值能安全地傳輸,當發出傳送請求時,請求節點同樣提出它自己產生的臨時公鑰。每一個PKG服務節點使用請求節點的臨時公鑰pk-temp發送加密的分享值到請求的節點。新密鑰sk分享的產生過程可以表示為:ski=SiQID,其中Si(i=1,…,k)是服務節點的主私鑰的分享值,ID是請求節點的身份,QID是它的公鑰,ski表示對請求節點產生的私鑰分享。

總之,任意k個分享主密鑰的節點能夠對其他節點完成PKG服務,只要被攻擊的個數少于k個,就不會知道節點的私鑰。在分布式密鑰產生階段,網絡中的每個節點獲得其公/私密鑰對,同時注冊它的NID。它丟棄它的臨時公/私密鑰對,同時保持新的密鑰對為以后的認證和通訊使用。由于PKG為一個特定的節點只組織一次,因而攻擊者不能夠復制在網絡中存在的身份。一種可能就是需要PKG服務的節點不能得到k個可達到的鄰居,但移動可以解決這個問題,請求節點為了獲得k個節點的門限值,需不停地在網絡中運動,以發現更多的節點。
3)節點新主鑰的創建

4)基于身份的認證
認證用于保證每個移動節點都有獨一無二的身份,沒有一個攻擊者能夠獲得非授權的信息從而偽造一個節點,我們的方法使用基于身份的認證提供點對點的認證。假如源節點S想向節點D發送一個認證消息,源節點S能使用它的私鑰簽署消息,使用目標節點的身份(公鑰)來加密并發送到目標節點。只有節點D才能解密。而且,節點D能夠保證消息是否真的從源節點S發送而來。源節點S只是使用它的私鑰簽署消息,使用目標節點的身份(公鑰)來加密,同時發送到目標節點。當目標節點接受到這個加密的消息,它首先用它的私鑰解密,然后使用源節點的公鑰。如果驗證過程成功,目標節點接收包,作為一個有效的消息。以上的認證方法是一個加密和簽名的方法,數字簽名用于消息的認證,加密是用于消息的機密性。同時,通過稍微修改基于身份的密碼系統,通訊節點可以不需要額外的密鑰交換在雙方產生一個共享的密鑰:在源節點這邊,共享的密鑰是通過使用源節點的私鑰和目的節點的公鑰產生,同時目的節點通過使用它們的私鑰和源節點的公鑰計算出這個私鑰。產生的共享密鑰可以作為對稱密鑰來加密和認證,而且使用對稱密鑰可以節省大量的帶寬,而且該方法不像很多協議需要握手機制,這樣可以大大減少通訊開銷。
可用性保證在有攻擊時網絡的生存能力。在我們的方法中,(k,n)門限的算法中n個節點中任意k個節點共同工作用于密鑰產生和密鑰管理。我們的安全措施是容忍k-1個節點,即攻擊方已經讓k-1個節點中斷了密鑰的產生和管理。
機密性保證特定的信息不會暴露給未授權的實體。完整性保證消息不會因為傳輸失敗而中斷。在本文的方法中,機密性和完整性通過基于身份的加密機制完成。基于身份的加密是在兩個節點一次通訊完成。在這個過程中,他們計算和交換一個對稱性密鑰,這個對稱密鑰還可用于之后的通訊。
認證性保證每個通訊節點的身份,以致沒有攻擊者能偽造一個節點,未獲得授權而訪問資源。在我們的方法中,獲得一個安全的認證是基于身份的加密。非認可機制保證最初的消息不能否認發送了消息。非認可機制還可用于檢測和隔離已被攻擊的節點。當節點A從節點B接受到一個錯誤的消息,非認可機制允許節點A使用消息通知其他節點,節點B已經受到攻擊。
比較傳統的PKI的方法,本文的方法只有很低的通訊開銷。公/私鑰對產生于PKG服務節點,而公鑰來源于節點的身份,是一個公共的信息。因此沒有必要進行證書產生、傳播和存儲的過程。同時常規的PKI密鑰管理的方法假定每個節點的公/私鑰對是自主產生的,公鑰在網絡中傳播,為了確定每個節點的身份,公鑰必須由一個可信任的認證中心產生(CA)。證書同樣需要在網絡中傳播,以致于每個節點能夠得到其他節點的證書,傳播這些公鑰和證書要消耗大量的帶寬,同時導致了大量的網絡延遲。在本文的方法中,公鑰是基于每個節點的身份,而且長度很短,使用較短的公/私鑰對并且不用傳播很長的證書大大降低了計算的消耗和通訊開銷,此外在傳統的PKI方法中,緩沖存儲這些公鑰和證書要增加相當可觀的本地開銷。
在我們的方法中,通訊開銷主鑰產生在密鑰產生階段,在網絡初始階段,n個節點需要共同產生主鑰對,這增加了網絡設置時間。此外,每個節點需要廣播一個密鑰產生要求到它的鄰居上,而且每個PKG服務節點需答復它的分密鑰給要求的節點,所以在網絡初始階段的PKG服務同樣會帶來很多通訊開銷,但它是安全和通訊開銷的一個權衡,我們使用門限來提高網絡的容錯能力,同時給網絡帶來更多的通訊開銷。
我們的方法中主鑰計算量來自密鑰產生和密鑰操作,例如:加密、解密、簽名和認證。主鑰產生使用門限密鑰分享,計算復雜度依賴于門限的數量。基于身份的簽名產生和認證的復雜度和傳統方法一樣,基于身份的加密由于密鑰長度較短,消耗的計算量較小。
本文介紹了一種在移動自組網中基于身份認證的密鑰管理方法。比較基于PKI的認證方法,該方法使用一個自組織的方法提供密鑰的產生和分配,而不用一個可信的第三方。而且,建議的認證機制提供了點對點的安全機制,并且使用了較少的通訊開銷和資源消耗。
[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-hoc 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].計算機與數字工程,2011,39(10).
[11]張浩,王培東,王巖.鄰位異或算法在WEP協議密鑰更換中的應用[J].計算機與數字工程,2010,38(3).
[12]T.P.Pederson.Non-Interactive and Information-Theoretic Secure Verifiable Secret Sharing.Lecture Notes in Computer Science,1992:129-140.