大數(shù)據(jù)隱私保護(hù)技術(shù)之脫敏技術(shù)
前言
這幾天學(xué)校開始選畢業(yè)設(shè)計(jì),選到了數(shù)據(jù)脫敏系統(tǒng)設(shè)計(jì)的題目,在閱讀了該方面的相關(guān)論文之后,感覺對(duì)大數(shù)據(jù)安全有了不少新的理解。
介紹
隨著大數(shù)據(jù)時(shí)代的到來,大數(shù)據(jù)中蘊(yùn)藏的巨大價(jià)值得以挖掘,同時(shí)也帶來了隱私信息保護(hù)方面的難題,即如何在實(shí)現(xiàn)大數(shù)據(jù)高效共享的同時(shí),保護(hù)敏感信息不被泄露。
數(shù)據(jù)安全是信息安全的重要一環(huán)。當(dāng)前,對(duì)數(shù)據(jù)安全的防護(hù)手段包括對(duì)稱/非對(duì)稱加密、數(shù)據(jù)脫敏、同態(tài)加密、訪問控制、安全審計(jì)和備份恢復(fù)等。他們對(duì)數(shù)據(jù)的保護(hù)各自有各自的特點(diǎn)和作用,今天我主要說數(shù)據(jù)脫敏這一防護(hù)手段。
許多組織在他們例行拷貝敏感數(shù)據(jù)或者常規(guī)生產(chǎn)數(shù)據(jù)到非生產(chǎn)環(huán)境中時(shí)會(huì)不經(jīng)意的泄露信息。例如:
1.大部分公司將生產(chǎn)數(shù)據(jù)拷貝到測(cè)試和開發(fā)環(huán)境中來允許系統(tǒng)管理員來測(cè)試升級(jí),更新和修復(fù)。
2.在商業(yè)上保持競(jìng)爭(zhēng)力需要新的和改進(jìn)后的功能。結(jié)果是應(yīng)用程序的開發(fā)者需要一個(gè)環(huán)境仿真來測(cè)試新功能從而確保已經(jīng)存在的功能沒有被破壞。
3.零售商將各個(gè)銷售點(diǎn)的銷售數(shù)據(jù)與市場(chǎng)調(diào)查員分享,從而分析顧客們的購物模式。
4.藥物或者醫(yī)療組織向調(diào)查員分享病人的數(shù)據(jù)來評(píng)估診斷效果和藥物療效。
結(jié)果他們拷貝到非生產(chǎn)環(huán)境中的數(shù)據(jù)就變成了黑客們的目標(biāo),非常容易被竊取或者泄露,從而造成難以挽回的損失。
數(shù)據(jù)脫敏就是對(duì)某些敏感信息通過脫敏規(guī)則進(jìn)行數(shù)據(jù)的變形,實(shí)現(xiàn)敏感隱私數(shù)據(jù)的可靠保護(hù)。在涉及客戶安全數(shù)據(jù)或者一些商業(yè)性敏感數(shù)據(jù)的情況下,在不違反系統(tǒng)規(guī)則條件下,對(duì)真實(shí)數(shù)據(jù)進(jìn)行改造并提供測(cè)試使用,如身份證號(hào)、手機(jī)號(hào)、卡號(hào)、客戶號(hào)等個(gè)人信息都需要進(jìn)行數(shù)據(jù)脫敏。
數(shù)據(jù)脫敏系統(tǒng)設(shè)計(jì)的難點(diǎn)
許多公司頁考慮到了這種威脅并且馬上著手來處理。簡(jiǎn)單的將敏感信息從非生產(chǎn)環(huán)境中移除看起來很容易,但是在很多方面還是很有挑戰(zhàn)的。
首先遇到的問題就是如何識(shí)別敏感數(shù)據(jù),敏感數(shù)據(jù)的定義是什么?有哪些依賴?應(yīng)用程序是十分復(fù)雜并且完整的。知道敏感信息在哪并且知道哪些數(shù)據(jù)參考了這些敏感數(shù)據(jù)是非常困難的。
敏感信息字段的名稱、敏感級(jí)別、字段類型、字段長度、賦值規(guī)范等內(nèi)容在這一過程中明確,用于下面脫敏策略制定的依據(jù)。
一旦敏感信息被確認(rèn),在保持應(yīng)用程序完整性的同時(shí)進(jìn)行脫敏的方法就是最重要的了。簡(jiǎn)單地修改數(shù)值可能會(huì)中斷正在測(cè)試,開發(fā)或升級(jí)的應(yīng)用程序。例如遮擋客戶地址的一部分,可能會(huì)使應(yīng)用程序變得不可用,開發(fā)或測(cè)試變得不可靠。
脫敏的過程就是一個(gè)在安全性和可用性之間平衡的過程。安全性是0%的系統(tǒng)中,數(shù)據(jù)不需要進(jìn)行脫敏,數(shù)據(jù)庫中都是原來的數(shù)據(jù),可用性當(dāng)然是100%;安全性是100%的系統(tǒng)中,大概所有的數(shù)據(jù)全都存一個(gè)相同的常量才能實(shí)現(xiàn)。
所以需要選擇或設(shè)計(jì)一種既能滿足第三方的要求,又能保證安全性的算法就變得特別重要了。
選定了敏感數(shù)據(jù)和要施加的算法,剩下的就是如何實(shí)現(xiàn)了,在什么過程中進(jìn)行脫敏呢?
難題的解決方案
1.如何識(shí)別敏感數(shù)據(jù)
現(xiàn)在有兩種方式來識(shí)別敏感數(shù)據(jù)。第一種是通過人工指定,比如通過正則來指定敏感數(shù)據(jù)的格式,Oracle公司開發(fā)的Oracle Data Masking Pack中就使用了這一種方法來指定。
第二種方式就是自動(dòng)識(shí)別了,在文獻(xiàn)[2]中,作者給出了基于數(shù)據(jù)特征學(xué)習(xí)以及自然語言處理等技術(shù)進(jìn)行敏感數(shù)據(jù)識(shí)別的自動(dòng)識(shí)別方案(沒有具體的實(shí)現(xiàn),只提出了模型)。
具體的實(shí)現(xiàn)在gayhub上找了一個(gè)java實(shí)現(xiàn)的工程,chlorine-finder,看了下源碼具體原理是通過提前預(yù)置的規(guī)則來識(shí)別一些常見的敏感數(shù)據(jù),比如信用卡號(hào),SSN, 手機(jī)號(hào),電子郵箱,IP地址,住址等.
2.使用怎樣的數(shù)據(jù)脫敏算法
在比較常見的數(shù)據(jù)脫敏系統(tǒng)中,算法的選擇一般是通過手工指定,像Oracal的數(shù)據(jù)脫敏包中就預(yù)設(shè)了關(guān)于信用卡的數(shù)據(jù)選擇什么算法進(jìn)行處理,關(guān)于電話的數(shù)據(jù)怎么處理,用戶也可以進(jìn)行自定義的配置。
脫敏方法現(xiàn)在有很多種,比如k-匿名,L多樣性,數(shù)據(jù)抑制,數(shù)據(jù)擾動(dòng),差分隱私等。
k-匿名:
匿名化原則是為了解決鏈接攻擊所造成的隱私泄露問題而提出的。鏈接攻擊是這樣的,一般企業(yè)因?yàn)槟承┰蚬_的數(shù)據(jù)都會(huì)進(jìn)行簡(jiǎn)單的處理,比如刪除姓名這一列,但是如果攻擊者通過對(duì)發(fā)布的數(shù)據(jù)和其他渠道獲得的信息進(jìn)行鏈接操作,就可以推理出隱私數(shù)據(jù)。
k-匿名是數(shù)據(jù)發(fā)布時(shí)保護(hù)私有信息的一種重要方法。 k-匿名技術(shù)是1998 年由Samarati和Sweeney提出的 ,它要求發(fā)布的數(shù)據(jù)中存在至少為k的在準(zhǔn)標(biāo)識(shí)符上不可區(qū)分的記錄,使攻擊者不能判別出隱私信息所屬的具體個(gè)體,從而保護(hù)了個(gè)人隱私, k-匿名通過參數(shù)k指定用戶可承受的最大信息泄露風(fēng)險(xiǎn)。
但容易遭受同質(zhì)性攻擊和背景知識(shí)攻擊。
L-多樣性
L多樣性是在k-匿名的基礎(chǔ)上提出的,外加了一個(gè)條件就是同一等價(jià)類中的記錄至少有L個(gè)“較好表現(xiàn)”的值,使得隱私泄露風(fēng)險(xiǎn)不超過 1/L,”較好表現(xiàn)“的意思有多種設(shè)計(jì),比如這幾個(gè)值不同,或者信息熵至少為logL等等..
但容易收到相似性攻擊。
數(shù)據(jù)抑制
數(shù)據(jù)抑制又稱為隱匿,是指用最一般化的值取代原始屬性值,在k-匿名化中,若無法滿足k-匿名要求,則一般采取抑制操作,被抑制的值要不從數(shù)據(jù)表中刪除,要不相應(yīng)屬性值用“ ** ”表示。
- >>> s = "CREDITCARD">>> s[-4:].rjust(len(s), "*")'******CARD'
數(shù)據(jù)擾動(dòng)
數(shù)據(jù)擾動(dòng)是通過對(duì)數(shù)據(jù)的擾動(dòng)變形使數(shù)據(jù)變得模糊來隱藏敏感的數(shù)據(jù)或規(guī)則,即將數(shù)據(jù)庫 D 變形為一個(gè)新的數(shù)據(jù)庫 D′ 以供研究者或企業(yè)查詢使用,這樣諸如個(gè)人信 息等敏感的信息就不會(huì)被泄露。通常,D′ 會(huì)和 D 很相似,從 D′ 中可以挖掘出和 D 相同的信息。這種方法通過修改原始數(shù)據(jù),使得敏感性信息不能與初始的對(duì)象聯(lián)系起來或使得敏感性信息不復(fù)存在,但數(shù)據(jù)對(duì)分析依然有效。
Python中可以使用faker庫來進(jìn)行數(shù)據(jù)的模擬和偽造。
- from faker import Factory
- fake = Factory.create()
- fake.country_code()# 'GE'fake.city_name()# '貴陽'fake.street_address()# '督路l座'fake.address()# '輝市哈路b座 176955'fake.state()# '南溪區(qū)'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()# '姜路'
相關(guān)技術(shù)有:一般化與刪除,隨機(jī)化,數(shù)據(jù)重構(gòu),數(shù)據(jù)凈化,阻礙,抽樣等。
差分隱私
差分隱私應(yīng)該是現(xiàn)在比較火的一種隱私保護(hù)技術(shù)了,是基于數(shù)據(jù)失真的隱私保護(hù)技術(shù),采用添加噪聲的技術(shù)使敏感數(shù)據(jù)失真但同時(shí)保持某些數(shù)據(jù)或數(shù)據(jù)屬性不變,要求保證處理后的數(shù)據(jù)仍然可以保持某些統(tǒng)計(jì)方 面的性質(zhì),以便進(jìn)行數(shù)據(jù)挖掘等操作。
差分隱私保護(hù)可以保證,在數(shù)據(jù)集中添加或刪除一條數(shù)據(jù)不會(huì)影響到查詢輸出結(jié)果,因此即使在最壞情況下,攻擊者已知除一條記錄之外的所有敏感數(shù)據(jù),仍可以保證這一條記錄的敏感信息不會(huì)被泄露。
想要體驗(yàn)的同學(xué)可以去Havard的Differential Privacy實(shí)驗(yàn)室,他們做了一個(gè)DP的原型實(shí)現(xiàn).
想要詳細(xì)了解的同學(xué)可以看一下知乎上的這個(gè)問題 <點(diǎn)擊文末閱讀原文查看鏈接>
關(guān)于動(dòng)態(tài)脫敏系統(tǒng)的實(shí)現(xiàn),現(xiàn)在一般有兩種,一種是重寫數(shù)據(jù)庫程序代碼,在權(quán)限判決后對(duì)請(qǐng)求語句進(jìn)行重寫,從而查詢數(shù)據(jù);另一種是用戶的sql語句通過代理后,代理會(huì)對(duì)其中關(guān)于敏感信息的部分進(jìn)行語句的替換,并且在返回時(shí)會(huì)重新包裝為與原請(qǐng)求一致的格式交給用戶。
總結(jié)
經(jīng)過上面的分析,看來實(shí)現(xiàn)一個(gè)全自動(dòng)的準(zhǔn)確率高的脫敏系統(tǒng)難度相當(dāng)大啊,希望自己能夠圓滿完成任務(wù)。