吳 昊,范九倫,劉建華,張俊生
(1.西安郵電大學(xué)通信與信息工程學(xué)院 西安710121;2.西安郵電大學(xué)信息中心 西安710121)
隨著計(jì)算機(jī)和互聯(lián)網(wǎng)技術(shù)的發(fā)展,人們對(duì)計(jì)算機(jī)存儲(chǔ)的要求越來(lái)越高,傳統(tǒng)的集中式存儲(chǔ)已不能滿足用戶需求,云存儲(chǔ)技術(shù)作為一種新興的基于網(wǎng)絡(luò)的存儲(chǔ)技術(shù)應(yīng)運(yùn)而生。它旨在通過(guò)互聯(lián)網(wǎng)為用戶提供更強(qiáng)的存儲(chǔ)服務(wù),將網(wǎng)絡(luò)中大量處于不同計(jì)算機(jī)、不同類型的存儲(chǔ)設(shè)備通過(guò)網(wǎng)絡(luò)和應(yīng)用軟件集合起來(lái)協(xié)同工作,共同對(duì)外提供數(shù)據(jù)存儲(chǔ)和業(yè)務(wù)訪問,用戶可以隨時(shí)隨地通過(guò)網(wǎng)絡(luò)訪問“云”中的數(shù)據(jù),從而有效地解決了存儲(chǔ)的性能瓶頸問題。然而,在云存儲(chǔ)服務(wù)給人們帶來(lái)極大便利的同時(shí),安全問題也日益凸顯。在云存儲(chǔ)系統(tǒng)中,用戶所屬的數(shù)據(jù)外包給云服務(wù)提供商,云服務(wù)提供商就獲得了該數(shù)據(jù)或應(yīng)用的優(yōu)先訪問權(quán),由于存在內(nèi)部人員失職、黑客攻擊及系統(tǒng)故障導(dǎo)致的安全機(jī)制失效等多種風(fēng)險(xiǎn),云服務(wù)商沒有充足的證據(jù)讓用戶確信其數(shù)據(jù)被正確地存儲(chǔ)和使用[1,2]。為了解決這一問題,研究人員已經(jīng)提出了一些解決辦法。參考文獻(xiàn)[3]提出了一種基于數(shù)據(jù)分割與分級(jí)的云存儲(chǔ)數(shù)據(jù)隱私保護(hù)機(jī)制,按不同的安全級(jí)別需求將數(shù)據(jù)分割為大小數(shù)據(jù)塊,聯(lián)合采用數(shù)據(jù)染色和不同強(qiáng)度的數(shù)據(jù)加密技術(shù)進(jìn)行數(shù)據(jù)染色或加密。由于文件塊大小的差異,黑客有可能直接從大數(shù)據(jù)塊中恢復(fù)出原文件的隱私信息;參考文獻(xiàn)[4]提出了一種基于ID特征碼的云存儲(chǔ)數(shù)據(jù)分片與備份策略,利用文件塊ID和可用存儲(chǔ)節(jié)點(diǎn)ID的對(duì)應(yīng)關(guān)系隨機(jī)分配有效存儲(chǔ)節(jié)點(diǎn)。該方法解決了服務(wù)器的負(fù)載均衡問題,但建立多個(gè)數(shù)據(jù)副本增加了存儲(chǔ)成本。本文提出一種基于指紋魔方算法的云存儲(chǔ)數(shù)據(jù)保護(hù)機(jī)制,運(yùn)用魔方加密算法對(duì)存儲(chǔ)文件進(jìn)行加密處理,同時(shí)將門限分解思想加入保護(hù)機(jī)制中,不僅使數(shù)據(jù)泄露問題得到了有效解決,還能有效防止數(shù)據(jù)被破壞或者丟失,系統(tǒng)存儲(chǔ)效率高,數(shù)據(jù)冗余度低。
整個(gè)數(shù)據(jù)保護(hù)機(jī)制包括文件上傳和下載兩個(gè)過(guò)程。文件上傳流程分為4個(gè)步驟,如圖1所示,具體介紹如下。
·文件傳輸:由客戶端向服務(wù)端發(fā)送連接請(qǐng)求,服務(wù)端允許連接后,客戶端發(fā)送文件,由服務(wù)端接收模塊開辟一個(gè)線程負(fù)責(zé)接收文件流。
·文件接收:服務(wù)端根據(jù)客戶端請(qǐng)求,接收上傳的文件。
·魔方加密:把文件按字節(jié)附于魔方表面,運(yùn)用用戶指紋特征值和當(dāng)前時(shí)間戳取得散列值,由該值控制魔方的旋轉(zhuǎn)面、旋轉(zhuǎn)方向和操作輪數(shù)。
·門限存儲(chǔ):依據(jù)所設(shè)計(jì)的門限方案,將文件分塊,每塊增加頭部信息,存儲(chǔ)在“云”中不同的服務(wù)器主機(jī)上。
文件下載主要分為5個(gè)步驟,如圖2所示,具體介紹如下。
·文件選擇:選擇已上傳到服務(wù)器中需要下載的文件。
·門限重組:對(duì)各文件做散列運(yùn)算,檢查服務(wù)器上各文件是否被破壞,根據(jù)參數(shù)做出文件分割表,組合出完整文件。
·魔方解密:把組合出的文件附于魔方表面,同樣利用用戶指紋特征值和文件存儲(chǔ)時(shí)間取得散列值,按加密時(shí)的逆方向旋轉(zhuǎn)魔方解密文件。
·文件傳輸:由客戶端向服務(wù)端發(fā)送連接請(qǐng)求,服務(wù)端允許連接后,客戶端接收文件。由服務(wù)端發(fā)送模塊開辟一個(gè)線程負(fù)責(zé)發(fā)送文件流。
·文件接收:服務(wù)器將客戶端請(qǐng)求下載的文件發(fā)送至客戶端,客戶端接收文件。
圖1 文件上傳流程
圖2 文件下載流程
一個(gè)N階魔方是指其長(zhǎng)、寬、高均為N個(gè)單位小方格的正方體,與魔方某個(gè)表面平行的平面上的各小方格構(gòu)成一個(gè)可轉(zhuǎn)動(dòng)的層面。魔方加密的原理就是利用魔方旋轉(zhuǎn)變化的不確定性,用數(shù)學(xué)方法把魔方的旋轉(zhuǎn)規(guī)則模擬出來(lái)[5]。一個(gè)N維魔方旋轉(zhuǎn)M次,會(huì)出現(xiàn)的旋轉(zhuǎn)方式總數(shù)可以由式(1)得出,其中R=骔M/4」,L=M mod 4,Total表示不同的旋轉(zhuǎn)種數(shù)。
由式(1)可知,隨著N或者M(jìn)的增長(zhǎng),Total將迅速增加。這樣,只要增加魔方的維數(shù)或者增加旋轉(zhuǎn)的次數(shù)就可以大幅度提高加密算法的安全性。本文設(shè)計(jì)的云存儲(chǔ)數(shù)據(jù)保護(hù)機(jī)制,就是利用魔方加密的原理,將要存儲(chǔ)的文件分割成6×N2份,寫入N階魔方的“小方格”里,再利用用戶個(gè)人的指紋特征值控制魔方旋轉(zhuǎn)來(lái)加密文件,這樣可以保證只有用戶自己能解密自己存儲(chǔ)的文件,大大提高了用戶數(shù)據(jù)的安全性。
以三階魔方為例,三階魔方共有6個(gè)面,分別記作:頂、底、左、右、前、后。對(duì)于不同的面分別有兩種基本的操作:順時(shí)針旋轉(zhuǎn)90°、逆時(shí)針旋轉(zhuǎn)90°。其他選擇方式均可由這兩種組合得到,因此共有6×2=12種控制方式。這12種控制方式分別對(duì)應(yīng)一個(gè)操作函數(shù)。而控制系統(tǒng)選擇哪一個(gè)函數(shù)進(jìn)行旋轉(zhuǎn)操作,取決于用戶注冊(cè)時(shí)的指紋特征值和當(dāng)前系統(tǒng)時(shí)間。這樣既能保證加密密鑰為用戶獨(dú)有,又能保證用戶在不同時(shí)刻密鑰不同,防止黑客的竊聽。具體的實(shí)現(xiàn)步驟如下。
(1)用戶注冊(cè)時(shí),通過(guò)客戶端提取指紋特征值Fingerprint。
(2)將客戶端上傳的文件分成6×9=54塊,使之與魔方表面的54個(gè)分塊一一對(duì)應(yīng)。
(3)取當(dāng)前系統(tǒng)時(shí)間time,計(jì)算Key=Hash(Fingerprint||time),Key[i]分別代表密鑰的第i字節(jié)數(shù)據(jù),i=1,2,3,…,32。
(4)對(duì)于i=1,2,3,…,32,每一個(gè)Key[i]計(jì)算控制數(shù)值res=Key[i]mod 12。根據(jù)表1進(jìn)行不同的旋轉(zhuǎn)操作(解密時(shí),對(duì)應(yīng)加密的操作逆向還原)。
表1 魔方操作控制
(5)將加密后的文件塊分別存儲(chǔ)在不同的服務(wù)器主機(jī)上。
該加密方案在多輪加密的情況下,可以形成足夠數(shù)量級(jí)的加密組合,從而能夠抵擋窮舉攻擊的威脅。另外,魔方的維度可以任意擴(kuò)展,從而提高加密強(qiáng)度。
由于云存儲(chǔ)系統(tǒng)所部署環(huán)境的復(fù)雜性,在實(shí)際應(yīng)用中數(shù)據(jù)可能會(huì)受到一定程度的損壞,此外,黑客的攻擊也不可避免,這就更需要在存儲(chǔ)以及傳輸時(shí)對(duì)每個(gè)文件塊進(jìn)行完整性驗(yàn)證[6,7]。因此,云存儲(chǔ)保護(hù)機(jī)制引入門限方案,利用多個(gè)服務(wù)器中存儲(chǔ)文件塊存在的冗余,通過(guò)這些冗余補(bǔ)齊丟失或者破壞的文件塊,獲得所有源文件數(shù)據(jù)后重組文件。這樣,當(dāng)云存儲(chǔ)服務(wù)器集群中的某一臺(tái)或幾臺(tái)服務(wù)器的文件被破壞后,仍可以通過(guò)其他服務(wù)器上的文件碎片恢復(fù)完整的用戶文件。
為了保證文件可以實(shí)現(xiàn)逆向恢復(fù),需要對(duì)所有服務(wù)器上的文件塊增加一些頭部信息,見表2。
表2 文件頭信息
表3 文件塊存儲(chǔ)情況
門限算法分為文件分割和文件恢復(fù)兩部分,分別在用戶上傳和用戶下載時(shí)使用。
4.3.1 分割算法
分割算法的具體步驟如下。
(1)設(shè)文件大小為FileSize byte。對(duì)于(n,t)門限,記代表可供存儲(chǔ)的服務(wù)器數(shù),t表示未被破壞的服務(wù)器數(shù)閾值,U表示分割的文件塊數(shù)。
(2)計(jì)算PartSize=FileSize/U,作為每臺(tái)服務(wù)器存儲(chǔ)文件的大小。若FileSize≠k1×U,k1∈N,在文件末尾填充FileSize-骔FileSize/1」×U個(gè)字節(jié)0x00。若FileSize=k×U,k∈N,繼續(xù)。
(3)填充如表1所示的各文件塊的頭信息,其中散列值待文件組合后再計(jì)算。
(4)依據(jù)(n,t)值設(shè)計(jì)分割表,以(5,3)門限為例,文件塊存儲(chǔ)情況見表3。每一行代表1臺(tái)服務(wù)器,這里有5臺(tái),分別是A、B、C、D、E。然后對(duì)每個(gè)文件進(jìn)行分塊,事實(shí)上在經(jīng)過(guò)第(2)步的處理后,文件正好能被平均分成U份,這里U=10。表3中√表示該文件塊在相應(yīng)的服務(wù)器中有存儲(chǔ),空白代表不存儲(chǔ)。
(5)根據(jù)分割表對(duì)文件進(jìn)行分割,將屬于不同服務(wù)器的文件塊重新組合。
(6)將文件分別存儲(chǔ)到各服務(wù)器上。
4.3.2 恢復(fù)算法
恢復(fù)算法的具體步驟如下。
(1)獲取門限參數(shù)(n,t)、文件大小FileSize,計(jì)算
(2)對(duì)各文件做散列運(yùn)算,檢查服務(wù)器上各文件是否被破壞。文件破壞的服務(wù)器∈A={SET1|文件被破壞},未被破壞的服務(wù)器∈B={SET2|文件完整}。
(3)若被破壞文件數(shù)大于n-t,超過(guò)門限值,無(wú)法恢復(fù)文件,結(jié)束。否則繼續(xù)。
(4)對(duì)于文件塊1~U,獲取集合B中服務(wù)器上的文件塊,恢復(fù)完整文件。
4.3.3 系統(tǒng)冗余度
假設(shè)文件大小為FileSize byte,門限參數(shù)為(n,t)。將文件分成∈塊,每塊的大小為PartSize=FileSize/U byte。對(duì)于每臺(tái)服務(wù)器來(lái)說(shuō),存儲(chǔ)的文件塊數(shù)為PartCnt=U-U×(n-t)/n。所以實(shí)際上,每臺(tái)服務(wù)器存儲(chǔ)的文件大小是源文件大小的PartCnt/U=t/n。若使用(5,3)門限,就只有60%的占用率。
系統(tǒng)測(cè)試搭建了一個(gè)小型云平臺(tái)作為實(shí)驗(yàn)環(huán)境,選取1臺(tái)PC作為客戶端,5臺(tái)服務(wù)器作為云存儲(chǔ)服務(wù)器,對(duì)幾個(gè)不同大小的數(shù)據(jù)文件的上傳和下載速度進(jìn)行了測(cè)試。
(1)文件上傳和下載速度測(cè)試
實(shí)驗(yàn)選擇了4個(gè)文件,大小分別為10 MB、100 MB、500 MB、1 GB,記錄每個(gè)文件上傳和下載所花費(fèi)的時(shí)間,測(cè)試結(jié)果如圖3所示。測(cè)試中,文件平均下載速率為1.9 MB/s,上傳速率為1.4 MB/s,與整個(gè)文件上傳下載相比,本方案增加了數(shù)據(jù)分割和加密操作,產(chǎn)生了一定的額外時(shí)間開銷,經(jīng)計(jì)算時(shí)間開銷為O(n),n為文件塊數(shù),增加的時(shí)間開銷對(duì)系統(tǒng)影響不大,但分割和加密操作大大增強(qiáng)了數(shù)據(jù)隱私的安全性。
(2)文件分塊破壞恢復(fù)情況
圖3 文件上傳和下載速度測(cè)試結(jié)果
實(shí)驗(yàn)采用(3,5)的門限方案進(jìn)行測(cè)試,對(duì)存儲(chǔ)在5臺(tái)服務(wù)器上的文件分塊進(jìn)行不同程度的破壞,看系統(tǒng)能否恢復(fù)出完整文件。測(cè)試結(jié)果見表4。
實(shí)驗(yàn)結(jié)果表明:在(3,5)門限方案下,當(dāng)被破壞文件塊數(shù)小于3時(shí),系統(tǒng)仍能完整地恢復(fù)用戶文件;當(dāng)被破壞文件塊數(shù)大于或等于3時(shí),系統(tǒng)不能恢復(fù)用戶文件,測(cè)試結(jié)果完全符合系統(tǒng)設(shè)計(jì)目標(biāo)。
表4 文件塊破壞恢復(fù)測(cè)試
用戶數(shù)據(jù)的安全問題已經(jīng)成為云存儲(chǔ)應(yīng)用發(fā)展的瓶頸。本文提出了一種基于指紋魔方算法的云存儲(chǔ)數(shù)據(jù)保護(hù)機(jī)制,利用用戶的指紋特征值控制魔方旋轉(zhuǎn)對(duì)用戶文件進(jìn)行加密存儲(chǔ),具有算法效率高、安全性高的特點(diǎn)。另外,利用門限分割技術(shù)提出了一種安全云存儲(chǔ)策略,使得云端各服務(wù)器分擔(dān)系統(tǒng)負(fù)載,并且使得任意指定數(shù)目的存儲(chǔ)服務(wù)器均能恢復(fù)出用戶上傳的文件,避免了個(gè)別服務(wù)器遭到破壞后無(wú)法恢復(fù)文件的情況。機(jī)制從存儲(chǔ)策略和數(shù)據(jù)本身都對(duì)用戶數(shù)據(jù)安全進(jìn)行了有效防護(hù),也在一定程度上降低了數(shù)據(jù)冗余,提高了系統(tǒng)的性能。
1 馮登國(guó),張敏,張妍等.云計(jì)算安全研究.軟件學(xué)報(bào),2011,20(1):71~83
2 鄒德清,金海,衛(wèi)中等.云計(jì)算安全挑戰(zhàn)與實(shí)踐.中國(guó)計(jì)算機(jī)學(xué)會(huì)通訊,2011,7(12):55~61
3 徐小龍,周靜嵐,楊庚.一種基于數(shù)據(jù)分割與分級(jí)的云存儲(chǔ)數(shù)據(jù)隱私保護(hù)機(jī)制.計(jì)算機(jī)科學(xué),2013,40(2):98~102
4 錢進(jìn)進(jìn),凌捷.基于ID特征碼的云存儲(chǔ)數(shù)據(jù)分片與備份策略.微電子學(xué)與計(jì)算機(jī),2013,30(8):16~22
5 楊志國(guó).基于魔方的混合加密算法及應(yīng)用研究.蘭州大學(xué)碩士學(xué)位論文,2010
6 于洋洋,虞慧群,范貴生.一種云存儲(chǔ)數(shù)據(jù)完整性驗(yàn)證方法.華東理工大學(xué)學(xué)報(bào),2013,39(2):211~216
7 曹夕,許力,陳蘭香.云存儲(chǔ)系統(tǒng)中數(shù)據(jù)完整性驗(yàn)證協(xié)議.計(jì)算機(jī)應(yīng)用,2012,32(1):8~12