陳 莊 齊 鋒 葉成蔭
(重慶理工大學計算機科學與工程學院 重慶 400054)(cz@cqut.edu.cn)
近年來云存儲技術得到蓬勃發展,2016年《中國云計算白皮書》指出2015年我國云計算市場規模達到378億元,整體增速31.7%,僅在2015年國務院就出臺了3項與云計算相關的政策文件.目前越來越多的企業和個人將數據存放到云端,這種存儲方式可以有效提高數據庫的存儲容量、抗故障能力、響應速度等.
云存儲在不斷發展的同時安全性問題也日益突出[1],尤其是云端數據的存儲和隱私問題,例如雅虎在2016年9月公布用戶賬號信息遭到黑客盜取,至少5億用戶的信息被泄露;Kromtech Security信息專家近期披露,疑似來自 Patient Home Monitoring的醫療數據存儲記錄遭到黑客破解,近47 GB的醫療數據文件在云端被公開訪問,數據的安全存儲和隱私問題已經成為云計算發展的“噩夢”.
基于本文提出了一種全新的云數據加密方案,根據不同的數據類型采取不同的加密策略,有效地解決了云存儲加解密目前所面臨的技術問題.
密碼技術是確保云數據安全的主導力量,可分為對稱加密和非對稱加密2種算法.對稱加密算法使用相同的加解密密鑰,具有運算效率高、計算量小的優點,非常適用于云存儲環境下的海量數據加解密,常用的對稱加密算法有AES,DES,3DES[2-3]等.非對稱加密算法使用不同的加解密密鑰,具有高安全性的優點,但是算法復雜性高計算消耗時間量大,不適用大數據加解密,常用的非對稱加密算法有 RSA,ECC[4-5]等.目前國際上絕大多數的密碼技術標準都是由美國制定和開發的,為確保我國網絡安全和社會公眾利益,國家商用密碼管理局先后發布了一系列密碼標準,例如SM2,SM3,SM4[6-8]等密碼算法,算法公開后國內外學者對其安全性作了全面測試.除了傳統的加密算法以外,目前也出現了一些新的加密技術,例如在文獻[9]中Huang等人提出了一種同態加密算法,該算法通過矩陣和向量的運算來加解密數據,但是其密文檢索的處理效率很低,離實際的商業應用還有較大的差距;在文獻[10]中Ateniese等人提出了基于代理重加密的分布式存儲方案,利用半可信服務器進行解密操作,但是無法避免惡意服務器的攻擊;在文獻[11]中Kamara等人提出了一種面向公有云的加密存儲框架,但是目前該框架還沒有具體的實施細節,仍處于理論階段.
關系型數據庫已經無法適應云數據的多源異構性,為解決這一問題人們引入了非關系型數據庫,但是在查詢分析方面能力較弱.目前越來越多的云環境供應商開始采用關系型數據庫和非關系型數據庫互補的架構方式,來解決在處理不同數據類型上的缺陷和不足.
云數據的多樣化存儲方式,決定了單一的數據加密方式很難滿足實際的應用需求.針對以上問題本文提出了數據分類分級的加密方案,在加密算法的選擇上均采用國產密碼算法.針對關系型數據庫中的結構化數據只對敏感數據進行加密并采用多重密鑰管理機制,即可以有效地提高加解密效率,又可以定期更換主密鑰增強數據的安全性;針對非結構化數據(文檔、圖片、視頻等)采取客戶端本地加密的方式,同時采用混合加密算法解決密文共享問題.
根據目前國內外研究現狀,云平臺的設計采用關系型數據庫和非關系型數據庫優點互補的架構方式,同時采用混合加密算法來克服單一密碼算法的缺點和密文共享問題,敏感明文數據的傳輸需要通過SSL加密通道,具體架構方案如圖1所示:

圖1 云平臺加密架構方案
客戶端負責文檔、圖片等非結構化數據的加解密,用戶登錄加密系統后選擇文件.對于需要加密但是無需共享的文件,使用國密SM4算法加密后上傳云端,私鑰本地化存儲.當云數據中的敏感數據需要共享給第三方時,采取如下的加密方式:
1)客戶端
客戶端的數據加密方案如圖2所示,詳細加密步驟如下:
①利用SM3算法將信息產生報文摘要;
②報文摘要用發送方SM2的私鑰進行加密,生成數字簽名;
③將數字簽名和信息使用SM4的私鑰進行加密,生成密文;
④使用SM2接收方的公鑰對SM4的私鑰加密生成數字信封,將密文和數字信封發送給接收方.
2)共享端
共享端的數據解密方案如圖3所示,詳細解密步驟如下:
①共享端從云端下載密文和數字信封,使用SM2的私鑰對數字信封進行解密,生成SM4的私鑰;
②使用SM4的私鑰解密密文,產生信息和數字簽名;
③使用SM2發送方的公鑰對數字簽名解密,得到報文摘要;同時對原始信息使用SM3再次生成報文摘要;
④對比2個報文摘要,如果相同說明數字簽名有效,原始消息沒有被篡改;如果不同說明原始消息被修改或簽名不可信賴,并產生告警.
關系型數據庫中的關系型數據,例如登錄信息、個人信息等內容,通過SSL安全通道進行傳輸,數據到達服務器后先經過加密系統加密,加密后的數據存入數據庫中.目前絕大多數的數據庫自帶加解密功能,但是并不支持國產密碼算法,同時DBA的權限過大可以獲取所有的密鑰,如果黑客獲取DBA權限那么所有的數據都將會是透明的.基于此本文設計了一種基于DBMS外層的關系型數據庫加密系統,該加密系統由密鑰管理模塊、加解密引擎模塊、密鑰管理模塊構成,具體架構如圖4所示.密鑰管理模塊采用多級密鑰管理機制,使用國產密碼算法SM2的公鑰去加密表的密鑰后存儲于加密字典中,而SM2的私鑰存儲于加密系統中,利用表密鑰去保護數據密鑰,這種密鑰管理方式可以定期更換主密鑰而不影響以前加密的數據.加解密引擎模塊主要負責數據庫的鏈接和加密算法的選擇,數據的加解密采用國產密碼算法SM4,在加密粒度的選擇上采用的是基于字段的加密方法,能夠對某一列敏感數據進行加解密,這種方式避免了數據的全表加解密,有效降低了因加解密造成的時延.加密系統管理模塊主要用來驗證用戶身份的合法性,只有合法用戶才能通過該模塊訪問加密字典,修改加密定義參數.

圖4 數據庫加密系統架構圖

圖2 客戶端加密方案

圖3 共享端解密方案
客戶端加密系統和數據庫加密系統使用Java語言編程實現,選用Eclipse作為集成開發環境;數據庫使用Oracle和MongoDB,其中Oracle數據庫用來管理關系型數據,MongoDB用來存放文件和文件夾信息;云端存儲平臺利用hadoop搭建.
非結構化數據采用本地加密方式,客戶端首先選擇需要加密的數據,經過加密后的文件統一以WanaCry為后綴名并上傳到云端,為防止云端數據被非法修改,采用SM3報文摘要算法驗證數據的完整性.
選取1組明文數據用于論證方案的正確性,通過對比表1和表2的相關實驗參數發現,共享端解密過程中得到的明文、報文摘要、SM4的私鑰都與客戶端加密時產生的參數完全相同.
Oracle數據庫用來管理被加密后的關系型數據,無論數據庫管理員以何種身份進入都無法看到明文,即使數據庫遭到非法入侵也無法獲取密鑰得到明文信息,具體加密效果如圖5所示.數據庫加密系統的設計采用基于字段的加密方法,只對表中的敏感信息進行加密,這種方式可以大幅度提高數據的加解密效率.實驗過程中分別選取了1萬~4萬條的數據量,采取了全表加密和敏感信息加密(選取了其中的1列)的方式,通過對比分析發現基于字段的加密方式效率更高,具體實驗對比效果如圖6所示.

表1 客戶端加密實驗參數

表2 共享端解密實驗參數

圖5 數據庫加密效果

圖6 加密效率對比
本文結合云數據多樣化存儲的特點,在借鑒傳統加密方案的基礎上,提出了基于國密算法的云數據分類分級加密方案.該方案集終端數據安全、網絡傳輸安全、數據存儲安全技術于一體,有效地確保了云數據的完整性、保密性、可用性.