吳 昊,范九倫,劉建華,張俊生
(1.西安郵電大學通信與信息工程學院 西安710121;2.西安郵電大學信息中心 西安710121)
隨著計算機和互聯網技術的發展,人們對計算機存儲的要求越來越高,傳統的集中式存儲已不能滿足用戶需求,云存儲技術作為一種新興的基于網絡的存儲技術應運而生。它旨在通過互聯網為用戶提供更強的存儲服務,將網絡中大量處于不同計算機、不同類型的存儲設備通過網絡和應用軟件集合起來協同工作,共同對外提供數據存儲和業務訪問,用戶可以隨時隨地通過網絡訪問“云”中的數據,從而有效地解決了存儲的性能瓶頸問題。然而,在云存儲服務給人們帶來極大便利的同時,安全問題也日益凸顯。在云存儲系統中,用戶所屬的數據外包給云服務提供商,云服務提供商就獲得了該數據或應用的優先訪問權,由于存在內部人員失職、黑客攻擊及系統故障導致的安全機制失效等多種風險,云服務商沒有充足的證據讓用戶確信其數據被正確地存儲和使用[1,2]。為了解決這一問題,研究人員已經提出了一些解決辦法。參考文獻[3]提出了一種基于數據分割與分級的云存儲數據隱私保護機制,按不同的安全級別需求將數據分割為大小數據塊,聯合采用數據染色和不同強度的數據加密技術進行數據染色或加密。由于文件塊大小的差異,黑客有可能直接從大數據塊中恢復出原文件的隱私信息;參考文獻[4]提出了一種基于ID特征碼的云存儲數據分片與備份策略,利用文件塊ID和可用存儲節點ID的對應關系隨機分配有效存儲節點。該方法解決了服務器的負載均衡問題,但建立多個數據副本增加了存儲成本。本文提出一種基于指紋魔方算法的云存儲數據保護機制,運用魔方加密算法對存儲文件進行加密處理,同時將門限分解思想加入保護機制中,不僅使數據泄露問題得到了有效解決,還能有效防止數據被破壞或者丟失,系統存儲效率高,數據冗余度低。
整個數據保護機制包括文件上傳和下載兩個過程。文件上傳流程分為4個步驟,如圖1所示,具體介紹如下。
·文件傳輸:由客戶端向服務端發送連接請求,服務端允許連接后,客戶端發送文件,由服務端接收模塊開辟一個線程負責接收文件流。
·文件接收:服務端根據客戶端請求,接收上傳的文件。
·魔方加密:把文件按字節附于魔方表面,運用用戶指紋特征值和當前時間戳取得散列值,由該值控制魔方的旋轉面、旋轉方向和操作輪數。
·門限存儲:依據所設計的門限方案,將文件分塊,每塊增加頭部信息,存儲在“云”中不同的服務器主機上。
文件下載主要分為5個步驟,如圖2所示,具體介紹如下。
·文件選擇:選擇已上傳到服務器中需要下載的文件。
·門限重組:對各文件做散列運算,檢查服務器上各文件是否被破壞,根據參數做出文件分割表,組合出完整文件。
·魔方解密:把組合出的文件附于魔方表面,同樣利用用戶指紋特征值和文件存儲時間取得散列值,按加密時的逆方向旋轉魔方解密文件。
·文件傳輸:由客戶端向服務端發送連接請求,服務端允許連接后,客戶端接收文件。由服務端發送模塊開辟一個線程負責發送文件流。
·文件接收:服務器將客戶端請求下載的文件發送至客戶端,客戶端接收文件。

圖1 文件上傳流程

圖2 文件下載流程
一個N階魔方是指其長、寬、高均為N個單位小方格的正方體,與魔方某個表面平行的平面上的各小方格構成一個可轉動的層面。魔方加密的原理就是利用魔方旋轉變化的不確定性,用數學方法把魔方的旋轉規則模擬出來[5]。一個N維魔方旋轉M次,會出現的旋轉方式總數可以由式(1)得出,其中R=骔M/4」,L=M mod 4,Total表示不同的旋轉種數。

由式(1)可知,隨著N或者M的增長,Total將迅速增加。這樣,只要增加魔方的維數或者增加旋轉的次數就可以大幅度提高加密算法的安全性。本文設計的云存儲數據保護機制,就是利用魔方加密的原理,將要存儲的文件分割成6×N2份,寫入N階魔方的“小方格”里,再利用用戶個人的指紋特征值控制魔方旋轉來加密文件,這樣可以保證只有用戶自己能解密自己存儲的文件,大大提高了用戶數據的安全性。
以三階魔方為例,三階魔方共有6個面,分別記作:頂、底、左、右、前、后。對于不同的面分別有兩種基本的操作:順時針旋轉90°、逆時針旋轉90°。其他選擇方式均可由這兩種組合得到,因此共有6×2=12種控制方式。這12種控制方式分別對應一個操作函數。而控制系統選擇哪一個函數進行旋轉操作,取決于用戶注冊時的指紋特征值和當前系統時間。這樣既能保證加密密鑰為用戶獨有,又能保證用戶在不同時刻密鑰不同,防止黑客的竊聽。具體的實現步驟如下。
(1)用戶注冊時,通過客戶端提取指紋特征值Fingerprint。
(2)將客戶端上傳的文件分成6×9=54塊,使之與魔方表面的54個分塊一一對應。
(3)取當前系統時間time,計算Key=Hash(Fingerprint||time),Key[i]分別代表密鑰的第i字節數據,i=1,2,3,…,32。
(4)對于i=1,2,3,…,32,每一個Key[i]計算控制數值res=Key[i]mod 12。根據表1進行不同的旋轉操作(解密時,對應加密的操作逆向還原)。

表1 魔方操作控制
(5)將加密后的文件塊分別存儲在不同的服務器主機上。
該加密方案在多輪加密的情況下,可以形成足夠數量級的加密組合,從而能夠抵擋窮舉攻擊的威脅。另外,魔方的維度可以任意擴展,從而提高加密強度。
由于云存儲系統所部署環境的復雜性,在實際應用中數據可能會受到一定程度的損壞,此外,黑客的攻擊也不可避免,這就更需要在存儲以及傳輸時對每個文件塊進行完整性驗證[6,7]。因此,云存儲保護機制引入門限方案,利用多個服務器中存儲文件塊存在的冗余,通過這些冗余補齊丟失或者破壞的文件塊,獲得所有源文件數據后重組文件。這樣,當云存儲服務器集群中的某一臺或幾臺服務器的文件被破壞后,仍可以通過其他服務器上的文件碎片恢復完整的用戶文件。
為了保證文件可以實現逆向恢復,需要對所有服務器上的文件塊增加一些頭部信息,見表2。

表2 文件頭信息

表3 文件塊存儲情況
門限算法分為文件分割和文件恢復兩部分,分別在用戶上傳和用戶下載時使用。
4.3.1 分割算法
分割算法的具體步驟如下。
(1)設文件大小為FileSize byte。對于(n,t)門限,記代表可供存儲的服務器數,t表示未被破壞的服務器數閾值,U表示分割的文件塊數。
(2)計算PartSize=FileSize/U,作為每臺服務器存儲文件的大小。若FileSize≠k1×U,k1∈N,在文件末尾填充FileSize-骔FileSize/1」×U個字節0x00。若FileSize=k×U,k∈N,繼續。
(3)填充如表1所示的各文件塊的頭信息,其中散列值待文件組合后再計算。
(4)依據(n,t)值設計分割表,以(5,3)門限為例,文件塊存儲情況見表3。每一行代表1臺服務器,這里有5臺,分別是A、B、C、D、E。然后對每個文件進行分塊,事實上在經過第(2)步的處理后,文件正好能被平均分成U份,這里U=10。表3中√表示該文件塊在相應的服務器中有存儲,空白代表不存儲。
(5)根據分割表對文件進行分割,將屬于不同服務器的文件塊重新組合。
(6)將文件分別存儲到各服務器上。
4.3.2 恢復算法
恢復算法的具體步驟如下。
(1)獲取門限參數(n,t)、文件大小FileSize,計算
(2)對各文件做散列運算,檢查服務器上各文件是否被破壞。文件破壞的服務器∈A={SET1|文件被破壞},未被破壞的服務器∈B={SET2|文件完整}。
(3)若被破壞文件數大于n-t,超過門限值,無法恢復文件,結束。否則繼續。
(4)對于文件塊1~U,獲取集合B中服務器上的文件塊,恢復完整文件。
4.3.3 系統冗余度
假設文件大小為FileSize byte,門限參數為(n,t)。將文件分成∈塊,每塊的大小為PartSize=FileSize/U byte。對于每臺服務器來說,存儲的文件塊數為PartCnt=U-U×(n-t)/n。所以實際上,每臺服務器存儲的文件大小是源文件大小的PartCnt/U=t/n。若使用(5,3)門限,就只有60%的占用率。
系統測試搭建了一個小型云平臺作為實驗環境,選取1臺PC作為客戶端,5臺服務器作為云存儲服務器,對幾個不同大小的數據文件的上傳和下載速度進行了測試。
(1)文件上傳和下載速度測試
實驗選擇了4個文件,大小分別為10 MB、100 MB、500 MB、1 GB,記錄每個文件上傳和下載所花費的時間,測試結果如圖3所示。測試中,文件平均下載速率為1.9 MB/s,上傳速率為1.4 MB/s,與整個文件上傳下載相比,本方案增加了數據分割和加密操作,產生了一定的額外時間開銷,經計算時間開銷為O(n),n為文件塊數,增加的時間開銷對系統影響不大,但分割和加密操作大大增強了數據隱私的安全性。
(2)文件分塊破壞恢復情況

圖3 文件上傳和下載速度測試結果
實驗采用(3,5)的門限方案進行測試,對存儲在5臺服務器上的文件分塊進行不同程度的破壞,看系統能否恢復出完整文件。測試結果見表4。
實驗結果表明:在(3,5)門限方案下,當被破壞文件塊數小于3時,系統仍能完整地恢復用戶文件;當被破壞文件塊數大于或等于3時,系統不能恢復用戶文件,測試結果完全符合系統設計目標。

表4 文件塊破壞恢復測試
用戶數據的安全問題已經成為云存儲應用發展的瓶頸。本文提出了一種基于指紋魔方算法的云存儲數據保護機制,利用用戶的指紋特征值控制魔方旋轉對用戶文件進行加密存儲,具有算法效率高、安全性高的特點。另外,利用門限分割技術提出了一種安全云存儲策略,使得云端各服務器分擔系統負載,并且使得任意指定數目的存儲服務器均能恢復出用戶上傳的文件,避免了個別服務器遭到破壞后無法恢復文件的情況。機制從存儲策略和數據本身都對用戶數據安全進行了有效防護,也在一定程度上降低了數據冗余,提高了系統的性能。
1 馮登國,張敏,張妍等.云計算安全研究.軟件學報,2011,20(1):71~83
2 鄒德清,金海,衛中等.云計算安全挑戰與實踐.中國計算機學會通訊,2011,7(12):55~61
3 徐小龍,周靜嵐,楊庚.一種基于數據分割與分級的云存儲數據隱私保護機制.計算機科學,2013,40(2):98~102
4 錢進進,凌捷.基于ID特征碼的云存儲數據分片與備份策略.微電子學與計算機,2013,30(8):16~22
5 楊志國.基于魔方的混合加密算法及應用研究.蘭州大學碩士學位論文,2010
6 于洋洋,虞慧群,范貴生.一種云存儲數據完整性驗證方法.華東理工大學學報,2013,39(2):211~216
7 曹夕,許力,陳蘭香.云存儲系統中數據完整性驗證協議.計算機應用,2012,32(1):8~12