一種基于kp-abe的有效可驗證的公鑰可搜索加密方法
【專利摘要】本發(fā)明公開了一種基于KP-ABE的有效可驗證的公鑰可搜索加密方法,該方法包括可信權威中心、數(shù)據(jù)擁有者、云服務器、數(shù)據(jù)用戶;可信權威中心為所有云用戶生成證書;數(shù)據(jù)擁有者外包數(shù)據(jù)文件和關鍵詞給云服務器;云服務器是提供存儲服務并在收到用戶發(fā)送的搜索請求后執(zhí)行搜索操作;數(shù)據(jù)用戶生成搜索口令發(fā)送給云服務器尋找目標文件。本發(fā)明首先為數(shù)據(jù)擁有者和云服務器生成了公私鑰對,在發(fā)送密文關鍵詞和搜索口令時,首先使用云服務器的公鑰對其再加密,這樣有效地防止了外部攻擊者的離線猜測攻擊行為,提高了信息和數(shù)據(jù)的安全性,而且,復雜度降低,大大減少了用戶的運算量,效率得到了很大提高。
【專利說明】—種基于KP-ABE的有效可驗證的公鑰可搜索加密方法
【技術領域】
[0001]本發(fā)明屬于數(shù)據(jù)加密領域,尤其涉及一種基于KP-ABE的有效可驗證的公鑰可搜索加密方法。
【背景技術】
[0002]公鑰可搜索加密是一個非常具有吸引力的密碼學原語,它實現(xiàn)了基于密文的信息檢索,特別適用于云計算環(huán)境。公鑰可搜索加密方案(PEKS)使得用戶憑借關鍵詞在不泄露任何信息的情況下搜索加密數(shù)據(jù)。PEKS的概念是由Boneh等提出的,Baek等人提出了一種去除安全通道的PEKS,使得方案更加實用。在此之后,Hu等人和Zhao等人提出了可抵抗外部攻擊者離線關鍵詞猜測的新方案。簡而言之,PEKS的概念是提供一種用戶憑借關鍵詞去搜索加密數(shù)據(jù)且不向包括服務器在內(nèi)的其他方泄露任何信息的機制。隨著云計算的快速發(fā)展,使得用戶可以以低廉的價格使用云服務器的大量存儲和計算的能力。這使得PEKS變得更加流行。盡管目前現(xiàn)存的PEKS可以安全有效地完成搜索操作,然而大多數(shù)方案卻沒有對服務器返回的搜索結果進行驗證,同時也沒有對搜索用戶進行限制。在一個半誠實但可信的服務器的模型下,服務器可能只執(zhí)行部分搜索操作或者只返回部分搜索結果。針對這一問題,Zheng等人首次針對此問題提出了一個新的密碼學原語——基于屬性加密的可驗證的關鍵詞搜索方案。該方案允許數(shù)據(jù)擁有者去控制搜索操作。訪問控制策略的合法用戶可以把費時的搜索操作外包給云服務器并且可以有效地驗證服務器是否真實地執(zhí)行了搜索操作。這意味著,具備滿足數(shù)據(jù)擁有者的訪問策略的條件的用戶才可以進行搜索云服務器上的加密數(shù)據(jù)。此外,用戶還可以對服務器返回的搜索結果進行正確性和完整性的驗證。該方案運用模指數(shù), 屬性加密,布隆過濾器,數(shù)字簽名和基于屬性加密的關鍵詞搜索構造而成。然而該方案在正確性驗證的時候所做的操作和云服務器的做法相同,然而對于用戶自己來說,這需要很大的計算量。另外,該方案疏忽了離線猜測攻擊。因為關鍵詞密文、搜索口令和算法很容易被敵手獲取,這樣敵手便可執(zhí)行搜索操作,從而打破關鍵詞密文的不可區(qū)分性。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于提供一種基于KP-ABE的有效可驗證的公鑰可搜索加密方法,旨在在正確性驗證方面大大減少用戶的運算量,利用服務器的公鑰對關鍵詞密文進行再加密,防止外部攻擊者的離線猜測攻擊,提高方案的安全性。
[0004]符號說明:
[0005]F = {FJ I I {FJ I…I IFJ:加密文件的集合;
[0006]ID {FJ:文件{FJ 的地址;
[0007]IDw:包含關鍵詞w的文件的地址;
[0008]WE: W 的密文;
[0009]BF:包含所有關鍵詞的布隆過濾器;[0010]SYMEne():對稱加密算法;
[0011]ABEO:基于密鑰策略的屬性加密算法。
[0012]本發(fā)明是這樣實現(xiàn)的,一種基于KP-ABE的有效可驗證的公鑰可搜索加密方法,所述的基于KP-ABE的有效可驗證的公鑰可搜索加密方法包括可信權威中心、數(shù)據(jù)擁有者、云服務器、數(shù)據(jù)用戶;可信權威中心選取雙線性對和哈希函數(shù),為系統(tǒng)生成公參Pm和主密鑰mk ;通過運行RSA算法,為數(shù)據(jù)擁有者和云服務器生成公私鑰對;通過訪問結構中的Share (T, ac)算法,為用戶生成私鑰sk ;數(shù)據(jù)擁有者從外包的數(shù)據(jù)文件F中提取關鍵詞w ;外包F,并生成關鍵詞w密文cph并發(fā)送給云服務器;云服務器對數(shù)據(jù)擁有者發(fā)送來的數(shù)據(jù)提供存儲服務并在收到用戶發(fā)送的搜索口令tk后執(zhí)行搜索,并將搜索結果和搜索證據(jù)返回給用戶;數(shù)據(jù)用戶用私鑰sk生成搜索口令tk并發(fā)送給云服務器;在收到云服務器返回的搜索結果后,對結果的正確性和完整性進行驗證;
[0013]所述的基于KP-ABE的有效可驗證的公鑰可搜索加密方法包括六個算法,I為安全參數(shù),可信權威中心運行RSA算法為云服務器和數(shù)據(jù)擁有者生成公私鑰對:{(H1, ei),dj和{(n2, e2),d2};數(shù)據(jù)擁有者通過數(shù)字簽名來保證數(shù)據(jù)文件的完整性,用云服務器的公鑰對密文關鍵詞進行再加密來防止外部攻擊者的離線猜測攻擊,當數(shù)據(jù)擁有者用SYMemO加密算法對數(shù)據(jù)文件加密后外包給云服務器,服務器返回加密文件的地址,記為ID {FJ,這樣包含關鍵詞w的數(shù)據(jù)文件即可表 示為IDw = ID{FJ I IDiF21- | ID{Fj0
[0014]進一步,所述公鑰可搜索加密方法具體包括:
[0015]可信權威中心選取雙線性對和哈希函數(shù),為可搜索加密系統(tǒng):可信授權中心管理數(shù)據(jù)擁有者、用戶和云服務器;
[0016]數(shù)據(jù)擁有者將數(shù)據(jù)文件傳送至云服務器;
[0017]云服務器提供存儲和檢索服務;
[0018]用戶通過云服務器搜索存儲在其上的數(shù)據(jù)文件;
[0019]可信權威中心生成公參pm和主密鑰mk ;通過運行如下RSA算法:
[0020]按以下3個步驟:
[0021]i)選擇不同的大素數(shù)P和q,計算n = p*q ;
[0022]ii)選擇e與φ、η)互素,(n,e)作為公鑰;
[0023]iii)通過W = Imod爐(/?)計算山(n, d)作為私鑰;
[0024]這里P(?) = (^-1)(^-1),數(shù)n,e,d分別為模數(shù),加密指數(shù)和解密指數(shù);
[0025]按照此算法,選取不同的大素數(shù)P1和1,?2和q2,為數(shù)據(jù)擁有者和服務器生成公私鑰對{ Oi1, e),dj 和{(n2, e2),d2};
[0026]通過訪問結構中的Share (T, ac)算法,按如下步驟:
[0027]訪問樹T的每一個葉子節(jié)點都關聯(lián)著秘密ac的部分分享qv (O),對每一個葉子節(jié)點 V e Ivs (T),選取 t — Zp,計算 4, =和 Bv = gt,記 sk =(T, Av, Bv) V e Ivs(T))為用戶的私鑰。
[0028]進一步,所述的基于KP-ABE的有效可驗證的公鑰可搜索加密方法包括六個算法,I為安全參數(shù),可信權威中心運行RSA算法為云服務器和數(shù)據(jù)擁有者生成公私鑰對:{(r^eldj和{(n2,e2),d2}。數(shù)據(jù)擁有者通過數(shù)字簽名來保證數(shù)據(jù)文件的完整性,用云服務器的公鑰對密文關鍵詞進行再加密來防止外部攻擊者的離線猜測攻擊,當數(shù)據(jù)擁有者用SYMemO加密算法對數(shù)據(jù)文件加密后外包給云服務器,服務器返回加密文件的地址,記為ID {FJ,這樣包含關鍵詞w的數(shù)據(jù)文件即可表示為IDw= ID{FJ | ID {F2}...| ID{Fj0
[0029]進一步,所述的基于KP-ABE的有效可驗證的公鑰可搜索加密方法的具體方案為:
[0030]步驟一、初始化(I1):可信權威中心選擇雙線性對:e:GXG — Gt, G和Gt是階為P的循環(huán)群,P為I比特長的素元,選擇隨機預言機模型下的哈希函數(shù)H1: {0,1} * — G ;H2: {0,1} * — Zp 是單向哈希函數(shù),選擇 a, b, c — Zp, g — G, pm =(H1, H2, e, g, p, ga, gb, gc, G, GT),mk = (a, b, c)
[0031]接著選取k個獨立的哈希函數(shù)H1',...,H’ k,用來m比特的構造m比特的布隆過濾器BF發(fā)送給數(shù)據(jù)擁有者,為數(shù)據(jù)擁有者和云服務器生成公私鑰對{(r^eldj和{(n2, e2),d2};
[0032]步驟二、密鑰生成(mk,T):可信權威中心執(zhí)行Share (T, ac)算法,訪問樹T的每一個葉子節(jié)點都會得到有關秘密ac的部分分享qv(0),對每一個葉子節(jié)點V e Ivs(T),選取t — Zp,計算 Av = g'1 {>))JI和 Bv = g\ 記私鑰 sk = (T, Av, Bv) | v e Ivs (T));
[0033]步驟三、對關鍵詞和文件地址的加密:(w,atts, ID(w))數(shù)據(jù)擁有者通過可信權威中心發(fā)送的哈希函數(shù)生成布隆過濾器,BF — BFGen ((H1 ’,…,H’ k}, (W1,…,wj),對含有關鍵詞w數(shù)據(jù)文件地址IDw和布隆過濾器,SYMEnc()加密算法加密,對稱密鑰為Sk1:
[0034]BFEnc = SYM(BF), (IDw) Enc = SYM(IDw);
[0035]用戶數(shù)據(jù)擁有者對ABFEn。和(IDw)Enc進行簽名:
^ = BFbk Il sig(BFEJ = BFbic || (BFeJ1' B = (IDw)enc || sig(IDJEnc = (IDJeiic || ([IDJeJ1'
對Sk1用ABEO加密算法進行加密:C = ABE(Sk1);
[0036]在搜索結束后,屬性滿足訪問策略的合法用戶就可以解密C得到Sk1,進而解密獲取目標文件;
[0037]選擇~巧一Zp,計算=; F= (fl,f2)其中
frga(n+"'J J2=Ebn,K = g"2 ,對每一個 atj e Atts,計算 Wj = HlWt卞,用服務器
的公鑰對W加密得到t = We^ = (g^gbH^ ,這樣可記密文關鍵詞為:cph =(Atts, Ψ,ffE, W0, Wj, F,A, B, C);
[0038]步驟四、生成搜索口令(sk, w):選擇s — Zp,對每個葉子節(jié)點V e Ivs(T)計算4 = 4% K = B:,搜索口令為tok, = (gagbHAw)Y,tok2 = gcs,用服務器的公鑰對tok2進行
加密:(tokI)Enc = (ScsY2,記 tk = (tok” (tok2) Enc, T, (A,ν, B,ν) I V e Ivs (T));
[0039]步驟五、搜索(tk, cph):服務器從cph中選取屬性集S來滿足搜索口令中指定的訪問樹,如果這樣的集合S不存在,返回O ;反之,對每一個e S,計算Ev=e(Av,Wn)lc{Bv,Wi) = e{g,gr1 "" “"(V)=汾,.V e/us'(r),結合(T,Ev|att(v) e S),計算
出=e(g,gYr^m,進而=e(g,g)_服務器用自己的私鑰解密WE,(tok2)Enc得到W和tok2,如果e (W,,tolq) Eroot = e (W,tok2),返回{W,F(xiàn),A, B, C}給用戶;否則,只返回A ;
[0040]步驟六、驗證{W,F(xiàn),A,B,C}數(shù)據(jù)用戶接收到云服務器返回的搜索結果后,進行驗證操作。
[0041]進一步,所述的驗證操作的具體方法為:
[0042]步驟一、搜索關鍵詞的存在性:當數(shù)據(jù)用戶僅僅收到云服務器返回的A時,首先用數(shù)據(jù)擁有者的公鑰A進行驗證若,則通過驗證;對(:進行解密操作獲取對稱密鑰Sk1,解密A獲取布隆過濾器BF,若BF (w) = 0,意味著云服務器上不存在用戶所搜索的關鍵詞,反之,拒收返回結果;
[0043]步驟二、搜索關鍵詞的正確性:數(shù)據(jù)用戶收到{W,F(xiàn),A, B, C}時,計算WA1和/fw,如果妒/ / = f,H(w),說明正確,反之,說明是錯誤結果;
[0044]步驟三、包含關鍵詞w的數(shù)據(jù)文件地址的完整性:當數(shù)據(jù)用戶驗證了關鍵詞的正確性后,接著對B進行驗證,若(/ΑΛ;,,, =(SigdDii)^Y',則通過解密C獲取Sk1,進而獲取目標數(shù)據(jù)文件。
[0045]進一步,所述的基于KP-ABE的有效可驗證的公鑰可搜索加密方法的正確性的分析如下:
[0046]步驟一、搜索匹配正確性:
[0047]云服務器在收到數(shù)據(jù)用戶的搜索請求后,執(zhí)行搜索操作,首先用自己的私鑰對密文關鍵詞和搜索口令進行解密,用RSA算法,然后,執(zhí)行如下匹配操作:
【權利要求】
1.一種基于KP-ABE的有效可驗證的公鑰可搜索加密方法,其特征在于,所述的基于KP-ABE的有效可驗證的公鑰可搜索加密方法包括以下步驟: 數(shù)據(jù)擁有者從外包的數(shù)據(jù)文件F中提取關鍵詞w ;外包F,并生成關鍵詞w密文cph并發(fā)送給云服務器; 云服務器對數(shù)據(jù)擁有者發(fā)送來的數(shù)據(jù)提供存儲服務并在收到用戶發(fā)送的搜索口令tk后執(zhí)行搜索,并將搜索結果和搜索證據(jù)返回給用戶; 數(shù)據(jù)用戶用私鑰sk生成搜索口令tk并發(fā)送給云服務器;在收到云服務器返回的搜索結果后,對結果的正確性和完整性進行驗證。
2.如權利要求1所述的基于KP-ABE的有效可驗證的公鑰可搜索加密方法,其特征在于,所述公鑰可搜索加密方法具體包括: 可搜索加密系統(tǒng):可信授權中心管理數(shù)據(jù)擁有者、用戶和云服務器; 數(shù)據(jù)擁有者將數(shù)據(jù)文件傳送至云服務器; 云服務器提供存儲和檢索服務; 用戶通過云服務器搜索存儲在其上的數(shù)據(jù)文件; 可信權威中心選取雙線性對和哈希函數(shù),并生成公參Pm和主密鑰mk ;通過運行如下RSA算法: 按以下3個步驟: i)選擇不同的大素數(shù)P和q,計算n = p*q; ?)選擇e與<P(n)互素,(n, e)作為公鑰; iii)通過= I mod爐⑷計算d, (n, d)作為私鑰; 這里0") = (P-Db-1),數(shù)n,e,d分別為模數(shù),加密指數(shù)和解密指數(shù); 按照此算法,選取不同的大素數(shù)P1和q1;P2和q2,為數(shù)據(jù)擁有者和服務器生成公私鑰對{(n” ,dj 和{(n2, e2),d2}; 通過訪問結構中的Share(T, ac)算法,按如下步驟: 訪問樹T的每一個葉子節(jié)點都關聯(lián)著秘密ac的部分分享qv(0),對每一個葉子節(jié)點V e Ivs(T),選取 t — Zp,計算 ^ g'1 llllZ/, 0"(祝和 Bv = g^cisk = (T, Av, Bv) | v e Ivs(T))為用戶的私鑰。
3.如權利要求1所述的基于KP-ABE的有效可驗證的公鑰可搜索加密方法,其特征在于,所述的基于KP-ABE的有效可驗證的公鑰可搜索加密方法包括:初始化、密鑰生成、對關鍵詞和文件地址的加密、生成搜索口令、搜索、驗證;該方法主要應用于云計算中對大量加密數(shù)據(jù)的搜索。
4.如權利要求1所述的基于KP-ABE的有效可驗證的公鑰可搜索加密方法,其特征在于,所述的基于KP-ABE的有效可驗證的公鑰可搜索加密方法的具體方案為: 可信權威中心運行RSA算法為云服務器和數(shù)據(jù)擁有者生成公私鑰對:Kn1, ei),dj和Kn2,e2),d2};數(shù)據(jù)擁有者通過數(shù)字簽名來保證數(shù)據(jù)文件的完整性;用云服務器的公鑰對密文關鍵詞進行再加密來防止外部攻擊者的離線猜測攻擊,當數(shù)據(jù)擁有者用SYMemO加密算法對數(shù)據(jù)文件加密后外包給云服務器,服務器返回加密文件的地址,記為ID {FJ,這樣包含關鍵詞w的數(shù)據(jù)文件即可表示為IDw = ID{FJ I IDiF21- | ID {Fj ;具體包括:步驟一、初始化(I1):可信權威中心選擇雙線性對:e:GXG —是階為P的循環(huán)群,P為I比特長的素元,選擇隨機預言機模型下的哈希函數(shù)H1: {O, 1}*-G;H2: {O, I}*-Zp是單向哈希函數(shù),選擇a, b, c — Zp, g — G,pm = (H1, H2, e, g, p, ga, gb, gc, G, GT),mk — (a,b,c)接著選取k個獨立的哈希函數(shù)H1',…,H’k,用來m比特的構造m比特的布隆過濾器BF發(fā)送給數(shù)據(jù)擁有者,為數(shù)據(jù)擁有者和云服務器生成公私鑰對{(r^eldj和Kn2,e2),d2};步驟二、密鑰生成(mk, T):可信權威中心執(zhí)行Share (T, ac)算法,訪問樹T的每一個葉子節(jié)點都會得到有關秘密ac的部分分享qv (O),對每一個葉子節(jié)點V e Ivs(T),選取t —Zp,計算 A = Si!…"丨和 Bv = g\ 記私鑰 sk = (T, Av, Bv) I V e Ivs (T)); 步驟三、對關鍵詞和文件地址的加密:(w,atts,ID(W))數(shù)據(jù)擁有者通過可信權威中心發(fā)送的哈希函數(shù)生成布隆過濾器,BF — BFGen ((H1 ’,...,H,J,(W1,..., W1D,對含有關鍵詞w數(shù)據(jù)文件地址IDjP布隆過濾器,SYMEnc()加密算法加密,對稱密鑰為Sk1:
BFEnc = SYM(BF), (IDw)eiic = SYM(IDw); 用戶數(shù)據(jù)擁有者對BFeiicJP (IDw)eii。進行簽名:A = BFenc IlSi g(BFenc) = BFbw || (BFEJd' , B = (IDJEnc || sig(IDJEnc = (IDw)eiic
對Sk1用ABEO加密算法進行加密:C = ABE(Sk1); 在搜索結束后,屬性滿足訪問策略的合法用戶就可以解密C得到Sk1,進而解密獲取目標文件;選擇1'1,1'2一21),計算=; F= (f1; f2)其中IrS in+r2\f2=gbn , K=g^對每一個atjGAtts,計算廣,用服務器的公鑰對w加密得到K,這樣可記密文關鍵詞為:
cph = (Atts, W,,ffE, W0, Wj, F,A, B, C); 步驟四、生成搜索口令(sk, w):選擇s — Zp,對每個葉子節(jié)點V e Ivs⑴計算4=Α%Β:.=β;,搜索口令為ft^=(gugWi2(w))% tok2 = ges,用服務器的公鑰對tok2進行加密:(Jok2)atc = (g" Y1,記 tk = (tok” (tok2) Enc, T, (A,ν, B,ν) | ν e Ivs(T)); 步驟五、搜索(tk,cph):服務器從cph中選取屬性集S來滿足搜索口令中指定的訪問樹,如果這樣的集合S不存在,返回O ;反之,對每一個a\_ e S,計算Ev = HArJVi,)! CiBrJVi) - e(g, g)'^(0) att(v) = at rv ^.1vs(T),結合(T,Ev|att(v) e S),計算出,進而在_ =e(g -)—服務器用自己的私鑰解密(tok2)Enc得到W和tok2,如果e (W,,tolq) Eroot = e (W,tok2),返回{W,F(xiàn),A, B, C}給用戶;否則,只返回A ; 步驟六、驗證{W,F(xiàn),A,B,C}:數(shù)據(jù)用戶接收到云服務器返回的搜索結果后,進行驗證操作。
5.如權利要求1所述的基于KP-ABE的有效可驗證的公鑰可搜索加密方法,其特征在于,所述的驗證操作的具體方法為:步驟一、搜索關鍵詞的存在性:當數(shù)據(jù)用戶僅僅收到云服務器返回的A時,首先用數(shù)據(jù)擁有者的公鑰對A進行驗證 '若= (sigiBF,^ ))-',則通過驗證;對C進行解密操作獲取對稱密鑰Sk1,解密A獲取布隆過濾器BF,若BFverify (w) = O,意味著云服務器上不存在用戶所搜索的關鍵詞,反之,拒收返回結果; 步驟二、搜索關鍵詞的正確性:數(shù)據(jù)用戶收到{W,F(xiàn),A, B, C}時,計算WA1和(M>,如果W/Jl= ff{w),說明正確,反之,說明是錯誤結果; 步驟三、包含關鍵詞w的數(shù)據(jù)文件地址的完整性:當數(shù)據(jù)用戶驗證了關鍵詞的正確性后,接著對B進行驗證,若(設,V,,, = (sig(/DJlm )"',則通過解密C獲取Sk1,進而獲取目標數(shù)據(jù)文件。
6.如權利要求1所述的基于KP-ABE的有效可驗證的公鑰可搜索加密方法,其特征在于,所述的基于KP-ABE的有效可驗證的公鑰可搜索加密方法的正確性的分析如下: 步驟一、搜索匹配正確性: 云服務器在收到數(shù)據(jù)用戶的搜索請求后,執(zhí)行搜索操作。首先通過用RSA算法,用自己的私鑰對密文關鍵詞和搜索口令進行解密,然后,執(zhí)行如下匹配操作:
【文檔編號】H04L9/30GK104038349SQ201410316818
【公開日】2014年9月10日 申請日期:2014年7月3日 優(yōu)先權日:2014年7月3日
【發(fā)明者】馬華, 劉鵬亮, 王劍鋒, 聶海新 申請人:西安電子科技大學