冷澤琪, 譚振江, 王坤昊, 丁婷婷
(吉林師范大學(xué) 計(jì)算機(jī)學(xué)院, 吉林 四平 136000)
現(xiàn)階段的醫(yī)療記錄系統(tǒng)存在很多管理和技術(shù)上的挑戰(zhàn)。例如, 醫(yī)護(hù)人員在做出重要的患者護(hù)理決策時(shí), 不能及時(shí)地獲取完整、 準(zhǔn)確、 可靠的相關(guān)信息[1]; 當(dāng)IT(Information Technology)提供商嘗試通過提升服務(wù)質(zhì)量獲取收益時(shí), 很多病理無法直接獲取經(jīng)濟(jì)回報(bào)。激勵失調(diào)會導(dǎo)致提供商的IT采用率增長緩慢。另外, 由于沒有及時(shí)電子存檔, 許多患者(尤其是兒童和老人)記錯或忘記病史。而成年人涉及到一些隱私問題時(shí), 未必能提供真實(shí)的病情導(dǎo)致治療效果不佳。由此可見, 真實(shí)、 完整、 低成本地提供PHR(Personal Health Records)是制定治療計(jì)劃的關(guān)鍵。廣義上講, PHR包含完整的醫(yī)療保健數(shù)據(jù), 如醫(yī)療歷史、 用藥程序和重大疾病以及過敏信息、 家庭監(jiān)測數(shù)據(jù)、 家庭成員歷史、 社會記錄和生活方式、 免疫記錄、 處方藥、 實(shí)驗(yàn)室實(shí)驗(yàn)和遺傳數(shù)據(jù)[2-5]。
由于現(xiàn)階段區(qū)塊鏈系統(tǒng)中對身份的重重篩選會造成高額的運(yùn)算成本, 同時(shí)區(qū)塊鏈的上鏈數(shù)據(jù)不可刪除, 不可篡改, 因此, 隨著PHR的增加, 存儲壓力會越來越大。FV(Finger Vein)身份驗(yàn)證和超級賬本為上述問題提供了一個全新的解決方向, 故筆者提出一個基于超級賬本和FV身份認(rèn)證的PHR數(shù)據(jù)安全與共享方案, 將新型FV技術(shù)與Hyperledger Fabric結(jié)合, 降低了身份認(rèn)證的成本和耗時(shí)。同時(shí)將索引和完整記錄分別存儲在鏈上和Filecoin中, 能減輕鏈上存儲壓力。并且基于訪問控制智能合約的高度自治性能很好地保護(hù)隱私。
超級帳本不同于區(qū)塊鏈和加密貨幣, 是一個開源的聯(lián)合項(xiàng)目。它由Linux基金會托管和管理, 包括金融、 銀行、 物聯(lián)網(wǎng)、 供應(yīng)鏈、 制造業(yè)和技術(shù)領(lǐng)域的領(lǐng)導(dǎo)者。
除了具有傳統(tǒng)區(qū)塊鏈技術(shù)的一般特點(diǎn)外, 超級賬本作為一個開源系統(tǒng)還具有如下很多優(yōu)勢(信息來源: https:∥www.hyperledger.org/wp-content/uploads/2018/08/HL_Whitepaper_IntroductiontoHyperledger.pdf)。
1) 簡要的溝通環(huán)境有助于新學(xué)員快速地趕上社區(qū)的發(fā)展進(jìn)度。
2) 讓眾多開發(fā)者能集中精力處理較少的任務(wù), 從而加強(qiáng)社區(qū)的專業(yè)化。
3) 鼓勵協(xié)助開發(fā)項(xiàng)目, 大大減少重復(fù), 簡化新項(xiàng)目的開發(fā)。
4) 通過TSC(Technical Steering Committee)定期審查項(xiàng)目, 促進(jìn)開源軟件的質(zhì)量。
5) 對開發(fā)者的知識產(chǎn)權(quán)采取一致的許可和標(biāo)準(zhǔn), 開發(fā)者不必?fù)?dān)心成員之間復(fù)雜的合同和隱藏的法律問題[7]。
由于超級賬本是一個聯(lián)合項(xiàng)目, 其中最早貢獻(xiàn)到https:∥www.hyperledger.org/網(wǎng)站上的是Fabric項(xiàng)目。如圖1所示是Fabric 2.0的交易流, 其中包括背書節(jié)點(diǎn)、 領(lǐng)導(dǎo)節(jié)點(diǎn)和記賬節(jié)點(diǎn), 橙色括號外代表執(zhí)行該步驟的接口。
Fabric整體結(jié)構(gòu)包括應(yīng)用、 鏈碼、 賬本、 數(shù)據(jù)庫存儲、 區(qū)塊鏈結(jié)構(gòu)、 共識、 權(quán)限管理和數(shù)字證書等多個組件。為方便開發(fā)者, Fabric還提供了gRPC API和SDK(Node.js, Java等)。通常情況下, 應(yīng)用開發(fā)者只需要操作SDK即可訪問網(wǎng)絡(luò)中的資源(包括賬本、 交易、 鏈碼、 事件等), 無需關(guān)心底層的實(shí)現(xiàn)[6]。
此外, 為企業(yè)級標(biāo)準(zhǔn)應(yīng)用開發(fā)的Fabric平臺還具有很多特性。比如特殊的處理事務(wù)邏輯(“背書→排序→提交”模型)、 不同賬本彼此隔離、 不同權(quán)限有不同的共享通道、 支持可插拔選項(xiàng)和共識機(jī)制等。這些特性對PHR系統(tǒng)的改革有很大的優(yōu)勢。因此, 選擇Fabric作為底層平臺, 聯(lián)合FV識別技術(shù)開發(fā)一個PHR系統(tǒng), 加強(qiáng)醫(yī)療信息共享的安全性。
Filecoin是一種分布式的存儲平臺, 是基于星際文件系統(tǒng)的一個成熟項(xiàng)目。其中含有存儲礦工、 客戶機(jī)和檢索礦工3個實(shí)體。Filecoin協(xié)議的一致算法能保護(hù)網(wǎng)絡(luò)免受惡意活動的侵害[7]。為確認(rèn)特定數(shù)量的存儲在一段時(shí)間內(nèi)以特定方式使用, Filecoin提出一種新型的“時(shí)空證明”, 即數(shù)據(jù)在特定的時(shí)間內(nèi)占用了特定的存儲空間。此外, Filecoin通過令牌進(jìn)行對等交換[8]。比如, 客戶存儲一定量的Filecoin, 礦工就會為客戶提供存儲空間, 相應(yīng)地, 礦工也會獲得一定量的獎勵。Filecoin具有成本低、 高效、 穩(wěn)定等特性, 因此筆者選擇Filecoin作為存儲平臺。
手指靜脈是一種皮下結(jié)構(gòu), 它隨機(jī)地發(fā)展成一個網(wǎng)絡(luò)并延伸到一個手指上, 是一種很獨(dú)特的生物特征。這種生物特征信息在同一個人的每只手的手指之間是無法比較的, 靜脈生物測定也是非接觸的[9], 因此不需要解決健康問題。如表1所示, 它與指紋、 虹膜和步態(tài)等其他生物特征識別方法相比, 手指靜脈在應(yīng)用中顯示出一些獨(dú)特的優(yōu)勢。
表1 手指靜脈與其他特征對比的優(yōu)勢
為保證PHR數(shù)據(jù)的真實(shí)性和其他節(jié)點(diǎn)的安全共享, 筆者設(shè)計(jì)了一種基于超級賬本和手指靜脈的PHR共享模型(PHFV)。表2是文中各部分搭建的測試環(huán)境。
表2 測試圖像的運(yùn)行環(huán)境
如圖2所示, PHFV模型總共分為5個實(shí)體: 患者(PA: Patient)、 臨床醫(yī)生(CL: Clinician)、 醫(yī)藥研發(fā)機(jī)構(gòu)(PRD: Pharmaceutical Research and Development institution)、 醫(yī)生(DOC: Doctor)和醫(yī)療機(jī)構(gòu)(ME: Medical institutions)。5個實(shí)體在模型中的工作任務(wù)解釋如下(以下為模擬過程)。
PA?;颊咪浫胗涗浶畔r(shí), 用左手指接觸手指靜脈采集裝置進(jìn)行FV認(rèn)證。過程分為兩個階段: 當(dāng)PA進(jìn)行手指靜脈采集后, PA發(fā)出注冊申請, 系統(tǒng)進(jìn)行圖像預(yù)處理, 并請求CL發(fā)送私鑰簽名PKS。系統(tǒng)對圖像進(jìn)行分割轉(zhuǎn)換處理后, 將CL的PKS和靜脈的二進(jìn)制字符串打包生成MD5值, 生成該交易的唯一的哈希值, 記錄在Fabric網(wǎng)絡(luò)中。如果PA是老用戶, 系統(tǒng)則發(fā)出靜脈匹配請求, 將再次收集到的靜脈紋路與注冊時(shí)相比較, 若相同則判斷為真實(shí)者并通過申請, 可以查閱PHR或上傳記錄(執(zhí)行上述步驟)。若不同則判斷為冒名頂替者, 請求無效并記錄該人的指紋存檔在一個私有鏈Blackchain中, 達(dá)到一定次數(shù)和條件, 該用戶將禁止登錄。
CL。由于CL作為記錄證明醫(yī)生, 需要將其私鑰簽名發(fā)送到注冊節(jié)點(diǎn), CL利用橢圓簽名加密算法將自己的私鑰加密。系統(tǒng)收到CL的簽名后, 進(jìn)行私鑰簽名驗(yàn)證, 流程為: 首先根據(jù)獲得的消息Message計(jì)算哈希值H, 再計(jì)算一個中間點(diǎn)D(DX,DY), 然后將其與接收到的中間點(diǎn)Med(mx,my)進(jìn)行對比, 如果相同, 就驗(yàn)證通過, 否則不通過, 進(jìn)行重新簽名。
圖2 PHFV模型架構(gòu)圖Fig.2 PHFV model architecture diagram
PRD。醫(yī)藥研發(fā)單位負(fù)責(zé)共享并收集PHR。首先PRD向PHR發(fā)送請求, 區(qū)塊鏈對接收到的消息進(jìn)行哈希運(yùn)算, 形成區(qū)塊摘要; 然后用PRK對摘要進(jìn)行加密, 形成簽名。PA對消息進(jìn)行哈希運(yùn)算, 然后用相應(yīng)的PUK解密, 再對比二個哈希值。如果一致, 驗(yàn)證通過, 可共享該P(yáng)A的PHR。PRD將收集到的PHR信息集成分析可以促進(jìn)醫(yī)藥的研發(fā)。
DOC。醫(yī)生節(jié)點(diǎn)的訪問目的在于, 當(dāng)PA跨機(jī)構(gòu)進(jìn)行診斷時(shí), 需要調(diào)用其歷史醫(yī)療記錄。醫(yī)生的身份驗(yàn)證要通過智能合約, 通過后可以查看PA的病史, 以便DOC進(jìn)行精準(zhǔn)醫(yī)療。
ME。醫(yī)療機(jī)構(gòu)主要包括: 醫(yī)院、 醫(yī)療公司、 藥店和其他醫(yī)療器械公司等實(shí)體。當(dāng)ME發(fā)送請求給Fabric, 將觸發(fā)智能合約。通過后, ME節(jié)點(diǎn)可實(shí)現(xiàn)共享安全的PHR, 作為利益方, 分析和整理安全的醫(yī)療記錄有益于機(jī)構(gòu)的進(jìn)貨篩選, 再對該機(jī)構(gòu)的信譽(yù)、 經(jīng)濟(jì)實(shí)力和規(guī)模等進(jìn)行相應(yīng)提升。
1) 圖像采集。如圖3所示, PA用左手指接觸靜脈采集裝置后, CCD(Charge Coupled Device)攝像機(jī)(因?yàn)殪o脈切面比周圍少, 用紅外敏感的CCD攝像機(jī)可以觀察到手指靜脈形態(tài)。)通過近紅外濾光片進(jìn)行檢測。1 000 nm的近紅外光可以穿透手指皮膚, 而靜脈中的血紅蛋白可以吸收近紅外光。
圖3 FV認(rèn)證框架Fig.3 FV certification framework
2) 區(qū)域圖像提取。該過程包括使用CLANE算法進(jìn)行對比度處理、 ROI(Region Of Interest)提取和基于Otsu-s的改進(jìn)分割算法去除背景。先對圖像進(jìn)行對比度預(yù)處理即調(diào)整對比度使邊緣和紋理清晰可見, 再對圖像進(jìn)行ROI提取, 即感興趣區(qū)域。
3) 圖像分割處理。筆者采用改進(jìn)的Otsu-s分割算法去除FV背景圖像。其將圖像的灰度值分割成方差最大的兩部分。在對比圖4中, 左上角為原圖像, 右上角為簡單閾值分割, 左下角為鄰域平均值分割, 二者的分割效果較差; 右下角為改進(jìn)的Otsu-s, 采用高斯函數(shù)分布后執(zhí)行的效果。
圖4 改進(jìn)后的OSTU分割手指靜脈對比圖Fig.4 Comparison of improved OSTU segmentation of finger veins
經(jīng)過上述圖像處理后, 系統(tǒng)會驗(yàn)證是否為本人錄入健康記錄, 防止惡意節(jié)點(diǎn)提供虛假信息。驗(yàn)證通過后, PA可以上傳個人的醫(yī)療記錄。
筆者設(shè)計(jì)了一個訪問控制合約, 主要包括function createProduct、 function updateTimestamp()、 function fiveMinutesHavePassed()和function visiteProduct等函數(shù)。時(shí)間控制和次數(shù)控制的部分偽代碼如下。
lastUpdated←0
call updateTimestamp()
lastUpdated←now
call fiveMinutesHavePassed()
now ←lastUpdated+5 minutes
totalVisted←0
callvisiteProduct()
if(fiveMinutesHavePassed() && totalVisted<=500)
then {totalVisted++
nickname←products[qurNum]}
else{callupdateTimestamp()
totalVisted←不合法的}
當(dāng)PA通過該合約后可以查詢自己的PHR信息。其中PA錄入信息的格式如下:
PA={string memory nickname, string memory medicalclass, string memory numNote, uint idCard, string memory sex,string memory description, uint mykey}。圖5為可查到的PHR信息。
圖5 例子中上鏈的PHR信息Fig.5 PHR information on the chain in the example
例如, PA={tom, heart disease,20,222403,male,Need heart bypass surgery,20}。
筆者選用Fabric2.0和Filecoin1.3.0作為測試平臺。將文獻(xiàn)[10]中基于區(qū)塊鏈的DNSSEC的身份認(rèn)證模型和文獻(xiàn)[11]中基于區(qū)塊鏈技術(shù)實(shí)現(xiàn)的實(shí)名數(shù)字身份認(rèn)證機(jī)制進(jìn)行模擬實(shí)驗(yàn), 通過比較這兩種身份驗(yàn)證模型(見圖6、 圖7)的執(zhí)行時(shí)間和醫(yī)療數(shù)據(jù)的占用空間情況等其他指標(biāo), 驗(yàn)證PHFV方案的高效性和可行性。從圖6可以看出, 隨著醫(yī)療記錄的增加, 筆者方案在身份認(rèn)證耗時(shí)上具有明顯的優(yōu)勢。從圖7可以看出, 在同樣存儲空間中, 筆者的方案可以錄入更多的個人健康記錄。
圖6 PHFV模型處理時(shí)間方面與其他方案對比 圖7 PHFV模型存儲方面與其他方案對比Fig.6 Comparison of PHFV model processing Fig.7 Comparison of PHFV model time with other solutions storage with other solutions
個人電子病歷記錄的共享有助于提高診斷準(zhǔn)確率、 降低醫(yī)療成本以及對自身的健康做規(guī)劃。在提高信息真實(shí)性方面, 采用新型的手指靜脈身份認(rèn)證, 用生物識別技術(shù)保證患者的記錄真實(shí)性; 提出利用哈希索引和Filecoin結(jié)合減少區(qū)塊鏈上的存儲成本; 通過智能合約對訪問節(jié)點(diǎn)進(jìn)行限制, 防止惡意節(jié)點(diǎn)對PHR攻擊。但在靜脈識別和分割上的精準(zhǔn)度有待提高, 下一步將致力于FV的精準(zhǔn)分割, 并對手術(shù)病歷記錄進(jìn)行深入研究, 為精準(zhǔn)醫(yī)療做進(jìn)一步的貢獻(xiàn)。