張曉均,張經偉,黃 超,唐 偉
(1.西南石油大學 計算機科學學院,成都 610500;2.西南石油大學 網絡空間安全研究中心,成都 610500)
移動互聯、物聯網、云計算和大數據等新興信息技術與信息感知方式的快速發展,改變了傳統的醫療與健康服務模式[1-3]。近年來,隨著移動醫療等新技術的應用,電子健康檔案、臨床檢測數據、可穿戴傳感器感知的個人健康狀態記錄等醫療數據都呈現爆炸式增長[4-6]。醫療大數據處理技術在臨床決策支持系統、遠程病人監控數據以及對病人健康檔案等精準分析方面發揮著重要作用,已成為提高診療效率、減少可避免的人為誤差與緩解醫療資源分布不均問題的有效途徑。同時,云計算技術因其高效的計算能力和強大的存儲空間,可以有效集成在無線醫療網絡環境中,減緩醫療數據劇增所帶來的存儲和處理壓力[7-9]。
盡管云計算技術在管理健康醫療大數據方面呈現明顯優勢,但是外包云存儲醫療數據容易遭受各種安全性威脅[10-12],其中,受影響最大的是數據的機密性[13]。事實上,用戶健康醫療數據的敏感性導致其往往以密文形式存儲在云服務器,這將失去部分甚至大部分數據的可用性。因此,如何在數據隱私得到有效保護的情況下對云存儲外包醫療數據進行快速醫學統計分析,具有重要的研究價值和實際意義。
加密數據聚合[14]可有效促進具有隱私保護的醫療數據的統計分析。密碼學中具有加法同態特性的加密算法首先被集成到聚合方案中[15],然后通過云服務器對大量的醫療數據密文進行同態聚合,并將聚合后的密文發送給醫療數據分析中心(DAC),同時有效降低通信帶寬,最后在醫療數據分析中心端進行聚合數據解密,進一步進行具有隱私保護的大數據的統計分析。此外,數據完整性在醫療云存儲環境應用中也極為關鍵[16-17],原因是惡意敵手為了某種利益可能在用戶和云服務器的傳輸信道中截取數據并執行替換或篡改攻擊。由于云服務器同時要處理來自不同用戶的海量醫療數據,在進行加密聚合的過程中,可能會因操作失誤導致錯誤地聚合原始外包密文數據,這樣最終返回的聚合數值并非真實結果。因此,可驗證的加密數據聚合方案是醫療數據分析中心進行大數據深度準確統計分析的有效保證。
近年來,已出現各種加密聚合方案,但這些方案用在醫療數據統計分析領域還相對較少[18-19],而且很多方案缺乏可驗證功能[20-21]。一些可以部署在無線醫療網絡且支持可驗證功能的加密聚合方案[22-23],由于在設計過程中需要的雙線性對計算開銷與原始用戶數量呈線性增長趨勢,因此方案效率不高。
本文提出一種可驗證的外包云存儲醫療加密數據統計分析方案,該方案采用改進的BGN 同態加密算法使云服務器可以對密文進行聚合運算,從而減輕醫療數據分析中心的計算壓力。同時,設計一種基于橢圓曲線的同態數字簽名算法,使醫療數據分析中心在使用云端聚合的數據時,只需執行恒定的運算量即可高效地驗證加密醫療聚合數據的完整性。
基于橢圓曲線的雙線性對定義如下:
定義1給定一個雙線性對映射其中,加法循環群G1與乘法循環群G2有共同的階q1,且V是G1的生成元。基于橢圓曲線的雙線性對滿足以下性質:
1)雙線性。對任意2 個群上的元素P、V?G1和任意的a、b?,雙線性對運算滿足
2)非退化性。對于加法循環群上存在的2 個元素P、V?G1,,此處1 是G2的單位元。
3)可計算性。對于加法循環群上任意的2 個元素P、V?G1,都能找到一個有效的算法計算(P,V)。
BGN 公鑰加密系統[24]主要包括密鑰生成、加密和解密3 個算法。
1)密鑰生成。給定安全參數κ,合數階雙線性對產生器輸出(n,g,G,GT,e),其中,n=pq,p、q是長度為κbit的大素數,G、GT是2 個階為n的循環群,g是n階循環群G的生成元,e:G×G→GT是一個非退化的雙線性對映射。設置u=gp,則u是G的q階循環子群的生成元。公鑰是pk=(n,G,GT,e,g,u),私鑰是sk=q。
2)加密。假設明文空間是一個整數集{1,2,…,T},其中,T
3)解密。給定密文c=gmur,利用私鑰q計算cq=(gmur)q=(gq)m,然后計算以gq為底的cq的離散對數,即可恢復m。由于0 ≤m≤T,根據文獻[24]中Pollard的lambda 解密方法,BGN 公鑰加密算法可在時間復雜度內解密出明文。
可驗證的外包云存儲醫療加密數據聚合方案的系統模型,包含用戶、云服務器、醫療數據分析中心和可信中心(TA)4 個通信實體,如圖1 所示。

圖1 加密數據聚合方案的系統模型Fig.1 System model of encrypted data aggregation scheme
系統模型中的4 個通信實體具體如下:
1)用戶。通過可穿戴設備收集健康醫療數據,使用移動終端計算設備對醫療數據進行加密,產生密文對應的數字簽名,最后將所有密文及對應的數字簽名集合上傳到遠程云服務器。
2)云服務器。擁有巨大的計算和存儲能力,在本模型中主要用于存儲用戶上傳的加密數據及數字簽名集合。一旦接收到醫療數據分析中心的挑戰請求,云服務器會對挑戰位置的加密數據及數字簽名進行同態聚合運算,并返回最終結果到醫療數據分析中心。
3)醫療數據分析中心。當接收到來自云服務器返回的聚合結果時,醫療數據分析中心首先進行加密數據完整性驗證,然后利用私鑰來解密以獲得不同用戶醫療數據的聚合值,最后對用戶的醫療數據進行隱私保護統計分析。
4)可信中心。負責設置并發布系統的公開密碼參數,系統初始化階段通過安全信道為各通信實體發送私鑰。
本文提出的可驗證外包云存儲醫療加密數據聚合方案,重點解決云存儲醫療數據的機密性、完整性以及數據統計分析可用性問題。因此,本系統中引入的可信中心實際上需要使用相關身份認證技術[25-27],對每個通信實體進行身份驗證后才能進入醫療云存儲系統并為其頒發對應的公私鑰。
可驗證外包云存儲醫療加密數據聚合方案具體包括4 個階段:系統初始化,醫療數據加密和簽名上傳,加密醫療數據同態聚合,驗證和聚合數據解密。
1)系統初始化。可信中心TA 生成用于同態加密、同態數字簽名和驗證的系統公共參數。同時,TA 將秘密參數發送給醫療數據分析中心以及對應的用戶。系統初始化階段具體步驟如下:
(1)TA 選取長度相等的大素數p1和p2,滿足n=p1p2,設置雙線性對映射e:Ga×Ga→Gb,其中,Ga為n階乘法循環群,g為Ga的生成元,選取Ga的p1階子群的生成元x=。
(2)TA 選取有限域Fp(p是大素數)上的橢圓曲線E,并基于該橢圓曲線設置另外一個雙線性對映射:G1×G1→G2,V是基于橢圓曲線E的q階加法循環群G1的生成元。TA 設置需要外包到云服務器的具有某一類型的醫療數據的用戶數量為N,對于第i個用戶,TA為其生成私鑰zi?Zq,并計算公鑰Ui=ziV。TA設置2個抗碰撞的哈希函數H1:{0,1}*→G1,H2:{0,1}*→。
最后,TA 公開如下的系統公共參數:

TA 通過安全信道將私鑰p1發送給醫療數據分析中心,將私鑰zi發送給對應的用戶i。
2)醫療數據加密和簽名上傳。用戶i利用醫療數據分析中心的公鑰生成醫療數據mi的密文,同時使用私鑰對密文數據產生對應的數字簽名σi,最后將密文和對應的數字簽名數據上傳到云服務器。醫療數據加密和簽名上傳階段具體步驟如下:
(1)對于明文數據mi,其最大值T小于p2,隨機選取si?Zn,計算密文
(2)計算數字簽名σi=(zi+H2(ci))H1(type),其中,type 是醫療數據的類型。
最后,每一個用戶i將自己生成的簽名數據和密文數據{σi,ci}一起上傳到遠程云服務器。
3)加密醫療數據同態聚合:當醫療數據分析中心需要分析某一類型的敏感醫療數據時,使用偽隨機數發生器生成含l個偽隨機數的偽隨機序列{t1,t2,…,tl-2,α,β},將醫療數據類型type 和偽隨機序列一起作為挑戰信息chal 發送給云服務器。然后,云服務器根據type 類型醫療數據上N個用戶的外包密文數據和這些數據對應的數字簽名,分別進行聚合。加密醫療數據同態聚合階段具體步驟如下:
(1)云服務器對N個加密數據進行同態聚合:

(2)根據雙線性對的運算性質和同態加密性質,對每個密文ci=Enc(mi,si)進行如下聚合:

(3)基于以上2個聚合數據值SC、QSC和挑戰信息,云服務器利用哈希函數H2產生新的隨機數tl-1=H2(SC||α)和tl=H2(QSC||β),云服務器進一步基于挑戰信息中的偽隨機序列{t1,t2,…,tl-2,tl-1,tl}對N個數字簽名數據σ1,σ2,…,σN進行聚合,σ=(tj H1(type)+σi),其中,i?{1,2,…,N},j?{1,2,…,l},l 最后,云服務器將所有聚合數據Agg={σ,c,U,SC,QSC}發送給醫療數據分析中心。 4)驗證和聚合數據解密:當接收到云服務器發送的聚合數據后,醫療數據分析中心執行數據完整性驗證,并對聚合密文SC 和QSC 進行解密。驗證和聚合數據解密階段具體步驟如下: (1)計 算tl-1=H2(SC||α)、tl=H2(QSC||β)以 及t=,其中,j=(i-1)modl+1,驗證如下方程是否成立: (2)一旦驗證上述方程成立,醫療數據分析中心確信外包云存儲密文數據未被云服務器錯誤聚合或者被外部敵手惡意替換、篡改。根據文獻[24]中Pollard 的lambda 解密方法,醫療數據分析中心利用私鑰p1進行條件性窮舉暴力破解,在時間復雜度為的情況下可有效求解離散對數,進而恢復該類醫療數據的統計和。同樣,醫療數據分析中心可有效求解離散對數,恢復醫療數據的平方和。 醫療數據分析中心通過檢驗完整性驗證方程是否成立,以判斷云服務器是否按照正確步驟進行同態加密聚合。完整性驗證方程推導如下: 當醫療數據分析中心得到正確的type 類型醫療數據的統計和以及平方和時,其可計算出該類醫療數據的平均值和方差統計數據,分別如下: 最后,醫療數據分析中心根據上述統計數據,可在保護用戶醫療數據隱私的情況下進行大數據處理和深度分析。圖2 所示為詳細的數據聚合與統計分析流程。 圖2 數據聚合與統計分析流程Fig.2 Procedure of data aggregation and statistical analysis 定理1可驗證的外包云存儲醫療加密數據聚合方案可確保用戶外包云存儲醫療數據的機密性。 證明每一個移動終端用戶i產生醫療數據mi的密文,發送到云服務器,ci本質上是改進的BGN同態加密系統的密文,由于此密碼系統滿足選擇明文安全的語義安全性,即便敵手在用戶和云服務器的公開信道截獲到相關密文,也不能恢復用戶的原始醫療數據。此外,一旦接收到來自N個用戶的所有加密醫療數據ci,i=1,2,…,N,云服務器則對N個加密數據進行同態聚合: 經過上述過程,這N個用戶的加密醫療數據被云服務器聚合為SC 和QSC 2 個密文,兩者本質上也分別是的改進BGN 加密系統的密文。同樣,根據BGN 加密系統選擇明文的語義安全性,即便敵手在云服務器和醫療數據分析中心的公開信道截獲到這2 個聚合密文,也不能恢復用戶原始醫療數據的統計和與平方和。 定理2可驗證的外包云存儲醫療加密數據聚合方案可確保云存儲加密醫療數據聚合的可驗證性。 證明在醫療數據加密和簽名上傳階段,加密醫療數據的數字簽名σi=(zi+H2(ci))H1(type)是用戶利用自己的私鑰zi產生的,任意敵手如果能在多項式時間內偽造一個新的數字簽名,其必然在多項式時間內可以求解基于橢圓曲線的離散對數困難問題。因此,單個密文的數字簽名偽造是不可行的。同樣,敵手在多項式時間內偽造聚合的加密醫療數據數字簽名(tj H1(type)+σi)(j=(i-1)modl+1)也是不可行的。此外,由于是用戶利用醫療數據分析中心的公鑰產生的,敵手自己可能產生一個替換的密文,因此云服務器在產生聚合密文信息SC=和之后,在返回給醫療數據分析中心的過程中,2 個信息可能被替換為SC*和QSC*。于是,篡改的聚合信息Agg*={σ,c,SC*,QSC*}要通過醫療數據分析中心的驗證,其必須滿足如下方程: 設置W=(tl-1+tl)H1(type),可以求解H1(type)和W之間的離散對數,這與基于橢圓曲線的離散對數困難問題假設是矛盾的。因此,根據以上安全性分析得知本文方案可確保云存儲加密醫療數據聚合的可驗證性,即醫療數據分析中心可以驗證云服務器加密聚合過程的正確性以及聚合密文的完整性。 將本文方案與文獻[22-23]中的2 種可驗證加密聚合方案進行性能分析與對比,所有方案都運行在處理器為Inter?CoreTMi5-2320 3.00 GHz和內存8.00 GB的主機上,操作系統為Windows10。所有方案均通過C 語言以及版本號為5.6.2 的密碼算法基礎函數庫MIRACL 來實現,使用的橢圓曲線密碼機制是MNT曲線,嵌入階是6。定義Tpa表示雙線性對運行時間,Tmu表示普通乘法運行時間,TMu表示橢圓曲線上加法循環群中倍點計算運行時間,TAd表示橢圓曲線上加法循環群中加法的運行時間,Tex表示普通模指數計算運行時間,TEx表示雙線性對映射中的模指數計算運行時間,THa表示映射到橢圓曲線上加法循環群的哈希函數運行時間,Tha表示普通哈希函數的運行時間。 在本文系統模型中,各種密文同態聚合和數字簽名同態聚合運算都外包給具有強大計算能力的遠程云服務器,同時,各個對比方案都是通過聚合計算來降低通信開銷的。因此,本節通過比較各方案在醫療數據分析中心端的數據處理中所需的計算開銷,以驗證本文方案在計算性能上的優勢。具體地,根據分析得知,文獻[22]中的SPPDA方案在驗證和聚合數據解密過程中,數據中心需要執行N+1 個雙線性對運算和N個普通的哈希函數,才能通過完整性驗證方程,同時,數據中心需要執行1 個雙線性對運算、1 個普通模指數計算和1 個普通乘法,才能實現完整聚合密文的解密。因此,SPPDA 方案中數據中心的總計算開銷為(N+2)Tpa+Tex+NTha+Tmu。文獻[23]方案在驗證和聚合數據解密過程中,數據中心需要執行N+1 個雙線性對運算、N個普通的哈希函數以及N-1 個普通乘法,才能通過完整性驗證方程,同時,數據中心需要執行1 個普通模指數計算實現聚合密文的解密。因此,文獻[23]方案數據中心的總計算開銷為(N+1)Tpa+NTha+(N-1)Tmu+Tex。在本文方案中,醫療數據分析中心需要執行3 個雙線性對運算、1 個橢圓曲線上加法循環群中的倍點計算、1 個映射到橢圓曲線上加法循環群的哈希函數以及2 個普通的哈希函數,才能通過完整性驗證方程,同時,醫療數據分析中心需要執行1 個普通模指數計算和1 個雙線性對映射中的模指數計算,才能實現聚合密文的解密。因此,本文方案中醫療數據分析中心總的計算開銷為3Tpa+TMu+THa+2Tha+Tex+TEx。3 種方案的驗證和聚合數據解密過程具體計算開銷如表1 所示。 表1 3 種方案的數據分析中心計算開銷對比Table 1 Comparison of computing cost of data analysis center of three schemes 從圖3 可以看出,本文方案醫療數據分析中心在計算效率方面具有明顯優勢,特別地,隨著移動終端用戶數目N的增加,文獻[22-23]方案的計算開銷均呈線性增長,而本文方案醫療數據分析中心的計算開銷保持恒定輕量級常量,并未隨著移動終端用戶數目N的增加而增加。 圖3 3 種方案的數據分析中心計算效率比較Fig.3 Comparison of computing efficiency of data analysis center of three schemes 醫療數據作為用戶的隱私數據,在醫生對患者的病情判斷中發揮重要作用,在統計分析醫療數據時必須保證其機密性和完整性。本文提出一種可驗證的云存儲醫療加密數據統計分析方案,基于改進的BGN 同態加密算法,在保障醫療數據機密性的同時,將加密數據聚合操作外包給云服務器,以緩解醫療數據分析中心的計算壓力。同時,設計一種基于橢圓曲線的數字簽名算法,使醫療數據分析中心可以快速驗證云服務器所聚合醫療數據的真實性。性能分析結果表明,該方案在醫療數據分析中心只需輕量級恒定計算開銷的情況下就能判斷數據在傳輸和存儲期間是否遭受篡改或替換,并據此對醫療數據進行均值和方差等統計分析。但本文研究尚未考慮用戶可能不愿意上傳敏感醫療數據、用戶數據傳輸中途被中斷或者其他惡意攻擊行為導致數據傳輸失敗等實際情況,因此,下一步將增加容錯機制并采用門限秘密共享技術,使得本文方案在有效傳輸數據達到門限值的情況下即可順利完成加密數據聚合。
2.3 加密數據聚合的正確性及統計分析



3 安全性證明


4 性能分析


5 結束語