李 莉 王 政
(北京電子科技學院 北京 100070)
天地一體化網絡信息系統包含民用、國際、黨政、軍用等不同用戶組成的用戶域,具有用戶量大且終端規模持續擴大、各用戶域層級鮮明等特點。該網絡環境中,不同用戶域在業務類型、安全需求、網絡資源狀況等方面存在差異,而在密碼業務中往往需要多個用戶域之間進行文件資源的共享。如何在用戶數量大、用戶權限變動頻繁、權限劃分復雜的環境下,合理地使用密鑰來保障各域用戶安全高效地進行文件共享成為近年來多權限群組密鑰管理領域研究的熱點。
現有的多權限群組密鑰管理方案主要分為集中式和分布式兩類。集中式密鑰管理方案依靠密鑰分發中心KDC(Key Distribution Center)產生密鑰并進行管理。針對天地一體化網絡,僅依靠KDC對密鑰進行生成、分發、更新等管理將難以應對巨大的計算和存儲負擔。分布式密鑰管理方案中用戶密鑰由各用戶協商產生,而群組密鑰則通過每個服務組SG(Service Group)的簇頭節點協商生成。此方案在權限劃分復雜、節點變動頻繁的天地一體化網絡環境下會頻繁地進行密鑰協商,從而對網絡和各類密鑰節點造成巨大的通信壓力和密鑰更新壓力。
根據上述問題和傳統密鑰管理方案存在的劣勢,本文提出了一種集中式和分布式相結合的密鑰樹構建及更新方案,使用Shamir秘密共享算法對群組中輔助密鑰進行分割,將分割后的影子密鑰作為群組用戶的用戶密鑰,使用單向散列函數對訪問各級資源的用戶進行訪問控制。
傳統的單權限群組密鑰管理方案,主要分為集中式和分布式兩類。集中式密鑰管理方案依賴于密鑰分發中心KDC進行密鑰的生成和更新管理;分布式密鑰管理方案則依靠群組中簇頭節點協商產生和更新群組密鑰。
文獻[1]是集中式管理方案,提出使用邏輯密鑰樹(Logical Key Hierarchy,LKH)的方式進行密鑰管理,將KDC密鑰更新開銷從O(n)降低到了O(logn)。文獻[2-4]屬于分布式管理方案,密鑰樹構建和更新都基于二叉樹和雙方Diffie Hellman密鑰交換協議來實現。文獻[5]引入三叉樹結構進行群組密鑰的管理。文獻[6]對Diffie Hellman協議進行了擴展,此方案下群組中的n個用戶需要進行n輪協商得出最終的組密鑰。文獻[7] 引入橢圓曲線ECC算法進行群組密鑰的生成,在單權限群組密鑰樹的密鑰初始化階段的協商輪數、消息通信量等性能方面較之前方案具有較大的提升。
文獻[8]提出多權限群組密鑰管理協議(Multi-group Key Management Scheme,MGKMS),該協議保證了前向安全性且消除了數據組DG(Data Group)之間用戶重疊造成的冗余,但用戶節點的權限變動會引發多個輔助密鑰節點更新,從而帶來較大的通信量和計算復雜度等問題。文獻[9]提出了一種基于單項函數的群組密鑰管理協議(One-way-Function-based Group Key Management Protocol,OFGKMP),其在文獻[8]構建二叉密鑰樹的基礎上提出為每個密鑰節點分配ID,當群組中某一用戶的權限變更時,群組中其他節點可以通過ID編號利用單向函數計算出新的密鑰。該方案相較于文獻[8]減少了更新時的通信和計算開銷,但其密鑰樹中使用的輔助密鑰過多,當用戶節點增多時其密鑰樹深度會快速增加,從而增加了輔助密鑰數量,造成巨大的存儲負擔,而且二叉密鑰樹相關輔助密鑰節點和用戶節點都需要參與密鑰更新的計算,導致計算開銷巨大。在批量更新方面,其采用在單位時間內先標記權限變動節點并搜集權限變動請求的方式,在預設時間結束后再統一進行密鑰更新。可以預見的是,在預設時間內節點權限變動頻繁的情況下,當時間結束后密碼系統必會迎來通信和計算峰值,在短時間內造成巨大的計算和存儲壓力。文獻[10]提出了一種基于多叉樹的多權限群組密鑰管理方案(MTGKM),針對文獻[9]中的問題,對SG二叉密鑰樹進行了改進,擴充為多叉密鑰樹結構,解決了用戶持有密鑰數量多的問題,節省了存儲開銷。從存儲開銷上看,該方案中每個用戶節點仍保存有從該點到會話密鑰節點SK之間所有路徑上的密鑰,存儲開銷較之前方案有所降低但并不理想。從計算開銷上看,每當組中某一用戶的權限變動時,相當大范圍的用戶密鑰會更新,這種情況在低訪問權限的群組中更為明顯,其計算開銷相較于文獻[9]并沒有差別。文獻[11]提出了一種基于ECC的面向天地一體化網絡環境下物聯網感知層的分層密鑰管理方案,該方案中每個節點通過自己的私鑰可以計算出子節點密鑰從而達到分層訪問控制的目的。文獻[12]提出一個針對無證書認證的密鑰協商協議的安全模型。文獻[13]提出了一種基于橢圓曲線點乘運算的無證書認證的組密鑰協商協議,該方案使用Huffman密鑰樹優化通信輪數,降低了計算量和通信量。文獻[14]提出了一種基于CP-ABE(Ciphertext-Policy-Attribute-Based Encryption)的支持屬性變更的群組密鑰管理方案和一種基于CP-ABE的支持群組標識的群組密鑰管理方案。這兩種方案中所有通信消息都是基于群組密鑰K來生成的,當群組中有成員變動時,K的更新將基于群組屬性來完成,離開群組的用戶將失去基于原群組固有屬性因而無法進行資源訪問,很好地保障了前后向安全性和通信消息的機密性。文獻[15]提出了一種基于LKH樹的大規模組播密鑰管理方案,該方案將LKH樹結構與Iolus相結合,雖然在存儲開銷上略微有所增加但解決了數據可靠傳輸的問題,提高了密鑰更新效率,一定程度上降低了LKH樹密鑰更新時的計算開銷。
本文提出一種具有前向安全的密鑰管理方案。按資源級別將用戶劃分成多個群組,使用輔助密鑰和單項散列函數對訪問各級別資源的用戶進行訪問控制,將群組劃分多個用戶區,使用Shamir秘密分享算法將輔助密鑰分割成多個影子密鑰,并將其分發給各區中的用戶作為用戶密鑰。當某一用戶退出群組而引發系統密鑰更新時,受影響的范圍將被限定在該用戶所在的用戶區而不是整個群組。當多個用戶區的多個用戶退出群組時,只有當群組中的輔助密鑰面臨泄漏的風險時才會引發整個群組進行密鑰更新,否則更新范圍仍將被限定在該用戶所在用戶區之中。
下面將資源劃分為三個等級來對本方案進行說明。密鑰圖的構建初始化操作可以分為以下四步:
Step1按資源等級將用戶劃分為三個群組(G1,G2,G3)。其中:G1中的用戶權限最高,可以訪問G1、G2、G3的資源;G2中的用戶權限次高,可以訪問G2和G3的資源;G3中用戶的權限最低,僅能訪問本組的資源。
Step2可信的密鑰分發中心KDC確定并產生如下信息:群組G1、G2和G3之間的資源等級訪問策略α1→2、α2→3;單項函數算法Hash_X、Hash_Y,Hash_X用于密鑰生成,Hash_Y用于密鑰更新;G1的輔助密鑰Key1;三個群組的初始會話密鑰SKx,參數x表示群組編號,即產生SK1、SK2和SK3。

(1)
(2)
當運算完成后,上級輔助密鑰節點保留下級輔助密鑰的生成時間和更新次數信息。各級資源的初始會話密鑰由輔助密鑰加密存儲于輔助密鑰節點中。
Step4生成影子密鑰。首先由輔助密鑰節點產生隨機數βx,其中參數x表示群組編號。 將輔助密鑰Keyx和隨機數βx一同進行Shamir(t,n)門限分割,分割算法的參數t的確定應視該群組實際狀況確定。當群組中的用戶轉出操作頻繁時,t應在計算條件允許的前提下盡量選取較大值。參數n應考慮該群組用戶總數和Shamir門限計算量再確定,n值的上限不應大于該群組中用戶總數與t-1之和。根據分割方案將群組中的用戶均分為n-(t-1)個區,為每一個區分配一份影子密鑰,分割后的影子密鑰用符號Key′x-y表示,其中x表示群組編號,y表示群組中的區號。即每個區的用戶共享一份影子密鑰,將剩余的t-1份影子密鑰存于該群組中的輔助密鑰節點中。
初始化后的樹形密鑰圖如圖1所示。

圖1 樹形密鑰圖
資源的訪問方式分為兩種:群組中的用戶訪問本組對應級別的資源,稱為組內資源訪問;群組內的用戶訪問低于本組級別的資源,稱為組外資源訪問。
2.2.1組內資源訪問

(3)
式中:參數λx-y表示群組x中y區中用戶所持有的隨機數,由輔助密鑰節點為各用戶區分發,用來進行區密鑰更新。

(4)
2.2.2組外資源訪問
以G1中的第5區用戶訪問資源2為例。用戶獲得輔助密鑰Key1的方式與組內資源訪問獲得Key1的方式相同,與之前相比區別在于:當用戶獲得輔助密鑰Key1后會進行產生Key2的運算。計算方式為:
(5)

(6)
按密鑰更新涉及的范圍來看,本文提出的密鑰更新方案分為兩種情況:區密鑰更新和群密鑰更新。區密鑰更新指群組中的某個區中的所有用戶進行密鑰更新。群密鑰更新指群組中所有用戶重新進行初始化操作。當樹形密鑰圖初始化后,無論是群密鑰更新還是區密鑰更新都由相關節點進行參數更新計算,而不再依賴KDC。
用戶在多權限群組中的通信情況分為三種:用戶權限撤銷、用戶權限提升和用戶權限變更。
當用戶節點退出群組時需要進行用戶權限撤銷操作。用戶權限被撤銷,會引發區密鑰更新,更新時僅該節點所在區中所有用戶需要進行密鑰更新,同群組中其他用戶區中的用戶不受影響。每當用戶進行權限撤銷操作時,對應的用戶區就需要進行一次區密鑰更新。更新方式為:當權限被撤銷用戶離開原所屬的用戶區后,由輔助密鑰節點以組播的方式向該區分發隨機數λx-y。用戶區中合法用戶接收到新的隨機數后,用戶可以通過新的隨機數生成新的會話密鑰,從而進行資源訪問。

當新用戶加入某個區時,會進行用戶權限提升操作。當新用戶加入群組的某個用戶區時,輔助密鑰節點負責將本用戶區所擁有的影子密鑰傳遞給新用戶節點。此操作由于不會產生會話密鑰泄漏的風險因此不會觸發區或群密鑰更新機制,只需將該區中用戶所擁有的影子密鑰傳遞給新用戶即可。
當某一用戶節點在權限不等的兩個群組間轉移時,會進行用戶節點權限變更操作。發生此種情況后,需要對轉出區進行區密鑰更新操作,更新方法和用戶節點權限撤銷時觸發的區密鑰更新方式相同。對于轉入區則只需要將轉入區所持有的影子密鑰傳遞給新用戶節點一份即可。
本文從用戶權限撤銷、用戶權限提升和用戶權限變更三個角度來進行安全性分析。
當用戶權限撤銷時,被撤銷權限節點所在的用戶區會進行隨機數的更新,撤銷節點無法獲取更新后的參數λx-y,從而無法獲得新的會話密鑰,保證了密鑰管理方案的前向安全性。
當用戶節點權限得到提升,即新用戶加入群組時,由于新用戶之前無法獲取群組會話密鑰,因此在考慮前項安全性的前提下不存在會話密鑰泄漏的風險。
當用戶節點權限變更,即某一節點從高權限群組轉移到低權限群組中時,可以看成該用戶節點先進行權限撤銷再進行權限提升兩個操作。轉出區會對該節點進行原權限撤銷,其會話密鑰更新方式和用戶節點權限撤銷的情況相同。轉入區等級權限低于轉出區,不需要進行密鑰更新故而不存在安全性問題。
密鑰管理方案的計算、通信和存儲開銷是衡量一個密鑰管理方案的主要性能指標,本節從這三個方面進行分析,并與文獻[10]、文獻[15]方案進行比較。
為了充分體現本方案在海量密鑰環境下的優越性,將本文方案和文獻[10]、文獻[15]提出的樹形密鑰圖置為滿樹,在用戶數和資源數相同的前提下進行兩方案的對比。設共有N類資源,兩個方案的密鑰圖在涉及多叉樹結構的部分都假定為M叉樹,單個密鑰長度為Lk。
4.2.1存儲開銷
MTGKM方案[10]中會話密鑰節點的存儲開銷為N·Lk,DG中輔助密鑰節點的存儲開銷為(N-1)·Lk,SG中輔助密鑰節點的存儲開銷為(N+N·M)·Lk,用戶密鑰節點的存儲開銷為M2·f(N)·Lk,其中:

(7)
MTGKM方案的總存儲開銷為上述各部分節點的存儲開銷之和。
文獻[15]方案應用場景為單一資源的群組密鑰管理,該方案沒有改變傳統LKH樹的密鑰存儲模式,葉子節點仍儲存從自身到對應根節點路徑上所有節點的密鑰。葉子節點存儲開銷為3·M2·Lk,LKH樹輔助密鑰存儲開銷為2·M·Lk,GSI部分存儲開銷為M·Lk,GSA部分即密鑰樹根節點密鑰存儲開銷為1。該方案對應資源時總存儲開銷為(3·M2+3·M+1)·Lk。
本文方案與MTGKM方案的存儲開銷對比如表1所示。

表1 存儲開銷對比
在假定單個密鑰長度為Lk=1的情況下,逐步增加用戶數量來對比兩方案存儲開銷。當單群組用戶數量為100時,存儲損耗、節點數目隨資源種類增加而變化的情況如圖2、圖3所示。

圖2 存儲開銷測試

圖3 樹形密鑰圖
在單一資源環境下即N=1時,三種方案對比如圖4所示。

圖4 單資源存儲開銷對比
4.2.2通信開銷
在處于用戶數量大、用戶權限變動頻繁的環境時,初始化構建密鑰圖時的通信量可以忽略不計,密鑰管理方案的通信開銷主要體現在密鑰更新方面。而密鑰更新時其通信開銷主要由傳送密鑰產生,下面就從密鑰更新時傳遞的密鑰量上來進行兩個方案的對比。
MTGKM方案[10]密鑰更新時采用廣播節點標號來向其他節點傳遞更新信息。當一個節點加入群組時,先由KDC分配創建新節點并分配新標號和用戶密鑰,再向全群組廣播新節點的標號信息,該情況下通信量為3·Lk。當一個節點退出群組時由KDC廣播其標號,該情況下通信量為Lk。單節點的權限變更操作可以看成先進行權限撤銷再進行權限提升操作,該情況下通信量應為上述兩種情況之和,即4·Lk。當多節點權限改變時,根據其密鑰圖結構,總通信量應為單節點權限變更通信量與該權限操作的節點數量之積。
文獻[15]方案為了降低密鑰更新的影響范圍而劃分子網,從而將范圍限定在單個子網中。由于子網密鑰結構為LKH,當一個用戶節點離開時,子網內的通信開銷為Lk。當用戶加入時,子網通信開銷為3·Lk。用戶權限轉移時總開銷為上述兩種操作之和即4·Lk。由于沒有改變LKH樹結構,該方案與MTGKM方案在通信量開銷上相同。
本文方案的密鑰更新分為兩種情況:區密鑰更新和群密鑰更新。單個節點的權限變動只可能引發區密鑰更新,其更新范圍被限定在受影響的區中。只有轉出區需要進行密鑰更新,此情況下權限變動的節點在轉出或退出區之前通過組播告知區中其他用戶需要進行密鑰更新,此過程產生的通信量為Lk。輔助密鑰節點產生一個新的隨機數λx-y并組播給相關用戶區的合法用戶,用戶密鑰節點通知其進行密鑰更新,此情況下通信量為Lk。當進行群密鑰更新時,該群組需要先進行Shamir門限運算恢復出輔助密鑰,此過程的通信量為t·Lk。之后,更新完畢后的輔助密鑰和會話密鑰將重新下發給群中各區,此時通信量取決于該區所在群組的等級和該群組的分區數,該情況下通信量為N·Lk+(t-1)·Lk。
通過上述比較不難看出,本文密鑰管理方案進行區密鑰更新的通信總量為2·Lk,少于MTGKM方案的單節點通信總量4·Lk。本文方案進行群密鑰更新時通信總量為(2·t+N-1)·Lk,此種更新方式下產生的密鑰通信量一般大于4·Lk,但從觸發群密鑰更新的條件上看,其發生群密鑰更新的頻率將遠遠小于區密鑰更新。如果按節點移除概率進行分區可以進一步降低群密鑰更新發生的概率。綜合來看,在用戶數量多、用戶權限變動頻繁的環境下,本文方案較MTGKM方案具有一定的通信優勢。
4.2.3計算開銷
計算開銷主要體現在密鑰更新時需要進行密鑰更新節點的范圍上。從用戶節點的權限變動上來看,產生計算開銷的情況有兩種:新節點加入群組和原節點退出群組。
MTGKM方案中為了考慮后向安全性提出當新節點加入時也要進行密鑰更新,因此在新用戶加入的情況下該方案與本文方案沒有可比性。僅考慮保障前向安全性時,節點退出群組時MTGKM方案中輔助密鑰需要更新的密鑰數應為2·n+2,參數n為權限撤銷節點的資源等級,用戶密鑰需要更新的密鑰數為群組中所有節點。本文方案在同等情況下需要更新的節點數僅為某一區中所有節點數與該權限被撤銷節點的資源等級之和,對比之下可發現本文方案在更新計算量上小于MTGKM方案。
文獻[15]方案將整個群組劃分為多個子網,當密鑰需要更新時,將更新影響范圍從整個群組縮減到單個子網之中,在子網中所需更新節點的數量為1+M/x,其中x為群組劃分的子網數。可以看到,文獻[15]計算量上將遠小于MTGKM方案,其將密鑰更新影響范圍縮減至小群組中的思想與本文相似,但本文采用Shamir門限方案對小群組進行密鑰分配,設定的閾值在降低了小群組中密鑰更新頻率的同時也將密鑰更新范圍進一步縮減,因而本文方案優于文獻[15]方案。
本文在天地一體化網絡背景下討論了分級文件共享業務中存在的密鑰管理問題,提出了一個多權限群組的分級密鑰管理方案。在保障密鑰安全性不變的同時降低了群組密鑰更新的頻率,縮減了密鑰更新的范圍,降低了系統整體的存儲、計算和通信開銷,提升了系統的性能。