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