郎曉麗,曹素珍,劉祥震,張玉磊,王 斐
(西北師范大學計算機科學與工程學院,甘肅 蘭州 730070)
云計算技術[1]作為目前發(fā)展最快的技術,已經逐步普及了云存儲服務。但是,考慮到數據的保密性問題,數據用戶首先將加密后的密文數據存儲到云服務器,當數據用戶下載某1模塊的數據時,若將全部密文數據下載之后再解密是極其費時的。基于此需求,2000年,Song等人[2]提出了可搜索加密技術。2004年,Boneh等人[3]設計出了公鑰可搜索加密方案,但是該方案通信代價較大。2005年,Boneh等人[4]設計出了基于身份的可搜索加密方案模型,并在此模型上構造了2個方案。但是,在身份密碼體制[5]中,數據用戶的密鑰完全是由私鑰生成中心PKG(Private Key Generator)生成的,雖然不存在公鑰證書[6]管理,但出現了密鑰托管問題。2003年,Al-Riyami等人[7]設計了無證書公鑰密碼體制,解決了密鑰托管問題。
2005年,Baek等人[8]首次提出了基于無證書的可搜索加密方案,但是該方案的計算效率不高。許多基于無證書的可搜索加密方案[9-11]在此后被提出。2017年,He等人[12]設計出一個基于數據屬主認證的無證書公鑰可搜索加密方案。2018年,Ma等人[13]設計了工業(yè)物聯網下基于無證書的可搜索加密方案。
基于授權的公鑰可搜索加密方案[14],授權服務器可以對云服務器返回的密文進行有效性驗證。2015年,Tang等人[15]提出了可拓展公鑰的授權可搜索加密方案。2018年,Qu等人[16]設計出等價測試的無證書公鑰加密方案,但是該方案中數據屬主與數據用戶為同一用戶。
本文給出了一個高效授權的無證書公鑰認證可搜索加密方案的形式化定義,設計了相應的安全模型,并提出了具體的方案。該方案中云服務器利用了數據屬主對密文索引的簽名,從而可以驗證數據屬主的身份;數據屬主和用戶利用云服務器的公鑰進行加密算法和陷門生成算法,可以防止云服務器的內部猜測攻擊。在加密算法中,數據屬主對關鍵詞進行簽名,能夠保證數據屬主身份的真實性。雖然加密算法效率不是很高,但是本文方案中的陷門生成算法與授權算法以及驗證算法的效率均高于比較方案的,因此本文方案的總體效率較高。


該系統(tǒng)主要包括5個實體:密鑰生成中心KGC(Key Generation Center)、數據屬主、數據用戶、云服務器和授權服務器。系統(tǒng)模型圖如圖1所示。

Figure 1 System model圖1 系統(tǒng)模型圖
(1)KGC:為數據屬主、數據用戶、云服務器和授權服務器生成部分私鑰。
(2)數據屬主:對關鍵詞進行加密生成關鍵詞密文索引C,將分享的密文S和關鍵詞密文索引C上傳到云服務器。
(3)數據用戶:對要搜索的關鍵詞Ωwj生成搜索憑證Tw,發(fā)送給云服務器進行陷門匹配驗證;對授權服務器進行授權,以驗證云服務器返回的密文有效性。
(4)云服務器:存儲數據屬主上傳的(S,C),對數據屬主身份進行驗證;對數據用戶上傳的陷門搜索憑證Tw進行搜索驗證。
(5)授權服務器:利用數據用戶的授權信息對數據用戶的身份進行驗證,其次協助數據用戶對云服務器返回的密文進行有效性檢測。
無證書密碼體制下存在2類敵手AⅠ和AⅡ[17]。本文方案的安全性主要從密文索引不可區(qū)分性和陷門不可區(qū)分性這2個方面進行考慮。
3.2.1 密文索引不可區(qū)分性
定義1具有高效授權的無證書公鑰認證可搜索加密方案中,若AⅠ與AⅡ能以不可忽略的優(yōu)勢分別贏得Game 1與Game 2,則稱該方案的密文索引不可區(qū)分是安全的。
Game1敵手AⅠ與挑戰(zhàn)者F之間的交互如下所示:
(1)Setup:給定安全參數λ,F執(zhí)行Setup算法輸出系統(tǒng)參數,這里F不知道主密鑰s。
(2)階段1:AⅠ可以適應性地進行以下詢問:
①Hash-Query:AⅠ可以對算法中的哈希詢問,并獲得相應的回答。
②Extract-Partial-Private-Key-Query:AⅠ給定身份IDi,F計算對應的部分私鑰Di,并將其發(fā)送給AⅠ。
③Set-Public-Key-Query:AⅠ給定身份IDi,F計算相應的公鑰Pki,并將其發(fā)送給AⅠ。
④Replace-Public-Key-Query:AⅠ可以替換任何用戶的公鑰。
⑤Delegate-Query:AⅠ對授權進行請求詢問時,F計算授權信息,并將其發(fā)送給AⅠ。
⑥CLC-PEKS-Query:輸入關鍵詞w,F計算對應的關鍵詞密文索引C={C1,C2,C3},并將其發(fā)送給AⅠ。
⑦Trapdoor-Query:輸入關鍵詞w,F計算對應的陷門憑證Tw={T1,T2},并將其發(fā)送給AⅠ。


(5)Guess:AⅠ輸出β′∈{0,1}作為猜測值。若b′=b,則AⅠ在Game 1獲勝。
Game2敵手AⅡ與挑戰(zhàn)者F之間的交互如下所示:
(1)Setup:給定參數λ,F執(zhí)行Setup算法輸出公開參數和主密鑰s。
(2)階段1:AⅡ可以適應性地進行Hash-Query、Extract-Partial-Private-Key-Query、 Delegate-Query、CLC-PEKS-Query和Trapdoor-Query。


(5)Guess:AⅡ輸出β′∈{0,1}作為猜測值。若b′=b,則AⅡ在Game 2中獲勝。
3.2.2 陷門不可區(qū)分性
定義2具有高效授權的無證書公鑰認證可搜索加密方案中,若敵手AⅠ與AⅡ能以不可忽略的優(yōu)勢分別贏得Game 3與Game 4,則稱該方案的陷門不可區(qū)分是安全的。
Game3敵手AⅠ與挑戰(zhàn)者F之間的交互如下所示:
(1)Setup:給定參數λ,F執(zhí)行Setup算法得到公開參數。
(2)階段1:AⅠ可以適應性地進行Hash-Query、Extract-Partial-Private-Key-Query、Set-Public-Key-Query、Replace-Public-Key-Query、Delegate-Query、CLC-PEKS-Query和Trapdoor-Query。


(5)猜測:AⅠ輸出β′∈{0,1}作為猜測值。若b′=b,則AⅠ在Game 3中獲勝。
Game4敵手AⅡ與挑戰(zhàn)者F之間的交互如下所示:
(1)Setup:給定參數λ,F執(zhí)行Setup算法輸出公開參數和主密鑰s。
(2)階段1:AⅡ可以適應性地進行Hash-Query、Extract-Partial-Private-Key-Query、 Delegate-Query、CLC-PEKS-Query和Trapdoor-Query。


(5)猜測:AⅡ輸出β′∈{0,1}作為猜測值。若b′=b,則AⅡ在Game 4中獲勝。

(2)Extract-Partial-Private-Key:KGC執(zhí)行:





(4)Set-Private-Key:云服務器輸入秘密值xCS和部分私鑰DCS,設置其私鑰為SkCS=(xCS,DCS);授權服務器輸入秘密值xDS和部分私鑰DDS,設置其私鑰SkDS=(xDS,DDS);數據屬主輸入秘密值xDO和部分私鑰DDO,設置其私鑰SkDO=(xDO,DDO);數據用戶輸入秘密值xUS和部分私鑰DUS,設置其私鑰SkUS=(xUS,DUS)。
(5)Set-Public-Key:
①云服務器計算公鑰PkCS=gxCS。
②授權服務器計算公鑰PkDS=gxDS。
③數據屬主計算公鑰PkDO=gxDO。
④數據用戶計算公鑰PkUS=gxUS。
(6)CLC-PEKS:輸入公共參數cp、數據用戶的公鑰PkUS、云服務器的公鑰PkCS、授權服務器的公鑰PkDS和明文關鍵詞w,數據屬主利用其私鑰SkDO執(zhí)行以下步驟(其中對關鍵詞wi(1≤i≤m)生成密文關鍵詞索引C):

②將關鍵詞密文索引C={C1,C2,C3}上傳至云服務器。
(7)Trapdoor:輸入公共參數cp、數據用戶的私鑰SkUS、云服務器的公鑰PkCS、明文關鍵詞Ωwj(1≤j≤t),數據用戶執(zhí)行以下步驟生成關鍵詞搜索憑證:

②將Tw=(T1,T2)發(fā)送給云服務器。
(8)Verify1:對收到的密文C和陷門信息Tw,云服務器首先利用自身秘密值xCS驗證數據屬主的身份,若等式C3·e(T2xCS,C1)=e(T′1xCS,C1)成立,其中T′1=T1/T2xCS,則計算C′0=C2/C1xCS,返回(C′0,C1)給授權服務器;否則,返回“0”。


(1)通過數據屬主計算的對稱密鑰k,從而驗證數據用戶計算的對稱密鑰k的正確性:
(2)云服務器利用自身秘密值驗證數據屬主身份,通過數據屬主發(fā)送的密文索引與系統(tǒng)公開參數進行身份驗證:
e(T′1xCS,C1)=e(H(k,w)xCSgtxCS,gr)=
e(H(k,w)xCS,gr)e(gtxCS,gr)=
e(H(k,w),grxCS)e(gtxCS,gr)=
e(H(k,w),grxCS)e(gtxCS,gr)=C3·e(T2xCS,C1)
(3)授權服務器根據數據用戶的授權信息,利用自身秘密值對數據用戶進行驗證:
(4)驗證關鍵詞的正確性:
①云服務器利用自身秘密值對數據屬主上傳的關鍵詞密文索引計算C′0:

定理1若敵手AⅠ與AⅡ在隨機預言模型下以不可忽略的優(yōu)勢分別贏得Game 1和Game 2,則挑戰(zhàn)者F就能以不可忽略的概率解決BDDH問題。
引理1若BDDH問題困難,則本文提出的方案就能抵擋AⅠ類敵手的攻擊,滿足密文不可區(qū)分性。
證明(1) 初始化:F執(zhí)行Setup算法生成公開參數cp={G1,GT,e,q,g,H,H1,H2,Ppub},其中Ppub=ga。
(2)階段1:AⅠ可以進行以下詢問:
①H-Query:F維護表LH,當F接收AⅠ對H(k,w)的詢問時,F選取H∈G1作為回答的結果,并將該結果添加到表LH。

③H2-Query:F維護初始為空的表L2,當AⅠ對關鍵詞w執(zhí)行H2詢問時,F隨機選擇h2∈G1作為回答結果。


⑥Replace-Public-Key-Query:對IDi的公鑰進行更換詢問時,F把Pki換成Pk′i,并把表LP中的元組(IDi,xi,Pki)替換成(IDi,⊥,Pk′i)。




(4)階段2:AⅠ可以進行如同階段1的多項式詢問。
(5)猜測:AⅠ輸出β′∈{0,1}作為猜測值。
□
引理2若BDDH問題困難,則本文提出的方案就能抵擋AⅡ類敵手的攻擊,滿足密文不可區(qū)分性。
證明(1)初始化:F運行Setup算法,生成系統(tǒng)公開參數cp={G1,GT,e,q,g,H,H1,H2,Ppub},其中Ppub=gs。
(2)階段1:AⅡ可以進行以下詢問:
①H-Query:F維護初始為空的表LH,當F收到AⅡ對H(k,w)的詢問時,F選取H∈G1作為回答結果,并將該結果添加到表LH。

③H2-Query:F維護初始為空的表L2,當AⅡ對關鍵詞w執(zhí)行H2詢問時,F隨機選擇h2∈G1作為回答結果。





(4)階段2:AⅡ可以進行如同階段1的多項式詢問。
(5)猜測:AⅡ輸出β′∈{0,1}作為猜測值。
□
定理2若敵手AⅠ與AⅡ在隨機預言模型下以不可忽略的優(yōu)勢分別贏得Game 3和Game 4,則挑戰(zhàn)者F就能以不可忽略的概率解決BDDH問題。
引理3若BDDH問題困難,則本文提出的方案就能抵擋AⅠ類敵手的攻擊,滿足陷門不可區(qū)分性。
證明(1)初始化:F運行Setup算法,生成系統(tǒng)公開參數cp={G1,GT,e,q,g,H,H1,H2,Ppub},其中Ppub=ga。
(2)階段1:AⅠ可以進行以下詢問:
①H-Query:F維護初始為空的表LH,當F接收AⅠ對H(k,w)的詢問時,F選取H∈G1作為回答結果,并將該結果添加到表LH。

③H2-Query:F維護初始為空的表L2,當AⅠ對關鍵詞w執(zhí)行H2詢問時,F隨機選擇h2∈G1作為回答結果。


⑥Replace-Public-Key-Query:對IDi的公鑰進行替代詢問時,F將Pki替換成Pk′i,同時將表LP中的元組(IDi,xi,Pki)替換成(IDi,⊥,Pk′i)。




(4)階段2:AⅠ可以進行如同階段1的多項式詢問。

□
引理4若BDDH問題困難,則本文提出的方案就能抵擋AⅡ類敵手的攻擊,滿足陷門不可區(qū)分性。
證明(1)初始化:F運行Setup算法,生成系統(tǒng)公開參數cp={G1,GT,e,q,g,H,H1,H2,Ppub},其中Ppub=gs。
(2)階段1:AⅡ可以進行以下詢問:
①H-Query:F維護初始為空的表LH,當F接收AⅡ對H(k,w)的詢問時,F隨機選擇H∈G1作為結果,并將該結果添加到表LH。

③H2-Query:F維護初始為空的表L2,當AⅡ對關鍵詞w執(zhí)行H2詢問時,F隨機選擇h2∈G1作為該詢問的回答結果值。





(4)階段2:AⅡ可以進行如同階段1的多項式詢問。

□
首先對本文方案與文獻[12,15,17]的方案進行功能對比,結果如表1所示。與文獻[12]的方案相比,本文方案在滿足數據用戶對授權服務器進行授權以驗證密文數據的有效性時,授權服務器通過授權信息可以驗證數據用戶身份的真實性的情況下,同時支持密文索引和陷門搜索憑證在公開信道中傳輸。與文獻[15]的方案相比,本文方案滿足云服務器可以驗證數據屬主的身份,授權服務器驗證數據用戶身份的真實性,同時支持密文索引與陷門搜索憑證在公開信道中傳輸。相較于文獻[17]的方案,本文方案支持云服務器對數據屬主的身份驗證。

Table 1 Comparison of functions表1 功能比較
通過數值理論分析,將本文方案與文獻[15,17]的方案在加密時間、陷門生成時間、測試階段進行比較,結果如表2所示。

Table 2 Comparison of computational of efficiency表2 計算效率比較
表2中,P為雙線性對運算,E為指數運算,M為點乘運算。本文方案與文獻[15,17]的方案相比,在加密算法中,文獻[15,17]的方案計算效率高于本文方案的,但是本文方案數據屬主需要對密文索引進行簽名,可以防止數據屬主的抵賴行為;在陷門生成算法中,本文方案在滿足陷門搜索憑證在公開信道中傳輸的同時計算效率較高;在測試1算法中,本文方案在滿足云服務器可以對數據屬主身份驗證的同時計算效率較高;在測試2算法中,本文方案在滿足授權服務器對數據用戶身份真實性驗證的同時計算效率較高。
利用雙線性對包PBC(Pairing-Based Cryptography library)對本文所提方案在加密算法和陷門生成算法與文獻[15,17]的方案進行實驗驗證。加密算法中取關鍵詞個數分別為1,50,100,300,500,700,900,1000進行加密,仿真結果如圖2所示;陷門算法中,取關鍵詞個數為1,5,10,20,40,60,80,100進行陷門搜索憑證生成,仿真結果如圖3所示。
在加密算法中,本文方案的計算效率不高,但是數據屬主需要對密文索引進行簽名,可以讓云服務器驗證數據屬主的身份,從而保證數據屬主身份的真實性。在陷門生成算法中,本文方案在滿足陷門不可區(qū)分性的同時,計算效率高于文獻[15,17]的方案。

Figure 2 Experimental results of encryption algorithms圖2 加密算法實驗結果

Figure 3 Experimental results of trapdoor generation algorithm圖3 陷門生成算法實驗結果
本文提出了具有高效授權的無證書公鑰認證可搜索加密方案,該方案中數據屬主利用自身私鑰對上傳的關鍵詞進行簽名,將簽名與關鍵詞密文索引上傳到云服務器,云服務器利用數據屬主的簽名可以驗證數據屬主的身份;數據用戶對授權服務器授權,授權服務器利用數據用戶的授權信息驗證數據用戶身份真實性的同時對密文執(zhí)行有效驗證。數據屬主與數據用戶利用云服務器的公鑰生成密文索引和陷門搜索憑證,可以保證密文索引和陷門搜索憑證在公開信道中的傳輸安全。數據屬主采用對稱密鑰對關鍵詞加密,合法的數據用戶在生成搜索憑證時,利用自身私鑰也可以計算出相同的對稱密鑰,因此,數據用戶可以對文件進行解密。由于本文方案的加密算法中數據屬主需對上傳的關鍵詞進行簽名,增加了加密算法的計算開銷,但是,本文方案中的陷門算法以及測試算法比文獻[15,16]方案的高效,同時本文方案還可以驗證數據屬主的身份。因此,下一步的研究重點是在滿足各種功能的同時,提高加密算法的計算效率。