余 健,胡孔法,丁有偉
(南京中醫(yī)藥大學(xué) 人工智能與信息技術(shù)學(xué)院,江蘇 南京 210023)
醫(yī)療數(shù)據(jù)作為特殊的高價(jià)值基礎(chǔ)數(shù)據(jù)之一,必然會(huì)打破傳統(tǒng)的數(shù)據(jù)孤島走向共享。但是,醫(yī)療數(shù)據(jù)共享帶來巨大價(jià)值和便利的同時(shí),也使得醫(yī)療數(shù)據(jù)泄漏現(xiàn)象和勒索病毒事件頻繁發(fā)生,使與民生息息相關(guān)的醫(yī)療數(shù)據(jù)安全面臨著前所未有的挑戰(zhàn)[1-4]。在國(guó)內(nèi)外,為了保證醫(yī)療數(shù)據(jù)中的用戶隱私,研究人員采用了多種方法。一種常用的方法是以加密形式存儲(chǔ)數(shù)據(jù),此方法的主要缺陷是它嚴(yán)重限制了用戶以細(xì)粒度級(jí)別選擇性地共享其加密數(shù)據(jù)的能力。當(dāng)用戶查詢信息時(shí),每次執(zhí)行的解密計(jì)算費(fèi)時(shí),影響了系統(tǒng)查詢效率。另一種常見處理方法是訪問控制,尤其在醫(yī)療數(shù)據(jù)共享中,出現(xiàn)了大量的訪問控制方案。尤其是近年來隨著云服務(wù)的興起、區(qū)塊鏈技術(shù)的產(chǎn)生,醫(yī)療云成為一種新的信息共享和數(shù)據(jù)存儲(chǔ)方式。但是,醫(yī)療系統(tǒng)的安全保障能力和措施是實(shí)現(xiàn)“可信醫(yī)療云”的關(guān)鍵[5,6]。目前,大多數(shù)的醫(yī)療數(shù)據(jù)借助于云計(jì)算技術(shù)來實(shí)現(xiàn)資源共享,但是面對(duì)存有隱患的云存儲(chǔ)環(huán)境,尋找一種高安全的隱私保護(hù)方案成為當(dāng)前所需。在云存儲(chǔ)的背景下,以醫(yī)療數(shù)據(jù)中的用戶隱私信息保護(hù)為目標(biāo),提出一種基于屬性加密和結(jié)構(gòu)授權(quán)的隱私保護(hù)方案。
傳統(tǒng)的醫(yī)療數(shù)據(jù)大多采用結(jié)構(gòu)化的關(guān)系型數(shù)據(jù)庫來存儲(chǔ)信息,有專門的數(shù)據(jù)庫管理系統(tǒng)來管理。但是隨著網(wǎng)絡(luò)的普及,醫(yī)療數(shù)據(jù)不僅需要有效地存儲(chǔ)及管理,還需要經(jīng)過網(wǎng)絡(luò)傳輸,在不同系統(tǒng)之間傳遞數(shù)據(jù),實(shí)現(xiàn)信息共享。為了實(shí)現(xiàn)醫(yī)療數(shù)據(jù)的良好互通,醫(yī)療文檔目前是建立在一個(gè)統(tǒng)一的語法和語義集上,語法大多是遵從數(shù)據(jù)交換或消息傳輸標(biāo)準(zhǔn)HL7(health level seven,HL7),語義大多是使用臨床文檔結(jié)構(gòu)標(biāo)準(zhǔn)CDA(clinical document architecture,CDA)。CDA是HL7組織發(fā)布的第一個(gè)基于XML的醫(yī)療行業(yè)標(biāo)準(zhǔn),所以XML(eXtensible markup language,XML)形式存儲(chǔ)和描述的醫(yī)療數(shù)據(jù)幾乎成為目前的標(biāo)準(zhǔn)格式[7,8]。
這里,為了說明和描述方便,用XML表示的醫(yī)療文檔示例如圖1所示。每個(gè)XML文檔都對(duì)應(yīng)一棵倒置的樹,每個(gè)標(biāo)簽節(jié)點(diǎn)稱為結(jié)構(gòu)節(jié)點(diǎn),其中
圖1 XML形式表示的電子病歷示例
文檔結(jié)構(gòu)反應(yīng)的是信息的框架,即從這個(gè)文檔結(jié)構(gòu),可以獲知這是一個(gè)醫(yī)療病歷記錄文檔,而具體的病患及治療信息存儲(chǔ)于各個(gè)葉節(jié)點(diǎn)內(nèi)容中,所以葉節(jié)點(diǎn)內(nèi)容是核心信息,是人們想獲取的主要內(nèi)容。從圖1的XML文檔特征來看,以
因此,面對(duì)如此結(jié)構(gòu)特征的醫(yī)療數(shù)據(jù),若將醫(yī)療數(shù)據(jù)托管于云端,雖然有利于多部門的數(shù)據(jù)共享,方便用戶訪問,但是這種托管模式,使得存儲(chǔ)于云端的數(shù)據(jù)容易遭到外界攻擊,無形中增加了數(shù)據(jù)隱私泄露的風(fēng)險(xiǎn)。為了確保共享數(shù)據(jù)的同時(shí),保護(hù)好敏感信息,需要解決以下3個(gè)核心問題:
(1)核心問題1:如何在不受信任的基礎(chǔ)設(shè)施中保證敏感數(shù)據(jù)的機(jī)密性?
(2)核心問題2:如何在面對(duì)不可靠的云服務(wù)商時(shí),防止數(shù)據(jù)被篡改,保護(hù)數(shù)據(jù)完整性?
(3)核心問題3:如何在面對(duì)不同合法用戶時(shí),給予不同的訪問權(quán)限,以區(qū)別不同用戶對(duì)信息的使用度?如何讓不同授權(quán)用戶獲取細(xì)粒度訪問信息?
(1)基于屬性加密的認(rèn)證機(jī)制
基于屬性的加密體制中,由數(shù)據(jù)所有者制定訪問控制策略,只有滿足訪問規(guī)則的用戶才能解密加密的資源,這種方法不僅有效控制了數(shù)據(jù)使用范圍,而且增強(qiáng)了系統(tǒng)靈活性和可操作性,可以解決核心問題1。
在屬性加密中,把身份標(biāo)識(shí)看作是一系列屬性,當(dāng)用戶擁有的屬性解密密鑰超過加密者所描述的預(yù)設(shè)門檻時(shí),用戶可解密。屬性加密的基礎(chǔ)是秘密共享,只不過在屬性加密中,秘密共享中的t個(gè)用戶變成了t個(gè)屬性?;趯傩约用艿脑L問控制技術(shù)通過屬性集和訪問控制策略將用戶和數(shù)據(jù)關(guān)聯(lián)在一起,能夠?qū)崿F(xiàn)細(xì)粒度訪問控制。在本方案中,采用的是基于密文策略的屬性加密,同時(shí)基于線性秘密分享算法來分發(fā)屬性密鑰。這里屬性加密的理論基礎(chǔ)是雙線性映射[9],屬性密鑰的分發(fā)采用的是線性秘密共享矩陣[10]。
1)雙線性映射
2)線性秘密共享
假設(shè):對(duì)一個(gè)l行n列的共享矩陣M和一個(gè)從 {1,2,…,l} 到P的映射ρ, 選擇隨機(jī)值構(gòu)成向量v=(s,y2,…,yn)∈Zp, 其中s是共享的秘密,利用線性秘密共享方案可以得到關(guān)于s的l個(gè)共享值組成的向量Mv, 其中 (Mv)i屬于實(shí)體ρ(i), 記為λi。
(2)引入哈希函數(shù),保證核心內(nèi)容的完整性
根據(jù)醫(yī)療數(shù)據(jù)的結(jié)構(gòu)特征,可以首先壓縮文檔結(jié)構(gòu),對(duì)摘取的葉節(jié)點(diǎn)內(nèi)容信息(即核心信息)進(jìn)行編碼,然后采用結(jié)構(gòu)和葉節(jié)點(diǎn)內(nèi)容分離的存儲(chǔ)模式,將葉節(jié)點(diǎn)內(nèi)容信息存儲(chǔ)于云端,將結(jié)構(gòu)信息存儲(chǔ)于可信的輕量級(jí)霧節(jié)點(diǎn)中。由于考慮到葉節(jié)點(diǎn)信息的重要性,這里選用SHA(secure hash algorithm)算法來確保云端醫(yī)療數(shù)據(jù)的完整性,即解決核心問題2。這里,SHA-256算法是一種安全摘要算法,能靈活感知明文的變化,這種哈希函數(shù)具有單一性、快速性及無碰撞性特征,對(duì)于輸入任意長(zhǎng)度的明文,其輸出為256位的報(bào)文摘要[11]。
(3)訪問授權(quán)矩陣的建立
對(duì)于滿足屬性訪問策略的用戶,使用其屬性密鑰組件能夠解密密文信息,獲得葉節(jié)點(diǎn)內(nèi)容。但是XML是結(jié)構(gòu)和內(nèi)容的結(jié)合體,細(xì)粒度的訪問控制應(yīng)該實(shí)現(xiàn)對(duì)不同的合法用戶,展示不同的訪問視圖。這里采用不同的訪問授權(quán)矩陣來表示不同用戶的訪問授權(quán),讓不同的合法身份用戶看到不同的XML訪問視圖,解決核心問題3,這里引入霧節(jié)點(diǎn)來存儲(chǔ)XML授權(quán)矩陣[12],基于屬性加密和結(jié)構(gòu)矩陣存儲(chǔ)相結(jié)合方式來共同完成不同群體用戶的訪問授權(quán)問題。
屬性加密體制作為基于身份的密碼體系的一個(gè)擴(kuò)展,因其有機(jī)結(jié)合了密碼學(xué)與訪問控制的特點(diǎn),成為身份認(rèn)證的重要方法。本文將這種屬性加密體制應(yīng)用于云計(jì)算的大背景之下,設(shè)計(jì)出了針對(duì)醫(yī)療數(shù)據(jù)的隱私保護(hù)方案。
為了實(shí)現(xiàn)對(duì)醫(yī)療數(shù)據(jù)的安全共享,既能為不同需求的用戶提供數(shù)據(jù)共享,又能保護(hù)數(shù)據(jù)中的敏感信息,防止信息泄露事件的發(fā)生。這里采用XML結(jié)構(gòu)和內(nèi)容分離存儲(chǔ)保護(hù)模式,引入了屬性加密來控制合法用戶的訪問,同時(shí)霧節(jié)點(diǎn)作為可信節(jié)點(diǎn),分擔(dān)了一些存儲(chǔ)和計(jì)算,具體結(jié)構(gòu)及功能如圖2所示。
圖2 結(jié)構(gòu)、功能及流程
底層結(jié)構(gòu)主要由4部分組成:數(shù)據(jù)和授權(quán)中心、霧節(jié)點(diǎn)、云服務(wù)器和用戶。其中數(shù)據(jù)和授權(quán)中心既是醫(yī)療數(shù)據(jù)的擁有者,也是授權(quán)管理者,主要負(fù)責(zé)管理系統(tǒng)中所有的屬性、屬性分配及密鑰生成和分發(fā)。霧節(jié)點(diǎn)作為云端、用戶及授權(quán)中心的橋梁,主要任務(wù)是根據(jù)用戶提供的屬性密鑰組件解密從云端傳來的加密的葉節(jié)點(diǎn)內(nèi)容,同時(shí)結(jié)合其存儲(chǔ)的授權(quán)結(jié)構(gòu)矩陣生成用戶需要的XML數(shù)據(jù),此外,它也負(fù)責(zé)對(duì)到云端的數(shù)據(jù)做完整性檢驗(yàn)。
3.2.1 數(shù)據(jù)和授權(quán)中心
數(shù)據(jù)和授權(quán)中心DAC(data authority center,DAC)作為核心節(jié)點(diǎn),可以由醫(yī)院的數(shù)據(jù)服務(wù)器充當(dāng),它既是醫(yī)療數(shù)據(jù)的擁有者,又是權(quán)威中心,負(fù)責(zé)整個(gè)系統(tǒng)的授權(quán)、密鑰分發(fā)、共享文檔的結(jié)構(gòu)和內(nèi)容分離等功能。其形式化定義如下:
(2)將XML表示的醫(yī)療數(shù)據(jù)進(jìn)行結(jié)構(gòu)和內(nèi)容分離Divide(XML)→(Content,Struc)。
(3)根據(jù)用戶屬性及系統(tǒng)內(nèi)置的訪問策略生成訪問策略矩陣MAC: Genernate(A,P1,P2,…Pi…Pn)→MAC。
(4)根據(jù)MAC確定用戶所屬群體,創(chuàng)建XML結(jié)構(gòu)授權(quán)矩陣Mstruc: Create(Struc,MAC)→Mstruc。
(5)給擁有不同屬性組件的用戶ASi分發(fā)解密密鑰SKi: KeyGen(PK,MSK,ASi)→SKi, 其中SKi包括(DSKi,SFKi),DSKi用于解密存儲(chǔ)于云端的XML葉節(jié)點(diǎn)內(nèi)容,SFKi用于獲取霧中的XML結(jié)構(gòu)授權(quán)矩陣Mstruc(i)。
(7)把用戶屬性訪問授權(quán)矩陣、分離出的XML結(jié)構(gòu)授權(quán)矩陣Mstruc和哈希值H送給霧節(jié)點(diǎn)存儲(chǔ): Send(MAC,Mstruc,H)→Fog。
3.2.2 霧節(jié)點(diǎn)Fog
(1)實(shí)時(shí)接收用戶查詢請(qǐng)求,根據(jù)屬性訪問策略計(jì)算該用戶是否滿足解密條件,對(duì)擁有屬性解密組件,滿足條件用戶,則給云端發(fā)送請(qǐng)求命令獲取密文, Send(Req)→Cloud; Obtain(C)←Cloud;
(2)先對(duì)密文C做完整性檢驗(yàn): SHA256(C)=H?
(3)如果未發(fā)現(xiàn)篡改則解密密文: Decryption(DSKi,C)→Content; 同時(shí)根據(jù)SFKi確定用戶Mstruc(i): Decryption(SFKi)→Mstruc(i)。
(4)根據(jù)用戶獲取的XML結(jié)構(gòu)授權(quán)矩陣Mstruc(i)和解密后得到的葉節(jié)點(diǎn)內(nèi)容,組合出可用的XML數(shù)據(jù)信息: Combine(Content,Mstruc(i))→XML data, 發(fā)送給發(fā)出查詢請(qǐng)求的用戶: Send(XML data)→Useri。
3.2.3 云端Cloud
(1)負(fù)責(zé)接收DAC發(fā)送的密文信息并存儲(chǔ):Save(C);
(2)實(shí)時(shí)監(jiān)聽,準(zhǔn)備接收來自霧節(jié)點(diǎn)的請(qǐng)求信息:Listening(Fog);
(3)接收霧節(jié)點(diǎn)的請(qǐng)求,并發(fā)送密文給Fog: Send(C)→Fog。
3.2.4 用戶端Useri
(1)發(fā)送請(qǐng)求到DAC: Send(ASi)→DAC, 符合訪問策略的用戶能獲得解密密鑰;
(2)發(fā)送解密密鑰和查詢請(qǐng)求到Fog: Send(Request,SKi,)→Fog, 查詢具體信息;
(3)接收由Fog給出的查詢結(jié)果。
3.3.1 節(jié)點(diǎn)編碼及信息的查詢
為了方便查找和快速獲取XML文檔中的葉節(jié)點(diǎn)內(nèi)容信息,這里采用深度優(yōu)先遍歷整個(gè)共享文檔,使用起止區(qū)間編碼,使每個(gè)葉子節(jié)點(diǎn)內(nèi)容具有唯一的編碼值。為了壓縮主干結(jié)構(gòu)的同時(shí)不影響信息查詢,這里需要在編碼前對(duì)共享文檔進(jìn)行一致化預(yù)處理。例如,針對(duì)圖1,給每個(gè)用戶預(yù)留50條
表1 節(jié)點(diǎn)起止區(qū)間編碼
在起止區(qū)間編碼中,葉節(jié)點(diǎn)編碼左值等于其編碼右值,所以采用這個(gè)相同的值作為葉節(jié)點(diǎn)內(nèi)容編碼。針對(duì)圖1的葉子節(jié)點(diǎn)內(nèi)容編碼見表2。
表2 葉節(jié)點(diǎn)內(nèi)容編碼
表1盡管只記錄了主干結(jié)構(gòu)樹中節(jié)點(diǎn)編碼信息,但是由于重復(fù)節(jié)點(diǎn)具有相同的子樹同構(gòu),所以可以通過式(1)計(jì)算出其它重復(fù)節(jié)點(diǎn)的編碼信息。例如Record為重復(fù)節(jié)點(diǎn),已知第一個(gè)重復(fù)節(jié)點(diǎn)Record[0]的節(jié)點(diǎn)編碼為(p,q),那么第i個(gè)Record節(jié)點(diǎn)的編碼為(m,n),具體見式(1)
(1)
另外起止區(qū)間編碼有利于信息的查詢,例如查找Record[0]中的子樹信息,只需知道Record[0]的編碼(p,q),它的所有子節(jié)點(diǎn)信息都在這個(gè)p到q的區(qū)間范圍內(nèi)。
3.3.2 主干結(jié)構(gòu)樹的矩陣表示
主干結(jié)構(gòu)樹的提取方法去除了XML文檔的結(jié)構(gòu)冗余。例如:以圖1中節(jié)點(diǎn)patient作為根,這是一名患者醫(yī)療數(shù)據(jù),里面存儲(chǔ)有50條看病記錄。節(jié)點(diǎn)Record是帶有重復(fù)結(jié)構(gòu)信息子樹的根節(jié)點(diǎn)。獲得的主干結(jié)構(gòu)樹具體如圖3所示。
圖3 主干結(jié)構(gòu)樹
為方便信息處理,這里將主干結(jié)構(gòu)樹轉(zhuǎn)化為矩陣形式存儲(chǔ)。這里特別說明,對(duì)于規(guī)范且有意義的XML文檔而言,一般很少有單支樹的情形出現(xiàn),對(duì)于非規(guī)范的XML文檔,在實(shí)際應(yīng)用中需要預(yù)處理,轉(zhuǎn)換成規(guī)范的XML文檔,所以只考慮規(guī)范的XML文檔轉(zhuǎn)化方法。
矩陣轉(zhuǎn)化規(guī)則如下[13]:
(1)矩陣維數(shù)是由主干結(jié)構(gòu)樹中葉子節(jié)點(diǎn)的個(gè)數(shù)決定的;
(2)葉節(jié)點(diǎn)按其出現(xiàn)在主干樹中的順序k,依次存儲(chǔ)于矩陣的主對(duì)角線上,按照葉節(jié)點(diǎn)在主干結(jié)構(gòu)樹中從上到下、從左到右出現(xiàn)的順序依次存儲(chǔ)。
(3)中間節(jié)點(diǎn)在矩陣中的存儲(chǔ)位置是由其所有的兒子節(jié)點(diǎn)存儲(chǔ)位置決定。將其所有兒子節(jié)點(diǎn)存儲(chǔ)位置中的最大橫坐標(biāo)值作為其橫坐標(biāo)值,兒子節(jié)點(diǎn)存儲(chǔ)位置中的最小縱坐標(biāo)值作為其縱坐標(biāo)值。具體見式(2)。
假設(shè)節(jié)點(diǎn)a在矩陣中的存儲(chǔ)位置定義為[p,q],p是其橫坐標(biāo)值,q是其縱坐標(biāo)值, (p,q=1,2,…m)。 那么p和q的計(jì)算公式為式(2)。其中k為葉節(jié)點(diǎn)在主干樹中出現(xiàn)的順序值 (k=0,1,2…)。 若a為中間節(jié)點(diǎn),假設(shè)其所有兒子存儲(chǔ)信息為 [p1,q1], [p2,q2]……
(2)
圖3對(duì)應(yīng)的轉(zhuǎn)化矩陣具體如圖4所示。在此矩陣中,所有主干節(jié)點(diǎn)存放于下三角陣中,右上角陣中存儲(chǔ)對(duì)應(yīng)節(jié)點(diǎn)的編碼信息。例如節(jié)點(diǎn)patient存儲(chǔ)于[8,0],那么它的編碼信息對(duì)稱地存于[0,8]中。
圖4 主干對(duì)應(yīng)的矩陣存儲(chǔ)
3.3.3 不同群體的結(jié)構(gòu)授權(quán)矩陣
依據(jù)用戶提供的屬性組件,結(jié)合DAC中定好的訪問策略,在系統(tǒng)中為不同用戶或群體生成不同授權(quán)的XML授權(quán)結(jié)構(gòu)樹。例如,病理學(xué)專家想研究近年來不同年齡段患者的病理和用藥情況,經(jīng)系統(tǒng)過濾后,其授權(quán)結(jié)構(gòu)如圖5所示。
圖5 不同授權(quán)的結(jié)構(gòu)樹
對(duì)應(yīng)于圖5的授權(quán)結(jié)構(gòu)樹,其授權(quán)矩陣存儲(chǔ)如圖6所示,這里為保護(hù)隱私去掉了其不可訪問的節(jié)點(diǎn),只保留授權(quán)節(jié)點(diǎn)及其編碼信息。
圖6 對(duì)應(yīng)的授權(quán)矩陣
用戶向DAC提供其屬性集,獲取相關(guān)聯(lián)的屬性密鑰組件。SKi包括DSKi和SFKi,DSKi用于解密存儲(chǔ)于云端的XML節(jié)點(diǎn)內(nèi)容,而SFKi用于獲取霧中的XML授權(quán)結(jié)構(gòu)矩陣。
將針對(duì)用戶屬性的訪問授權(quán)矩陣MAC、分離出的XML結(jié)構(gòu)授權(quán)矩陣Mstruc和哈希值H送給霧節(jié)點(diǎn)存儲(chǔ): Send(MAC,Mstruc,H)→Fog。 MAC是針對(duì)用戶屬性的訪問授權(quán)矩陣;Mstruc是為不同用戶創(chuàng)建的XML結(jié)構(gòu)授權(quán)矩陣,面向的是XML文檔結(jié)構(gòu)的訪問權(quán)限。
用戶發(fā)送查詢請(qǐng)求Req及授權(quán)密鑰SKi給霧節(jié)點(diǎn)。SKi是用戶i的合法授權(quán)訪問密鑰組件,通過此密鑰中的DSKi可以解密存儲(chǔ)于云端的XML節(jié)點(diǎn)內(nèi)容,通過SFKi可以獲取霧中的XML授權(quán)結(jié)構(gòu)矩陣,擁有了XML結(jié)構(gòu)和內(nèi)容的信息才能拼湊出有用信息。所以此密鑰中的任何一個(gè)不能成功解密,用戶都得不到完整的查詢信息。
霧節(jié)點(diǎn)發(fā)送密文獲取請(qǐng)求,通過用戶的屬性秘鑰組件解密云端信息。云端發(fā)送密文給霧節(jié)點(diǎn),霧節(jié)點(diǎn)先用SHA256做完整性檢驗(yàn),然后再使用用戶密鑰解密密文,獲取內(nèi)容信息。
霧節(jié)點(diǎn)為用戶i組合其XML授權(quán)結(jié)構(gòu)矩陣和葉節(jié)點(diǎn)內(nèi)容,把查詢的信息即XML data發(fā)送給用戶。
為了證明此方案的安全性能,主要從兩方面進(jìn)行證明:①從認(rèn)證模式方面來證明其安全性;②從信息獲取方式上來證明其安全性。
從認(rèn)證模式方面來看,在屬性加密機(jī)制中,這種基于用戶集合,借助于雙線性映射和密碼學(xué)知識(shí),結(jié)合線性秘密共享機(jī)制完成的基于屬性集的認(rèn)證。
4.2.1 認(rèn)證模式方面
(1)密鑰生成
隨機(jī)選擇α,β∈Zp, 產(chǎn)生系統(tǒng)公共參數(shù)PK和系統(tǒng)主密鑰MSK,使得:
1)MSK=β,gα, MSK為用戶生成私鑰時(shí)使用。
3)隨機(jī)選擇γ∈Zp, 隨機(jī)值γ根據(jù)用戶屬性集分發(fā),對(duì)用戶的每個(gè)屬性,都分配一對(duì)值Dj和Dj′。
設(shè)用戶屬性集為S,對(duì)任意j∈S, 隨機(jī)選擇γj∈Zp, 分發(fā)密鑰:
(2)加密
隨機(jī)選擇ω∈Zp, 構(gòu)造訪問樹T,T的葉節(jié)點(diǎn)集合Y,任意y∈Y, att(y) 表示屬性字符串, H(att(y)) 將屬性字符串散列成G0中的元素。生成密文CT
(3)解密
已知密文CT和私鑰SK:
?y∈Y, 記j=att(y)。 若j∈S, 計(jì)算式(3)DecryptCode(CT,SK,y), 若j?S, 則計(jì)算終止
(3)
依次類推,可求得訪問策略樹根節(jié)點(diǎn)值,為秘鑰s,把解密出的秘密值s帶入如式(4),即可獲取明文M,即葉節(jié)點(diǎn)內(nèi)容
(4)
根據(jù)訪問策略的授權(quán)模式來訪問密文的安全性證明如文獻(xiàn)[14,15],這里具體證明不再累述。
4.2.2 信息獲取方面
下面主要是針對(duì)信息獲取方面的安全性證明。
假設(shè)(1):挑戰(zhàn)者獲取了用戶i的密鑰SFKi,那么通過霧節(jié)點(diǎn),他能獲得該用戶的XML結(jié)構(gòu)授權(quán)矩陣,通過結(jié)構(gòu)授權(quán)矩陣,能掌握XML文檔框架,知道這是一個(gè)存儲(chǔ)醫(yī)療數(shù)據(jù)的文檔結(jié)構(gòu),但是缺少葉節(jié)點(diǎn)內(nèi)容的結(jié)構(gòu)是無意義的,所以挑戰(zhàn)者獲取信息失敗。
假設(shè)(2):挑戰(zhàn)者獲取了霧節(jié)點(diǎn)中所有結(jié)構(gòu)授權(quán)矩陣,理由同上,缺少內(nèi)容的結(jié)構(gòu)是無意義的信息。
假設(shè)(3):挑戰(zhàn)者獲取了霧節(jié)點(diǎn)中部分結(jié)構(gòu)授權(quán)矩陣和云端的全部信息(即全部葉節(jié)點(diǎn)內(nèi)容),并成功解密信息,那么結(jié)構(gòu)授權(quán)矩陣和葉節(jié)點(diǎn)內(nèi)容的組合是根據(jù)編碼規(guī)則,遵從一定的組合規(guī)則才能拼湊成功,如果不知道具體規(guī)則,組合出有意義信息的概率很低。
證明如下:假設(shè)在XML文檔中含有q個(gè)核心單元(類似于patient)。相應(yīng)地,在每個(gè)核心單元中有r個(gè)子節(jié)點(diǎn)(類似于patient樹中的每個(gè)子節(jié)點(diǎn)),設(shè)在r個(gè)節(jié)點(diǎn)中有s個(gè)節(jié)點(diǎn)是敏感節(jié)點(diǎn),這里s≤r,那么對(duì)于q個(gè)核心單元而言,它的內(nèi)容項(xiàng)有r*q個(gè)。挑戰(zhàn)者掌握了結(jié)構(gòu)矩陣,同時(shí)他隨機(jī)從r*q個(gè)內(nèi)容中獲取n個(gè),總體n個(gè)條目中有m組核心單元,那么獲取一個(gè)敏感信息的概率p為
(5)
本文提出了一種基于屬性加密和XML結(jié)構(gòu)授權(quán)相結(jié)合的醫(yī)療數(shù)據(jù)隱私保護(hù)方案,該方案采用結(jié)構(gòu)和內(nèi)容分離式存儲(chǔ)的思想,基于屬性加密體制,采用提取主干結(jié)構(gòu)樹法去除結(jié)構(gòu)冗余,使用區(qū)間編碼便于葉節(jié)點(diǎn)內(nèi)容的查詢。進(jìn)一步地,在云端和霧節(jié)點(diǎn)的相互配合下,實(shí)現(xiàn)了基于用戶屬性加密的訪問授權(quán),通過授權(quán)矩陣存儲(chǔ)形式完成了共享文檔的結(jié)構(gòu)授權(quán)。系統(tǒng)設(shè)計(jì)和安全性證明進(jìn)一步說明:該方案可以確保醫(yī)療數(shù)據(jù)的完整性、機(jī)密性,實(shí)現(xiàn)了保護(hù)數(shù)據(jù)隱私下的數(shù)據(jù)共享。