天天看點

大資料隐私保護技術之脫敏技術

大資料隐私保護技術之脫敏技術

前言

這幾天學校開始選畢業設計,選到了資料脫敏系統設計的題目,在閱讀了該方面的相關論文之後,感覺對大資料安全有了不少新的了解。

介紹

随着大資料時代的到來,大資料中蘊藏的巨大價值得以挖掘,同時也帶來了隐私資訊保護方面的難題,即如何在實作大資料高效共享的同時,保護敏感資訊不被洩露。

資料安全是資訊安全的重要一環。目前,對資料安全的防護手段包括對稱/非對稱加密、資料脫敏、同态加密、通路控制、安全審計和備份恢複等。他們對資料的保護各自有各自的特點和作用,今天我主要說資料脫敏這一防護手段。

許多組織在他們例行拷貝敏感資料或者正常生産資料到非生産環境中時會不經意的洩露資訊。例如:

1.大部分公司将生産資料拷貝到測試和開發環境中來允許系統管理者來測試更新,更新和修複。

2.在商業上保持競争力需要新的和改進後的功能。結果是應用程式的開發者需要一個環境仿真來測試新功能進而確定已經存在的功能沒有被破壞。

3.零售商将各個銷售點的銷售資料與市場調查員分享,進而分析顧客們的購物模式。

4.藥物或者醫療組織向調查員分享病人的資料來評估診斷效果和藥物療效。

結果他們拷貝到非生産環境中的資料就變成了黑客們的目标,非常容易被竊取或者洩露,進而造成難以挽回的損失。

資料脫敏就是對某些敏感資訊通過脫敏規則進行資料的變形,實作敏感隐私資料的可靠保護。在涉及客戶安全資料或者一些商業性敏感資料的情況下,在不違反系統規則條件下,對真實資料進行改造并提供測試使用,如身份證号、手機号、卡号、客戶号等個人資訊都需要進行資料脫敏。

資料脫敏系統設計的難點

許多公司頁考慮到了這種威脅并且馬上着手來處理。簡單的将敏感資訊從非生産環境中移除看起來很容易,但是在很多方面還是很有挑戰的。

首先遇到的問題就是如何識别敏感資料,敏感資料的定義是什麼?有哪些依賴?應用程式是十分複雜并且完整的。知道敏感資訊在哪并且知道哪些資料參考了這些敏感資料是非常困難的。

敏感資訊字段的名稱、敏感級别、字段類型、字段長度、指派規範等内容在這一過程中明确,用于下面脫敏政策制定的依據。

一旦敏感資訊被确認,在保持應用程式完整性的同時進行脫敏的方法就是最重要的了。簡單地修改數值可能會中斷正在測試,開發或更新的應用程式。例如遮擋客戶位址的一部分,可能會使應用程式變得不可用,開發或測試變得不可靠。

脫敏的過程就是一個在安全性和可用性之間平衡的過程。安全性是0%的系統中,資料不需要進行脫敏,資料庫中都是原來的資料,可用性當然是100%;安全性是100%的系統中,大概所有的資料全都存一個相同的常量才能實作。

是以需要選擇或設計一種既能滿足第三方的要求,又能保證安全性的算法就變得特别重要了。

標明了敏感資料和要施加的算法,剩下的就是如何實作了,在什麼過程中進行脫敏呢?

難題的解決方案

1.如何識别敏感資料

現在有兩種方式來識别敏感資料。第一種是通過人工指定,比如通過正則來指定敏感資料的格式,oracle公司開發的oracle data masking pack中就使用了這一種方法來指定。

大資料隐私保護技術之脫敏技術

第二種方式就是自動識别了,在文獻[2]中,作者給出了基于資料特征學習以及自然語言處理等技術進行敏感資料識别的自動識别方案(沒有具體的實作,隻提出了模型)。

具體的實作在gayhub上找了一個java實作的工程,chlorine-finder,看了下源碼具體原理是通過提前預置的規則來識别一些常見的敏感資料,比如信用卡号,ssn, 手機号,電子郵箱,ip位址,住址等.

2.使用怎樣的資料脫敏算法

在比較常見的資料脫敏系統中,算法的選擇一般是通過手工指定,像oracal的資料脫敏包中就預設了關于信用卡的資料選擇什麼算法進行處理,關于電話的資料怎麼處理,使用者也可以進行自定義的配置。

大資料隐私保護技術之脫敏技術

脫敏方法現在有很多種,比如k-匿名,l多樣性,資料抑制,資料擾動,差分隐私等。

k-匿名:

匿名化原則是為了解決連結攻擊所造成的隐私洩露問題而提出的。連結攻擊是這樣的,一般企業因為某些原因公開的資料都會進行簡單的處理,比如删除姓名這一列,但是如果攻擊者通過對釋出的資料和其他管道獲得的資訊進行連結操作,就可以推理出隐私資料。

大資料隐私保護技術之脫敏技術

k-匿名是資料釋出時保護私有資訊的一種重要方法。 k-匿名技術是1998 年由samarati和sweeney提出的 ,它要求釋出的資料中存在至少為k的在準辨別符上不可區分的記錄,使攻擊者不能判别出隐私資訊所屬的具體個體,進而保護了個人隐私, k-匿名通過參數k指定使用者可承受的最大資訊洩露風險。

但容易遭受同質性攻擊和背景知識攻擊。

l-多樣性

l多樣性是在k-匿名的基礎上提出的,外加了一個條件就是同一等價類中的記錄至少有l個“較好表現”的值,使得隐私洩露風險不超過 1/l,”較好表現“的意思有多種設計,比如這幾個值不同,或者資訊熵至少為logl等等..

但容易收到相似性攻擊。

資料抑制

資料抑制又稱為隐匿,是指用最一般化的值取代原始屬性值,在k-匿名化中,若無法滿足k-匿名要求,則一般采取抑制操作,被抑制的值要不從資料表中删除,要不相應屬性值用“ ** ”表示。

>>> s = "creditcard">>> s[-4:].rjust(len(s), "*")'******card' 

資料擾動

資料擾動是通過對資料的擾動變形使資料變得模糊來隐藏敏感的資料或規則,即将資料庫 d 變形為一個新的資料庫 d′ 以供研究者或企業查詢使用,這樣諸如個人信 息等敏感的資訊就不會被洩露。通常,d′ 會和 d 很相似,從 d′ 中可以挖掘出和 d 相同的資訊。這種方法通過修改原始資料,使得敏感性資訊不能與初始的對象聯系起來或使得敏感性資訊不複存在,但資料對分析依然有效。

python中可以使用faker庫來進行資料的模拟和僞造。

from faker import factory 

fake = factory.create() 

fake.country_code()# 'ge'fake.city_name()# '貴陽'fake.street_address()# '督路l座'fake.address()# '輝市哈路b座 176955'fake.state()# '南溪區'fake.longitude()# decimal('-163.645749')fake.geo_coordinate(center=none, radius=0.001)# decimal('90.252375')fake.city_suffix()# '市'fake.latitude()# decimal('-4.0682855')fake.postcode()# '353686'fake.building_number()# 'o座'fake.country()# '維爾京群島'fake.street_name()# '姜路' 

相關技術有:一般化與删除,随機化,資料重構,資料淨化,阻礙,抽樣等。

差分隐私

差分隐私應該是現在比較火的一種隐私保護技術了,是基于資料失真的隐私保護技術,采用添加噪聲的技術使敏感資料失真但同時保持某些資料或資料屬性不變,要求保證處理後的資料仍然可以保持某些統計方 面的性質,以便進行資料挖掘等操作。

差分隐私保護可以保證,在資料集中添加或删除一條資料不會影響到查詢輸出結果,是以即使在最壞情況下,攻擊者已知除一條記錄之外的所有敏感資料,仍可以保證這一條記錄的敏感資訊不會被洩露。

想要體驗的同學可以去havard的differential privacy實驗室,他們做了一個dp的原型實作.

想要詳細了解的同學可以看一下知乎上的這個問題 <點選文末閱讀原文檢視連結>

關于動态脫敏系統的實作,現在一般有兩種,一種是重寫資料庫程式代碼,在權限判決後對請求語句進行重寫,進而查詢資料;另一種是使用者的sql語句通過代理後,代理會對其中關于敏感資訊的部分進行語句的替換,并且在傳回時會重新包裝為與原請求一緻的格式交給使用者。

總結

經過上面的分析,看來實作一個全自動的準确率高的脫敏系統難度相當大啊,希望自己能夠圓滿完成任務。

本文作者:佚名

來源:51cto