在使用数据时,出于数据隐私、数据安全的考虑,需要对敏感数据进行适当的处理,在不影响数据使用目的的情况下,避免数据泄露等数据安全问题。
数据脱敏两大原则
(1)最大程度安全性:数据脱敏的目的就是为了保护我们不希望透露的信息,所以必须最大程度地保证脱敏后的数据不可被反向破解解读。
(2)数据可用性:不同于数据加密,加密后的信息允许完全不可用,脱敏后的数据还是得发挥其价值,所以要求数据脱敏不能影响其使用目的的实现。
数据保密度分级
数据脱敏多多少少会耗费资源,为明确某数据的脱敏层级,需要对数据保密度进行分级,并相应制定脱敏方案。
至少可以分为:可公开、保密(简单加密,理论上可轻易破解恢复)、绝密(完全不可解读,或加密成本过高)三个等级。
数据保密度分析
梳理所有数据及其保密需求,制定相应的技术方案和实施手册。
几种常用的数据脱敏方法
(1)替换。将可解读的信息用另外形式展示,例如将男性替换为 A,女性替换为 B。
(2)截断。减少数据的精度,实现一定程度的保密。例如将时间从秒级别截断到分钟级别,经纬度信息变得粗略,数值从精确到个位改为精确到千位。
(3)重排。按一定的规则打乱数据的顺序。例如将电话号码 15267008100重排为 15281006700。
(4)唯一替代。将数据用唯一值替代,替代关系不对外公开,可以确保数据的唯一性。如把所有的电话号码存储到一个列表里,用顺序号来替代真实的号码。
(5)遮盖。这个很常见,比如火车票上的身份证。331004xxxxxxxx1616。
(6)加密。直接用某种加密算法做加密。
(7)截断。只取用内容的某一小段,可能对实际使用造成较大影响。比如取地址的前10个汉字,可以确保准确的信息不被泄漏。
数据仓库中的应用
一般在最上面的输出层进行数据脱敏。一种简单的方式是,建立脱敏 mapping 表,在 ADS 层进行 mapping 后输出。
数据脱敏的失败
- 故事一:撞库攻击。如果脱敏数据里还是保留了不少真实信息,例如数据集 A只是对人名和联系方式等进行了脱敏,居住地址信息仍然保留到楼宇,数据集 B 的楼宇楼层信息是完备的,那就一定程度地将数据集 A 和数据 B 进行匹配。
- 故事二:某国外视频网站脱敏公开了一段时间内的客户浏览记录,Jack(假名) 下载该记录并注意到其中某用户的行为记录酷似其朋友 Rose(假名)的行为记录。Rose 刚好昨天和 Jack 分享了她的周末行程,上午看了某火热剧集,下午看了某部电影。且没有其他用户具有相同行为记录。Jack 完全可以断定该用户就是 Rose。且 Jack 发现 Rose 其实也看了一些 LGBTQ 的视频,Jack 无意间了解了 Rose 的性取向。