陳 娟
(廣東舞蹈戲劇職業(yè)學(xué)院,廣東 廣州 51000)
組播與廣播相比,突破了廣播通信對(duì)同一個(gè)子網(wǎng)的限制;與單播相比具有優(yōu)化帶寬,減少了服務(wù)器負(fù)載,降低網(wǎng)絡(luò)流量和提高網(wǎng)絡(luò)通信效率,減少了主干網(wǎng)擁塞等優(yōu)點(diǎn)。所以,組播研究逐漸成為一個(gè)熱點(diǎn),安全組播通信是組播通信研究中的重點(diǎn)。安全組播必須要解決的重要問(wèn)題是如何通過(guò)組播密鑰管理的生成、發(fā)送和更新組播密鑰來(lái)滿(mǎn)足加密等安全需求。安全組播包括保密、組成員認(rèn)證、源認(rèn)證、匿名性和完整性。組播密鑰問(wèn)題主要是分層數(shù)據(jù)處理問(wèn)題,根據(jù)組成員的加入/離開(kāi),采用不同的管理方案。組播是建立在一個(gè)開(kāi)放的網(wǎng)絡(luò)環(huán)境中的,它使用UDP包來(lái)實(shí)現(xiàn)一對(duì)多通信,可以接收發(fā)向某個(gè)組播組的組播數(shù)據(jù),組中的成員是動(dòng)態(tài)的,可以隨時(shí)加入和退出組播組。組成員變動(dòng)頻繁時(shí),密鑰更新量也很大,使得組播的安全問(wèn)題比單播更加嚴(yán)峻。相比于單播的密鑰管理,如何實(shí)現(xiàn)信息的排外共享是組播密鑰管理特有的問(wèn)題。
現(xiàn)有的組播密鑰管理方法主要分三種:集中控制式、分布式和分層分布式。在這三類(lèi)方案中,分層分組式通過(guò)糅合集中控制式和分布式這兩種形式,使得分層分組式在某些方面的性能有所改進(jìn),更能適用于規(guī)模大、分布廣泛的組。
分層分組式密鑰管理方案中是把集中式管理中單點(diǎn)失效的情況減少到最小作為目的。把子組定義分層不同的組成員,每個(gè)子組制定一個(gè)組管理者,再把組管理者繼續(xù)分成不同的組,層層分下去。
文獻(xiàn)[1]中提出的Iolus方案主要通過(guò)將組播組劃分成有層次的子組,已解決密鑰更新效率和可靠數(shù)據(jù)傳輸問(wèn)題。每個(gè)子組都只有少量組成員,并且有自己的組播地址。Iolus是通過(guò)使用安全分發(fā)數(shù)來(lái)做到這點(diǎn)的。這種方法的優(yōu)點(diǎn)是組員的加入和退出只會(huì)影響所在的子組,并不會(huì)影響到整個(gè)組播組。缺點(diǎn)是如果GSC不能正常工作,很多子組將互相斷開(kāi);必須充分信任中間節(jié)點(diǎn)GSI,這將會(huì)帶來(lái)安全隱患。文獻(xiàn)[2]中提出的CBT方法,由一系列核心節(jié)點(diǎn)構(gòu)成核心樹(shù),核心樹(shù)上的每個(gè)節(jié)點(diǎn)都可執(zhí)行身份認(rèn)證和密鑰分發(fā)。CBT使用統(tǒng)一的密鑰管理中心KDC,組播組創(chuàng)建,KDC產(chǎn)生密鑰加密密鑰KEK和數(shù)據(jù)加密密鑰DEK。成員加入組播組后會(huì)獲得這兩個(gè)密鑰。密鑰更新時(shí),KDC向組播組發(fā)送使用KEK加密的新DEK的組播消息。在預(yù)定義的時(shí)間間隔到達(dá)后,成員開(kāi)始使用新的DEK加密消息。這種方法的主要缺點(diǎn)是沒(méi)有考慮前向安全問(wèn)題。文獻(xiàn)[3]中提出的STB方法,構(gòu)造了一條安全傳輸骨干STB。STB上的每個(gè)核心節(jié)點(diǎn)都有自己的公鑰,并存儲(chǔ)相鄰節(jié)點(diǎn)的公鑰。發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)源產(chǎn)生DEK,對(duì)數(shù)據(jù)進(jìn)行加密傳輸,同時(shí)使用相鄰節(jié)點(diǎn)的公鑰加密DEK。此種方案的優(yōu)點(diǎn)是使用的密鑰數(shù)量較少,同時(shí)避免了復(fù)雜的密鑰管理問(wèn)題。缺點(diǎn)是數(shù)據(jù)包經(jīng)每個(gè)安全主干上的核心節(jié)點(diǎn)轉(zhuǎn)發(fā)時(shí),都要進(jìn)行私鑰解密/公鑰加密的操作,而公鑰算法開(kāi)銷(xiāo)較大,嚴(yán)重影響效率并且未考慮到前向/后向的安全問(wèn)題。
本文提出了一種新的分層分組式的密鑰管理方案,其主要思想是先在組播組管理成員中構(gòu)造一棵加權(quán)核心平衡樹(shù),加權(quán)核心平衡樹(shù)上的核心節(jié)點(diǎn)構(gòu)成一個(gè)密鑰管理層次。每個(gè)核心節(jié)點(diǎn)與所在區(qū)域內(nèi)的其它組成員構(gòu)成一顆子樹(shù)并確保此密鑰樹(shù)是平衡樹(shù)。每個(gè)核心節(jié)點(diǎn)都帶有一個(gè)權(quán)值,這個(gè)權(quán)值在一定時(shí)間內(nèi)是其所在子樹(shù)中最大的。核心節(jié)點(diǎn)是子組的集中控制節(jié)點(diǎn)。GC中存有兩個(gè)數(shù)據(jù)結(jié)構(gòu)如下:1}……}
其中W11,W21,…..Wm1,為核心節(jié)點(diǎn)的權(quán)值。flag=0,表示核心節(jié)點(diǎn)試用期滿(mǎn)可以構(gòu)建子樹(shù),flag=1,表示該節(jié)點(diǎn)為惡意節(jié)點(diǎn),已經(jīng)離開(kāi)組播組,刪除該數(shù)據(jù)結(jié)構(gòu)項(xiàng)。
圖1 加權(quán)核心平衡樹(shù)的結(jié)構(gòu)圖
為了防止單點(diǎn)失效問(wèn)題,我們?cè)谶@里采用一個(gè)輔助的組控制器來(lái)備份組控制器,其中輔助的組控制器的配置以及保存的信息與組控制器(GC)完全一樣。組播組初始化時(shí),根據(jù)要求加入組播組的請(qǐng)求,我們分別算出各個(gè)client的權(quán)值,并將權(quán)值存入組控制器。根據(jù)圖1加權(quán)核心平衡樹(shù)的結(jié)構(gòu)圖可以看出若核心節(jié)點(diǎn)(CN)加入或退出的頻率大的話(huà)會(huì)嚴(yán)重影響子樹(shù)的重構(gòu)的頻率,會(huì)使整棵樹(shù)的振動(dòng)率加大,這對(duì)數(shù)據(jù)的傳輸及其不利。所以我們?cè)谶x取CN的時(shí)候,節(jié)點(diǎn)的在線(xiàn)時(shí)間(ST)是一個(gè)極為重要的考慮因素,由于CN是整棵子樹(shù)的集中控制器,所以,CN的CPU的主頻(GZ),內(nèi)存容量(MC),硬盤(pán)容量(DC)都是影響因素。
在此我們可以得出如下的權(quán)重公式:
其中ST=承諾離開(kāi)時(shí)間-加入時(shí)間;
W=ST*50%+GZ*20%+DC*20%+MC*10%
核心樹(shù)與組控制器之間我們采用兩層結(jié)構(gòu),從圖1中可以看出,若CN離開(kāi),為了確保前向加密,密鑰更新的代價(jià)為M-1,其中M為CN的數(shù)量。由此可以看出,核心節(jié)點(diǎn)離開(kāi)組時(shí)密鑰更新代價(jià)較高,并且CN的配置等都比較好,所以我們決定采用無(wú)需密鑰加密的方式,犧牲計(jì)算來(lái)?yè)Q取有限的網(wǎng)絡(luò)帶寬。
每棵子樹(shù)的CN代替組控制器對(duì)子組進(jìn)行控制和管理,子樹(shù)采用LKH[4]管理方式。每棵子樹(shù)都有一個(gè)子組密鑰SKEKi,CN與每個(gè)字節(jié)點(diǎn)都有一個(gè)私密KEKi。
成員要求加入組播組是,GC根據(jù)加權(quán)公式計(jì)算出其權(quán)值并與其所存的權(quán)值相比較可以得出兩種結(jié)果:
(1)若新成員的權(quán)值大于所有的W11,W12……,則新成員成為核心節(jié)點(diǎn)(CN),并把權(quán)值存入GC的新集合中;
(2)若新成員加入權(quán)值
若是第二種情況,核心節(jié)點(diǎn)將當(dāng)前子組密鑰更新為SKEK‘i,將{SKEK‘i}用SKEK組播發(fā)送給當(dāng)前子組成員以保證后向安全。同時(shí)用分配給新成員的私密KEKi加密{SKEK‘i},發(fā)送給新成員。這樣根據(jù)LKH的原理我們可知,成員加入時(shí)密鑰更新代價(jià)為2logdN,其中d為密鑰樹(shù)的深度-1,N為子組成員個(gè)數(shù)。
節(jié)點(diǎn)離開(kāi)分為兩種:核心節(jié)點(diǎn)位于加權(quán)核心平衡樹(shù)上,其它的為非核心節(jié)點(diǎn)。
當(dāng)子組成員離開(kāi)時(shí),只需要更新當(dāng)前子樹(shù)密鑰。子組采用LKH的方式,密鑰的更新代價(jià)為dlogdN-1.
若核心節(jié)點(diǎn)離開(kāi),此核心節(jié)點(diǎn)所在的子樹(shù)需要重新構(gòu)造。由于我們采用平衡樹(shù)的方式所以有兩種情況:
(1)GC從該子樹(shù)中選取權(quán)值最大的為核心節(jié)點(diǎn),重新構(gòu)造一課子樹(shù)。
(2)若根據(jù)第一這種情況構(gòu)造的子樹(shù),導(dǎo)致整棵樹(shù)不平衡,則放棄此子樹(shù),并且把其子節(jié)點(diǎn)加入到其它子樹(shù)中,并且修改GC中的數(shù)據(jù)結(jié)構(gòu)。密鑰更新代價(jià)為O(2N logdN).從中可以看出我們應(yīng)當(dāng)要選擇合適的d和N使得N logdN最優(yōu)。
由于核心樹(shù)采用無(wú)需密鑰更新,所以核心樹(shù)不需要進(jìn)行密鑰更新,只需要重新計(jì)算新密鑰。
當(dāng)向組成員發(fā)送數(shù)據(jù)時(shí),若只發(fā)送本地子組,使用SKEKi加密數(shù)據(jù)即可。發(fā)送給其它子組成員的數(shù)據(jù),核心節(jié)點(diǎn)將參與數(shù)據(jù)加密/解密以及數(shù)據(jù)轉(zhuǎn)發(fā)過(guò)程。其它核心節(jié)點(diǎn)收到轉(zhuǎn)發(fā)消息后,一方面向核心樹(shù)上的其它節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù),同時(shí)解密數(shù)據(jù),以子組SKEKi加密數(shù)據(jù)后轉(zhuǎn)發(fā)給整個(gè)子組。
有些惡意節(jié)點(diǎn)會(huì)在一段時(shí)間內(nèi)不停地加入、離開(kāi)導(dǎo)致系統(tǒng)不停地更新密鑰,嚴(yán)重影響網(wǎng)絡(luò)帶寬的可用率。在此,我們參考了文獻(xiàn)[5]中提出的基于時(shí)間片輪轉(zhuǎn)的思想。我們認(rèn)為可以給新加入的成員提供一個(gè)試用期T。新成員可以分為兩種情況進(jìn)行處理:
(1)當(dāng)新成員為核心節(jié)點(diǎn)時(shí),GC先不把其權(quán)重值存入,只是存入一個(gè)flag=1,表示其為使用,當(dāng)其實(shí)際在線(xiàn)時(shí)間大于T時(shí),flag=0,并把其權(quán)值存入GC,表示允許其接受其它新成員成為子組控制器。
(2)當(dāng)新成員為非核心節(jié)點(diǎn)時(shí),若其實(shí)際在線(xiàn)時(shí)間大于T時(shí),CN分配其一個(gè)私鑰,并且更新組密鑰。并把其權(quán)值寫(xiě)入GC。
若不采用上述方式,可能在T時(shí)間內(nèi)就會(huì)有m2N logdN次密鑰更新,其中m為惡意節(jié)點(diǎn)在T時(shí)間加入的次數(shù)。
密鑰更新次數(shù)對(duì)效率有很重要的影響。本實(shí)驗(yàn)從成員加入及成員離開(kāi)兩個(gè)方面描述了密鑰的更新次數(shù)。其中,d表示密鑰樹(shù)的深度,N表示節(jié)點(diǎn)數(shù),join_keynums表示成員加入時(shí)需要更新的密鑰次數(shù),leave_keynums表示成員離開(kāi)時(shí)需要更新的密鑰次數(shù)。
表1 密鑰的更新次數(shù)
通過(guò)對(duì)表1及第3部分的分析,可以發(fā)現(xiàn)采用加權(quán)密鑰樹(shù)的方式具有如下優(yōu)缺點(diǎn):
其中優(yōu)點(diǎn)為:
(1)健壯性好。當(dāng)部分組成員失效時(shí),仍然能夠繼續(xù)工作,避免了單點(diǎn)失敗問(wèn)題。
(2)可擴(kuò)展性較好。子組成員變動(dòng)不會(huì)影響到其它子組。
(3)數(shù)據(jù)傳輸開(kāi)銷(xiāo)較小。當(dāng)組成員需要向其它子組發(fā)送數(shù)據(jù)時(shí),只需子組的核心控制節(jié)點(diǎn)對(duì)數(shù)據(jù)做一次解密/加密即可,大大降低了數(shù)據(jù)傳輸開(kāi)銷(xiāo)。
(4)密鑰更新代價(jià)小。子組成員離開(kāi)時(shí),本地子組正確地產(chǎn)生密鑰,進(jìn)行密鑰更新即可。使用層次式控制結(jié)構(gòu),密鑰更新增加了計(jì)算量,不需要網(wǎng)絡(luò)帶寬。
(5)安全性較好。組成員加入/離開(kāi)時(shí)進(jìn)行密鑰更新,不能冒充組成員,不能重新分發(fā)密鑰,充分保證了播組的前向/后向安全。
缺點(diǎn)為:
(1)在核心樹(shù)更新密鑰時(shí),計(jì)算量大。
(2)要選擇合適的d和N使得N logdN最優(yōu)難度很大。
本文首先討論了組播密鑰管理的幾種主要解決方案,并其優(yōu)缺點(diǎn)進(jìn)行了分析。提出了一種新的分層分組式的密鑰管理方案,完善密鑰管理,使系統(tǒng)具有更強(qiáng)的適應(yīng)性。這種方案提高了可擴(kuò)展性、健壯性和可預(yù)測(cè)性,密鑰更新代價(jià)低,有效解決了其它分層分組式方案中普遍存在的難以統(tǒng)一的組播密鑰管理方案,同時(shí)保證了組播組前向/后向安全,提高效率。
[1]Mittra S.A Framework for Scalable SecureMulticasting[C]//Proceedingsof ACM SIGCOMM'97,Cannes,F(xiàn)rance.1997:277.
[2]Ballardie T. Scalable Multicast Key Distribution[S]. RFC 1949,1996-05.
[3]Du F,Ni L M,Esfahanian A H.Towards Solving Multicast Key-Management Problem[C]//Proceedings of International ConferenceonComputer Communications and Networks.1999:232-236.
[4]Wallner D M Harder E J,Agee R C.Key Management for Multicast:Issues and Architectures[Z].1997.http://Internet Draft draft- wallner-kyarch-00.txt.
[5]趙志國(guó),楊波.一種基于時(shí)間結(jié)構(gòu)樹(shù)的多播密鑰管理方案[J].電子科技,2004,(8).