本發(fā)明涉及云計算、云存儲中數(shù)據(jù)安全和數(shù)據(jù)驗證恢復(fù)領(lǐng)域。
背景技術(shù):
隨著云技術(shù)的發(fā)展,企業(yè)和個人愈來愈傾向于將數(shù)據(jù)存儲在云端,同時,數(shù)據(jù)也可以在云端實現(xiàn)共享、方便他人下載。云存儲具有空間大,下載數(shù)據(jù)方便,價格低廉的特點,但是,在多數(shù)情況下,云端的數(shù)據(jù)將受到不安全因素的影響;那么確保數(shù)據(jù)的安全,以及對損失數(shù)據(jù)的修復(fù)便顯得尤為重要?;謴?fù)技術(shù)能驗證不可信的存儲服務(wù)器是否正確地持有(保存)數(shù)據(jù),避免存儲服務(wù)提供者刪除、篡改數(shù)據(jù),并確保存儲數(shù)據(jù)的可恢復(fù)性。由于云存儲是將本地數(shù)據(jù)存儲于非完全可控介質(zhì)中,因此才存在數(shù)據(jù)的持有性證明和數(shù)據(jù)可恢復(fù)性證明,如何確保數(shù)據(jù)的完整性和可恢復(fù)性就顯得尤為重要。
可恢復(fù)數(shù)據(jù)的安全數(shù)據(jù)聚集算法,在保護數(shù)據(jù)隱私以及提供有效的數(shù)據(jù)完整性和真實性驗證基礎(chǔ)上,特別設(shè)計了數(shù)據(jù)恢復(fù)機制,從而使聚集節(jié)點在得到聚集結(jié)果的同時,能夠精確、有效地恢復(fù)聚集前的原始數(shù)據(jù)。這些原始數(shù)據(jù)的獲得讓其他后續(xù)聚集操作在執(zhí)行時,類型不再受限,同時也降低了網(wǎng)絡(luò)總的能耗開銷。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)的上述不足,本發(fā)明提出了云存儲中一種數(shù)據(jù)軟恢復(fù)方法。
為解決上述問題,本發(fā)明提出了以下技術(shù)方案:
通過將數(shù)據(jù)分塊后,采用雙線性映射加密,然后哈希密文數(shù)據(jù)塊,得到數(shù)據(jù)的驗證標(biāo)簽,將數(shù)據(jù)存儲到服務(wù)器節(jié)點上,同時將驗證標(biāo)簽和數(shù)據(jù)塊的位置信息一起,映射到兩個不同的節(jié)點上即:遵循數(shù)據(jù)塊i存放的節(jié)點上,不存放i的標(biāo)簽,和同一個標(biāo)簽不能存儲在一個節(jié)點上;當(dāng)數(shù)據(jù)驗證不通過后,利用數(shù)據(jù)標(biāo)簽對數(shù)據(jù)進行恢復(fù),并提出了數(shù)據(jù)可恢復(fù)的情況說明,支持部分數(shù)據(jù)恢復(fù)。其具體實施步驟如下:
步驟1:數(shù)據(jù)加密,生成數(shù)據(jù)密鑰和公鑰。
步驟2:密文驗證標(biāo)簽及位置信息生成。
步驟3:數(shù)據(jù)存儲。
步驟4:數(shù)據(jù)篡改、損壞驗證,定位需要恢復(fù)的數(shù)據(jù)塊。
步驟5:數(shù)據(jù)恢復(fù)。
本發(fā)明的有益效果是:
1、采用雙線性哈希的方式,數(shù)據(jù)驗證和恢復(fù)時候計算更簡單,系統(tǒng)開銷更小;
2、與數(shù)據(jù)備份或副本存儲的方式,更加節(jié)省存儲空間,條件式的儲方式,增大了數(shù)據(jù)恢復(fù)的可行性。
具體實施方式
步驟1:數(shù)據(jù)加密,生成數(shù)據(jù)密鑰和公鑰
客戶端,用戶擁有待上傳的數(shù)據(jù)明文F,首先將數(shù)據(jù)F分塊,即F=(F1,F(xiàn)2,...,F(xiàn)n),用雙線性映射方案對每一個數(shù)據(jù)塊進行加密:
G0是素數(shù)階為p>2λ的雙線性群(G0,G1,e,p),g是G0的生成元,雙線性映射e:G0×G0→G1,安全參數(shù)λ決定群的大小,Zp表示p的整數(shù)群,拉格朗日系數(shù)其中S是一個整數(shù)集合,i∈S。
設(shè):Rand(y1,y2,α),y1、y2、α∈Zp,Rang(g2),g2∈G0,然后再次從G0中選取t1,t2,...,tn+1,令:N={1,2,…,n+1},由拉格朗日定理可知:
其中h(X)為n階多項式,所以,在密鑰中心中產(chǎn)生的公鑰PK1為:m=gα,g2,t1,t2,...,tn+1,私鑰MK1為y1,y2,α。
步驟2:密文驗證標(biāo)簽及位置信息生成
計算得到每個數(shù)據(jù)塊的密文信息,對密文數(shù)據(jù)塊哈希,生成數(shù)據(jù)驗證簽名和存儲的位置信息:
生成驗證標(biāo)簽:
tagi={h(C(Fi)),C(Fi)}
記錄存儲的位置(location)信息:
步驟3:數(shù)據(jù)存儲
數(shù)據(jù)塊加密完成后,用戶將加密結(jié)果和公鑰發(fā)送給云服務(wù)商,利用偽隨機函數(shù)將標(biāo)簽數(shù)據(jù)映射到服務(wù)器節(jié)點上,并保存在文件的數(shù)據(jù)塊上,數(shù)據(jù)標(biāo)簽的存儲遵循數(shù)據(jù)塊i存放的節(jié)點上,不存放i的標(biāo)簽,和同一個標(biāo)簽不能存儲在一個節(jié)點上的原則;標(biāo)簽生成算法得到標(biāo)簽tagi后,每一個tagi隨機映射到兩個存儲C(Fi)加密文件塊的節(jié)點上。這樣的話,一是可以防止標(biāo)簽數(shù)據(jù)被破壞,同時抵制了服務(wù)器相互欺騙的風(fēng)險,二是大大提高了數(shù)據(jù)恢復(fù)的可能性。在保存之前,還需要向?qū)?shù)據(jù)進行處理:
T(tagi)=T(Index||h(C(Fi)))
步驟4:數(shù)據(jù)篡改、損壞驗證,定位需要恢復(fù)的數(shù)據(jù)塊
當(dāng)數(shù)據(jù)屬主還以數(shù)據(jù)被篡改后,可以向服務(wù)器發(fā)起驗證請求,首先用戶生成驗證(verify)請求,存儲時候數(shù)據(jù)時分散在n個存儲節(jié)點上的,隨機抽取a(1≤a≤n)個數(shù)據(jù)節(jié)點,要求服務(wù)器將節(jié)點上的數(shù)據(jù)發(fā)送過來。
verify=(a,T,locationi)
用戶收到節(jié)點發(fā)送過來的包含有密文數(shù)據(jù)塊i、兩個密文塊j的標(biāo)簽信息和位置信息后,由位置信息要求服務(wù)器將對應(yīng)的數(shù)據(jù)塊發(fā)送到用戶。
(1)獲取兩個兩個指紋標(biāo)簽對應(yīng)的密文數(shù)據(jù)塊執(zhí)行解密
T(tagi)=T(Index||h(C(Fi)))求解tagi
tagi=f-1(T=T(Index||h(C(Fi))))
對密文塊進行解密
(2)依據(jù)tagi計算規(guī)則重新計算Fi‘指紋標(biāo)簽值
(3)對兩次計算的指紋標(biāo)簽進行對比
如果用戶要求服務(wù)器返回數(shù)據(jù)密文的時候,服務(wù)器無法返回,則說明節(jié)點遭到破壞,數(shù)據(jù)也更隨丟失,如果返回的數(shù)據(jù)在經(jīng)過計算后,兩次的驗證標(biāo)簽不一致,也也說明數(shù)據(jù)被破壞了,循環(huán)計算所有的數(shù)據(jù)塊,返回遭到破壞的數(shù)據(jù)位置信息和剩余的數(shù)據(jù)存儲信息。
步驟5:數(shù)據(jù)恢復(fù)
經(jīng)過循環(huán)計算后,返回所有遭到破壞的數(shù)據(jù)信息列表和的數(shù)據(jù)標(biāo)簽,由于數(shù)據(jù)密文塊只存儲于一個節(jié)點上,而其驗證標(biāo)簽存儲在兩個節(jié)點上,,所以標(biāo)簽遭到破壞的概率遠遠小于密文塊。
(1)對于數(shù)據(jù)塊缺失,標(biāo)簽還在的數(shù)據(jù)塊恢復(fù)
(2)對于數(shù)據(jù)標(biāo)簽缺失的密文數(shù)據(jù)塊,重新計算其標(biāo)簽
tagi`={h(C(Fi)),C(Fi)}
(3)對比密文數(shù)據(jù)塊的標(biāo)號信息和標(biāo)簽標(biāo)號信息,如果某個數(shù)據(jù)塊及其對應(yīng)的兩個標(biāo)簽都缺失,則該數(shù)據(jù)塊無法恢復(fù)。
對于(1)和(2)所述的情況,數(shù)據(jù)恢復(fù)后,在重新進行上傳處理,第(3)所述情況,數(shù)據(jù)無法恢復(fù),但是由于數(shù)據(jù)在上傳過程中,遵循數(shù)據(jù)塊i存放的節(jié)點上,不存放i的標(biāo)簽,和同一個標(biāo)簽不能存儲在一個節(jié)點上的準(zhǔn)則,出現(xiàn)的概率遠遠低于前兩種情況。