余 健,胡孔法,丁有偉
(南京中醫藥大學人工智能與信息技術學院 南京 210023)
隨著信息技術的發展,各類醫療數據從傳統的紙質存儲逐漸轉向為電子化和數據庫方式,處理方式也從集中式轉向基于大數據平臺的分布式處理。電子化的醫療數據包含健康數據、遺傳病史、姓名、手機號碼、身份證號碼、社保卡號等病人的個人敏感醫療數據,以及重要的中醫處方等敏感信息。這些個人敏感數據的訪問控制權限還會開放給第三方(如高校、科研單位、研究機構等),第三方會對這些數據搜集、存儲、管理、分析、挖掘和發布。在個人醫療隱私數據的挖掘、分析以及在網絡共享和開放的過程中,存在著較大的個人隱私數據泄露的風險。一旦病人的隱私信息泄露,將會給病人的工作生活造成極大影響,而某些特殊藥方的泄漏也會給醫療工作者造成一定損失,因此中醫藥數據在分析處理之前必須對敏感數據進行脫敏處理。
數據脫敏是指對某些敏感數據通過脫敏規則和算法對數據進行改造和變形,實現敏感數據和隱私數據的可靠保護,在涉及客戶安全數據或者一些商業性敏感數據的情況下,在不違反法律規則的條件下,對真實數據進行改造使用。在中醫藥大數據快速發展的背景下,中醫藥數據安全和隱私保護問題也日益突出和嚴重。中醫藥數據具備多維度、多樣化和相關聯的特征,包括病歷信息、個人醫療數據信息、體檢信息、身份證號碼信息、手機信息、醫療保險信息、健康日志信息、遺傳病史信息、重要中醫處方信息等,其中有許多數據在國家法律保護范圍內。隨著中醫藥大數據平臺的陸續建設,中醫藥大數據實現跨區域和跨行業的共享傳輸和分析挖掘,使得中醫藥大數據面臨著敏感醫療信息泄露的嚴峻風險和現實挑戰。醫院和醫療大數據平臺對個人數據的使用導出需要征得用戶同意,并且進行匿名化處理,敏感數據的訪問需要有認證、授權或加密機制,以加強對中醫藥數據的隱私保護。
數據隱私保護的研究由來已久,比如經典的數據脫敏算法k-anonymity[1],該算法的改進模型ldiversity[2]、t-closeness[3]、(α,k)-anonymity[4]是針對不同領域的攻擊模型和場景衍生而來,為后續的隱私保護奠定了理論基礎。目前數據加密技術、數據失真技術、差分隱私技術[5,6]、匿名技術[7]等都在特定領域用于對數據進行隱私保護;目前在中醫藥信息領域針對個人隱私數據和核心處方的保護措施比較薄弱,基本是無加密或者是基于單一的數據加密技術,比如差分隱私技術,匿名技術等加密技術進行隱私數據處理。隨著中醫藥大數據平臺下海量的醫療數據場景和大數據挖掘技術不斷的發展,海量的中醫藥大數據在網絡傳輸過程和第三方使用過程中,面臨著訪問權限過度和數據收集過度的風險。由于中醫藥數據具備多維度和關聯性的特征,使得中醫藥數據的隱私保護變得較為復雜,傳統的加密算法在處理海量的中醫藥數據的時候存在效率不高的問題。由此可見單一的加密技術不能高效解決隱私保護問題,中醫藥領域的數據信息隱私保護須將多種隱私保護技術結合起來。尤其是針對海量的中醫藥大數據,對數據的處理能力要求很高,需要結合多種隱私保護技術[8],使得醫療隱私信息得到更高效的安全保護[9]。

表1 中醫院的部分原始數據的數據庫存儲實例
為了解決中醫藥數據的安全性和中醫藥數據加密處理效率無法同時兼顧的問題[10],本文提出一種哈希加內積的組合加密算法,對中醫藥大數據平臺的敏感數據進行數據加密脫敏,在保證中醫藥大數據信息隱私安全的同時,此算法也兼顧到了中醫藥大數據平臺數據的處理效率。此加密脫敏算法基于可變數據長度和密文長度,具備靈活的數據顆粒度和控制策略,同時針對于中醫藥大數據平臺的海量數據的特點,此加密脫敏方案相比于傳統的加密算法有數十倍的的性能,可以對個人醫療數據加密進行高效處理[11]。
全國各中醫醫院的數據庫系統中存放著大量的醫療數據信息,其中包含健康數據、遺傳病史、手機號碼、身份證號碼等病人的個人敏感醫療數據[12],以及重要的中醫處方等敏感信息,這些敏感數據存儲、傳輸和第三方(如高校、科研單位、研究機構等)使用時必須要進行脫敏處理。
每條中醫藥數據記錄t =(b1, b2, …, bk, c1, c2, …,cn),其中b1, b2, …, bk是敏感屬性B1, B2, …, Bk的值,c1,c2,…,cn是常規屬性C1,C2,…,Cm的值。敏感屬性包含隱私信息,需要進行脫敏處理后才能分析處理或對外發布,常規屬性不包含個人隱私,可以直接處理。因此,醫療數據的隱私保護就是要對隱私屬性的值進行脫敏處理,使處理后的值不能夠推測出患者身份、病史等隱私信息。姓名、身份證號碼、手機號碼是敏感屬性,科室、性別、病史是常規屬性(表1)。
在實際應用中,中醫藥領域數據庫的個人敏感信息和醫療數據會開放給不同的第三方客戶,如醫藥企業和研究機構等合作組織。不同的客戶根據自己的需求和策略導出的數據不同,同一個客戶或者機構導出的不同批次的數據所包含的屬性也可能不同;如果不同的合作組織導出的屬性是一樣的,他們就可以聯合攻擊。假設2 個合作組織各自導出中醫藥數據表R和S,其中R 包含屬性(R1, R2, …, Rn, A),S 包含屬性(S1,S2,…,Sm,A),則這2 個合作組織可以聯合起來通過共同屬性A 把關系數據表R 和S 做笛卡爾乘積來獲取數據進行攻擊,其形式可以表示為:

其中R和S分別表示有n個分量和m個分量,結果T 是一個n+m 目的關系,表2 所示為3 個合作組織的聯合攻擊模型實例,3個組織通過手機號碼屬性將3個數據表進行關聯,可以獲取更多隱私信息。
所以在存儲傳輸和開放這些數據給第三方機構之前需要對這些數據庫系統中的個人敏感數據進行脫敏,以防個人的敏感信息的外泄和攻擊。面對聯合攻擊,脫敏的目標就是保證在數據表R 和S 有共同屬性的情況下,不能直接通過連接操作獲得更多的屬性數據,即不能由R={t|tn∈R}和S={t|tn∈S}得到T={t|t = <tn, tm>}。同時對于中醫藥領域的個人敏感信息和醫療數據,需要在數據信息脫敏后也要保持不同表之間的關聯性,以保證中醫藥數據庫的正常使用和研究分析。從數據的安全性角度需要保障導出的個人敏感信息和醫療數據不可還原,比如數據庫的索引為具備唯一性特征的屬性手機號碼,脫敏后的屬性值不可還原用戶手機號碼。

表2 不同合作伙伴聯合攻擊導出數據實例
數據庫中的中醫藥大數據的較強的關聯性使得中醫藥信息的隱私和個人信息的隱私的保護面臨特定場景化的挑戰。網絡存儲和傳輸技術中,不同的中醫藥數據獲取者對數據的操作權限和對用戶個人信息的收集范圍程度都具備不可預知性,需要對這些敏感數據在網絡傳輸,云儲存和共享給第三方機構之前進行安全加密保護[13],以免中醫藥大數據信息的泄露。以對中醫醫院的醫療數據的訪問權限控制為例,醫生為了完成其工作可能需要訪問大量信息,但對于數據能否訪問應該由醫生來決定,不應該需要管理員對每個醫生做特別的配置。但大數據安全控制系統要能夠對醫生訪問行為進行角色定義和權限范圍控制,限制醫生對病患數據的過度訪問[14]。
中醫藥大數據平臺存儲著海量的病人敏感信息和處方數據信息,對數據的加密處理速度和策略有一定的要求,針對這種場景本文提出一種數據脫敏的隱私保護方案,此方案是一種固定數據長度和固定密文長度場景下的,基于屬性的內積加密方案。內積加密技術相對于傳統的加密技術而言,能夠為用戶提供靈活的數據顆粒度和訪問控制策略。在中醫醫院的數據庫里面存儲著海量的病人信息,該方案和算法對中醫藥數據庫中的每條數據進行提取和分割。對長度為C bit的數據進行脫敏步驟如下:
①從中醫藥數據庫導出C bits 長度的原始數據M。
②對中醫藥數據M 進行分割為等長H bits 的n(C=nH)個數據s1,s2,…,sn,即把數據M 的前H 比特為s1,之后H 比特為s2,以此類推,若最后剩余數據為x bits(x ≤H),則在末尾填充H-x 個0 組成長度為H bits的sn。
③對aux 做hash 計算生成n 個數r1,r2,…,rn,其中aux 為輔助鹽值參數,如病人的醫保號碼、批次號、密鑰等。
④輸出分割后的數據si和hash(aux)后的數據ri在有限域的內積(dot product)s1*r1+s2*r2+…+sn*rn作為脫敏數據h,脫敏后的數據h不可還原(圖1):

⑤導出多條數據M1, …, ML的過程:不同的數據M1,…,ML進行分割得到數據sL.i,ri可以使用同一個aux進行hash計算輸出生成n個數r1,r2,....,rn,分割數據和hash(aux)的內積輸出s1.1*r1+s1.2*r2+…+s1.n*rn作為脫敏數據hj(圖2):

本文提出的加密方案針對不同的用戶數據和應用場景,具備靈活的數據顆粒度和控制策略,針對不同的加密數據長度和數據分割的顆粒度,為了便于標記,將本文提出算法的2 種參數方案分別記為datapara-128和datapara-64,針對這2種方案加以對比分析:
方案1:數據庫中的M 數據信息是128 比特的密文,例如中醫院導出病人手機號碼給第三方科研機構,病人手機號在中醫院數據庫中是加密存儲的,即M 是128 比特的AES 密文。可以設置C = 128,n = 2,H=64,q=2 的64 次冪,選用固定的混淆秘鑰K,對外不公開,首先計算臨時值temp = hash(密鑰,醫保號碼,批次號,手機號),從臨時值取出低64 比特r1,高64比特為r2;對于密文Mi,假設其低位64 比特值為ai,高位64 比特值為bi,輸出不可還原數據hi為r1*ai+r2*bi(圖3):

圖1 導出一條數據的過程

圖2 導出多條數據的過程

圖3 datapara-128參數方案

圖4 datapara-64參數方案
方案2:輸出為64 比特時,|M|·E >148,其中E 是數據庫中M 的熵,數據庫中的數據信息M 為256 比特的密文,可以分割為n=16,H=16的數據s1,s2,…,s16,輔助參數的哈希hash(aux)輸出16 個64 比特的r1,r2, …, r16,q 是64 比特大素數。輸出不可還原數據h(圖4):

表3 實現對象數據集格式

為了評價本文提出算法的性能,采用相同的數據集格式和不同的數據量,對本文所提出的加解密方案、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商用操作系統suse12 sp4公開發行版。
在上述的軟硬件環境下,本方案采用相同的數據集格式的基礎上,針對不同的數據量對涉及敏感個人信息數據集進行加密處理。實驗中在不同數據集大小的條件下,分別采用本文提出的datapara-128 和datapara-64 脫敏方案,以及使用sha256 加密方案和md5 加密方案對這些批量數據進行脫敏測試,并對同批次相同數據量,不同的脫敏算法方案所消耗的時間進行性能對比分析。
以aux取用密鑰為256字節長度為例,當數據樣本達到10 條的時候,本文所提出的datapara-128 和datapara-64脫敏方案耗時分別耗時10.5 ms和11.2 ms,傳統加密算法sha256 和md5 脫敏方案分別耗時45 ms和23 ms,可見在數據量較小的情況下,本文的脫敏算法相比于傳統的的加密算法優勢不大(圖5):

圖5 數據量較小情況下各方案耗時對比

圖6 數據量較大情況下各方案耗時對比
當數據量達到100 條的時候,datapara-128 和datapara-64 脫敏算法分別耗時22.5 ms 和28.2 ms,傳統加密算法sha256 和md5 脫敏方案分別耗時452 ms和238 ms;當數據量100 萬條的時候,datapara-128 和datapara-64 脫敏算法分別耗時1.5 s 和2.58 s,傳統加密算法sha256 和md5 脫敏方案分別耗時42 s 和21.6 s;由此可見當數據量較大的時候本文提出的算法相比于sha256 和md5 的加密算法有顯著的性能優勢,并且隨著數據量的不斷增大,本文提出的算法耗時和傳統的算法耗時成固定的比例關系(圖6):
從以上數據對比可以看到在10條數據量情況下,本文提出的datapara-128和datapara-64脫敏方案相比較于sha256 和md5 的加密算法沒有明顯的優勢,但是隨著數據量的不斷增加到1000000 條數據的時候,本文提出的算法方案具備顯著的性能優勢,本文提出的脫敏算法耗時和傳統的加密算法耗時趨于穩定的數十倍比例關系。通過本文提出的datapara-128 和datapara-64 脫敏方案分析,可以發現加密耗時分為2個部分,一部分是aux秘鑰的哈希算法耗時,哈希算法加密效率和傳統的sha256 算法的加密效率是一致的,一部分是128 字節的Mi數據等長拆分后和aux 秘鑰哈希值的卷積的耗時,但是哈希算法耗時是一次性的,不需要每條數據都計算;SHA256/MD5 加密方案的耗時為128 字節的Mi數據的加密算法耗時。所以在aux為固定長度密鑰的情況下,隨著數據量的增大到100萬條的規模,可以推算出本文提出的加密方案和傳統加密算法的耗時比趨向于內積算法和sha256、md5 的耗時比;實際的實驗結果也可以看出,實際數據和推算的結果是相符合的。在aux 不取固定長度密鑰的情況下,用戶可以選擇取用用戶名、手機號、身份證號碼等信息作為aux 輔助參數,各個方案的耗時和性能又各不相同,所以本文提出的算法方案給用戶提供了靈活的策略控制機制。在中醫藥數據量非常龐大的情況下,這種脫敏算法有著極其優異的性能表現。
本文針對傳統的加密脫敏算法應用場景單一和數據處理效率不高的情況下,提出一種高效脫敏算法用以保護病人隱私數據保護方案,是一種針對不同的加密數據長度和數據分割顆粒度場景下的,基于屬性的內積加密方案。通過在硬件平臺上對該加密方案進行驗證和性能對比發現,相較于傳統的加密方案,本文提出的方案對于海量數據的脫敏加密具備較高的性能表現,在較大大數據量樣本的情況下,性能是傳統的加密脫敏方案的幾十倍。本文提出的加密算法是對數據集進行全量加密,后續將會對數據集進行部分加密的差分隱私保護方案,以繼續提升海量中醫藥敏感數據的處理性能,同時亦能達到保護中醫藥數據隱私的目的。