本發(fā)明涉及云存儲(chǔ)安全技術(shù)領(lǐng)域,尤其涉及對(duì)存儲(chǔ)在云中數(shù)據(jù)的完整性驗(yàn)證的方法,可用于數(shù)據(jù)的安全外包存儲(chǔ)。
背景技術(shù):
隨著云計(jì)算應(yīng)用越來越廣泛,為了節(jié)約本地的內(nèi)存消耗,許多用戶選擇把自己的數(shù)據(jù)存儲(chǔ)到云端。但是,由于云服務(wù)器不是完全值得信任的,有可能給數(shù)據(jù)帶來安全問題,所以用戶要對(duì)云中的數(shù)據(jù)進(jìn)行不定期的完整性驗(yàn)證。現(xiàn)在驗(yàn)證數(shù)據(jù)完整性的兩種協(xié)議即:可證明數(shù)據(jù)擁有PDP協(xié)議和可證明數(shù)據(jù)恢復(fù)POR協(xié)議。PDP協(xié)議用于檢測(cè)云服務(wù)器是否存儲(chǔ)并保存用戶數(shù)據(jù),它包括數(shù)據(jù)的預(yù)處理和存儲(chǔ)以及數(shù)據(jù)擁有證明。POR協(xié)議引入擦除碼技術(shù),在驗(yàn)證數(shù)據(jù)完整性的同時(shí),也能夠確保存儲(chǔ)數(shù)據(jù)的可恢復(fù)性。
PDP和POR協(xié)議都是利用同態(tài)標(biāo)簽來實(shí)現(xiàn)數(shù)據(jù)完整性的遠(yuǎn)程驗(yàn)證,在數(shù)據(jù)上傳到云端之前,先對(duì)數(shù)據(jù)進(jìn)行分塊處理,再由用戶為每個(gè)數(shù)據(jù)塊生成同態(tài)標(biāo)簽,然后將數(shù)據(jù)以及數(shù)據(jù)標(biāo)簽傳送到云端。當(dāng)需要驗(yàn)證云中數(shù)據(jù)的完整性時(shí),這些標(biāo)簽可以作為數(shù)據(jù)代表來進(jìn)行驗(yàn)證。
2014年Luo和Fu在“Enable Data Dynamics for Algebraic Signatures Based Remote Data Possession Checking in the Cloud Storage”(LUO Yuchuan,FUShaojing,et a.Enable Data Dynamics for Algebraic Signatures Based Remote Data Possession Checking in the Cloud Storage[J].China Communication 2014,Volume:11,Issue:11:114-124)提出一種數(shù)據(jù)的完整性驗(yàn)證方法。其方案是利用代數(shù)簽名的性質(zhì)來實(shí)現(xiàn)數(shù)據(jù)完整性的驗(yàn)證。具體實(shí)現(xiàn)如下:
步驟一:用戶先把數(shù)據(jù)m等長(zhǎng)分割為n塊,得到(m1,m2,…,mn);然后為每個(gè)數(shù)據(jù)塊mi生成對(duì)應(yīng)的標(biāo)簽σi=Sigα(mi),最后,用戶將數(shù)據(jù)上傳到云服務(wù)器CSP,把標(biāo)簽傳送給可信第三方TPA;
步驟二:可信第三方TPA向云服務(wù)器CSP發(fā)起驗(yàn)證數(shù)據(jù)完整性的一個(gè)挑戰(zhàn)chal={i}1≤i≤c;
步驟三:云服務(wù)器CSP根據(jù)挑戰(zhàn)內(nèi)容生成相應(yīng)的證明并將證明發(fā)送給可信第三方TPA;
步驟四:可信第三方TPA驗(yàn)證等式是否成立,若成立,則證明云中數(shù)據(jù)保存完好,若不成立,則證明云中數(shù)據(jù)未保存完好。
由于代數(shù)簽名具有小計(jì)算量和高效率的優(yōu)點(diǎn),這在很大程度上減少了方案的通信和計(jì)算花費(fèi)。除此之外,該方案還可以實(shí)現(xiàn)無限制的數(shù)據(jù)動(dòng)態(tài)更新操作。該方案的不足之處是:1.未對(duì)云中的數(shù)據(jù)進(jìn)行加密,這將導(dǎo)致在數(shù)據(jù)驗(yàn)證交互的過程中,造成用戶數(shù)據(jù)信息的泄露;2.由于數(shù)據(jù)標(biāo)簽都存儲(chǔ)在可信第三方TPA,造成TPA的存儲(chǔ)負(fù)擔(dān)過大。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于是針對(duì)上述現(xiàn)有技術(shù)的不足,提出一種云存儲(chǔ)中數(shù)據(jù)的完整性驗(yàn)證方法,以增加數(shù)據(jù)的安全性,減少可信第三方TPA的存儲(chǔ)負(fù)擔(dān)。
為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案包括如下:
(1)用戶生成對(duì)數(shù)據(jù)塊加密的密鑰dk、計(jì)算數(shù)據(jù)標(biāo)簽過程所需的密鑰sk和驗(yàn)證過程所需的密鑰pk;
(2)用戶對(duì)要上傳到云服務(wù)器的數(shù)據(jù)m進(jìn)行分塊處理,利用對(duì)數(shù)據(jù)塊加密的密鑰dk給每個(gè)數(shù)據(jù)塊加密,計(jì)算每個(gè)加密數(shù)據(jù)塊的時(shí)間戳t的哈希值H;
(3)利用計(jì)算數(shù)據(jù)標(biāo)簽過程所需的密鑰sk和每個(gè)加密數(shù)據(jù)塊的時(shí)間戳t的哈希值H為每個(gè)加密數(shù)據(jù)塊計(jì)算相對(duì)應(yīng)的數(shù)據(jù)標(biāo)簽將加密的數(shù)據(jù)M和數(shù)據(jù)標(biāo)簽上傳到云服務(wù)器CSP,將加密數(shù)據(jù)塊總的時(shí)間戳值T傳送給可信第三方TPA,刪除本地加密的數(shù)據(jù)塊F和數(shù)據(jù)標(biāo)簽以及加密數(shù)據(jù)塊總的時(shí)間戳值T;
(4)可信第三方TPA向云服務(wù)器CSP發(fā)起一個(gè)數(shù)據(jù)的完整性驗(yàn)證請(qǐng)求;
(5)云服務(wù)器CSP根據(jù)可信第三方TPA的請(qǐng)求內(nèi)容,利用用戶上傳的加密數(shù)據(jù)M和數(shù)據(jù)標(biāo)簽分別生成對(duì)應(yīng)的數(shù)據(jù)證明M′和數(shù)據(jù)標(biāo)簽證明σ,并將{M′,σ}作為響應(yīng)證明返回給可信第三方TPA;
(6)可信第三方TPA根據(jù)驗(yàn)證請(qǐng)求計(jì)算相對(duì)應(yīng)的加密數(shù)據(jù)塊時(shí)間戳的哈希值之和H′,并與驗(yàn)證過程所需的密鑰pk一起對(duì)響應(yīng)證明{M′,σ}進(jìn)行驗(yàn)證,將驗(yàn)證結(jié)果返回給用戶。
本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點(diǎn):
第一,由于本發(fā)明對(duì)分塊的數(shù)據(jù)進(jìn)行加密,所以在對(duì)云存儲(chǔ)中的數(shù)據(jù)進(jìn)行驗(yàn)證的過程中,數(shù)據(jù)塊是以密文的形式傳送的,保證了數(shù)據(jù)隱私的安全。
第二,由于本發(fā)明利用時(shí)間戳和數(shù)據(jù)標(biāo)簽所需的密鑰計(jì)算加密數(shù)據(jù)塊對(duì)應(yīng)的數(shù)據(jù)標(biāo)簽,防止了云服務(wù)器發(fā)起的偽造攻擊、替換攻擊和重放攻擊,所以用戶可以直接把數(shù)據(jù)標(biāo)簽上傳到云服務(wù)器,而不是存儲(chǔ)在可信第三方,從而減少了可信第三方的存儲(chǔ)負(fù)擔(dān),提高了云存儲(chǔ)的利用率。
附圖說明:
圖1為本發(fā)明的實(shí)現(xiàn)總流程圖。
具體實(shí)施方式:
參照?qǐng)D1,本發(fā)明的實(shí)施步驟如下:
步驟1:用戶生成對(duì)數(shù)據(jù)塊加密的密鑰dk、數(shù)據(jù)標(biāo)簽所需的密鑰sk和驗(yàn)證過程所需的密鑰pk。
(1.1)用戶在素?cái)?shù)域Fq隨機(jī)選取一個(gè)數(shù)作為數(shù)據(jù)塊加密的密鑰dk;
(1.2)用戶選取一個(gè)定義在素?cái)?shù)域Fq上的橢圓曲線E(Fq),取點(diǎn)G為該曲線上的基點(diǎn),再在[1,q-1]上隨機(jī)選擇一個(gè)數(shù)x作為數(shù)據(jù)標(biāo)簽所需的密鑰sk,其中,q表示一個(gè)大素?cái)?shù);
(1.3)計(jì)算公開點(diǎn)GA=xG,將(GA,G)作為驗(yàn)證過程中所需的密鑰pk。
步驟2:對(duì)要上傳到云服務(wù)器的數(shù)據(jù)m進(jìn)行分塊處理。
將每個(gè)數(shù)據(jù)塊的長(zhǎng)度設(shè)定為l,按照每個(gè)數(shù)據(jù)塊的長(zhǎng)度,對(duì)要上傳到云服務(wù)器的數(shù)據(jù)m進(jìn)行分塊,若最后一個(gè)數(shù)據(jù)塊長(zhǎng)度小于l,則在最后一個(gè)數(shù)據(jù)塊后作補(bǔ)0操作使得其長(zhǎng)度等于l,得到n個(gè)數(shù)據(jù)塊,分塊后的數(shù)據(jù)為:m={m1,m2,…mi…,mn},其中,mi表示第i個(gè)數(shù)據(jù)塊,n表示數(shù)據(jù)塊的總數(shù)。
步驟3:利用對(duì)數(shù)據(jù)塊加密的密鑰dk給步驟2的每個(gè)數(shù)據(jù)塊進(jìn)行加密,得到加密數(shù)據(jù)塊。
步驟4:計(jì)算加密數(shù)據(jù)塊對(duì)應(yīng)的數(shù)據(jù)標(biāo)簽。
(4.1)定義一個(gè)哈希函數(shù)h(·):{0,1}*→{0,1}l,其中,“→”表示映射,{0,1}*表示任意長(zhǎng)的數(shù)據(jù)輸入,{0,1}l表示長(zhǎng)度為l的數(shù)據(jù)輸出;
(4.2)在素?cái)?shù)域Fq中隨機(jī)選取一個(gè)數(shù)α,在素?cái)?shù)域Fq中隨機(jī)選取一個(gè)數(shù)α,定義一個(gè)代數(shù)簽名運(yùn)算Sigα(·)滿足:對(duì)長(zhǎng)度為l的數(shù)據(jù)m,其對(duì)應(yīng)的代數(shù)簽名為:其中,mi表示第i位上的數(shù)值;
(4.3)計(jì)算每個(gè)加密數(shù)據(jù)塊時(shí)間戳的哈希值:H=h(ti)1≤i≤n,其中,ti表示加密的數(shù)據(jù)塊Mi的時(shí)間戳,i表示加密數(shù)據(jù)塊的序號(hào)值,n表示加密數(shù)據(jù)塊的總數(shù);
(4.4)計(jì)算每個(gè)加密數(shù)據(jù)塊對(duì)應(yīng)的數(shù)據(jù)標(biāo)簽:σi=Sigα[x(Mi+h(ti))]1≤i≤n,其中,α表示從素?cái)?shù)域Fq中隨機(jī)選取的數(shù),x表示數(shù)據(jù)標(biāo)簽所需的密鑰sk,Mi表示第i個(gè)加密的數(shù)據(jù)塊,h(ti)表示加密的數(shù)據(jù)塊Mi的時(shí)間戳ti的哈希值,ti表示加密的數(shù)據(jù)塊Mi對(duì)應(yīng)的時(shí)間戳,i表示加密數(shù)據(jù)塊的序號(hào)值,n表示加密數(shù)據(jù)塊的總數(shù)。
步驟5:可信第三方TPA向云服務(wù)器CSP發(fā)起一個(gè)數(shù)據(jù)的完整性驗(yàn)證請(qǐng)求。
先從整數(shù)集合[1,n]中,隨機(jī)選擇一個(gè)含有c個(gè)元素的子集:I={s1,s2,...sj...,sc};再將I作為驗(yàn)證請(qǐng)求發(fā)送給云服務(wù)器CSP,其中,n表示加密數(shù)據(jù)塊的總數(shù),sj表示被隨機(jī)選擇的加密數(shù)據(jù)塊的序號(hào)值。
步驟6:云服務(wù)器CSP根據(jù)步驟5的驗(yàn)證請(qǐng)求生成對(duì)應(yīng)的響應(yīng)證明。
(6.1)云服務(wù)器CSP根據(jù)驗(yàn)證請(qǐng)求I找到需要驗(yàn)證的c個(gè)加密數(shù)據(jù)塊以及對(duì)應(yīng)數(shù)據(jù)標(biāo)簽;
(6.2)計(jì)算需要驗(yàn)證的c個(gè)加密數(shù)據(jù)塊之和其中,M′作為數(shù)據(jù)證明,表示需要驗(yàn)證的c個(gè)加密數(shù)據(jù)塊中的第sj個(gè)加密數(shù)據(jù)塊,sj表示需要驗(yàn)證的c個(gè)加密數(shù)據(jù)塊的序號(hào)值,I表示驗(yàn)證請(qǐng)求,∑表示求和操作;
(6.3)計(jì)算需要驗(yàn)證的c個(gè)對(duì)應(yīng)數(shù)據(jù)標(biāo)簽之和其中,σ作為數(shù)據(jù)標(biāo)簽證明,表示需要驗(yàn)證的c個(gè)對(duì)應(yīng)數(shù)據(jù)標(biāo)簽中第sj個(gè)數(shù)據(jù)標(biāo)簽,sj表示需要驗(yàn)證的c個(gè)加密數(shù)據(jù)塊的序號(hào)值,I表示驗(yàn)證請(qǐng)求。
步驟7:可信第三方TPA對(duì)步驟6的響應(yīng)證明進(jìn)行驗(yàn)證。
(7.1)可信第三方TPA計(jì)算需要驗(yàn)證的c個(gè)加密數(shù)據(jù)塊的時(shí)間戳的哈希值:其中,表示需要驗(yàn)證的c個(gè)加密數(shù)據(jù)塊中的第sj個(gè)加密數(shù)據(jù)塊對(duì)應(yīng)的時(shí)間戳,sj表示需要驗(yàn)證的c個(gè)加密數(shù)據(jù)塊的序號(hào)值,I表示驗(yàn)證請(qǐng)求;
(7.2)計(jì)算需要驗(yàn)證的c個(gè)加密數(shù)據(jù)塊的時(shí)間戳的哈希值之和其中,表示需要驗(yàn)證的c個(gè)加密數(shù)據(jù)塊的時(shí)間戳的哈希值,表示需要驗(yàn)證的c個(gè)加密數(shù)據(jù)塊中的第sj個(gè)加密數(shù)據(jù)塊對(duì)應(yīng)的時(shí)間戳,sj表示需要驗(yàn)證的c個(gè)加密數(shù)據(jù)塊的序號(hào)值,I表示驗(yàn)證請(qǐng)求,∑表示求和操作,h(·)表示{0,1}*→{0,1}l的哈希函數(shù);
(7.3)利用驗(yàn)證過程所需的密鑰(GA,G),判定GA·[Sigα(M′)+Sigα(H″)]與G·σ是否相等:
如果GA·[Sigα(M′)+Sigα(H″)]=G·σ,則輸出正確,證明云服務(wù)器CSP中的數(shù)據(jù)完整;如果GA·[Sigα(M′)+Sigα(H″)]≠G·σ,則輸出錯(cuò)誤,證明云服務(wù)器CSP中的數(shù)據(jù)不完整。
其中,“·”表示乘法操作,(GA,G)表示驗(yàn)證過程所需的密鑰pk,Sigα(M′)表示數(shù)據(jù)證明M′的代數(shù)簽名值,Sigα(H″)表示需要驗(yàn)證的c個(gè)加密數(shù)據(jù)塊的時(shí)間戳的哈希值之和H″的代數(shù)簽名值,M′表示數(shù)據(jù)證明,H″表示需要驗(yàn)證的c個(gè)加密數(shù)據(jù)塊的時(shí)間戳的哈希值之和,σ表示數(shù)據(jù)標(biāo)簽證明。
步驟8:可信第三方TPA將步驟7的驗(yàn)證結(jié)果傳送給用戶。
以上描述僅是本發(fā)明的一個(gè)具體實(shí)例,不構(gòu)成對(duì)本發(fā)明的任何限制,顯然對(duì)于本領(lǐng)域的專業(yè)人士來說,在了解了本發(fā)明內(nèi)容和原理后,都可能在不背離本發(fā)明原理、結(jié)構(gòu)的情況下,進(jìn)行形式和細(xì)節(jié)上的各種修正和改變,但是這些基于本發(fā)明思想修正和改變?nèi)栽诒景l(fā)明的權(quán)利要求保護(hù)范圍之內(nèi)。