陳廷威, 高 博
安全群組通信系統(tǒng)能為工作在開放式網(wǎng)絡環(huán)境中的各種分布式協(xié)作式應用提供一對多、多對多安全通信,能在群組成員之間發(fā)送安全可靠的消息并提供安全的同步機制,能提供數(shù)據(jù)的機密性與完整性,群組成員的身份認證,信息源認證以及系統(tǒng)資源訪問控制等安全服務[1]。群組通信[2]是指把同一數(shù)據(jù)塊(報文、分組或文件等)從一臺計算機傳送到一個由若干臺計算機組成的集合的每個成員的過程。
最初的群組通信研究僅考慮成員關系協(xié)議與消息的有序性,而對群組通信的安全性方面的研究在近幾年才出現(xiàn)Cornell University,Hebrew University與IBM公司合作研究的 ensemble[3]系統(tǒng)、Johns Hopkins University 研發(fā)的 Secure Spread[4]均具有安全屬性,如提供客戶數(shù)據(jù)的機密性與完整性、群組成員的身份認證、信息源認證及系統(tǒng)資源訪問控制等安全服務,均存在群組密鑰協(xié)商通信效率低、存儲開銷大等問題。安全群組通信研究的目標是在可靠的群組通信系統(tǒng)上無縫集成安全服務,并且要求這些安全服務具有通用性、魯棒性、可擴展性及高性能。本文提出基于服務器端組密鑰協(xié)商機制目的是為了改善其可擴展性及高性能。
現(xiàn)有安全群組通信系統(tǒng)通常采用C/S通信模式,群組密鑰協(xié)商機制為群組密鑰協(xié)商協(xié)議以客戶端函數(shù)庫形式掛載到客戶端應用程序[5]。該方式在進行密鑰管理所必需的數(shù)學運算時,使群組成員之間增大了額外的通信開銷。針對該問題,給出基于服務器端的密鑰協(xié)商機制。假定安全群組通信系統(tǒng)中客戶端組的數(shù)量為m,服務器組的數(shù)量為n,選取一個以ni核心最小子集進行組密鑰協(xié)商,而不必組成員全部參加,當m>>n時,群組密鑰協(xié)商規(guī)模從m降為n,即由 o (f(m))降至 o (f(n ) ),可顯著提高了可擴展性通信性能。
安全群組通信系統(tǒng)從結構上可劃分為四層:可靠多播層,全序多播層,群組管理層,通信安全層[6]。如圖1所示,其中可靠多播層用于發(fā)送的信息要被接收方正確接收到要通過可靠性保證措施;全序多播層用于通過全序多播協(xié)議提供發(fā)送方到接收方群組各成員的可靠、有序的信息傳送的保證;群組管理層包括群組地址分配、群組的建立、群組的關閉、群組成員的動態(tài)加入和退出、錯誤恢復等功能。通過為群組群組分配地址,所有發(fā)送到這個群組的信息都以這個群組地址為接收方地址,所有組成員都接收發(fā)送到該群組的數(shù)據(jù);通信安全層主要從群組管理層的安全性角度出發(fā),進行群組密鑰管理,保證成員加入的合法性、離開后的安全性等性質(zhì)。群組密鑰管理主要包括密鑰的產(chǎn)生、交換、存儲、更新和銷毀等操作。
圖1 安全群組通信分層結構
通信安全層具體的實現(xiàn)模式上把通信安全層的安全服務分為兩部分:認證、訪問控制模塊與密鑰協(xié)商模塊放在服務器端,加密算法模塊放在客戶端函數(shù)庫內(nèi)。在服務器端主要有認證與訪問控制模塊與密鑰協(xié)商模塊。通過在客戶端函數(shù)庫設計一個函數(shù)來完成從服務器組密鑰到客戶端群組密鑰的映射。服務器端通信安全層如圖2所示。客戶端函數(shù)庫內(nèi)容由加密模塊與一個單向函數(shù)f_key_s-c(…)構成如圖3所示。
圖2 服務器端通信安全層
圖3 客戶端函數(shù)庫
單向函數(shù)完成從服務器組密鑰到客戶端群組密鑰的映射。函數(shù)參數(shù):服務器組密鑰、群組名與群組成員數(shù)量。服務器組密鑰:服務器組間調(diào)用群組密鑰協(xié)商協(xié)議協(xié)商的組密鑰;群組名:客戶端申請加入群組名稱;群組成員數(shù)量:一個群組動態(tài)標識。設計的單向函數(shù): f _ key _ s - c(c hararray[i ],chara[j] , intk)。
假定服務器組為 s1,s2,…,sn。客戶端應用程序為c1, c2,… ,cm。一般情況下m>>n。且這些服務器都是具有同一配置服務器,不具有同一配置的服務器是不能連接服務器組 s1, s2,… ,sn。
假設設客戶端a加入群組A:①客戶端a申請加入群組A請求;②服務器組響應該請求并調(diào)用View視圖函數(shù)更改視圖標識NumA; //NumA表示當前群組 A的成員數(shù)量;③服務器組 { S1, S2,… ,Sn}調(diào)用密鑰協(xié)商協(xié)議協(xié)商出服務器組密鑰KEYs;④客戶端 a調(diào)用函數(shù)庫的客戶端組密鑰計算函數(shù)f_key_s-c(KEYs,A,NumA)計算出客戶端組密鑰KEYca;⑤客戶端a利用客戶端組密鑰KEYca與群組A的成員進行通信。
其它群組A的客戶端都要進行同樣的操作:①服務器組{S1, S2,… ,Sn}檢測有新成員加入或檢測到密鑰更新消息時,
服務器組都具有同一配置文件。這些配置主要是通過顯示一個 IP列表,該列表在每一個服務器中維護。當一個服務器需要加入服務器組時,修改每一個服務器的配置。而且不具有同樣配置的服務器組是不相互干擾的。具有相同配置的服務器組成員之間均相互信任。服務器加入服務器組的步驟如下:①服務器請求加入服務器組;②檢查服務器組的請求服務器的 IP列表是否與匹配。如果匹配,允許加入,否則不允許加入;③服務器組生成新的成員關系ID發(fā)送給每一服務器組成員。
客戶端加入基于客戶端-服務器模式的群組通信流程如下:①客戶端請求連接服務器組;②服務器組進行認證與訪問控制,如果通過,允許該連接,否則拒絕;③客戶端請求加入群組i通信;④群組i成員對其進行認證與訪問控制,如果通過,允許加入,否則拒絕;⑤服務器組檢測群組成員關系變化或密鑰更新請求時,服務器組調(diào)用密鑰協(xié)商協(xié)議計算服務器組密鑰;⑥群組i的成員調(diào)用客戶端函數(shù)庫群組密鑰計算函數(shù)f_key_s-c(char array[i], char a[j],int k)計算出群組i的群組密鑰;⑦檢查客戶端是否請求加入其他群組。如果是,則轉到步驟③,否則下一步;⑧服務器檢測是否更新服務器組密鑰,如果是,則轉到步驟⑤,否則下一步,服務器檢測是否客戶端離開,如果是,則轉到步驟⑤,否則下一步;⑨服務器檢測是否客戶端加入,如果是,則轉到步驟②,否則停止。
下面具體給出群組各種運行模式下協(xié)商密鑰過程:
(1)一個客戶端應用程序加入一個群組運行模式群組A其他成員都接收到一個成員關系改變消息m;②客戶等待一條通知消息通知客戶端群組A已經(jīng)協(xié)商組密鑰;③客戶端調(diào)用客戶端函數(shù)庫的計算客戶端組密鑰的函數(shù)計算f_key_s-c(KEYs,A,NumA)計算出客戶端組密鑰KEYca;④客戶端a利用客戶端組密鑰KEYca與群組A的成員進行通信;⑤當收到密鑰更新消息時,轉到步驟①;
(2)一個客戶端應用程序同時加入多個群組運行模式
假設客戶端a加入群組A,B兩個群組,這兩個群組均建立在服務器組上。在服務器組 S1,S2,… ,Sn協(xié)商的服務器組密鑰KEYs,群組A,群組A的成員數(shù)量NumA。通過一個單向映射變換的 f作用到 f (K EYs,A,N umA)=KEYca。就得到群組A的群組密鑰KEYca。把它發(fā)送到客戶端應用程序用于群組A通信。在通信中,群組A中的成員都收到KEYca,當一個客戶端應用程序發(fā)送一條消息時,使用群組密鑰KEYca加密消息進行通信。組內(nèi)所有成員都收到一條消息。再用該密鑰解密消息。
同樣對于該客戶端a群組B產(chǎn)生的群組密鑰為KEYcb= f(K EYs,B,N umB)。就得到群組B的群組密鑰KEYcb。把它發(fā)送到客戶端應用程序用于群組B通信。在通信中,群組B中的成員都收到KEYcb,當一個客戶端應用程序發(fā)送一條消息時,就是使用群組密鑰KEYcb加密消息進行通信。組內(nèi)所有成員都收到一條消息。再用該密鑰解密消息。
(3)一個服務器連接多個客戶端運行模式
服務器組間協(xié)商的服務器組密鑰發(fā)送到每個連接的客戶端。再由客戶端計算出每個群組的群組密鑰。一個服務器Si連接了連個客戶端程序a、b。這樣,在同一配置的服務器組協(xié)商服務器密鑰,把它發(fā)送到每個最近連接客戶端a、b。同組每個客戶端計算出加入每一個群組的群組密鑰。
(4)多個客戶端與多個群組運行模式
該運行模式比較復雜,我們給出一般模型如圖4。
圖4 基于客戶端-服務器模式群組通信
圖4 中服務器組的虛線部分是略去的服務器,客戶端a、b、d加入群組A,客戶端b、c加入群組B,客戶端c加入群組c。
服務器iS連接兩個客戶端程序a、b??蛻舳薬加入群組A、B兩個群組,客戶端b加入群組B、C兩個群組。這種情況即是前三種情況的復合,具體細節(jié)如上述情況。在這種情況下密鑰協(xié)商機制的實現(xiàn)機制如下:①服務器組檢測到組成員關系變化或更新密鑰消息時,服務器組開始調(diào)用群組密鑰協(xié)商協(xié)議協(xié)商服務器組密鑰;②客戶端調(diào)用客戶端組密鑰計算函數(shù) f_key_s-c( c hararray[i], c hara[j],intk)計算該客戶端加入群組的客戶端組密鑰。
服務器的安全性要比客戶端安全性高,這些安全性因素由服務器對客戶端認證與訪問控制模塊保證的,從理論上講,要比把密鑰協(xié)商放在客戶端更為安全。
從高效性的角度進行分析,把占用安全群組通信大部分資源密鑰協(xié)商放在服務器組端,無疑是資源最佳配置?;诜掌鞫说拿荑€協(xié)商機制要比基于客戶端的密鑰協(xié)商協(xié)議機制高效??蛻舳说臄?shù)量本身遠大于服務器的數(shù)量。這樣減少了運算量,用線性運算時間內(nèi)的函數(shù)計算群組密鑰來代替協(xié)商到群組成員是一個高效的途徑。這是基于抽取一個極小密鑰協(xié)商子集的概念簡化密鑰協(xié)商機制。
為了解決安全群組系統(tǒng)可擴展性與高性能性,本文利用密鑰協(xié)商子集思想設計基于服務器端組密鑰協(xié)商機制。在安全群組通信的可擴展性與高效性方面,本文提出的基于服務器端的密鑰協(xié)商機制優(yōu)于基于客戶端群組密鑰協(xié)商機制。
[1] Yair Amir,Yongdae Kim Cristina. On the Performance of Group Key Agreement Protocols[J].ACM Transactions on information,2004,7(03):457-488.
[2] 魯來風,李紅梅,馬建峰.容忍入侵的群組通信研究[J].計算機應用,2006,26(09):2187-2189.
[3] Ohad Rodeh, Kenneth P.Birman, Danny Dolev. The Architecture and Performance of Security Protocols in the Ensemble Group Communication System Using Diamonds to guard the castle[J].ACM Trans on Information and System Security (TISSEC), 2001,4(03):289-319.
[4] Yair Amir. Secure Spread An Integrated Architecture for Secure Group Communication[J]. IEEE Transactions on Dependable and Secure Computing,2005,2(03):248-261.
[5] 劉利芬,鄧亞平.安全組播密鑰更新機制的研究[J].通信技術,2007,40(12):51-54.
[6] 王鶯潔,羅為,沈昌祥.一種有效的組密鑰認證方法[J].通信技術,2008,41(5):97-101.