南 楠 嚴英占
1(嶺南師范學院基礎教育學院 廣東 湛江 524048)
2(中國電子科技集團第54研究所 河北 石家莊 050000)
隨著信息和通信領域的發展和進步,出現了統計分析、知識發現、數據挖掘和許多其他研究領域的新機遇和新技術,但同時面臨著隱私和數據保護方面的新挑戰[1]。云計算是一種革命性的計算方法,可提供海量存儲和計算能力,使用戶無需投資和基礎設施即可經濟高效地實施應用,并能夠通過Internet靈活地按需訪問計算資源[2]。這些優點是導致安全性和隱私問題的原因,因為不同用戶擁有的數據存儲在云服務器中,海量數據的價值吸引了更多的攻擊,最終導致用戶失去對數據的控制,數據公開和對數據分析不斷增長的需求也增加了對數據隱私的侵犯和攻擊[3]。
對于數據隱私保護的方法分為密碼技術和非密碼技術[4],密碼技術中常用的方法有身份認證、基于屬性的憑證和k匿名方法等[5-6]。隱私保護的兩個主要模型是k匿名和差分隱私模型,許多其他模型都是從這兩種模型發展而來的。k匿名保護個人和數據隱私的方式是隱藏公開信息與個人之間的對應關系,更適合保護隱私的數據發布。目前對于k匿名方法的研究一直在繼續。汪小寒等[7]提出了Top-Down grid位置敏感哈希k匿名隱私保護方法,通過采用位置敏感哈希函數的Top-Down grid網格劃分方法選擇待匿名區域,使得匿名損失率更小,提高了匿名后的數據質量。Wang等[8]提出了基于層次分析法的k匿名聚類算法,根據k單獨控制聚類,實現等價類的均衡劃分,實現用戶隱私的保護。Yu等[9]提出了圖形結構感知的層次k匿名技術,根據圖形結構特征調整邊緣的隱私處理策略,解決了社交網絡的隱私保護。上述模型都提供相同程度的隱私保護,并沒有考慮多敏感度的個性化隱私保護需求。
用戶在現實生活中對隱私數據的敏感度并不相同,相同敏感度的信息對不同個體的重要性也不同,因此需要提供多敏感度的個性化隱私保護。曹敏姿等[10]提出了個性化(α,l)-多樣性k匿名隱私保護模型,設置相應的約束條件對敏感屬性的取值劃分類別,增強隱私保護能力。Li等[11]提出了長期觀察感知虛擬選擇的位置服務k匿名方法。文獻[12-13]是針對敏感值的個性化匿名服務,Wu等[12]通過涵蓋敏感主題以保護個性化推薦中的個人隱私。以上個性化隱私方法忽略了用戶敏感度對隱私的影響。Ashoka等[13]以記錄所有者端的敏感性標志形式考慮隱私要求,以及數據挖掘者最終的應用特定要求個性化隱私保護。Lin等[14]的(k,p)匿名框架,不僅隱藏了多個敏感信息,還隱藏了個人敏感信息。但是這些敏感值匿名方法忽略了不同個人的細粒度要求。另外以上匿名模型都是針對傳統數據量的處理,對于海量數據的處理效率并不高。
針對以上問題,本文提出一種針對大數據的多維敏感度的最佳k值匿名框架,在MapReduce域中,支持多個用戶的多維敏感度、細粒度訪問。數據被分成幾個組,并且對于每個組,應用不同的匿名化級別,這取決于用戶的訪問級別。該方法通過中斷值方程,根據數據累積頻率(cumulative frequency,CF)方程得出最佳k值,最后通過驗證服務、初始化服務和匿名服務,實現最終的多維敏感度的最佳k值細粒度大數據匿名保護。
MSOkA采用準標識符(Quasi-identifier,QI)概率進行匿名,概率值來自分類樹概念,分類樹T從父節點w傳播到葉子v,每個父節點的概率為P(w)=1/v,如果在最小值Vmin和最大值Vmax的間隔內出現一個數n,則在該間隔范圍內獲得該數的概率為P(n)=1/(Vmin-Vmax),此概率支持多個用戶的細粒度訪問。在這種情況下,數據被分成多個組或域,并且對每個組應用不同的匿名化級別,這取決于用戶的訪問級別。匿名化過程通過靈敏度等級ψ的值來增加或減少從數據中獲得的信息,ψ值越高的用戶獲得的信息越多。
敏感度等級由敏感度因子ω和老化因子τ這兩個主要因素決定,設T表示一個表,k表示k匿名值。用k′表示給定的所有權級別,其值越大,k′表示的所有權級別就較低,因此最低的所有權級別是由k′=k給出的,0≤k′≤k。較低的k′值意味著較少的匿名性,從而導致較高的所有權級別。通過求ω的最大值和最小值來計算靈敏度系數,最大ω和最小ω定義如下:
(1)
ω的值可以在ωmin和ωmax之間找到:
(2)
式中:ω表示靈敏度因子;k′表示所有權級別。將ω和τ兩項進行比較,得出靈敏度方程ψ。
ψ=|ω+τ|
(3)
靈敏度級別與用戶的訪問級別成正比,較高的靈敏度級別導致較高的訪問級別,因此應用較少的匿名化。此外,對象的靈敏度隨數據集年齡的增加而降低。考慮到老化因子的負值,老化因子τ反向影響靈敏度,數據集越老越不敏感。
MSOkA將數據屬性分類為三個類別:準標識符QI、類屬性和非指定屬性,MSOkA分組旨在保護類屬性和QI屬性中的敏感數據。將每兩個、三個或四個QI屬性聚合到一個組中,稱為QI組,這些垂直組對于將粒度訪問方法應用于數據授權至關重要。此外,MSOkA還將水平聚合技術應用于匿名化過程中,可以通過創建四種不同類型的組來實現,即:G組、完全平等組(Fully equal groups,FEG)、半等價組(Semi-equivalent group,SEG)和非等價組(Non-equivalent group,NEG)。G組最初是通過根據類值篩選數據元組來創建的,如果類值為4,則創建4個G組,依此類推。
每個QI組可以由2~4個QI屬性表示,通過實現五個主要階段來實現數據的匿名化。階段0是過濾步驟,根據明顯的猜測對所有數據記錄進行過濾,旨在排除僅包含一個類的完全相似的組。考慮到每個相似組的記錄數必須大于給定的所有權級別值k′,階段0從分組等效記錄開始,將每個等價組(按已知)發送到用戶定義函數程序,該程序將驗證數據包是否為明顯的猜測類型。如果是明顯的猜測,那么將被存儲為第2階段,而其余的記錄將被存儲為第1階段。第1階段通過創建G組后聚合數據來分離完全等效的記錄。
創建G組后,階段1開始分別處理每個G組,檢查完全等效的記錄,完全等效的記錄存儲在FEG組中,而其余的記錄存儲在SEG1組中。在第2階段中,如前面所述,對SEG1進行半等價測試。小于k′的記錄數將存儲在SEG2組中,大于k′的記錄將由用戶定義函數程序匿名存儲,并在完成匿名化后存儲在FEG組中。在第3階段,通過再次測試SEG2是否具有半等效性和匿名性,而非等效記錄存儲在NEG組中。在第4階段中,NG由一個QI屬性進行測試,并進行匿名,存儲在SEG組中。最后,小于k′的記錄編號完全抑制并存儲在SEG中。
通常,數據所有者需要許多實驗才能得到確定導致信息損失最小的最低k值,面對大數據環境,則需要更多的計算時間和成本。MSOkA提出了累積頻率的最佳k值確定方法,大大減少了計算時間和成本。另外,分配較小的k值所帶來的安全風險會增加,特別是當數據集包含多個QI組時。然而,較大的k值可能會對獲得信息的有用性產生負面影響,需要將這種數據降級控制在最低限度,因此,需要確定最佳k值,在安全級別和獲得的信息級別之間進行權衡。

允許等效記錄的最小數量為2(k′=2),此最小值達到安全閾值以防止唯一標識,基于這一事實,可以根據每一個kperc值指定k值,如前所述,kperc允許的最小值為0.1。由于k′=kperc×k,且k′=2,則k值應至少為20,可以從k=20開始增加k的值,因為低于20的k可能會對數據隱私產生負面影響,從而破壞k匿名性原則。具有多個QI組的數據集應分配有較大的k值,這是指在QI組中跨組唯一標識符(Across Groups Unique Identifiers,AGUI)值的急劇增加,AGUI是匿名化后出現的唯一記錄,由于記錄與其他記錄等效,因此該記錄不是匿名的,它的唯一性出現在多個QI組中,并在單個QI組中消失。面對AGUI攻擊,可通過增加每個QI組的k值來實現解決AGUI問題。為了為每個QI組選擇較大的k值,同時使得所選k不會對所獲得信息產生較大負面影響,根據中斷測量方程,設計了累積頻率方程,中斷測量用于衡量匿名化后信息有用性的降級百分比,如下所示:
(4)
式中:i表示匿名數據塊數;N是一個匿名數據塊中數據記錄的個數,M≤N;∏P[QI]是用于匿名每個QI組的概率因子。
在hadoop大數據分析平臺的Pig Latin腳本中,快速計算腳本將所有等效記錄分組,然后對分組記錄進行過濾,每個k值的非等效記錄數是累加的,因此,可以根據非等效記錄的數量來計算累積頻率CF,可通過中斷測量和檢查點計算CF,如下所示:
(5)
中斷值隨著k值的增加而增加,通過k的檢查點得到中斷值,選擇四個檢查點kmax、kmin、kold、knew,Dx表示對應檢查點的中斷值。
如果0.9≤CF(knew)≤1.1,則經過檢驗的knew被批準,與數據中斷的線性增加相比,允許數據分散的范圍為0.2。該等式被公式化以減少由于使用較大的k值對數據進行匿名化而發生的信息丟失。對于初始化k值,可以根據數據的累積頻率逐漸增加,CF方程可以在合理的計算時間內有效地獲得k值。
MSOkA框架在聯合身份驗證服務(Federation Service,FS)和服務提供者(Service Provider,SP)之間進行鏈接,包含了三個部分:核心服務部分、初始化服務部分和匿名服務部分。核心服務位于FS端,而初始化服務和匿名服務都位于SP端。所提框架由四個主服務器組成:FS服務器、SP網關服務器、Kerberos/LDAP服務器和Hadoop NameNode服務器。用戶被定義為嘗試訪問Hadoop域以進行數據分析的任何用戶,可以是數據所有者或來自任何外部組織的客戶,外部客戶必須得到數據所有者的批準。FS和SP網關通過安全斷言標記語言SAML語言進行鏈接,用于SP和FS之間的數據傳輸。匿名服務在SP網關和NameNode服務器之間運行。LDAP/Kerberos服務器為Hadoop域提供域名服務和安全操作。MSOkA框架如圖1所示。

圖1 MSOkA框架
核心服務為多訪問用戶級別提供身份驗證和授權。該服務的目的是識別QI組和類,為它們提供k匿名值,將其映射到業務角色,以及將角色委派給組織。每2~4個QI屬性和一個類被分配給一個組,所選擇的QI組和一個類不一定在一個表中。該服務部分框架如圖2所示。

圖2 核心服務框架

初始化服務提供初始文檔以準備匿名化數據。SP需要在SP-Gateway服務器中為數據所有者提供有效的目錄路徑,數據所有者需要通過該路徑上載大數據文件。在NameNode服務器上載的每個大數據都必須提供一組必要的文檔,以支持匿名化過程。大數據文件包括一個用于定義每個數據集的XML文件、一個文件匿名程序,以及用于分類法樹屬性的任何XML文件。SP網關服務器通過SAML服務器與FS通信,用戶生成SAML斷言的XML文件,該文件包含文件屬性部分的登錄和匿名化信息。屬性部分包含以下信息:用戶id、數據庫id、k′值、靈敏度級別ψ和數據狀態。數據狀態由兩個不同的值組成:保留或刪除,數據狀態定義相同用戶匿名數據上一個副本的有效性,此決定是基于用戶的最后一次登錄時間在FS端做出的,如果數據狀態為刪除,則匿名數據將被刪除,并開始新的匿名過程。
匿名服務在SP網關和NameNode之間運行。該服務將初始化服務從SP網關輸出傳輸到hadoop域NameNode,然后匿名服務在hadoop域中執行匿名腳本,該域由LDAP/Kerberos服務器控制,在hadoop域訪問之前為用戶提供身份驗證和授權服務。此外,Kerberos還支持hadoop服務的票證授予。匿名服務執行嵌入在Web編程中的shell命令,使用新的Web編程擴展和庫,保證了程序執行的安全。
LDAP服務使用從user_id派生的用戶名來創建身份驗證標識,user_id已通過SAML斷言文件從FS發送到SP。用戶名是在第一次訪問時創建的,并帶有一個隨機的復雜密碼,因此用戶可以訪問NameNode,創建的帳戶應對創建的輸入和輸出HDFS存儲目錄擁有完全權限。首次訪問時,將觸發shell命令行以創建輸入和輸出HDFS目錄,并為創建的user_id提供完全訪問權限。最后,如果數據(status=remove)則執行匿名Pig腳本。
為了驗證所提框架的有效性,將本文框架和其他方法進行對比實驗。實驗由五臺虛擬機組成,其中hadoop域有一個NameNode和兩個DataNodes,一個SP-Gateway服務器和一個LDAP/Kerberos服務器組成。核心服務是在個人計算機上設置的,并使用MySQL數據庫和PHP語言創建,SAML服務器被設置在個人計算機和SP-Gateway上,通過在本地PC、FS和虛擬機SP-Gateway的兩端實現SAML,將用戶的屬性嵌入到XML斷言中。創建了一個名為A的組織,委派給三個不同的角色,分別為:kperc=40%(映射到QI1)的人力資源員工、kperc=40%(映射到QI2)的腫瘤科醫生、kperc=60%(映射到兩個QI組)的醫院管理者。此外,還創建了三個具有以下角色的用戶:user1(人力資源員工)、user2(腫瘤科醫生)和user3(醫院管理者)。實驗數據集采用Seer Cancer數據集,其中一些記錄為N=60 803 185。
粒度原則促進了匿名數據級別與獲得信息之間的權衡。如果不污染主要獲得的信息,則將QI分組以增強訪問控制方法。所提框架通過選擇一個適中的最佳k值,可以減少AGUI安全攻擊,同時又不會降低信息的有用性。圖3給出了k值的選擇與中斷值和AGUI數量的關系,其中,中斷值反映了信息損失量,AGUI數量反映了隱私保護程度。實驗中使用uer3賬戶,因此基于kperc=60%對數據進行匿名化,計算了每個值的AGUI數,并比較了兩個QI組的中斷級別和所有記錄中出現的AGUI數量。

圖3 不同k值的中斷值和AGUI數量
可以看出,對于兩個QI組,在較大的k值上中斷值略微增加,但AGUI數量出現了顯著下降,說明可以通過將k值增加到某個水平來減少AGUI數量。當k=27時可以輸出較少的匿名信息損失以及較少的AGUI減少影響,在有限的信息損失下,提高隱私保護程度。
需要測試粒度訪問及其對明顯猜測攻擊記錄數量的影響,在本實驗中,分別使用user1和user2來訪問每個QI組。很明顯,單個組訪問權限不會面臨任何AGUI問題,然而,即使只有一個QI組,明顯的猜測攻擊仍然是一個障礙。圖4給出了兩個QI組的中斷值和明顯猜測數量。

圖4 不同k值的中斷值和明顯猜測數量
可以看出,較低的k值增加了明顯猜測記錄的數量,因此,選擇一個最優k對于在低中斷級別和低數量的明顯猜測記錄之間折中是至關重要的。當k取值在24~36之間時,可以得到中斷最小值和明顯猜測最小值。兩個實驗可以對所提MSOkA框架中尋找最優k進行驗證。
為了驗證MSOkA框架的有效性,將其與其他方法進行比較,包括文獻[9]的基于層次分析法的k匿名聚類算法、文獻[10]的個性化(α,l)-多樣性k匿名隱私保護模型、文獻[14]的(k,p)匿名框架,從敏感值識別率和運行時間兩個指標進行比較。圖5給出了不同k值下敏感值識別率對比,圖6給出了不同數據集規模下運行時間對比結果。
由圖5可以看出,隨著k值的增加,敏感值識別率降低,但是MSOkA框架具有最低的敏感值識別率,隱私保護最好。這是因為本文框架通過敏感值進行權限分級,進行QI分組,支持多個用戶多維敏感度的細粒度訪問,加強了隱私保護力度。由圖6可以看出,隨著數據集規模的增加,所有方法的執行時間都增加,所提MSOkA框架具有最低的執行時間,并且隨著數據集的增加,執行時間增加幅度最小。這是因為框架可以通過累積頻率快速找到最佳k值,且核心服務部分、初始化服務部分和匿名服務部分都是在hadoop域實現,大大降低了執行時間。
針對多用戶訪問的大數據隱私保護,提出一種多維敏感度最佳k值匿名框架,該模型利用MapReduce性能和可伸縮性,有效實現大數據環境下用戶隱私、快速訪問。根據敏感值對用戶訪問級別分層,通過累積頻率找到最佳k值,在hadoop域進行MSOkA框架的核心服務部分、初始化服務部分和匿名服務,實現大數據細粒度、快速訪問。實驗結果表明,所提MSOkA框架能夠快速找出最佳k值,在k=27時,能夠在信息損失量和AGUI數量得到權衡,在24~36范圍內,框架能夠在信息損失量和明顯猜測數量得到權衡,實現用戶多維敏感度、細粒度隱私保護。另外,MSOkA框架在敏感值識別率和執行時間要低于其他方法,驗證了本文方法的有效性與優越性。