大數據平臺經過將全部數據整合起來,充分分析與挖掘數據的內在價值,爲業務部門提供數據平臺,數據產品與數據服務。大數據平臺接入的數據中可能包括不少用戶的隱私和敏感信息,如用戶在酒店的入住紀錄,用戶支付信息等,這些數據存在可能泄漏的風險。大數據平臺通常經過用戶認證,權限管理以及數據加密等技術保證數據的安全,可是這並不能徹底從技術上保證數據的安全。嚴格的來講,任何有權限訪問用戶數據的人員,如ETL工程師或是數據分析人員等,均有可能致使數據泄漏的風險。另外一方面,沒有訪問用戶數據權限的人員,也可能有對該數據進行分析挖掘的需求,數據的訪問約束大大限制的充分挖掘數據價值的範圍。數據脫敏經過對數據進行脫敏,在保證數據可用性的同時,也在必定範圍內保證惡意攻擊者沒法將數據與具體用戶關聯到一塊兒,從而保證用戶數據的隱私性。數據脫敏方案做爲大數據平臺總體數據安全解決方案的重要組成部分,是構建安全可靠的大數據平臺必不可少的功能特性。本文首先分析了數據泄露可能帶來的風險,而後詳細介紹了數據脫敏技術的理論基礎與經常使用算法,最後介紹了一個基於大數據平臺的數據脫敏解決方案。算法
轉自:https://zhuanlan.zhihu.com/p/20824603數據庫
一般在大數據平臺中,數據以結構化的格式存儲,每一個表有諸多行組成,每行數據有諸多列組成。根據列的數據屬性,數據列一般能夠分爲如下幾種類型:安全
可確切定位某我的的列,稱爲可識別列,如身份證號,地址以及姓名等。工具
單列並不能定位我的,可是多列信息可用來潛在的識別某我的,這些列被稱爲半識別列,如郵編號,生日及性別等。美國的一份研究論文稱,僅使用郵編號,生日和性別信息便可識別87%的美國人[3]。測試
包含用戶敏感信息的列,如交易數額,疾病以及收入等。大數據
其餘不包含用戶敏感信息的列。加密
所謂避免隱私數據泄露,是指避免使用數據的人員(數據分析師,BI工程師等)將某行數據識別爲某我的的信息。數據脫敏技術經過對數據進行脫敏,如移除識別列,轉換半識別列等方式,使得數據使用人員在保證可對#2(轉換後)半識別列,#3敏感信息列以及#4其餘列進行數據分析的基礎上,在必定程度上保證其沒法根據數據反識別用戶,達到保證數據安全與最大化挖掘數據價值的平衡。設計
隱私數據泄露能夠分爲多種類型,根據不一樣的類型,一般能夠採用不一樣的隱私數據泄露風險模型來衡量防止隱私數據泄露的風險,以及對應不一樣的數據脫敏算法對數據進行脫敏。通常來講,隱私數據泄露類型包括:3d
我的標識泄露。當數據使用人員經過任何方式確認數據表中某條數據屬於某我的時,稱爲我的標識泄露。我的標識泄露最爲嚴重,由於一旦發生我的標識泄露,數據使用人員就能夠獲得具體我的的敏感信息。日誌
屬性泄露,當數據使用人員根據其訪問的數據表瞭解到某我的新的屬性信息時,稱爲屬性泄露。我的標識泄露確定會致使屬性泄露,但屬性泄露也有可能單獨發生。
成員關係泄露。當數據使用人員能夠確認某我的的數據存在於數據表中時,稱爲成員關係泄露。成員關係泄露相對風險較小,我的標識泄露與屬性泄露確定意味着成員關係泄露,但成員關係泄露也有可能單獨發生。
將數據開放給數據分析人員,同時就引入了隱私數據泄露的風險。在限制隱私數據泄露風險在必定範圍內的同時,最大化數據分析挖掘的潛力,是數據脫敏技術的最終目標。目前在隱私數據脫敏領域,有幾個不一樣的模型能夠用來從不一樣角度衡量數據可能存在的隱私數據泄露風險。
隱私數據脫敏的第一步是對全部可標識列進行移除或是脫敏,使得攻擊者沒法直接標識用戶。可是攻擊者仍是有可能經過多個半標識列的屬性值識別我的。攻擊者可能經過社工(知道某我的的姓名,郵編,生日,性別等)或是其餘包含我的信息的以開放數據庫得到特定我的的半標識列屬性值,並與大數據平臺數據進行匹配,從而獲得特定我的的敏感信息。如表一所示,若是攻擊者知道某用戶的郵編和年齡,就能夠獲得該用戶的疾病敏感信息。爲了不這種狀況的發生,一般須要對半標識列進行脫敏處理,如數據泛化等。數據泛化是將半標識列的數據替換爲語義一致但更通用的數據,已上述數據爲例,對郵編和年齡泛化後的數據如表二所示。
表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的機率將該紀錄與具體用戶關聯。
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得了胃病相關的病,由於前三條的病都和胃病相關。
表4 3-Diversity 病人信息
簡單來講,對於L-Diversity相同的相等集,敏感屬性值的分佈信息對於保護屬性泄露相當重要。L-Diversity只是用來衡量相等集的不一樣屬性值數量,並無衡量不一樣屬性值的分佈,因此其在衡量屬性泄露風險上仍有不足之處。
直觀的來講,隱私信息泄露的程度能夠根據攻擊者增量得到的我的信息衡量。假設攻擊者在訪問數據集以前已知的我的信息爲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],留待之後繼續探索。