云存儲(chǔ)環(huán)境下的數(shù)據(jù)訪問控制方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其涉及一種云存儲(chǔ)環(huán)境下的數(shù)據(jù)訪問控制方法和系統(tǒng)。
【背景技術(shù)】
[0002]隨著大數(shù)據(jù)時(shí)代的到來,云存儲(chǔ)已經(jīng)成為未來存儲(chǔ)發(fā)展的一種必然趨勢(shì),不同用戶都將自己的文件上傳到云端,由云存儲(chǔ)提供商提供統(tǒng)一的數(shù)據(jù)存儲(chǔ)和業(yè)務(wù)訪問,保證數(shù)據(jù)的安全性并節(jié)約存儲(chǔ)空間。數(shù)據(jù)擁有者可以授權(quán)其他用戶下載和使用自己的文件,通過共享和數(shù)據(jù)同步的方式來實(shí)現(xiàn)不同用戶間的協(xié)同工作。雖然云存儲(chǔ)能夠方便的實(shí)現(xiàn)用戶數(shù)據(jù)在不同設(shè)備上面的同步和共享,節(jié)約成本。但是這些隱私的用戶數(shù)據(jù)放在公共的云存儲(chǔ)中也存在著巨大的安全隱患。
[0003]現(xiàn)有技術(shù)中的一種云存儲(chǔ)環(huán)境下的數(shù)據(jù)訪問方法如下:數(shù)據(jù)擁有者計(jì)算需要上傳的文件的哈希值,然后利用用戶密鑰對(duì)文件和哈希值進(jìn)行加密,最后將加密結(jié)果和哈希值上傳到云端。通過這種方案,云存儲(chǔ)的服務(wù)提供商和沒有權(quán)限的竊聽者均不能得到數(shù)據(jù)內(nèi)容。用戶從云端中取回文件時(shí),先對(duì)加密結(jié)果進(jìn)行解密,然后對(duì)解密后的文件進(jìn)行哈希運(yùn)算,將哈希運(yùn)算的結(jié)果同存放在云端中的哈希值進(jìn)行比較,如果相符,則該文件是完整未經(jīng)篡改的。其他用戶想要訪問這個(gè)數(shù)據(jù),需要向數(shù)據(jù)擁有者申請(qǐng)密鑰,從而實(shí)現(xiàn)數(shù)據(jù)共享。
[0004]上述現(xiàn)有技術(shù)中的云存儲(chǔ)環(huán)境下的數(shù)據(jù)訪問方法的缺點(diǎn)如下:存在云服務(wù)提供商對(duì)用戶數(shù)據(jù)進(jìn)行非法利用的可能;該方案中的密鑰傳遞過程必須要求申請(qǐng)者和擁有者同時(shí)在線,才能完成密鑰傳遞過程。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的實(shí)施例提供了一種云存儲(chǔ)環(huán)境下的數(shù)據(jù)訪問控制方法和系統(tǒng),以提高云存儲(chǔ)下的數(shù)據(jù)訪問控制的安全性。
[0006]本發(fā)明提供了如下方案:
[0007]一種云存儲(chǔ)環(huán)境下的數(shù)據(jù)訪問控制方法,包括:
[0008]用戶通過客戶端向云服務(wù)器注冊(cè)個(gè)人信息,在所述云服務(wù)器中存儲(chǔ)用戶的個(gè)人信息,該個(gè)人信息包括用戶的標(biāo)識(shí)UID和證書;
[0009]當(dāng)數(shù)據(jù)擁有者確定需要上傳給所述云服務(wù)器的數(shù)據(jù)是共享數(shù)據(jù)時(shí),所述數(shù)據(jù)擁有者的客戶端利用對(duì)稱密鑰加密所述數(shù)據(jù),將加密后的所述數(shù)據(jù)、所述對(duì)稱密鑰、所述數(shù)據(jù)的哈希運(yùn)算結(jié)果和所述數(shù)據(jù)的共享屬性發(fā)送到所述云服務(wù)器;
[0010]當(dāng)數(shù)據(jù)擁有者確定需要上傳給所述云服務(wù)器的數(shù)據(jù)是非共享數(shù)據(jù)時(shí),所述數(shù)據(jù)擁有者的客戶端利用自己的公鑰加密所述數(shù)據(jù),將加密后的所述數(shù)據(jù)、所述數(shù)據(jù)的哈希運(yùn)算結(jié)果和所述數(shù)據(jù)的共享屬性發(fā)送到所述云服務(wù)器。
[0011]所述的當(dāng)數(shù)據(jù)擁有者確定需要上傳給所述云服務(wù)器的數(shù)據(jù)是共享數(shù)據(jù)時(shí),所述數(shù)據(jù)擁有者的客戶端利用對(duì)稱密鑰加密所述數(shù)據(jù),將加密后的所述數(shù)據(jù)、所述對(duì)稱密鑰、所述數(shù)據(jù)的哈希運(yùn)算結(jié)果和所述數(shù)據(jù)的共享屬性發(fā)送到所述云服務(wù)器,包括:
[0012]數(shù)據(jù)擁有者需要上傳的數(shù)據(jù)為Data,該Data的文件標(biāo)識(shí)符為FID,該Data為共享數(shù)據(jù),共享屬性isShared=TRUE,所述數(shù)據(jù)擁有者的客戶端生成一個(gè)共享密鑰K,利用所述數(shù)據(jù)擁有者的公鑰PKDO對(duì)所述共享密鑰K進(jìn)行加密E(K)PKDO,得到KeyUnit ;所述客戶端計(jì)算 E (Data) K,得到 DataUnit,并對(duì) Data 進(jìn)行哈希運(yùn)算 Hash (Data),得到 HashDataUnit,所述客戶端將所述HashDataUnit, DataUnit, KeyUnit, FID和isShared上傳到所述云服務(wù)器;
[0013]所述云服務(wù)器將所述客戶端上傳的HashDataUnit, DataUnit, KeyUnit, FID和isShared,以及所述數(shù)據(jù)擁有者的UID進(jìn)行關(guān)聯(lián)存儲(chǔ)。
[0014]所述的當(dāng)數(shù)據(jù)擁有者確定需要上傳給所述云服務(wù)器的數(shù)據(jù)是非共享數(shù)據(jù)時(shí),所述數(shù)據(jù)擁有者的客戶端利用自己的公鑰加密所述數(shù)據(jù),將加密后的所述數(shù)據(jù)、所述數(shù)據(jù)的哈希運(yùn)算結(jié)果和所述數(shù)據(jù)的共享屬性發(fā)送到所述云服務(wù)器,包括:
[0015]數(shù)據(jù)擁有者需要上傳的數(shù)據(jù)為Data,該Data的文件標(biāo)識(shí)符為FID,該Data為非共享數(shù)據(jù),共享屬性isShared=FALSE,所述數(shù)據(jù)擁有者的客戶端對(duì)數(shù)據(jù)文件Data進(jìn)行哈希運(yùn)算Hash (Data),得到HashDataUnit,利用所述數(shù)據(jù)擁有者的公鑰PKDO對(duì)Data進(jìn)行加密運(yùn)算 E (Data) PKD0,得到 DataUnit,所述客戶端將所述 HashDataUnit、DataUnit, FID 和isShared上傳到所述云服務(wù)器;
[0016]所述云服務(wù)器將所述客戶端上傳的HashDataUnit, DataUnit, FID和isShared,以及所述數(shù)據(jù)擁有者的UID進(jìn)行關(guān)聯(lián)存儲(chǔ)。
[0017]所述的方法還包括:
[0018]數(shù)據(jù)使用者的客戶端將當(dāng)前系統(tǒng)時(shí)間Time和自己的UID利用自己的私鑰SKDU進(jìn)行簽名S (Time I IUID) SKDU,得到申請(qǐng)時(shí)間戳,所述數(shù)據(jù)使用者的客戶端向數(shù)據(jù)擁有者的客戶端發(fā)送攜帶所述申請(qǐng)時(shí)間戳和自己的WD的數(shù)據(jù)訪問請(qǐng)求;
[0019]所述數(shù)據(jù)擁有者的客戶端獲取所述數(shù)據(jù)訪問請(qǐng)求中攜帶的S(Time I |UID)SKDUl |nD,審核所述數(shù)據(jù)使用者的WD,當(dāng)確定所述數(shù)據(jù)使用者是可以開通數(shù)據(jù)訪問權(quán)限的用戶后,則向云服務(wù)器提交攜帶S (Time I I UID) SKDUI UID的授權(quán)申請(qǐng);否則,向所述數(shù)據(jù)使用者的客戶端發(fā)送授權(quán)失敗應(yīng)答;
[0020]所述云服務(wù)器接收到所述授權(quán)申請(qǐng)后,根據(jù)所述數(shù)據(jù)使用者的UID查找對(duì)應(yīng)的所述數(shù)據(jù)使用者的公鑰證書CertDU,驗(yàn)證V (S (Time | UID)) SKDU,得到Time,和UID,,驗(yàn)證Time實(shí)效性以及WD’ ?=UID,驗(yàn)證通過,則所述云服務(wù)器向所述數(shù)據(jù)擁有者的客戶端發(fā)送攜帶KeyUnit和所述數(shù)據(jù)使用者的證書CertDU的驗(yàn)證通過結(jié)果;驗(yàn)證不通過,向所述數(shù)據(jù)擁有者的客戶端發(fā)送驗(yàn)證失敗結(jié)果;
[0021]所述數(shù)據(jù)擁有者的客戶端接收到驗(yàn)證通過結(jié)果后,獲取驗(yàn)證通過結(jié)果中攜帶的KeyUnit和CertDU,對(duì)共享密鑰單元解密D (KeyUnit) SKDO得到共享密鑰K,利用所述數(shù)據(jù)使用者的公鑰PKDU加密共享密鑰K得到共享密碼存儲(chǔ)單元副本KeyUnit_l,所述數(shù)據(jù)擁有者的客戶端將授權(quán)許可應(yīng)答消息發(fā)送到所述數(shù)據(jù)使用者,并將所述數(shù)據(jù)使用者的標(biāo)識(shí)UID和KeyUnit_l發(fā)送給所述云服務(wù)器,所述云服務(wù)器將所述數(shù)據(jù)使用者的UID和KeyUnit_l存放在所述數(shù)據(jù)擁有者上傳的Data相對(duì)應(yīng)的訪問權(quán)限列表中;所述數(shù)據(jù)擁有者的客戶端接收到驗(yàn)證失敗結(jié)果后,向所述數(shù)據(jù)使用者發(fā)送授權(quán)許可失敗信息。
[0022]所述的方法還包括:
[0023]用戶的客戶端向所述云服務(wù)器發(fā)送攜帶自己的UID和FID的數(shù)據(jù)訪問請(qǐng)求,所述云服務(wù)器根據(jù)所述數(shù)據(jù)訪問請(qǐng)求中攜帶的FID查詢?cè)品?wù)器中存儲(chǔ)的的目錄數(shù)據(jù),找到對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)區(qū),根據(jù)該數(shù)據(jù)存儲(chǔ)區(qū)獲取所述FID對(duì)應(yīng)的Data的isShared屬性;
[0024]當(dāng)所述用戶的客戶端選擇訪問isShared=FALSE的所述Data時(shí),所述云服務(wù)器根據(jù)所述用戶的UID驗(yàn)證所述用戶身份是否為數(shù)據(jù)擁有者,如果是,則將所述Data對(duì)應(yīng)的HashDataUnit和DataUnit發(fā)送給所述用戶的客戶端;
[0025]所述用戶的客戶端利用用戶自己的SKDO對(duì)所述DataUnit進(jìn)行解密D (DataUnit)SKDO,得到Data’,當(dāng)驗(yàn)證Hash (Data’) =HashDataUnit后,則確定所述Data沒有被篡改,Data’ =Data,所述用戶的客戶端對(duì)所述Data’進(jìn)行處理。
[0026]所述的方法還包括:
[0027]用戶的客戶端向所述云服務(wù)器發(fā)送攜帶自己的WD的數(shù)據(jù)訪問請(qǐng)求,所述云服務(wù)器根據(jù)所述數(shù)據(jù)訪問請(qǐng)求中攜帶的FID查詢所述云服務(wù)器中存儲(chǔ)的的目錄數(shù)據(jù),找到對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)區(qū),根據(jù)該數(shù)據(jù)存儲(chǔ)區(qū)獲取所述FID對(duì)應(yīng)的Data的isShared屬性;
[0028]當(dāng)所述用戶的客戶端選擇訪問isShared=TRUE的所述Data時(shí),所述云服務(wù)器檢查請(qǐng)求中攜帶的UID是否包含在所述Data對(duì)應(yīng)的訪問權(quán)限列表中,如果是,則判斷用戶的客戶端可以訪問所述Data,繼續(xù)后續(xù)流程;否則,則判斷用戶的客戶端不可以訪問所述Data,流程結(jié)束;
[0029]所述云服務(wù)器將所述Data對(duì)應(yīng)的KeyUnit, DataUnit和HashDataUnit發(fā)送給用戶的客戶端,所述用戶的客戶端用用戶自己的私鑰解密KeyUnit,即計(jì)算D(KeyUnit)SK(DOlDU)得到共享密鑰K;
[0030]所述用戶的客戶端利用K解密DataUnit得到Data’ ,驗(yàn)證Hash (Data’) =HashDataUnit后,Data’ =Data,所述用戶的客戶端對(duì)所述Data’進(jìn)行處理。
[0031]一種云存儲(chǔ)環(huán)境下的數(shù)據(jù)訪問控制系統(tǒng),包括:數(shù)據(jù)擁有者的客戶端和云服務(wù)器,
[0032]所述的數(shù)據(jù)擁有者的客戶端,用于向云服務(wù)器注冊(cè)所述數(shù)據(jù)擁有者的個(gè)人信息,當(dāng)數(shù)據(jù)擁有者確定需要上傳給所述云服務(wù)器的數(shù)據(jù)是共享數(shù)據(jù)時(shí),所述客戶端利用對(duì)稱密鑰加密所述數(shù)據(jù),將加密后的所述數(shù)據(jù)、所述對(duì)稱密鑰、所述數(shù)據(jù)的哈希運(yùn)算結(jié)果和所述數(shù)據(jù)的共享屬性發(fā)送到所述云服務(wù)器;
[0033]當(dāng)數(shù)據(jù)擁有者確定需要上傳給所述云服務(wù)器的數(shù)據(jù)是非共享數(shù)據(jù)時(shí),所述客戶端利用自己的公鑰加密所述數(shù)據(jù),將加密后的所述數(shù)據(jù)、所述數(shù)據(jù)的哈希運(yùn)算結(jié)果和所述數(shù)據(jù)的共享屬性發(fā)送到所述云服務(wù)器。
[0034]所述的云服務(wù)器,用于存儲(chǔ)用戶的個(gè)人信息,該個(gè)人信息包括用戶的標(biāo)識(shí)UID和證書,并且將所述數(shù)據(jù)擁有者的客戶端上傳的信息進(jìn)行存儲(chǔ)。
[0035]所述的數(shù)據(jù)擁有者的客戶端,具體用于當(dāng)數(shù)據(jù)擁有者需要上傳的數(shù)據(jù)為Data,該Data的文件標(biāo)識(shí)符為FID,該Data為共享數(shù)據(jù),共享屬性isShared=TRUE時(shí),所述客戶端生成一個(gè)共享密鑰K,利用所述數(shù)據(jù)擁有者的公鑰PKDO對(duì)所述共享密鑰K進(jìn)行加密E(K)PKD0,得到 KeyUnit ;計(jì)算 E (Data) K,得到 DataUnit,并對(duì) Data 進(jìn)行哈希運(yùn)算 Hash(Data),得到 HashDataUnit,將所述 HashDataUnit, DataUnit, KeyUnit、FID 和 isShared 上傳到所述云服務(wù)器;
[0036]所述的云服務(wù)器,具體用于將所述客戶端上傳的HashDataUnit, DataUnit,KeyUnit、FID和isShar