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