大數據平臺數據脫敏介紹
數據脫敏(Data Masking),又稱數據漂白、數據去隱私化或數據變形。百度百科對數據脫敏的定義為:指對某些敏感信息通過脫敏規則進行數據的變形,實現敏感隱私數據 的可靠保護。這樣,就可以在開發、測試和其它非生產環境以及外包環境中安全地使用脫敏后的真實數據集。
可以看到數據脫敏具有幾個關鍵點:敏感數據、脫敏規則、使用環境。
敏感數據,又稱隱私數據,常見的敏感數據有: 姓名、身份證號碼、地址、電話號碼、銀行賬號、郵箱地址、所屬城市、郵編、密碼類 ( 如賬戶查詢密碼、取款密碼、登錄密碼等 )、組織機構名稱、營業執照號碼、銀行帳號、交易日期、交易金額等。
隨著大數據時代的到來,大數據商業價值的挖掘,用戶的精準定位,大數據中蘊藏的巨大商業價值被逐步挖掘出來,但是同時也帶來了巨大的挑戰–個人隱私信息 的保護。個人信息與個人行為(比如位置信息、消費行為、網絡訪問行為)等,這些都是人的隱私,也是我們所關注的一類敏感信息,在大數據價值挖掘的基礎上如 何保護人的隱私信息,也將是數據脫敏必須解決的難題。
脫敏規則,一般的脫敏規則分類為可恢復與不可恢復兩類。
- 可恢復類,指脫敏后的數據可以通過一定的方式,可以恢復成原來的敏感數據,此類脫敏規則主要指各類加解密算法規則。
- 不可恢復類,指脫敏后的數據被脫敏的部分使用任何方式都不能恢復出。一般可分為替換算法和生成算法兩大類。替換算法即將需要脫敏的部分使用定義好的字符或字符串替換,生成類算法則更復雜一些,要求脫敏后的數據符合邏輯規則,即是“看起來很真實的假數據”。
使用環境,主要指脫敏之后的數據在哪些環境中使用。普遍按照生產環境和非生產環境(開發、測試、外包、數據分析等)進行劃分。
在最近一期的Gartner關于數據脫敏的報告(Magic Quadrant for Data Masking Technology-2014年12月)中根據數據脫敏產品應用場景的將數據脫敏劃分為靜態數據脫敏(static data masking[SDM])和動態數據脫敏(dynamic data masking[DDM])。
靜態數據脫敏(SDM)與動態數據脫敏(DDM)主要的區別是:是否在使用敏感數據當時進行脫敏。
靜態數據脫敏(SDM)一般用在非生產環境,在敏感數據從生產環境脫敏完畢之后再在非生產環境使用,一般用于解決測試、開發庫需要生產庫的數據量與數據間的關聯,以排查問題或進行數據分析等,但又不能將敏感數據存儲于非生產環境的問題。
動態數據脫敏(DDM)一般用在生產環境,在訪問敏感數據當時進行脫敏,一般用來解決在生產環境需要根據不同情況對同一敏感數據讀取時需要進行不同級別脫敏的問題。
隱私數據脫敏技術
通常在大數據平臺中,數據以結構化的格式存儲,每個表有諸多行組成,每行數據有諸多列組成。根據列的數據屬性,數據列通??梢苑譃橐韵聨追N類型:
- 可確切定位某個人的列,稱為可識別列,如身份證號,地址以及姓名等。
- 單列并不能定位個人,但是多列信息可用來潛在的識別某個人,這些列被稱為半識別列,如郵編號,生日及性別等。美國的一份研究論文稱,僅使用郵編號,生日和性別信息即可識別87%的美國人[3]。
- 包含用戶敏感信息的列,如交易數額,疾病以及收入等。
- 其他不包含用戶敏感信息的列。
所謂避免隱私數據泄露,是指避免使用數據的人員(數據分析師,BI工程師等)將某行數據識別為某個人的信息。數據脫敏技術通過對數據進行脫敏,如移除識別列,轉換半識別列等方式,使得數據使用人員在保證可對#2(轉換后)半識別列,#3敏感信息列以及#4其他列進行數據分析的基礎上,在一定程度上保證其無法根據數據反識別用戶,達到保證數據安全與最大化挖掘數據價值的平衡。
隱私數據泄露類型
隱私數據泄露可以分為多種類型,根據不同的類型,通常可以采用不同的隱私數據泄露風險模型來衡量防止隱私數據泄露的風險,以及對應不同的數據脫敏算法對數據進行脫敏。一般來說,隱私數據泄露類型包括:
個人標識泄露。當數據使用人員通過任何方式確認數據表中某條數據屬于某個人時,稱為個人標識泄露。個人標識泄露最為嚴重,因為一旦發生個人標識泄露,數據使用人員就可以得到具體個人的敏感信息。
屬性泄露,當數據使用人員根據其訪問的數據表了解到某個人新的屬性信息時,稱為屬性泄露。個人標識泄露肯定會導致屬性泄露,但屬性泄露也有可能單獨發生。
成員關系泄露。當數據使用人員可以確認某個人的數據存在于數據表中時,稱為成員關系泄露。成員關系泄露相對風險較小,個人標識泄露與屬性泄露肯定意味著成員關系泄露,但成員關系泄露也有可能單獨發生。
隱私數據泄露風險模型
將數據開放給數據分析人員,同時就引入了隱私數據泄露的風險。在限制隱私數據泄露風險在一定范圍內的同時,最大化數據分析挖掘的潛力,是數據脫敏技術的最終目標。目前在隱私數據脫敏領域,有幾個不同的模型可以用來從不同角度衡量數據可能存在的隱私數據泄露風險。
K-Anonymity
隱私數據脫敏的第一步是對所有可標識列進行移除或是脫敏,使得攻擊者無法直接標識用戶。但是攻擊者還是有可能通過多個半標識列的屬性值識別個人。攻擊者可能通過社工(知道某個人的姓名,郵編,生日,性別等)或是其他包含個人信息的以開放數據庫獲得特定個人的半標識列屬性值,并與大數據平臺數據進行匹配,從而得到特定個人的敏感信息。如表一所示,如果攻擊者知道某用戶的郵編和年齡,就可以得到該用戶的疾病敏感信息。為了避免這種情況的發生,通常需要對半標識列進行脫敏處理,如數據泛化等。數據泛化是將半標識列的數據替換為語義一致但更通用的數據,已上述數據為例,對郵編和年齡泛化后的數據如表二所示。
原始信息
經過泛化后,有多條紀錄的半標識列屬性值相同,所有半標識列屬性值相同的行的集合被稱為相等集。例如,表二中1,2,3行是一個相等集,4,5,6行也是一個相等集。Sama- rati and Sweeney[4]引入了K-Anonymity用于衡量個人標識泄露的風險。 K-Anonymity定義如下:
K-Anonymity要求對于任意一行紀錄,其所屬的相等集內紀錄數量不小于k,即至少有k-1條紀錄半標識列屬性值與該條紀錄相同。
圖二中的數據是一個3-Anonymity的數據集。作為一個衡量隱私數據泄露風險的指標,K-Anonymity可用于衡量個人標識泄露的風險,理論上來說,對于K-Anonymity數據集,對于任意紀錄,攻擊者只有1/k的概率將該紀錄與具體用戶關聯。
L-Diversity
K-Anonymity可用于保護個人標識泄露的風險,但是無法保護屬性泄露的風險。對于K-Anonymity的數據集,攻擊者可能通過同質屬性攻擊與背景知識攻擊兩種方式攻擊用戶的屬性信息。
同質屬性攻擊。對于圖二半標識列泛化后的數據集,假如攻擊者知道Bob郵編為47677,年齡為29,則Bob一定對應于前面三條記錄,從而可以確定Bob有心臟病。
背景知識攻擊。對于圖二半標識列泛化后的數據集,假如攻擊者知道Alice郵編為47673,年齡為36,則Alice一定對應于后面三條記錄,如果攻擊者知道Alice患有心臟病的幾率很小,則能判斷Alice很有可能患有癌癥。
Machanavajjhala et al. [5] 引入了L-Diversity用于衡量屬性泄露的風險,L-Diversity定義如下:
如果對于任意相等集內所有記錄對應的敏感數據的集合,包含L個”合適”值,則稱該相等集是滿足L-Deversity。如果數據集中所有相等集都滿足L-Deversity,則稱該數據集滿足L-Deversity。
所謂L個“合適”值,最簡單的理解就是L個不同值。基于圖二的數據通過插入干擾紀錄,一個3-Anonymity 2-Diversity的數據集如表三所示:
相對于K-Anonymity標準,符合L-Deversity標準的數據集顯著降低了屬性數據泄露的風險。對于滿足L-Diversity的數據集,理論上,攻擊者最多只有1/L的概率能夠屬性泄露攻擊,將特定用戶與其敏感信息關聯起來。一般來說是通過插入干擾數據構造符合L-Diversity標準的數據集,但是同數據泛化一樣,插入干擾數據也會導致表級別的信息丟失。同時L-Diversity標準也有不足之處。
L-Diversity標準有可能很難或是沒有必要實現。例如,對于HIV的測試數據,測試結果列可能為陰性或是陽性。對于10000條記錄,可能99%的記錄都是陰性的,只有1%是陽性的。對于用戶來說兩種不同的測試結果敏感程度也是不同的,測試結果為陰性的用戶可能不介意其他人看到他的測試結果,但是測試結果為陽性的用戶可能更希望對別人保密。為了生成2-Deversity的測試數據集,會丟失大量的信息,降低數據分析挖掘的價值。
L-Diversity標準無法防御特定類型的屬性數據泄露。
傾斜攻擊如果敏感屬性分布存在傾斜,L-Diversity標準很有可能無法抵御屬性數據泄露。繼續以HIV測試數據為例,假如構造的數據集對于任意相等類測試結果都包含陰性與陽性,且陰性數量與陽性相同,該數據集肯定滿足2-Diversity。按照真實測試記錄的分布,對于任意個人,攻擊者只能判斷其有1%的可能測試結果為陽性。但是對于2-Diversity數據集,攻擊者會判斷每個人有50%的可能測試結果為陽性。
相似性攻擊如果相等類的敏感屬性分布滿足L-Diversity,但是屬性值相似或是內聚,攻擊者有可能從得到很重要的信息。例如對于表四所示,病人數據滿足3-Diversity,攻擊者如果了解Bob郵編為47677,年齡為29,則可以確認Bob的工資收入在3-5K之間,且能確認Bob得了胃病相關的病,因為前三條的病都和胃病相關。
簡單來說,對于L-Diversity相同的相等集,敏感屬性值的分布信息對于保護屬性泄露至關重要。L-Diversity只是用來衡量相等集的不同屬性值數量,并沒有衡量不同屬性值的分布,所以其在衡量屬性泄露風險上仍有不足之處。
T-Closeness
直觀的來說,隱私信息泄露的程度可以根據攻擊者增量獲得的個人信息衡量。假設攻擊者在訪問數據集之前已知的個人信息為B0,然后假設攻擊者訪問所有半標識列都已移除的數據集,Q為數據集敏感數據的分布信息,根據Q,攻擊者更新后的個人信息為B1.最后攻擊者訪問脫敏后的數據集,由于知道用戶的半標識列的信息,攻擊者可以將某用戶與某相等集聯系在一起,通過該相等集的敏感數據分布信息P,攻擊者更新后的個人信息為B2.
L-Diversity約束是通過約束P的diverisity屬性,盡量減少B0和B2之間的信息量差距,差距越小,說明隱私信息泄露越少。T-Closeness約束則期望減少B1和B2之間的信息量差距,減少攻擊者從敏感數據的全局分布信息和相等集分布信息之間得到更多的個人隱私信息。T-Closeness的定義如下:
如果一個相等類的敏感數據的分布與敏感數據的全局分布之間的距離小于T,則稱該相等類滿足T-Closeness約束。如果數據集中的所有相等類都滿足T-Closeness,則稱該數據集滿足T-Closeness.
T-Closeness約束限定了半標識列屬性與敏感信息的全局分布之間的聯系,減弱了半標識列屬性與特定敏感信息的聯系,減少攻擊者通過敏感信息的分布信息進行屬性泄露攻擊的可能性。不過同時也肯定導致了一定程度的信息丟失,所以管理者通過T值的大小平衡數據可用性與用戶隱私保護。
常見數據脫敏算法
K-Anonymity, L-Diversity和T-Closeness均依賴對半標識列進行數據變形處理,使得攻擊者無法直接進行屬性泄露攻擊,常見的數據變形處理方式如下:
大數據脫敏平臺
用戶隱私數據保護與挖掘用戶數據價值是兩個互相沖突的矛盾體,徹底的數據脫敏,需要抹去全部的用戶標識信息,使得數據潛在的分析價值大大降低。另一方面,完全保留用戶隱私數據信息,可最大化數據的分析價值,同時導致用戶隱私泄露的風險無法控制。因此大數據脫敏平臺的設計目標并不是實現工具算法用來完全抹去全部的用戶標識信息,而是包括如下幾個目標:
數據泄露風險可控。首先,實現基于大數據平臺的脫敏算法庫,可并行,高效的按照脫敏規則對隱私數據進行脫敏。其次,基于數據脫敏的理論基礎,建立用戶隱私數據泄露風險的衡量模型,可定性定量的準確衡量數據可能發生泄露的風險。
可管理。結合大數據平臺的用戶認證體系,權限管理體系,以及隱私數據不同保護級別的權限管理體系,實現對隱私數據基于審批的數據訪問機制。結合公司制度,規范,法務等管理,實現在盡可能保護用戶隱私數據,減少數據泄露風險的前提下,最大化保留數據分析挖掘的價值。
可審計。對數據的訪問要保證可回溯,可審計,當發生數據泄露時,要保證能夠通過審計日志找到對應的泄露人員。
大數據脫敏平臺的設計方向一般包括靜態大數據脫敏平臺和動態大數據脫敏平臺,所謂靜態和動態之分,主要在于脫敏的時機不同。對于靜態脫敏來說,數據管理員提前對數據進行不同級別的脫敏處理,生成不同安全級別的數據,然后授予不同用戶訪問不同安全級別數據的權限。對于動態脫敏來說,管理員通過元數據管理不同用戶訪問具體數據的安全權限,在用戶訪問數據的時候,動態的從原始數據中按照用戶權限動態的進行脫敏處理。大數據平臺脫敏技術方案是一個非常有趣的課題,目前業界還沒有看到有成熟的方案,鑒于其對數據安全和數據價值的作用,非常值得深入研究,希望以后可以繼續以合適的方式分享我在這方面的研究與實踐。
總結
針對于大數據平臺對于數據脫敏的需求,本文分析了數據泄露可能帶來的風險,介紹了數據脫敏技術的理論基礎與實現方式,同時簡單分析了大數據平臺的隱私數據脫敏技術方向。本文討論的均是基于離線數據的數據脫敏,流式數據的脫敏技術無論是理論基礎與具體實踐大都還處在摸索的過程中,留待以后繼續探索。