牛淑芬,劉文科,陳俐霞,杜小妮
(1.西北師范大學(xué) 計算機(jī)科學(xué)與工程學(xué)院,蘭州 730070;2.西北師范大學(xué) 數(shù)學(xué)與統(tǒng)計學(xué)院,蘭州 730070)
電子病歷(Electronic Medical Record,EMR)是保存在計算機(jī)中的患者醫(yī)療記錄,其有助于醫(yī)生對患者進(jìn)行正確診斷并制定合理的治療方案[1]。電子病歷信息不是靜態(tài)孤立的,而是動態(tài)和相互關(guān)聯(lián)的。相較傳統(tǒng)的紙質(zhì)病歷,電子病歷具有更強(qiáng)的動態(tài)性與關(guān)聯(lián)性,新補(bǔ)充信息會與原有全部信息建立必要的聯(lián)系,電子病歷結(jié)構(gòu)也不斷保持更新。近年來,隨著云計算技術(shù)不斷發(fā)展,電子病歷得到更廣泛的應(yīng)用并趨于完善,越來越多的醫(yī)療機(jī)構(gòu)與患者使用電子病歷,并將數(shù)據(jù)上傳到云端保存以方便使用?;谠频拇鎯ο到y(tǒng)比傳統(tǒng)存儲系統(tǒng)具有更多優(yōu)勢,可使患者更快捷地存儲和維護(hù)數(shù)據(jù),享受云計算帶來的高品質(zhì)數(shù)據(jù)存儲服務(wù)。值得注意的是,由于云服務(wù)器可能被惡意破壞,云計算會造成患者隱私信息泄露等問題。
為確?;颊唠[私信息的安全性和保密性,電子病歷在上傳云端之前應(yīng)進(jìn)行加密。面對數(shù)量龐大的電子病歷,如何準(zhǔn)確搜索加密數(shù)據(jù)成為難題。有研究人員提出下載所有加密數(shù)據(jù),在解密密文后再進(jìn)行檢索。該方法計算開銷較大且需要大存儲量設(shè)備,對于大型數(shù)據(jù)庫而言,其計算效率較低。近年來興起一種新型可搜索加密技術(shù),其在完成密文檢索的同時可有效保證數(shù)據(jù)的隱私性。文獻(xiàn)[2]提出一種代理重加密方案對外包數(shù)據(jù)進(jìn)行訪問控制,實(shí)現(xiàn)了云端密文數(shù)據(jù)共享。當(dāng)數(shù)據(jù)擁有者Alice 與Bob進(jìn)行數(shù)據(jù)共享時,Alice 用自身解密密鑰和Bob 的加密密鑰生成重加密密鑰并發(fā)送給云服務(wù)器,云服務(wù)器用重加密密鑰對密文進(jìn)行重加密并保存在云端,此時Bob 可下載密文,并用自身私鑰進(jìn)行解密得到原始明文,從而實(shí)現(xiàn)數(shù)據(jù)共享[3]。
為滿足數(shù)據(jù)用戶訪問患者電子病歷的需求,本文提出一種基于代理重加密的電子病歷數(shù)據(jù)共享方案。利用可搜索加密技術(shù)進(jìn)行關(guān)鍵字搜索,通過代理重加密技術(shù)實(shí)現(xiàn)數(shù)據(jù)用戶對患者電子病歷的數(shù)據(jù)共享,并分別從關(guān)鍵字隱私和消息隱私兩方面證明數(shù)據(jù)用戶使用數(shù)據(jù)的安全性。
為實(shí)現(xiàn)對密文的直接搜索,文獻(xiàn)[4]提出基于流密碼的對稱搜索加密方案。但基于對稱密鑰的可搜索加密方案的密鑰分發(fā)困難,從而造成其應(yīng)用場景受限。為解決該問題,文獻(xiàn)[5]提出一種帶關(guān)鍵字的公鑰可搜索加密方案,并證明其在隨機(jī)預(yù)言機(jī)模型下具有安全性,但其密鑰傳輸需要安全通道。文獻(xiàn)[6]提出不需要安全通道的SCF-PEKS 模型,解決了文獻(xiàn)[5]中因使用安全通道造成原始可搜索加密方案效率低下的問題。文獻(xiàn)[7]提出基于模糊關(guān)鍵字搜索的公鑰加密概念。服務(wù)器對所有密文進(jìn)行模糊關(guān)鍵字搜索后,返回結(jié)果給接收方,接收方對結(jié)果執(zhí)行更精確的關(guān)鍵字搜索??伤阉骷用芡ㄟ^給定關(guān)鍵字提供查詢加密數(shù)據(jù)的能力,將其應(yīng)用于電子病歷中可保護(hù)患者的身份信息、通信信息和既往病史等隱私信息。文獻(xiàn)[8]提出一種高效、安全的細(xì)粒度訪問控制方案,可授權(quán)用戶訪問云存儲系統(tǒng)中的電子病歷。文獻(xiàn)[9]設(shè)計了一種云計算中基于屬性的可搜索加密電子病歷系統(tǒng),使多用戶環(huán)境下密鑰管理難度降低,并實(shí)現(xiàn)了數(shù)據(jù)擁有者對電子病歷的細(xì)粒度訪問控制。文獻(xiàn)[10]提出用于移動醫(yī)療系統(tǒng)的無證書可搜索公鑰加密方案,采用無證書公鑰密碼體制解決了密鑰托管問題。用戶可將關(guān)鍵字及明文進(jìn)行加密,并將密文上傳到云服務(wù)器。文獻(xiàn)[11]提出一種基于層次比較的加密方案,在基于云的電子病歷系統(tǒng)中利用代理重加密技術(shù)實(shí)現(xiàn)了動態(tài)訪問控制,并設(shè)計出動態(tài)策略更新方案。用戶在檢索數(shù)據(jù)時首先提交關(guān)鍵字限門,云服務(wù)器在搜索關(guān)鍵字后返回密文給用戶。然而由于只有患者知道密文解密密鑰,因此在患者將電子病歷用自身公鑰加密并將密文上傳到云服務(wù)器,同時授權(quán)數(shù)據(jù)用戶查看電子病歷時,數(shù)據(jù)用戶不知患者的私鑰,此時共享數(shù)據(jù)成為難題[12]。
為解決上述問題,文獻(xiàn)[13]提出密碼學(xué)原語帶關(guān)鍵字搜索的代理重加密(Proxy Re-Encryption with Keyword Search,PRES)的概念,并設(shè)計了雙向PRES 方案,在隨機(jī)預(yù)言機(jī)模型中驗(yàn)證其具有安全性。文獻(xiàn)[14]提出指定檢驗(yàn)者的具有關(guān)鍵字搜索性質(zhì)的代理重加密的概念和安全模型,在標(biāo)準(zhǔn)模型下驗(yàn)證其具有安全性。文獻(xiàn)[15]提出一種帶關(guān)鍵字搜索的限制性代理重加密的模型,在改進(jìn)雙線性Diffie-Hellman(modified Bilinear Diffie-Hellman,mBDH)假設(shè)和隨機(jī)預(yù)言機(jī)模型的q 決策雙線性Diffie-Hellman 逆轉(zhuǎn)(q-Decisional Bilinear Diffie-Hellman Inversion,q-DBDHI)假設(shè)下證明其具有安全性。
針對目前只有醫(yī)生和患者中的一方才能對加密的電子病歷進(jìn)行解密的現(xiàn)狀,本文以安全存儲、共享電子病歷數(shù)據(jù)為目標(biāo),利用可搜索加密和代理重加密技術(shù)提出一種基于代理重加密的電子病歷數(shù)據(jù)共享方案。醫(yī)生將患者的電子病歷加密后上傳到云服務(wù)器,患者利用可搜索加密技術(shù)對電子病歷進(jìn)行搜索與解密。云服務(wù)器對上傳的電子病歷密文進(jìn)行代理重加密后,經(jīng)患者授權(quán)的數(shù)據(jù)用戶也可解密電子病歷。
令G1和G2是2 個階為素數(shù)q的循環(huán)乘法群,其中g(shù)為G1的一個生成元,定義一個雙線性映射e:G1×G1→G2滿足如下性質(zhì):
1)雙線性:對于任意a,b?,e(ga,gb)=e(g,g)ab成立。
2)非退化性:存在e(g,g)≠1。e(u,v)。
3)可計算性:對任意u,v?G1,存在有效算法計算
本文提出相關(guān)困難性假設(shè)如下:
1)mBDH 問 題[16]:對于任 意α,β,γ?,給 定g,gα,gβ,gγ?G1,mBDH 問題即計算
2)mBDH 假設(shè)[16]:任何概率多項(xiàng)式時間(PPT)算法均不能以不可忽視的優(yōu)勢解決mBDH 問題。
3)q-DBDHI 問 題[17]:對于任 意x?,給定?G1,T?G2,q-DBDHI 問題即判斷是否成立。
4)q-DBDHI 假設(shè)[17]:任何PPT 算法均不能以不可忽視的優(yōu)勢解決q-DBDHI 問題。
本文提出的電子病歷系統(tǒng)模型結(jié)構(gòu)如圖1 所示,指定電子病歷為m,其對應(yīng)的關(guān)鍵字為w。該系統(tǒng)包含患者、醫(yī)生、數(shù)據(jù)用戶、醫(yī)院系統(tǒng)和云服務(wù)器5 個實(shí)體。
圖1 電子病歷系統(tǒng)模型結(jié)構(gòu)Fig.1 Structure of electronic medical record system model
5 個實(shí)體具體說明如下:
1)患者?;颊咔巴t(yī)院就診時,醫(yī)院為其生成診號β,患者就診時將診號交給醫(yī)生?;颊呦胍榭床v時,可通過生成搜索陷門Tw獲取電子病歷密文C。
2)醫(yī)生。醫(yī)生為患者提供醫(yī)療服務(wù)。在患者診斷結(jié)束后,醫(yī)生將診斷結(jié)果記錄在電子病歷m中,同時生成關(guān)鍵字索引w,并將電子病歷m存入醫(yī)院系統(tǒng)。然后醫(yī)生使用患者的公鑰對m和w進(jìn)行加密后將密文Cm和Cw上傳至云服務(wù)器進(jìn)行存儲。
3)數(shù)據(jù)用戶。本文數(shù)據(jù)用戶指需要使用某患者電子病歷的用戶。例如,當(dāng)患者病情復(fù)雜時,需要來自不同醫(yī)院的多位專家(數(shù)據(jù)用戶)進(jìn)行會診,此時只需上傳患者的私鑰,云服務(wù)器使用生成的代理重加密密鑰rkP→R對密文C重加密生成密文。經(jīng)患者授權(quán)后,云服務(wù)器返回密文給數(shù)據(jù)用戶,數(shù)據(jù)用戶可使用自己的私鑰進(jìn)行解密。
4)醫(yī)院系統(tǒng)。醫(yī)院系統(tǒng)負(fù)責(zé)為患者生成診號β,并計算β的哈希值μ=H1(β)發(fā)送至云服務(wù)器。同時,醫(yī)院系統(tǒng)也負(fù)責(zé)存儲由醫(yī)生發(fā)送的電子病歷m。
5)云服務(wù)器。云服務(wù)器具有電子病歷存儲與搜索功能。云服務(wù)器先存儲由醫(yī)院系統(tǒng)所發(fā)送患者診號的哈希值μ,并在醫(yī)生上傳患者電子病歷m前對患者身份進(jìn)行驗(yàn)證,驗(yàn)證通過后,云服務(wù)器接收并存儲患者的電子病歷密文C,并將其與患者診號的哈希值μ綁定。云服務(wù)器在收到患者的搜索陷門Tw后,返回電子病歷密文C給患者。數(shù)據(jù)用戶想獲取某患者電子病歷時,可請求該患者和云服務(wù)器進(jìn)行交互,云服務(wù)器生成代理重加密密鑰后對電子病歷密文C進(jìn)行重加密,生成電子病歷重加密密文Cm′ 并發(fā)送給數(shù)據(jù)用戶。
帶關(guān)鍵字搜索的代理重加密方案由以下9 個概率多項(xiàng)式算法組成:
1)公共參數(shù)生成算法Setup(1k)。輸入安全參數(shù)1k,初始化算法并輸出公共參數(shù)PP。
2)密鑰生成算法KeyGen(PP)。輸入公共參數(shù)PP,密鑰生成算法輸出公鑰pk 和私鑰sk。
3)加密算法Enc(PP,pkP,w,m)。輸入公鑰pkP、關(guān)鍵字w和消息m,加密算法為醫(yī)生D 輸出原始密文C。
4)陷門生成算法Trapdoor(PP,w′,skP)。給定患者P 的私鑰skP和關(guān)鍵字w′,輸出限門
5)測試算法Test(PP,C,Tw′)。給定密文C和限門,當(dāng)w′=w時,輸出1;否則輸出0。
6)患者解密算法Dec1(PP,skP,C)。給定患者P的私鑰skP和密文C,輸出消息m?M或錯誤符號⊥。
7)重加密密鑰生成算法Re KeyGen(PP,skP,skR)。給定患者P 的私鑰skP和數(shù)據(jù)用戶R 的私鑰skR,輸出重加密密鑰rkP→R。該過程由患者P、數(shù)據(jù)用戶R 和云服務(wù)器共同執(zhí)行。
8)重加密算法ReEnc(PP,skP→R,C)。給定患者P到數(shù)據(jù)用戶R 的重加密密鑰rkP→R和原始密文C,將密文C轉(zhuǎn)換為數(shù)據(jù)用戶R 的密文。
9)數(shù)據(jù)用戶解密算法Dec2(PP,skR,Cm′)。給定數(shù)據(jù)用戶R 的私鑰skR和密文Cm′,輸出消息m?M或錯誤符號⊥。
本文中安全性包括關(guān)鍵字隱私和消息隱私。
本文采用文獻(xiàn)[18]中的假設(shè)來定義關(guān)鍵字隱私,即靜態(tài)損壞。在該安全定義中,敵手必須在計算開始前確定損壞的云服務(wù)器,不允許出現(xiàn)自適應(yīng)選擇損壞服務(wù)器和未損壞服務(wù)器。
游戲1(關(guān)鍵字隱私)在本文安全定義下,敵手可獲得除了兩個指定關(guān)鍵字相關(guān)的陷門之外所有陷門,但其不能判斷哪個關(guān)鍵字對應(yīng)于給定的密文,從而保證只有擁有陷門的人才能進(jìn)行測試。在后續(xù)選擇關(guān)鍵字明文攻擊下的不可區(qū)分性(Indistinguishability under Chosen-Plaintext Attack for Keyword,IND-CPA-K)游戲(游戲1)中,若無多項(xiàng)式有界敵手A 對挑戰(zhàn)者具有不可忽略的優(yōu)勢,則稱本文方案具有關(guān)鍵字隱私。
1)詢問階段1。敵手A 進(jìn)行如下詢問:
(1)未損壞密鑰詢問Opk。從KeyGen(PP)算法獲取一個新的密鑰對(pk,sk),返回pk 給敵手。設(shè)Lu為誠實(shí)用戶的集合。
(2)損壞密鑰詢問Osk。從KeyGen(PP)算法獲取一個新的密鑰對(pk,sk),返回(pk,sk)給敵手。設(shè)Lc為不誠實(shí)用戶的集合。
(3)陷門生成詢問Otg。敵手A 輸入(pk,w),其中pk 來自O(shè)pk或者Osk,w?{0,1}*是密鑰空間的任意關(guān)鍵字,返回陷門Tw=Trapdoor(sk,w),其中sk 是對應(yīng)pk 的私鑰。
(4)重加密密鑰詢問Ork。敵手輸入(pkP,pkD),其中pkP和pkD來自O(shè)pk或者Osk,返回重加密密鑰rkP→D=ReKeyGen(skP,skD),其中skP和skD分別為pkP和pkD對應(yīng)的私鑰。本文中要求pkP和pkD都損壞或者都未損壞,因此,不允許在損壞的密鑰和未損壞的密鑰之間生成重加密密鑰。
2)挑戰(zhàn)。階段1 完成后,敵手向挑戰(zhàn)者發(fā)送來自關(guān)鍵字空間相同長度的w0和w1,來自消息空間的m和公鑰pkD,其中pkD想要被挑戰(zhàn)。唯一的限制是敵手不能提前詢問陷門Tw0和Tw1,且pkD只能來自Lu。挑戰(zhàn)者選隨機(jī)數(shù)b?{0,1},計算挑戰(zhàn)密文Cb′=ReEnc(PP,ReKeyGen(skP,skD),Enc(pkP,wb,m))并并發(fā)送給敵手。
3)詢問階段2。該過程與詢問階段1 相同,但不能詢問挑戰(zhàn)密文,具體如下:
(1)未損壞密鑰詢問Opk。該過程與詢問階段1相同。
(2)損壞密鑰詢問Osk。該過程與詢問階段1相同。
(3)陷門生成詢問Otg。敵手可繼續(xù)對任意關(guān)鍵字w執(zhí)行陷門生成詢問,其中w≠w0且w≠w1。
4)猜測。最終敵手A輸出猜測b'?{0,1},若b'=b,則敵手贏得游戲。
本文定義游戲的優(yōu)勢為:
對于任何多項(xiàng)式時間敵手A,如果AdvA,w(k)是可忽略的,則稱電子病歷下基于代理重加密的數(shù)據(jù)共享方案在抵抗選擇關(guān)鍵字明文攻擊下是語義安全的。
游戲2(消息隱私)在本文安全定義下,敵手可以獲得所有陷門,但其不能判斷哪個消息對應(yīng)于給定的密文,從而保證只有擁有私鑰的人才能對消息進(jìn)行解密。在后續(xù)選擇消息明文攻擊下的不可區(qū)分性(Indistinguishability under Chosen-Plaintext Attack for Message,IND-CPA-M)游戲(游戲2)中,若無多項(xiàng)式有界對手A 對挑戰(zhàn)者具有不可忽略的優(yōu)勢,則稱本文方案具有消息隱私。
1)詢問階段1。該過程與關(guān)鍵字隱私的安全模型相同。
2)挑戰(zhàn)。階段1完成后,敵手向挑戰(zhàn)者發(fā)送來自消息空間相同長度的m0和m1,以及來自關(guān)鍵字空間的w和公鑰pkD,其中pkD想要被挑戰(zhàn)。唯一的限制是pkD只能來自Lu。挑戰(zhàn)者選擇隨機(jī)數(shù)b?{0,1},計算挑戰(zhàn)密文Cb′=Re Enc(PP,ReKeyGen(skP,skD),Enc(pkP,w,mb)并發(fā)送給敵手。
3)詢問階段2。該過程與詢問階段1 相同,但是不能詢問挑戰(zhàn)密文。
(1)未損壞密鑰詢問Opk。該過程與詢問階段1相同。
(2)損壞密鑰詢問Osk。該過程與詢問階段1相同。
(3)陷門生成詢問Otg。敵手可繼續(xù)對任意關(guān)鍵字w進(jìn)行陷門詢問。
(4)重加密密鑰詢問Ork。該過程與詢問階段1相同。
4)猜測。最終敵手A輸出猜測b'?{0,1},若b'=b,則敵手贏得游戲。
本文定義游戲的優(yōu)勢為:
對于任何多項(xiàng)式時間敵手A,如果AdvA,w(k)是可忽略的,則稱電子病歷下基于代理重加密的數(shù)據(jù)共享方案在抵抗選擇消息明文攻擊下是語義安全的。
本文定義患者為P,醫(yī)生為D,數(shù)據(jù)用戶為R。本文方案分為算法初始化、數(shù)據(jù)處理、數(shù)據(jù)搜索和數(shù)據(jù)共享4 個階段。為讓除患者以外的數(shù)據(jù)用戶共享電子病歷數(shù)據(jù),本方案在階段4 中分別給出患者解密電子病歷和數(shù)據(jù)用戶解密電子病歷兩種情況。
1)階段1:算法初始化
在該階段,系統(tǒng)運(yùn)行參數(shù)生成算法生成公共參數(shù)PP,系統(tǒng)運(yùn)行密鑰生成算法生成醫(yī)生密鑰、患者的密鑰和數(shù)據(jù)用戶密鑰。當(dāng)患者在醫(yī)院就診時,醫(yī)院隨機(jī)選擇β?{0,1}*,將β安全地發(fā)送給患者,并為該患者指定一名醫(yī)生[19],計算μ=H1(β)發(fā)送到云服務(wù)器。
(1)Setup(1k)。系統(tǒng)輸入安全參數(shù)1k,輸出雙線性對e:G1×G1→G2,其中G1和G2是階數(shù)為素數(shù)q的乘法循環(huán)群,然后選擇隨機(jī)生成元g?G1,計算Z=e(g,g)。定 義4 個哈希函數(shù):H0:{0,1}*→G1,H1:{0,1}*→G1,H2:G2→{0,1}lbq,H3:G2→{0,1}*。設(shè)置公共參數(shù)PP=(g,Z,e,q,G1,G2,H0,H1,H2,H3)。
(2)KeyGen(PP)?;颊逷 隨機(jī)選擇p?作為其私鑰skP,計算公鑰pkP=gp。醫(yī)生D 隨機(jī)選擇d?作為其私鑰,計算公鑰pkD=gd。數(shù)據(jù)用戶R隨機(jī)選擇r?作為其私鑰,計算公鑰pkR=gr。
2)階段2:數(shù)據(jù)加密
患者在就診時向醫(yī)生出示β,作為醫(yī)生為其生成電子病歷的授權(quán)。醫(yī)生使用β為患者生成電子病歷并上傳到云服務(wù)器,具體步驟為:醫(yī)生為患者診斷后生成電子病歷m和關(guān)鍵字w,上傳電子病歷m至醫(yī)院系統(tǒng),然后運(yùn)行加密算法對數(shù)據(jù)和關(guān)鍵字進(jìn)行加密,生成電子病歷m的密文Cm和關(guān)鍵字w的密文Cw發(fā)送給服務(wù)器。
3)階段3:數(shù)據(jù)搜索
為搜索到加密后電子病歷的密文,患者需采用陷門生成算法計算關(guān)鍵字w′的搜索陷門Tw′并發(fā)送到云服務(wù)器。云服務(wù)器接收到搜索陷門后,調(diào)用測試算法檢查搜索陷門中w′對應(yīng)的密文。若密文對應(yīng)的w與搜索陷門中的w′相等,則云服務(wù)器發(fā)送電子病歷密文C給患者。
若w′=w,則等式成立,測試通過。
4)階段4:數(shù)據(jù)共享
患者在收到電子病歷密文C后,運(yùn)行解密算法恢復(fù)得到子病歷m。
數(shù)據(jù)用戶若想獲取某患者的電子病歷,需請求患者和云服務(wù)器與其進(jìn)行交互,生成代理重加密密鑰rkP→R。
由于患者使用數(shù)據(jù)時與數(shù)據(jù)用戶使用數(shù)據(jù)類似,因此本文僅證明數(shù)據(jù)用戶使用數(shù)據(jù)時的安全性。
定理1假設(shè)mBDH 問題是困難的,那么本文方案為語義安全的,可抵抗隨機(jī)預(yù)言機(jī)模型中關(guān)鍵字的選擇明文攻擊。
證明5假設(shè)存在敵手A 以優(yōu)勢ε(k)攻破本文方案中的關(guān)鍵字隱私,則可構(gòu)造算法B 解決mBDH問題。其中,ε(k)是安全參數(shù)k的一個可忽略函數(shù)。
2)挑戰(zhàn)。當(dāng)詢問階段結(jié)束時,A 生成一對關(guān)鍵字w0和w1,消息m和希望挑戰(zhàn)的公鑰pki,B 生成挑戰(zhàn)密文如下:
(1)若公鑰pki屬于LC,則B 退出。
(2)B 進(jìn)行兩 次H1詢問獲 取h0,h1?G1使H1(w0)=h0和H1(w1)=h1。若c0=1 和c1=1 都成立,則B 報告失敗。
(3)c0和c1中至少有一個為0,B 隨機(jī)選擇b?{0,1}使cb=0。
根據(jù)該定義,Cb′ 為所需關(guān)鍵字wb的有效挑戰(zhàn)密文。
3)詢問階段2。該過程與詢問階段1 相同,但是不能詢問挑戰(zhàn)密文。
(1)未損壞密鑰詢問Opk。該過程與詢問階段1相同。
(2)損壞密鑰詢問Osk。該過程與詢問階段1相同。
(3)陷門生成詢問Otg。敵手A 可繼續(xù)對關(guān)鍵字wi進(jìn)行陷門詢問,此處限制wi≠w0且wi≠w1。B 的回應(yīng)與詢問階段1 中相同。
(4)重加密密鑰詢問Ork。該過程與詢問階段1相同。
4)猜測。A 輸出猜測b′?{0,1},猜測Cb′ 是對w0的加密還是對w1的加密。B 從H2表中選擇隨機(jī)對(t′,V),輸出作為對的猜測,其中,ab在H1表中,用于挑戰(zhàn)階段。
引理1若無多項(xiàng)式時間算法在求解簡化的q-DBDHI 問題上具有不可忽略的優(yōu)勢,則簡化的q-DBDHI 問題是難以解決的。
定理2假設(shè)q-DBDHI 問題是困難的,則本文方案是語義安全的,可抵抗隨機(jī)預(yù)言機(jī)模型中關(guān)鍵字的選擇明文攻擊。
這部分證明的部分過程與定理1 中相同,以下只進(jìn)行簡單證明,并說明q-DBDHI 假設(shè)是如何應(yīng)用于本文方案。
證明6對于k?,令gc為gbk,則消息m在公鑰gb下的加密密文為:
若T=成 立,則C1'為消息m的正確密文;否則為其他消息m′≠m的密文。除非對手推翻q-DBDHI 假設(shè),否則其不會破壞本文方案的語義安全性。
本節(jié)討論本文方案在加密階段、搜索階段和解密階段的運(yùn)算時間,并比較已有的可搜索加密方案與本文方案在運(yùn)算時間上的優(yōu)劣。在Linux 操作系統(tǒng)下利用雙線性包實(shí)現(xiàn)算法,使用C 語言進(jìn)行編程,在PC 機(jī)(惠普電腦,3.1 GHz CPU,4GB RAM)的虛擬機(jī)中運(yùn)行。
以下從理論角度分析本文方案與文獻(xiàn)[12]方案、文獻(xiàn)[20]方案在運(yùn)算時間上的優(yōu)劣。表1 為上述方案中基本運(yùn)算執(zhí)行時間的符號和時長。由于計算開銷中指數(shù)運(yùn)算、配對運(yùn)算和哈希運(yùn)算時間較長,因此只考慮這3 方面的運(yùn)算時間。
表1 基本運(yùn)算的執(zhí)行時間Table 1 Execution time of basic operations ms
利用表1 中數(shù)據(jù)得出加密階段、搜索階段和解密階段的運(yùn)算時間,結(jié)果如表2 所示。由表2 可以看出:在加密階段,各方案運(yùn)算時間由大到小依次為文獻(xiàn)[12]方案、本文方案和文獻(xiàn)[20]方案;在搜索階段,各方案運(yùn)算時間由大到小依次為文獻(xiàn)[12]方案、文獻(xiàn)[20]方案和本文方案;在解密階段,各方案運(yùn)算時間由大到小依次為文獻(xiàn)[12]方案、文獻(xiàn)[20]方案和本文方案。
表2 3 種方案不同階段的運(yùn)算時間Table 2 Operation time of different stages of three schemes ms
本節(jié)數(shù)值實(shí)驗(yàn)通過改變關(guān)鍵字個數(shù),對比本文方案與文獻(xiàn)[20]方案在加密階段和搜索階段的算法的時間開銷。關(guān)鍵字個數(shù)分別取10、20、30、40、50、60、70、80、90 和100,取算法運(yùn)行50 次所得結(jié)果的平均值作為最終實(shí)驗(yàn)結(jié)果。
本文方案和文獻(xiàn)[20]方案在加密階段的時間開銷如圖2 所示??梢钥闯?,兩種方案在加密階段的時間均隨關(guān)鍵字個數(shù)的增加而增長,但本文方案的時間增幅較緩,即關(guān)鍵字個數(shù)越多,本文方案在加密階段的運(yùn)算時間較文獻(xiàn)[20]方案的優(yōu)勢更明顯。例如:當(dāng)關(guān)鍵字個數(shù)為10 時,兩種方案在加密階段的時間差距可忽略不計;當(dāng)關(guān)鍵字個數(shù)為100 時,文獻(xiàn)[20]方案在加密階段的運(yùn)算時間高于本文方案600 ms。因此,對于云服務(wù)器中大批量數(shù)據(jù)而言,本文方案更能滿足實(shí)際需求。
圖2 2 種方案加密階段的時間開銷Fig.2 Time cost of encryption phase of two schemes
本文方案和文獻(xiàn)[20]方案在搜索階段的時間開銷如圖3 所示??梢钥闯?,兩種方案在搜索階段的時間開銷隨關(guān)鍵字?jǐn)?shù)量的增加呈線性增長,但本文方案的時間開銷增幅較緩,其在實(shí)際應(yīng)用中云服務(wù)器的響應(yīng)時間更短,用戶搜索更迅速。
圖3 2 種方案搜索階段的時間開銷Fig.3 Time cost of search phase of two schemes
本文提出一種基于代理重加密的電子病歷數(shù)據(jù)共享方案。在保證隱私安全的基礎(chǔ)上,患者獲取以其私鑰解密的加密電子病歷,數(shù)據(jù)用戶經(jīng)患者授權(quán)能查閱其電子病歷。基于隨機(jī)預(yù)言機(jī)模型的實(shí)驗(yàn)結(jié)果表明,該方案有效實(shí)現(xiàn)了關(guān)鍵字隱私安全和消息隱私安全,可滿足實(shí)際應(yīng)用需求。由于本文方案僅支持單關(guān)鍵字搜索,搜索效率較低,后續(xù)將拓展為支持連接關(guān)鍵字搜索,以提高關(guān)鍵字搜索效率。