如何保護(hù)數(shù)據(jù)平臺的隱私數(shù)據(jù)?
作者 | 楊林山
一、前言
去年12月20日,某知名汽車品牌發(fā)生了數(shù)據(jù)泄露事件,而且泄露的數(shù)據(jù)包含用戶個(gè)人隱私數(shù)據(jù),也包含了公司的運(yùn)營銷售信息等商業(yè)機(jī)密數(shù)據(jù)。泄露的個(gè)人隱私信息將用戶暴露于短信、電話騷擾甚至電信詐騙的危害之下,同時(shí)也造成了用戶對企業(yè)的信任危機(jī),企業(yè)也將會面臨監(jiān)管的調(diào)查。
而在不久之前的12月13號,“通信行程卡”小程序下線后,各大通信運(yùn)營商隨即發(fā)布了刪除相關(guān)數(shù)據(jù)的通告。通信行程碼中保存了個(gè)人身份信息和個(gè)人行程信息等敏感隱私數(shù)據(jù)。如果因?yàn)樵摂?shù)據(jù)的泄露,很可能會導(dǎo)致一些電信詐騙案件出現(xiàn),對個(gè)人危害極大。業(yè)務(wù)下線后,運(yùn)營商通過刪除了個(gè)人信息來保護(hù)廣大市民的敏感信息。
隨著信息安全攻擊的頻繁發(fā)生,任何企業(yè)都面臨潛在數(shù)據(jù)泄露安全事件的風(fēng)險(xiǎn)。通過一些簡單的隱私數(shù)據(jù)保護(hù)措施,可以降低發(fā)生數(shù)據(jù)泄露事件的可能性,或者在發(fā)生數(shù)據(jù)泄露事件時(shí),減少其危害性。
本文先簡要介紹一下隱私數(shù)據(jù)保護(hù)基本知識,然后再介紹在數(shù)據(jù)平臺中不同場景下應(yīng)用對應(yīng)的數(shù)據(jù)保護(hù)措施。
二、為什么需要保護(hù)隱私數(shù)據(jù)?
處理個(gè)人數(shù)據(jù)的私密和安全非常重要,原因有兩個(gè)。一是遵守?cái)?shù)據(jù)隱私法律和規(guī)定。在大多數(shù)國家和地區(qū),都有嚴(yán)格的法律保護(hù)個(gè)人隱私。這些法律規(guī)定了如何收集、使用和儲存?zhèn)€人數(shù)據(jù),并規(guī)定了違反這些規(guī)定的后果。負(fù)責(zé)處理個(gè)人數(shù)據(jù)有助于遵守這些法律和規(guī)定,避免違反法律的后果。另一個(gè)原因是數(shù)據(jù)泄露事件會給企業(yè)帶來嚴(yán)重的信任危機(jī)和經(jīng)濟(jì)成本。數(shù)據(jù)泄露會導(dǎo)致客戶和利益相關(guān)者的信任危機(jī),并可能導(dǎo)致昂貴的罰款和法律程序。
1.什么是隱私數(shù)據(jù)?
第一類隱私數(shù)據(jù)是PII。PII(Personally Identifiable Information)是指與個(gè)人身份相關(guān)的信息。這些信息包括姓名、電話號碼、郵箱地址、社會安全號碼、銀行賬號信息等,這些信息可以直接或結(jié)合其他信息用于識別某個(gè)特定個(gè)人。
第二類隱私數(shù)據(jù)是與個(gè)人相關(guān)的信息,但不屬于PII。這包括個(gè)人的興趣愛好、性格、活動(dòng)和信仰、個(gè)人的行程信息、健康信息等。
第三類隱私數(shù)據(jù)是個(gè)人、企業(yè)或組織的專有且保密的信息。通常,與商業(yè)性質(zhì)有關(guān)或與合同有關(guān)的數(shù)據(jù)被認(rèn)為是敏感的,泄露這類數(shù)據(jù)往往會影響商業(yè)運(yùn)營或面臨法律風(fēng)險(xiǎn)。
2.如何識別隱私數(shù)據(jù)?
對于數(shù)據(jù)工程團(tuán)隊(duì),一般來說沒有統(tǒng)一的敏感信息的標(biāo)準(zhǔn)。不同的地區(qū),不同的行業(yè)有不同的規(guī)定和法律。不同的公司對隱私數(shù)據(jù)的定義都不一樣。在企業(yè)內(nèi),一般需要遵守?cái)?shù)據(jù)治理團(tuán)隊(duì)、數(shù)據(jù)隱私團(tuán)隊(duì)或者企業(yè)安全團(tuán)隊(duì)建立的數(shù)據(jù)安全框架和安全策略。
此外我們還可以基于一些隱私掃描工具來檢測數(shù)據(jù)中可能存在的隱私風(fēng)險(xiǎn),比如微軟開源的Microsoft Presidio。甚至云廠商們都不斷推出隱私數(shù)據(jù)保護(hù)相關(guān)的安全產(chǎn)品來識別隱私數(shù)據(jù)的合規(guī)性風(fēng)險(xiǎn)。
3.怎么保護(hù)隱私數(shù)據(jù)?
對于保護(hù)隱私數(shù)據(jù)的關(guān)鍵技術(shù)有數(shù)據(jù)脫敏、匿名化,此外還有隱私計(jì)算和數(shù)據(jù)合成。
處理隱私數(shù)據(jù)時(shí)需要考慮兩個(gè)基本的要求:
- 數(shù)據(jù)保密性:需要保證潛在的數(shù)據(jù)泄露事件發(fā)生后,攻擊者無法獲取到敏感信息。
- 數(shù)據(jù)可用性:保證被處理后的數(shù)據(jù),仍然保持某些統(tǒng)計(jì)特性或者業(yè)務(wù)含義,在某些業(yè)務(wù)場景中是可用的。
這兩個(gè)指標(biāo)是矛盾的,我們需要根據(jù)實(shí)際的業(yè)務(wù)需求和安全需求來調(diào)節(jié)和平衡。
(1) 數(shù)據(jù)脫敏 (Data Masking)
數(shù)據(jù)脫敏,也叫假名化(Pseudonymous),通過用虛假信息替換PII信息或者對敏感信息進(jìn)行加密來實(shí)現(xiàn)對隱私數(shù)據(jù)的。大部分脫敏技術(shù)處理過后數(shù)據(jù)不可逆,即沒辦法還原成原文。
數(shù)據(jù)脫敏
常見數(shù)據(jù)脫敏方法
脫敏后的數(shù)據(jù)不再包含PII信息但是仍然屬于個(gè)人信息的范疇,受大部分?jǐn)?shù)據(jù)安全保護(hù)法律法規(guī)保護(hù)。某些場景下,攻擊者可以通過結(jié)合外部數(shù)據(jù)來確定個(gè)人。例如當(dāng)我們能把某位職員的公司信息和職位信息和脫敏后的個(gè)人數(shù)據(jù)結(jié)合在一起,那么幾乎可以確認(rèn)這個(gè)人的身份。
與外部關(guān)聯(lián)數(shù)據(jù)結(jié)合后,數(shù)據(jù)脫敏后仍不是完全安全
(2) 匿名化(Anonymous)
數(shù)據(jù)匿名通過完全消除PII信息來保護(hù)數(shù)據(jù)的隱私。數(shù)據(jù)匿名化的目的是使數(shù)據(jù)集中的個(gè)人身份信息不能被確定,從而使數(shù)據(jù)更加安全。匿名化的數(shù)據(jù)通常不再屬于個(gè)人信息的范疇,因此也不受大部分個(gè)人數(shù)據(jù)保護(hù)相關(guān)的法律法規(guī)的限制。
常見的匿名化的技術(shù)方法有:
- 數(shù)據(jù)刪除:從數(shù)據(jù)中刪除某些字段,以此來消除數(shù)據(jù)中的個(gè)人身份信息。
- 數(shù)據(jù)隨機(jī)化:對數(shù)據(jù)進(jìn)行隨機(jī)處理,以此來消除數(shù)據(jù)中的個(gè)人身份信息。
- 數(shù)據(jù)泛化、K匿名:將數(shù)據(jù)中的個(gè)人身份信息替換為區(qū)間值來保護(hù)個(gè)人隱私,同時(shí)也能保留一些數(shù)據(jù)價(jià)值。
數(shù)據(jù)匿名化
數(shù)據(jù)匿名化的好處有:
- 更安全地保護(hù)個(gè)人隱私數(shù)據(jù)數(shù)據(jù)泄漏發(fā)生后對個(gè)人造成的危害性是較小的
- 更安全地進(jìn)行數(shù)據(jù)協(xié)作和共享
- 沒有了法律法規(guī)上對個(gè)人信息數(shù)據(jù)使用的限制
匿名化后的數(shù)據(jù)帶來數(shù)據(jù)安全的同時(shí)也會降低數(shù)據(jù)質(zhì)量和數(shù)據(jù)可用性。匿名化的數(shù)據(jù)也不是絕對安全的。
(3) 其他技術(shù)
除了最基本的隱私數(shù)據(jù)處理技術(shù)外,還有一些在快速發(fā)展的隱私數(shù)據(jù)保護(hù)技術(shù)。
隱私計(jì)算是一種技術(shù),旨在保護(hù)數(shù)據(jù)的隱私和安全,同時(shí)允許在不泄露原始數(shù)據(jù)的情況下進(jìn)行數(shù)據(jù)處理和分析。它通過在受信任的執(zhí)行環(huán)境中進(jìn)行數(shù)據(jù)處理來實(shí)現(xiàn)這一目的,以便在數(shù)據(jù)處理完成后將結(jié)果返回給請求方。
合成數(shù)據(jù)是人為生成的數(shù)據(jù),而不是由真實(shí)世界事件產(chǎn)生的數(shù)據(jù)。它通常使用算法生成,可用于驗(yàn)證數(shù)學(xué)模型和訓(xùn)練機(jī)器學(xué)習(xí)模型。合成數(shù)據(jù)可以幫助保護(hù)原始數(shù)據(jù)的隱私,因?yàn)樗皇钦鎸?shí)的個(gè)人信息。
三、數(shù)據(jù)平臺隱私數(shù)據(jù)保護(hù)實(shí)踐
1.數(shù)據(jù)平臺隱私數(shù)據(jù)保護(hù)架構(gòu)
數(shù)據(jù)平臺接收上游數(shù)據(jù)源中各種數(shù)據(jù),其中包括大量的用戶和雇員的個(gè)人信息,以及公司運(yùn)營、財(cái)務(wù)等機(jī)密信息。同時(shí),數(shù)據(jù)平臺中會有數(shù)據(jù)工程師、數(shù)據(jù)分析師和數(shù)據(jù)科學(xué)家使用這些數(shù)據(jù)。作為企業(yè)數(shù)據(jù)集中采集、處理和共享的平臺,數(shù)據(jù)泄露發(fā)生的風(fēng)險(xiǎn)和危害程度都很高。
因此,數(shù)據(jù)平臺和數(shù)據(jù)倉庫承擔(dān)著隱私數(shù)據(jù)保護(hù)的重要責(zé)任。為了降低在數(shù)據(jù)平臺中發(fā)生數(shù)據(jù)泄露的可能性和危害性,數(shù)據(jù)平臺需要應(yīng)用數(shù)據(jù)脫敏、數(shù)據(jù)加密等隱私數(shù)據(jù)保護(hù)技術(shù)。架構(gòu)上,數(shù)據(jù)在數(shù)據(jù)平臺中生命周期中的不同階段會采取數(shù)據(jù)脫敏、數(shù)據(jù)加密等方式來構(gòu)建端到端內(nèi)建隱私數(shù)據(jù)保護(hù)的企業(yè)數(shù)據(jù)管道。
在基礎(chǔ)設(shè)施上:
- 業(yè)務(wù)平臺和數(shù)據(jù)平臺均使用了HashiCorp Vault作為安全管理和訪問密鑰的基礎(chǔ)設(shè)施
在數(shù)據(jù)源上:
- RDS中的數(shù)據(jù)一般依賴于上游業(yè)務(wù)系統(tǒng)的數(shù)據(jù)保護(hù)措施,數(shù)據(jù)平臺很難進(jìn)行預(yù)先干預(yù)。
- 數(shù)據(jù)平臺運(yùn)維的對象存儲AWS S3 Buckets,一般會讓上游業(yè)務(wù)系統(tǒng)放入文件級別加密后的文件。對于非技術(shù)用戶采用AWS KMS對S3 Buckets進(jìn)行數(shù)據(jù)加密。
在數(shù)據(jù)倉庫中:
- 數(shù)據(jù)集成工具支持對行級別的加密和數(shù)據(jù)脫敏等操作,對于PII信息數(shù)據(jù)需要脫敏后或者加密后存儲到數(shù)據(jù)倉庫中。加密和數(shù)據(jù)脫敏所需要的加密密鑰和密碼學(xué)算法的參數(shù),數(shù)據(jù)集成工具會從Vault的KV Secret Engine進(jìn)行讀取。
- 數(shù)據(jù)倉庫內(nèi)部通過創(chuàng)建Masking Policy來實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)脫敏。針對不同角色的查詢操作員進(jìn)行不同程度的數(shù)據(jù)遮蔽。
- 當(dāng)下游的業(yè)務(wù)系統(tǒng)需要PII數(shù)據(jù)支持時(shí),我們會在數(shù)據(jù)導(dǎo)出時(shí)對PII字段進(jìn)行解密,再通過密碼學(xué)算法使用數(shù)據(jù)平臺的私鑰和下游數(shù)據(jù)消費(fèi)方的公鑰對解密后的數(shù)據(jù)進(jìn)行字段級別或者文件級別的加密,再寫入到數(shù)據(jù)倉庫應(yīng)用層的數(shù)據(jù)集市中或者AWS S3 Buckets的文件中。
數(shù)據(jù)平臺隱私數(shù)據(jù)保護(hù)架構(gòu)
2.數(shù)據(jù)脫敏(Data Masking):避免暴露敏感信息
數(shù)據(jù)脫敏的目的是避免暴露敏感信息給大部分?jǐn)?shù)據(jù)消費(fèi)方。
在數(shù)據(jù)平臺中,數(shù)據(jù)脫敏主要有兩種實(shí)現(xiàn)方式:
- 靜態(tài)脫敏:通過數(shù)據(jù)脫敏技術(shù),將生產(chǎn)數(shù)據(jù)脫敏后導(dǎo)出到目標(biāo)的存儲中,被存儲的數(shù)據(jù)已經(jīng)改變了信息內(nèi)容。
- 動(dòng)態(tài)脫敏:通過準(zhǔn)確地解析SQL語句匹配脫敏條件,在匹配成功后,改寫查詢語句或者返回?cái)?shù)據(jù),將脫敏后的數(shù)據(jù)返回。
靜態(tài)脫敏實(shí)現(xiàn)方式主要是在數(shù)據(jù)管道中內(nèi)建數(shù)據(jù)脫敏。我們可以在數(shù)據(jù)集成工具中內(nèi)建脫敏功能,使數(shù)據(jù)在進(jìn)入數(shù)據(jù)倉庫后就已經(jīng)是脫敏數(shù)據(jù)。動(dòng)態(tài)脫敏主要基于數(shù)據(jù)庫系統(tǒng)或者云數(shù)據(jù)倉庫的RBAC機(jī)制和內(nèi)建的數(shù)據(jù)脫敏功能,通過針對特定操作角色和數(shù)據(jù)列創(chuàng)建脫敏規(guī)則,在數(shù)據(jù)被查詢時(shí),執(zhí)行引擎會根據(jù)查詢上下文來決定返回的數(shù)據(jù)是源文本還是脫敏后的值。
動(dòng)態(tài)脫敏更為靈活,能輕松應(yīng)對數(shù)據(jù)安全需求的變化,但需要數(shù)據(jù)庫查詢引擎支持。靜態(tài)脫敏實(shí)現(xiàn)上更為簡單,但當(dāng)數(shù)據(jù)安全需求變化時(shí),我們通常也需要完全重建數(shù)據(jù)倉庫相關(guān)數(shù)據(jù)模型。
例如在Snowflake云數(shù)據(jù)倉庫中,我們可以設(shè)立如下規(guī)則對email列進(jìn)行動(dòng)態(tài)脫敏。當(dāng)數(shù)據(jù)倉庫用戶角色為數(shù)據(jù)分析師的時(shí)候返回源文本,而其他角色查詢返回完全屏蔽的值。
3.數(shù)據(jù)加密(Data Encryption):安全數(shù)據(jù)分享
與數(shù)據(jù)脫敏不同,數(shù)據(jù)加密的主要目標(biāo)是共享數(shù)據(jù)給授權(quán)過的可信方。
處理加密時(shí)需要考慮的問題:
- 如何管理加密密鑰,如何保證密鑰安全地和其他系統(tǒng)集成?
- 多個(gè)實(shí)體之間安全地共享加密密鑰?
對于問題1,我們選擇了開源的密鑰管理系統(tǒng)HashiCorp Vault。Hashicorp Vault是一個(gè)用于管理和保護(hù)機(jī)密信息的工具。它允許用戶存儲,管理和控制對機(jī)密信息的訪問。機(jī)密信息可以是密碼,API密鑰,證書或其他敏感信息。Vault可以很好地和Kubernetes結(jié)合,我們可以安全地在應(yīng)用Pod啟動(dòng)時(shí)將機(jī)密信息注入到Pod中。此外,Vault還可以動(dòng)態(tài)生成或者定期刷新數(shù)據(jù)庫憑證,避免數(shù)據(jù)庫密碼泄露風(fēng)險(xiǎn)。
對于問題2,我們選擇了AES-256-GCM作為數(shù)據(jù)加密的算法同時(shí)使用ECDH算法來交換兩個(gè)實(shí)體的公鑰來創(chuàng)建共享AES-256-GCM的加密密鑰,來保證加密密鑰的安全性。
ECDH圖示
ECDH(Elliptic Curve Diffie–Hellman Key Exchange)算法過程如下圖:
- Alice和Bob通過ECC算法創(chuàng)建各自的公私鑰對,需采用相同的橢圓曲線。
- Alice和Bob互相交換公鑰。
- Alice計(jì)算加密密鑰 = Bob公鑰 * Alice私鑰
- Bob計(jì)算加密密鑰 = Alice公鑰 * Bob私鑰
- Alice和Bob的加密密鑰是相等的,Alice加密的數(shù)據(jù),Bob也能解密。
使用OpenSSL命令行工具實(shí)現(xiàn)該過程。
端到端隱私數(shù)據(jù)加密解密過程如下:
- PII隱私數(shù)據(jù)加密后進(jìn)入數(shù)據(jù)倉庫,加密密鑰是數(shù)據(jù)平臺自己維護(hù)的密鑰,從Vault中讀取
- 數(shù)據(jù)倉庫中存在的是密文數(shù)據(jù),下游數(shù)據(jù)需要PII信息時(shí),使用特定下游數(shù)據(jù)使用方的公鑰和數(shù)據(jù)平臺私鑰生成共享加密密鑰對數(shù)據(jù)文件進(jìn)行加密,這樣只有該下游數(shù)據(jù)使用方才能解密數(shù)據(jù)。
- 下游去訪問或者接收到加密后的數(shù)據(jù)文件后,再用數(shù)據(jù)平臺的公鑰和該系統(tǒng)的私鑰生成共享加密密鑰對數(shù)據(jù)文件進(jìn)行解密。當(dāng)下游數(shù)據(jù)使用方無需給數(shù)據(jù)平臺共享數(shù)據(jù)時(shí),我們可以在加密文件時(shí),運(yùn)行時(shí)生成一組新的公私鑰對,在數(shù)據(jù)文件中嵌入公鑰和相關(guān)密碼學(xué)參數(shù)。這樣只要雙方保持一致的加解密協(xié)議,下游在確保隱私數(shù)據(jù)的獲取和使用的同時(shí),數(shù)據(jù)平臺方人員也不能解密數(shù)據(jù)文件,進(jìn)一步減少了數(shù)據(jù)泄露的風(fēng)險(xiǎn)。
數(shù)據(jù)管道中加密過程
業(yè)務(wù)系統(tǒng)中解密過程
4.數(shù)據(jù)哈希(Data Hashing):跨數(shù)據(jù)域隱私數(shù)據(jù)關(guān)聯(lián)
有些場景期望與外部數(shù)據(jù)域的數(shù)據(jù)進(jìn)行數(shù)據(jù)融合和數(shù)據(jù)共享時(shí),通常需要通過個(gè)人隱私信息或者其他敏感信息將雙方數(shù)據(jù)域的數(shù)據(jù)關(guān)聯(lián)在一起。同時(shí)在數(shù)據(jù)傳輸、處理和存儲的過程中不期望暴露隱私信息。此時(shí),我們可以利用數(shù)據(jù)哈希的特性來實(shí)現(xiàn)跨數(shù)據(jù)域的隱私數(shù)據(jù)關(guān)聯(lián)。
跨數(shù)據(jù)域隱私數(shù)據(jù)關(guān)聯(lián)
圖中場景存在三個(gè)數(shù)據(jù)域,數(shù)據(jù)平臺所屬公司B,母公司A和合作公司C,其隱私數(shù)據(jù)關(guān)聯(lián)過程如下:
- 母公司A選擇哈希算法Hashing(H1)和鹽值SaltA計(jì)算得到ID信息的哈希值ID_NUMBER_A_HASHED,提供給數(shù)據(jù)平臺。
- 合作公司C選擇哈希算法Hashing(H1)和鹽值SaltC計(jì)算得到ID信息的哈希值ID_NUMBER_C_HASHED,提供給數(shù)據(jù)平臺。
- 數(shù)據(jù)平臺公司B為了完全考慮,先對ID_NUMBER進(jìn)行加密。
- 經(jīng)過數(shù)據(jù)管道接入數(shù)據(jù)時(shí),數(shù)據(jù)平臺先對ID_NUMBER進(jìn)行解密,再根據(jù)不同公司的哈希算法和鹽值分別計(jì)算出對應(yīng)的相等的哈希值。
- 在數(shù)據(jù)進(jìn)入數(shù)據(jù)平臺之前,再次采用不同的哈希算法進(jìn)行一次哈希,將得到的哈希值存入數(shù)據(jù)倉庫中。避免數(shù)據(jù)平臺和數(shù)據(jù)域中采用相同哈希算法導(dǎo)致可能存在的哈希字典攻擊。
- 數(shù)據(jù)倉庫里就可以通過不同數(shù)據(jù)域隱私信息的哈希值進(jìn)行數(shù)據(jù)關(guān)聯(lián),獲取來源于各個(gè)數(shù)據(jù)域的共享數(shù)據(jù)(Payload)。
四、總結(jié)
- 個(gè)人隱私數(shù)據(jù)受到法律法規(guī)的保護(hù),企業(yè)越來越關(guān)注對個(gè)人隱私數(shù)據(jù)的處理。數(shù)據(jù)平臺數(shù)據(jù)倉庫作為數(shù)據(jù)的集中式采集處理場所也應(yīng)該提高對個(gè)人隱私數(shù)據(jù)處理的關(guān)注度。
- 保護(hù)隱私數(shù)據(jù)的關(guān)鍵技術(shù)主要有數(shù)據(jù)脫敏、匿名化和加密技術(shù)。此外,隱私計(jì)算和合成數(shù)據(jù)等技術(shù)也值得關(guān)注和實(shí)踐。
- 在數(shù)據(jù)平臺隱私數(shù)據(jù)保護(hù)實(shí)踐中,數(shù)據(jù)脫敏用于避免暴露隱私數(shù)據(jù)給大部分?jǐn)?shù)據(jù)消費(fèi)者,數(shù)據(jù)加密技術(shù)用于分享隱私數(shù)據(jù)給可信方,最后數(shù)據(jù)哈希技術(shù)用于跨數(shù)據(jù)域的隱私數(shù)據(jù)關(guān)聯(lián)場景。此外我們還需要如Vault等的安全基礎(chǔ)設(shè)施,并且需要將Vault集成到數(shù)據(jù)采集、傳輸和處理的系統(tǒng)中。