◆魏濟澤 汪碩
(1.東南大學(xué)網(wǎng)絡(luò)空間安全學(xué)院 江蘇 211100;2.網(wǎng)絡(luò)通信與安全紫金山實驗室 江蘇 211100)
隨著社會的發(fā)展和時代的進步,每天都會產(chǎn)生大量的數(shù)據(jù)。這些 數(shù)據(jù)如果可以被很好收集和使用就會產(chǎn)生巨大的價值。時下最熱門的人工智能就是如此,特別是其中的深度學(xué)習(xí)對于數(shù)據(jù)集極其依賴。如果沒有一個被處理得很好的數(shù)據(jù)集,那么深度學(xué)習(xí)訓(xùn)練出來的模型就會出現(xiàn)一個較大的偏差,從而對公司和企業(yè)造成名譽上和實際上的損失。由此可以看出,數(shù)據(jù)的正確性和存儲的安全性已經(jīng)成為一個不可或缺的考慮因素。出于對這個問題的考慮,本文提出了一種基于區(qū)塊鏈技術(shù)的數(shù)據(jù)存儲方案,并從數(shù)據(jù)的完整性和數(shù)據(jù)的安全性對其進行了分析,從理論上證明了確實可以實現(xiàn)數(shù)據(jù)保護的比較好的效果。
自比特幣[1]被廣為熟知后,其底層網(wǎng)絡(luò)框架——區(qū)塊鏈也逐漸走入了人們的視野。人們發(fā)現(xiàn)區(qū)塊鏈具有的不可篡改性,安全性,去中心化,公開透明等特性對于當(dāng)前現(xiàn)實生活中的一些場景,例如上下游企業(yè)的一體化,慈善捐贈,貨物的溯源等可以起到很大的作用。它在互不信任的人們之間構(gòu)建了一個基于密碼學(xué),而非第三方平臺的信任機制,減少了中間商的差價賺取,以及由于其他因素導(dǎo)致的不信任情況。人們對于區(qū)塊鏈的信任,一方面基于對密碼學(xué)和計算機代碼的認知,另一方面也基于其按經(jīng)濟規(guī)律設(shè)計的契約規(guī)則。
區(qū)塊鏈的本質(zhì)是一種去中心化的分布式賬本,運用了非對稱加密,哈希函數(shù),時間戳,共識機制,點對點網(wǎng)絡(luò)等技術(shù)。在區(qū)塊鏈中,區(qū)塊不單是存儲交易事務(wù)信息的載體,也是形成區(qū)塊鏈的一種保障。一個區(qū)塊分為區(qū)塊頭和區(qū)塊體兩部分。以比特幣的區(qū)塊為例,區(qū)塊頭中保存的信息有版本,父區(qū)塊哈希值,Merkle 根,時間戳,難度目標,Nonce。區(qū)塊體中保存的是交易以及其哈希值構(gòu)成的一棵Merkle 樹,如圖1 所示:
圖1 區(qū)塊內(nèi)部結(jié)構(gòu)示意圖
IPFS[2](InterPlanetary File System)又稱星際文件系統(tǒng),是一種P2P 拓撲結(jié)構(gòu)的分布式超媒體文件分發(fā)協(xié)議,IPFS 提供了高吞吐量的內(nèi)容尋址塊存儲模型,具備內(nèi)容尋址的超鏈接,并建立了一個廣義的MerkleDAG 數(shù)據(jù)結(jié)構(gòu),使用者可以使用該數(shù)據(jù)結(jié)構(gòu)構(gòu)建版本文件系統(tǒng),區(qū)塊鏈,甚至是長久性網(wǎng)站。當(dāng)信息存儲在IPFS 中時,IPFS會根據(jù)當(dāng)前內(nèi)容對應(yīng)生成一個哈希值。當(dāng)使用該哈希值在IPFS 中尋找文件的時候,IPFS 會使用一個分布式散列表來查詢文件所在地,取回并驗證文件內(nèi)容[3]。
目前,已經(jīng)有了很多基于數(shù)據(jù)鏈技術(shù)的數(shù)據(jù)存儲相關(guān)研究。
文獻[4]提出了基于區(qū)塊鏈的電力營銷數(shù)據(jù)存儲方法,就是將存儲節(jié)點與需求節(jié)點的交易數(shù)據(jù)發(fā)布在區(qū)塊鏈上,同時根據(jù)企業(yè)的實際需求,設(shè)置了一個依照交易記錄對存儲節(jié)點進行信用分評價的設(shè)置;
文獻[5]提出了基于區(qū)塊鏈的醫(yī)療數(shù)據(jù)存儲方法,前提是用戶會很關(guān)心個人數(shù)據(jù)的隱私,數(shù)據(jù)的完整度。目的是為了實現(xiàn)數(shù)據(jù)可以在不同就診的地方進行查詢。用戶使用私鑰對自己的醫(yī)療數(shù)據(jù)進行加密解密,在新的地方就診的時候,通過檢驗前面醫(yī)療機構(gòu)的簽名,以及對自己的加密數(shù)據(jù)進行解密,從而得到過往的醫(yī)療數(shù)據(jù),開始新一次的使用。文中將醫(yī)療原始數(shù)據(jù)存儲在云服務(wù)中,將元數(shù)據(jù)存儲在區(qū)塊鏈上,實現(xiàn)對數(shù)據(jù)的存儲。
文獻[6]提出一種基于聯(lián)盟鏈的具有時間維度的醫(yī)療數(shù)據(jù)安全共享方案。首先利用云存儲器存儲原始醫(yī)療數(shù)據(jù)密文,以聯(lián)盟鏈存儲元數(shù)據(jù)來實現(xiàn)醫(yī)療數(shù)據(jù)的安全存儲和共享,其次利用智能合約來實現(xiàn)具有時間限制的細粒度訪問機制。
從前面相關(guān)工作可以,目前基于區(qū)塊鏈一般性的數(shù)據(jù)存儲方案具有以下一些特點:
(1)數(shù)據(jù)存儲用到的區(qū)塊鏈都是基于聯(lián)盟鏈,客戶和共識節(jié)點間存在一定的關(guān)系,但不一定是同一機構(gòu)。
(2)區(qū)塊鏈上記錄的都是事務(wù)交易信息,而非數(shù)據(jù)存儲信息,比如醫(yī)療數(shù)據(jù)存儲在云服務(wù)設(shè)備中。
(3)數(shù)據(jù)的安全性保護都涉及加密。
目前還有一種數(shù)據(jù)存儲方式是使用雙鏈結(jié)構(gòu),就是一條區(qū)塊鏈上存儲原始數(shù)據(jù),另外一條鏈上依舊存儲元數(shù)據(jù)。這樣來實現(xiàn)一個完全基于區(qū)塊鏈的數(shù)據(jù)存儲。
文獻[7]針對區(qū)塊鏈應(yīng)用中存在節(jié)點存儲壓力大的問題,設(shè)計了一種基于子鏈交易索引的雙層鏈結(jié)構(gòu)。采取的措施是將聯(lián)盟鏈中所有節(jié)點劃分為群,全網(wǎng)完整交易記錄被存儲在全節(jié)點維護的主鏈中。群內(nèi)節(jié)點共同維護一條索引子鏈,索引子鏈無須存儲全網(wǎng)的完整交易記錄而只需存儲本群所產(chǎn)生的交易記錄摘要,降低群內(nèi)節(jié)點的存儲壓力。
文獻[8]提出一種名為IDDS 的傳染病數(shù)據(jù)共享模型,在該模型中,使用雙層鏈結(jié)構(gòu)的形式用來進行訪問信息與地址存儲信息的放置。兩條鏈使用hash 進行錨定連接。
綜合上述內(nèi)容可以得知,有一條鏈是主要作為了存儲類型的區(qū)塊鏈,但是沒有很明顯的使用到區(qū)塊鏈作為點對點分布式可提供信用背書的優(yōu)點。論文認為區(qū)塊鏈雖然是點對點的分布式數(shù)據(jù)庫,但是在使用區(qū)塊鏈的過程中,其存儲功能記錄區(qū)塊已經(jīng)使用了巨大的存儲空間,如果還要負責(zé)存儲原始數(shù)據(jù),就會造成很大的存儲負擔(dān)。目前已經(jīng)有很多節(jié)點選擇不去成為一個區(qū)塊鏈中的全節(jié)點,而只是存儲一些內(nèi)容,本身就是因為存儲空間不夠使用,因此論文的方案設(shè)計沒有考慮使用雙層區(qū)塊鏈存儲結(jié)構(gòu)。
隱私性保護是數(shù)據(jù)被用作研究用途最需要得到的保證之一。常見的有姓名、身份證號碼、住址、電話、銀行賬號、郵箱、密碼、醫(yī)療信息、教育背景等[9]。這些與個人生活、工作密切相關(guān)的信息受到不同行業(yè)和政府?dāng)?shù)據(jù)隱私法規(guī)的管制。如果負責(zé)存儲和發(fā)布這些信息的企業(yè)或政府無法保證數(shù)據(jù)隱私,他們就會面臨嚴重的財務(wù)、法律 或問責(zé)風(fēng)險,同時在用戶信任方面蒙受巨大損失。病歷上一般有著固定的數(shù)據(jù)格式,所以論文將采用常見信息去除的方式,來生成脫敏數(shù)據(jù)。醫(yī)療原始數(shù)據(jù)以及脫敏數(shù)據(jù)均保存在云存儲中,同時給脫敏數(shù)據(jù)生成一份數(shù)據(jù)描述,方便醫(yī)療機構(gòu)在訪問云存儲數(shù)據(jù)的時候進行選擇。
經(jīng)過第二章節(jié)的研究,論文采用區(qū)塊鏈和云存儲相結(jié)合的方式來設(shè)計數(shù)據(jù)存儲方案。論文對于模型的節(jié)點內(nèi)容劃分為五個角色:
(1)云存儲器,為加密的醫(yī)療數(shù)據(jù)提供存儲空間。
(2)聯(lián)盟鏈:聯(lián)盟鏈中的節(jié)點由多家醫(yī)療機構(gòu)組成,所有節(jié)點來共同維護區(qū)塊鏈。聯(lián)盟鏈中存儲的是節(jié)點收集的醫(yī)療數(shù)據(jù)的元數(shù)據(jù),用來檢測數(shù)據(jù)是否被篡改過。
(3)患者,是醫(yī)療數(shù)據(jù)的所有者。是需要數(shù)據(jù)隱私保護的主體,主要承擔(dān)的作用就是將數(shù)據(jù)上傳到醫(yī)院,并為自己的醫(yī)療數(shù)據(jù)設(shè)置訪問策略。
(4)醫(yī)院,產(chǎn)生醫(yī)療數(shù)據(jù),得到用戶授權(quán)后,對數(shù)據(jù)進行加密操作,并將數(shù)據(jù)密文存儲在云存儲器,將醫(yī)療元數(shù)據(jù)存儲到聯(lián)盟鏈。
(5)醫(yī)療機構(gòu),具有醫(yī)療數(shù)據(jù)訪問需求,訪問的時候需要獲得數(shù)據(jù)訪問權(quán)限。
醫(yī)療數(shù)據(jù)從原理上來講具有兩種用途:(1)查詢病人自己的病史,當(dāng)患者進入一家醫(yī)院就診時,醫(yī)院就可以通過調(diào)用云存儲的數(shù)據(jù),進行病史分析,進而采用相應(yīng)的措施來治病。此時需要患者的詳細數(shù)據(jù)。(2)大量的醫(yī)療數(shù)據(jù)對于醫(yī)療研究這方面會起到非常重要的作用,最基本的用處就是通過相似性聚類來得到某個病證是否是屬于某個年齡段,或者某些地區(qū)的人們更有可能得的病癥,這樣也方便采取相應(yīng)的措施來預(yù)防。此時不需要提供用戶姓名,詳細住址等敏感數(shù)據(jù)。
所以,接下來開始對整個過程進行描述:
圖2 基于區(qū)塊鏈技術(shù)的數(shù)據(jù)存儲方案
患者將消息標識符T1 發(fā)送給醫(yī)院節(jié)點,醫(yī)院節(jié)點對醫(yī)療數(shù)據(jù)處理進程如下:
(1)醫(yī)院節(jié)點對原始醫(yī)療數(shù)據(jù)進行脫敏處理,產(chǎn)生脫敏醫(yī)療數(shù)據(jù),將原始醫(yī)療數(shù)據(jù)求取哈希值Hrm;
(2)醫(yī)院節(jié)點對于原始醫(yī)療數(shù)據(jù)采用非對稱加密,首先使用用戶的公鑰對原始醫(yī)療數(shù)據(jù)進行加密,其次使用自己的私鑰對加密的醫(yī)療數(shù)據(jù)進行再次加密,由于醫(yī)院的公鑰是公開在區(qū)塊鏈中的,所以很容易證明該醫(yī)院節(jié)點對此次的醫(yī)療數(shù)據(jù)負責(zé)。同時原始醫(yī)療數(shù)據(jù)也只有用戶才可以解密。
(3)醫(yī)院節(jié)點不需要對脫敏數(shù)據(jù)進行再次加密,因為此時其已經(jīng)相當(dāng)于無隱私數(shù)據(jù)的公開數(shù)據(jù)。但是需要對脫敏數(shù)據(jù)生成數(shù)據(jù)描述,方便后面醫(yī)療機構(gòu)對數(shù)據(jù)有需求的時候進行數(shù)據(jù)篩查。
(4)由于論文采用IPFS,云存儲會生成內(nèi)容的哈希值。云存儲返回此次原始醫(yī)療數(shù)據(jù)LCrm和脫敏數(shù)據(jù)LCdm的存儲哈希給醫(yī)院節(jié)點。
(5)醫(yī)院節(jié)點收到存儲地址后,將LCrm 與Hrm 集合起來作為一次交易事務(wù)上傳在聯(lián)盟鏈中,將LCdm 也作為一次交易事務(wù)上傳到聯(lián)盟鏈中。
(6)將消息標識符T2 發(fā)送給患者保管。
患者就診的時候,醫(yī)院會有訪問過往數(shù)據(jù)進行更好診治的需求?;颊邔1 發(fā)送給醫(yī)院,醫(yī)院根據(jù)T1 可以在聯(lián)盟鏈中得到用戶醫(yī)療數(shù)據(jù)的元數(shù)據(jù)Hrm 以及LCrm。醫(yī)院依據(jù)LCrm 在IPFS 中尋找患者數(shù)據(jù)。將患者數(shù)據(jù)下載下來以后,首先利用上次醫(yī)院的公鑰對數(shù)據(jù)進行解密處理,其次向用戶進行授權(quán)申請,用戶提供私鑰進行解密處理,這樣就進行了解密,得到用戶以前的原始醫(yī)療數(shù)據(jù)。
當(dāng)有醫(yī)療機構(gòu)具有對數(shù)據(jù)的訪問需求的時候,醫(yī)療機構(gòu)可以發(fā)布一個智能合約來申請對云存儲中脫敏數(shù)據(jù)的訪問請求,當(dāng)合約中信用超過整個聯(lián)盟鏈一定比例的時候,該醫(yī)療機構(gòu)就有進行脫敏數(shù)據(jù)的下載的權(quán)利。因為原始醫(yī)療數(shù)據(jù)進行了加密,且需要用戶個人私鑰進行解密,同時還涉及用戶個人隱私數(shù)據(jù),所以論文假設(shè)醫(yī)療機構(gòu)不能訪問原始醫(yī)療數(shù)據(jù)且沒有必要訪問原始醫(yī)療數(shù)據(jù)。
本文從數(shù)據(jù)完整性以及安全性角度對模型進行分析。
首先,醫(yī)院對用戶此次生成的醫(yī)療數(shù)據(jù),進行哈希運算。這里的哈希值可以作為元數(shù)據(jù)的一部分保存在聯(lián)盟鏈上,當(dāng)用戶有訪問需求的時候,在某個醫(yī)院節(jié)點進行數(shù)據(jù)的查看,就可以用此哈希值來驗證醫(yī)療數(shù)據(jù)的完整性。方案采取IPFS 進行數(shù)據(jù)存儲,因此可以采用這樣一種措施,當(dāng)新加入數(shù)據(jù)后,將數(shù)據(jù)的地址與過往數(shù)據(jù)地址重新組合起來就可以形成新的數(shù)據(jù)存儲地址。此舉可以保證數(shù)據(jù)的關(guān)聯(lián)性和數(shù)據(jù)的完整性。在文獻[5-6]中并沒有提到使用何種云存儲方式,所以這里假設(shè)其使用的還是中心化的云存儲服務(wù),這時候可能面臨服務(wù)商將數(shù)據(jù)進行地址遷移,修改以及刪除的危險。IPFS 是依據(jù)內(nèi)容的哈希進行尋址,只要用戶的內(nèi)容不發(fā)生修改,就永遠可以找到該內(nèi)容。
論文將用戶的醫(yī)療數(shù)據(jù)經(jīng)由醫(yī)院節(jié)點上傳至云存儲服務(wù)器中,在這個過程中,用戶的醫(yī)療數(shù)據(jù)全部由醫(yī)院這個聯(lián)盟鏈節(jié)點進行處理,首先醫(yī)院對患者產(chǎn)生的最新一次醫(yī)療數(shù)據(jù)進行脫敏處理,接著對原始醫(yī)療數(shù)據(jù)進行加密,對于原始醫(yī)療數(shù)據(jù)采取的加密方式為非對稱加密,步驟為:
(1)醫(yī)院用自己的私鑰對原始醫(yī)療數(shù)據(jù)進行加密。
(2)使用患者的公鑰對密文進行再次加密。
對于脫敏數(shù)據(jù)不需要加密。論文的設(shè)想是,對于脫敏數(shù)據(jù)的使用不需要經(jīng)過患者的同意。本質(zhì)上,由于患者對于自己醫(yī)療數(shù)據(jù)用途的不了解,可能不知道自己的那些數(shù)據(jù)會被使用,因此,論文設(shè)計的訪問是經(jīng)過醫(yī)院這個節(jié)點進行訪問,這樣醫(yī)院可以驗證該醫(yī)療機構(gòu)的資質(zhì)同時可以間接為用戶的數(shù)據(jù)做擔(dān)保。此時會有這樣一個流程,醫(yī)療機構(gòu)發(fā)布一個智能合約在聯(lián)盟鏈中,設(shè)置在某段時間內(nèi),如果積累夠了一定數(shù)量的信用,此科研機構(gòu)就有權(quán)力對云存儲服務(wù)器申請對某些脫敏數(shù)據(jù)的訪問操作,醫(yī)療機構(gòu)不會訪問到加密后的原始醫(yī)療數(shù)據(jù)。這樣,既滿足了用戶數(shù)據(jù)的隱私性,也滿足了科學(xué)研究的數(shù)據(jù)需求。此時,信用的獲得是醫(yī)院通過上傳醫(yī)療數(shù)據(jù)來獲得的。持續(xù)的上傳,信用值就會不斷增長,整個系統(tǒng)的信用值總值會不斷增加,所以智能合約是按照信用超過一定的比值來計算也是比較合理的。
隨著科技的發(fā)展,數(shù)據(jù)的存儲方式也發(fā)生了翻天覆地的變化,從本地存儲模式到遠程存儲模式再到去中心化的云存儲模式。當(dāng)下,用戶醫(yī)療數(shù)據(jù)依舊處于信息孤島的狀態(tài),除非患者具有自己過往的醫(yī)療記錄,否則,患者在進行就診的時候難免進行一些重復(fù)性的醫(yī)學(xué)檢測,而這些檢測往往是只需要進行一次即可。因此論文以醫(yī)療數(shù)據(jù)的存儲訪問為例,提出了一種基于區(qū)塊鏈技術(shù)的數(shù)據(jù)存儲方案,同時從數(shù)據(jù)完整性和數(shù)據(jù)訪問的安全性這兩個角度對整個方案進行了理論上的分析。分析表明,基于區(qū)塊鏈的醫(yī)療數(shù)據(jù)存儲方案完全可以實現(xiàn)數(shù)據(jù)的共同訪問。區(qū)塊鏈本身具有的去中心化,防篡改,分布式等特點,可以很好用于實現(xiàn)醫(yī)療數(shù)據(jù)的共享和保密。