本發明屬于網絡與信息安全技術領域,實現了一種云計算環境下的密文數據共享系統,可用于云計算環境下數據交換領域的信息共享。
背景技術:
隨著互聯網技術的飛速發展,用戶開始參與信息的制造和編輯,使得用戶個人數據量成指數增長,導致數據存儲和管理的開銷逐漸增加,當個人pc不足以支撐用戶的業務要求時,云計算技術隨之產生,云計算本身的逐步演化是繼承了此前的網格計算、效用計算、軟件即服務的一些研究成果而逐步發展而來。云計算是一種基于網絡的計算模式,其核心是可以為用戶提供可伸縮的虛擬化服務,它改變了傳統信息產業的運作方式,用戶不再需要將軟件安裝在個人電腦上,通過互聯網就可以使用軟件提供的服務,使得傳統的軟件提供商逐漸轉變為云服務提供商。云計算處于快速發展階段,通過為用戶提供各種服務,可以用來解決大規模數據的存儲和計算問題,成為各大廠商紛紛追逐的對象,比如亞馬遜的aws提供了一套商業成熟的彈性云服務,用戶只需關注自己的業務需求,按需定制,而無需關心設備的購買與維護,大大降低了企業開發成本;谷歌的appengine為程序員打造了一個無限的虛擬運行環境,使程序員無需擔心系統因業務規模的擴大而需頻繁重構的問題;此外還有微軟的azure、facebook、國內的阿里云等等,都在各自的領域內發揮著重要的作用。由于其隨時隨地存取、大容量、按需服務以及低成本等優勢,存儲在云端的數據呈指數上漲趨勢。
云端自身的安全性以及可信度問題,成為制約云計算技術進一步發展的主要瓶頸。傳統的解決方法是利用密碼學技術將數據在終端加密,再將加密后的數據存儲在云端。這種方法在一定程度上增強了數據云端存儲的安全性,但是卻引入了云端密文數據安全共享困難的問題,即如何將這些密文信息安全的分享給授權用戶,同時避免未授權用戶的非法訪問。
基于密文屬性策略(ciphertext-policyattribute-basedencryption,cp-abe)的方法是解決云計算環境下的密文數據安全共享的主要技術之一,特別是在規模龐大且用戶身份未知的情形下尤為適用,但對于數據擁有者的親人、朋友等這類身份明確且數量有限的用戶群而言,該技術在性能上并不具備優勢,因此有必要針對這部分用戶進行單獨處理。同時基于cp-abe構造的密文數據共享系統涉及屬性撤銷問題,而該問題在很大程度上對整個系統的性能會造成影響。
技術實現要素:
本發明的目的在于克服上述現有技術存在的缺陷,提出了一種云計算環境下的密文數據共享系統,用于解決現有密文數據共享系統中存在的屬性撤銷代價大和用戶數據共享效率低的技術問題。
為實現上述目的,本發明采取的技術方案為:
一種云計算環境下的密文數據共享系統,該系統包括授權模塊、數據擁有者模塊、用戶模塊和云服務提供商模塊,所述授權模塊,用于對數據擁有者模塊、用戶模塊進行授權;所述數據擁有者模塊,用于對待共享的數據進行加密并上傳;所述用戶模塊,用于向授權模塊申請授權,并向云服務提供商模塊申請訪問數據;所述云服務提供商模塊,用于為數據擁有者模塊和用戶模塊提供存儲和計算服務,所述授權模塊,包括多個屬性權威模塊,各屬性權威模塊之間采用層級或并列關系;所述數據擁有者模塊,包括構建xacml訪問策略模塊,用于生成策略文件;所述用戶模塊,包括私鑰解密模塊和cp-abe解密模塊,其中,私鑰解密模塊,用于私有域用戶的aes密鑰密文數據解密,cp-abe解密模塊,用于公有域用戶aes密鑰密文數據的解密。
上述的一種云計算環境下的密文數據共享系統,所述授權模塊,還包括認證權威模塊,用于產生系統公鑰和系統主私鑰。
上述的一種云計算環境下的密文數據共享系統,所述屬性權威模塊,包括初始化模塊、公私鑰生成模塊和屬性授權模塊,其中:初始化模塊,用于對公私鑰生成模塊和屬性授權模塊進行初始化;公私鑰生成模塊,用于生成公私鑰;屬性授權模塊,用于生成屬性相關的密鑰。
上述的一種云計算環境下的密文數據共享系統,所述數據擁有者模塊,還包括aes對稱加密模塊、cp-abe加密模塊、公鑰加密模塊和數據上傳模塊,其中:aes對稱加密模塊,用于對數據擁有者模塊所共享的數據明文進行加密;cp-abe加密模塊,用于對公有域用戶使用的aes密鑰進行加密;公鑰加密模塊,用于對私有域用戶使用的aes密鑰進行加密;數據上傳模塊,用于將aes對稱加密模塊、cp-abe加密模塊和公鑰加密模塊生成的數據組合上傳到云服務提供商模塊。
上述的一種云計算環境下的密文數據共享系統,所述云服務提供商模塊,包括策略執行模塊、上下文處理器模塊、策略決策模塊、策略管理庫模塊、策略信息模塊、管理屬性庫模塊、云存儲模塊、代理重加密模塊和數據下載模塊,其中:策略執行模塊,用于執行策略決策模塊返回的響應;上下文處理器模塊,用于將xacml格式的請求/響應和非xacml格式的請求/響應的相互轉換,并將此消息發送到策略決策模塊;策略決策模塊,用于從策略管理庫模塊中選取對應的策略,并根據策略作出相應的決策響應,并將此響應消息發送到上下文處理器模塊;策略管理庫模塊,采用mysql數據庫服務器,對系統中的xacml策略進行管理;策略信息模塊,用于管理對應的主體、資源和環境的屬性信息;管理屬性庫模塊,用于管理用戶屬性集;云存儲模塊,采用openstackswift開源云存儲,對數據擁有者上傳到云服務提供商的所有數據進行存儲;代理重加密模塊,用于將私有域用戶訪問的數據密文進行重加密處理;數據下載模塊,用于將用戶所訪問的所有數據下載到用戶的客戶端。
上述的一種云計算環境下的密文數據共享系統,所述用戶模塊,還包括aes解密模塊,用于數據擁有者模塊上傳的數據密文的解密處理。
本發明與現有技術相比,具有如下優點:
1)本發明由于在用戶模塊中對用戶群進行了分域處理,增加了私鑰解密模塊和cp-abe解密模塊,其中,私鑰解密模塊用于私有域用戶的解密操作,cp-abe解密模塊用于公有域用戶的解密操作,使得本發明對不同的用戶群更有針對性,提高了數據共享的效率。
2)本發明由于在授權模塊中增加多個屬性權威模塊,各屬性權威模塊之間采用層級或并列關系,并且分別管理一部分用戶,當用戶規模增大時,不會造成單授權模型的系統瓶頸問題,使得系統整體的可擴展性得到增強,更好的適應了云計算的環境要求。
3)本發明由于在數據擁有者模塊中增加構建xacml訪問策略模塊,用于生成策略文件,數據擁有者通過選擇將一些經常需要更新的屬性(比如“時間”屬性),定義在xacml策略文件中,而不是定義在cp-abe的訪問控制結構中,當這些屬性需要撤銷時,數據擁有者可以簡單的更新xacml訪問控制文件,而避免撤銷cp-abe屬性所需的一系列操作,可以有效的降低數據擁有者撤銷這些屬性所需的代價,從而提高了系統性能。
附圖說明
圖1是本發明的整體結構示意圖;
圖2是本發明的授權模塊的結構示意圖;
圖3是本發明的數據擁有者模塊的結構示意圖;
圖4是本發明的云服務提供商模塊的結構示意圖;
圖5是本發明的用戶模塊的結構示意圖。
具體實施方式
以下參照附圖和實施例,對本發明作進一步詳細說明:
參照圖1,本發明包括授權模塊、數據擁有者模塊、用戶模塊和云服務提供商模塊,其中,授權模塊的結構示意圖如圖2所示,授權模塊與數據擁有者模塊和用戶模塊相互通信;數據擁有者模塊的結構示意圖如圖3所示,數據擁有者模塊與授權模塊和云服務提供商模塊相互通信;云服務提供商模塊的結構示意圖如圖4所示,云服務提供商模塊與數據擁有者模塊和用戶模塊相互通信;用戶模塊的結構示意圖如圖5所示,用戶模塊與云服務提供商模塊和授權模塊相互通信。
系統工作時,數據擁有者模塊和用戶模塊向授權模塊申請所需密鑰,授權模塊產生相關密鑰并通過安全套接層分別發送到數據擁有者模塊和用戶模塊;數據擁有者模塊加密共享數據,并將該密文上傳到云服務提供商模塊;用戶模塊向云服務提供商模塊申請訪問共享數據,云服務提供商模塊根據用戶合法性決定是否將密文發送給用戶模塊;用戶模塊下載共享數據密文,根據不同用戶域進行分別處理。
參照圖2,認證權威模塊負責為系統中的屬性權威模塊授權,系統初始化時,認證權威模塊負責產生系統公鑰和系統主私鑰,其中,系統公鑰對整個系統公開,系統主私鑰要安全保存。認證權威模塊并不管理任何屬性,也不產生任何與屬性相關的用戶私鑰,它使用產生的系統公鑰和系統主私鑰對下層屬性權威模塊授權,下層屬性權威模塊得到初始化,產生一個授權密鑰。為了消除單授權機構的授權模型所帶來的系統瓶頸問題,提高數據共享效率,本發明在授權模塊中增加了多個屬性權威模塊,同時將各屬性權威模塊之間設計成層級或并列關系,系統中位于上層的每個屬性權威模塊負責為其管轄范圍內的下一層的屬性權威模塊、數據擁有者模塊以及用戶模塊授權,多屬性權威的授權模型分擔了用戶流量,使得系統整體的可擴展性得到增強,更好的適應了云計算的環境要求。屬性權威模塊包括初始化模塊、公私鑰生成模塊和屬性授權模塊,其中初始化模塊產生一個系統安全參數,該參數用于對公私鑰生成模塊和屬性授權模塊進行初始化;公私鑰生成模塊采用rsa公私鑰生成算法生成一對公私鑰;屬性授權模塊使用cp-abe密鑰生成算法為其生成一個屬性相關的密鑰,然后將產生的公私鑰和屬性相關的密鑰發送到數據擁有者模塊。
參照圖3,數據擁有者模塊接收授權模塊產生的公私鑰和屬性相關的密鑰,aes對稱加密模塊運行aes密鑰生成算法產生一個aes密鑰,然后將要共享的數據明文m用aes密鑰ck使用aes128bit算法加密,生成數據密文ct,數據擁有者模塊通過使用aes算法加密數據明文提高了數據的加密效率;然后判定用戶群,其中,針對私有域中的用戶,公鑰加密模塊使用rsa公鑰加密算法,對aes密鑰加密生成密鑰密文c2;針對公有域中的用戶,cp-abe加密模塊使用cp-abe加密算法,對aes密鑰加密得到密鑰密文c1;為了降低屬性撤銷的代價,數據擁有者模塊通過構建xacml訪問控制策略模塊,通過xml編輯器,將一些更新頻率較高的屬性(比如“時間”屬性),定義在xacml策略文件中,生成一個xml格式的策略文件,當這些屬性需要撤銷時,只需對xacml策略文件進行更新,可以有效的降低數據擁有者模塊撤銷這些屬性所需的代價;最后數據擁有者模塊將策略文件、數據密文ct、密鑰密文c1和密鑰密文c2經過數據上傳模塊上傳到云服務提供商,上傳模塊使用java套接字實現。
參照圖4,用戶模塊向云服務提供商模塊發起訪問共享數據的請求,策略執行模塊接收到請求并將該請求轉發給上下文處理器模塊,上下文處理器模塊接收到該請求,使用xml開發包將其重構為xacml格式的請求并發送到策略決策模塊,策略決策模塊首先經過策略管理模塊向管理策略庫模塊中查詢請求的策略,再從上下文處理器模塊向策略信息模塊從管理屬性庫模塊中請求相關主體、資源、環境的屬性值,策略決策模塊運行xacml策略決策算法將決策響應經過上下文處理器模塊發送給策略執行模塊,其中上下文處理器模塊將xacml的決策響應格式轉換為原請求格式,策略執行模塊根據響應信息判斷決策結果,若為拒絕,則策略執行模塊向用戶模塊發送拒絕響應信息;若為允許,則向云存儲模塊發送查詢數據請求,云存儲模塊接收到該請求后,在其中找到對應的數據密文ct,然后通過判斷用戶群,若為私有域中的用戶,則將密鑰密文c2發送到代理重加密模塊,通過代理重加密模塊,使用代理重加密算法,將密鑰密文c2重新加密為c3,使得該私有域用戶可以用自己的私鑰解密該密文;若為公有域中的用戶,則在云存儲模塊中找到對應的密鑰密文c1;最后云服務提供商模塊將在云存儲模塊中找到的密文數據ct、c1或c3經過數據下載模塊一并發送給用戶模塊。
參照圖5,用戶模塊接收到云服務提供商模塊的響應數據ct、c1或c3,首先判斷用戶群,如果是私有中的用戶,則通過私鑰解密模塊,使用rsa解密算法將密鑰密文c3解密,得到aes密鑰ck;如果是公有域中的用戶,則通過cp-abe解密模塊,使用cp-abe解密算法將密鑰密文c1解密,得到aes密鑰ck。然后通過aes解密模塊,使用aes解密算法,使用aes密鑰ck解密數據密文ct得到數據明文m。