董黛瑩,汪學(xué)明
(貴州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,貴州 貴陽(yáng) 550025)
在醫(yī)療行業(yè)中,數(shù)據(jù)共享對(duì)智慧醫(yī)療的發(fā)展、醫(yī)療機(jī)構(gòu)之間學(xué)術(shù)討論等方面都有著突破性的重大意義[1]。如阿里健康將區(qū)塊鏈應(yīng)用到醫(yī)療架構(gòu)體系中,與常州市合作將同區(qū)域醫(yī)療資源整合到一起,實(shí)現(xiàn)部分醫(yī)療機(jī)構(gòu)的數(shù)據(jù)共享。Healthnautica使用區(qū)塊鏈技術(shù)制作了可指定化的客戶驅(qū)動(dòng)的云軟件系統(tǒng),供醫(yī)生操作和病人辦理手續(xù),讓醫(yī)院、醫(yī)生、病人三者之間溝通無(wú)阻礙。BitHealth將區(qū)塊鏈運(yùn)用到醫(yī)療健康數(shù)據(jù)存儲(chǔ)保護(hù)[2],采用BitTorrent[3]的點(diǎn)對(duì)點(diǎn)文件傳播形式,有利于網(wǎng)絡(luò)延遲恢復(fù)數(shù)據(jù),減少各方面的支出、解決醫(yī)療記錄的重復(fù)和分散問題。Gem[4]用區(qū)塊鏈技術(shù)構(gòu)建一個(gè)醫(yī)療保健全球一體化平臺(tái),更加貼合人們的需求,提供更好的更有意義的服務(wù)。電子醫(yī)療記錄共享難以實(shí)現(xiàn),主要原因有:第一,電子醫(yī)療記錄系統(tǒng)不統(tǒng)一。各醫(yī)療機(jī)構(gòu)使用的電子醫(yī)療記錄系統(tǒng)模式存在較大差異,醫(yī)療記錄數(shù)據(jù)格式?jīng)]有統(tǒng)一,各系統(tǒng)不能協(xié)同工作,數(shù)據(jù)共享困難;第二,訪問數(shù)據(jù)周期長(zhǎng)。用戶在訪問時(shí)需要借助醫(yī)療信息系統(tǒng)(HIS),期間需要進(jìn)行身份核實(shí)、訪問權(quán)限審核等環(huán)節(jié),訪問量較大還可能造成網(wǎng)絡(luò)擁塞,數(shù)據(jù)訪問周期相對(duì)較長(zhǎng);第三,用戶電子醫(yī)療記錄安全得不到保證。電子醫(yī)療記錄信息量大且重要,患者擔(dān)心自己的電子記錄用在何處會(huì)被誰(shuí)查看,泄露個(gè)人隱私,而且電子醫(yī)療記錄存儲(chǔ)在特定醫(yī)療機(jī)構(gòu),若有針對(duì)性攻擊,系統(tǒng)很容易出現(xiàn)信息泄露、數(shù)據(jù)被篡改的情況。同時(shí),紙質(zhì)醫(yī)療記錄保存管理不易,并且醫(yī)務(wù)人員可能由于不能確信病人病歷而發(fā)生誤用藥物的情形。
電子醫(yī)療記錄要實(shí)現(xiàn)共享,首要就是保證數(shù)據(jù)的安全可靠,針對(duì)該問題研究者們做了大量工作,設(shè)計(jì)出了很多防止醫(yī)療記錄泄露的系統(tǒng),如基于醫(yī)學(xué)數(shù)字成像和通信(DICOM)的相關(guān)系統(tǒng),但這并沒有真正實(shí)現(xiàn)電子醫(yī)療記錄的共享。而區(qū)塊鏈的出現(xiàn)可以解決電子醫(yī)療共享上存在的很多問題。
基于區(qū)塊鏈技術(shù)公開透明、不易篡改、去中心、非對(duì)稱加密等特性,文中設(shè)計(jì)了電子醫(yī)療記錄共享模型,保證電子醫(yī)療記錄的真實(shí)有效,為數(shù)據(jù)安全和隱私存儲(chǔ)提供保障,還可以大大降低成本,提高醫(yī)療效率,減少醫(yī)療過失。并讓患者可以定制個(gè)性化訪問控制,實(shí)現(xiàn)患者真正參與到電子記錄共享中。
區(qū)塊鏈概念是2008年中本聰在論文《比特幣:一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)》[5]中首次提出,2015年下半年梅蘭妮·斯萬(wàn)[6]對(duì)區(qū)塊鏈的應(yīng)用前景及其局限性進(jìn)行了系統(tǒng)闡述。同年,《The promise of the blockchain:The trust machine》發(fā)表之后,區(qū)塊鏈正式引起人們的關(guān)注,IT巨頭、研究學(xué)者紛紛投入到區(qū)塊鏈的研究中。近年來(lái)各國(guó)紛紛投入到區(qū)塊鏈研發(fā)當(dāng)中,成立區(qū)塊鏈研發(fā)公司、開發(fā)區(qū)塊鏈平臺(tái)來(lái)研究其潛在的應(yīng)用場(chǎng)景。
區(qū)塊鏈技術(shù)可以理解為分布式的數(shù)據(jù)庫(kù)[7],有別于當(dāng)前主流的關(guān)系型數(shù)據(jù)庫(kù)的不可轉(zhuǎn)移信息與安全化。區(qū)塊鏈技術(shù)方案主要是將數(shù)據(jù)區(qū)塊(Block)使用數(shù)學(xué)方法,通過安全可靠的加密算法相互關(guān)聯(lián)。用區(qū)塊記錄一定時(shí)間內(nèi)的交易信息,并通過密碼學(xué)方法驗(yàn)證信息是否真實(shí)有效,并用指針鏈接到上一個(gè)區(qū)塊形成一條主鏈(Chain)[8]。
在區(qū)塊鏈系統(tǒng)中,節(jié)點(diǎn)將一段時(shí)間的交易信息進(jìn)行打包,通過各節(jié)點(diǎn)用特定哈希算法將交易分別壓縮成一段64位代碼(哈希值),兩兩哈希值繼續(xù)壓縮生成唯一的哈希值稱為Merkle樹根[9]。使用哈希加密的好處在于哈希函數(shù)具有抗碰撞性,且哈希計(jì)算時(shí)間相同輸出長(zhǎng)度固定。此外,無(wú)論文件有多大,哈希對(duì)應(yīng)過程是無(wú)法通過計(jì)算反推的。每一個(gè)區(qū)塊頭中的哈希值指向前一個(gè)區(qū)塊,形成鏈?zhǔn)浇Y(jié)構(gòu)。文中的哈希指針起到驗(yàn)證信息是否發(fā)生改變的作用。
智能合約是區(qū)塊鏈的核心要素[10],智能合約是使區(qū)塊鏈可編程的一段腳本代碼,由事件觸發(fā)。文中將其應(yīng)用在以太坊區(qū)塊鏈上,一旦符合規(guī)定條件,即自動(dòng)執(zhí)行代碼的內(nèi)容。在以太坊中,智能合約能夠幫助系統(tǒng)實(shí)現(xiàn)復(fù)雜的訪問控制策略,有助于數(shù)據(jù)的維護(hù)、存儲(chǔ)。智能合約模型如圖1所示。
圖1 區(qū)塊鏈上的智能合約模型結(jié)構(gòu)
比特幣區(qū)塊鏈中的每筆交易可寫入的信息量是40字節(jié),隨著交易量的增加,累積的數(shù)據(jù)量就會(huì)增大,交易確認(rèn)需要花費(fèi)的時(shí)間就會(huì)很長(zhǎng)。為了加快交易速度、縮短交易時(shí)間,以太坊區(qū)塊鏈[11]應(yīng)運(yùn)而生。以太坊區(qū)塊鏈可以解決區(qū)塊鏈中因累積數(shù)據(jù)過多而處理效率下降這一問題。另外,可以靈活使用智能合約,并具有圖靈完備性[12]??梢酝ㄟ^solidity語(yǔ)言編寫所需要的應(yīng)用場(chǎng)景,依靠EVM自動(dòng)執(zhí)行,并以P2P網(wǎng)絡(luò)為基礎(chǔ),真正實(shí)現(xiàn)無(wú)中心化的管理。使用簡(jiǎn)單,易儲(chǔ)存合約數(shù)據(jù)。以太坊與區(qū)塊鏈交互時(shí)需要區(qū)塊鏈地址Add=SHA3(pk-‘04’)和密碼password[13]。
醫(yī)療機(jī)構(gòu)聯(lián)盟服務(wù)群組:根據(jù)醫(yī)療機(jī)構(gòu)評(píng)審,由國(guó)家醫(yī)療衛(wèi)生政策管理機(jī)構(gòu)選出滿足硬件設(shè)施、流量大、數(shù)據(jù)多等條件的醫(yī)療機(jī)構(gòu),根據(jù)標(biāo)準(zhǔn)將所有醫(yī)療機(jī)構(gòu)綜合評(píng)估進(jìn)行排名,取前200家醫(yī)療機(jī)構(gòu)為高級(jí)聯(lián)盟服務(wù)群。
文中模型加入Hash算法,將上傳的數(shù)據(jù)信息進(jìn)行Hash生成特定的摘要值存入?yún)^(qū)塊,這樣不僅節(jié)省空間,還可以通過摘要與原文Hash的對(duì)比來(lái)驗(yàn)證上傳數(shù)據(jù)的真實(shí)性。查看時(shí)通過摘要來(lái)檢索。
采用改進(jìn)的實(shí)用拜占庭容錯(cuò)系統(tǒng)(practical Byzantine fault tolerance,PBFT)共識(shí)機(jī)制[14],為避免某些節(jié)點(diǎn)不符合條件或者沒有記賬和查詢的能力,因此選取高級(jí)聯(lián)盟服務(wù)群作為主節(jié)點(diǎn)的選取范圍,并選排在首位的醫(yī)療機(jī)構(gòu)為主節(jié)點(diǎn)。這樣不僅可以降低主節(jié)點(diǎn)出錯(cuò)的可能概率,還可以在提高效率的同時(shí)降低危險(xiǎn)系數(shù),并提高達(dá)成共識(shí)的速度。設(shè)計(jì)模型如圖2所示。
圖2 電子病歷記錄共享模型(EMRM)
模型工作步驟如下:
(1)高級(jí)聯(lián)盟服務(wù)群中的節(jié)點(diǎn)需要在網(wǎng)絡(luò)上注冊(cè)一個(gè)公鑰,得到一個(gè)特定的32位標(biāo)識(shí)符。然后該標(biāo)識(shí)符會(huì)被每筆交易數(shù)據(jù)的“頭部”引用。
(2)醫(yī)療機(jī)構(gòu)通過客戶端將數(shù)據(jù)用公鑰加密并上傳到鏈外的可信數(shù)據(jù)庫(kù)中。
(3)客戶端通過P2P網(wǎng)絡(luò)向主節(jié)點(diǎn)發(fā)送請(qǐng)求,主節(jié)點(diǎn)收到請(qǐng)求將其排序廣播之后達(dá)成共識(shí)。
(4)將達(dá)成共識(shí)后的數(shù)據(jù)上傳到區(qū)塊鏈分布式數(shù)據(jù)庫(kù)。
(5)節(jié)點(diǎn)將區(qū)塊形成區(qū)塊鏈,用web3提供的API與Geth節(jié)點(diǎn)交互,并用password對(duì)用戶的私鑰加密。
(6)患者可通過身份認(rèn)證查詢數(shù)據(jù),醫(yī)生可上傳數(shù)據(jù)或通過訪問控制對(duì)數(shù)據(jù)進(jìn)行查詢。
醫(yī)療機(jī)構(gòu)通過身份認(rèn)證后將患者的電子病歷數(shù)據(jù)進(jìn)行封裝并使用患者的私鑰對(duì)數(shù)據(jù)進(jìn)行加密,上傳送到脫鏈的可信存儲(chǔ)庫(kù),向請(qǐng)求端C發(fā)送
文中設(shè)計(jì)的區(qū)塊鏈電子醫(yī)療記錄共享模型,通過訪問控制,實(shí)現(xiàn)用戶自定義個(gè)性化訪問控制策略,是為解決數(shù)據(jù)共享在隱私保護(hù)方面存在幾個(gè)問題[15]:首先患者敏感數(shù)據(jù)可能會(huì)被非法竊取,容易被泄露;其次大多數(shù)情況下醫(yī)生在未經(jīng)患者同意下就查看患者的歷史醫(yī)療記錄。另外,患者沒有參與到自己的健康數(shù)據(jù)共享中,不知自己的數(shù)據(jù)會(huì)用在何處。因此,設(shè)置訪問控制能更好地保護(hù)患者個(gè)人隱私,同時(shí)也幫助醫(yī)療機(jī)構(gòu)更高效準(zhǔn)確地診治患者。
定義:訪問控制模型基本元素。
用戶集:U={user1,user2,…,usern},所有用戶的集合。
角色集:R={role1,role2,…,rolen},用戶在一個(gè)系統(tǒng)中身份的集合,由角色來(lái)決定對(duì)資源操作的權(quán)利。
會(huì)話:Session,表示用戶與角色之間相互對(duì)應(yīng)的關(guān)系。
權(quán)限:Permission,表示訪問數(shù)據(jù)可以進(jìn)行的操作。
目的集:Purpose={pu1,pu2,…,pun},分為訪問目的(AP)和使用目的(UP)。AP是指醫(yī)療相關(guān)人員想要將訪問的數(shù)據(jù)用在何處,UP是指患者希望自己的醫(yī)療數(shù)據(jù)用在何處。
Rpu?Roles×Purpose,表示角色與目的的綁定。
Rpe?Roles×Permission,表示角色與權(quán)限的綁定,不同角色由不同的權(quán)限設(shè)置。
PR?Purpose×Permission,表示目的在特定權(quán)限上的操作。
訪問控制模型結(jié)構(gòu)如圖3所示。
用戶根據(jù)自己的偏好對(duì)自己的健康數(shù)據(jù)設(shè)置允許數(shù)據(jù)使用的意圖,并對(duì)自己的數(shù)據(jù)設(shè)置權(quán)限,其中Right(read/share)規(guī)定數(shù)據(jù)可以進(jìn)行哪些操作,患者設(shè)置From:To:,只有在這個(gè)過程中有權(quán)訪問,患者也可以使用匿名標(biāo)簽指定數(shù)據(jù)是否需要匿名。Timestamp的目的是為了確保一個(gè)權(quán)限值設(shè)置了一次。
訪問控制步驟如下:
圖3 訪問控制模型結(jié)構(gòu)
(1)生成系統(tǒng)參數(shù)KP和主私鑰KM。
(2)用戶申請(qǐng)注冊(cè),將獲取的身份ID和用戶屬性集Attu發(fā)送給認(rèn)證中心CA,驗(yàn)證正確后進(jìn)入步驟3,否則終止。在區(qū)塊鏈中注冊(cè)后,只能由用戶本身訪問數(shù)據(jù)或者通過權(quán)限的代理訪問數(shù)據(jù)。
(3)認(rèn)證中心CA通過量子密鑰分配方式下發(fā)私鑰Ks給用戶。
(4)患者制定訪問控制策略,輸入要加密的數(shù)據(jù)信息m,生成密文后上傳。
(5)用戶要訪問數(shù)據(jù)時(shí),首先進(jìn)行身份認(rèn)證,之后用戶提出訪問請(qǐng)求。其次檢測(cè)該角色是否擁有指定的訪問目的,若通過則根據(jù)患者設(shè)置的可訪問時(shí)間段,使UP與AP相核對(duì),AP與UP不符,請(qǐng)求被拒絕。
訪問控制流程如圖4所示。
圖4 訪問控制流程
該模型的特點(diǎn)是采用P2P結(jié)構(gòu),避免了單點(diǎn)攻擊,通過所有節(jié)點(diǎn)共同維護(hù),可以很好地保證系統(tǒng)穩(wěn)定性。
在分發(fā)密鑰過程中,若私鑰被竊聽或截取,根據(jù)采用的量子密鑰分配的特性,會(huì)被通信雙方察覺,認(rèn)證中心會(huì)將此密鑰作廢另發(fā)新密鑰,直到安全為止。
全網(wǎng)采用改進(jìn)的PBFT共識(shí)機(jī)制,保證數(shù)據(jù)的真實(shí)有效。通過實(shí)驗(yàn)收集的數(shù)據(jù)得出,改進(jìn)的PBFT共識(shí)機(jī)制比原以太坊使用的PoW共識(shí)機(jī)制更適用于該模型。從圖5中的數(shù)據(jù)線性趨勢(shì)對(duì)比可以看出,改進(jìn)后的PBFT(IMPBFT)比原來(lái)的POW共識(shí)機(jī)制占用的時(shí)間明顯少很多,對(duì)請(qǐng)求可做出快速響應(yīng)。
圖5 CPU占用率對(duì)比
采用對(duì)照分析法,從是否基于區(qū)塊鏈、能否減輕主鏈壓力、網(wǎng)絡(luò)容錯(cuò)性這三個(gè)方面,對(duì)主流醫(yī)療模型進(jìn)行分析。其中BitHealth可以稱作是近年來(lái)最可靠的醫(yī)療平臺(tái),幾乎不會(huì)出現(xiàn)癱瘓的情況,但是在資源利用方面存在一定的缺陷;MedRec的主要特點(diǎn)是隱私保護(hù),但在資源占用和網(wǎng)絡(luò)容錯(cuò)方面沒有EMRM有優(yōu)勢(shì);還有最近薛騰飛等提出的MDSM使用改進(jìn)的DPOS共識(shí)機(jī)制,能夠減輕主鏈壓力,但在網(wǎng)絡(luò)的穩(wěn)定性方面有一定劣勢(shì)。文中提出的EMRM通過改進(jìn)的PBFT增強(qiáng)網(wǎng)絡(luò)的穩(wěn)定性,降低了資源利用率,與具有代表性的模型進(jìn)行對(duì)比的具體情況如表1所示。
表1 模型對(duì)比
研究了區(qū)塊鏈的主要技術(shù)和發(fā)展現(xiàn)狀,介紹了電子醫(yī)療記錄共享的重大意義以及現(xiàn)實(shí)電子醫(yī)療記錄共享存在的問題,根據(jù)存在的問題,設(shè)計(jì)了基于區(qū)塊鏈的電子醫(yī)療記錄共享模型,解決了當(dāng)前電子醫(yī)療記錄共享中存在的信息安全性弱的問題。但該模型也存在很多不足,有待于進(jìn)一步完善。