寇蔣恒,何明星*,陳愛良,何明澤
(1.西華大學計算機與軟件工程學院,四川 成都610039;2.民航成都信息技術有限公司,四川 成都610000)
隨著機場人流量的在不斷增加,機場每天會產生大量數據。對于小型機場而言,受其人力、財力、物力的限制,他們管理并處理數據的能力有限,因此數據需要被托管到其他機構進行分析與處理,以達到改善機場服務水平的目的。
在商業上數據托管、分析與處理已經比較成熟,例如Dropbox、OneDrive、GoogleDrive、云上貴州、阿里云、騰訊云等。這些數據托管方式節約了數據本地存儲與運算的成本[1],但數據庫托管也存在風險。由于民航數據包含了大量的敏感信息,在將數據托管到第三方時,應進行數據脫敏處理[2-3]以確保敏感數據安全。
數據脫敏技術是去除存在于數據中的敏感信息的一種技術,通過使用該技術來避免托管數據泄漏所帶來的危害。一般來講,利用數據庫進行測試、開發、訓練、托管的第三方機構并不需要知道數據庫中某些準確信息,只要內容看起來真實即可[4-7]。
在數據庫托管的過程中,為了避免某些客戶的隱私信息直接出現在外包數據庫中,學者們提出了多種數據脫敏方法:1)數據失真技術[5-6,8-20];2)數據加密技術[21-29];3)限制公開的技術[30-33]。
1.2.1 數據混淆技術
數據混淆技術是較早用于數據脫敏的一種技術,早期的數據混淆技術是基于線性變換的一種技術。研究表明,數據混淆是一種比較簡單且有效的數據脫敏方式。由于對字段不需要任何復雜的操作,所以此脫敏技術有較高的運行效率。
數據混淆技術有3個主要屬性:可逆性、規范性和變換性??赡嫘灾笖祿煜龑⒃紨祿疍映射到一個新的數據集D′。可逆性又分為4類:部分信息可逆、過程可逆、組合可逆和不可逆。部分信息可逆:若混淆技術僅僅只是原始數據集的常量偏移,則將混淆數據集與原始數據集的已知條目進行匹配會顯示出混淆算法的模式。過程可逆:數據混淆的方式或者其標準過程可能導致完全或者部分的混淆數據集可逆。組合可逆:敵手了解數據混淆技術和原始數據集中的部分信息,則可以對使用此混淆技術的數據進行逆向工程得到原始數據。不可逆:敵手根本無法通過混淆后的數據找到原有數據。
1.2.2 差分隱私算法
差分隱私算法是數據失真技術的一種[9]。差分隱私模型在降低隱私泄露風險的同時又保證了數據的高可用性,所以被廣泛應用于商業上的數據脫敏。Apple和Google是首先將差分隱私算法商用的公司,并且該算法已開源[10]。近年來,Cormode等[11]通過降低敏感度等方式以解決數據噪聲過大的問題。Sarathy等[12]將差分隱私首次應用在數值類型的數據脫敏上。Dwork等[13-14]針對連續觀測和流數據的差分隱私保護,提出了泛隱私概念。Li 等[15]、 Zhou等[16]、Gehrke等[17]、Zhang等[18]將其他方法與差分隱私相結合,提高了隱私數據的安全性。
設數據集D和D′具有相同的數據結構,兩者的對稱差記作DΔD′,|DΔD′|表示D和D′ 2個數據庫中記錄條數的相差值。若|DΔD′|=1,表示D和D′之間僅僅只有一個紀錄不同,稱D和D′為鄰近數據集。對D或D′任何查詢都會得到近似的結果,因此敵手無法通過查詢得到任何有關敏感數據的信息[19]。
定義1給定一個差分隱私查詢函數κ(D)提供ε-差分隱私,任意2個鄰近數據集D和D′最多相差一行記錄的差分隱私公式為
Pr[κ(D)∈r]≤exp(ε)×Pr[κ(D′)∈r]r∈Range
(1)
式中:Pr[ ]表示隱私被披露的概率,概率空間由差分函數κ決定;實數ε稱為差分隱私保護預算,值越小隱私保護強度越大,ε取值視具體數據情況而定。
目前存在一種對差分隱私模型的攻擊,當敵手在查詢某數據庫表時,可能會使用數據庫查詢中的統計函數來查詢數據。因為數據庫統計是順序統計,所以當敵手查詢count(n)-count(n-1)時,旅客的某種信息就會被找到。如表1所示,敵手查詢性別時使用count(4)-count(3)就可以獲得Alice的真實性別。

表1 旅客信息(部分數據)
差分隱私的主要噪聲產生機制有Laplace機制和指數機制。Laplace機制主要處理數值型數據;指數機制主要處理非數值型數據。噪聲產生機制受到全局敏感性和隱私預算的制約。
Laplace機制將服從拉普拉斯分布的噪聲加入查詢結果中,從而實現ε-差分隱私保護。式(2)是服從位置參數為0、尺度參數為b的拉普拉斯分布函數Lap(b)的概率密度函數。
(2)
定義2給定數據庫中的查詢函數q:Dn→R,差分隱私函數κ(D)的輸出滿足ε-差分隱私公式,為
(3)
噪聲的大小與Δq和ε的取值相關,Δq與噪聲成正比、與ε成反比。當Δq比較小時查詢結果較好。當ε變小時Laplace(Δq/ε)曲線會更加扁平,噪聲增大。在滿足ε-差分隱私保護時,ε越小則噪聲越多,隱私保護級別越高,對不同數據庫設置不同的ε值,也可以對同一個數據庫中不同屬性設置不同ε值來實現不同的隱私保護等級。
Laplace機制只能向精確的數值類型查詢結果中添加噪聲從而實現對數據的保護,例如查詢某位旅客的某次所購買機票的價格或某位旅客的信用等級等數據。然而在許多實際民航信息系統查詢中,查詢結果為一種組合(例如一種方案或者一種選擇),對于這一類查詢結果適合使用指數機制來進行數據脫敏,例如對多家航空公司的滿意度調查數據等。選擇指數機制來進行數據脫敏則可以在保護數據的同時保留數據之間的關聯。

(4)
對數據脫敏也可用多種加密技術,其中常用的有保形加密技術,也稱保留格式的加密[22-23]。它是一種對稱加密體制,主要特點是密文數據的格式與明文數據格式完全相同。第三方托管平臺對于數據集中數據的格式、數據的類型非常敏感,例如托管中心對于身份證號需要進行校驗,若脫敏后數據的身份證號不符合則第三方托管平臺將會視此信息為非真實信息。
當用戶數據庫中存在某些重要信息,例如用戶唯一ID標識、身份證號等,需要進行加密處理,則可使用密碼學加密算法,但直接使用此類算法可能會改變原始數據長度或數據格式,例如采用高級加密標準算法(advanced encryption standard,AES)來脫敏數據則不能保留數據格式,從而第三方平臺無法進行分析與處理。
正因為通用的數據脫敏方法會改變數據的格式從而使第三方無法對數據進行分析,所以保形加密(format preserving encryption,FPE)被提出。使用FPE方法對用戶ID進行脫敏后,數據類型、數據長度與原始數據完全相同。對于需要特定格式數據的第三方應用來講,因為輸入類型、數據長度并沒有發生改變,從而能順利地對數據進行分析并獲得其中有用信息。在T.Spies提出使用FPE來保護數據庫中的個人識別信息[24]之后,Bellare等提出了一種基于非平衡菲斯特網絡(Feistel network)的FPE方案[25],此方案增加了保形加密的安全性。之后Schneier等提出FPE的FFX模型為保形加密算法的發展奠定了模型基礎[26]。隨后Morris等[27]提出了一種基于Thorp Shuffle的方案,Liu等[28]提出了針對日期的FPE方案,使保形加密可以處理更多類型的字段。目前最常用的FPE方案有The Thorp Shuffle、Hasty Pudding Cipher、VIL mode。雖然FPE算法有很多但由標準機構認證的保形加密算法有FF1與FF3,并統一叫做FFX算法,Prefix、Cycle-walking、Generalized-Feistel是幾個最常用于構造加密算法的方法。Prefix方法在處理數據之前會先建立一個隨機的置換表,再使用此置換表來對數據進行加解密。對于有限集X={0,1,…,n-1},當消息空間n<106時數據的加解密速度較快,但是當n>106時僅建立置換表就會耗費大量時間。
如果需要對旅客數據表中的旅客ID進行處理,首先選擇分組密碼算法E,接下來選擇對稱密鑰k∈K,計算元組I=(Ek(0),Ek(1),…,Ek(n-1)),最后替換消息空間中的值得到加密結果。為了建立置換表來加密消息M={0,1,2,3,4,5,6,7,8,9},假設E是一個理想的8位的分組密碼,Ek為從[0,255]均勻且隨機的置換算法,將Ek的結果經過從小到大重新排序得到表2。通過將消息空間的字段按照表2的規則進行映射從而達到數據脫敏的目的。本文在2.2.2節中使用了此處所構造的一個簡易置換表對數據進行脫敏處理。

表2 Prefix置換表
匿名化技術[29]是早期外包數據庫所常用的限制公開技術之一。在匿名化技術中最為常用的模型是k-anonymity、t-closeness、l-diversity等[30-33]。
定義4給定數據集D,設TD={t1,t2,…,tn}為D中的一個數據表,ti為數據表TD中第i條記錄,其屬性集為X={X1,X2,…,Xm},Xj表示這條記錄屬性集中的第j個屬性,QI={Xi,…,Xj}表示數據表TD中所有準標識符屬性的集合,其中QI?X,給定正整數k,如果對于任何一條記錄t∈TD,TD中都有至少k-1條其他記錄t1,t2,…,tk-1與記錄t在準標識符上具有相同的屬性值,則稱數據表TD滿足k-anonymity 保護模型。
k-anonymity(k-匿名)保護模型能泛化處理數據表中的準標識符屬性,以防止敵手使用準標識符屬性把具體的個體與其他k-1個個體區分開來,其核心想法是保證數據集中有關準標識符的k條記錄在同一個集合內,集合內記錄為同一個等價類,從而降低某個特定個體被識別出的概率。
此類脫敏算法主要關注數據集的微觀方面,數據集包含N條記錄,每條記錄包含M個屬性的表單,數據集中一條記錄的屬性可粗略劃分為2類:1)標識符屬性EI,用于唯一地識別出個體,如ID、身份證號、車牌號等;2)準標識符屬性QI,用于間接地識別出個體,如性別、單位和地址等。
l-diversity(l-多樣性)模型是對k-anonimity模型的一種更精確的定義。l-diversity模型通過減少同一等價類中的不同種類數量來保護敏感數據。在一個等價類里的敏感數據屬性至少有l個良好表示值,則稱該等價類具有l-diversity。如果一個數據表中所有等價類都具有l-diversity,則該表具有l-diversity。可以通過3種方式來定義l-diversity。
1)可區分l-diversity:同一等價類中的敏感屬性至少有l個不同的值。
2)熵l-diversity:一個等價類所提供的熵應該不大于log(l),l為等價類中不同值的個數。
3)遞歸l-diversity:常出現的值不能出現過多,不常出現的值也不能明顯太少。
t-closeness(t-接近性)模型是對l-diversity模型更精確的定義。t-closeness模型通過減少數據表示的細粒度來保護數據集中的敏感數據。數據細粒度的減少程度需要根據數據細膩度減少后對數據托管與數據分析造成的損失來決定。若一個等價類具有t-closeness則在此等價類中敏感數據屬性的分布與整個表的屬性分布的距離差值應該不超過閾值t。
表3為各種數據脫敏技術在保護程度、數據損失程度、計算開銷等方面的對比[6]。每種算法都有其優勢與劣勢,民航數據庫中隱私數據與其他商業數據不同,需要根據具體的民航數據特點來選擇不同的脫敏算法。
本文以民航信息系統的數據為研究對象,對民航信息系統中的VIP表、旅客數據表、行李數據表、配載數據表進行敏感數據的定義,并按照k-anonymity保護模型在敏感數據中劃分了標識符屬性與準標識符屬性。這些敏感數據均屬于非統計類敏感數據。對于統計類敏感數據,本文使用差分隱私來進行脫敏實驗。
本文對民航數據庫中的VIP表進行分析,確定了標識符為特殊旅客唯一ID、特殊旅客姓名,準標識符為單位、職務、艙位信息、座位號、隨行人數、警位等級、聯系人、聯系電話、備注、VIP等級、航班標識,如表4所示。因為敵手可以通過特殊旅客唯一ID、特殊旅客姓名找到VIP客戶,所以將這2個字段歸為標識符信息。通過分析旅客數據表中的數據,將旅客ID、ICS記錄信息、旅客證件號歸入標識符屬性。因為這些字段都是對某個用戶的唯一標識信息,如表5所示。通過同樣的方法,對行李數據表和配載數據表進行分析,得到表6和表7。

表3 數據脫敏技術對比

表4 VIP敏感數據

表5 旅客敏感數據

表6 行李敏感數據

表7 配載敏感數據
2.2.1 組合方法中的數據混淆技術
數據混淆技術可用于本文2.1中所定義的敏感數據中的數字與數值類型數據脫敏。給出混淆脫敏算法為
yi=xi×(1+r)+C
(5)
式中:xi,yi分別表示原始數據集和混淆數據集中對應的第i個實體;r表示隨機變量;C代表常數。敵手可以結合隨機混淆過程的知識,使用逆向工程技術來分析部分脫敏數據從而推斷出整個原始數據。使用式(5)對旅客ID進行脫敏,選擇隨機數r與常數C。對于隨機數r的選擇需要使xi×(1+r)的位數大于所規定的ID的最小長度并且小于ID的最大長度,常數C的長度也要保證在規定ID的長度內,在此例中xi×(1+r)的值要大于190億并且小于999億9 999萬9 999。表8為混淆處理后的旅客ID。

表8 可逆技術脫敏后旅客信息
在脫敏實驗中,可以使用具有可逆性的混淆技術,例如使用加密算法進行數據脫敏,也可以使用具有不可逆性的混淆技術,例如散列算法對數據進行脫敏。可逆性混淆技術一般用于保護一些完全不能被第三方所知道,但在將來會被民航單位重新利用的數據。不可逆數據用于保護一些完全不能被第三方所知道,且民航單位在將來也不需要利用的數據。表9為對旅客ID使用不可逆性的混淆技術中的安全散列算法(Secure Hash Algorithm 1,SHA-1)進行脫敏后所得到的結果。

表9 不可逆旅客信息
2.2.2 組合方法中的保形加密技術
保形加密適用于敏感數據中具有某些特定格式的數值與數字類型數據脫敏。使用這種方法,脫敏后的數據依然保持某種格式,從而可以讓數據更適合第三方的數據分析與托管。對表10中旅客ID使用1.3節中的Prefix方法脫敏,其結果如表11所示。

表10 旅客原始數據

表11 Prefix方法脫敏后旅客數據
在某些情況下要保證民航外包數據中身份證字段脫敏后與脫敏前格式不變。相較于其他數值型數據,這類數據處理更加復雜,處理過程的一個應用如表12所示,將一個出生日期為1988年12月21日的江蘇省揚州市寶應縣男性身份證號碼,轉換成一個出生日期為1970年01月05日四川省成都市錦江區男性身份證號碼。

表12 身份證字段的脫處理
身份證的預先處理過程可將身份證分為4段:第1段為前6位數字,表示行政區劃代碼,可以通過保形加密生成不同于原始數據的行政區劃代碼;第2段為第7位到第14位,表示對象出生年月日,脫敏過后的值要在合理范圍內,并考慮每個月中含有天數不同,是否為閏年;第3段中第15位到第16位為對同一天出生的人的編號,17位為性別編號,男生則分配奇數,女生則分配偶數;最后一段為校驗碼。通過保形加密對于每段數字進行合理變換,使最終脫敏后的身份證依然符合國家標準GB11643—1999。
2.2.3 組合方法中的匿名化技術
匿名化技術更加精確地劃分了敏感數據,根據2.1節中不同數據表定義出的標識符與準標識符,使用匿名化技術進行脫敏。表13、14為脫敏前民航信息系統數據庫中原始數據表中的部分數據,表15、16、17為脫敏后數據。VIP表中標識符特殊旅客唯一ID保留1位數。特殊旅客姓名只保留姓氏,刪除單位、職務、隨行人數,保留艙位信息等字段。航班標識保留前6位用于識別航空公司和飛機類型。旅客數據表中保留旅客ID前2位,因航班標識與VIP表中航班標識格式不同所以保留前5位航班標識。ICS記錄信息保留前2位,對于旅客證件號此處使用簡單的字段屏蔽方法保留前2位,也可以采用保形加密與其他方法來處理此字段。旅客數據表和行李數據表中脫敏操作與VIP表的脫敏操作相同。

表13 原始VIP數據

表14 原始配載數據

表15 脫敏后VIP數據

表16 脫敏后配載數據
在實際民航數據庫中使用匿名方法脫敏時可能存在某個等價類中某種數據類別較少的問題,敵手能夠通過一些其他信息將此用戶辨識出來,因此通過增加一些干擾記錄來降低屬性數據泄漏的風險。表16雖然滿足k-anonymity保護模型定義,但只有一條航班ID為22592*的記錄,導致該等價類中數據量較少,敵手只需要找到近期其他發布數據中航班ID為22592*的數據則可以很大概率確定此航班ID對應個體的詳細信息。將其他始發站和目的站作為此航班ID的干擾項插入表中來構造每個等價類符合l-diversity模型的數據集。表17為插入干擾數據形成滿足3-diversity的新配載數據表。

表17 滿足3-diversity的配載數據
2.2.4 組合方法中的差分隱私技術
差分隱私適用于具有統計特征的數據脫敏,例如平均旅客年齡、航空公司滿意度調查等。表18為差分隱私指數機制在民航數據脫敏中的應用。假設現有4個航空公司進行用戶滿意度調查,根據差分隱私指數機制,在給定隱私保護預算ε下可以計算出各項目的概率。ε值根據當前想要達到的保護級別來動態設定,ε越小保護級別越好,數據可用性越差,ε越大保護級別越低,數據可用性越高。對普通旅客滿意度調查結果使用差分隱私進行脫敏時建議讓ε接近于1;對于VIP旅客滿意度調查結果使用差分隱私進行脫敏時建議讓ε大于0.5且盡量接近0.5,這樣選擇ε可以使VIP旅客的數據得到更強的保護。

表18 指數機制在脫敏中的應用
本文對通用脫敏算法進行了介紹,定義了民航信息系統的敏感數據,對敏感數據中數字與數值類型采用混淆技術、加密技術進行脫敏實驗,并使用數據脫敏評價標準k-anonymity模型對本文所定義的敏感數據更加細致地劃分出標識符與準標識符。針對非統計類型敏感數據,可組合使用數據混淆技術中的可逆技術、不可逆技術,加密技術中的AES對稱加密技術、保形加密技術進行脫敏。針對身份證數據,給出了一種保形加密的思路與算法。對標識符與準標識符使用簡易的字段處理技術進行脫敏,并使實驗結果滿足匿名化模型。針對統計類的敏感數據,使用差分隱私技術來對數據進行脫敏。
實驗結果表明:若敏感數據需要被還原,則使用數據混淆技術中的線性變換;若敏感數據需要被還原且需要較高保護級別,則可以使用加密算法,例如AES;若數據需要較高保護級別且不需要被還原,直接使用假名替換、散列算法或直接刪除此字段等方法;若標識符字段中要求此數據脫敏后必須滿足某種格式,例如身份證信息,則可以使用保形加密,如表12中的身份證脫敏算法,此算法同樣可以推廣到其他需要保留格式的ID型數據的脫敏操作。
民用機場航班保障類核心系統敏感數據脫敏技術研究包含了影響脫敏效果的多項指標,但是受到可操作性限制,本文只使用了3萬條民航數據作為實驗數據。由于數據量偏小,有個別指標項的數據在實證研究時過于單一,在一定程度上可能對價值評估的結果產生影響,使得最終脫敏效果并不能最為理想。在未來研究中,筆者會增加數據量進行脫敏實驗從而對組合方法進行優化改進。