1. 程式人生 > >大廠也在用的 6種 資料脫敏方案,嚴防洩露資料的 “內鬼”

大廠也在用的 6種 資料脫敏方案,嚴防洩露資料的 “內鬼”

>本文收錄在 GitHub 地址 https://github.com/chengxy-nds/Springboot-Notebook 最近連著幾天晚上在家總是接到一些奇奇怪怪的電話,“哥,你是 xxx 吧,我們這裡是 xxx 高階男士私人會所...”,握草,我先是一愣,然後狠狠的罵了回去。一臉傲嬌的轉過頭,面帶微笑稍顯諂媚:老婆你聽我說,我真的啥也沒幹,你要相信我! 啪~ ![搞事情啊](https://img-blog.csdnimg.cn/202012041646474.jpg?#pic_center) 過後揉揉臉細想想,肯定是哪個不道德的網站,又把我的個人資訊給賣了,現在的人上網都處於一個裸奔的狀態,個人資訊已不再屬於個人,時下這種事好像也見怪不怪了,不過,出現這種事大多是有**內鬼**。 ![停止交易,有內鬼](https://img-blog.csdnimg.cn/20201208164819566.png) 而作為開發者的我們,能做的就是儘量避免經我們手的使用者資料洩露,那今天就來講講網際網路中內部防止隱私資料洩露的手段-**資料脫敏**。 ### 什麼是資料脫敏 先來看看什麼是資料脫敏?資料脫敏也叫資料的去隱私化,在我們給定脫敏規則和策略的情況下,對敏感資料比如 `手機號`、`銀行卡號` 等資訊,進行轉換或者修改的一種技術手段,防止敏感資料直接在不可靠的環境下使用。 像政府、醫療行業、金融機構、移動運營商是比較早開始應用資料脫敏的,因為他們所掌握的都是使用者最核心的私密資料,如果洩露後果是不可估量的。 資料脫敏的應用在生活中是比較常見的,比如我們在淘寶買東西訂單詳情中,商家賬戶資訊會被用 `*` 遮擋,保障了商戶隱私不洩露,這就是一種資料脫敏方式。 ![淘寶詳情](https://img-blog.csdnimg.cn/20201202143858951.png) 資料脫敏又分為靜態資料脫敏(`SDM`)和 動態資料脫敏(`DDM`): ### 靜態資料脫敏 靜態資料脫敏(`SDM`):適用於將資料抽取出生產環境脫敏後分發至測試、開發、培訓、資料分析等場景。 有時我們可能需要將生產環境的資料 `copy` 到測試、開發庫中,以此來排查問題或進行資料分析,但出於安全考慮又不能將敏感資料儲存於非生產環境,此時就要把敏感資料從生產環境脫敏完畢之後再在非生產環境使用。 這樣脫敏後的資料與生產環境隔離,滿足業務需要的同時又保障了生產資料的安全。 ![資料脫敏過程](https://img-blog.csdnimg.cn/2020120316350835.png?) 如上圖所示,將使用者的真實 `姓名`、`手機號`、`身份證`、`銀行卡號` 通過 `替換`、`無效化`、`亂序`、`對稱加密` 等方案進行脫敏改造。 ### 動態資料脫敏 動態資料脫敏(`DDM`):一般用在生產環境,訪問敏感資料時實時進行脫敏,因為有時在不同情況下對於同一敏感資料的讀取,需要做不同級別的脫敏處理,例如:不同角色、不同許可權所執行的脫敏方案會不同。 **注意**:在抹去資料中的敏感內容同時,也需要保持原有的資料特徵、業務規則和資料關聯性,保證我們在開發、測試以及資料分析類業務不會受到脫敏的影響,使脫敏前後的資料一致性和有效性。**總之一句話:你愛怎麼脫就怎麼脫,別影響我使用就行**。 ### 資料脫敏方案 資料脫敏系統可以按照不同業務場景自行定義和編寫脫敏規則,可以針對庫表的某個敏感欄位,進行資料的不落地脫敏。 ![脫敏系統](https://img-blog.csdnimg.cn/20201204184348646.png) 資料脫敏的方式有很多種,接下來以下圖資料為準一個一個的演示每種方案。 ![原始資料](https://img-blog.csdnimg.cn/20201208161546728.png) #### 1、無效化 無效化方案在處理待脫敏的資料時,通過對欄位資料值進行 `截斷`、`加密`、`隱藏` 等方式讓敏感資料脫敏,使其不再具有利用價值。一般採用特殊字元(`*`等)代替真值,這種隱藏敏感資料的方法簡單,但缺點是使用者無法得知原資料的格式,如果想要獲取完整資訊,要讓使用者授權查詢。 ![截斷方式](https://img-blog.csdnimg.cn/2020120714191619.png) 比如我們將身份證號用 * 替換真實數字就變成了 "220724 ****** 3523",非常簡單。 ![隱藏方式](https://img-blog.csdnimg.cn/20201207195242458.png) #### 2、隨機值 隨機值替換,字母變為隨機字母,數字變為隨機數字,文字隨機替換文字的方式來改變敏感資料,這種方案的優點在於可以在一定程度上保留原有資料的格式,往往這種方法使用者不易察覺的。 我們看到 `name` 和 `idnumber` 欄位進行了隨機化脫敏,而名字姓、氏隨機化稍有特殊,需要有對應姓氏字典資料支援。 ![隨機值](https://img-blog.csdnimg.cn/20201207201741145.png) #### 3、資料替換 資料替換與前邊的無效化方式比較相似,不同的是這裡不以特殊字元進行遮擋,而是用一個設定的虛擬值替換真值。比如說我們將手機號統一設定成 “13651300000”。 ![資料替換](https://img-blog.csdnimg.cn/20201208155240627.png) #### 4、對稱加密 對稱加密是一種特殊的可逆脫敏方法,通過加密金鑰和演算法對敏感資料進行加密,密文格式與原始資料在邏輯規則上一致,通過金鑰解密可以恢復原始資料,要注意的就是金鑰的安全性。 ![對稱加密](https://img-blog.csdnimg.cn/20201208161253304.png) #### 5、平均值 平均值方案經常用在統計場景,針對數值型資料,我們先計算它們的均值,然後使脫敏後的值在均值附近隨機分佈,從而保持資料的總和不變。 ![原始資料](https://img-blog.csdnimg.cn/20201208162358473.png) 對價格欄位 `price` 做平均值處理後,欄位總金額不變,但脫敏後的欄位值都在均值 60 附近。 ![平均值](https://img-blog.csdnimg.cn/20201208162529719.png) #### 6、偏移和取整 這種方式通過隨機移位改變數字資料,偏移取整在保持了資料的安全性的同時保證了範圍的大致真實性,比之前幾種方案更接近真實資料,在大資料分析場景中意義比較大。 比如下邊的日期欄位`create_time`中 `2020-12-08 15:12:25` 變為 `2018-01-02 15:00:00`。 ![取整](https://img-blog.csdnimg.cn/20201208163613709.png) 資料脫敏規則在實際應用中往往都是多種方案配合使用,以此來達到更高的安全級別。 ### 總結 無論是靜態脫敏還是動態脫敏,其最終都是為了防止組織內部對隱私資料的濫用,防止隱私資料在未經脫敏的情況下從組織流出。所以作為一個程式設計師不洩露資料是最起碼的操守。 整理了幾百本各類技術電子書,送給小夥伴們。關注公號回覆【**666**】自行領取。和一些小夥伴們建了一個技術交流群,一起探討技術、分享技術資料,旨在共同學習進步,如果感興趣就加入我們吧! ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201128210231910.png?#pic_center) 無論你是剛入行、還是已經有幾年經驗的程式設計師,相信這份面試提綱都會給你不少助力,長按二維碼關注 『 程式設計師內點事 』 ,回覆 『 offer 』 自行領取,祝大家 offer 拿到手軟 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201128210730424.png?)