大數據與數據脫敏
聲明
本專欄為我的個人技術專欄,所有觀點均為個人觀點。如欲轉載,請註明出處。
大數據平台通過將所有數據整合起來,充分分析與挖掘數據的內在價值,為業務部門提供數據平台,數據產品與數據服務。大數據平台接入的數據中可能包括很多用戶的隱私和敏感信息,如用戶在酒店的入住紀錄,用戶支付信息等,這些數據存在可能泄漏的風險。大數據平台一般通過用戶認證,許可權管理以及數據加密等技術保證數據的安全,但是這並不能完全從技術上保證數據的安全。嚴格的來說,任何有許可權訪問用戶數據的人員,如ETL工程師或是數據分析人員等,均有可能導致數據泄漏的風險。另一方面,沒有訪問用戶數據許可權的人員,也可能有對該數據進行分析挖掘的需求,數據的訪問約束大大限制的充分挖掘數據價值的範圍。數據脫敏通過對數據進行脫敏,在保證數據可用性的同時,也在一定範圍內保證惡意攻擊者無法將數據與具體用戶關聯到一起,從而保證用戶數據的隱私性。數據脫敏方案作為大數據平台整體數據安全解決方案的重要組成部分,是構建安全可靠的大數據平台必不可少的功能特性。本文首先分析了數據泄露可能帶來的風險,然後詳細介紹了數據脫敏技術的理論基礎與常用演算法,最後介紹了一個基於大數據平台的數據脫敏解決方案。
隱私數據脫敏技術
通常在大數據平台中,數據以結構化的格式存儲,每個表有諸多行組成,每行數據有諸多列組成。根據列的數據屬性,數據列通常可以分為以下幾種類型:
可確切定位某個人的列,稱為可識別列,如身份證號,地址以及姓名等。
單列並不能定位個人,但是多列信息可用來潛在的識別某個人,這些列被稱為半識別列,如郵編號,生日及性別等。美國的一份研究論文稱,僅使用郵編號,生日和性別信息即可識別87%的美國人[3]。
包含用戶敏感信息的列,如交易數額,疾病以及收入等。
其他不包含用戶敏感信息的列。
所謂避免隱私數據泄露,是指避免使用數據的人員(數據分析師,BI工程師等)將某行數據識別為某個人的信息。數據脫敏技術通過對數據進行脫敏,如移除識別列,轉換半識別列等方式,使得數據使用人員在保證可對#2(轉換後)半識別列,#3敏感信息列以及#4其他列進行數據分析的基礎上,在一定程度上保證其無法根據數據反識別用戶,達到保證數據安全與最大化挖掘數據價值的平衡。
隱私數據泄露類型
隱私數據泄露可以分為多種類型,根據不同的類型,通常可以採用不同的隱私數據泄露風險模型來衡量防止隱私數據泄露的風險,以及對應不同的數據脫敏演算法對數據進行脫敏。一般來說,隱私數據泄露類型包括:
個人標識泄露。當數據使用人員通過任何方式確認數據表中某條數據屬於某個人時,稱為個人標識泄露。個人標識泄露最為嚴重,因為一旦發生個人標識泄露,數據使用人員就可以得到具體個人的敏感信息。
屬性泄露,當數據使用人員根據其訪問的數據表了解到某個人新的屬性信息時,稱為屬性泄露。個人標識泄露肯定會導致屬性泄露,但屬性泄露也有可能單獨發生。
成員關係泄露。當數據使用人員可以確認某個人的數據存在於數據表中時,稱為成員關係泄露。成員關係泄露相對風險較小,個人標識泄露與屬性泄露肯定意味著成員關係泄露,但成員關係泄露也有可能單獨發生。
隱私數據泄露風險模型
將數據開放給數據分析人員,同時就引入了隱私數據泄露的風險。在限制隱私數據泄露風險在一定範圍內的同時,最大化數據分析挖掘的潛力,是數據脫敏技術的最終目標。目前在隱私數據脫敏領域,有幾個不同的模型可以用來從不同角度衡量數據可能存在的隱私數據泄露風險。
K-Anonymity
隱私數據脫敏的第一步是對所有可標識列進行移除或是脫敏,使得攻擊者無法直接標識用戶。但是攻擊者還是有可能通過多個半標識列的屬性值識別個人。攻擊者可能通過社工(知道某個人的姓名,郵編,生日,性別等)或是其他包含個人信息的以開放資料庫獲得特定個人的半標識列屬性值,並與大數據平台數據進行匹配,從而得到特定個人的敏感信息。如表一所示,如果攻擊者知道某用戶的郵編和年齡,就可以得到該用戶的疾病敏感信息。為了避免這種情況的發生,通常需要對半標識列進行脫敏處理,如數據泛化等。數據泛化是將半標識列的數據替換為語義一致但更通用的數據,已上述數據為例,對郵編和年齡泛化後的數據如表二所示。
表1 原始病人信息
表2 3-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的數據集如表三所示:
表3 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均依賴對半標識列進行數據變形處理,使得攻擊者無法直接進行屬性泄露攻擊,常見的數據變形處理方式如下:
表5 常用數據變形操作此外,K-Anonymity, L-Diversity和T-Closeness約束可能還需要生成干擾數據,敏感數據干擾項的生成策略與方法也是保證K-Anonymity, L-Diversity和T-Closeness的重要條件,在這裡篇幅有限,就不過多介紹,請參考引用中的相關論文[4,5,6]。
大數據脫敏平台
用戶隱私數據保護與挖掘用戶數據價值是兩個互相衝突的矛盾體,徹底的數據脫敏,需要抹去全部的用戶標識信息,使得數據潛在的分析價值大大降低。另一方面,完全保留用戶隱私數據信息,可最大化數據的分析價值,同時導致用戶隱私泄露的風險無法控制。因此大數據脫敏平台的設計目標並不是實現工具演算法用來完全抹去全部的用戶標識信息,而是包括如下幾個目標:
數據泄露風險可控。首先,實現基於大數據平台的脫敏演算法庫,可並行,高效的按照脫敏規則對隱私數據進行脫敏。其次,基於數據脫敏的理論基礎,建立用戶隱私數據泄露風險的衡量模型,可定性定量的準確衡量數據可能發生泄露的風險。
可管理。結合大數據平台的用戶認證體系,許可權管理體系,以及隱私數據不同保護級別的許可權管理體系,實現對隱私數據基於審批的數據訪問機制。結合公司制度,規範,法務等管理,實現在儘可能保護用戶隱私數據,減少數據泄露風險的前提下,最大化保留數據分析挖掘的價值。
可審計。對數據的訪問要保證可回溯,可審計,當發生數據泄露時,要保證能夠通過審計日誌找到對應的泄露人員。
大數據脫敏平台的設計方向一般包括靜態大數據脫敏平台和動態大數據脫敏平台,所謂靜態和動態之分,主要在於脫敏的時機不同。對於靜態脫敏來說,數據管理員提前對數據進行不同級別的脫敏處理,生成不同安全級別的數據,然後授予不同用戶訪問不同安全級別數據的許可權。對於動態脫敏來說,管理員通過元數據管理不同用戶訪問具體數據的安全許可權,在用戶訪問數據的時候,動態的從原始數據中按照用戶許可權動態的進行脫敏處理。大數據平台脫敏技術方案是一個非常有趣的課題,目前業界還沒有看到有成熟的方案,鑒於其對數據安全和數據價值的作用,非常值得深入研究,希望以後可以繼續以合適的方式分享我在這方面的研究與實踐。
總結
針對於大數據平台對於數據脫敏的需求,本文分析了數據泄露可能帶來的風險,介紹了數據脫敏技術的理論基礎與實現方式,同時簡單分析了大數據平台的隱私數據脫敏技術方向。本文討論的均是基於離線數據的數據脫敏,流式數據的脫敏技術無論是理論基礎與具體實踐大都還處在摸索的過程中[7],留待以後繼續探索。
引用
我國隱私保護相關法律報告
索尼用戶隱私數據泄露事件
Uniqueness of Simple Demographics in the U.S. Population
Protecting Privacy when Disclosing Information: k-Anonymity and Its Enforcement through Generalization and Suppression
?-Diversity: Privacy Beyond k-Anonymity
Enhancing Cloud Security Using Data Anonymization
CASTLE: Continuously Anonymizing Data Streams
推薦閱讀:
※如何看待谷歌在nexus 6上強制開啟全盤加密(FDE)導致其I/O性能低下?
※NSA數據居然賣出了個白菜價!
※如何看待「聯盟哥哥」平台的賬號租借功能?有安全隱患嗎?
※隨機鹽值(salt)是什麼?泄露會出什麼問題?
※雲數據安全問題依然很嚴峻