汪祖民,鄭 雅,高 兵+,秦 靜
(1.大連大學(xué) 信息工程學(xué)院,遼寧 大連 116622;2.大連大學(xué) 軟件學(xué)院,遼寧 大連 116622)
傳統(tǒng)的電子病歷(electronic medical records,EMRs)包括文本文檔和醫(yī)學(xué)數(shù)字成像與通信(digital imaging and communications in medicine,DICOM),大都存儲(chǔ)在醫(yī)院本地服務(wù)器或云服務(wù)器,由于內(nèi)部管理機(jī)制和安全性等問(wèn)題人們對(duì)云服務(wù)器存儲(chǔ)隱私數(shù)據(jù)的信任有所動(dòng)搖。為了解決上述問(wèn)題,國(guó)內(nèi)外學(xué)者通過(guò)在云服務(wù)器中引入各種加密機(jī)制或者與區(qū)塊鏈結(jié)合來(lái)保證數(shù)據(jù)的隱私。文獻(xiàn)[1-3]中提出在區(qū)塊鏈上將可搜索加密和代理重加密相結(jié)合的安全共享方案,保證EMRs的可靠共享。但是上述文獻(xiàn)的方案針對(duì)單關(guān)鍵字文檔的加密使得效率較低,而且在區(qū)塊鏈上存儲(chǔ)大量數(shù)據(jù)存在壓力過(guò)大的問(wèn)題,因此在后來(lái)的研究中采取了多關(guān)鍵字加密。文獻(xiàn)[4-9]為提高加密效率,提出聚合密鑰加密方案,對(duì)多個(gè)關(guān)鍵字進(jìn)行聚合加密,但是仍存在一些問(wèn)題,例如存儲(chǔ)加密大都以醫(yī)院為中心,無(wú)法避免非法利用,未經(jīng)授權(quán)訪問(wèn)等。因此,為解決區(qū)塊鏈存儲(chǔ)壓力過(guò)大和共享過(guò)程安全性問(wèn)題,文獻(xiàn)[10]提出一個(gè)基于區(qū)塊鏈的電子健康記錄數(shù)據(jù)安全存儲(chǔ)共享方案。將去中心化的星際文件系統(tǒng)(inter planetary file system,IPFS)和區(qū)塊鏈結(jié)合來(lái)存儲(chǔ)密文和哈希地址,結(jié)合無(wú)證書內(nèi)容簽名算法來(lái)安全共享。但是無(wú)證書內(nèi)容簽名算法容易隱藏敏感內(nèi)容致使EMRs共享結(jié)果不準(zhǔn)確。因此,針對(duì)現(xiàn)有方案中的安全性和共享效率方面的不足,提出一種區(qū)塊鏈下的EMRs聚合密鑰可搜索加密方案。
(2)非退化性(Non-degenerate):存在R,S∈G1, 使得e(x,y)≠1;
(3)可計(jì)算性(Computable):對(duì)于任意的R,S∈G1, 存在有效算法計(jì)算e(x,y)。
定義2 決策雙線性Diffie-Hellman問(wèn)題[12]
AdvDBDH(A)=Pr[A(g,ga,gb,gc,eg,gabc)=1]-
Pr[A(g,ga,gb,gc,Q)=1]≥ε
(1)
如果概率多項(xiàng)式時(shí)間(probabilistic polynomial time,PPT)算法沒(méi)有至少ε的優(yōu)勢(shì),則DBDH假設(shè)在G1中成立。
可搜索加密中,用戶首先使用可搜索加密(searchable encryption,SE)機(jī)制對(duì)數(shù)據(jù)進(jìn)行加密[13],并將密文存儲(chǔ)在遠(yuǎn)程服務(wù)器,當(dāng)用戶需要搜索某個(gè)關(guān)鍵字時(shí),可以將該關(guān)鍵字的搜索憑證發(fā)給遠(yuǎn)程服務(wù)器,服務(wù)器將接收到的搜索憑證對(duì)每個(gè)文檔進(jìn)行試探匹配,如果匹配成功,則說(shuō)明該文檔中包含該關(guān)鍵字,最后遠(yuǎn)程服務(wù)器將所有匹配成功的文檔發(fā)回給用戶。
區(qū)塊鏈?zhǔn)欠植际綌?shù)據(jù)存儲(chǔ)、點(diǎn)對(duì)點(diǎn)傳輸、共識(shí)機(jī)制、加密算法等計(jì)算機(jī)技術(shù)的新型應(yīng)用模式,由數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層、激勵(lì)層、合約層和應(yīng)用層組成。區(qū)塊鏈本質(zhì)上是一個(gè)去中心化的數(shù)據(jù)庫(kù),上鏈數(shù)據(jù)不可篡改且永久存儲(chǔ)。數(shù)據(jù)區(qū)塊結(jié)構(gòu)如圖1所示,區(qū)塊頭通常包含前一區(qū)塊哈希地址、時(shí)間戳、隨機(jī)數(shù)以及Merkle樹等參數(shù),區(qū)塊體包含交易數(shù)據(jù)等信息[14]。
圖1 區(qū)塊結(jié)構(gòu)
IPFS是一個(gè)點(diǎn)對(duì)點(diǎn)分布式文檔存儲(chǔ)模型,它定義了文檔該如何存儲(chǔ)、索引和傳輸,永久性去中心化存儲(chǔ)和共享文件[10]。IPFS可以將所有計(jì)算機(jī)設(shè)備連接到同一文檔系統(tǒng),并確保文檔不被篡改。IPFS上傳的文件存放在各個(gè)分布式節(jié)點(diǎn)中,下載時(shí)從多個(gè)節(jié)點(diǎn)同時(shí)下載,最后拼接成一個(gè)完成文件,有快速、安全的特性。當(dāng)患者的DICOM文檔上傳到IPFS時(shí),返回當(dāng)前文檔的唯一哈希地址,數(shù)據(jù)請(qǐng)求方申請(qǐng)時(shí)使用哈希地址就可以訪問(wèn)資源,節(jié)約了區(qū)塊鏈的存儲(chǔ)資源。
智能合約是在區(qū)塊鏈上自動(dòng)觸發(fā),執(zhí)行合約條款的預(yù)設(shè)指令,由尼克·薩博提出。區(qū)塊鏈將智能合約的代碼和狀態(tài)作為交易保存到區(qū)塊中,實(shí)時(shí)監(jiān)測(cè)已部署的智能合約動(dòng)態(tài)?;颊咴趨^(qū)塊鏈中設(shè)置智能合約,一旦數(shù)據(jù)請(qǐng)求方正確觸發(fā)預(yù)設(shè)指令,合約自動(dòng)執(zhí)行,否則返回驗(yàn)證失敗當(dāng)其滿足執(zhí)行規(guī)則時(shí)。通過(guò)一份智能合約的執(zhí)行規(guī)則來(lái)對(duì)該數(shù)據(jù)進(jìn)行每一次訪問(wèn)[15]。智能合約原理如圖2所示。
圖2 智能合約原理
本文提出的電子病歷系統(tǒng)中包含6個(gè)實(shí)體:醫(yī)生、患者、數(shù)據(jù)請(qǐng)求方、IPFS、云服務(wù)器和區(qū)塊鏈。為實(shí)現(xiàn)電子病歷由醫(yī)院控制向患者控制的轉(zhuǎn)變,在醫(yī)生診療完成后將EMRs反饋給患者?;颊叩腅MRs因看病在不同醫(yī)院不同科室等因素分為多個(gè)文檔,將文檔分為DICOM和診療記錄分別存儲(chǔ),針對(duì)患者診療記錄多文檔多關(guān)鍵字的情況進(jìn)行加密存儲(chǔ)和共享。
醫(yī)生:醫(yī)生對(duì)患者的病癥進(jìn)行診療并創(chuàng)建其個(gè)人的病歷,完成EMRs給患者。
患者:得到EMRs后,先按DICOM和診療記錄分類,再對(duì)多個(gè)診療記錄分別提取生成一系列關(guān)鍵字,生成一級(jí)聚合密鑰,然后將一級(jí)聚合密鑰提取,生成二級(jí)聚合密鑰;對(duì)診療記錄進(jìn)行加密;對(duì)IPFS返回的哈希地址加密;設(shè)置智能合約來(lái)進(jìn)行判斷請(qǐng)求者的身份,是否符合授權(quán)。
IPFS:存儲(chǔ)DICOM后生成唯一哈希地址輸出,一定程度上節(jié)約了存儲(chǔ)空間,并保證了存儲(chǔ)于IPFS上文檔的安全性。
云服務(wù)器:生成的密文存儲(chǔ)于云服務(wù)器,進(jìn)行陷門匹配。
區(qū)塊鏈:將診療記錄的聚合密鑰和相對(duì)應(yīng)DICOM的哈希地址加密以及密文索引構(gòu)成交易單存儲(chǔ)于區(qū)塊鏈;在區(qū)塊鏈設(shè)置智能合約,當(dāng)數(shù)據(jù)請(qǐng)求方正確觸發(fā)合約時(shí),合約自動(dòng)執(zhí)行,否則返回驗(yàn)證失敗。
數(shù)據(jù)請(qǐng)求方:先向區(qū)塊鏈發(fā)送一個(gè)數(shù)據(jù)請(qǐng)求,區(qū)塊鏈?zhǔn)盏秸?qǐng)求后,進(jìn)行智能合約的驗(yàn)證。通過(guò)驗(yàn)證之后進(jìn)行陷門匹配。兩次匹配成功后,獲得哈希地址和診療記錄的密文,解密獲得哈希地址,查詢IPFS中的對(duì)應(yīng)的DICOM。系統(tǒng)模型中各實(shí)體間的作用如圖3所示。
圖3 EMRs存儲(chǔ)共享系統(tǒng)模型
其中,數(shù)據(jù)請(qǐng)求方先通過(guò)二級(jí)聚合密鑰生成關(guān)鍵字陷門,檢索所需文檔是否在文檔集中,再根據(jù)查驗(yàn)是否與文檔中的關(guān)鍵字匹配。對(duì)于多文檔多關(guān)鍵字中的陷門匹配過(guò)程如圖4所示。
圖4 密文存儲(chǔ)和關(guān)鍵字陷門匹配流程
(3)文檔加密算法Encrypt(gp,M)→(Cm,Cw): 輸入文檔集M和公共參數(shù)gp。
1)關(guān)鍵字提取階段
患者先輸入文件索引Im={1,2,…,y}, 對(duì)文檔集M={m1,m2,…,my} 分類提取多個(gè)關(guān)鍵字,得到關(guān)鍵字集W={Wm1,Wm2,…,Wmz}。 其中,mi為不同醫(yī)院的病歷記錄,先對(duì)不同醫(yī)院的病歷m按科室分類,作為一層關(guān)鍵字Wmi={w1,w2,…,wy}, 再對(duì)不同科室的診療記錄提取關(guān)鍵字得到W。 將DICOM存儲(chǔ)于IPFS,患者將返回的哈希地址進(jìn)行加密和Im構(gòu)成交易單。
2)加密階段
Cmi=(C1,C2,C3)=
〈gt,e(v,gz+1-i),mi·e(g1,gz)t〉
(2)
(3)
(4)聚合密鑰提取算法Extract(msk,W)→(Kaggm,Kagg): 當(dāng)數(shù)據(jù)請(qǐng)求者向患者請(qǐng)求相關(guān)EMRs時(shí),患者輸入主密鑰msk和文檔關(guān)鍵字集合W, 兩級(jí)聚合密鑰的模式如圖5所示。
圖5 兩級(jí)聚合密鑰的模式
1)由msk={γ1,γ2,…,γz} 對(duì)每個(gè)文檔通過(guò)聚合密鑰生成算法生成一級(jí)聚合密鑰Kaggm1,Kaggm2,…,Kaggmz。
其中,一級(jí)聚合密鑰生成如式(4)所示
(4)
2)患者對(duì)所有文檔的聚合密鑰Kaggm進(jìn)行聚合,生成二級(jí)聚合密鑰Kagg如式(5)所示。最終,輸出Kagg和Kaggm和交易單存儲(chǔ)于區(qū)塊鏈
(5)
3)在區(qū)塊鏈上設(shè)置智能合約,對(duì)數(shù)據(jù)請(qǐng)求方進(jìn)行身份驗(yàn)證,如果請(qǐng)求方無(wú)法正確觸發(fā)合約,則返回驗(yàn)證失?。蝗绻?qǐng)求方驗(yàn)證通過(guò),則獲得聚合密鑰進(jìn)行陷門匹配。數(shù)據(jù)請(qǐng)求方將機(jī)構(gòu)的唯一標(biāo)識(shí)user_ID廣播到區(qū)塊鏈中,區(qū)塊鏈的每個(gè)節(jié)點(diǎn)都記錄生成Users_ID,節(jié)點(diǎn)記錄中的ID不可重復(fù)且不可篡改。當(dāng)請(qǐng)求方申請(qǐng)數(shù)據(jù)時(shí),輸入自己機(jī)構(gòu)的user_ID,如果在所有節(jié)點(diǎn)的Users_ID記錄中查到,則身份合法,輸出“true”,否則身份不明,輸出“false”。
算法1:驗(yàn)證階段智能合約算法
輸入:user_ID
輸出:true or false
(1)constract user{
(2)address user_ID;}
(3)function User() public{
(4)user_ID = msg.sender;}
(5)function TestUser(){
(6)if (user_ID = Users_ID)
(7)return true;
(8)else
(9)return false; }
T′w1=(T0,T1)=(Kaggm·(gw′i)b,gb)
(6)
(7)
(6)匹配算法Test(T′w1,T′w2,Cm,Kagg,Kaggm)→(Ii): 數(shù)據(jù)申請(qǐng)方輸入陷門T′w1和T′w2, 文檔密文Cm, 聚合密鑰Kagg和Kaggm。
(8)
正確性證明
2)若wi=w′i, 則等式(8)成立,即二級(jí)關(guān)鍵字匹配成功,得到患者在不同醫(yī)院的診療記錄。通過(guò)下列等式(9)判斷關(guān)鍵字是否匹配
(9)
正確性證明
若wi=w′i, 則等式(8)和等式(9)都成立,說(shuō)明陷門的關(guān)鍵字和聚合密鑰Kagg和Kaggm中的關(guān)鍵字相匹配。驗(yàn)證算法正確時(shí)獲得交易單,區(qū)塊鏈上節(jié)點(diǎn)向數(shù)據(jù)請(qǐng)求方返回關(guān)鍵字索引Ii和DICOM哈希地址。若wi≠w′i, 則兩個(gè)等式都不成立,驗(yàn)證算法輸出“false”,檢索失敗。
(10)
正確性證明
數(shù)據(jù)請(qǐng)求方的檢索安全準(zhǔn)確,擁有聚合密鑰的數(shù)據(jù)請(qǐng)求方只能檢索到所需的文檔mi, 無(wú)法得到文檔集M中除mi以外的其它文檔,也無(wú)法通過(guò)二級(jí)聚合密鑰Kagg來(lái)獲得一級(jí)聚合密鑰Kaggm, 不存在獲得授權(quán)范圍之外的搜索權(quán)限。
4.1.1 擁有Kagg和Kaggm的數(shù)據(jù)請(qǐng)求方能進(jìn)行關(guān)鍵字檢索
數(shù)據(jù)請(qǐng)求方獲得一級(jí)聚合密鑰Kagg和二級(jí)聚合密鑰Kaggm。 先用Kagg生成一個(gè)聚合陷門T′w2, 執(zhí)行搜索驗(yàn)證算法進(jìn)行第一次關(guān)鍵字檢索。若檢索失敗,則輸出“false”;若檢索成功,則成功檢索所需文檔的類別,用Kaggm生成聚合陷門T′w1, 進(jìn)行第二次關(guān)鍵字檢索。若檢索失敗,則輸出“false”;若檢索成功,則獲得所需文檔的密文。由等式(8)和等式(9)中的正確性證明可以看到檢索算法的正確性。因此,數(shù)據(jù)請(qǐng)求方得到兩級(jí)聚合密鑰后能進(jìn)行關(guān)鍵字檢索,檢索是否成功取決于所需關(guān)鍵字是否和文檔關(guān)鍵字一致。
4.1.2 擁有聚合密鑰的數(shù)據(jù)請(qǐng)求方只能獲得所需文檔,無(wú)法獲得其它文檔
首先,本方案對(duì)患者的病歷按照醫(yī)院和科室劃分為兩級(jí),二級(jí)聚合密鑰中涉及的文檔是一級(jí)聚合密鑰中所有文檔的分類。數(shù)據(jù)請(qǐng)求方進(jìn)行關(guān)鍵字檢索時(shí),首先根據(jù)二級(jí)聚合密鑰進(jìn)行文檔分類的檢索,檢索成功說(shuō)明患者存在某一類別的病歷記錄,檢索失敗說(shuō)明患者不存在這一類別的病歷記錄。然后,通過(guò)第一次檢索的數(shù)據(jù)請(qǐng)求方可以進(jìn)行第二次檢索。最后,兩次關(guān)鍵字檢索成功后,僅獲得和關(guān)鍵字相關(guān)的密文,無(wú)法獲得更多文檔。
定理1 如果敵手A在一個(gè)概率多項(xiàng)式時(shí)間內(nèi)能以不可忽略的優(yōu)勢(shì)ε贏得游戲,挑戰(zhàn)者C以不可忽略的優(yōu)勢(shì)AdvA(gp) 解決DBDH困難問(wèn)題,則可證明本文方案在DBDH假設(shè)下是IND-CPA安全的。
證明:假設(shè)存在敵手A能打破方案中提出的IND-CPA安全。構(gòu)造一個(gè)挑戰(zhàn)者C,讓C和敵手交互解決DBDH困難問(wèn)題。C的最終目的是判斷對(duì)于給定的元組g,ga,gb,gc∈G1, 通過(guò)計(jì)算v的值來(lái)判斷Q=e(g,g)abc能否成立,如式(11)所示
(11)
模擬挑戰(zhàn)者C和敵手A之間的交互過(guò)程如下:
(2)詢問(wèn)階段:
(3)挑戰(zhàn)階段:
敵手A決定結(jié)束詢問(wèn)階段1),會(huì)輸出挑戰(zhàn)的關(guān)鍵字 (w0,w1), 并將其發(fā)送給挑戰(zhàn)者C。C設(shè)置可搜索加密密鑰ki=t=bc/a1+z-1。 而且,C隨機(jī)選擇u∈{0,1}, 計(jì)算Cmu=(C1,C2,C3) 如式(12)所示
(12)
(4)猜測(cè)階段:
敵手A輸出猜想u′, 如果u′=u, 則說(shuō)明A挑戰(zhàn)成功,輸出v′=1, 意味著Q=e(g,g)abc。 如果u′≠u, 挑戰(zhàn)失敗,輸出v′=0, 意味著Q≠e(g,g)abc。 A獲勝的概率為Pr[u′=u|v=0]=1/2, 當(dāng)u′≠u時(shí),挑戰(zhàn)者C輸出猜想v′=0獲勝的概率為Pr[v′=v|v=0]=1/2。 當(dāng)v=1時(shí),敵手A挑戰(zhàn)成功的優(yōu)勢(shì)為ε=Pr[u′=u|v=1]-1/2。 當(dāng)u′=u時(shí),挑戰(zhàn)者C猜想v′=1挑戰(zhàn)者獲勝的概率為Pr[u′=u|v=1]=ε+1/2。 挑戰(zhàn)者能解決DBDH困難問(wèn)題的優(yōu)勢(shì)如式(13)所示
(13)
本節(jié)首先將本文方案與相關(guān)的EMRs共享方案在性能和計(jì)算效率方面進(jìn)行詳細(xì)的比較,包括理論分析和數(shù)值分析。
5.1.1 功能性對(duì)比
此部分從理論上對(duì)存儲(chǔ)、區(qū)塊鏈和多關(guān)鍵字等功能特性展開對(duì)本文方案與其它共享方案的對(duì)比分析。見(jiàn)表1,其中“√”表示實(shí)現(xiàn)此功能,“×”表示未實(shí)現(xiàn)此功能。
表1 不同方案的功能特性對(duì)比
文獻(xiàn)[3,4,6-9]僅僅使用了云服務(wù)器進(jìn)行存儲(chǔ)。云服務(wù)器是半可信且具有好奇心的,并不總是誠(chéng)實(shí)地計(jì)算并返回檢索結(jié)果的情況,所以僅用云服務(wù)器進(jìn)行存儲(chǔ)時(shí),由于數(shù)據(jù)中心化嚴(yán)重,分布集中且管理不當(dāng)容易導(dǎo)致數(shù)據(jù)被泄露甚至被非法利用。IPFS具有去中心化的特點(diǎn),且文檔由多個(gè)節(jié)點(diǎn)存儲(chǔ),安全性更有保障。因此,本文方案將DICOM數(shù)據(jù)存儲(chǔ)于IPFS。文獻(xiàn)[10]中采用IPFS存儲(chǔ),但隱私保護(hù)采用的方法是內(nèi)容截取簽名,此方法會(huì)隱藏部分敏感信息,容易導(dǎo)致數(shù)據(jù)請(qǐng)求方搜索結(jié)果不準(zhǔn)確。本文方案采用IPFS和云服務(wù)器聯(lián)合存儲(chǔ),云服務(wù)器存儲(chǔ)密文,智能合約實(shí)現(xiàn)訪問(wèn)控制,并采取兩級(jí)聚合密鑰來(lái)實(shí)現(xiàn)關(guān)鍵字的檢索匹配,保證了數(shù)據(jù)請(qǐng)求方得到所需文檔的準(zhǔn)確性和完整性。
5.1.2 計(jì)算量分析
此部分對(duì)不同文獻(xiàn)中的方案的計(jì)算量進(jìn)行對(duì)比。TH代表一般哈希函數(shù)運(yùn)算時(shí)間,執(zhí)行時(shí)間為12.573 ms,Tp代表雙線性對(duì)映射時(shí)間,執(zhí)行時(shí)間為5.021 ms,Te代表指數(shù)函數(shù)運(yùn)算時(shí)間,執(zhí)行時(shí)間為4.888 ms。顯然,基本運(yùn)算的執(zhí)行時(shí)間先后排序?yàn)門H>Tp>Te。 一般哈希運(yùn)算的時(shí)間遠(yuǎn)大于另外兩個(gè)函數(shù)的運(yùn)算時(shí)間,根據(jù)執(zhí)行時(shí)間對(duì)不同方案的運(yùn)行時(shí)間進(jìn)行計(jì)算,得出的計(jì)算量見(jiàn)表2。
表2 不同方案的計(jì)算量對(duì)比
由表2可知,本文方案雖生成了兩級(jí)關(guān)鍵字密文和聚合密鑰,用戶需要生成兩個(gè)陷門,在檢索階段需要進(jìn)行兩次陷門匹配,但是在加解密階段以及陷門生成階段的計(jì)算時(shí)間較快。在檢索階段需要經(jīng)過(guò)兩次關(guān)鍵字檢索驗(yàn)證,所以此階段的計(jì)算量稍高。從可搜索加密的總過(guò)程的計(jì)算量來(lái)看,本文方案在計(jì)算效率方面與文獻(xiàn)[6]相比具有一定的優(yōu)勢(shì),而且與文獻(xiàn)[7]相比,存儲(chǔ)共享的安全性更高。
因此,本文方案相較于其它可搜索加密方案的性能和計(jì)算效率更占優(yōu)勢(shì)。
本節(jié)通過(guò)對(duì)文獻(xiàn)[6]、文獻(xiàn)[7]的方案和本文方案進(jìn)行數(shù)值模擬實(shí)驗(yàn)來(lái)分析方案的實(shí)際性能。數(shù)據(jù)模擬實(shí)驗(yàn)硬件環(huán)境是Intel(R)Core i5-6700CPU;軟件環(huán)境是在Linux系統(tǒng)上使用PBC(pairing-based cryptography)庫(kù),基于C語(yǔ)言實(shí)現(xiàn)文獻(xiàn)[6]、文獻(xiàn)[7]的方案和本文方案,效果如圖6~圖8所示。
圖6 文檔加密算法的時(shí)間開銷
如圖6所示,文獻(xiàn)[6]和文獻(xiàn)[7]的方案和本文方案都是多關(guān)鍵字的加密,方案中文檔的加密時(shí)間與文檔的數(shù)量都是正相關(guān)。但本文方案中文檔加密階段僅用患者的公鑰對(duì)文檔、關(guān)鍵字和哈希地址進(jìn)行加密,而且沒(méi)有進(jìn)行哈希運(yùn)算,因此文檔加密的時(shí)間開銷遠(yuǎn)小于文獻(xiàn)[6]的方案,略低于文獻(xiàn)[7]的方案。
圖7中由于文獻(xiàn)[6]的方案中陷門生成階段對(duì)關(guān)鍵字進(jìn)行哈希運(yùn)算,用時(shí)與關(guān)鍵字的數(shù)量正相關(guān),而文獻(xiàn)[7]和本文方案中對(duì)多個(gè)文檔的關(guān)鍵字進(jìn)行聚合加密,因此本文方案中陷門生成的時(shí)間開銷遠(yuǎn)小于文獻(xiàn)[6]的方案。圖8中文獻(xiàn)[7]中的方案解密階段對(duì)區(qū)塊鏈上包含密文哈希地址和文件地址的交易進(jìn)行數(shù)據(jù)驗(yàn)證運(yùn)算,因此本文方案文檔解密的時(shí)間開銷遠(yuǎn)小于文獻(xiàn)[7]的方案。
圖7 陷門生成算法的時(shí)間開銷
圖8 密文解密算法的時(shí)間開銷
綜上所述,雖然本文方案在陷門生成算法和解密算法分別與文獻(xiàn)[7]和文獻(xiàn)[6]持平,但是本文方案在加密階段和陷門生成階段的計(jì)算效率方面與文獻(xiàn)[6]相比有一定的優(yōu)勢(shì),在解密方面與文獻(xiàn)[7]相比有一定的優(yōu)勢(shì)。因此,本文所提出的多文檔多關(guān)鍵字的聚合密鑰可搜索加密方案的性能和更高的計(jì)算效率。
本文方案對(duì)多文檔多關(guān)鍵字的EMRs采取兩級(jí)聚合密鑰和兩級(jí)陷門實(shí)現(xiàn)更精確的檢索,將IPFS和云服務(wù)器結(jié)合實(shí)現(xiàn)安全存儲(chǔ),加入智能合約實(shí)現(xiàn)對(duì)數(shù)據(jù)請(qǐng)求方的訪問(wèn)控制。分析結(jié)果表明方案中的聚合密鑰具有較高的安全性,可搜索加密方案能抵抗適應(yīng)性選擇攻擊,具有密文安全性,在性能和效率方面都有提高,適用于數(shù)據(jù)龐大的醫(yī)院EMRs的存儲(chǔ)共享。在未來(lái)的研究中,將聚合密鑰過(guò)程和密鑰管理過(guò)程更加細(xì)化,并進(jìn)一步加強(qiáng)區(qū)塊鏈在共享過(guò)程中的作用。