1.一種云存儲中數(shù)據(jù)的完整性驗證方法,包括:
(1)用戶生成對數(shù)據(jù)塊加密的密鑰dk、數(shù)據(jù)標(biāo)簽所需的密鑰sk和驗證過程所需的密鑰pk;
(2)用戶對要上傳到云服務(wù)器的數(shù)據(jù)m進行分塊處理,利用對數(shù)據(jù)塊加密的密鑰dk給每個數(shù)據(jù)塊加密,計算每個加密數(shù)據(jù)塊的時間戳t的哈希值H;
(3)利用數(shù)據(jù)標(biāo)簽所需的密鑰sk和每個加密數(shù)據(jù)塊的時間戳t的哈希值H為每個加密數(shù)據(jù)塊計算相對應(yīng)的數(shù)據(jù)標(biāo)簽,將加密的數(shù)據(jù)M和數(shù)據(jù)標(biāo)簽上傳到云服務(wù)器CSP,將加密數(shù)據(jù)塊總的時間戳值T傳送給可信第三方TPA,刪除本地加密的數(shù)據(jù)塊F和數(shù)據(jù)標(biāo)簽以及加密數(shù)據(jù)塊總的時間戳值T;
(4)可信第三方TPA向云服務(wù)器CSP發(fā)起一個數(shù)據(jù)的完整性驗證請求;
(5)云服務(wù)器CSP根據(jù)可信第三方TPA的請求內(nèi)容,利用用戶上傳的加密數(shù)據(jù)M和數(shù)據(jù)標(biāo)簽分別生成對應(yīng)的數(shù)據(jù)證明M′和數(shù)據(jù)標(biāo)簽證明σ,并將{M′,σ}作為響應(yīng)證明返回給可信第三方TPA;
(6)可信第三方TPA根據(jù)驗證請求計算相對應(yīng)的加密數(shù)據(jù)塊時間戳的哈希值之和H′,并與驗證過程所需的密鑰pk一起對響應(yīng)證明{M′,σ}進行驗證,將驗證結(jié)果返回給用戶。
2.根據(jù)權(quán)利要求1所述的方法,其中所述步驟(1),按如下步驟進行:
(1a)用戶在素數(shù)域Fq隨機選取一個數(shù)作為數(shù)據(jù)塊加密的密鑰dk;
(1b)用戶選取一個定義在素數(shù)域Fq上的橢圓曲線E(Fq),取點G為該曲線上的基點,再在[1,q-1]上隨機選擇一個數(shù)x作為數(shù)據(jù)標(biāo)簽所需的密鑰sk,其中,q表示一個大素數(shù);
(1c)計算公開點GA=xG,將(GA,G)作為驗證過程中所需的密鑰pk。
3.根據(jù)權(quán)利要求1所述的方法,其中步驟(2)所述的用戶對要上傳到云服務(wù)器的數(shù)據(jù)進行分塊處理,是將每個數(shù)據(jù)塊的長度設(shè)定為l,按照每個數(shù)據(jù)塊的長度,把上傳云服務(wù)器的數(shù)據(jù)m進行分塊,若最后一個數(shù)據(jù)塊長度小于l,則在最后一個數(shù)據(jù)塊后作補0操作使得其長度等于l,得到n個數(shù)據(jù)塊,分塊后的數(shù)據(jù)為:m={m1,m2,…mi…,mn},其中,mi表示第i個數(shù)據(jù)塊,n表示數(shù)據(jù)塊的總數(shù)。
4.根據(jù)權(quán)利要求1所述的方法,其中步驟(2)所述的計算每個加密數(shù)據(jù)塊的時間戳t的哈希值H,按如下步驟進行:
(2a)定義一個哈希函數(shù)h(·):{0,1}*→{0,1}l,其中,“→”表示映射,{0,1}*表示任意長的數(shù)據(jù)輸入,{0,1}l表示長度為l的數(shù)據(jù)輸出;
(2b)利用(2a)的哈希函數(shù),計算加密的數(shù)據(jù)塊Mi的時間戳ti的哈希值:H=h(ti)1≤i≤n,其中,ti表示加密的數(shù)據(jù)塊Mi的時間戳,i表示加密數(shù)據(jù)塊的序號值,n表示加密數(shù)據(jù)塊的總數(shù)。
5.根據(jù)權(quán)利要求1所述的方法,其中步驟(3)所述的為每個加密數(shù)據(jù)塊生成對應(yīng)的數(shù)據(jù)標(biāo)簽,按如下步驟進行:
(3a)在素數(shù)域Fq中隨機選取一個數(shù)α,定義一個代數(shù)簽名運算Sigα(·)滿足:對長度為l的數(shù)據(jù)m,其對應(yīng)的代數(shù)簽名為:其中,mi表示第i位上的數(shù)值;
(3b)利用(3a)的代數(shù)簽名運算,計算加密數(shù)據(jù)塊Mi所對應(yīng)的數(shù)據(jù)標(biāo)簽:σi=Sigα[x(Mi+h(ti))]1≤i≤n,其中,α表示從素數(shù)域Fq中隨機選取的數(shù),x表示數(shù)據(jù)標(biāo)簽所需的密鑰sk,Mi表示第i個加密的數(shù)據(jù)塊,h(ti)表示加密的數(shù)據(jù)塊Mi的時間戳ti的哈希值,ti表示加密的數(shù)據(jù)塊Mi對應(yīng)的時間戳,i表示加密數(shù)據(jù)塊的序號值,n表示加密數(shù)據(jù)塊的總數(shù)。
6.根據(jù)權(quán)利要求1所述的方法,其中步驟(4)所述的可信第三方TPA向云服務(wù)器CSP發(fā)起數(shù)據(jù)的完整性驗證請求,是從整數(shù)集合[1,n]中,隨機選擇一個含有c個元素的子集:I={s1,s2,...sj...,sc};將I作為驗證請求發(fā)送給云服務(wù)器CSP,其中,n表示加密數(shù)據(jù)塊的總數(shù),sj表示被隨機選擇的加密數(shù)據(jù)塊的序號值。
7.根據(jù)權(quán)利要求1所述的方法,其中步驟(5)所述的云服務(wù)器CSP根據(jù)請求內(nèi)容,生成響應(yīng)證明,按如下步驟進行:
(5a)云服務(wù)器CSP根據(jù)驗證請求I找到需要驗證的c個加密數(shù)據(jù)塊以及對應(yīng)數(shù)據(jù)標(biāo)簽;
(5b)計算需要驗證的c個加密數(shù)據(jù)塊之和其中,M′作為數(shù)據(jù)證明,表示需要驗證的c個加密數(shù)據(jù)塊中的第sj個加密數(shù)據(jù)塊,sj表示需要驗證的c個加密數(shù)據(jù)塊的序號值,I表示驗證請求,∑表示求和操作;
(5c)計算需要驗證的c個對應(yīng)數(shù)據(jù)標(biāo)簽之和其中,σ作為數(shù)據(jù)標(biāo)簽證明,表示需要驗證的c個對應(yīng)數(shù)據(jù)標(biāo)簽中第sj個數(shù)據(jù)標(biāo)簽,sj表示需要驗證的c個加密數(shù)據(jù)塊的序號值,I表示驗證請求,∑表示求和操作,。
8.根據(jù)權(quán)利要求1所述的方法,其中步驟(6)所述的可信第三方TPA對響應(yīng)證明{M′,σ}進行驗證,按如下步驟進行:
(6a)可信第三方TPA計算需要驗證的c個加密數(shù)據(jù)塊的時間戳的哈希值:其中,表示需要驗證的c個加密數(shù)據(jù)塊中的第sj個加密數(shù)據(jù)塊對應(yīng)的時間戳,sj表示需要驗證的c個加密數(shù)據(jù)塊的序號值,I表示驗證請求;
(6b)計算需要驗證的c個加密數(shù)據(jù)塊的時間戳的哈希值之和其中,表示需要驗證的c個加密數(shù)據(jù)塊的時間戳的哈希值,表示需要驗證的c個加密數(shù)據(jù)塊中的第sj個加密數(shù)據(jù)塊對應(yīng)的時間戳,sj表示需要驗證的c個加密數(shù)據(jù)塊的序號值,I表示驗證請求,∑表示求和操作,h(·)表示{0,1}*→{0,1}l的哈希函數(shù);
(6c)利用驗證過程所需的密鑰(GA,G),判定GA·[Sigα(M′)+Sigα(H″)]與G·σ是否相等:
如果GA·[Sigα(M′)+Sigα(H″)]=G·σ,則輸出正確,證明云服務(wù)器CSP中的數(shù)據(jù)完整;
如果GA·[Sigα(M′)+Sigα(H″)]≠G·σ,則輸出錯誤,證明云服務(wù)器CSP中的數(shù)據(jù)不完整。
其中,“·”表示乘法操作,(GA,G)表示驗證過程所需的密鑰pk,Sigα(M′)表示數(shù)據(jù)證明M′的代數(shù)簽名值,Sigα(H″)表示需要驗證的c個加密數(shù)據(jù)塊的時間戳的哈希值之和H″的代數(shù)簽名值,M′表示數(shù)據(jù)證明,H″表示需要驗證的c個加密數(shù)據(jù)塊的時間戳的哈希值之和,σ表示數(shù)據(jù)標(biāo)簽證明。