云存儲以其低廉的成本、良好的可擴展性和可靠性等優點而廣受青睞,已被越來越多的用戶所接受,把數據以外包的形式存儲在云端,已成為企業存儲的一種發展趨勢。目前,云存儲進一步推廣應用的主要阻礙是安全問題,由于數據存放在用戶無法掌控的云端,數據的安全過度依賴于并不十分可靠的云服務提供商(Cloud ServiceProvider,CSP),數據的安全難以得到保障。要解決這一問題通常采用加密存儲的方法,即數據擁有者把數據以密文形式存放在云端,數據的加解密均在本地完成,通過對密鑰的管理,數據擁有者就能實現對云端數據的訪問控制。
早期的云存儲針對個體用戶,加解密采用單一密鑰,需要分享文件時,數據擁有者直接將密鑰傳遞給使用者,這種策略存在一系列問題,諸如不能細粒度控制,單一密鑰安全性差等。其后通過引入密鑰樹,并融入其他輔助認證技術等改進了對密文的控制能力,但是對于細粒度的分享控制和權限撤銷一直存在資源開銷過大的情況。
現在公共云存儲服務一般采用混合加密機制,包括密鑰封裝機制KEM和數據封裝機制DEM,其封裝結構如圖1所示:

圖1 混合加密示意圖
廣播加密通過組密鑰維持對密文的訪問控制,每一個用戶屬于一個子集,并且存儲所有子集對應的密鑰,發送者選擇適當的子集覆蓋所有合法用戶,用這些子集對應的密鑰加密消息。廣播加密的關鍵指標包括KEM的密文尺寸、公鑰尺寸和每個用戶儲存的私鑰數量,隨著在云存儲中依靠單一的群組策略并不能適應多級需求。多級安全需要一種鏈式可推導的模型來實現,接下來將結合企業實際的應用場景展開敘述。
2.1.1 單向函數
單向函數即正向計算容易,但其求逆計算在數學上是不可行的,或者很難證明可行性的,也就是僅可以通過正向輸入求得輸出,但很難通過輸出結果推算出它的輸入。
單向函數f(x)滿足以下兩個條件:
①對于所有屬于f定義域的任一x,可以很容易的計算出f(x)=y;
②對于幾乎所有屬于f值域的任一y,在計算上不可能推導出x使得y=f(x)成立。
利用單向函數的僅單向可推導特性,應用在密鑰更新上,若密鑰k_1,k_2,k_3……k_i滿足單向函數f(x)的值域遞推關系,那持有k_1的用戶即可以通過f(x)逐步獲得密鑰k_2,k_3……k_i,實現多級安全訪問中的跨級訪問的行為。此時,若f(x)滿足單調特性,對f(x)的偏移計算仍能滿足對密鑰的推導規則,即可用此特性來完成密鑰更新。
2.1.2 代理重加密
代理重加密(proxyre-encryption,PRE)允許一個半可信的代理者(proxy)將A可解密的密文轉換為B可解密的同一明文的不同密文,同時保證代理者無法獲知明文。
設由公鑰pka加密的密文為c1=(M)pka,proxy在不解密密文的情況下,利用重加密密鑰rkab將c1轉換為c2=(M)pkb,c2是公鑰pkb進行加密的,可以由B直接解密。實際相當于A通過代理重加密算法得到重加密的中間密鑰rkab,CSP用rkab對密文進行了二次加密,通過數學算法,讓新密文滿足新的解密條件,可用于訪問權限撤銷時對云端數據的更新。
在企業云存儲實踐中,結合企業內部管理的組織結構,高級用戶的數量最少卻需要授權最多的文件,而低級用戶數量最多,卻只能訪問受限的最少文件,文件的訪問控制權限呈現多級安全的層次策略。假設在一個云存儲系統中,用戶集合為U,文件集合為F,整個系統被劃分為n個安全等級,?U(1≤i≤n)為安全等級為 i 的所有用戶集合,(1≤i,j≤n,i≠j),U=∪∪…∪,?F(1≤i≤n)為安全等級為 i 的所有文件集合,(1≤i,j≤n,i≠j),F=∪∪…∪,那么?u,用戶u可訪問的文件集合為(∪……∪)。
為接合上述情景,并獲得較高的安全度和較快的響應,本文采用改進的混合加密機制,對 DEM 采用密鑰長度較短的 DES(Data Encryption Standard)算法進行加密,以獲得較快速的大文件密文操作效率。在KEM部分依然采用DES的算法,但選擇位數較長的密鑰加密較短的密鑰明文,依然保證計算效率,并根據安全等級和用戶的數量、涉及文件的數量等情況,靈活的確定不同安全級別 DES密鑰的長度。維持高響應和安全性的平衡,滿足實際應用的基礎需求。
(1)場景概述
為了便于描述本文提出的多級安全訪問控制機制,在企業級云存儲環境中提取幾個重要的角色。CSP通過互聯網提供云存儲服務,File由Data owner創建,并由Data owner加密上傳,File的密文將滿足多級安全訪問控制規則,Data owner負責分發管理所屬密文的狀態,在用戶Data user訪問時,需要滿足自身的安全等級不低于File的安全等級,才能下載訪問,并且一旦發生權限撤銷,CSP將通過代理重加密操作完成云端數據更新。
(2)系統初始化
Data owner首先按照用戶的身份和文件的重要程度劃分用戶和文件的安全等級,并為每個安全等級分配一個密鑰,然后對每個文件進行加密和封裝。上傳到云端的文件按照安全級別的不同組織不同的目錄樹存儲,同一級別的文件在一個目錄樹結構中,以便文件的檢索和密文的更新。KEM 的結構前部加入料所屬目錄樹的信息,用以描述文件的等級,引導權限控制。
(3)文件的訪問
Data user發起對的File_1密文的訪問請求,CSP會識別Data user所在等級,根據安全級別,決定是否開放訪問權限。
當云存儲系統內部發生安全隱患,需要撤銷某個危險用戶時,將對整個系統或大部分的密文進行更新,主要操作由 CSP代理執行,具體流程如下(詳見圖2所示):

圖2 密鑰更新圖
在云存儲訪問控制的研究中,對性能影響最大的就是加解密的計算開銷和更新密文的開銷,從訪問控制策略的設計來說,就是文件細粒度的訪問控制和用戶權限的動態管理的矛盾,想要實現絕對的細粒度,就要盡可能對文件一次一密,其結果會產生的大量密鑰,增加動態管理的開銷。所以,云端密文管理機制必須是有針對特定場景的、在特定安全范圍內的策略。在設計策略上,需要找到細粒度訪問控制和用戶權限動態更新的平衡。
系統自身的安全性包括密文解密難易程度和算法策略的可靠性,數據的機密性由對稱加密的原理可知,在保證密鑰長度的情境下,針對暴力破解是安全的。算法推導可以抽象為數學上單向函數的求解,數學理論已經確認單向性的推導難度,可以用于密碼學應用。
針對串謀攻擊,若兩個合法用戶相互傳遞密鑰以窺視密文,將通過 CSP限制其下載實現,無等級歸屬的文件申請將被拒絕訪問。若某一用戶被撤銷,持有密鑰,與另一個合法用戶合謀窺視密文,則會根據用戶所屬安全等級,執行相應的密文權限更新,若底層用戶退出,亦可通過 CSP進行用戶黒名單隔離,并在必要時進行懶惰的密文權限更新。
本文通過對企業級云存儲中多級安全訪問控制的研究,結合單向函數特性提出了多級應用場景下可單向推導的密鑰管理方案,應用代理重加密技術解決了大規模密鑰更新時,用戶自身的開銷過大的問題,該方案具有架構簡單,易于部署實施,易于更新和權限管理等優勢,從整個系統運作上減小了重新下載上傳密文的流量開銷,基本滿足了現行企業級云存儲對多級安全訪問控制的需求,為以后的實踐工作提出了可供參考的理論依據,具有較高的可操作性和擴展性。