[0035] 本發(fā)明的有益效果是:
[0036] (1)電子病歷的可驗證外包存儲和檢索的方法及系統(tǒng)是基于云端信息數(shù)據(jù)的安全 存儲及可驗證計算方案,主要通過對電子病歷數(shù)據(jù)加密保證了數(shù)據(jù)在上傳過程中的安全, 防止了云端數(shù)據(jù)隱私被泄露、竊取及修改等不安全情況;
[0037] (2)本方法運用已有的BGN加密方案和VC方案的有效結(jié)合,實現(xiàn)了對個人電子病歷 數(shù)據(jù)安全有效檢索及可驗證正確性的操作,防止云端不誠實的計算,同時充分利用云端的 計算能力,使電子病歷的可驗證外包存儲和檢索成為現(xiàn)實,大大提高了方案的效率。
【附圖說明】
[0038] 圖1是本發(fā)明實施例的系統(tǒng)結(jié)構(gòu)圖;
[0039] 圖2是本發(fā)明實施例的方法流程圖;
[0040]圖3是本發(fā)明實施例的方法中檢索計算流程圖;
[0041 ]圖4是本發(fā)明實施例的方法中檢索的可驗證計算框架圖。
【具體實施方式】
[0042] 下面將結(jié)合本方案的附圖,對本方案實施過程進行清除完整的描述,顯然,所描述 的實施方案是方案核屯、過程。基于本方案中的實施例,在本領(lǐng)域人員在沒有做出創(chuàng)新性勞 動的前提下,所有實施步驟均為本方案的保護范圍。
[0043] 在傳統(tǒng)的可驗證外包方案中,可W實現(xiàn)用戶輸入的保密性,但不能實現(xiàn)多項式函 數(shù)輸入的保密性;本發(fā)明結(jié)合了多線性映射、可驗證計算方案W及BGN加密算法,實現(xiàn)了用 戶的輸入W及函數(shù)的保密性,且能有效驗證服務(wù)器計算結(jié)果的外包計算方案。
[0044] 請見圖1,本發(fā)明提供的一種電子病歷的可驗證外包存儲和檢索系統(tǒng),由電子病歷 上傳和下載模塊、數(shù)據(jù)處理模塊和電子病歷檢索模塊Ξ大功能模塊組成;電子病歷上傳和 下載模塊用于電子病歷數(shù)據(jù)在服務(wù)器和用戶本地之間的傳輸,同時負責(zé)用戶上傳電子病歷 數(shù)據(jù)時對明文的加密W及用戶下載電子病歷數(shù)據(jù)時對密文的解密,為電子病歷數(shù)據(jù)檢索模 塊提供需求;數(shù)據(jù)處理模塊用于處理用戶上傳的電子病歷數(shù)據(jù)的密文并進行存儲;電子病 歷檢索模塊用于進行病歷檢索關(guān)鍵字的加密和密文的計算。
[0045] 請見圖2,本發(fā)明提供的一種電子病歷的可驗證外包存儲和檢索方法,包括W下步 驟:
[0046] 步驟1:新用戶注冊;新用戶在云存儲平臺通過注冊,從而加入云平臺;新用戶輸入 注冊信息,云端根據(jù)用戶輸入的信息生成一對新的密鑰,并分發(fā)給新用戶;
[0047] 步驟1.1:用戶向云服務(wù)器發(fā)送注冊請求后,服務(wù)器反饋一個注冊頁面給用戶;
[0048] 步驟1.2:用戶在注冊頁面輸入注冊個人信息,并向服務(wù)器發(fā)送用戶名和密碼;
[0049] 步驟1.3:服務(wù)器端接收用戶名和密碼,將密碼Whash散列值的形式存于服務(wù)器;
[0050] 步驟2:用戶登錄;用戶根據(jù)注冊信息和分發(fā)的密鑰,登錄云存儲平臺,與云存儲系 統(tǒng)進行功能交互,實現(xiàn)數(shù)據(jù)上傳、下載W及檢索功能;
[0051] 步驟2.1:用戶在平臺登錄頁面輸入用戶名和密碼;
[0052] 步驟2.2:服務(wù)器接收密碼,并對用戶輸入的密碼進行hash運算,得到密碼的hash 值;
[0053] 步驟2.3:服務(wù)器將計算得到的密碼hash值與服務(wù)器端存儲的hash值進行比較,若 二者一致則允許用戶登入,否則拒絕登錄;
[0054] 步驟3:用戶上傳或下載信息;
[0055] 用戶將電子病歷數(shù)據(jù)從本地上傳到服務(wù)器或從服務(wù)器下載到本地,其中包含了用 戶上傳電子病歷數(shù)據(jù)時對數(shù)據(jù)明文的加密W及用戶從服務(wù)器下載數(shù)據(jù)時對密文的解密;
[0056] 步驟3.1:加密;將電子病歷數(shù)據(jù)的明文W進行比特分組,消息分組為W = W1W2. . .Wn E{〇,l}n,運用加密算法對每個明文分組Wi進行加密得到密文Ci,再將分組密文進行整合, 得到密文C = C1C2. . .Cn;
[0057] 步驟3.2:上傳;用戶將加密后得到的合并密文c上傳至服務(wù)器;
[0058] 步驟3.3:下載;用戶從服務(wù)器下載所需電子病歷數(shù)據(jù)的密文至本地;
[0059] 步驟3.4:解密;用戶運用解密算法對下載的密文進行解密,得到所需電子病歷數(shù) 據(jù)的明文結(jié)果;
[0060] 步驟4:用戶檢索云端電子病歷數(shù)據(jù);
[0061] 用戶在本地輸入病歷檢索關(guān)鍵字,并對關(guān)鍵字進行加密處理,將密文上傳給云服 務(wù)器,云服務(wù)器接收密文,運用檢索算法對密文進行檢索,生成檢索結(jié)果的密文W及對結(jié)果 正確性的證明;
[0062] 步驟4.1:用戶輸入病歷檢索關(guān)鍵字,在此處將關(guān)鍵字定義為f(i),對于每個ie [η]都有 f(i)=wi;
[0063] 步驟4.2:運用步驟3.1中加密方法,對電子病歷檢索關(guān)鍵字進行加密處理,將加密 后的病歷密文上傳給云服務(wù)器;
[0064] 步驟4.3:云服務(wù)器接收電子病歷檢索關(guān)鍵字的密文,運用可驗證計算算法對密文 進行檢索計算,最終生成檢索結(jié)果的密文并附帶一個對結(jié)果正確性的證明;
[0065] 其中生成檢索結(jié)果的密文并附帶一個對結(jié)果正確性的證明,其具體實現(xiàn)過程是根 據(jù)輸入函數(shù)f(x)的加密結(jié)果化c(f(x))w及函數(shù)輸入a的加密形式0,結(jié)合BGN方案,服務(wù)器 返回計算加密函數(shù)值P = Enc(f (a))和一個結(jié)果正確性證明3T = Enc(c(s)),其中
因 BGNk方案能支持無限次的加法同態(tài)和k-1次乘法同態(tài),故,已知EnC (mi),. . .,Enc(mk),會bi十算Enc(mi+--.+mk)和Enc(mi. . .mk),Enc(mi+--.+mk) =Enc(mi). . .Enc (m〇Enc(mi. . .mk) = ek巧nc(mi). . .Enc(mk)),其中l(wèi)ine表不BGN加密。
[0066] 步驟5:用戶解密并驗證檢索結(jié)果;
[0067] 服務(wù)器將檢索結(jié)果的密文發(fā)送給用戶,用戶下載密文進行解密,同時對檢索結(jié)果 進行正確性驗證,若正確,則接受,反之,則不接受;
[0068] 步驟5.1:用戶接收服務(wù)器發(fā)送的檢索密文結(jié)果并利用步驟3.4中的解密算法進行 解密,得到電子病歷檢索明文;
[0069] 步驟5.2:用戶利用服務(wù)器發(fā)送的結(jié)果正確性證明,對檢索計算結(jié)果進行驗證,若 驗證結(jié)果正確,則輸出計算結(jié)果,否則用戶不接受結(jié)果。
[0070] 請見圖3和圖4,本實施例的用戶檢索過程中數(shù)據(jù)明文的加密和數(shù)據(jù)密文的解密方 法是:用戶開始檢索^輸入檢索關(guān)鍵字^關(guān)鍵字加密^計算加密函數(shù)輸入及證明^下載加 密數(shù)據(jù),解密并驗證。具體流程如下:
[0071] (1)用戶輸入電子病歷檢索關(guān)鍵字;本發(fā)明中將其定義為多項式函數(shù)f(x)和函數(shù) 的輸入X,可表示為f (X) =f〇+flX+'''+fnXn。
[0072] (2)關(guān)鍵字加密;輸入安全參數(shù)λ用于隨機密鑰生成算法KeyGen,生成一對公鑰pk 和私鑰sk。具體步驟如下:
[007;3] 步驟1:用戶輸入的函數(shù)f(x)為一元η階多項式,可表示為f(x)=fo+fix+-+fnxn。 [0074]步驟2:選取 Γ =(N,Gi,. . .,Gk(n+i),e,gi,. . .,gk(n+i))^G(l\k(n+l)),G(l\k(n+ 1))為群生成器,輸出一組階為N,生成元為gl,...,阱(nU)的循環(huán)群Gl,. . .,Gk(n+l),其中,N = pq,p和q為2個Abit的素數(shù),k二 n〇g(n + 1)1。
[007引步驟3:定義多線性映射:ei:GiX . . . XGi一Gi,ie{2, . . .,k(n+l)},對任意ai,..., aiEZN,&細(1,,.,.,如呼=成"1'氣所W對于任何0'。! G 斯巧巧,可W計算e(化α;,斯α;')二化+產(chǎn)%'。 [0076] 選取s^Zn,并計算t = gif(s>。對于每一個i e{〇,l,...,n},選取Vi^ZN,并計算 .二化·^巧。生成的公鑰
'私鑰sk=(p,q,s,t),其中h = uQ'u^RGi,即u = giS,5eZN,丫 =( 丫 0, . . .,丫η)。
[0077]步驟4:用戶輸入私鑰sk和函數(shù)的輸入X,問題生成算法ProGen輸出加密后的輸入 Οχ并同時生成一個驗證密鑰τχ。假設(shè)用戶的輸入為a2"-1;),取ri^ZN,le[k], fe = Γ1雌(η + 1)1,計I
問題生成算法經(jīng)過BG化k+i加密后輸 出的密文為(01,化,...,化),同時生成一個驗證密鑰Τχ=丄由用戶保存。
[007引(3)計算加密函數(shù)輸入及證明。服務(wù)器收到加密后的輸入0=(01,02,...,化),運用 Compute算法計算加密函數(shù)值Ρ和驗證值π。具體步驟如下;
[0079] 步驟1:計算加密函數(shù)值Ρ。對于任意的1£{0,1,..