本發(fā)明涉及云存儲和信息安全領(lǐng)域,特別涉及到一種基于IDA的云端數(shù)據(jù)完整性驗(yàn)證及恢復(fù)方法。
背景技術(shù):
隨著云存儲服務(wù)的廣泛應(yīng)用,越來越多的用戶將數(shù)據(jù)存儲到云端。但云服務(wù)器是“半可信”的,用戶將數(shù)據(jù)存入云端后會失去對數(shù)據(jù)的控制,因此無法確定云服務(wù)器中的數(shù)據(jù)是否完整,當(dāng)數(shù)據(jù)被破壞時,更是無法恢復(fù)出相應(yīng)的原始數(shù)據(jù)。因此,如何在驗(yàn)證數(shù)據(jù)完整性的同時恢復(fù)出被破壞數(shù)據(jù)的原始數(shù)據(jù)成為一個亟待解決的問題。
針對完整性驗(yàn)證這一問題,研究人員提出了很多云存儲中完整性驗(yàn)證的審計方案。這些方案利用簽名、標(biāo)簽等手段對云端數(shù)據(jù)進(jìn)行完整性驗(yàn)證。然而,這些方案在驗(yàn)證完整性之后并不能對破壞數(shù)據(jù)進(jìn)行恢復(fù),因此,研究者提出了數(shù)據(jù)可恢復(fù)的概念。
盡管已經(jīng)有了數(shù)據(jù)可恢復(fù)的研究,但現(xiàn)有方案多數(shù)還都只是停留在完整性驗(yàn)證的階段,而沒有實(shí)際的恢復(fù)方法;或是只是簡單的利用糾刪碼對原始文件進(jìn)行編碼,但這種方法恢復(fù)率較低。
此外,一些少數(shù)基于編碼的實(shí)現(xiàn)數(shù)據(jù)可恢復(fù)的方案中,方案的計算開銷極大,增加了整個系統(tǒng)的開銷負(fù)擔(dān)。例如,用戶不直接為存儲塊計算相應(yīng)的完整性驗(yàn)證標(biāo)簽,而是先為原始塊計算標(biāo)簽,然后再計算存儲標(biāo)簽,多出一次冗余計算;或是,用戶審計出某服務(wù)器存在破壞數(shù)據(jù)時,使用一個新的服務(wù)器代替該服務(wù)器,重新計算該服務(wù)器存儲的所有數(shù)據(jù)塊及標(biāo)簽。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種基于IDA的云端數(shù)據(jù)完整性驗(yàn)證及恢復(fù)方法,該方法的系統(tǒng)模型如圖2所示,包含三類實(shí)體:云存儲服務(wù)器、第三方審計者TPA和用戶。當(dāng)用戶需要驗(yàn)證云端數(shù)據(jù)的完整性時,用戶給TPA發(fā)出審計請求,TPA向云存儲服務(wù)器發(fā)送挑戰(zhàn)消息。收到挑戰(zhàn)消息后,云服務(wù)器會生成相應(yīng)的應(yīng)答消息返回給TPA。TPA驗(yàn)證應(yīng)答消息的正確性,并將結(jié)果返回給用戶。當(dāng)發(fā)現(xiàn)存在被破壞數(shù)據(jù)時,用戶發(fā)起恢復(fù)請求,TPA審計并找出m個健康服務(wù)器并將相應(yīng)存儲的數(shù)據(jù)返回給用戶。用戶收到未被破壞的數(shù)據(jù)后,利用這些數(shù)據(jù)恢復(fù)出被破壞數(shù)據(jù)的原始數(shù)據(jù)。
本發(fā)明方法不僅能夠支持云端數(shù)據(jù)完整性的驗(yàn)證,而且當(dāng)存在被破壞數(shù)據(jù)塊時還能有效地恢復(fù)出被破壞數(shù)據(jù)的原始數(shù)據(jù),能夠?qū)崿F(xiàn)數(shù)據(jù)的隱私保護(hù),保證在審計過程中不泄露用戶的私有信息,同時降低標(biāo)簽復(fù)雜度,有效地提高了方法的效率。
實(shí)現(xiàn)本發(fā)明目的的技術(shù)解決方案為:一種基于IDA的云端數(shù)據(jù)完整性驗(yàn)證及恢復(fù)方法,具體包括如下步驟:
(1)用戶初始化:
用戶為系統(tǒng)設(shè)置公開參數(shù){G,GT,q,g,e,H1,H2,spk,x1,x2,…,xn,name},并保持{ssk,υ,Kenc}私有。
(2)存儲塊生成:
選取系數(shù)向量,并將原始文件F進(jìn)行分塊,將系數(shù)向量和分塊后的文件進(jìn)行矩陣乘法,得到待存儲文件F*。
(3)加密向量:
使用密鑰Kenc分別對n個系數(shù)向量進(jìn)行加密,得到加密向量εi。
(4)標(biāo)簽生成:
用戶隨機(jī)選取文件名name,并為文件計算文件標(biāo)簽t,再分別為文件塊cik和向量ai計算相應(yīng)的完整性驗(yàn)證標(biāo)簽生成σik和ωi,得到文件塊集合Fi*和完整性標(biāo)簽集合Ψi,最后將{t,Fi*,εi,Ψi,ωi}(1≤i≤n)上傳到第i個服務(wù)器上。
(5)審計挑戰(zhàn):
當(dāng)用戶需要驗(yàn)證云端數(shù)據(jù)的完整性時,向第三方審計者發(fā)送審計請求,然后第三方審計者生成挑戰(zhàn)服務(wù)器序號集合和挑戰(zhàn)消息,并將該挑戰(zhàn)消息發(fā)送給序號集合中的云存儲服務(wù)器。
(6)應(yīng)答挑戰(zhàn):
云服務(wù)器收到挑戰(zhàn)消息后,生成應(yīng)答消息,然后將該應(yīng)答消息返回給第三方審計者。
(7)驗(yàn)證應(yīng)答:
第三方審計者收到應(yīng)答消息后驗(yàn)證數(shù)據(jù)的完整性并得出結(jié)論,再將結(jié)果返回給用戶。
(8)恢復(fù)原始數(shù)據(jù):
當(dāng)?shù)谌綄徲嬚咄ㄖ脩舸嬖诒黄茐牡臄?shù)據(jù)塊時,用戶發(fā)起恢復(fù)請求。第三方審計者重新審計t(只要t≥m時就可以實(shí)現(xiàn)完全恢復(fù))個健康服務(wù)器并返回其存儲數(shù)據(jù)給用戶。用戶計算得到被破壞塊的原始數(shù)據(jù)。
本發(fā)明與現(xiàn)有技術(shù)相比,其顯著效果是:(1)實(shí)現(xiàn)對破壞數(shù)據(jù)的完全恢復(fù),本發(fā)明首次提出基于IDA的云端數(shù)據(jù)完整性驗(yàn)證及恢復(fù)方法。將IDA的思想應(yīng)用到云端破壞數(shù)據(jù)的恢復(fù)中,實(shí)現(xiàn)對破壞數(shù)據(jù)的完全恢復(fù)。(2)降低計算復(fù)雜度,減小計算開銷,本發(fā)明簡化了完整性驗(yàn)證標(biāo)簽,降低了計算復(fù)雜度,并且在恢復(fù)數(shù)據(jù)的過程中采用開銷較小的乘法和加法運(yùn)算,在一定程度上解決了背景技術(shù)中計算開銷的問題。(3)發(fā)明的安全性是可證明的,第三方審計者在驗(yàn)證完整性的過程中不需要知道用戶的私有信息,保證了用戶的私有信息不會泄露。由于不同的塊及標(biāo)簽不能夠生成相同的驗(yàn)證信息,因此完整性標(biāo)簽具有不可偽造性,任何攻擊者偽造的標(biāo)簽都不能通過完整性驗(yàn)證。
附圖說明
圖1是本發(fā)明的基本流程圖。
圖2是本發(fā)明的系統(tǒng)模型。
圖3是破壞數(shù)據(jù)恢復(fù)率與重新審計的健康服務(wù)器個數(shù)t的關(guān)系。
具體實(shí)施方式
以下結(jié)合附圖和具體實(shí)施例,對本發(fā)明作進(jìn)一步詳細(xì)說明。
選取一次云存儲環(huán)境下用戶U對其存儲數(shù)據(jù)完整性驗(yàn)證及數(shù)據(jù)恢復(fù)事件。
如本發(fā)明方法基本流程圖(圖1)所示,本實(shí)施例具體實(shí)施步驟如下:
步驟101:用戶初始化:用戶為系統(tǒng)選取公開參數(shù)并設(shè)置系統(tǒng)的公鑰和私鑰。
具體如下:
1)選取階均為q的乘法循環(huán)群G、GT,g是G的生成元;選取雙線性映射e:G×G→GT;選取兩個單向哈希函數(shù)H1:T→G,H2:Z→G,其中,Z是一個整數(shù)集,T∈{(i,k)|1≤i≤n,1≤k≤N/m}。以上參數(shù)均公開。
2)用戶為系統(tǒng)設(shè)置公鑰pk=(spk,z,{xi}1≤i≤n)及私鑰sk=(ssk,Kenc,υ)。具體步驟如下:
(1a)隨機(jī)選取一個簽名密鑰對(spk,ssk)。
(1b)隨機(jī)選取x1,x2,…,xn←Zp。
(1c)隨機(jī)選取秘密值υ,Kenc←Zp,計算z=gυ。
步驟102:存儲塊生成:選取系數(shù)向量,并將原始文件F進(jìn)行分塊,將系數(shù)向量和分塊后的文件進(jìn)行矩陣乘法,得到待存儲文件F*。具體如下:
1)用戶隨機(jī)選取n個m維向量并將n個向量組合得到系數(shù)矩陣M=[ai,j](1≤i≤n,1≤j≤m)(M中任意m*m矩陣必須是可逆的)。
2)將原始文件F={b1,b2,…,bN}均等分成N/m塊,得到分塊后的文件F={(b1,…,bm),(bm+1,…,b2m),…,(…,bN)},將該分塊文件組合得到m*(N/m)的文件矩陣。
3)將隨機(jī)選取的系數(shù)矩陣和文件矩陣做如下所示的矩陣乘法,得到待存儲文件F*。
其中,cik=ai*Sk=ai1*b(k-1)m+1+…+aim*bkm,第i行文件塊Fi*={ci1,ci2,…,ciN/m}存儲到第i個服務(wù)器中。
步驟103:加密向量:用戶使用私鑰Kenc分別對n個系數(shù)向量進(jìn)行加密,得到加密向量
步驟104:標(biāo)簽生成:用戶為文件計算文件標(biāo)簽t,再分別為文件塊cik和向量ai計算相應(yīng)的完整性驗(yàn)證標(biāo)簽生成σik和ωi,得到文件塊集合Fi*和完整性標(biāo)簽集合Ψi,最后將{t,Fi*,εi,Ψi,ωi}(1≤i≤n)上傳到第i個服務(wù)器上。具體如下:
1)計算文件標(biāo)簽t過程如下:
(1a)用戶隨機(jī)選擇文件名name←Zp。
(1b)將name,n,x1,x2,…,xn連結(jié)得到θ=name||n||x1||…||xn。
(1c)利用私鑰ssk對θ進(jìn)行簽名,并將θ與其相應(yīng)的簽名連結(jié)得到文件標(biāo)簽t=(name||n||x1||…||xn)||Sigssk(name||n||x1||…||xn)。
2)計算數(shù)據(jù)塊cik的完整性驗(yàn)證標(biāo)簽
3)計算加密向量εi的完整性驗(yàn)證標(biāo)簽ωi=H2(i)·εiυ。
4)輸出完整性驗(yàn)證標(biāo)簽集合Ψ={Ψi={σik}1≤k≤N/m}1≤i≤n,Γ={ωi}1≤i<n。
5)將{t,Fi,εi,Ψi,ωi}上傳到第i個服務(wù)器上,在本地刪除原始數(shù)據(jù)。
步驟105:審計挑戰(zhàn):當(dāng)用戶需要驗(yàn)證云端數(shù)據(jù)的完整性時,向第三方審計者發(fā)送審計請求,然后第三方審計者生成挑戰(zhàn)服務(wù)器序號集合和挑戰(zhàn)消息,并將該挑戰(zhàn)消息發(fā)送給序號集合中的云存儲服務(wù)器。具體如下:
1)TPA從[1,n]中隨機(jī)選擇一個有L個元素的子集I,元素表示被挑戰(zhàn)服務(wù)器的索引號。
2)生成隨機(jī)數(shù)vk←Zp,其中k∈[1,N/m]。
3)將挑戰(zhàn)集Q={(k,vk)}1≤k≤N/m發(fā)送給云端服務(wù)器,k表示服務(wù)器中數(shù)據(jù)塊的索引號,服務(wù)器的索引號在集合I中。
步驟106:應(yīng)答挑戰(zhàn):云服務(wù)器收到挑戰(zhàn)消息后,生成應(yīng)答消息,然后將該應(yīng)答消息返回給第三方審計者。具體如下:
1)云服務(wù)器計算和
2)將應(yīng)答消息R={t,μi,σi,εi,ωi}返回給TPA。
步驟107:驗(yàn)證應(yīng)答:第三方審計者收到應(yīng)答消息后驗(yàn)證數(shù)據(jù)的完整性并得出結(jié)論,再將結(jié)果返回給用戶。具體如下:
1)TPA用公鑰spk驗(yàn)證文件標(biāo)簽中的簽名,若簽名有效則恢復(fù)出{x1,x2,…,xn},若無效審計中斷。
2)TPA計算
3)驗(yàn)證下列等式是否成立:
e(∏i∈Iσi,g)=e(∏i∈Iδi·ηi,z)
e(∏i∈Iωi,g)=e(∏i∈IH2(i)·εi,z)
4)若以上兩個等式均成立,則向用戶返回有效應(yīng)答,否則立即通知用戶云端數(shù)據(jù)存在被破壞數(shù)據(jù)。
步驟108:恢復(fù)原始數(shù)據(jù):當(dāng)?shù)谌綄徲嬚咄ㄖ脩舸嬖诒黄茐牡臄?shù)據(jù)塊時,用戶發(fā)起恢復(fù)請求。第三方審計者重新審計t(只要t≥m時就可以實(shí)現(xiàn)完全恢復(fù))個健康服務(wù)器并返回其存儲數(shù)據(jù)給用戶。用戶計算得到被破壞塊的原始數(shù)據(jù)。具體如下:
1)用戶用私鑰Kenc對系數(shù)向量進(jìn)行解密,得到
2)將系數(shù)向量結(jié)合得到m*m矩陣A=(aij)1≤i,j≤m,由于恢復(fù)需要至少m個健康服務(wù)器,這里矩陣直接寫成m*m。
3)計算A的逆矩陣A-1=(αij)1≤i,j≤m。
4)將逆矩陣和返回的存儲塊做矩陣運(yùn)算,得到原始數(shù)據(jù),計算過程如下:
其中,bj=αi1·c1k+…+αim·cmk。
實(shí)施例:設(shè)置服務(wù)器的個數(shù)為50個,m的值為8,圖3給出破壞數(shù)據(jù)恢復(fù)率與重新審計的健康服務(wù)器個數(shù)t的關(guān)系。