數據脫敏 t-closeness介紹與實現

數據脫敏 t-closeness介紹與實現

本文主要基於t-closeness的首次提出團隊Ninghui Li, Tiancheng Li, Suresh Venkatasubramanian發表的論文: t-closeness privacy beyond k-anonymity and l-diversity

 

提出背景

要知道t-closeness的提出背景,就必須要了解 k-anonymityl-diversity,因為t-closeness正是針對後者的一次「革命性優化」,而後者又是針對前者的優化方案實現。

k-anonymity

k-anonymity是匿名化數據的一種性質。如果一組公開的數據中,任何一個人的資訊都不能和其他至少k-1人區分開,則稱該數據滿足k-anonymity,該組數據稱為一個等價類(An equivalence class)。k-匿名性的概念是由Latanya Sweeney和 Pierangela Samarati在1998年的一篇論文中最先提出的,其目的是為了解決如下問題:「給定一組結構化的具體到個人的數據,能否給出一組經過處理的數據,使我們可以證明數據中涉及的個人不能被再識別,同時還要保證數據仍具有使用價值。」使一組數據滿足k-anonymity的過程稱為k-anonymization

 

舉例來講,下表是某醫院資料庫中存儲的病歷表的一部分。一共有6個屬性,分別為用戶編號id、用戶身份證號idNumber、性別sex、年齡age、身高height、疾病disease.

id idNumber sex age height disease
4533747 120227****4400 40 169 乙肝
4533748 500415****5207 31 187 高血壓
4533749 110822****6331 20 156 艾滋病
4533750 631619****9337 40 151 感冒
4533751 331526****9038 40 176 乙肝
4533752 360228****1013 55 163 乙肝
4533753 520727****9726 31 171 乙肝
4533754 641209****7206 69 156 高血壓
4533755 151110****9541 37 198 乙肝
4533756 520708****5514 39 174 艾滋病

 

實現k-anonymity的常見方法有兩種方法:

· 數據抑制:此種方法將一些屬性的值用星號「*」取代或者不發布該屬性。可以取代一列中的所有值或部分值(上表中的 idNumber 也是數據抑制的一種)。在下面的匿名化表格中,我們將不發布「id」、「idNumber」欄的所有值、「性別」一欄的部分值用「*」取代。

· 數據泛化:此種方法將一些屬性的精確值用更寬泛的類別取代。如一組數據中「age」欄中的31、40、35可以改為30~40。

對攻擊者而言,「age」、「sex」、「height」雖然單獨不能用於唯一識別一個個體,但結合起來則可能用於識別唯一一個個體的屬性被稱作「准標識符」;相應地,「id」、”idNumber”等可以識別唯一一個個體的屬性被稱為「標識符」;「疾病」、「薪水」或者其它當事人希望保護的屬性常被稱為「敏感屬性」,也可能成為敵手的「目標屬性」。

 

下表是經過k = 2即2-匿名性處理之後的病歷表,即對於「age」、「sex」、「height」三個屬性具有2-匿名性。任何一行在這三列上的值的組合都至少出現了2次。在k-anonymity的資料庫中,所有由准標識符組成的多元組都至少出現了k次。

sex age height disease
31~40 169~187 乙肝
31~40 169~187 高血壓
20~40 151~156 艾滋病
20~40 151~156 感冒
40~55 163~176 乙肝
40~55 163~176 乙肝
31~69 156~171 乙肝
31~69 156~171 高血壓
* 37~39 174~198 乙肝
* 37~39 174~198 艾滋病

Meyerson和Williams的研究表明,求最優的k-匿名化方案是一個NP困難的問題;然而,利用諸如k-優化的啟發式方法通常也可以得到令人滿意的結果。

 

l-diversity

儘管k-匿名化是一個定義簡潔且具有很多可行演算法的手段,可以較好地解決一組數據的匿名化問題,但從其它角度仍然可以攻擊滿足k-匿名性的數據。若攻擊者掌握並利用其它背景知識,這些攻擊甚至可以更有效率。

這些攻擊包括:

同質性攻擊(Homogeneous attack):如果目標屬性(攻擊者希望獲知的屬性)在k個條目中的取值都是相同的,則可以進行此種攻擊。這時,就算一組數據已經被k-匿名化,目標屬性在k條記錄中的取值仍然可以被獲取。

背景知識攻擊(Background knowledge attack):此種攻擊可以利用目標屬性與准標識符屬性之間的聯繫來減少目標屬性里可能值的數量。例如,Machanavajjhala 等人的研究表明,利用心臟病在日本人中的發病率較低這一事實,可以在醫療資料庫中縮小一個敏感屬性的取值範圍。

 

為克服k匿名模型缺陷,Machanavajjhala等人提出一種增強的k匿名模型:

l多樣性(l−diversity)模型. l-多樣性確保每個k-匿名組至少包含l個不同的敏感屬性值。因此,即使對手能夠識別一個人的群體,他/她仍然無法確定該人的敏感屬性的價值。

k-匿名中可能出現的問題是,k-匿名組中的所有人都擁有相同的敏感屬性值。一個知道某個人在k匿名組中的對手仍然可以絕對肯定地了解該人敏感屬性的價值。這個問題可以通過使用ldiversity來解決。

 

定義(The l-diversity Principle)

如果一個等價類至少有l個敏感屬性的「良好表示」(well-represented)值,則稱該等價類具有l多樣性。如果一個表中的所有等價類都有l多樣性,則稱該表具有l多樣性。

 

Machanavajjala 等人對此原則中的」良好表示」 well-represented一詞給出了多種解釋:

· 可區分l多樣性(Distinct l-diversity)。對「良好表示」的最簡單理解是確保每個等價類中的敏感屬性至少有l個不同的值。可區分l多樣性並不能防止概率推理攻擊。一個等價類可能有一個值相比其他值出現得更頻繁,使得攻擊者能夠推斷出等價類中的實體很可能有該值(如上述的日本人心臟病例)。這便推動了接下來的兩個更健壯的l多樣性的概念的提出。

· 熵l多樣性(Entropy l-diversity)。一個等價類E的熵被定義為:

熵l多樣性

其中,S是敏感屬性的定義域,p(E, s)是E中的敏感值為s記錄的分數。

一個表被稱作有熵l多樣性,如果對它的每個等價類EEntropy(E)>=log l 。熵l多樣性的定義比可區分l多樣性更為健壯。為了使每個等價類都有熵l多樣性,整個表的熵必須至少為 log l 。有時這一條件可能會限制過多,因為如果有幾個值很常見的話,整個表的熵會很低。這就導致了接下來的一種更為保守的l多樣性的定義。

· 遞歸(c, l)多樣性(Recursive (c, l)-diversity)。遞歸(c, l)多樣性確保出現頻率最高的值不會出現的太過頻繁,而頻率不太高的值不會出現得太少。設m為等價類中的值的數目, QQ截圖20211217220420為在等價類E中第i個頻率最高的敏感值的出現次數。若 公式 , 則稱E具有遞歸(c, l)多樣性。若一個表的所有等價類都具有遞歸(c, l)多樣性,則稱該表具有遞歸(c, l)多樣性。

 

l多樣性的局限性

雖然l多樣性原則k-匿名性在有關防止屬性泄露方面上邁出了關鍵性的一步,但它仍具有以下幾個缺陷:

l多樣性可能難以實現,也沒有必要實現。

· 例1:假設原始數據只有一個敏感屬性:特定病毒的測試結果。它有兩個值:陽性和陰性。進一步假設有10000條記錄,其中99%為陰性,只有1%為陽性。那麼這兩個值的靈敏度是非常不同的。人們不介意被知道檢測呈陰性,因為這樣一來,他們與99%的人口一樣,但他們不希望被知道或是認為檢測呈陽性。在這種情況下,對於只包含陰性記錄的等價類,2-多樣性是不必要的。為了有一個不同的2-多元表,最多可以有10000×1%=100個等價類,並且資訊損失會很大。還要注意,由於整個表中敏感屬性的熵非常小,如果使用熵l-多樣性,則必須將l設置為一個小值。

l多樣性不足以防止(敏感)屬性泄露。

下面有兩類對於l多樣性的攻擊。

 

偏斜攻擊(Skewness Attack):當總體分布是偏態分布時,滿足l多樣性不會阻止屬性公開。再考慮例1。假設一個等價類有相等數量的陽性記錄和陰性記錄。它滿足不同的2-多樣性、熵2-多樣性和任何可施加的遞歸(c,2)-多樣性要求。然而,這帶來了嚴重的隱私風險,因為課堂上的任何人都被認為有50%的可能性是陽性的,而總人數只有1%。

現在考慮一個等價類,它有49個陽性記錄,只有1個陰性記錄。它將是明顯的2分,並且比整個表具有更高的熵(因此滿足任何可以施加的熵多樣性),即使等價類中的任何人都將被認為是98%的陽性,而不是1%。事實上,這個等價類與一個有1個陽性記錄和49個陰性記錄的類具有完全相同的多樣性,儘管這兩個類存在非常不同的隱私風險級別。

 

相似性攻擊(Similarity Attack):當等價類中的敏感屬性值不同但語義相似時,攻擊者可以獲得重要資訊。考慮下面的例子:

· 例2:表3是原始表,表4顯示了滿足可區分和熵3-多樣性的匿名版本。表中有兩個敏感的屬性:薪水和疾病。假設一個人知道Bob的記錄對應於前三個記錄中的一個,那麼他就知道Bob的工資在[3K–5K]範圍內,並且可以推斷Bob的工資相對較低。這種攻擊不僅適用於「工資」等數字屬性,還適用於「疾病」等類別屬性。知道Bob的記錄屬於第一類,我們就可以得出結論,Bob有一些與胃有關的疾病,因為等價類中的三種疾病都與胃有關。

image-20211217221314064

image-20211217221324220

 

結論

總而言之,具有相同多樣性級別的分布可能提供非常不同的隱私級別,因為屬性值之間存在語義關係,因為不同的值具有非常不同的敏感級別,並且因為隱私也受到與整個分布的關係的影響。

 

T-相近(t-closeness)

t-相近是基於l-多樣性組的匿名化的進一步細化,用於通過降低數據表示的粒度來保護數據集中的隱私。這種減少是一種折衷,它會導致數據管理或挖掘演算法的一些有效性損失,從而獲得一些隱私。t-相近模型擴展了l-多樣性模型,通過考慮屬性數據值的分布,清晰地處理屬性值。t-相近要求每個k-匿名組中敏感屬性值的統計分布與該屬性在整個數據集中的總體分布「接近」。

直覺上,隱私是通過觀察者獲得的資訊來衡量的。在看到發布的表之前,觀察者對個體的敏感屬性值有一些先驗看法(prior belief)。看到發布的表後,觀察者有了一個後驗看法(posterior belief)。資訊增益可以表示為後驗看法和先驗看法之間的差異。Li, N等人方法的新穎之處在於,他們將獲得的資訊分為兩部分:發布數據中的整體資訊和特定個人資訊。

首先考慮以下思維實驗:首先,設觀察者對個體的敏感屬性的先驗看法為B0.然後,給觀察者一個抹去准標識符資訊的數據表,這個表中敏感屬性的分布記為Q,根據Q,觀察者的看法變為B1 .最後,發布含有準標識符資訊的數據表,那麼觀察者就能夠根據該表識別特定個體記錄所在的等價類,得到該等價類中敏感屬性的分布P,根據P,觀察者的看法變為 B2。

image-20211217222157483

l多樣性需求的動機是限制B0和B2之間的差異(儘管它只是通過要求P具有一定程度的多樣性間接實現的)。在t相近這裡,我們選擇限制B1和 B2之間的差異。換句話說,我們假設敏感屬性Q在表中總體人口中的分布是公共資訊。我們不限制觀察者獲得的關於總體人口的資訊,但限制觀察者能夠了解關於特定個體的額外資訊的程度。

我們觀察到,通過泛化,我們所能做的就是將所有準標識符屬性泛化為最一般的值。因此,只要發布一個版本的數據,就會發布一個分布Q。同時,如果一個人想要發布這個數據表,那他所打算的就是發布這個分布Q,正是這個分布使得這個數據表能夠派上用場。 我們發布數據是因為數據有價值,這個價值就是數據整體的分布規律,可以用B0與 B1之間的差別表示。二者差別越大,表明數據的價值越大,這一部分不應被限制。也即整體的分布Q應該被公開。因為這正是發布數據的意義所在。而 B1和B2 之間的差別,就是我們需要保護的隱私資訊,應該被儘可能限制。

我們通過限制PQ之間的距離來限制從 B1到 B2的增益。直覺上來說,如果P=Q,那麼 B1和 B2應該是相同的。如果PQ很接近,那麼B1和B2也應該很接近,即使可能與 B0非常不同。

定義(The t-closeness Principle)

若一個等價類的敏感屬性取值分布與整張表中該敏感屬性的取值分布的距離不超過閾值t,則稱該等價類具有t相近性。若一個表中所有等價類都有t相近性,則該表也有t相近性。

當然,要求PQ接近也同樣限制了發布的有用資訊量,因為它限制了准標識符屬性和敏感屬性之間的相關性資訊,然而這正是我們的目的。如果觀察者得到的二者之間的相關性描述過於清晰,就會出現屬性泄露。t相近性中的t參數使得人們可以在實用性和隱私性之間進行權衡。

 

使用EMD來衡量PQ的距離

可以看出,解決問題的關鍵在於測量兩個概率分布QQ截圖20211217222728之間的距離。眾所周知的變數距離公式是:

QQ截圖20211217222855

然而,上述距離公式並不能反映值之間的語義距離。如上文中的例2,其中收入屬性的總體分布Q = {3k,4k,5k,6k,7k,8k,9k,10k,11k }。表4中的第一個等價類的分布P1= {3k,4k,5k },第二個等價類的分布P2={6k,8k,11k}。我們知道,P1 相比於P2會導致更多的資訊泄露,因為 P1中的值都在較低水平分布,因此我們希望距離運算的結果QQ截圖20211217223118.但是上述距離度量公式不能做到這一點,因為從它們的角度看3k6k除了取值不同並沒有其他區別。

 

簡而言之,衡量PQ的距離有以下條件:

· 為屬性值定義了一個度量空間以便在可以定義任意一對值之間的距離

· 基於這些值有兩個概率分布,我們希望這兩個概率分布之間的距離取決於這些值之間的距離。

這實際上就是EMD(Earth Mover』s distance,陸地移動距離)。

 

如何計算EMD

回顧之前的例2:

image-20211217223431506

image-20211217223439516

Q = {3k4k5k6k7k8k9k10k11k }。P1 = {3k4k5k },P2={6k,8k,11k}

我們用EMD來計算QQ截圖20211217223556

令v1 = 3k, v2 = 4k, …v9 = 11k, 我們定義vi和vj之間的距離為|i – j|/8, 因此最大距離為1.可以得到QQ截圖20211217223823

對於疾病屬性,我們使用圖1的層次結構來定義值之間的距離,例如,「Flu」和「Bronchitis」之間的距離為1/3,「Flu」和「Pulmonary embolism」之間的距離為2/3,「Flu」和「Stomach cancer」之間的距離為 3/3 = 1. 然後分布{gastric ulcer, gastritis, pneumonia}與總體分布之間的距離為0.5。

image-20211217223902404

這裡所說的疾病屬性的距離是通過層次距離來描述的:

層次距離(Hierarchical Distance):分類屬性的兩個值之間的距離是將這兩個值基於域層次結構概括為相同值的最小級別。

表5所展示的是表3的另一個匿名版本。薪水屬性為0.167-相近性,疾病屬性為0.167相近性。表5成功防止了相似性攻擊。例如,根據表5,Alice無法推斷Bob工資低或者患有胃類疾病。

image-20211217224013409

我們注意到,t-相近性可以防止屬性泄露,但不能防止身份泄露。因此,我們有時可能同時需要k-匿名演算法和t-相近性。此外,t-相近性對於針對k-匿名演算法的同質性攻擊和背景知識攻擊並不能保證它們永遠不會發生,而是保證如果這類攻擊發生在了此類表中,那麼即使你使用完全廣義的表也可以發生相似的攻擊。所以,如果要發布數據的話,發布經過t-相近性方法處理後的數據是最好的。

 

建模與程式碼實現

本部分是相關課程作業,因此數據集和選擇的程式語言可能與實際應用有出入;只是來了解相關概念的人,這部分可以不看

首先,根據我們的原始數據集org(如下圖),我們知道敏感屬性為疾病,性別、年齡和體重是准標識符,編號和idNumber忽略不計入輸出文件t中:

image-20211217224448666

要限制PQ之間的距離,就要首先對已有的PQ之間的距離進行計算,那麼就需要先對此處疾病屬性建立層次結構,我們建立的結構如下:

image-20211217224501236

我們採用樹形結構來描述這一層次結構,用來衡量敏感屬性diseases之間距離的方法正是求樹的深度的過程,建立如上圖所示的java樹形數據結構,通過處理類Operation的getOrgT()方法來得到原始數據集org的t值,再調用Operation類中的public t_closeness()方法,對原始數據進行t-closeness處理,具體方法實現程式碼參見附件項目k_anonymity的源碼.

 

關於參數t:

· 一般情況下,參數t越小,資訊泄露就越少(數值距離)

· 一般情況下,參數t越大,資訊泄露就越少(層次距離)

· t的取值範圍與建立的層次結構、org中記錄的個數n還有匿名參數k有關。k其實就是一個等價類中所包含的記錄條數,參數t的大小與資訊泄露的關係並沒有那麼密切,不是說t大資訊泄露就一定少或者多。

 

運行結果分析

為了反映出t-closeness相比k-anonymity的進步之處,我們設定k = 5, n = 100.即生成100條原始記錄,每5個分為一個等價類。

可以看到,在原始數據集org文件中的第16-20條記錄組成的等價類中,敏感屬性全部分布於「病毒感染性疾病(大類)」之中,以該文件為藍本生成的k-匿名文件k依舊存在這個情況,但經過t-closeness處理之後,該情況已經得到消除:

org數據集部分記錄

image-20211217224811575

k數據集部分記錄

image-20211217224858407

t數據集部分記錄

image-20211217224919533

當然,t文件後半部分也同樣因為處理的原因(項目所使用的演算法是保證前面的記錄有良好的t-closeness性質),所以大多敏感屬性分布於同一分類下。因為建立的樹形結構的原因,生成數據時,大概有2/3的數據隨機生成為了「病毒感染性疾病(大類)」,但我們可以選擇只向外界發布得到了有良好的t-closeness性質的前部分記錄。在統計有較多數據的情況下,本缺陷可以忽視不計。

 

參考文獻

Machanavajjhala, A.; Gehrke, J.; Kifer, D.; Venkatasubramaniam, M. L-diversity: Privacy beyond k-anonymity. ACM Trans. Knowl. Discov. Data 2007, 1

Li, N.; Li, T.; Venkatasubramanian, S. t-closeness: Privacy beyond k-anonymity and l-diversity. In Proceedings of the IEEE International Conference on Data Engineering, Istanbul, Turkey, 15–20 April 2007;