数据脱敏

https://www.cnblogs.com/yangzailu/p/6755440.html

数据脱敏介绍

数据脱敏(Data Masking),又称数据漂白、数据去隐私化或数据变形。百度百科对数据脱敏的定义为:指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据 的可靠保护。这样,就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集。

可以看到数据脱敏具有几个关键点:敏感数据、脱敏规则、使用环境。

敏感数据,又称隐私数据,常见的敏感数据有: 姓名、身份证号码、地址、电话号码、银行账号、邮箱地址、所属城市、邮编、密码类 ( 如账户查询密码、取款密码、登录密码等 )、组织机构名称、营业执照号码、银行帐号、交易日期、交易金额等。

随着大数据时代的到来,大数据商业价值的挖掘,用户的精准定位,大数据中蕴藏的巨大商业价值被逐步挖掘出来,但是同时也带来了巨大的挑战--个人隐私信息 的保护。个人信息与个人行为(比如位置信息、消费行为、网络访问行为)等,这些都是人的隐私,也是我们所关注的一类敏感信息,在大数据价值挖掘的基础上如 何保护人的隐私信息,也将是数据脱敏必须解决的难题。

脱敏规则,一般的脱敏规则分类为可恢复与不可恢复两类。

可恢复类,指脱敏后的数据可以通过一定的方式,可以恢复成原来的敏感数据,此类脱敏规则主要指各类加解密算法规则。

不可恢复类,指脱敏后的数据被脱敏的部分使用任何方式都不能恢复出。一般可分为替换算法和生成算法两大类。替换算法即将需要脱敏的部分使用定义好的字符或字符串替换,生成类算法则更复杂一些,要求脱敏后的数据符合逻辑规则,即是“看起来很真实的假数据”。

使用环境,主要指脱敏之后的数据在哪些环境中使用。普遍按照生产环境和非生产环境(开发、测试、外包、数据分析等)进行划分。

在最近一期的Gartner关于数据脱敏的报告(Magic Quadrant for Data Masking Technology-2014年12月)中根据数据脱敏产品应用场景的将数据脱敏划分为静态数据脱敏(static data masking[SDM])和动态数据脱敏(dynamic data masking[DDM])。

静态数据脱敏(SDM)与动态数据脱敏(DDM)主要的区别是:是否在使用敏感数据当时进行脱敏。

静态数据脱敏(SDM)一般用在非生产环境,在敏感数据从生产环境脱敏完毕之后再在非生产环境使用,一般用于解决测试、开发库需要生产库的数据量与数据间的关联,以排查问题或进行数据分析等,但又不能将敏感数据存储于非生产环境的问题。

动态数据脱敏(DDM)一般用在生产环境,在访问敏感数据当时进行脱敏,一般用来解决在生产环境需要根据不同情况对同一敏感数据读取时需要进行不同级别脱敏的问题。

隐私数据脱敏技术

通常在大数据平台中,数据以结构化的格式存储,每个表有诸多行组成,每行数据有诸多列组成。根据列的数据属性,数据列通常可以分为以下几种类型:

  1. 可确切定位某个人的列,称为可识别列,如身份证号,地址以及姓名等。
  2. 单列并不能定位个人,但是多列信息可用来潜在的识别某个人,这些列被称为半识别列,如邮编号,生日及性别等。美国的一份研究论文称,仅使用邮编号,生日和性别信息即可识别87%的美国人[3]。
  3. 包含用户敏感信息的列,如交易数额,疾病以及收入等。
  4. 其他不包含用户敏感信息的列。

所谓避免隐私数据泄露,是指避免使用数据的人员(数据分析师,BI工程师等)将某行数据识别为某个人的信息。数据脱敏技术通过对数据进行脱敏,如移除识别列,转换半识别列等方式,使得数据使用人员在保证可对#2(转换后)半识别列,#3敏感信息列以及#4其他列进行数据分析的基础上,在一定程度上保证其无法根据数据反识别用户,达到保证数据安全与最大化挖掘数据价值的平衡。

隐私数据泄露类型

隐私数据泄露可以分为多种类型,根据不同的类型,通常可以采用不同的隐私数据泄露风险模型来衡量防止隐私数据泄露的风险,以及对应不同的数据脱敏算法对数据进行脱敏。一般来说,隐私数据泄露类型包括:

  1. 个人标识泄露。当数据使用人员通过任何方式确认数据表中某条数据属于某个人时,称为个人标识泄露。个人标识泄露最为严重,因为一旦发生个人标识泄露,数据使用人员就可以得到具体个人的敏感信息。
  2. 属性泄露,当数据使用人员根据其访问的数据表了解到某个人新的属性信息时,称为属性泄露。个人标识泄露肯定会导致属性泄露,但属性泄露也有可能单独发生。
  3. 成员关系泄露。当数据使用人员可以确认某个人的数据存在于数据表中时,称为成员关系泄露。成员关系泄露相对风险较小,个人标识泄露与属性泄露肯定意味着成员关系泄露,但成员关系泄露也有可能单独发生。

隐私数据泄露风险模型

将数据开放给数据分析人员,同时就引入了隐私数据泄露的风险。在限制隐私数据泄露风险在一定范围内的同时,最大化数据分析挖掘的潜力,是数据脱敏技术的最终目标。目前在隐私数据脱敏领域,有几个不同的模型可以用来从不同角度衡量数据可能存在的隐私数据泄露风险。

K-Anonymity

隐私数据脱敏的第一步是对所有可标识列进行移除或是脱敏,使得攻击者无法直接标识用户。但是攻击者还是有可能通过多个半标识列的属性值识别个人。攻击者可能通过社工(知道某个人的姓名,邮编,生日,性别等)或是其他包含个人信息的以开放数据库获得特定个人的半标识列属性值,并与大数据平台数据进行匹配,从而得到特定个人的敏感信息。如表一所示,如果攻击者知道某用户的邮编和年龄,就可以得到该用户的疾病敏感信息。为了避免这种情况的发生,通常需要对半标识列进行脱敏处理,如数据泛化等。数据泛化是将半标识列的数据替换为语义一致但更通用的数据,已上述数据为例,对邮编和年龄泛化后的数据如表二所示。

原始信息

经过泛化后,有多条纪录的半标识列属性值相同,所有半标识列属性值相同的行的集合被称为相等集。例如,表二中1,2,3行是一个相等集,4,5,6行也是一个相等集。Sama- rati and Sweeney[4]引入了K-Anonymity用于衡量个人标识泄露的风险。 K-Anonymity定义如下:

K-Anonymity要求对于任意一行纪录,其所属的相等集内纪录数量不小于k,即至少有k-1条纪录半标识列属性值与该条纪录相同。

图二中的数据是一个3-Anonymity的数据集。作为一个衡量隐私数据泄露风险的指标,K-Anonymity可用于衡量个人标识泄露的风险,理论上来说,对于K-Anonymity数据集,对于任意纪录,攻击者只有1/k的概率将该纪录与具体用户关联。

L-Diversity

K-Anonymity可用于保护个人标识泄露的风险,但是无法保护属性泄露的风险。对于K-Anonymity的数据集,攻击者可能通过同质属性攻击与背景知识攻击两种方式攻击用户的属性信息。

  1. 同质属性攻击。对于图二半标识列泛化后的数据集,假如攻击者知道Bob邮编为47677,年龄为29,则Bob一定对应于前面三条记录,从而可以确定Bob有心脏病。
  2. 背景知识攻击。对于图二半标识列泛化后的数据集,假如攻击者知道Alice邮编为47673,年龄为36,则Alice一定对应于后面三条记录,如果攻击者知道Alice患有心脏病的几率很小,则能判断Alice很有可能患有癌症。

Machanavajjhala et al. [5] 引入了L-Diversity用于衡量属性泄露的风险,L-Diversity定义如下:

如果对于任意相等集内所有记录对应的敏感数据的集合,包含L个"合适"值,则称该相等集是满足L-Deversity。如果数据集中所有相等集都满足L-Deversity,则称该数据集满足L-Deversity。

所谓L个“合适”值,最简单的理解就是L个不同值。基于图二的数据通过插入干扰纪录,一个3-Anonymity 2-Diversity的数据集如表三所示:

相对于K-Anonymity标准,符合L-Deversity标准的数据集显著降低了属性数据泄露的风险。对于满足L-Diversity的数据集,理论上,攻击者最多只有1/L的概率能够属性泄露攻击,将特定用户与其敏感信息关联起来。一般来说是通过插入干扰数据构造符合L-Diversity标准的数据集,但是同数据泛化一样,插入干扰数据也会导致表级别的信息丢失。同时L-Diversity标准也有不足之处。

  1. L-Diversity标准有可能很难或是没有必要实现。例如,对于HIV的测试数据,测试结果列可能为阴性或是阳性。对于10000条记录,可能99%的记录都是阴性的,只有1%是阳性的。对于用户来说两种不同的测试结果敏感程度也是不同的,测试结果为阴性的用户可能不介意其他人看到他的测试结果,但是测试结果为阳性的用户可能更希望对别人保密。为了生成2-Deversity的测试数据集,会丢失大量的信息,降低数据分析挖掘的价值。
  2. L-Diversity标准无法防御特定类型的属性数据泄露。
    • 倾斜攻击如果敏感属性分布存在倾斜,L-Diversity标准很有可能无法抵御属性数据泄露。继续以HIV测试数据为例,假如构造的数据集对于任意相等类测试结果都包含阴性与阳性,且阴性数量与阳性相同,该数据集肯定满足2-Diversity。按照真实测试记录的分布,对于任意个人,攻击者只能判断其有1%的可能测试结果为阳性。但是对于2-Diversity数据集,攻击者会判断每个人有50%的可能测试结果为阳性。
    • 相似性攻击如果相等类的敏感属性分布满足L-Diversity,但是属性值相似或是内聚,攻击者有可能从得到很重要的信息。例如对于表四所示,病人数据满足3-Diversity,攻击者如果了解Bob邮编为47677,年龄为29,则可以确认Bob的工资收入在3-5K之间,且能确认Bob得了胃病相关的病,因为前三条的病都和胃病相关。
    • 简单来说,对于L-Diversity相同的相等集,敏感属性值的分布信息对于保护属性泄露至关重要。L-Diversity只是用来衡量相等集的不同属性值数量,并没有衡量不同属性值的分布,所以其在衡量属性泄露风险上仍有不足之处。

      T-Closeness

      直观的来说,隐私信息泄露的程度可以根据攻击者增量获得的个人信息衡量。假设攻击者在访问数据集之前已知的个人信息为B0,然后假设攻击者访问所有半标识列都已移除的数据集,Q为数据集敏感数据的分布信息,根据Q,攻击者更新后的个人信息为B1.最后攻击者访问脱敏后的数据集,由于知道用户的半标识列的信息,攻击者可以将某用户与某相等集联系在一起,通过该相等集的敏感数据分布信息P,攻击者更新后的个人信息为B2.

      L-Diversity约束是通过约束P的diverisity属性,尽量减少B0和B2之间的信息量差距,差距越小,说明隐私信息泄露越少。T-Closeness约束则期望减少B1和B2之间的信息量差距,减少攻击者从敏感数据的全局分布信息和相等集分布信息之间得到更多的个人隐私信息。T-Closeness的定义如下:

      如果一个相等类的敏感数据的分布与敏感数据的全局分布之间的距离小于T,则称该相等类满足T-Closeness约束。如果数据集中的所有相等类都满足T-Closeness,则称该数据集满足T-Closeness.

      T-Closeness约束限定了半标识列属性与敏感信息的全局分布之间的联系,减弱了半标识列属性与特定敏感信息的联系,减少攻击者通过敏感信息的分布信息进行属性泄露攻击的可能性。不过同时也肯定导致了一定程度的信息丢失,所以管理者通过T值的大小平衡数据可用性与用户隐私保护。

      常见数据脱敏算法

      K-Anonymity, L-Diversity和T-Closeness均依赖对半标识列进行数据变形处理,使得攻击者无法直接进行属性泄露攻击,常见的数据变形处理方式如下:

      大数据脱敏平台

      用户隐私数据保护与挖掘用户数据价值是两个互相冲突的矛盾体,彻底的数据脱敏,需要抹去全部的用户标识信息,使得数据潜在的分析价值大大降低。另一方面,完全保留用户隐私数据信息,可最大化数据的分析价值,同时导致用户隐私泄露的风险无法控制。因此大数据脱敏平台的设计目标并不是实现工具算法用来完全抹去全部的用户标识信息,而是包括如下几个目标:

      1. 数据泄露风险可控。首先,实现基于大数据平台的脱敏算法库,可并行,高效的按照脱敏规则对隐私数据进行脱敏。其次,基于数据脱敏的理论基础,建立用户隐私数据泄露风险的衡量模型,可定性定量的准确衡量数据可能发生泄露的风险。
      2. 可管理。结合大数据平台的用户认证体系,权限管理体系,以及隐私数据不同保护级别的权限管理体系,实现对隐私数据基于审批的数据访问机制。结合公司制度,规范,法务等管理,实现在尽可能保护用户隐私数据,减少数据泄露风险的前提下,最大化保留数据分析挖掘的价值。
      3. 可审计。对数据的访问要保证可回溯,可审计,当发生数据泄露时,要保证能够通过审计日志找到对应的泄露人员。

      大数据脱敏平台的设计方向一般包括静态大数据脱敏平台和动态大数据脱敏平台,所谓静态和动态之分,主要在于脱敏的时机不同。对于静态脱敏来说,数据管理员提前对数据进行不同级别的脱敏处理,生成不同安全级别的数据,然后授予不同用户访问不同安全级别数据的权限。对于动态脱敏来说,管理员通过元数据管理不同用户访问具体数据的安全权限,在用户访问数据的时候,动态的从原始数据中按照用户权限动态的进行脱敏处理。大数据平台脱敏技术方案是一个非常有趣的课题,目前业界还没有看到有成熟的方案,鉴于其对数据安全和数据价值的作用,非常值得深入研究,希望以后可以继续以合适的方式分享我在这方面的研究与实践。

      总结

      针对于大数据平台对于数据脱敏的需求,本文分析了数据泄露可能带来的风险,介绍了数据脱敏技术的理论基础与实现方式,同时简单分析了大数据平台的隐私数据脱敏技术方向。本文讨论的均是基于离线数据的数据脱敏,流式数据的脱敏技术无论是理论基础与具体实践大都还处在摸索的过程中,留待以后继续探索。

原文地址:https://www.cnblogs.com/zouhong/p/10399974.html

时间: 2024-11-09 04:49:12

数据脱敏的相关文章

DataMasker数据脱敏

产品简介: Data Masker数据脱敏平台,专业处理敏感数据,内置针对不同行业的敏感数据发现规则,支持多任务并发,充分利用系统资源,提高脱敏效率,真正做到智能而人性化的任务管理. Data Masker保护隐私数据满足数据规格和业务一致性.保证业务可靠运行,实时动态保护生产系统数据.敏感数据统一管理 产品优势: 便捷易用的自动发现,内置针对不同行业的敏感数据发现规则,能够自动发现如姓名.身份证号.电话号码.银行账户.日期.地址.税号.金额等敏感信息,内置全面发现规则,高准确性识别,避免了使用

什么是数据脱敏?

百度百科是这样描述的: 数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护.在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如×××号.手机号.卡号.客户姓名.客户地址.等个人敏感信息都需要通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护.这样就可以在开发.测试和其他非生产环境以及外包环境中可以安全的使用脱敏后的真实数据集. 生活中的常见例子 1.火车票: 2.淘宝网页上的收获地址信息: 敏感数据梳理

Oracle汉字用户名数据脱敏长度不变,rpad函数使用

信息安全考虑,有时需要对用户名称进行数据脱敏. 针对Oracle数据库,进行取数数据脱敏处理 脱敏规则: 长度小于9个字符,只保留前3个汉字与后3个汉字,中间全部由*填充. 长度9个字及以上及奇数,隐去中间3个字:长度10个字及以上及奇数,隐去中间4个字. 例如: 公司名称:宇宙无敌厉害的超级大公司的杭州分公司 字段长度:18 脱敏后:宇宙无敌厉害的****司的杭州分公司 可实现的正确答案: select t.no, ---公司编号 case when length(t.name)<=8 the

大数据脱敏

简介 大数据平台通过将所有数据整合起来,充分分析与挖掘数据的内在价值,为业务部门提供数据平台,数据产品与数据服务.大数据平台接入的数据中可能包括很多用户的隐私和敏感信息,如用户在酒店的入住纪录,用户支付信息等,这些数据存在可能泄漏的风险.大数据平台一般通过用户认证,权限管理以及数据加密等技术保证数据的安全,但是这并不能完全从技术上保证数据的安全.严格的来说,任何有权限访问用户数据的人员,如ETL工程师或是数据分析人员等,均有可能导致数据泄漏的风险.另一方面,没有访问用户数据权限的人员,也可能有对

工具类-数据脱敏

针对姓名.电话.地址.邮箱等敏感信息进行脱敏操作,代码如下: 1 import org.apache.commons.lang.StringUtils; 2 3 /** 4 * 数据脱敏工具类 5 * Created by shenruihai on 2018/06/13. 6 */ 7 public class Desensitized { 8 9 /** 10 * [中文姓名]只显示第一个汉字,其他隐藏为2个星号,比如:李** 11 * 12 * @param fullName 13 * @

Java 数据脱敏

数据脱敏 数据脱敏又称数据去隐私化或数据变形,是在给定的规则.策略下对敏感数据进行变换.修改的技术机制,能够在很大程度上解决敏感数据在非可信环境中使用的问题.根据数据保护规范和脱敏策略.对业务数据中的敏感信息实施自动变形.实现对敏感信息的隐藏. 脱敏方法 项目是在controller层进行脱敏,查阅google和github有两种较为方便的方法 一种是基于注解 desensitized基于注解的形式进行脱敏 GitHub 一种是基于框架本质上还是注解,但是已经封装好了,当然还提供fastjson

基于注解形式的数据脱敏

数据脱敏 注解定义 package cn.com.sensitive.annotations; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 敏感方法 * * @author zhanghao * @date 2

Spring的历史论(数据脱敏)

目前很多公司的架构,从Struts2迁移到了SpringMVC.你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢? 既然这样,我们从源头说起.Struts2的源头其实也是Servlet.Servlet的作用是接收浏览器传给服务端的请求(request),并将服务端处理完的响应(response)返回给用户的浏览器,浏览器和服务端之间通过http协议进行沟通,其过程是浏览器根据用户的选择将相关信息按http协议报文的规范组装请求的http报文,报文

java 日志的数据脱敏

思路 1.在 model层进行处理,直接重写get方法,在写一个getPlain 获取明文方法.(缺点:数据库写入和json序列化传递时使用的都是密文) 2.利用 日志组件过滤 特定的key,去进行脱敏(缺点:对所有的日志输出全部要正则匹配,非常耗时.) 由1,2的利弊,肯定会选择1,然后考虑一种实现(在model层定义方法,获取它的一个复制类,复制类里面的信息都是脱敏的,日志输出时只输出 复制对象),克服掉1的缺点 1.定义接口类 public interface NoSensitiveObj