牛淑芬,韓 松,于 斐,王彩芬,杜小妮
(1.西北師范大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,蘭州 730070;2.深圳技術(shù)大學(xué) 大數(shù)據(jù)與互聯(lián)網(wǎng)學(xué)院,廣東 深圳 518118;3.西北師范大學(xué) 數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,蘭州 730070)
病歷是醫(yī)務(wù)人員對(duì)病人患病經(jīng)過和治療情況所作的文字記錄,是醫(yī)生診斷和治療疾病的依據(jù)。隨著醫(yī)院現(xiàn)代化建設(shè)的發(fā)展和計(jì)算機(jī)信息技術(shù)的普及,電子病歷(Electronic Medical Record,EMR)逐步取代紙質(zhì)病歷,在病人信息的收集、儲(chǔ)存、分析、傳遞和利用中得到廣泛應(yīng)用,解決了紙質(zhì)病歷易丟失、易損壞等問題。對(duì)于疾病的研究[1],醫(yī)生或醫(yī)療機(jī)構(gòu)需對(duì)大量相同或類似的EMR 進(jìn)行系統(tǒng)分析對(duì)比以找出準(zhǔn)確的病因和更好的醫(yī)療辦法[2-4]。隨著大量EMR 的生成,不僅占用醫(yī)院本地服務(wù)器資源,而且難以進(jìn)行數(shù)據(jù)共享和計(jì)算[5-7],因此越來越多的醫(yī)院選擇存儲(chǔ)空間大、計(jì)算效率高和響應(yīng)速度快的云服務(wù)器進(jìn)行存儲(chǔ)[8-10]。但是,如果云服務(wù)器受到攻擊或缺乏監(jiān)控,數(shù)據(jù)可能會(huì)被竊取、泄露或篡改,而且云服務(wù)器可能存在未經(jīng)授權(quán)訪問等安全問題,所以云服務(wù)器不能被用戶完全信任,而去中心化分布式存儲(chǔ)的區(qū)塊鏈技術(shù)[11-13]為EMR 提供了安全不可修改的記錄,然而很多EMR 文件數(shù)據(jù)由于具有高度保密性和敏感性,因此不能直接存儲(chǔ)在區(qū)塊鏈中,以太坊[14]是一個(gè)具備圖靈完備性的開源區(qū)塊鏈平臺(tái),為實(shí)現(xiàn)EMR 在區(qū)塊鏈上的存儲(chǔ)提供了技術(shù)支持[15]。
在文件上傳存儲(chǔ)前必須將數(shù)據(jù)文件進(jìn)行加密,以保證數(shù)據(jù)的安全性和隱私性,但在搜索大量數(shù)據(jù)時(shí),數(shù)據(jù)使用者需要將全部數(shù)據(jù)文件下載并解密,然后進(jìn)行數(shù)據(jù)搜索,因此該方法的搜索效率極低。文獻(xiàn)[16]提出在密文上實(shí)現(xiàn)關(guān)鍵字搜索的可搜索加密(Searchable Encryption,SE)方案,該方案的搜索效率較高并保證了服務(wù)器執(zhí)行搜索操作時(shí)的隱私性和保密性,但在存放加密數(shù)據(jù)時(shí)對(duì)不同文檔通常使用不同的密鑰,用戶持有的密鑰會(huì)隨文檔數(shù)量的增多而增加,因此用戶必須生成大量的陷門進(jìn)行搜索,導(dǎo)致工作效率低下。文獻(xiàn)[17]提出一種可搜索的聚合密鑰加密方案,解決了用戶持有大量不同密鑰時(shí)的復(fù)雜困難搜索問題,但在用戶得到數(shù)據(jù)后一般需要在相關(guān)文檔集上進(jìn)行驗(yàn)證,當(dāng)用戶完成對(duì)大量文檔集的搜索后也會(huì)擁有大量的可驗(yàn)證令牌,因此文獻(xiàn)[18]提出一種可驗(yàn)證的可搜索聚合密鑰加密方案,該方案實(shí)現(xiàn)了對(duì)通過密鑰聚合得到數(shù)據(jù)的簡單快速驗(yàn)證。本文提出一種面向區(qū)塊鏈電子病歷的基于密鑰聚合的密文檢索方案。該方案利用密鑰聚合技術(shù),當(dāng)數(shù)據(jù)用戶請求多個(gè)文件數(shù)據(jù)時(shí),僅需生成一個(gè)聚合陷門即可進(jìn)行數(shù)據(jù)檢索,同時(shí)通過智能合約技術(shù)確保用戶進(jìn)行數(shù)據(jù)驗(yàn)證,從而得到正確完整的文件。
定義1令G1和G2為兩個(gè)階為素?cái)?shù)p的乘法循環(huán)群,定義一個(gè)雙線性映射e:G1×G1→G2滿足如下性質(zhì):
1)雙線性:對(duì)任意的u,v∈G1,存在a,b∈?*p,使得e(ua,vb)=e(u,v)ab。
2)非退化性:存在u,v∈G1,使得e(u,v)≠1。
3)可計(jì)算性:對(duì)任意的u,v∈G1,存在有效算法計(jì)算e(u,v)。
定義2基于l階的雙線性Diffie-Hellman 指數(shù)假設(shè)(l-BDHE)問題給定包含(2l+1)個(gè)元素的向量作為輸入,輸出為。在本文中為便于描述,使用gi表示。
定義3設(shè)G是一個(gè)階為p的循環(huán)群,隨機(jī)選取公共參數(shù)g1,g2,…,gd∈G,則向量v=(v1,v2,…,vd)∈?p的哈希函數(shù)為:
向量哈希函數(shù)滿足以下性質(zhì):
1)同態(tài)性:對(duì)任意2 個(gè)向量m1、m2和2 個(gè)實(shí)數(shù)l1、l2,滿足。
2)免碰撞性:不存在一個(gè)多項(xiàng)式時(shí)間的攻擊者偽造一個(gè)向量m3,同時(shí)滿足m3≠l1m1+l2m2且。
定理1同態(tài)向量哈希函數(shù)在離散對(duì)數(shù)問題是困難問題假設(shè)下是安全的[19]。
為防止數(shù)據(jù)在上傳過程中的信息泄露,通常采用加密云存儲(chǔ)[20],具體方法為:在數(shù)據(jù)上傳至云端前數(shù)據(jù)擁有者將所有文件加密,加密數(shù)據(jù)只能被解密密鑰擁有者進(jìn)行搜索和解密。假如文件擁有者希望通過云服務(wù)器安全共享敏感文件,同時(shí)擁有者希望向部分用戶授權(quán),使得用戶可以在擁有者提供的子集中搜索文件。針對(duì)該關(guān)鍵字搜索問題,文獻(xiàn)[21-22]提出可搜索加密技術(shù),保證了服務(wù)器執(zhí)行搜索時(shí)的隱私性和保密性。
如圖1 所示,在傳統(tǒng)密文檢索方案中,Alice 對(duì)其不同的文檔集使用不同的密鑰加密并上傳至云服務(wù)器,當(dāng)Bob 想獲取部分文檔S(|S|=m)的搜索時(shí),Alice 需要將密鑰通過安全信道發(fā)送給Bob進(jìn)行授權(quán)。為搜索S中的目標(biāo)文檔,Bob 需要生成包含關(guān)鍵字w的大量陷門并提交給云服務(wù)器獲得文件進(jìn)行結(jié)果驗(yàn)證。當(dāng)m足夠大時(shí),對(duì)于Bob 而言,密鑰的分配和存儲(chǔ)以及陷門的生成會(huì)變得非常困難,這違背了使用云服務(wù)器存儲(chǔ)和計(jì)算的初衷。本文使用改進(jìn)的聚合密鑰檢索方案,將大量計(jì)算和存儲(chǔ)轉(zhuǎn)移至云服務(wù)器且不會(huì)造成信息泄露。如圖2 所示,在聚合密鑰的密文檢索方案中,Alice 和Bob 只需發(fā)送一個(gè)聚合密鑰kagg和一個(gè)聚合陷門Tr,利用密鑰聚合技術(shù)將大量文件進(jìn)行聚合并發(fā)送給用戶,用戶通過生成聚合陷門得到請求數(shù)據(jù)從而提高搜索效率。
圖1 傳統(tǒng)密文檢索方案Fig.1 Traditional ciphertext retrieval scheme
圖2 密鑰聚合的密文檢索方案Fig.2 Ciphertext retrieval scheme of key aggregation
智能合約由密碼學(xué)家尼克·薩博于1995 年提出[23],是一套以數(shù)字形式定義的承諾,承諾控制著數(shù)字資產(chǎn)并包含了合約參與者約定的權(quán)利和義務(wù)。智能合約的工作理論遲遲沒有實(shí)現(xiàn),一個(gè)重要原因是因?yàn)槿狈δ軌蛑С挚删幊毯霞s的數(shù)字系統(tǒng)和技術(shù),區(qū)塊鏈技術(shù)的出現(xiàn)解決了該問題。區(qū)塊鏈系統(tǒng)中的每個(gè)節(jié)點(diǎn)用戶可以通過發(fā)布一筆交易創(chuàng)建智能合約[24],并利用編程方式將智能合約設(shè)置為自己的所有權(quán)轉(zhuǎn)移規(guī)則、交易方式和狀態(tài)轉(zhuǎn)換函數(shù)。本文利用以太坊區(qū)塊鏈中的智能合約技術(shù),并使用Solidity語言編寫智能合約,第三方數(shù)據(jù)用戶將結(jié)果提供給完成部署的智能合約以驗(yàn)證醫(yī)療云服務(wù)器返回的檢索結(jié)果是否正確和完整,函數(shù)將正確的檢索結(jié)果返回給用戶,通過智能合約技術(shù)確保用戶獲得的文件數(shù)據(jù)未被云服務(wù)器惡意篡改或丟失信息。
算法形式化定義如下:
1)系統(tǒng)建立SetUp(1λ)→params:輸入安全參數(shù)λ和公開的雙線性映射B=(p,G1,G2,e(·,·)),醫(yī)療云服務(wù)器運(yùn)行該算法輸出系統(tǒng)參數(shù)params=(B,Ppub,H)。
2)密鑰生成KeyGen(γ)→(pk,msk):輸入隨機(jī)數(shù)γ∈?*p,醫(yī)生執(zhí)行該算法輸出密鑰對(duì)、公鑰pk 和主密鑰msk。
3)數(shù)據(jù)加密Encrypt(Dm,w,I,H)→(Cm,Cw,Δi,A,hi):輸入電子病歷文件Dm、關(guān)鍵字w和文件索引Im,醫(yī)生執(zhí)行該算法輸出加密文件Cm、關(guān)鍵字密文Cw和輔助值Δi并上傳至云服務(wù)器,同時(shí)輸出文件地址Ai。醫(yī)生對(duì)每一個(gè)Cmi∈Cm計(jì)算hi=H(Cmi),并將每一個(gè)Cmi∈Cm對(duì)應(yīng)的文件地址Ai與hi共同構(gòu)建為新交易,同時(shí)將交易廣播至聯(lián)盟鏈。
4)聚合密鑰提取Extract(msk,S)→kagg:輸入主密鑰msk 和集合S,通過醫(yī)院授權(quán)后醫(yī)生執(zhí)行該算法輸出聚合密鑰kagg。
5)陷門生成Trapdoor(kagg,wi)→Tr:輸入聚合密鑰kagg和待搜索關(guān)鍵字wi,數(shù)據(jù)用戶執(zhí)行該算法輸出聚合陷門Tr。
6)搜索驗(yàn)證Test(Tr,Δi,S)→(Ai,Cmi):輸入陷門Tr、輔助值Δi和集合S,醫(yī)療云服務(wù)器執(zhí)行該算法進(jìn)行搜索,當(dāng)驗(yàn)證結(jié)果為正確時(shí)則輸出密文文件Cmi和對(duì)應(yīng)的文件地址Ai,否則檢索失敗。
7)數(shù)據(jù)驗(yàn)證Verify(A′i,h′i)→δ:輸入文件地址A′i和h′i,聯(lián)盟鏈通過智能合約執(zhí)行該算法進(jìn)行驗(yàn)證,若輸出結(jié)果為δ則代表驗(yàn)證結(jié)果為正確,否則返回錯(cuò)誤結(jié)果。
本文電子病歷系統(tǒng)模型如圖3 所示,該系統(tǒng)主要包括患者、數(shù)據(jù)擁有者、數(shù)據(jù)用戶、醫(yī)療云服務(wù)器和聯(lián)盟鏈5 個(gè)實(shí)體:
1)患者:患者在醫(yī)院就醫(yī)時(shí)需要用個(gè)人身份證/醫(yī)??ㄟM(jìn)行醫(yī)院注冊,當(dāng)患者在醫(yī)院注冊后,醫(yī)生會(huì)根據(jù)對(duì)患者的診斷創(chuàng)建其個(gè)人的電子病歷,本文中當(dāng)患者在醫(yī)院就醫(yī)并創(chuàng)建了電子病歷,即默認(rèn)患者將個(gè)人的電子病歷授權(quán)給了醫(yī)院和醫(yī)生。
2)數(shù)據(jù)擁有者:數(shù)據(jù)擁有者指的是醫(yī)院和醫(yī)生。醫(yī)生在得到患者的授權(quán)后負(fù)責(zé)生成電子病歷,在電子病歷中提取并生成一系列關(guān)鍵字,將電子病歷和關(guān)鍵字進(jìn)行加密并計(jì)算加密文件的哈希值,并將加密文件和加密的關(guān)鍵字共同上傳至醫(yī)療云服務(wù)器,然后將醫(yī)療云服務(wù)器返回的文件地址和密文的哈希值構(gòu)建為新交易廣播至聯(lián)盟鏈。
3)數(shù)據(jù)用戶:數(shù)據(jù)用戶指的是醫(yī)療機(jī)構(gòu)和政府等權(quán)威機(jī)構(gòu),且包括醫(yī)院和醫(yī)生在內(nèi)的聯(lián)盟鏈中的成員。數(shù)據(jù)用戶向醫(yī)院進(jìn)行數(shù)據(jù)請求,當(dāng)醫(yī)院授權(quán)給醫(yī)生后,醫(yī)生生成相關(guān)文件的聚合密鑰,數(shù)據(jù)用戶將生成的聚合陷門發(fā)送給醫(yī)療云服務(wù)器得到數(shù)據(jù)文件,獲取數(shù)據(jù)后計(jì)算密文的哈希值并發(fā)送給聯(lián)盟鏈,同時(shí)通過智能合約驗(yàn)證數(shù)據(jù)是否完整正確。
4)醫(yī)療云服務(wù)器:醫(yī)療云服務(wù)器主要負(fù)責(zé)存儲(chǔ)醫(yī)生上傳的加密文件和加密關(guān)鍵字,并將存儲(chǔ)的數(shù)據(jù)文件地址返回給數(shù)據(jù)擁有者。當(dāng)數(shù)據(jù)用戶上傳聚合陷門時(shí),醫(yī)療云服務(wù)器會(huì)進(jìn)行搜索驗(yàn)證,只有當(dāng)結(jié)果為正確時(shí)才會(huì)將數(shù)據(jù)文件和文件地址一起返回給數(shù)據(jù)用戶,否則檢索失敗。
5)聯(lián)盟鏈:聯(lián)盟鏈節(jié)點(diǎn)負(fù)責(zé)將醫(yī)生上傳的對(duì)應(yīng)密文哈希值和文件地址構(gòu)建的新交易進(jìn)行驗(yàn)證并打包放入?yún)^(qū)塊中,當(dāng)用戶發(fā)送密文哈希值和相應(yīng)的文件地址時(shí),聯(lián)盟鏈通過已部署好的智能合約驗(yàn)證用戶得到的數(shù)據(jù)正確性和完整性,當(dāng)數(shù)據(jù)正確時(shí)觸發(fā)智能合約返回正確驗(yàn)證結(jié)果,否則返回錯(cuò)誤驗(yàn)證。
圖3 電子病歷系統(tǒng)模型Fig.3 System model of electronic medical record
2.3.1 功能性需求
本文方案需滿足以下3 個(gè)功能性需求:
1)緊湊性,確保聚合密鑰的大小獨(dú)立于分享的文件數(shù)量。對(duì)于一組密鑰{ki}(i∈S),將其密鑰聚合Extract(msk,S)→kagg,在設(shè)計(jì)方案時(shí)需要在后續(xù)步驟不失效的情況下將密鑰集聚合為單個(gè)密鑰。
2)可搜索性,使用戶提供的任何關(guān)鍵字在可搜索加密文檔上生成所需的陷門,即在減少密鑰數(shù)量的同時(shí)保留搜索功能。對(duì)于每一個(gè)包含關(guān)鍵字w的文檔集,要求其如果得到陷門Trapdoor(kagg,wi)→Tr,則應(yīng)計(jì)算出Test(Tr,Δi,S)→(Ai,Cmi),并且通過驗(yàn)證。
3)安全授權(quán),通過聚合密鑰將關(guān)鍵字的搜索權(quán)委托給數(shù)據(jù)用戶。為確保任何擁有委托聚合密鑰的用戶都可以執(zhí)行關(guān)鍵字搜索,要求陷門生成算法的輸入是不能公開的,即這些輸入不應(yīng)該依賴任何用戶的私人信息。
2.3.2 安全性需求
任何可搜索的聚合密鑰加密方案應(yīng)滿足以下兩個(gè)安全性需求:
1)聚合密鑰安全性,攻擊者無法搜索沒有數(shù)據(jù)擁有者授權(quán)的任意關(guān)鍵字,即攻擊者不能對(duì)已知聚合密鑰但無關(guān)的文檔進(jìn)行關(guān)鍵字搜索,也不能根據(jù)已知密鑰為其他文檔集生成新的聚合加密密鑰。
2)陷門和關(guān)鍵字安全性,攻擊者無法從陷門中確定檢索中使用的關(guān)鍵字,只能通過觀察獲得關(guān)鍵字信息,即用戶可能會(huì)要求不受信任的云服務(wù)器搜索敏感詞,但不會(huì)將該敏感詞透露給云服務(wù)器。
基于密鑰聚合的密文檢索流程具體如下:
1)系統(tǒng)建立:醫(yī)療云服務(wù)器輸入安全參數(shù)λ和公開的雙線性映射B=(p,G1,G2,e(·,·)),定義一個(gè)雙線性映射e:G1×G1→G2和抗碰撞的哈希函數(shù)H:{0,1}*→G1,且循環(huán)群G1的階為p(2λ≤p≤2λ+1),隨機(jī)選取生成元g∈G1和,計(jì)算。假設(shè)n為醫(yī)療云服務(wù)器可存儲(chǔ)的最大電子病歷數(shù),醫(yī)療云服務(wù)器輸出系統(tǒng)參數(shù)params=(B,Ppub,H),其中。
3)數(shù)據(jù)加密:醫(yī)生使用該算法加密數(shù)據(jù),將每個(gè)患者的電子病歷加密為Cm=,并將電子病歷中出現(xiàn)的所有癥狀提取生成一系列關(guān)鍵字w={w1,w2,…,wn}。為生成關(guān)鍵字密文,該算法需輸入文件索引Im∈{ 1,2,…,n},醫(yī)生需要進(jìn)行以下操作:
(2)對(duì)每一個(gè)關(guān)鍵字wi輸出所有關(guān)鍵字密文,并將Cm和Cw上傳至醫(yī)療云服務(wù)器,醫(yī)療云服務(wù)器向醫(yī)生返回每個(gè)文件在服務(wù)器中的存儲(chǔ)地址A={A1,A2,…,An}。
圖4 聯(lián)盟鏈區(qū)塊數(shù)據(jù)結(jié)構(gòu)Fig.4 Consortium chain block data structure
4)聚合密鑰提?。横t(yī)生使用該算法生成一個(gè)可搜索聚合加密密鑰kagg。當(dāng)數(shù)據(jù)用戶向醫(yī)生請求相關(guān)電子病歷時(shí),醫(yī)生需要先向醫(yī)院進(jìn)行申請,在醫(yī)院對(duì)醫(yī)生授權(quán)后,對(duì)于任何包含關(guān)鍵字索引的文檔子集S?{1,2,…,n},醫(yī)生需要輸入主密鑰msk 并輸出聚合密鑰,為將電子病歷中關(guān)鍵字搜索權(quán)委托給數(shù)據(jù)用戶,需要將聚合密鑰kagg和集合S同時(shí)發(fā)送給數(shù)據(jù)用戶。
5)陷門生成:數(shù)據(jù)用戶使用該算法生成可搜索的關(guān)鍵字陷門。當(dāng)數(shù)據(jù)用戶得到聚合密鑰kagg后,對(duì)于聚合密鑰kagg所有相關(guān)的文檔,該算法將會(huì)對(duì)搜索關(guān)鍵字wi={w1,w2,…,wn}僅生成一個(gè)聚合陷門Tr且計(jì)算公式為。數(shù)據(jù)用戶在生成陷門后,將陷門Tr 以及集合S發(fā)送至醫(yī)療云服務(wù)器進(jìn)行搜索驗(yàn)證算法,只有通過搜索驗(yàn)證,用戶才可以獲得數(shù)據(jù)。
6)搜索驗(yàn)證:云服務(wù)器使用該算法執(zhí)行關(guān)鍵字搜索。根據(jù)該算法輸入陷門Tr 與可搜索加密密鑰ki的輔助值Δi=(c1,c2,μ),云服務(wù)器進(jìn)行計(jì)算驗(yàn)證,當(dāng)結(jié)果正確時(shí)向用戶返回加密的密文文件Cmi和相對(duì)應(yīng)的文件地址Ai,若驗(yàn)證結(jié)果錯(cuò)誤則檢索失敗,其中,計(jì)算公式為,正確性驗(yàn)證過程為:
7)數(shù)據(jù)驗(yàn)證:將服務(wù)器部署的智能合約相關(guān)變量和函數(shù)接口采用Solidity 語言編寫,智能合約提供一個(gè)函數(shù)接口進(jìn)行數(shù)據(jù)驗(yàn)證并保證數(shù)據(jù)用戶得到的文件未被云服務(wù)器篡改。當(dāng)數(shù)據(jù)用戶得到云服務(wù)器返回的數(shù)據(jù)文件C′mi和相應(yīng)的文件地址A′i,數(shù)據(jù)用戶通過公共參數(shù)計(jì)算h′i=H(C′mi)并將A′i和H(C′mi)發(fā)送給聯(lián)盟鏈,聯(lián)盟鏈節(jié)點(diǎn)通過地址找到包含此交易的相應(yīng)區(qū)塊,并使用智能合約算法進(jìn)行驗(yàn)證,數(shù)據(jù)驗(yàn)證階段的智能合約算法具體流程如算法1 所示,當(dāng)H(C′mi)=H(Cmi)和A′i=Ai時(shí),返回正確驗(yàn)證結(jié)果δ,否則返回錯(cuò)誤結(jié)果。
算法1驗(yàn)證階段的智能合約算法
為滿足本文方案的安全需求,假設(shè)醫(yī)療云服務(wù)器僅根據(jù)本文方案提供合法的服務(wù),授權(quán)用戶可以嘗試訪問權(quán)限范圍內(nèi)或權(quán)限范圍外的數(shù)據(jù)。此外,涉及醫(yī)療云服務(wù)器的通信通道被認(rèn)為是不安全的。基于以上考慮,本節(jié)將在聚合密鑰以及陷門和關(guān)鍵字安全性方面進(jìn)行具體分析。
本文要求任何擁有聚合密鑰的用戶都可以對(duì)集合S中的文檔進(jìn)行關(guān)鍵字搜索,但不能對(duì)集合S之外的文檔進(jìn)行關(guān)鍵字搜索。用戶也不能從已知的集合S中生成新的集合S′并生成其他的可搜索聚合加密密鑰。每個(gè)擁有聚合密鑰的數(shù)據(jù)用戶都可以成功地執(zhí)行關(guān)鍵字檢索。數(shù)據(jù)用戶將得到的聚合密鑰生成一個(gè)聚合陷門Tr,然后執(zhí)行搜索驗(yàn)證算法進(jìn)行關(guān)鍵字檢索,通過下式可以驗(yàn)證檢索算法的正確性:
由此可知,擁有聚合密鑰的數(shù)據(jù)用戶可以成功地執(zhí)行關(guān)鍵字檢索。攻擊者無法對(duì)任何不在聚合密鑰范圍內(nèi)的文檔執(zhí)行關(guān)鍵字檢索,即使服務(wù)器與惡意授權(quán)用戶串通,也無法對(duì)任何不在聚合密鑰范圍內(nèi)的文檔執(zhí)行關(guān)鍵字檢索。攻擊者A可能為云服務(wù)器或惡意授權(quán)用戶,此類攻擊者可能試圖對(duì)不在其聚合密鑰范圍內(nèi)的文檔執(zhí)行關(guān)鍵字搜索。從中可以看出,如果PS是由錯(cuò)誤的文檔集j∈S′生成,則e(kagg,gt)與e(PS,gt)在等式中無法消除,因此必須在聚合密鑰相同的文檔集合S上進(jìn)行計(jì)算。基于上述情況,攻擊者可能使用目標(biāo)集合S′作為輸入,但會(huì)因?yàn)槲臋n索引Im?S,在搜索驗(yàn)證算法中返回錯(cuò)誤結(jié)果。
攻擊者無法通過已知的聚合密鑰為任何新文檔集合生成新的聚合密鑰。假設(shè)一個(gè)擁有文檔集合S′的聚合密鑰kagg的攻擊者A想要嘗試為一組新的集合S′生成新的聚合密鑰。A需要已知任意文檔j∈S′的值,即使A已知聚合密鑰的值,由于每個(gè)乘數(shù)的值由數(shù)據(jù)擁有者的主密鑰γ生成,因此A無法從獲得的kagg值中獲取其中每個(gè)加密的乘數(shù),因此攻擊者A無法從已知的聚合密鑰中為任何新的文檔集合生成新的聚合密鑰。
假設(shè)攻擊者A可能會(huì)獲得相關(guān)信息來發(fā)起攻擊,例如當(dāng)云服務(wù)器獲取到存儲(chǔ)的關(guān)鍵字密文、可搜索加密密鑰ki的輔助值Δi和提交的陷門Tr 等時(shí),對(duì)于惡意的授權(quán)用戶假設(shè)擁有聚合密鑰以及可在文檔集合S中執(zhí)行關(guān)鍵字搜索的權(quán)力,然而即使云服務(wù)器能獲取到這些信息,本文方案仍具備查詢隱私安全性。
4.2.1 陷門安全性
假設(shè)攻擊者A在獲得提交的陷門Tr=kagg·后,只有取得聚合密鑰kagg才能在搜索時(shí)獲得關(guān)鍵字,在此情況下由于攻擊者A已知系統(tǒng)參數(shù)以及文檔集合S,為計(jì)算kagg,攻擊者A需先計(jì)算每一個(gè)文檔j∈S的,其中γ為數(shù)據(jù)擁有者的主密鑰且為保密值,而A計(jì)算得到γ的概率可以忽略不計(jì),因此攻擊者A無法發(fā)起攻擊,可見本文方案具備陷門安全性。
4.2.2 關(guān)鍵字安全性
假設(shè)云服務(wù)器和攻擊者A試圖在存儲(chǔ)的數(shù)據(jù)中學(xué)習(xí)且假設(shè)已知以及cw=,A可能嘗試發(fā)起以下攻擊:
1)從已知的c1和c2中檢索t的值,但在離散對(duì)數(shù)問題中A不能計(jì)算得到t的值。
將本文方案與文獻(xiàn)[17-18,23]方案在區(qū)塊鏈應(yīng)用、安全搜索、密鑰聚合和可驗(yàn)證性方面進(jìn)行對(duì)比,如表1 所示,其中,“√”表示具備該功能特性,“×”表示不具備該功能特性,文獻(xiàn)[17-18,23]方案的應(yīng)用環(huán)境均為云服務(wù)器,而本文方案是云服務(wù)器和區(qū)塊鏈的結(jié)合??梢钥闯?,文獻(xiàn)[17,23]方案不具備可驗(yàn)證功能,而本文方案通過應(yīng)用區(qū)塊鏈智能合約技術(shù)可驗(yàn)證醫(yī)療云服務(wù)器是否惡意修改信息或丟失數(shù)據(jù),保證了用戶獲取文件的正確性和完整性,相比其他方案在區(qū)塊鏈應(yīng)用、安全搜索、密鑰聚合和可驗(yàn)證性方面更具優(yōu)勢。
表1 4 種方案的功能特性對(duì)比Table 1 Comparison of functional characteristics of four schemes
表2 為本文方案與文獻(xiàn)[17-18]方案的運(yùn)算時(shí)間對(duì)比結(jié)果,其中,Tp表示雙線性映射配對(duì)運(yùn)算時(shí)間,Te表示指數(shù)運(yùn)算時(shí)間,Tm表示乘法運(yùn)算時(shí)間,Th表示哈希函數(shù)運(yùn)算時(shí)間。已知常用的密碼操作時(shí)間排序?yàn)門p>Te>Tm>Th且雙線性映射配對(duì)Tp的運(yùn)算時(shí)間遠(yuǎn)大于其他密碼操作的時(shí)間。結(jié)合數(shù)據(jù)加密階段和數(shù)據(jù)搜索階段的運(yùn)算時(shí)間可以看出,本文方案的整體運(yùn)算時(shí)間最少。
表2 3 種方案的運(yùn)算時(shí)間對(duì)比Table 2 Comparison of computing time of three schemes
為更準(zhǔn)確地評(píng)估密文檢索方案的實(shí)際性能,本文基于2.60 GHz CPU、8 GB 內(nèi)存的聯(lián)想筆記本和Linux 虛擬機(jī),并在真實(shí)數(shù)據(jù)集和由C 語言編寫的PBC 庫上進(jìn)行模擬實(shí)驗(yàn)。在實(shí)驗(yàn)中,將最大文件值n設(shè)置為500,關(guān)鍵字個(gè)數(shù)設(shè)置為1、10、20、30、40 和50,實(shí)驗(yàn)取50 次運(yùn)行結(jié)果的平均值。為體現(xiàn)本文方案的性能優(yōu)勢,將本文方案和文獻(xiàn)[17]方案數(shù)據(jù)加密和數(shù)據(jù)搜索階段的時(shí)間開銷進(jìn)行對(duì)比,如圖5、圖6 所示??梢钥闯?,因?yàn)楸疚姆桨咐枚嚓P(guān)鍵字加密算法,所以在數(shù)據(jù)加密階段的時(shí)間開銷隨著關(guān)鍵字的增加而增長,且在關(guān)鍵字個(gè)數(shù)大于10 時(shí),本文方案的數(shù)據(jù)加密開銷低于文獻(xiàn)[17]方案。在數(shù)據(jù)搜索階段,本文方案和文獻(xiàn)[17]方案的時(shí)間開銷隨著關(guān)鍵字個(gè)數(shù)的增加成正相關(guān)變化,且時(shí)間開銷低于文獻(xiàn)[17]方案,可見本文方案的搜索效率更高,系統(tǒng)性能更優(yōu)。
圖5 數(shù)據(jù)加密階段的時(shí)間開銷Fig.5 Time cost of data encryption phase
圖6 數(shù)據(jù)搜索階段的時(shí)間開銷Fig.6 Time cost of data search phase
本文提出一種面向區(qū)塊鏈電子病歷的基于密鑰聚合的密文檢索方案。該方案基于云服務(wù)器和聯(lián)盟鏈進(jìn)行構(gòu)建,將醫(yī)院醫(yī)生和醫(yī)療機(jī)構(gòu)、政府等權(quán)威機(jī)構(gòu)在內(nèi)的聯(lián)盟成員分別定義為數(shù)據(jù)擁有者和數(shù)據(jù)用戶,使數(shù)據(jù)加密上傳至醫(yī)療云服務(wù)器,并將數(shù)據(jù)密文哈希值打包至聯(lián)盟鏈,同時(shí)使用密鑰聚合技術(shù)對(duì)多個(gè)文件生成一個(gè)聚合陷門進(jìn)行安全檢索,并利用聯(lián)盟鏈的智能合約技術(shù)實(shí)現(xiàn)數(shù)據(jù)驗(yàn)證,防止醫(yī)療云服務(wù)器的惡意攻擊行為。通過理論分析與數(shù)值模擬實(shí)驗(yàn)驗(yàn)證了該方案的安全性與高效性。