余 健,胡孔法,丁有偉
(南京中醫(yī)藥大學(xué)人工智能與信息技術(shù)學(xué)院 南京 210023)
隨著信息技術(shù)的發(fā)展,各類醫(yī)療數(shù)據(jù)從傳統(tǒng)的紙質(zhì)存儲逐漸轉(zhuǎn)向為電子化和數(shù)據(jù)庫方式,處理方式也從集中式轉(zhuǎn)向基于大數(shù)據(jù)平臺的分布式處理。電子化的醫(yī)療數(shù)據(jù)包含健康數(shù)據(jù)、遺傳病史、姓名、手機號碼、身份證號碼、社??ㄌ柕炔∪说膫€人敏感醫(yī)療數(shù)據(jù),以及重要的中醫(yī)處方等敏感信息。這些個人敏感數(shù)據(jù)的訪問控制權(quán)限還會開放給第三方(如高校、科研單位、研究機構(gòu)等),第三方會對這些數(shù)據(jù)搜集、存儲、管理、分析、挖掘和發(fā)布。在個人醫(yī)療隱私數(shù)據(jù)的挖掘、分析以及在網(wǎng)絡(luò)共享和開放的過程中,存在著較大的個人隱私數(shù)據(jù)泄露的風(fēng)險。一旦病人的隱私信息泄露,將會給病人的工作生活造成極大影響,而某些特殊藥方的泄漏也會給醫(yī)療工作者造成一定損失,因此中醫(yī)藥數(shù)據(jù)在分析處理之前必須對敏感數(shù)據(jù)進行脫敏處理。
數(shù)據(jù)脫敏是指對某些敏感數(shù)據(jù)通過脫敏規(guī)則和算法對數(shù)據(jù)進行改造和變形,實現(xiàn)敏感數(shù)據(jù)和隱私數(shù)據(jù)的可靠保護,在涉及客戶安全數(shù)據(jù)或者一些商業(yè)性敏感數(shù)據(jù)的情況下,在不違反法律規(guī)則的條件下,對真實數(shù)據(jù)進行改造使用。在中醫(yī)藥大數(shù)據(jù)快速發(fā)展的背景下,中醫(yī)藥數(shù)據(jù)安全和隱私保護問題也日益突出和嚴(yán)重。中醫(yī)藥數(shù)據(jù)具備多維度、多樣化和相關(guān)聯(lián)的特征,包括病歷信息、個人醫(yī)療數(shù)據(jù)信息、體檢信息、身份證號碼信息、手機信息、醫(yī)療保險信息、健康日志信息、遺傳病史信息、重要中醫(yī)處方信息等,其中有許多數(shù)據(jù)在國家法律保護范圍內(nèi)。隨著中醫(yī)藥大數(shù)據(jù)平臺的陸續(xù)建設(shè),中醫(yī)藥大數(shù)據(jù)實現(xiàn)跨區(qū)域和跨行業(yè)的共享傳輸和分析挖掘,使得中醫(yī)藥大數(shù)據(jù)面臨著敏感醫(yī)療信息泄露的嚴(yán)峻風(fēng)險和現(xiàn)實挑戰(zhàn)。醫(yī)院和醫(yī)療大數(shù)據(jù)平臺對個人數(shù)據(jù)的使用導(dǎo)出需要征得用戶同意,并且進行匿名化處理,敏感數(shù)據(jù)的訪問需要有認證、授權(quán)或加密機制,以加強對中醫(yī)藥數(shù)據(jù)的隱私保護。
數(shù)據(jù)隱私保護的研究由來已久,比如經(jīng)典的數(shù)據(jù)脫敏算法k-anonymity[1],該算法的改進模型ldiversity[2]、t-closeness[3]、(α,k)-anonymity[4]是針對不同領(lǐng)域的攻擊模型和場景衍生而來,為后續(xù)的隱私保護奠定了理論基礎(chǔ)。目前數(shù)據(jù)加密技術(shù)、數(shù)據(jù)失真技術(shù)、差分隱私技術(shù)[5,6]、匿名技術(shù)[7]等都在特定領(lǐng)域用于對數(shù)據(jù)進行隱私保護;目前在中醫(yī)藥信息領(lǐng)域針對個人隱私數(shù)據(jù)和核心處方的保護措施比較薄弱,基本是無加密或者是基于單一的數(shù)據(jù)加密技術(shù),比如差分隱私技術(shù),匿名技術(shù)等加密技術(shù)進行隱私數(shù)據(jù)處理。隨著中醫(yī)藥大數(shù)據(jù)平臺下海量的醫(yī)療數(shù)據(jù)場景和大數(shù)據(jù)挖掘技術(shù)不斷的發(fā)展,海量的中醫(yī)藥大數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程和第三方使用過程中,面臨著訪問權(quán)限過度和數(shù)據(jù)收集過度的風(fēng)險。由于中醫(yī)藥數(shù)據(jù)具備多維度和關(guān)聯(lián)性的特征,使得中醫(yī)藥數(shù)據(jù)的隱私保護變得較為復(fù)雜,傳統(tǒng)的加密算法在處理海量的中醫(yī)藥數(shù)據(jù)的時候存在效率不高的問題。由此可見單一的加密技術(shù)不能高效解決隱私保護問題,中醫(yī)藥領(lǐng)域的數(shù)據(jù)信息隱私保護須將多種隱私保護技術(shù)結(jié)合起來。尤其是針對海量的中醫(yī)藥大數(shù)據(jù),對數(shù)據(jù)的處理能力要求很高,需要結(jié)合多種隱私保護技術(shù)[8],使得醫(yī)療隱私信息得到更高效的安全保護[9]。
表1 中醫(yī)院的部分原始數(shù)據(jù)的數(shù)據(jù)庫存儲實例
為了解決中醫(yī)藥數(shù)據(jù)的安全性和中醫(yī)藥數(shù)據(jù)加密處理效率無法同時兼顧的問題[10],本文提出一種哈希加內(nèi)積的組合加密算法,對中醫(yī)藥大數(shù)據(jù)平臺的敏感數(shù)據(jù)進行數(shù)據(jù)加密脫敏,在保證中醫(yī)藥大數(shù)據(jù)信息隱私安全的同時,此算法也兼顧到了中醫(yī)藥大數(shù)據(jù)平臺數(shù)據(jù)的處理效率。此加密脫敏算法基于可變數(shù)據(jù)長度和密文長度,具備靈活的數(shù)據(jù)顆粒度和控制策略,同時針對于中醫(yī)藥大數(shù)據(jù)平臺的海量數(shù)據(jù)的特點,此加密脫敏方案相比于傳統(tǒng)的加密算法有數(shù)十倍的的性能,可以對個人醫(yī)療數(shù)據(jù)加密進行高效處理[11]。
全國各中醫(yī)醫(yī)院的數(shù)據(jù)庫系統(tǒng)中存放著大量的醫(yī)療數(shù)據(jù)信息,其中包含健康數(shù)據(jù)、遺傳病史、手機號碼、身份證號碼等病人的個人敏感醫(yī)療數(shù)據(jù)[12],以及重要的中醫(yī)處方等敏感信息,這些敏感數(shù)據(jù)存儲、傳輸和第三方(如高校、科研單位、研究機構(gòu)等)使用時必須要進行脫敏處理。
每條中醫(yī)藥數(shù)據(jù)記錄t =(b1, b2, …, bk, c1, c2, …,cn),其中b1, b2, …, bk是敏感屬性B1, B2, …, Bk的值,c1,c2,…,cn是常規(guī)屬性C1,C2,…,Cm的值。敏感屬性包含隱私信息,需要進行脫敏處理后才能分析處理或?qū)ν獍l(fā)布,常規(guī)屬性不包含個人隱私,可以直接處理。因此,醫(yī)療數(shù)據(jù)的隱私保護就是要對隱私屬性的值進行脫敏處理,使處理后的值不能夠推測出患者身份、病史等隱私信息。姓名、身份證號碼、手機號碼是敏感屬性,科室、性別、病史是常規(guī)屬性(表1)。
在實際應(yīng)用中,中醫(yī)藥領(lǐng)域數(shù)據(jù)庫的個人敏感信息和醫(yī)療數(shù)據(jù)會開放給不同的第三方客戶,如醫(yī)藥企業(yè)和研究機構(gòu)等合作組織。不同的客戶根據(jù)自己的需求和策略導(dǎo)出的數(shù)據(jù)不同,同一個客戶或者機構(gòu)導(dǎo)出的不同批次的數(shù)據(jù)所包含的屬性也可能不同;如果不同的合作組織導(dǎo)出的屬性是一樣的,他們就可以聯(lián)合攻擊。假設(shè)2 個合作組織各自導(dǎo)出中醫(yī)藥數(shù)據(jù)表R和S,其中R 包含屬性(R1, R2, …, Rn, A),S 包含屬性(S1,S2,…,Sm,A),則這2 個合作組織可以聯(lián)合起來通過共同屬性A 把關(guān)系數(shù)據(jù)表R 和S 做笛卡爾乘積來獲取數(shù)據(jù)進行攻擊,其形式可以表示為:
其中R和S分別表示有n個分量和m個分量,結(jié)果T 是一個n+m 目的關(guān)系,表2 所示為3 個合作組織的聯(lián)合攻擊模型實例,3個組織通過手機號碼屬性將3個數(shù)據(jù)表進行關(guān)聯(lián),可以獲取更多隱私信息。
所以在存儲傳輸和開放這些數(shù)據(jù)給第三方機構(gòu)之前需要對這些數(shù)據(jù)庫系統(tǒng)中的個人敏感數(shù)據(jù)進行脫敏,以防個人的敏感信息的外泄和攻擊。面對聯(lián)合攻擊,脫敏的目標(biāo)就是保證在數(shù)據(jù)表R 和S 有共同屬性的情況下,不能直接通過連接操作獲得更多的屬性數(shù)據(jù),即不能由R={t|tn∈R}和S={t|tn∈S}得到T={t|t = <tn, tm>}。同時對于中醫(yī)藥領(lǐng)域的個人敏感信息和醫(yī)療數(shù)據(jù),需要在數(shù)據(jù)信息脫敏后也要保持不同表之間的關(guān)聯(lián)性,以保證中醫(yī)藥數(shù)據(jù)庫的正常使用和研究分析。從數(shù)據(jù)的安全性角度需要保障導(dǎo)出的個人敏感信息和醫(yī)療數(shù)據(jù)不可還原,比如數(shù)據(jù)庫的索引為具備唯一性特征的屬性手機號碼,脫敏后的屬性值不可還原用戶手機號碼。
表2 不同合作伙伴聯(lián)合攻擊導(dǎo)出數(shù)據(jù)實例
數(shù)據(jù)庫中的中醫(yī)藥大數(shù)據(jù)的較強的關(guān)聯(lián)性使得中醫(yī)藥信息的隱私和個人信息的隱私的保護面臨特定場景化的挑戰(zhàn)。網(wǎng)絡(luò)存儲和傳輸技術(shù)中,不同的中醫(yī)藥數(shù)據(jù)獲取者對數(shù)據(jù)的操作權(quán)限和對用戶個人信息的收集范圍程度都具備不可預(yù)知性,需要對這些敏感數(shù)據(jù)在網(wǎng)絡(luò)傳輸,云儲存和共享給第三方機構(gòu)之前進行安全加密保護[13],以免中醫(yī)藥大數(shù)據(jù)信息的泄露。以對中醫(yī)醫(yī)院的醫(yī)療數(shù)據(jù)的訪問權(quán)限控制為例,醫(yī)生為了完成其工作可能需要訪問大量信息,但對于數(shù)據(jù)能否訪問應(yīng)該由醫(yī)生來決定,不應(yīng)該需要管理員對每個醫(yī)生做特別的配置。但大數(shù)據(jù)安全控制系統(tǒng)要能夠?qū)︶t(yī)生訪問行為進行角色定義和權(quán)限范圍控制,限制醫(yī)生對病患數(shù)據(jù)的過度訪問[14]。
中醫(yī)藥大數(shù)據(jù)平臺存儲著海量的病人敏感信息和處方數(shù)據(jù)信息,對數(shù)據(jù)的加密處理速度和策略有一定的要求,針對這種場景本文提出一種數(shù)據(jù)脫敏的隱私保護方案,此方案是一種固定數(shù)據(jù)長度和固定密文長度場景下的,基于屬性的內(nèi)積加密方案。內(nèi)積加密技術(shù)相對于傳統(tǒng)的加密技術(shù)而言,能夠為用戶提供靈活的數(shù)據(jù)顆粒度和訪問控制策略。在中醫(yī)醫(yī)院的數(shù)據(jù)庫里面存儲著海量的病人信息,該方案和算法對中醫(yī)藥數(shù)據(jù)庫中的每條數(shù)據(jù)進行提取和分割。對長度為C bit的數(shù)據(jù)進行脫敏步驟如下:
①從中醫(yī)藥數(shù)據(jù)庫導(dǎo)出C bits 長度的原始數(shù)據(jù)M。
②對中醫(yī)藥數(shù)據(jù)M 進行分割為等長H bits 的n(C=nH)個數(shù)據(jù)s1,s2,…,sn,即把數(shù)據(jù)M 的前H 比特為s1,之后H 比特為s2,以此類推,若最后剩余數(shù)據(jù)為x bits(x ≤H),則在末尾填充H-x 個0 組成長度為H bits的sn。
③對aux 做hash 計算生成n 個數(shù)r1,r2,…,rn,其中aux 為輔助鹽值參數(shù),如病人的醫(yī)保號碼、批次號、密鑰等。
④輸出分割后的數(shù)據(jù)si和hash(aux)后的數(shù)據(jù)ri在有限域的內(nèi)積(dot product)s1*r1+s2*r2+…+sn*rn作為脫敏數(shù)據(jù)h,脫敏后的數(shù)據(jù)h不可還原(圖1):
⑤導(dǎo)出多條數(shù)據(jù)M1, …, ML的過程:不同的數(shù)據(jù)M1,…,ML進行分割得到數(shù)據(jù)sL.i,ri可以使用同一個aux進行hash計算輸出生成n個數(shù)r1,r2,....,rn,分割數(shù)據(jù)和hash(aux)的內(nèi)積輸出s1.1*r1+s1.2*r2+…+s1.n*rn作為脫敏數(shù)據(jù)hj(圖2):
本文提出的加密方案針對不同的用戶數(shù)據(jù)和應(yīng)用場景,具備靈活的數(shù)據(jù)顆粒度和控制策略,針對不同的加密數(shù)據(jù)長度和數(shù)據(jù)分割的顆粒度,為了便于標(biāo)記,將本文提出算法的2 種參數(shù)方案分別記為datapara-128和datapara-64,針對這2種方案加以對比分析:
方案1:數(shù)據(jù)庫中的M 數(shù)據(jù)信息是128 比特的密文,例如中醫(yī)院導(dǎo)出病人手機號碼給第三方科研機構(gòu),病人手機號在中醫(yī)院數(shù)據(jù)庫中是加密存儲的,即M 是128 比特的AES 密文??梢栽O(shè)置C = 128,n = 2,H=64,q=2 的64 次冪,選用固定的混淆秘鑰K,對外不公開,首先計算臨時值temp = hash(密鑰,醫(yī)保號碼,批次號,手機號),從臨時值取出低64 比特r1,高64比特為r2;對于密文Mi,假設(shè)其低位64 比特值為ai,高位64 比特值為bi,輸出不可還原數(shù)據(jù)hi為r1*ai+r2*bi(圖3):
圖1 導(dǎo)出一條數(shù)據(jù)的過程
圖2 導(dǎo)出多條數(shù)據(jù)的過程
圖3 datapara-128參數(shù)方案
圖4 datapara-64參數(shù)方案
方案2:輸出為64 比特時,|M|·E >148,其中E 是數(shù)據(jù)庫中M 的熵,數(shù)據(jù)庫中的數(shù)據(jù)信息M 為256 比特的密文,可以分割為n=16,H=16的數(shù)據(jù)s1,s2,…,s16,輔助參數(shù)的哈希hash(aux)輸出16 個64 比特的r1,r2, …, r16,q 是64 比特大素數(shù)。輸出不可還原數(shù)據(jù)h(圖4):
表3 實現(xiàn)對象數(shù)據(jù)集格式
為了評價本文提出算法的性能,采用相同的數(shù)據(jù)集格式和不同的數(shù)據(jù)量,對本文所提出的加解密方案、SHA-256(Secure hash algorithm,安全散列算法)加解密方案和MD5(Message-digest algorithm,信息摘要算法)加解密方案等3 種算法進行了實驗對比分析。實驗采用Intel(R) Xeon(R) E5-2690 v2 @ 3.0G HZ 的x86-cpu,Cache size(緩存大小)為25600 KB,64 位的linux商用操作系統(tǒng)suse12 sp4公開發(fā)行版。
在上述的軟硬件環(huán)境下,本方案采用相同的數(shù)據(jù)集格式的基礎(chǔ)上,針對不同的數(shù)據(jù)量對涉及敏感個人信息數(shù)據(jù)集進行加密處理。實驗中在不同數(shù)據(jù)集大小的條件下,分別采用本文提出的datapara-128 和datapara-64 脫敏方案,以及使用sha256 加密方案和md5 加密方案對這些批量數(shù)據(jù)進行脫敏測試,并對同批次相同數(shù)據(jù)量,不同的脫敏算法方案所消耗的時間進行性能對比分析。
以aux取用密鑰為256字節(jié)長度為例,當(dāng)數(shù)據(jù)樣本達到10 條的時候,本文所提出的datapara-128 和datapara-64脫敏方案耗時分別耗時10.5 ms和11.2 ms,傳統(tǒng)加密算法sha256 和md5 脫敏方案分別耗時45 ms和23 ms,可見在數(shù)據(jù)量較小的情況下,本文的脫敏算法相比于傳統(tǒng)的的加密算法優(yōu)勢不大(圖5):
圖5 數(shù)據(jù)量較小情況下各方案耗時對比
圖6 數(shù)據(jù)量較大情況下各方案耗時對比
當(dāng)數(shù)據(jù)量達到100 條的時候,datapara-128 和datapara-64 脫敏算法分別耗時22.5 ms 和28.2 ms,傳統(tǒng)加密算法sha256 和md5 脫敏方案分別耗時452 ms和238 ms;當(dāng)數(shù)據(jù)量100 萬條的時候,datapara-128 和datapara-64 脫敏算法分別耗時1.5 s 和2.58 s,傳統(tǒng)加密算法sha256 和md5 脫敏方案分別耗時42 s 和21.6 s;由此可見當(dāng)數(shù)據(jù)量較大的時候本文提出的算法相比于sha256 和md5 的加密算法有顯著的性能優(yōu)勢,并且隨著數(shù)據(jù)量的不斷增大,本文提出的算法耗時和傳統(tǒng)的算法耗時成固定的比例關(guān)系(圖6):
從以上數(shù)據(jù)對比可以看到在10條數(shù)據(jù)量情況下,本文提出的datapara-128和datapara-64脫敏方案相比較于sha256 和md5 的加密算法沒有明顯的優(yōu)勢,但是隨著數(shù)據(jù)量的不斷增加到1000000 條數(shù)據(jù)的時候,本文提出的算法方案具備顯著的性能優(yōu)勢,本文提出的脫敏算法耗時和傳統(tǒng)的加密算法耗時趨于穩(wěn)定的數(shù)十倍比例關(guān)系。通過本文提出的datapara-128 和datapara-64 脫敏方案分析,可以發(fā)現(xiàn)加密耗時分為2個部分,一部分是aux秘鑰的哈希算法耗時,哈希算法加密效率和傳統(tǒng)的sha256 算法的加密效率是一致的,一部分是128 字節(jié)的Mi數(shù)據(jù)等長拆分后和aux 秘鑰哈希值的卷積的耗時,但是哈希算法耗時是一次性的,不需要每條數(shù)據(jù)都計算;SHA256/MD5 加密方案的耗時為128 字節(jié)的Mi數(shù)據(jù)的加密算法耗時。所以在aux為固定長度密鑰的情況下,隨著數(shù)據(jù)量的增大到100萬條的規(guī)模,可以推算出本文提出的加密方案和傳統(tǒng)加密算法的耗時比趨向于內(nèi)積算法和sha256、md5 的耗時比;實際的實驗結(jié)果也可以看出,實際數(shù)據(jù)和推算的結(jié)果是相符合的。在aux 不取固定長度密鑰的情況下,用戶可以選擇取用用戶名、手機號、身份證號碼等信息作為aux 輔助參數(shù),各個方案的耗時和性能又各不相同,所以本文提出的算法方案給用戶提供了靈活的策略控制機制。在中醫(yī)藥數(shù)據(jù)量非常龐大的情況下,這種脫敏算法有著極其優(yōu)異的性能表現(xiàn)。
本文針對傳統(tǒng)的加密脫敏算法應(yīng)用場景單一和數(shù)據(jù)處理效率不高的情況下,提出一種高效脫敏算法用以保護病人隱私數(shù)據(jù)保護方案,是一種針對不同的加密數(shù)據(jù)長度和數(shù)據(jù)分割顆粒度場景下的,基于屬性的內(nèi)積加密方案。通過在硬件平臺上對該加密方案進行驗證和性能對比發(fā)現(xiàn),相較于傳統(tǒng)的加密方案,本文提出的方案對于海量數(shù)據(jù)的脫敏加密具備較高的性能表現(xiàn),在較大大數(shù)據(jù)量樣本的情況下,性能是傳統(tǒng)的加密脫敏方案的幾十倍。本文提出的加密算法是對數(shù)據(jù)集進行全量加密,后續(xù)將會對數(shù)據(jù)集進行部分加密的差分隱私保護方案,以繼續(xù)提升海量中醫(yī)藥敏感數(shù)據(jù)的處理性能,同時亦能達到保護中醫(yī)藥數(shù)據(jù)隱私的目的。