曹 萌,余孫婕,曾 輝,史紅周
(1.移動計算與新型終端北京市重點實驗室(中國科學(xué)院計算技術(shù)研究所),北京 100190;2.中國科學(xué)院大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,北京 100049)
醫(yī)療信息化作為實現(xiàn)智慧醫(yī)療的必由之路,是醫(yī)療行業(yè)發(fā)展的必然趨勢,也是我國醫(yī)療改革的重要方向[1]。區(qū)域醫(yī)療信息共享作為醫(yī)療信息化發(fā)展的總體趨勢[2],打破了傳統(tǒng)醫(yī)療行業(yè)相對封閉的使用環(huán)境,使醫(yī)療數(shù)據(jù)的收集和使用更加便捷、迅速的同時,也帶來了新的安全隱患,例如醫(yī)療數(shù)據(jù)泄露[3-4]、勒索攻擊[5]等。醫(yī)療數(shù)據(jù)安全關(guān)乎個人隱私和社會福祉。
區(qū)塊鏈具有去中心化、高信任、可追溯、不可篡改等特性,能滿足復(fù)雜醫(yī)療場景下的安全可信需求[6]。區(qū)塊鏈技術(shù)通過跟蹤數(shù)據(jù)使用情況實現(xiàn)個人對數(shù)據(jù)的控制權(quán),能為構(gòu)建用戶之間的互信關(guān)系提供解決方案。隨著區(qū)塊鏈技術(shù)在各行業(yè)的廣泛應(yīng)用以及被認(rèn)同度的提升,醫(yī)療領(lǐng)域的數(shù)據(jù)共享方案也開始嘗試采用區(qū)塊鏈技術(shù)[7-10]。例如,我國首個基于區(qū)塊鏈的醫(yī)療數(shù)據(jù)共享應(yīng)用[11]就是由阿里健康與江蘇省常州市合作提出的。該應(yīng)用以區(qū)塊鏈技術(shù)為醫(yī)療信息化系統(tǒng)的底層架構(gòu),使常州市部分醫(yī)療機構(gòu)之間能夠共享患者的電子病歷。借助區(qū)塊鏈技術(shù),個人能夠通過瑞士Healthbank[12]實現(xiàn)醫(yī)療系統(tǒng)中的事務(wù)處理,并通過終端設(shè)備的鏈接直接掌握及共享自己的健康信息。個人能夠使用隱私管理器(Privacy Policy Manager,PPM)[13]實現(xiàn)數(shù)據(jù)共享,并且能夠通過隱私偏好設(shè)置來限制醫(yī)院某些數(shù)據(jù)請求行為。而且在PPM 中,醫(yī)院所有不符合個人隱私設(shè)置的數(shù)據(jù)請求均需要得到數(shù)據(jù)所有者的審核后才能被通過,對于被數(shù)據(jù)所有者同意使用的數(shù)據(jù),醫(yī)院必須對數(shù)據(jù)進行匿名處理得到符合平臺共享規(guī)則的匿名數(shù)據(jù)集,并對該數(shù)據(jù)集進行哈希處理,哈希值作為數(shù)據(jù)集的ID 回送給PPM。這樣就確保了數(shù)據(jù)所有者能夠全面了解所有共享出去的數(shù)據(jù)的使用情況。由于區(qū)塊鏈的公開透明和不可篡改特性,由區(qū)塊鏈記錄的數(shù)據(jù)集使用和傳遞情況能夠被有效地驗證和安全存儲,從而為用戶提供了可信賴的數(shù)據(jù)追蹤服務(wù)。上述過程如圖1 所示。
圖1 基于區(qū)塊鏈的數(shù)據(jù)共享過程Fig.1 Blockchain-based data sharing process
MedRec 系統(tǒng)[14]作為一個基于區(qū)塊鏈的分散式記錄管理系統(tǒng),其內(nèi)部區(qū)塊存儲數(shù)據(jù)的訪問權(quán)限,數(shù)據(jù)請求者必須先從區(qū)塊鏈中獲取數(shù)據(jù)訪問權(quán)限后才能訪問特定數(shù)據(jù)。該系統(tǒng)將數(shù)據(jù)訪問權(quán)限的聚合作為區(qū)塊鏈中的激勵機制,鼓勵各方機構(gòu)參與構(gòu)建區(qū)塊鏈。區(qū)塊鏈技術(shù)能夠提高共享方之間的信任,在現(xiàn)階段的醫(yī)療數(shù)據(jù)共享模式中逐漸成了共識。利用區(qū)塊鏈的去中性化和不可篡改特性,數(shù)據(jù)提供者可將其作為數(shù)據(jù)使用日志的工具。
訪問控制技術(shù)是保障數(shù)據(jù)安全的重中之重[15],它能夠限制或制止未經(jīng)授權(quán)的數(shù)據(jù)訪問行為?;诿艽a學(xué)原理實現(xiàn)的訪問控制技術(shù)能夠保證數(shù)據(jù)共享過程中的安全,其中常用的加密算法包括對稱加密、非對稱加密、基于身份加密(Identity-Based Encryption,IBE)以及基 于屬性加密(Attribute-Based Encryption,ABE)等。
對稱加密在數(shù)據(jù)共享中的應(yīng)用受制于兩個因素:第一,為了數(shù)據(jù)安全性,數(shù)據(jù)共享方之間必須要有解密密鑰才能獲取數(shù)據(jù)明文;第二,密鑰數(shù)隨數(shù)據(jù)共享雙方的組合數(shù)呈指數(shù)增長,大量的密鑰伴隨著復(fù)雜的管理。因此對稱加密會使得共享過程過于復(fù)雜。非對稱加密方式用公鑰加密數(shù)據(jù),用私鑰解密數(shù)據(jù)。例如,在楊茂江[16]提出的醫(yī)療數(shù)據(jù)共享方案中,數(shù)據(jù)請求者初次數(shù)據(jù)請求通過后,將自己的公鑰交由數(shù)據(jù)所有者進行數(shù)據(jù)加密,而后收到由自身公鑰加密的加密數(shù)據(jù),請求者用自己的私鑰即可解密數(shù)據(jù);在Yue 等[17]提出的共享醫(yī)療數(shù)據(jù)系統(tǒng)中,數(shù)據(jù)直接存儲在私有區(qū)塊鏈中,當(dāng)數(shù)據(jù)請求發(fā)生時,數(shù)據(jù)提供者提取并加密數(shù)據(jù),然后將加密數(shù)據(jù)和密鑰一并發(fā)送給對方。隨著醫(yī)療數(shù)據(jù)的日益增長,非對稱加密的計算開銷也會變得非常高[18],每次共享都伴隨巨大的計算開銷。對于基于屬性的加密算法[19],屬性即用戶特征,例如年齡、性別、職業(yè)等,屬性組合即可表示用戶身份,再利用任意門限組合連接屬性構(gòu)成訪問策略。屬性加密算法通常將允許訪問數(shù)據(jù)的用戶屬性(或訪問策略)嵌入到密文(或密鑰)中,只有滿足訪問策略的特定用戶屬性能夠解密數(shù)據(jù),由此可以看出,該類算法自然地支持一對多的數(shù)據(jù)安全共享。而且為了防止用戶之間的合謀攻擊,屬性加密算法將用戶密鑰與隨機數(shù)相關(guān)聯(lián)。
由于上述優(yōu)勢,基于屬性的加密算法在醫(yī)療共享方案有廣泛的應(yīng)用。Wei 等[20]提出在個人電子病歷中使用基于屬性加密算法實現(xiàn)細(xì)粒度的訪問控制,在保證了數(shù)據(jù)在云存儲中的安全性的同時,還利用基于屬性加密算法加入密文更新功能和用戶撤銷機制,增強了數(shù)據(jù)訪問控制的靈活和安全性。在Riad 等[21]提出的基于云的物聯(lián)網(wǎng)醫(yī)療系統(tǒng)中,使用結(jié)合了基于屬性的訪問控制(Attribute-Based Access Control,ABAC)和云存儲技術(shù)的訪問控制機制SE-AC(Sensitive and Energetic Access Control),并且其中的托管域承擔(dān)數(shù)據(jù)中轉(zhuǎn)處理的任務(wù),醫(yī)療數(shù)據(jù)提交到云存儲之前,需要在此處進行基于屬性的加密算法的加密處理,對數(shù)據(jù)的請求也會轉(zhuǎn)發(fā)至托管域,待其驗證過身份信息后,用戶可以通過收到的屬性等信息解密數(shù)據(jù)。Pournaghi 等[22]提出的MedSBA 方案中,使用基于屬性的加密在不同策略下進行細(xì)粒度的訪問控制,并且通過私有和公有區(qū)塊鏈技術(shù)分配訪問級別,保證了數(shù)據(jù)的安全性。基于屬性的加密算法依然存在訪問控制難、計算復(fù)雜度高、存在密鑰托管等缺點[23-25]。另外,醫(yī)療數(shù)據(jù)的屬性存在不同的敏感區(qū)度,如姓名、電話號碼、身份證號碼等高敏感度的屬性如果泄露將會造成重大影響,而個人的一些診斷結(jié)果、報告等數(shù)據(jù)的泄露相對來說影響較小。而且不同機構(gòu)的需求對數(shù)據(jù)屬性的敏感度區(qū)分也不一致,例如個體的家族史、年齡等敏感數(shù)據(jù)可以作為預(yù)測致癌率研究的關(guān)注對象,而地區(qū)等低敏感數(shù)據(jù)可以作為傳染病傳播模型的研究對象。由此,為了滿足醫(yī)療數(shù)據(jù)共享的靈活性需求,為不同敏感度的屬性制定不同的訪問控制策略是非常必要的。
本文提出了一種基于區(qū)塊鏈技術(shù)的醫(yī)療數(shù)據(jù)分級訪問控制和共享系統(tǒng)。采用醫(yī)療數(shù)據(jù)區(qū)塊鏈上鏈下存儲相結(jié)合的共享模式解決區(qū)塊鏈數(shù)據(jù)存儲昂貴的問題,其中鏈下存儲原始醫(yī)療數(shù)據(jù),鏈上存儲數(shù)據(jù)描述和數(shù)據(jù)共享日志,區(qū)塊鏈的不可篡改特性提高了方案的可行性。如上文所述,通過對醫(yī)療數(shù)據(jù)的屬性按敏感性不同進行分級,以滿足醫(yī)療數(shù)據(jù)共享的靈活性需求,同時利用訪問控制樹、對稱加密和基于屬性的加密相結(jié)合的方法減少加密開銷,還實現(xiàn)了醫(yī)療數(shù)據(jù)的細(xì)粒度訪問控制。另外使用密鑰生成中心(Key Generation Center,KGC)和屬性驗證中心(Attribute Validation Center,AVC)生成用戶密鑰。本文最后分析了該系統(tǒng)的性能和安全性,驗證了本文方案在醫(yī)療數(shù)據(jù)共享中的安全性。
區(qū)塊鏈提供了一種去中心化的分布式數(shù)據(jù)系統(tǒng)。參與系統(tǒng)的可信或半可信節(jié)點通過共識機制共同維護一條不斷增長的鏈,發(fā)生過的記錄均不可篡改,共識過程無需集中控制,通過Hash、數(shù)字證書、簽名等密碼學(xué)機制確保記錄無法被偽造或破壞。因此,區(qū)塊鏈天然具備去中心化、高可信、可追溯、不可篡改等優(yōu)勢。區(qū)塊鏈按是否具有訪問和管理權(quán)限可分為無許可區(qū)塊鏈和許可區(qū)塊鏈。無許可區(qū)塊鏈的每個參與者均可以參與區(qū)塊鏈的交易和數(shù)據(jù)共識過程,例如以太坊等;許可區(qū)塊鏈為封閉網(wǎng)絡(luò),僅允許具有高信任度的節(jié)點來驗證交易,只對特定的群體開放,例如超級賬本(Hyperledger Fabric)等。傳統(tǒng)的共識機制,例如工作量證明(Proof-of-Work,PoW)、權(quán)益證明(Proof-of-Stake,PoS)等,需要經(jīng)過多個區(qū)塊生成后才能確認(rèn),不可避免地存在效率低下的問題。以Hyperledger Fabric 為代表的許可區(qū)塊鏈選擇確認(rèn)時間相對固定的實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)[26]算法解決快速確認(rèn)問題,提高共識效率。同時,許可區(qū)塊鏈存在參與方的部分信任基礎(chǔ),性能更優(yōu);采用高性能節(jié)點作為核心節(jié)點,減弱每個節(jié)點都參與完整處理的制約,擴展性更優(yōu);用戶準(zhǔn)入和交易活動受到限制,穩(wěn)定性更優(yōu);可根據(jù)不同需求進行模塊化的定制,靈活性更優(yōu)。因此,許可區(qū)塊鏈更符合醫(yī)療數(shù)據(jù)共享需求。
基于屬性的加密算法主要分為密鑰策略屬性基加密(Key-Policy Attribute-Based Encryption,KP-ABE)[27-28]和密文策略屬 性基加 密(Ciphertext-Policy Attribute-Based Encryption,CP-ABE)[29-30]兩種。KP-ABE 和CP-ABE 基本結(jié)構(gòu)如圖2 所示:KP-ABE 中,密文中含有用戶屬性信息,如果用戶的密鑰訪問策略與屬性相匹配,用戶可以解密密文;在CP-ABE 中,用戶密鑰含有用戶屬性信息,密文含有一個訪問結(jié)構(gòu),如果用戶密鑰的屬性信息滿足密文中的訪問策略,就可以解密密文。
圖2 KP-ABE和CP-ABE基本結(jié)構(gòu)Fig.2 Basic structures of KP-ABE and CP-ABE
KP-ABE 給出了一個用戶可以訪問哪些信息的方案,而CP-ABE 給出了哪個用戶可以讀取密文的方案。在醫(yī)療數(shù)據(jù)共享的實際場景中,存在大量的信息需要共享給他人,這與CP-ABE 提出的方案更加契合。以下是CP-ABE 算法的四個步驟:
1)Setup(k):通過安全參數(shù)k,生成系統(tǒng)公鑰PK和主密鑰MK。
2)Encrypt(PK,M,τ):首先,將訪問控制策略轉(zhuǎn)化為訪問控制樹結(jié)構(gòu)τ,如圖3 所示,結(jié)構(gòu)樹中的att(x)是x節(jié)點表示的屬性,iofj意味著訪問者必須滿足該節(jié)點下j個屬性中要有i個屬性才能訪問該節(jié)點中的秘密。然后,利用訪問結(jié)構(gòu)τ對明文M加密,得到密文CT。
圖3 CP-ABE訪問控制樹結(jié)構(gòu)Fig.3 CP-ABE access control tree structure
3)KenGen(MK,S):從數(shù)據(jù)請求者的屬性集合S生成密鑰SK。
4)Decrypt(PK,CT,SK):利用公開參數(shù)PK和自身密鑰SK遞歸計算訪問控制樹,解密密文CT,得到明文M。
本文設(shè)計基于許可區(qū)塊鏈的醫(yī)療數(shù)據(jù)共享系統(tǒng)架構(gòu)如圖4 所示,包括核心層、服務(wù)層和應(yīng)用層。
圖4 數(shù)據(jù)共享系統(tǒng)架構(gòu)Fig.4 Architecture of data sharing system
1)核心層:負(fù)責(zé)許可區(qū)塊鏈的底層運行,為數(shù)據(jù)共享服務(wù)提供核心支撐。各功能由許可區(qū)塊鏈提供,包括智能合約、共識機制、區(qū)塊同步、賬本管理、交易驗證和背書策略等模塊。
2)服務(wù)層:負(fù)責(zé)實現(xiàn)數(shù)據(jù)共享平臺的各服務(wù),包括區(qū)塊鏈模塊和加密模塊。區(qū)塊鏈模塊基于核心層開發(fā),包括組織管理模塊和鏈碼模塊。其中:組織管理模塊負(fù)責(zé)管理數(shù)據(jù)共享的各參與方,并為它創(chuàng)建共享通道;鏈碼模塊負(fù)責(zé)智能合約的創(chuàng)建、部署和執(zhí)行,是數(shù)據(jù)共享可信執(zhí)行的基礎(chǔ)保障。加密模塊負(fù)責(zé)實現(xiàn)密文策略屬性基分級加密(Ciphertext-Policy Attribute-Based Hierarchical Encryption,CP-ABHE)算法(2.3.2 節(jié)),保證CP-ABHE 算法在各環(huán)節(jié)的穩(wěn)定執(zhí)行。
3)應(yīng)用層:封裝數(shù)據(jù)共享平臺提供的各服務(wù),使用戶可以通過HTTP 接口的方式調(diào)用所需要的數(shù)據(jù)共享服務(wù),為用戶使用提供便利。
本文使用智能合約制定共享規(guī)則,智能合約內(nèi)容公開透明且不可篡改,在滿足對應(yīng)條件時能夠自動執(zhí)行。同時,借助區(qū)塊鏈存儲數(shù)據(jù)共享記錄,通過區(qū)塊鏈本身的可審計性保障數(shù)據(jù)共享記錄的可信性。但是,區(qū)塊鏈存儲成本較高,若將大量醫(yī)療數(shù)據(jù)存儲在區(qū)塊鏈,不僅會大幅影響區(qū)塊鏈性能,且一旦密鑰泄露,數(shù)據(jù)安全將無法得到保證。因此,本文選擇將醫(yī)療數(shù)據(jù)存儲在各機構(gòu)的數(shù)據(jù)庫中,在此基礎(chǔ)上通過分級訪問控制算法實現(xiàn)機構(gòu)對數(shù)據(jù)的控制。本文提出的數(shù)據(jù)共享模型如圖5 所示,包括個人、機構(gòu)、數(shù)據(jù)使用者和共享平臺。其中,共享平臺為個人、機構(gòu)和數(shù)據(jù)使用者提供數(shù)據(jù)共享服務(wù)。
圖5 醫(yī)療數(shù)據(jù)共享模型Fig.5 Medical data sharing model
1)數(shù)據(jù)產(chǎn)生:個人參與日?;顒訒a(chǎn)生大量醫(yī)療數(shù)據(jù),如醫(yī)院就診、體檢、使用便攜式醫(yī)療設(shè)備等。在經(jīng)過個人同意的前提下,機構(gòu)將會對這些數(shù)據(jù)進行采集、清洗和處理。
2)數(shù)據(jù)存儲:機構(gòu)根據(jù)本文2.3.1 節(jié)提出的數(shù)據(jù)分級標(biāo)準(zhǔn)對數(shù)據(jù)進行分級,并依據(jù)訪問控制策略,使用本文2.3.2節(jié)提出的CP-ABHE 算法的加密方法對數(shù)據(jù)進行加密并存儲。
3)數(shù)據(jù)注冊:機構(gòu)將數(shù)據(jù)信息(包括數(shù)據(jù)描述、加密密鑰、機構(gòu)信息、相關(guān)個人、訪問控制策略和數(shù)據(jù)地址等)上傳至數(shù)據(jù)共享平臺,并將數(shù)據(jù)信息存儲至區(qū)塊鏈上。
4)密鑰申請:使用者可以根據(jù)自身屬性向數(shù)據(jù)共享平臺申請密鑰,屬性授權(quán)機構(gòu)驗證其身份后,使用CP-ABHE 算法的密鑰生成方法生成對應(yīng)密鑰,并向使用者發(fā)送。
5)數(shù)據(jù)請求:使用者在共享平臺檢索數(shù)據(jù),向平臺發(fā)送數(shù)據(jù)請求,平臺收到請求后向使用者返回數(shù)據(jù)信息。
6)數(shù)據(jù)發(fā)送:使用者收到數(shù)據(jù)信息后,根據(jù)數(shù)據(jù)地址獲取密文數(shù)據(jù),使用CP-ABHE 算法的解密方法解密密文。
7)使用日志查詢:共享參與方可以通過向共享平臺發(fā)送請求來查詢數(shù)據(jù)使用情況。
2.3.1 醫(yī)療數(shù)據(jù)分級標(biāo)準(zhǔn)
醫(yī)療數(shù)據(jù)的組成結(jié)構(gòu)復(fù)雜多樣,不僅包含患者的身份信息和檢查數(shù)據(jù),也包括醫(yī)生的診斷記錄。針對不同來源、不同敏感程度的數(shù)據(jù),所應(yīng)用的訪問控制策略也應(yīng)該不同。因此,為實現(xiàn)醫(yī)療數(shù)據(jù)的高靈活性隱私保護,本文按照《健康醫(yī)療數(shù)據(jù)安全指南》的風(fēng)險級別和重要程度,將醫(yī)療數(shù)據(jù)分為以下三個等級:高敏感、中敏感和低敏感。其中,高敏感數(shù)據(jù)不參與數(shù)據(jù)共享活動,不同級別的數(shù)據(jù)可以執(zhí)行不同的訪問控制策略。具體的醫(yī)療數(shù)據(jù)分級標(biāo)準(zhǔn)如下:
1)高敏感數(shù)據(jù):可以標(biāo)識個人身份的信息或暴露后會給患者造成重大影響的信息,如姓名、電話、身份證號、地址、生物識別(指紋、視網(wǎng)膜、聲音、基因等)、照片、信仰等。
2)中敏感數(shù)據(jù):不能標(biāo)識個人身份的信息且模糊化后仍有重要醫(yī)學(xué)意義的數(shù)據(jù),可以保留模糊后的結(jié)果,如年齡、地區(qū)、家族史、婚姻生育史等。
3)低敏感數(shù)據(jù):其他醫(yī)療數(shù)據(jù),如年齡范圍、性別、疾病、主訴、藥品、生活習(xí)慣、診斷結(jié)果、手術(shù)記錄、檢查報告等。
同時為實現(xiàn)醫(yī)療數(shù)據(jù)的訪問控制,需要依據(jù)數(shù)據(jù)使用者身份信息對其進行劃分,包括使用者的類型和使用者的專業(yè)等級。使用者屬性集合如表1 所示。其中使用者的類型包括:研究機構(gòu)(Research-Institute)、保險公司(Insurance-Company)、醫(yī)院(Hospital)和個人(Person),反映使用者的身份類型。使用者的專業(yè)等級從高到低分為A、B、C 三類,反映使用者的資質(zhì)信息,不同的使用者類型應(yīng)用不同的專業(yè)等級分類標(biāo)準(zhǔn),例如:一級醫(yī)院、二級醫(yī)院、三級醫(yī)院對應(yīng)醫(yī)院(Hospital)使用方的A、B、C 三類專業(yè)等級。
表1 使用者屬性集合Tab.1 Collection of user attributes
每個使用者應(yīng)同時包含使用者類型和使用者專業(yè)等級兩方面屬性,且不得包含多個使用者類型屬性或多個使用者專業(yè)等級屬性,例如,三級醫(yī)院使用者屬性集合為S={Hospital,A}。使用門限值連接使用者屬性集合構(gòu)成醫(yī)療數(shù)據(jù)的訪問策略,例如,僅允許A 級醫(yī)院或A 級保險公司訪問的醫(yī)療數(shù)據(jù)訪問控制策略表示為τ=“Hospital Insurance-Company 1 of 2 A 2 of 2”。
2.3.2 CP-ABHE算法
傳統(tǒng)的分級數(shù)據(jù)屬性加密策略針對中敏感數(shù)據(jù)M1和低敏感數(shù)據(jù)M2的兩種不同的訪問策略τ1和τ2需要使用兩次CP-ABE 算法,計算開銷較大。但在實際應(yīng)用中,中敏感數(shù)據(jù)與低敏感數(shù)據(jù)的訪問策略往往存在依賴關(guān)系,即中敏感數(shù)據(jù)的訪問策略包含低敏感數(shù)據(jù)的訪問策略要求。例如,低敏感數(shù)據(jù)訪問策略為τ=“Hospital Insurance-Company 1 of 2”,即所有醫(yī)院和保險公司均可訪問,如圖6(a);中敏感數(shù)據(jù)的訪問策略為τ=“Hospital Insurance-Company 1 of 2 A 2 of 2”,即僅A 類的醫(yī)院和保險公司可以訪問,如圖6(b)。
圖6 訪問控制樹轉(zhuǎn)換示意圖Fig.6 Schematic diagram of access control tree transformation
考慮到中敏感數(shù)據(jù)與低敏感數(shù)據(jù)訪問策略間的依賴關(guān)系,本文合并中敏感數(shù)據(jù)和低敏感數(shù)據(jù)的訪問控制樹,合并策略為將低敏感數(shù)據(jù)的訪問控制樹整體作為訪問控制樹根節(jié)點的左孩子,并將中敏感數(shù)據(jù)訪問控制策略的附加條件作為訪問控制樹根節(jié)點的右孩子,根節(jié)點使用2 of 2 連接,如圖6(c)。訪問控制樹的葉子節(jié)點數(shù)量與傳統(tǒng)方案相比減少約50%,同時,考慮葉子節(jié)點的橢圓曲線群冪運算比中間節(jié)點的有限域運算復(fù)雜度更高,該方案可以有效降低計算開銷。
與此同時,考慮當(dāng)原始數(shù)據(jù)較大時,對明文數(shù)據(jù)直接進行屬性加解密存在較大的計算開銷。因此,本文聯(lián)合對稱加密方案,用對對稱加密密鑰的屬性加解密取代對明文數(shù)據(jù)的屬性加解密過程,當(dāng)數(shù)據(jù)量較大時,將有效減少加、解密時間。
此外,CP-ABE 算法中的第三方機構(gòu)屬性授權(quán)機構(gòu)可以獲取任意用戶密鑰,若屬性授權(quán)機構(gòu)遭受攻擊,數(shù)據(jù)的安全性將遭到破壞。因此,本文使用屬性驗證中心和密鑰生成中心共同生成用戶密鑰,第三方機構(gòu)均無法單獨獲取用戶密鑰。
CP-ABHE 訪問控制算法具體設(shè)計如下:
1)Setup(k):輸入安全參數(shù)k,生成一個階為素數(shù)p,生成元為g的雙線性群G0和一個雙線性映射e:G0×G0→G1。
①生成全局公鑰:
②屬性驗證中心隨機選取α∈Zp,生成公鑰和主密鑰:
③密鑰生成中心隨機選取β∈Zp,生成公鑰和主密鑰:
最終得到系統(tǒng)公鑰:
2)Encrypt(PK,Mmedium,Mlow,τ):對明 文Mmedium、Mlow在訪問結(jié)構(gòu)τ下加密,輸出密文CT。加密過程如下:
①生成訪問控制樹:和CP-ABE 算法相同。
②遞歸計算訪問控制樹:為每一個節(jié)點x選擇一個多項式qx,多項式qx的度dx比該節(jié)點的門限值kx少1,即dx=kx-1。從根節(jié)點xmedium開始選擇隨機數(shù)smedium∈Zp,為根節(jié)點生成多項式為qmedium,設(shè)置qmedium(0)=smedium,為根節(jié)點的左孩子節(jié) 點xlow生成多 項式為qlow,設(shè) 置qlow(0)=slow=qmedium(index(xlow)),對于其他節(jié)點x,選取多項式qx,令qx(0)=qparent(x)(index(x)),parent(x)為節(jié)點x的父親節(jié)點,隨機選取dx個點來完全定義qx。
③對稱加密:隨機生成mmedium,mlow∈G1,作為AES 對稱加密密鑰對mmedium和mlow加密得到密文:
④計算密文:設(shè)訪問結(jié)構(gòu)τ中所有葉子節(jié)點集合為Y,則明文Mmedium、Mlow在訪問結(jié)構(gòu)τ下的密文為:
3)KenGen(MK,S,K):為屬性集合S生成密鑰SK。
①用戶選擇隨機數(shù)x∈Zp,計算gx,將(S,K=gx)發(fā)送給屬性認(rèn)證中心。
②屬性認(rèn)證中心選擇隨機數(shù)r∈Zp,計算D″=Kα+r=gx·(α+r),將D″發(fā)送給密鑰生成中心。對于每一個j∈S選擇隨機數(shù)rj∈Zp,計算SK1,將SK1返回給用戶。
③密鑰生成中心計算D'=(D″)1/β=gx·(α+r)β,并將D'發(fā)送給用戶。
④用戶計算D=(D')1/x=g(α+r)β,得到密鑰:
4)Decrypt(PK,CT,SK):使用公開參數(shù)PK和密鑰SK將CT解密為明文Mmedium、Mlow。
①遞歸計算訪問控制樹:和CP-ABE 算法相同。
②計算明文:
計算中敏感明文:
同理,計算低敏感明文:
Bethencourt 等[29]在DBDH(Decisional Bilinear Diffie-Hellman)假設(shè)下證明了CP-ABE 的安全性,AES 對稱加密算法作為美國聯(lián)邦政府采用的一種對稱加密標(biāo)準(zhǔn),安全性獲得認(rèn)可。本文提出的CP-ABHE 算法基于CP-ABE 算法實現(xiàn),并結(jié)合了AES 對稱加密算法,算法安全性不低于CP-ABE 算法和AES 對稱加密算法,下面給出證明。
定義1CP-ABE 算法安全,且AES 對稱加密算法安全。
定理1本文提出的CP-ABHE 算法安全性不低于CPABE 算法和AES 對稱加密算法。
證明 考慮CP-ABHE 算法的四個步驟:
1)Setup:CP-ABHE 公鑰PK與CP-ABE 一致;主密鑰MK拆分為兩個部分由屬性驗證中心和密鑰生成中心分別保管,并未降低系統(tǒng)安全性。
2)Encrypt:與CP-ABE 算法相比,CP-ABHE 屬性加密的主體是AES 對稱密鑰,明文通過AES 對稱密鑰加密,而CPABE 算法屬性加密的主體是明文。針對AES 對稱密鑰mmedium、mlow的屬性加密過程,mmedium與CP-ABE 在訪問結(jié)構(gòu)τ下的加密過程一致,mlow與CP-ABE 在訪問結(jié)構(gòu)τ根節(jié)點左子樹下的加密過程一致。
3)KenGen:CP-ABHE 的密鑰SK1的生成過程與CP-ABE一致;SK2=(D=g(α+r)β)由屬性認(rèn)證中心、密鑰生成中心和用戶共同生成,基于離散對數(shù)求解的困難性,用戶無法從已知的h=gβ,D'=gx·(α+r)β,K=gx中計算出主密鑰gα、β,因此SK2的生成過程不會暴露主密鑰,不會降低系統(tǒng)安全性。
4)Decrypt:與CP-ABE 算法相比,CP-ABHE 屬性解密得到AES 對稱密鑰,明文通過AES 對稱密鑰解密得到,而CPABE 算法屬性解密直接得到明文。AES 對稱密鑰mmedium,mlow的屬性解密過程與CP-ABE 一致。
綜上所述,CP-ABHE 算法四個步驟安全性均不低于CPABE 算法,且通過將加(解)密主體明文替換為AES 對稱密鑰,使CP-ABHE 的安全性不低于AES 對稱加密算法。
定理2若用戶只符合低敏感數(shù)據(jù)的訪問策略,則無法訪問中敏感數(shù)據(jù)。
證明 用戶符合低敏感數(shù)據(jù)的訪問策略,可以遞歸至根節(jié)點的左孩子xlow得到e(g,g)rslow;且由于用戶不符合中敏感數(shù)據(jù)的訪問策略,無法遞歸至根節(jié)點xmedium得到e(g,g)rsmedium。與此同時,生成的左、右孩子節(jié)點多項式值不相關(guān),用戶無法從slow=qlow(0)推斷smedium=qmedium(0),即無法從e(g,g)rslow推斷得到e(g,g)rsmedium。
定義2CP-ABE 可以抵御用戶合謀攻擊:如果多個用戶串通,他們只有在至少一個用戶能夠自己解密的情況下才能解密密文[29]。
定理3CP-ABHE 可以抵御用戶合謀攻擊。
證明 CP-ABHE 與CP-ABE 一致,每個用戶的密鑰SK中包含屬性認(rèn)證中心生成的隨機值,在計算葉子節(jié)點時,不同密鑰中的Di包含的r∈Zp不同,無法合謀計算至根節(jié)點的左孩子得到或計算至根節(jié)點得到因此無法合謀解密低敏感或中敏感密文。
定理4CP-ABHE 解決權(quán)威單點攻擊問題。
證明 由于離散對數(shù)屬于困難性問題,屬性驗證中心無法從系統(tǒng)公鑰h=gβ和密鑰生成過程中獲取的gx·(α+r)中獲取主密鑰β,而屬性驗證中心無法從e(g,g)α中獲取主密鑰gα。因此,屬性驗證中心和密鑰生成中心無須完全可信,即使任意一方遭受攻擊,仍然可以保證攻擊者無法獲得合法的密鑰。
定理5CP-ABHE 可以抵御權(quán)威合謀攻擊:即使多個權(quán)威機構(gòu)串通也無法解密密文。
醫(yī)療數(shù)據(jù)中往往蘊含著患者大量敏感信息,一旦泄露,將會給患者帶來巨大的負(fù)面影響。本文提出的醫(yī)療數(shù)據(jù)共享系統(tǒng)在數(shù)據(jù)生命周期的各個環(huán)節(jié)均能保證數(shù)據(jù)的安全性,包括數(shù)據(jù)存儲、數(shù)據(jù)共享、數(shù)據(jù)訪問。與此同時,區(qū)塊鏈具有天然的不可篡改和可審計性,當(dāng)各方針對共享數(shù)據(jù)的完整性和真實性產(chǎn)生懷疑時,區(qū)塊鏈中記錄的醫(yī)療數(shù)據(jù)共享過程可以提供可信的溯源追責(zé)。
1)數(shù)據(jù)存儲:相關(guān)機構(gòu)的數(shù)據(jù)庫中存放的數(shù)據(jù)為經(jīng)過對稱加密后的數(shù)據(jù),即使數(shù)據(jù)庫遭受外部攻擊后醫(yī)療數(shù)據(jù)被暴露,攻擊者也無法從密文中獲取任何信息。此外,共享的醫(yī)療數(shù)據(jù)不包含高敏感數(shù)據(jù),無法直接識別個人。
2)數(shù)據(jù)共享:本文提出的醫(yī)療數(shù)據(jù)共享系統(tǒng)以區(qū)塊鏈為基礎(chǔ),通過共識機制和加密算法來保障數(shù)據(jù)共享過程的安全性,去中心化的結(jié)構(gòu)避免單點故障風(fēng)險,為數(shù)據(jù)共享過程提供安全保障。
3)數(shù)據(jù)訪問:醫(yī)療數(shù)據(jù)通過2.3 節(jié)提出的CP-ABHE 算法實現(xiàn)分級訪問控制,本文3.1 節(jié)證明了該算法在滿足訪問控制需求前提下,具備安全性,可以抵御用戶合謀攻擊、權(quán)威單點攻擊和權(quán)威合謀攻擊。
本文方案使用Java 語言,基于JPBC 雙線性映射庫、Hyperledger Fabric SDK 實現(xiàn)。各節(jié)點均運行在同一物理服務(wù)器上,部署時使用Docker 虛擬化技術(shù)。實驗環(huán)境配置如下:操作系統(tǒng)為Ubuntu16.04,64 位;CPU 為4 核(vCPU),內(nèi)存16 GiB。
本文使用Hyperledger Fabric V1.4 許可區(qū)塊鏈實現(xiàn)醫(yī)療數(shù)據(jù)共享系統(tǒng),數(shù)據(jù)共享系統(tǒng)網(wǎng)絡(luò)節(jié)點包括區(qū)塊鏈各節(jié)點和屬性授權(quán)機構(gòu)各節(jié)點,節(jié)點架構(gòu)如圖7 所示。其中,區(qū)塊鏈節(jié)點作為系統(tǒng)的底層核心,為數(shù)據(jù)共享服務(wù)提供支撐;屬性授權(quán)機構(gòu)節(jié)點為訪問控制算法CP-ABHE 提供加解密支持;區(qū)塊鏈網(wǎng)絡(luò)中包含兩個組織,即機構(gòu)組織(Institution Org)和請求者組織(Requester Org),其中,機構(gòu)組織對應(yīng)數(shù)據(jù)共享中的數(shù)據(jù)收集者,請求者組織對應(yīng)數(shù)據(jù)共享中的個人和使用者。
圖7 系統(tǒng)網(wǎng)絡(luò)節(jié)點架構(gòu)Fig.7 Network node architecture of system
本文使用糖尿病并發(fā)癥預(yù)警數(shù)據(jù)集[31]作為仿真系統(tǒng)的醫(yī)療健康數(shù)據(jù)集,該數(shù)據(jù)集是關(guān)于200 名糖尿病患者的健康數(shù)據(jù),包括患者的性別、年齡、身高、體重、血壓、心跳、血液檢測結(jié)果等屬性。
本文將Hyperledger Fabric 性能和規(guī)模工作組發(fā)布的白皮書中定義的主要性能評估關(guān)鍵指標(biāo)作為系統(tǒng)性能評估指標(biāo),包括交易時延(Transaction Latency)和交易吞吐量(Transaction Throughput)[32],交易吞吐量表示為每秒事務(wù)數(shù)(Transactions Per Second,TPS)。交易時延和交易吞吐量也被認(rèn)為是區(qū)塊鏈系統(tǒng)中評估頻率最高的宏觀指標(biāo)[33],例如,比特幣交易吞吐量約每秒7 筆交易,交易時延約10 min[34]。本文使用JMeter 壓力測試工具對醫(yī)療數(shù)據(jù)共享仿真系統(tǒng)的兩個關(guān)鍵交易環(huán)節(jié)進行性能測試,包括Query 交易和Invoke交易。其中,Query 交易執(zhí)行數(shù)據(jù)查詢活動,Invoke 交易執(zhí)行數(shù)據(jù)注冊活動。由于Query 交易只涉及一個Peer 節(jié)點,而Invoke 交易涉及多個Peer 節(jié)點,并需要Orderer 節(jié)點參與事務(wù)排序和打包,因此Invoke 交易與Query 交易在相同系統(tǒng)并發(fā)度下,時延更高、吞吐量更低。
本文在系統(tǒng)并發(fā)度為100~700 TPS 時測試Query 交易性能,時延與吞吐量如圖8 所示。Query 交易失敗率為0%,交易最大平均時延為3 s,最大吞吐量為每秒處理236 個事務(wù),均處于可接受范圍。
圖8 Query交易的時延和吞吐量Fig.8 Latency and throughput of Query transactions
本文在系統(tǒng)并發(fā)度為50~300 TPS 時測試Invoke 交易性能,時延與吞吐量如圖9 所示。Invoke 交易失敗率為0%,交易最大平均時延為7.8 s,最大吞吐量為每秒處理100 個事務(wù),均處于可接受范圍。
圖9 Invoke交易的時延和吞吐量Fig.9 Latency and throughput of Invoke transactions
為對比本文提出的CP-ABHE 訪問控制算法性能,考慮CP-ABHE 具有分級訪問控制及多授權(quán)中心等特點,選取與其較為相關(guān)的來自文獻[29,35-37]的訪問控制方案進行對比。其中,文獻[29]的CP-ABE 算法是CP-ABHE 的算法基礎(chǔ);在CP-ABE 基礎(chǔ)上,文獻[35]中提出了多授權(quán)中心加密方案;文獻[36]中針對分級文件具有層次性訪問特征,提出了文件分級加密(File Hierarchy Attribute-Based Encryption,F(xiàn)H-ABE)算法;文獻[37]中將CP-ABE 算法應(yīng)用于醫(yī)療數(shù)據(jù)共享中,并改進了CP-ABE 的密鑰托管等問題。根據(jù)文獻[29,35-37]中所提方案的實現(xiàn)過程,從功能、存儲開銷和計算開銷三個方面與本文算法進行對比,符號描述如表2 所示。最后,通過實驗分別分析屬性數(shù)與數(shù)據(jù)量大小對CPABHE 和CP-ABE 性能的影響。
表2 符號描述Tab.2 Symbol description
4.3.1 功能比較
本文提出的訪問控制方案與文獻[29,35-36]的方案功能比較如表3 所示。其中,文獻[29]和文獻[35]的方案僅支持在同一訪問控制樹中設(shè)置單一訪問控制策略,在面對多級訪問控制的需求時將計算開銷和存儲成本大幅增加。文獻[36]的方案支持對數(shù)據(jù)的分級訪問控制,但僅由單一屬性授權(quán)機構(gòu)參與密鑰托管,當(dāng)該屬性授權(quán)機構(gòu)遭到攻擊后,數(shù)據(jù)安全性將遭到破壞,即權(quán)威單點攻擊風(fēng)險。文獻[29]的方案雖然由多個屬性授權(quán)機構(gòu)參與密鑰托管,但當(dāng)多個屬性授權(quán)機構(gòu)合謀時數(shù)據(jù)安全性仍然會遭到破壞,即權(quán)威合謀攻擊風(fēng)險。本文方案即滿足了分級訪問控制需求,同時又可以抵御權(quán)威單點攻擊和權(quán)威合謀攻擊。
表3 功能比較Tab.3 Function comparison
4.3.2 存儲開銷
本文提出的共享方案與文獻[29,35,37]的方案存儲開銷比較如表4 所示,其中,密文長度為低敏感和中敏感數(shù)據(jù)加密后總長度。
表4 存儲開銷比較Tab.4 Storage cost comparison
文獻[29]和文獻[35]的方案不支持?jǐn)?shù)據(jù)多級訪問控制,因此需要分別存儲低敏感和中敏感數(shù)據(jù)的密文,密文長度較大。文獻[37]的方案使用多個屬性授權(quán)機構(gòu),不同的授權(quán)機構(gòu)使用不同的主密鑰,同時,系統(tǒng)公鑰數(shù)量和主密鑰數(shù)量均與屬性個數(shù)相關(guān),因此系統(tǒng)公鑰和主密鑰長度較大。本文使用多屬性授權(quán)機構(gòu),但使用相同的系統(tǒng)公鑰和主密鑰,因此系統(tǒng)公鑰長度和主密鑰長度并未增加。因此,本文提出的訪問控制算法在系統(tǒng)公鑰、主密鑰、用戶密鑰和密文長度上均為最短。
4.3.3 計算開銷
本文提出的共享方案與文獻[29,35,37]的方案存儲開銷比較如表5 所示,加(解)密計算開銷為低敏感和中敏感數(shù)據(jù)加(解)密運算的總開銷。
表5 計算開銷比較Tab.5 Computational cost comparison
文獻[29]和文獻[35]的方案不支持?jǐn)?shù)據(jù)多級訪問控制,需要對低敏感和中敏感數(shù)據(jù)分別加密,產(chǎn)生了大量訪問控制樹的葉子節(jié)點值的重復(fù)計算,加、解密時間大幅增加。文獻[37]的方案使用多屬性授權(quán)機構(gòu),密鑰生成時會增加與屬性數(shù)呈正相關(guān)的耗時。本文方案雖然在密鑰生成階段加入用戶隨機數(shù),會增加隨機數(shù)計算和密鑰恢復(fù)計算的開銷,但這個開銷是常數(shù)級的。因此,本文所提出的方案在密鑰生成、加密和解密的耗時上均為最小。
4.3.4 實驗分析
本文使用CP-ABE 工具包實現(xiàn)文獻[29]的訪問控制算法CP-ABE,使用JPBC 雙線性映射庫實現(xiàn)本文的CP-ABHE 算法,實驗環(huán)境與仿真系統(tǒng)一致。數(shù)據(jù)集選擇Kaggle 平臺提供的由Flaredown 應(yīng)用收集的關(guān)于患有慢性自身免疫疾病和隱性疾病患者的健康記錄[38],數(shù)據(jù)屬性包括患者ID、年齡、性別、國家、診斷、癥狀和治療過程,數(shù)據(jù)集大小約為686×106。本文將患者ID 和年齡劃分為中敏感數(shù)據(jù),將患者的性別、國家、診斷、癥狀和治療過程劃分為低敏感數(shù)據(jù)。
為分析屬性個數(shù)對CP-ABHE 和CP-ABE 算法加、解密時間的影響,選擇在中敏感和低敏感數(shù)據(jù)量均為45×106情況下,將訪問策略包含的屬性數(shù)分別調(diào)整為3、5、7、10,它們的加、解密時間變化如圖10(a)所示;同時,在訪問策略包含的屬性數(shù)為5 時,將中敏感和低敏感數(shù)據(jù)量分別調(diào)整為30×106~70×106,步長為10×106,CP-ABHE 和CP-ABE 算法的加、解密時間變化如圖10(b)所示。
圖10 屬性數(shù)與數(shù)據(jù)量對CP-ABHE和CP-ABE算法性能的影響Fig.10 Influence of attribute number and data volume on performance of CP-ABHE and CP-ABE algorithms
由圖10 可知,在屬性數(shù)為3~10 時,本文CP-ABHE 算法的加、解密耗時均小于CP-ABE。其中,本文算法對屬性數(shù)的敏感度較高,在屬性數(shù)為3 時,兩種算法的加密時間相差較大,隨著屬性數(shù)的增加,兩種算法的加密時間逐漸接近解密時間也存在相似的特點,但整體上看,CP-ABHE 的解密時間遠小于CP-ABE。實際應(yīng)用中,往往只需要1 次加密,解密次數(shù)遠多于加密次數(shù)。由圖10(b)可知,在數(shù)據(jù)量為30×106~70×106時,本文算法在加、解密環(huán)節(jié)的計算耗時均小于CPABE。其中,CP-ABE 對于數(shù)據(jù)量的敏感度更高,隨著數(shù)據(jù)量的增加,兩種算法的效率差距越來越大。因此,本文的CPABHE 算法在屬性數(shù)和數(shù)據(jù)量這兩個影響因素下均表現(xiàn)優(yōu)于CP-ABE。
本文結(jié)合許可區(qū)塊鏈與基于屬性的訪問控制等技術(shù),提出了一個分級訪問控制與共享方案。該方案對醫(yī)療數(shù)據(jù)按敏感度分級,設(shè)計了多級訪問控制算法CP-ABHE,在降低計算開銷和存儲開銷的同時,能為醫(yī)療數(shù)據(jù)提供更靈活的安全保障。該方案利用許可區(qū)塊鏈實現(xiàn)數(shù)據(jù)共享系統(tǒng),保證了數(shù)據(jù)共享過程的可追溯性,實現(xiàn)了更可靠的訪問控制管理。為實現(xiàn)穩(wěn)定、高效的訪問控制與共享系統(tǒng),下一步將研究在共享系統(tǒng)中引入激勵機制,并將多級訪問控制算法拓展到通用場景中。