一種云存儲中密文數(shù)據(jù)的客戶端安全去重方法
【專利摘要】本發(fā)明公開了一種云存儲中密文數(shù)據(jù)的客戶端安全去重方法,包括如下步驟:(1)密鑰生成;(2)文件初始化;(3)數(shù)據(jù)塊初始化;(4)數(shù)據(jù)塊驗證;(5)文件存儲;(6)生成挑戰(zhàn);(7)生成證據(jù);(8)驗證證據(jù);(9)文件解密。本發(fā)明基于盲簽名構造了一個安全的密鑰生成協(xié)議,實現(xiàn)了對收斂密鑰的二次加密,保證了密鑰的安全性;并在此基礎上提出了一個新的基于簽名的擁有權證明方法,它能夠確保用戶以一個更加安全高效的方式向云服務器證明其確實擁有云端的某個文件,并且它能夠同時實現(xiàn)對密文文件的文件級和塊級去重。
【專利說明】
-種云存儲中密文數(shù)據(jù)的客戶端安全去重方法
技術領域
[0001] 本發(fā)明設及云存儲和信息安全技術領域,特別是一種云存儲中密文數(shù)據(jù)的客戶端 安全去重方法。
【背景技術】
[0002] 隨著云存儲服務的廣泛使用,越來越多的企業(yè)和個人將他們的數(shù)據(jù)信息外包給云 服務提供商(Cloud Service ProvideriCSP),運將會在云端產(chǎn)生大量的冗余數(shù)據(jù)。所W,云 服務提供商將面臨的一個嚴峻的挑戰(zhàn)就是如何高效地管理持續(xù)增加的數(shù)據(jù)。
[0003] 為此,研究人員提出了一種客戶端的數(shù)據(jù)去重技術,它使得CSP對相同文件只存儲 一次,所有擁有該文件的用戶只能通過那份唯一的拷貝來訪問文件。更具體地來說,就是 CSP只在接收到第一個用戶上傳請求的時候,執(zhí)行數(shù)據(jù)文件的存儲;對于后面的上傳請求, 只是分配一個原始數(shù)據(jù)副本的鏈接。運樣既節(jié)約了存儲空間,也節(jié)約了傳輸帶寬。然而,客 戶端的數(shù)據(jù)去重存在一個很大的安全問題:攻擊者可能憑借單一的文件hash值就可W從云 端獲得相應文件的下載權限。運類攻擊的根本原因是一個很短的文件hash值就可W代表整 個文件,一旦攻擊者獲得此hash值,就可W獲得整個文件。為了解決運個問題,一個擁有權 證明(Proof of Ownership JoW)的方法被提出。PoW就是一個在證明者和驗證者之間的交 互的協(xié)議。通過執(zhí)行運個協(xié)議,證明者使驗證者相信,他/她確實是一個被驗證者存儲的文 件的所有者。因此,對于客戶端的數(shù)據(jù)安全去重來說,PoW是相當重要的。
[0004] 此外,云服務器是誠實而好奇的,它可能竊取用戶的數(shù)據(jù)隱私。因此,用戶在將數(shù) 據(jù)上傳至云服務器之前,需要對數(shù)據(jù)進行加密來實現(xiàn)數(shù)據(jù)隱私保護。然而,當不同用戶利用 各自的私鑰對相同的文件進行加密時,將會產(chǎn)生不同的密文,不利于云服務器對相同文件 進行去重。一種收斂加密的技術被提出,它利用數(shù)據(jù)本身產(chǎn)生的一個hash值作為數(shù)據(jù)的加 密密鑰,運樣相同的數(shù)據(jù)文件將會產(chǎn)生相同的密文,便于云服務器進行去重處理。但是,收 斂加密存在很大的安全漏桐,如字典攻擊:對于可預測的文件,攻擊者很容易推導出收斂密 鑰,并檢測文件是否存在于云服務器中。另外,收斂加密會產(chǎn)生很多的收斂密鑰,運給用戶 對自己密鑰的管理造成了很大困難。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的在于提供一種安全、高效的云存儲中密文數(shù)據(jù)的客戶端安全去重方 法,W實現(xiàn)對收斂密鑰的二次加密,保證數(shù)據(jù)的隱私,預防暴力字典攻擊。
[0006] 實現(xiàn)本發(fā)明目的的技術解決方案為:一種云存儲中密文數(shù)據(jù)的客戶端安全去重方 法,針對加密數(shù)據(jù)的客戶端去重模型,去重過程設及到的實體如下:用戶Users,云服務提供 商CSP和密鑰服務器KS,具體步驟如下:
[0007] 步驟1,密鑰生成:
[000引用戶為每一個數(shù)據(jù)塊Hii計算相對應的加密密鑰ki,l《i《n,n為數(shù)據(jù)塊的總數(shù);
[0009]步驟2,文件初始化:
[0010]用戶為每一個數(shù)據(jù)塊nii計算塊密文Ci,同時生成文件的標簽T= (Tl,T2),其中Tl用 于數(shù)據(jù)完整性驗證,T2用于塊簽名的驗證;
[0011] 步驟3,數(shù)據(jù)塊初始化:
[0012] 當云端不存在文件標簽T時,用戶為每一個數(shù)據(jù)塊HU計算塊標簽Tl和塊簽名〇1,其 中Tl用于塊的索引,Oi用于塊存在的證明;同時,用戶用自己的私鑰Sk加密每一個塊密鑰得 到密鑰的密文Ckey;
[0013] 步驟4,數(shù)據(jù)塊驗證:
[0014] 當云端存在數(shù)據(jù)塊標簽Tl時,執(zhí)行塊去重;CSP驗證用戶上傳的數(shù)據(jù)塊簽名Oi是否 正確,從而判斷用戶和CSP是否擁有相同的數(shù)據(jù)塊,并將驗證結果返回給用戶;
[0015] 步驟5,文件存儲:
[0016] 當云端不存在數(shù)據(jù)塊標簽Tl時,請求用戶上傳數(shù)據(jù)塊簽名〇1、塊密文Cl和密鑰的密 文Ckey至CSP,CSP驗證塊標簽和塊密文是否來自相同文件,并且驗證塊簽名Oi的正確性;最 終,CSP存儲每一個塊標簽、塊簽名、塊密文、密鑰的密文;并給用戶分配相應的權限;
[0017] 步驟6,生成挑戰(zhàn):
[001引當云端存在文件標簽T時,執(zhí)行文件去重;CSP生成挑戰(zhàn)信息Chal = U, VihEI,再將 該挑戰(zhàn)信息返回給用戶,其中I為[l,n]的任意子集,隨機數(shù)ViGZq,其中Zq是q階素數(shù)域;
[0019] 步驟7,生成證據(jù):
[0020] 用戶收到挑戰(zhàn)信息后,根據(jù)所選的塊生成響應證據(jù)Pv,并返回給CSP;
[0021] 步驟8,驗證證據(jù):
[0022] CSP驗證響應證據(jù)Pv的正確性,從而判斷用戶和CSP是否擁有相同的文件,并將驗 證結果返回給用戶;
[0023] 步驟9,文件解密:
[0024] 當用戶需要從CSP下載文件時,CSP首先驗證用戶身份的合法性,并將密鑰的密文 Ckey和塊密文Cl返回給用戶;用戶首先利用自己的私鑰Sk解密得到每一個塊密鑰ki;然后,再 利用ki解密每一個塊密文Ci得到塊明文Hli。
[0025] 進一步地,步驟1所述密鑰生成:用戶為每一個數(shù)據(jù)塊HH計算相對應的加密密鑰ki, 1《i《n,n為數(shù)據(jù)塊的總數(shù),具體如下:
[0026] (1.1化5隨機選擇一個4-^*的素數(shù)9并創(chuàng)建兩個9階的楠圓曲線方程&,礎相階的 素數(shù)域Zq; P,Q是Gi的兩個不同的生成元,并產(chǎn)生一個線性配對e: Gi X Gi^G2 ; KS隨機選擇一 個整數(shù)X E Zq作為私鑰,并計算公鑰Ppub = X ? P;KS公開系統(tǒng)參數(shù){q,Gi,G2,e,P,Q,Ppub},保持 X私有;
[0027] (1.2)用戶將文件M分成n個塊,即M=化IkM…Mmn,用戶為每一個數(shù)據(jù)塊化計算 收斂密鑰hi = h(mi),其中哈希函數(shù)K ? ):{0,l}*^Gi;然后,用戶隨機選擇rGZq作為盲化因 子,再計算對hi盲化后的值ai = hi+r ? P,并將ai上傳到KS;
[002引 (1.3化S計算對ai加密后的值bi = ai ? X,并將bi返回給用戶;
[0029] (1.4)用戶計算對bi去盲化后的值di = b廣r ? Ppub,同時用戶驗證di的正確性:e(di, P)=e化(mi),Ppub);最后,用戶令ki = di作為每一個塊mi的加密密鑰。
[0030] 進一步地,步驟2所述文件初始化:用戶為每一個數(shù)據(jù)塊HH計算塊密文Cl,同時生成 文件的標簽T=(Ti,T2),其中Tl用于數(shù)據(jù)完整性驗證,T2用于塊簽名的驗證,具體如下:
[0031 ] (2.1)用戶使用對稱加密的方法為文件M的每一個塊mi(I《i《n),計算塊密文Ci = Enc(ki,mi) ,CiGZq;
[0032] (2.2)用戶計算:。=化((:1||〔2||...||打)^2 =此(1).口,其中哈希函數(shù)出(.):2。 一{0,1}*,出(?一Zq;最后,用戶生成文件M的標簽:T=(Ti,T2),并上傳 T至CSP。
[0033] 進一步地,步驟3所述數(shù)據(jù)塊初始化:當云端不存在文件標簽T時,用戶為每一個數(shù) 據(jù)塊HU計算塊標簽Tl和塊簽名〇1,其中Tl用于塊的索引,Oi用于塊存在的證明;同時,用戶用 自己的私鑰Sk加密每一個塊密鑰得到密鑰的密文Ckey,具體如下:
[0034] (3.1)當用戶檢測到云端文件標簽T不存在時,用戶為每一個文件塊HU計算塊標簽 Ti =出(M) ? h(mi);
[0035] (3.2)用戶計算塊簽名:〇1 =出(1)-化1+。-9);
[0036] (3.3)用戶隨機選擇自己的私鑰Sk,并對塊密鑰ki進行加密,計算密鑰的密文Ckey = Enc(sk,ki| Iksl I... ||kn)。
[0037] 進一步地,步驟4所述數(shù)據(jù)塊驗證:當云端存在數(shù)據(jù)塊標簽Tl時,執(zhí)行塊去重;CSP 驗證用戶上傳的數(shù)據(jù)塊簽名Oi是否正確,從而判斷用戶和CSP是否擁有相同的數(shù)據(jù)塊,并將 驗證結果返回給用戶,具體如下:
[0038] 當收到來自用戶的塊標簽Tl和塊簽名〇i,CSP檢測到塊標簽Tl存在則執(zhí)行塊去重; 然后CSP驗證塊簽名Oi的正確性,即CSP驗證〇1 = 〇1'是否成立,其中〇1'是CSP存儲的數(shù)據(jù)塊 的簽名;若成立,說明用戶和CSP擁有相同的數(shù)據(jù)塊,該數(shù)據(jù)塊已存在于CSP,CSP只需為該數(shù) 據(jù)塊添加用戶的身份IDuser;否則,返回一個請求失敗消息給用戶。
[0039] 進一步地,步驟5所述文件存儲:當云端不存在數(shù)據(jù)塊標簽Tl時,請求用戶上傳數(shù) 據(jù)塊簽名〇i、塊密文Ci和密鑰的密文Ckey至CSP,CSP驗證塊標簽和塊密文是否來自相同文件, 并且驗證塊簽名Oi的正確性;最終,CSP存儲每一個塊標簽、塊簽名、塊密文、密鑰的密文;并 給用戶分配相應的權限,具體過程如下:
[0040] (5.1)-旦CSP收到所有的塊密文。,〔5?開始驗證。=化((:1|侶|^,||打)是否成 立,若成立,說明用戶上傳的密文和標簽是一致的;否則,說明用戶上傳了與標簽不一致的 密文,返回一個請求失敗消息給用戶;
[0041 ] (5 . 2)CSP驗證用戶上傳的每一個數(shù)據(jù)塊簽名Oi是否正確,通過驗證 e的,巧=嘶,.雌.r:)'' '1是否成立,若成立,說明用戶上傳的數(shù)據(jù)塊簽名Oi是正確的,CSP存 儲T、Ti、日i、Ci和Ckey,并添加用戶的身份IDuser到IDm,則IDm= IDm U IDuser,其中IDm代表所有擁 有文件M的用戶身份的集合;否則,CSP返回一個請求失敗的信息給用戶。
[0042] 進一步地,步驟6所述生成挑戰(zhàn):當云端存在文件標簽T時,執(zhí)行文件去重;CSP生成 婦峨信息Chal = U再將該挑戰(zhàn)信息返回給用戶,其中I為[l,n]的任意子集,隨機數(shù) Vi G Zq;具體如下:
[0043] 當CSP檢測到文件標簽T存在時,CSP根據(jù)文件M的總塊數(shù)n,從1~n中隨機生成C個 數(shù),組成1 = {si,S2,…,Sc},且對于乂&.,^/ /)"1和3堤相互獨立的;對于V?'€/ .隨機生 成一個數(shù)Vi G Zq,組成挑戰(zhàn)信息Chal = {i,Vi}iei,然后CSP將Chal發(fā)送給用戶。
[0044] 講一張她?張3?7祈沐晌!而iIF據(jù)Pv的計算公式如下;
[0045]
[0046] 進一步地,步驟8所述驗證證據(jù):CSP驗證響應證據(jù)Pv的正確性,從而判斷用戶和 CSP是否擁有相同證結果返回給用戶,具體過程如下:
[0047] CSP驗證 I否成立:若成立,說明用戶和CSP擁有相同的文件,該文件 已存在于CSP中,用戶不需要上傳文件到CSP,用戶只需上傳 CkeyJDuser至IjCSP, CSP存儲Ckey, 并且添加用戶的身份IDuser到IDm,則IDm= IDmU IDuser,其中IDm代表所有擁有文件M的用戶身 份的集合;否則,CSP返回一個請求失敗的信息給用戶。
[004引進一步地,步驟9所述文件解密:當用戶需要從CSP下載文件時,CSP首先驗證用戶 身份的合法性,并將密文Ckey和Cl返回給用戶;用戶首先利用自己的私鑰Sk解密得到每一個 塊密鑰ki;然后,再利用ki解密每一個塊密文Cl得到塊明文nil,具體如下:
[0049] (9.1)首先,用戶發(fā)送文件M的標簽T和自己的身份IDuser至化SP;
[0050] (9.2)CSP收到文件標簽T和用戶的身份IDuser后,驗證文件標簽T和用戶身份IDuser 是否正確,如果正確,將其對應的密鑰的密文Ckey和塊密文Cl傳送給用戶;否則返回一個請 求失敗信息給用戶;
[0051 ] (9.3)用戶收到密鑰的密文Ckey和塊密文Ci后,首先驗證Tl=化(Cll估| I -'IlCn)是 否正確,如果不正確,說明CSP返回給了用戶不正確的密文文件;否則,用戶先用自己的私鑰 sk,解密每一個塊密鑰:kl Mksl I .-Mkn = Dec(SkiCkey),然后用戶解密每一個數(shù)據(jù)塊:mi = Dec化i,Ci)。
[0052] 本發(fā)明與現(xiàn)有技術相比,其顯著優(yōu)點為:
[0053] (1)收斂密鑰安全性:基于盲簽名的方法,用戶首先選擇一個隨機數(shù)r作為盲化因 子,對收斂密鑰進行了盲化處理,KS再對盲化后的收斂密鑰進行加密。在整個傳輸過程中, 收斂密鑰始終是盲化的,攻擊者(甚至是KS)即使獲得了交互過程中的一些信息,也不能推 導出收斂密鑰;
[0054] (2)數(shù)據(jù)機密性:由于數(shù)據(jù)塊的加密密鑰只在用戶端生成,且此加密密鑰中包含了 數(shù)據(jù)塊的收斂密鑰和KS的私鑰,此外收斂密鑰安全性是得到有效保護的,所W攻擊者是不 可能獲得和破解此密鑰的,數(shù)據(jù)機密性是得到有效保護的;
[0055] (3)數(shù)據(jù)完整性:基于文件的密文產(chǎn)生文件的標簽Tl,當用戶上傳文件標簽Tl和每 一個塊密文Cl后,云服務器利用收到的文件標簽和密文驗證:Tl =化(Cl M C21 I…I I Cn)是否 成立,從而判斷用戶是否上傳了與標簽一致的密文。其次,用戶下載的密文后,還需驗證:Tl =化(Cl M C21 I…M Cn)是否成立,從而判斷CSP是否給了用戶正確的密文文件;
[0056] (4)預防字典攻擊:數(shù)據(jù)塊的加密密鑰是通過KS對收斂密鑰進行二次加密得到的, 攻擊者是不可能推導出收斂密鑰和數(shù)據(jù)塊的加密密鑰的;由于數(shù)據(jù)塊的加密密鑰中包含KS 的私鑰,而KS的私鑰是一個隨機值,所W加密產(chǎn)生的密文存在更大的無關聯(lián)性,運樣攻擊者 在對密文發(fā)起字典攻擊的過程中,除非他們知道數(shù)據(jù)塊的加密密鑰,否則他們就很難猜測 明文,從而預防了字典攻擊。
【附圖說明】
[0057] 圖1是本發(fā)明的系統(tǒng)模型圖。
[005引圖2是本發(fā)明的云存儲中密文數(shù)據(jù)的客戶端安全去重方法的基本流程圖。
[0059] 圖3是本發(fā)明的基于盲簽名的密鑰生成協(xié)議示意圖。
【具體實施方式】
[0060] 下面結合附圖及實施示例對本發(fā)明作進一步詳細描述。W下實施例在W本發(fā)明技 術方案為前提下進行實施,給出了詳細的實施方式和過程,但本發(fā)明的保護范圍不限于下 述的實施例。
[0061] 本發(fā)明提供一種云存儲中密文數(shù)據(jù)的客戶端安全去重方法,該方法的系統(tǒng)模型如 圖1所示,包含S類實體:云服務提供商(Cloud Service ProvideriCSP),密鑰服務器 化eyServer,KS),用戶化sers)。其中,CSP由主服務器和存儲服務器組成,它有足夠的存儲 空間和計算能力,為用戶提供數(shù)據(jù)存儲和去重驗證服務。KS與用戶進行交互,對盲化的收斂 密鑰進行再加密。Users包括多個普通用戶,他們在上傳文件到CSP之前,檢查要上傳的文件 是否已存在于CSP,若存在,不需要上傳文件到CSP;否則,上傳文件到CSP。
[0062] 本發(fā)明云存儲中密文數(shù)據(jù)的客戶端安全去重方法能夠?qū)崿F(xiàn)對收斂密鑰的二次加 密,保證數(shù)據(jù)的隱私,預防了暴力字典攻擊;同時用戶能夠在本地W-種安全有效的方式向 云服務器證明其確實擁有云端的某個文件,既節(jié)約了存儲空間,也節(jié)約了上傳帶寬。
[0063] 為了更好地理解本實施例提出的方法,選取一次云存儲環(huán)境下用戶對其在CSP上 存儲的文件的數(shù)據(jù)安全去重事件,基本流程如圖2所示,本實施例具體實施步驟如下:
[0064] 步驟101:密鑰生成:用戶為每一個數(shù)據(jù)塊mi(總共有n個塊,計算其相對 應的加密密鑰ki,其密鑰生成協(xié)議如圖3,具體過程如下:
[0065] (1.1)首先,為了密鑰的生成和去重的證明,初始化一些系統(tǒng)參數(shù)。KS隨機選擇一 個k-bit的素數(shù)q并創(chuàng)建兩個q階的楠圓曲線方程61,&和9階的素數(shù)域Zq"P,Q是Gi的兩個不 同的生成元,并產(chǎn)生一個可接受的線性配對e: Gi X Gi^G2 dKS隨機一個選擇整數(shù)X G Zq,并計 ^Ppub = X ? P〇KSl^^^^^#m{q,Gi,G2,e,P,Q,Ppub},{^#xfAW〇
[0066] (1.2)用戶首先將文件M分成n個塊:M=HuNimII…limn。用戶為每一個數(shù)據(jù)塊mi計 算收斂密鑰hi = h(mi),其中哈希函數(shù)K ? ):{0,l}*^Gi;然后,用戶隨機選擇rGZq作為盲化 因子,再計算對hi盲化后的值ai = hi+r ? P,并將ai上傳到KS。
[0067] (1.3化S計算對ai加密后的值bi = ai ? X,并將bi返回給用戶。
[006引 (1.4)用戶計算對bi去盲化后的值di = b廣r . Ppub,同時用戶能夠驗證di的正確性: e(di,P) = e化(mi) ,Ppub)。最后,用戶令ki = di作為每一個塊mi(l《i《n)的加密密鑰。
[0069] 步驟102:文件初始化:初始化文件M的信息,用戶為每一個數(shù)據(jù)塊HH計算塊密文Cl, 同時生成文件的標簽T=(Ti,T2),其中Tl用于數(shù)據(jù)完整性驗證,T2用于塊簽名的驗證,具體 過程如下:
[0070] (2.1)用戶使用對稱加密的方法為文件M的每一個塊Hii (1《i《n ),計算塊密文Ci = Enc(ki,mi),CiGZq。
[0071] (2.2)用戶計算:。=化((:1|估||。'||打)^2 =此(1).口,其中哈希函數(shù)出(.)而 一{0,1}*,出(?一Zq。最后,用戶生成文件M的標簽:T=(Ti,T2),并上傳 T至CSP。
[0072] 步驟103:數(shù)據(jù)塊初始化:初始化數(shù)據(jù)塊信息。當用戶檢測到云端文件標簽T不存在 時,用戶為每一個數(shù)據(jù)塊HU計算塊標簽Tl和塊簽名Oi,其中Tl用于塊的索引,Oi用于塊存在的 證明;同時,用戶用自己的私鑰Sk加密每一個塊密鑰得到密鑰的密文Ckey,具體過程如下:
[007;3] (3.1)用戶為每一個文件塊mi(l《i《n),計算塊標簽:Ti =出(M) ? h(mi)。
[0074] (3.2)用戶計算塊簽名:〇1 =出(1)-化1+。-9)。
[0075] (3.3)用戶隨機選擇自己的私鑰Sk,并對塊密鑰ki(l《i《n)進行加密,計算密鑰 的密文 Ckey = E:nc(sk,ki| Iksl |...||kn)。
[0076] 步驟104:數(shù)據(jù)塊驗證:當收到來自用戶的塊標簽Tl和塊簽名OiXSP檢測到塊標簽 Tl存在,執(zhí)行塊去重;CSP驗證用戶上傳的數(shù)據(jù)塊簽名Oi是否正確,從而判斷用戶和CSP是否 擁有相同的數(shù)據(jù)塊,并將驗證結果返回給用戶,具體過程如下:
[0077] 當收到來自用戶的塊標簽Tl和塊簽名〇i,CSP檢測到塊標簽Tl存在則執(zhí)行塊去重; 然后CSP驗證塊簽名Oi的正確性,即CSP驗證:〇1 = 〇1'是否成立,其中〇1'是CSP存儲的數(shù)據(jù)塊 的簽名。若成立,說明用戶和CSP擁有相同的數(shù)據(jù)塊,該數(shù)據(jù)塊已存在于CSP,CSP只需為該數(shù) 據(jù)塊添加用戶的身份IDuser;否則,返回一個請求失敗消息給用戶。
[0078] 步驟105:文件存儲:當收到來自用戶的塊標簽Tl和塊簽名〇1,云端不存在數(shù)據(jù)塊標 簽Ti時,請求用戶上傳數(shù)據(jù)塊簽名〇i、塊密文Ci和密鑰的密文Ckey至CSP,CSP驗證塊標簽和塊 密文是否來自相同文件,并且驗證塊簽名Oi的正確性;最終,CSP存儲每一個塊標簽、塊簽 名、塊密文、密鑰的密文;并給用戶分配相應的權限,具體過程如下:
[0079] (5.1)-旦05?收到所有的塊密文。(1《1《11),〔5?開始驗證:1'1 =化((:1|估||''-| Cn)是否成立。若成立,說明用戶上傳的密文和標簽是一致的;否則,說明用戶上傳了與標簽 不一致的密文,返回一個請求失敗消息給用戶。
[0080] (5.2)其次,CSP能夠驗證用戶上傳的每一個數(shù)據(jù)塊簽名Oi是否正確,通過驗證 叫巧,/,)=如,..^,",,).雌.。)<'是否成立。若成立,說明用戶上傳的數(shù)據(jù)塊簽名是正確的,〔5口存儲 T、Ti、Oi、Ci和Ckey,并添加用戶的身份IDuser到IDm,則IDm= IDmU IDuser,其中IDm代表所有擁有 文件M的用戶身份的集合;否則,CSP返回一個請求失敗的信息給用戶。
[0081] 步驟106:生成挑戰(zhàn):當云端存在文件標簽T時,執(zhí)行文件去重;CSP生成挑戰(zhàn)信息 Chal = a, ViUei,再將該挑戰(zhàn)信息返回給用戶,其中I為[l,n]的任意子集,隨機數(shù)ViGZq;具 體過程如下:
[0082] 當CSP檢測到文件標簽T存在時,CSP根據(jù)文件M的總塊數(shù)n,從1~n中隨機生成C個 數(shù),組成I = {si,S2,…,Sc},且對于和Sj是相互獨立的;對于妍e /,隨機生 成一個數(shù)Vi G Zq,組成挑戰(zhàn)信息Chal = {i,Vi}iei,然后CSP將Chal發(fā)送給用戶。
[0083] 步驟107:生成證據(jù):用戶收到來自CSP發(fā)送的挑戰(zhàn)信息Chal后,響應挑戰(zhàn),計算響 應證據(jù)返回給CSP。具體過程如下:
[0084] 用戶計算響應證據(jù):
'將Pv發(fā)送給CSP。
[0085] 步驟108:驗證證據(jù):CSP收到來自用戶的響應證據(jù)后,CSP驗證響應證據(jù)Pv的正確 性,從而判斷用戶和CSP是否擁有相同的文件,并將驗證結果返回給用戶,具體過程如下:
[00化]CSP驗切
是否成立。若成立,說明用戶和CSP擁有相同的文件,該文件 已存在于CSP中,用戶不需要上傳文件到CSP。用戶只需上傳 Ckey, IDuser到CSP;CSP存儲Ckey, 并且添加用戶的身份IDuser到IDm,則IDm= IDmU IDuser,其中IDm代表所有擁有文件M的用戶身 份的集合。否則,CSP返回一個請求失敗的信息給用戶。
[0087] 步驟109:文件解密:當用戶需要從CSP下載文件時,CSP首先驗證用戶身份的合法 性,并將密文Ckey和Cl返回給用戶;用戶首先利用自己的私鑰Sk解密得到每一個塊密鑰ki;然 后,再利用ki解密每一個塊密文Cl得到塊明文HH,具體過程如下:
[0088] (9.1)首先,用戶發(fā)送文件M的標簽T和自己的身份IDuser至化SP。
[0089] (9.2)CSP收到文件標簽T和用戶的身份IDuser后,驗證文件標簽T和用戶身份IDuser 是否正確,如果正確,將其對應的Ckey和Ci(l《i《n)傳送給用戶;否則返回一個請求失敗信 息給用戶。
[0090] (9.3)用戶收到Ckey和Cia《i《n)后,首先驗證Tl = Hl(Cl||C2||…MCn)是否正確, 如果不正確,說明CSP返回給了用戶不正確的密文文件;否則,用戶先用自己的私鑰Sk,解密 每一個塊密鑰:ki| Iksl I'HIkn = Dec(SkiCkey)D然后,用戶解密每一個數(shù)據(jù)塊:Hii = DecAi, Ci)(l《i《n)。
[0091] 綜上所述,本發(fā)明利用盲簽名的方法構造了一個更加安全高效的密鑰生成協(xié)議, 通過引入一個密鑰服務器,實現(xiàn)了對收斂密鑰的二次加密,使得數(shù)據(jù)加密更加安全,有效地 預防了暴力字典攻擊。同時,在此基礎上提出了一個新的基于簽名的擁有權證明方法,用戶 和云服務器之間必須執(zhí)行一個挑戰(zhàn)/響應協(xié)議,才能確定用戶是否擁有和云端相同的文件, 它有效地預防了攻擊者通過單一的哈希值來獲取整個文件,并且本發(fā)明的方案能夠同時實 現(xiàn)對密文數(shù)據(jù)的文件級和塊級去重。
【主權項】
1. 一種云存儲中密文數(shù)據(jù)的客戶端安全去重方法,其特征在于,針對加密數(shù)據(jù)的客戶 端去重模型,去重過程設及到的實體如下:用戶Users,云服務提供商CSP和密鑰服務器KS, 具體步驟如下: 步驟1,密鑰生成: 用戶為每一個數(shù)據(jù)塊ΠΗ計算相對應的加密密鑰ki,l《i《n,n為數(shù)據(jù)塊的總數(shù); 步驟2,文件初始化: 用戶為每一個數(shù)據(jù)塊ΠΗ計算塊密文。,同時生成文件的標簽Τ=(Τι,Τ2),其中Τι用于數(shù) 據(jù)完整性驗證,Τ2用于塊簽名的驗證; 步驟3,數(shù)據(jù)塊初始化: 當云端不存在文件標簽Τ時,用戶為每一個數(shù)據(jù)塊ΠΗ計算塊標簽τι和塊簽名〇1,其中τι用 于塊的索引,〇1用于塊存在的證明;同時,用戶用自己的私鑰sk加密每一個塊密鑰得到密鑰 的密文Ckey; 步驟4,數(shù)據(jù)塊驗證: 當云端存在數(shù)據(jù)塊標簽τι時,執(zhí)行塊去重;CSP驗證用戶上傳的數(shù)據(jù)塊簽名〇1是否正確, 從而判斷用戶和CSP是否擁有相同的數(shù)據(jù)塊,并將驗證結果返回給用戶; 步驟5,文件存儲: 當云端不存在數(shù)據(jù)塊標簽τι時,請求用戶上傳數(shù)據(jù)塊簽名〇1、塊密文Cl和密鑰的密文 Ckey至CSP,CSP驗證塊標簽和塊密文是否來自相同文件,并且驗證塊簽名〇i的正確性;最終, CSP存儲每一個塊標簽、塊簽名、塊密文、密鑰的密文;并給用戶分配相應的權限; 步驟6,生成挑戰(zhàn): 當云端存在文件標簽T時,執(zhí)行文件去重;CSP生成挑戰(zhàn)信息chal = {i,vihg,再將該挑 戰(zhàn)信息返回給用戶,其中I為[l,n]的任意子集,隨機數(shù)VieZq,其中Zq是q階素數(shù)域; 步驟7,生成證據(jù): 用戶收到挑戰(zhàn)信息后,根據(jù)所選的塊生成響應證據(jù)Pv,并返回給CSP; 步驟8,驗證證據(jù): CSP驗證響應證據(jù)Pv的正確性,從而判斷用戶和CSP是否擁有相同的文件,并將驗證結果 返回給用戶; 步驟9,文件解密: 當用戶需要從CSP下載文件時,CSP首先驗證用戶身份的合法性,并將密鑰的密文Ckey和 塊密文Cl返回給用戶;用戶首先利用自己的私鑰sk解密得到每一個塊密鑰ki ;然后,再利用 ki解密每一個塊密文Ci得到塊明文ΠΗ。2. 根據(jù)權利要求1所述的云存儲中密文數(shù)據(jù)的客戶端安全去重方法,其特征在于:步驟 1所述密鑰生成:用戶為每一個數(shù)據(jù)塊ΠΗ計算相對應的加密密鑰ki,l《i《n,n為數(shù)據(jù)塊的總 數(shù),具體如下: (1.OKS隨機選擇一個k-bit的素數(shù)q并創(chuàng)建兩個q階的楠圓曲線方程&,&和〇階的素數(shù) 域Zq; P,Q是Gi的兩個不同的生成元,并產(chǎn)生一個線性配對e:Gi X Gi^G2 ; KS隨機選擇一個整 數(shù)xEZq作為私鑰,并計算公鑰Ppub = x'P;KS公開系統(tǒng)參數(shù){q,Gl,G2,e,P,Q,Ppub},保持x私 有; (1.2)用戶將文件Μ分成η個塊,即M = mi II m2 II…Μ mn,用戶為每一個數(shù)據(jù)塊化計算收斂 密鑰hi=h(mi),其中哈希函數(shù)h( · ):{0,l}*^Gi;然后,用戶隨機選擇reZq作為盲化因子, 再計算對hi盲化后的值ai = hi+r · P,并將ai上傳到KS; (1.3化S計算對ai加密后的值bi = ai · X,并將bi返回給用戶; (1.4)用戶計算對bi去盲化后的值di = b廣;Γ · Ppub,同時用戶驗證di的正確性:e(di,P)= e化(mi),Ppub);最后,用戶令ki = di作為每一個塊mi的加密密鑰。3. 根據(jù)權利要求1所述的云存儲中密文數(shù)據(jù)的客戶端安全去重方法,其特征在于:步驟 2所述文件初始化:用戶為每一個數(shù)據(jù)塊mi計算塊密文。,同時生成文件的標簽Τ=(Τι,Τ2), 其中Τι用于數(shù)據(jù)完整性驗證,Τ2用于塊簽名的驗證,具體如下: (2.1) 用戶使用對稱加密的方法為文件Μ的每一個塊mi(1《i《η),計算塊密文Ci = Enc 化i , nii ) , Ci ε Zq ; (2.2) 用戶計算:。=出((:1||〔2||。'||片),了2=此(1)-口,其中哈希函數(shù)化(-):2。一{0, 1}*,出(·一Zq;最后,用戶生成文件Μ的標簽:Τ=(Τι,Τ2),并上傳 Τ至CSP。4. 根據(jù)權利要求1所述的云存儲中密文數(shù)據(jù)的客戶端安全去重方法,其特征在于:步驟 3所述數(shù)據(jù)塊初始化:當云端不存在文件標簽T時,用戶為每一個數(shù)據(jù)塊mi計算塊標簽τι和塊 簽名〇1,其中τι用于塊的索弓|,〇1用于塊存在的證明;同時,用戶用自己的私鑰sk加密每一個 塊密鑰得到密鑰的密文Ckey,具體如下: (3.1) 當用戶檢測到云端文件標簽T不存在時,用戶為每一個文件塊mi計算塊標簽τι = 出(Μ) · h(mi); (3.2) 用戶計算塊簽名州=出(1)-化1+。-〇); (3.3) 用戶隨機選擇自己的私鑰sk,并對塊密鑰kl進行加密,計算密鑰的密文Ckey = Enc (sk'kil |k2|| …||kn)。5. 根據(jù)權利要求1所述的云存儲中密文數(shù)據(jù)的客戶端安全去重方法,其特征在于:步驟 4所述數(shù)據(jù)塊驗證:當云端存在數(shù)據(jù)塊標簽τι時,執(zhí)行塊去重;CSP驗證用戶上傳的數(shù)據(jù)塊簽 名〇1是否正確,從而判斷用戶和CSP是否擁有相同的數(shù)據(jù)塊,并將驗證結果返回給用戶,具 體如下: 當收到來自用戶的塊標簽τι和塊簽名〇i,CSP檢測到塊標簽τι存在則執(zhí)行塊去重;然后 CSP驗證塊簽名〇1的正確性,即CSP驗證〇1 = 〇1'是否成立,其中〇1'是CSP存儲的數(shù)據(jù)塊的簽 名;若成立,說明用戶和CSP擁有相同的數(shù)據(jù)塊,該數(shù)據(jù)塊已存在于CSP,CSP只需為該數(shù)據(jù)塊 添加用戶的身份IDuser;否則,返回一個請求失敗消息給用戶。6. 根據(jù)權利要求1所述的云存儲中密文數(shù)據(jù)的客戶端安全去重方法,其特征在于:步驟 5所述文件存儲:當云端不存在數(shù)據(jù)塊標簽τι時,請求用戶上傳數(shù)據(jù)塊簽名〇1、塊密文Cl和密 鑰的密文Ckey至CSP,CSP驗證塊標簽和塊密文是否來自相同文件,并且驗證塊簽名〇1的正確 性;最終,CSP存儲每一個塊標簽、塊簽名、塊密文、密鑰的密文;并給用戶分配相應的權限, 具體過程如下: (5.1)-旦CSP收到所有的塊密文Ci,CSP開始驗證Τι =化(Cl IIC211…11 Cn)是否成立,若 成立,說明用戶上傳的密文和標簽是一致的;否則,說明用戶上傳了與標簽不一致的密文, 返回一個請求失敗消息給用戶; (5 . 2 ) C S P驗證用戶上傳的每一個數(shù)據(jù)塊簽名0 1是否正確,通過驗證 e(巧,巧=e(r,,fp,A) 'e(谷,是否成立,若成立,說明用戶上傳的數(shù)據(jù)塊簽名是正確的,CSP存 儲Τ、Ti、〇i、Ci和Ckey,并添加用戶的身份IDuser到IDm,則IDm= IDm u IDuser,其中IDm代表所有擁 有文件Μ的用戶身份的集合;否則,CSP返回一個請求失敗的信息給用戶。7. 根據(jù)權利要求1所述的云存儲中密文數(shù)據(jù)的客戶端安全去重方法,其特征在于:步驟 6所述生成挑戰(zhàn):當云端存在文件標簽T時,執(zhí)行文件去重;CSP生成挑戰(zhàn)信息chal = { i, ViUei,再將該挑戰(zhàn)信息返回給用戶,其中I為[l,n]的任意子集,隨機數(shù)VieZq;具體如下: 當CSP檢測到文件標簽T存在時,CSP根據(jù)文件Μ的總塊數(shù)η,從1~η中隨機生成C個數(shù),組 成I = {S1,S2,· · ·,Sc},且對于Vs!.,Sj e I (i聲j),Si和Sj是相互獨立的;對于Vi e./,隨機生成一 個數(shù)Vi e Zq,組成挑戰(zhàn)信息chal = {i,Vi}iei,然后CSP將chal發(fā)送給用戶。8. 根據(jù)權利要求1所述的云存儲中密文數(shù)據(jù)的客戶端安全去重方法,其特征在于:步驟 7所述響應證據(jù)Pv的計算公式如下:9. 根據(jù)權利要求1所述的云存儲中密文數(shù)據(jù)的客戶端安全去重方法,其特征在于:步驟 8所述驗證證據(jù):CSP驗證響應證據(jù)Pv的正確性,從而判斷用戶和CSP是否擁有相同的文件, 并將驗證結果返回給用戶,具體過程如下:是否成立:若成立,說明用戶和CSP擁有相同的文件,該文件已存在 于CSP中,用戶不需要上傳文件到CSP,用戶只需上傳 Ckey、IDuser到CSP,CSP存儲Ckey,并且添 加用戶的身份IDuser到IDm,則IDm= IDm U IDuser,其中IDm代表所有擁有文件Μ的用戶身份的集 合;否則,CSP返回一個請求失敗的信息給用戶。10. 根據(jù)權利要求1所述的云存儲中密文數(shù)據(jù)的客戶端安全去重方法,其特征在于:步 驟9所述文件解密:當用戶需要從CSP下載文件時,CSP首先驗證用戶身份的合法性,并將密 文Ckey和Cl返回給用戶;用戶首先利用自己的私鑰Sk解密得到每一個塊密鑰ki;然后,再利用 ki解密每一個塊密文Ci得到塊明文ΠΗ,具體如下: (9.1 )首先,用戶發(fā)送文件Μ的標簽T和自己的身份IDuser到CSP ; (9.2) CSP收到文件標簽T和用戶的身份IDuser后,驗證文件標簽T和用戶身份IDuser是否 正確,如果正確,將其對應的密鑰的密文Ckey和塊密文Cl傳送給用戶;否則返回一個請求失 敗信息給用戶; (9.3) 用戶收到密鑰的密文Ckey和塊密文Ci后,首先驗證Tl=Hl(ClMC2M…MCn)是否正 確,如果不正確,說明CSP返回給了用戶不正確的密文文件;否則,用戶先用自己的私鑰sk, 解密每一個塊密鑰:ki ||k21 I…II kn = Dec(sk,Ckey),然后用戶解密每一個數(shù)據(jù)塊:mi = Dec 化i,Ci)。
【文檔編號】H04L9/08GK105939191SQ201610539947
【公開日】2016年9月14日
【申請日】2016年7月8日
【發(fā)明人】付安民, 宋建業(yè), 蘇铓, 朱明 , 朱一明, 丁緯佳
【申請人】南京理工大學