数据脱敏的概念
1.1. 数据脱敏的定义
数据脱敏(data masking)就是给重要的信息(敏感数据)“穿上马甲(屏蔽、仿真等方式)”,让它们看起来不是原来的样子,这样即使信息被别人看到了,也不会暴露真实的敏感内容。比如,把你的身份证号、电话号码这类个人隐私信息改一改,或者把公司的商业秘密藏起来,防止被坏人利用。这样做可以保护个人隐私和企业安全。
数据脱敏-简化版
1.2. 数据脱敏的原则
数据脱敏需要遵循有效性、真实性、高效性、一致性和合规性这5项原则(下方是较为完整的理解)。
1.2.1. 有效性原则
数据脱敏的有效性原则就是要把数据里的敏感信息有效地去除掉,这样才能达到保护数据安全、去除敏感数据的目的。这个原则的基本要求是:经过数据脱敏后得到的数据里,那些敏感数据已经被去掉了,不能直接从这些数据里找到敏感信息;或者就算能找到,也得花费巨大的经济和时间成本,这个成本比数据本身的价值还高。而且在做数据脱敏工作的时候,要根据不同的敏感数据,或者同一敏感数据在不同的应用场景下,选择合适的脱敏方法。
1.2.2. 真实性原则
数据脱敏的真实性原则是说,脱敏之后的数据还能体现相关业务的真实特点,像数据结构特点、数据统计特点等都要能体现出来。数据结构特点就是数据本身的构成有一定的规则,比如说身份证号是18位的,由地区编码(6位)、生日(8位)、顺序号(3位)和校验码(1位)组成;数据统计特点就是大量数据记录里隐含的统计趋势,像某个高校学生的地区分布、年龄分布等情况。这个原则的基本要求是:要保持原来数据的格式、类型、依存关系,语义要完整,引用也要完整,数据的统计、聚合特点、频率分布以及唯一性都要保持。
1.2.3. 高效性原则
数据脱敏的高效性原则就是数据脱敏的过程能够通过程序自动进行,而且可以重复操作。这个原则的基本要求是:要在脱敏工作效率和脱敏花费的时间之间找到平衡,把数据脱敏的工作控制在一定的时间范围里;还要在脱敏工作效率和脱敏的经济成本之间找到平衡,在保证一定安全底线的前提下,尽量减少数据脱敏工作的经济成本。
1.2.4. 一致性原则
数据脱敏的一致性原则是说,同一个脱敏系统对相同的数据进行脱敏,结果是一样的。也就是说,在同一个脱敏系统里,对同一个敏感数据,不管进行多少次脱敏,最后得到的脱敏结果数据都是相同的。这个原则的基本要求是:脱敏系统(或者产品)要稳定可靠,脱敏的方法(或者算法)要科学、准确。
1.2.5. 合规性原则
数据脱敏的合规性原则是指数据脱敏从开始到结束的整个过程都要符合我国相关的法律法规和标准规范。这个原则的基本要求是:脱敏系统(或者产品)本身得有相关的资质,像测评资质、销售资质等;脱敏系统(或者产品)的部署和运行要科学规范;开展脱敏工作要有相关的管理措施来支持。
1.3. 数据脱敏的流程
数据脱敏整个过程可以分为三个步骤:
(1)识别敏感信息:首先要找出数据库或者其他数据源中的敏感信息,比如哪些字段包含了个人隐私或者商业秘密;
(2)处理敏感信息:然后使用特定的方法来改写这些敏感信息,让它们不再暴露真实数据;
(3)检查脱敏效果:最后要检查一下脱敏后的数据,确保敏感信息真的被隐藏了,同时还要保证数据看起来还是真实的,不会影响后续的数据分析结果。这个检查主要是看脱敏是否遵守了前面提到的五个原则,并且数据还是不是那么精准。
1.4. 数据脱敏与数据匿名化、数据去标识化间的关系
数据脱敏、数据匿名化和数据去标识化这三个概念既有区别也有联系,下面是它们的简单区别:
1.4.1. 术语定义不同:
1.4.2. 适用领域不同:
1.4.3. 应用对象不同:
1.4.4. 处理效果不同:
2.2. 结构化数据脱敏
2.2.1. 结构化数据与结构化数据脱敏的概念
结构化数据也叫行数据,它是用二维表结构来表示和实现的数据,在格式和长度上都得严格按照规范来。在二维表中,每行记录就对应一个数据主体,每列则对应一个属性。结构化数据脱敏呢,就是按照一些规则,对二维表结构里那些敏感字段的数据进行变形、屏蔽或者仿真处理,这样就能很好地保护这些数据了。结构化数据脱敏的对象是各种关系数据库,像传统数据库里的Oracle、SQL Server、Informix、MySQL、DB2、PostgreSQL、Sybase、MongoDB等,还有国产数据库中的GBase、达梦、巨杉、人大金仓等。
2.2.2. 数据库脱敏
从脱敏模式来看,数据库脱敏分为静态数据脱敏和动态数据脱敏。
(1) 静态数据脱敏基本思想:在保证数据之间关联关系的前提下,对数据文件进行脱敏处理。处理后的文件里没有敏感字段数据,而且不会影响数据分析结果。技术路线:使用ETL技术,先从源数据库把数据抽取出来,再用特定算法对抽取的数据进行变形,然后把变形后的数据加载到目标数据库,这样就形成了脱敏后的数据文件(也就是脱敏文件)。主要应用场景:测试、开发、培训、数据分析、数据交易等。主要特征:可以简单理解为“搬移并仿真替换”。就是说,业务系统开发、测试、培训、分析等相关人员能随便调用、读写脱敏文件里的数据,就像在仿真业务系统和做数据分析一样。同时,脱敏数据文件和生产环境是物理隔离的。
(2) 动态数据脱敏基本思想:在不脱离生产环境的情况下,对后台数据库里敏感数据的查询和调用结果进行实时脱敏,脱敏后的数据能在用户前端显示出来。技术路线:用SQL技术,先找到包含敏感字段的查询语句,再用函数运算处理这些查询语句,然后数据库自动返回修改后不含敏感数据的结果。主要应用场景:数据库系统的使用人员和运维人员。主要特征:可以概括为“边脱敏,边使用”。对于数据库系统使用人员来说,先根据不同角色、职责确定不同的身份特征,然后对敏感数据进行隐藏、屏蔽、加密和审计。这样不同级别的用户就得按照自己的身份特征去查询、访问敏感数据,而且不能修改敏感数据。数据库系统运维人员的权限只是维护表结构、进行系统调优,没有权限检索数据或者导出真实数据。
2.2.3. 结构化文本脱敏
结构化文本,也叫结构文本,像txt、csv、xls、python、xml、dbf、dmp等文本文件都属于结构化文本,所以结构化文本也可以简称为文件。结构化文本脱敏(简称为文件脱敏)的基本思想:在不脱离生产环境的情况下,对生产数据源的文本文件进行脱敏,处理后的文件里没有敏感数据,而且不会影响数据分析结果。技术路线:先设置好脱敏规则,然后把文本文件输入进去,再用相关技术(像加密、替换、偏移等)对文本文件进行脱敏,最后输出脱敏结果(脱敏后的文本文件或者脱敏后的关系数据库)。主要应用场景:测试、开发、培训、数据分析等。主要特征:和静态数据脱敏相似,也是“搬移并仿真替换”。
2.3. 非结构化数据脱敏
非结构化数据脱敏-简化版
非结构化数据是什么:非结构化数据就是那些没有明确结构限制的(或者说数据结构不规整、不完整),也没有预先定好的数据模型,很难用二维逻辑表来呈现的数据。像图像数据、视频数据、非结构化的文本数据都属于非结构化数据。
2.3.1. 图像数据脱敏
图像数据脱敏就是利用相关技术,对图像里的文字、图形做一些处理,像去掉标识、给它遮罩或者添加噪声等,这样就能很好地保护图像数据了。这里用到的技术有AI技术(比如深度学习)、差分隐私技术等。去掉标识就是把图像里的敏感文字信息去掉,像自然人的隐私数据;遮罩就像是给图像“打马赛克”;添加噪声就是让原来的图像变得很不一样,从而达到脱敏的目的。
比如说在互联网医疗领域,对医疗影像图像进行脱敏处理就是常见的图像脱敏情况。医院的医疗影像设备会产生好多医疗图像数据,这些图像可能会把患者的名字等个人敏感信息以文字形式打印在图像上。在处理这些医疗影像数据之前,为了保护用户隐私,就得对图像里的患者信息进行脱敏处理,让医疗影像数据去掉标识。
2.3.2. 视频数据脱敏
视频数据是由很多相关联的图像帧数据组成的,每个图像帧就是一个静态的图像数据,简单说就是视频数据等于图像数据1加图像数据2一直加到图像数据N。视频数据脱敏就是用相关技术对图像数据1到N里的文字、图形进行去掉标识、遮罩、添加噪声等处理,这样就能可靠地保护视频数据了。
例如在智能安防的用户行为分析里,这就是典型的图像脱敏场景。在智能安防中,一般都会安装一些摄像头,这些摄像头会实时产生大量视频数据,这些视频数据可能包含人脸等个人隐私信息。所以在进行异常行为分析的时候,就得对这些隐私数据进行脱敏,这样就能保护个人隐私了。
2.3.3. 文本脱敏
非结构化文本脱敏就是采用一些技术手段,对非结构化文本里的文字进行去掉标识的处理,从而可靠地保护这些文本。这里用到的技术手段有AI技术(像深度学习)、差分隐私技术等,去掉标识就是把文本里像自然人隐私数据这样的敏感文字信息去掉。
比如在互联网医疗领域,对电子病历进行脱敏就属于非结构化文本数据脱敏。在电子病历脱敏这个场景里,医生可能会把患者的姓名、年龄、家庭等个人敏感信息和患者陈述一起写进电子病历里。所以在对电子病历进行数据分析等操作之前,要对涉及患者个人信息的敏感数据进行脱敏处理,防止用户隐私泄露,达到保护个人隐私的目的。
敏感数据识别策略
敏感数据识别的定义:
敏感数据识别就是用专门的数据脱敏软件来自动找出数据库或其他数据中的敏感信息,比如个人信息、公司机密等。
敏感数据识别的作用:
敏感数据识别有两个主要作用:一是帮助用户弄清楚自己的数据里有哪些敏感信息,以及这些信息都在哪里;二是为之后的数据脱敏工作提供指导,知道哪些数据需要被处理。
敏感数据源识别策略
敏感数据源识别策略就是让软件能够自动找到藏有敏感信息的数据库或其他数据源。这个策略包括了不同的识别方法,根据不同的数据脱敏产品,这些方法也不一样。
比如,对于处理数据库的产品,常用的方法有通过字段名字来识别,或者通过字段里的内容来识别。敏感数据源,也叫脱敏源,就是那些含有敏感信息的数据来源,主要包括四种:各种数据库、文件(不管是整齐的表格还是乱糟糟的文档)、大数据平台、动态数据流(比如网页接口或者消息队列)。每种数据来源都有它自己的特点。
敏感数据识别策略
敏感数据识别策略就是用来找出哪些数据是敏感的。这个策略有几种不同的做法:
全量识别:就是检查所有的数据,一个不落,包括数据库里的表、文件、数据流等等;
抽样识别:就是只检查一部分数据,比如只看某个数据库的一部分表格或者某个文件夹里的文件;
增量识别:就是只关注新增加的数据,比如新创建的表格或者新收到的数据流。
数据脱敏方法
4.1. 数据脱敏方法的类别
4.2. 经典数据脱敏的方法
(1)泛化类方法:就是让敏感数据不那么具体,不那么精确,但还能保留一些基本信息。具体的方法有:
截断方法:就是砍掉数据的一部分,只留下最重要的部分。比如手机号码,只留下前三位;
取整方法:就是对数字或时间进行简化,只保留大概的数值。比如把一个具体的时间简化到最近的十分钟,或者把工资四舍五入到最接近的十元;
归类方法:就是把数据分分类,按照一定的标准归到不同的组里。比如把工资分成高、中、低三个级别,而不是具体的金额。
(2)抑制方法:就是保留敏感数据的长度不变,但是把数据的一部分或全部换成没有具体意义的符号,比如星号()或者问号(?),这样别人就看不出原来的信息了。比如,手机号码后八位换成星号,就成了134******,这样别人就猜不出你的完整手机号码了。
(3)扰乱类方法:就是通过添加干扰或者改变数据的方式来保护敏感信息,让原始数据不那么容易被猜出来。
加密方法:就是用一种特殊的算法把敏感数据转换成别人看不懂的样子。这种方法可以反过来把数据变回原样,但很难被破解,尤其是使用一些强大的加密算法时;
散列方法:也是用一种算法来改变数据,但这次是变成一个固定长度的结果,而且这个结果不能被逆转回原始数据;
混淆方法:就是把这个数据的顺序打乱,比如把12345变成53241,这样数据还是那些数字,但是顺序变了,不容易看出原来的信息。
(4) 仿真方法:就是创建一个看起来很像真实数据,但实际上完全不同的新数据集。这样做是为了在做一些数据测试或分析的时候,能够用到这些数据,但又不泄露真实的敏感信息。
具体来说,就像是做假数据,但这些假数据还是有用的,比如:
举个例子,如果要仿真姓名数据,可以先选一些常见的姓氏和名字,然后随机组合起来,创造出新的名字,比如从赵、钱、孙、李等姓氏中选一个,再从春、暖、花、开等字中选一个,组合成一个新的名字,这样就能得到一个看起来真实,但实际上是假的名字。
4.3新型数据脱敏的方法简介
4.2. 经典数据脱敏的方法
(1)泛化类方法:就是让敏感数据不那么具体,不那么精确,但还能保留一些基本信息。具体的方法有:
截断方法:就是砍掉数据的一部分,只留下最重要的部分。比如手机号码,只留下前三位;
取整方法:就是对数字或时间进行简化,只保留大概的数值。比如把一个具体的时间简化到最近的十分钟,或者把工资四舍五入到最接近的十元;
归类方法:就是把数据分分类,按照一定的标准归到不同的组里。比如把工资分成高、中、低三个级别,而不是具体的金额。
(2)抑制方法:就是保留敏感数据的长度不变,但是把数据的一部分或全部换成没有具体意义的符号,比如星号()或者问号(?),这样别人就看不出原来的信息了。比如,手机号码后八位换成星号,就成了134******,这样别人就猜不出你的完整手机号码了。
(3)扰乱类方法:就是通过添加干扰或者改变数据的方式来保护敏感信息,让原始数据不那么容易被猜出来。
加密方法:就是用一种特殊的算法把敏感数据转换成别人看不懂的样子。这种方法可以反过来把数据变回原样,但很难被破解,尤其是使用一些强大的加密算法时;
散列方法:也是用一种算法来改变数据,但这次是变成一个固定长度的结果,而且这个结果不能被逆转回原始数据;
混淆方法:就是把这个数据的顺序打乱,比如把12345变成53241,这样数据还是那些数字,但是顺序变了,不容易看出原来的信息。
(4) 仿真方法:就是创建一个看起来很像真实数据,但实际上完全不同的新数据集。这样做是为了在做一些数据测试或分析的时候,能够用到这些数据,但又不泄露真实的敏感信息。
具体来说,就像是做假数据,但这些假数据还是有用的,比如:
举个例子,如果要仿真姓名数据,可以先选一些常见的姓氏和名字,然后随机组合起来,创造出新的名字,比如从赵、钱、孙、李等姓氏中选一个,再从春、暖、花、开等字中选一个,组合成一个新的名字,这样就能得到一个看起来真实,但实际上是假的名字。
4.3新型数据脱敏的方法简介
新型数据脱敏方法-简化版
1.K-匿名化(K-anonymity)方法就是让数据库里的信息看起来不那么具体,这样就算有人看到了数据,也很难确定具体是哪个人。具体做法是:
(1)把一些信息模糊化,比如把邮编的一部分数字换成星号,把年龄的范围扩大;
(2)确保数据库里每一条记录的敏感信息至少有K个其他记录看起来是一样的。这里的K是一个数字,表示至少有K条记录的信息是相似的。
比如说,我们有一个包含姓名、年龄和疾病的数据表。通过脱敏处理,我们让每一条记录的姓名和年龄信息至少有3条记录看起来是一样的。这样,就算有人看到了数据,也因为信息太模糊,无法确定具体是哪个人,从而保护了个人隐私。
2.L-多样化(L-diversity)方法是在K-匿名化的基础上再加一道保险。它的意思是,在那些看起来相似的数据组(等价类)中,敏感信息(比如身份证号)不能都一样,至少要有L种不同的信息。这样,就算有人想通过数据来猜测某个人的隐私,他们能确定的概率也不会超过1/L。
比如,我们有一个数据表,分成了几个小组,每个小组里的姓名和年龄都差不多。对于每个小组,我们要确保里面的信息至少有L种不同的。如果第一个小组里的分数有两种,第二个小组有四种,第三个小组有三种,那么我们看哪个数字最小,这里是2,所以整个数据表就满足了2-多样化。
3.T-接近性(T-closeness)方法的核心是:在保证数据多样化的同时,还要确保每个小组里的敏感信息(比如某种疾病的发生率)和整个大数据库里的这种信息的分布差距不大。如果差距小于一个特定的阈值T,那么这个小组就符合T-接近性的要求。如果所有的小组都符合,那么整个数据集就满足了T-接近性。
假设你是一个学校食堂的负责人,你想要根据学生的口味偏好来调整菜单。你有一个包含全校学生口味偏好的大数据集,其中显示有60%的学生喜欢甜食,40%的学生喜欢咸食。为了保护学生的隐私,你不能直接公布每个学生的具体偏好,所以你需要对数据进行脱敏处理。
现在,你有了两个脱敏后的数据子集,分别是子集C和子集D,它们代表了两个不同班级的学生口味偏好。你设定了一个阈值T,即20%,来衡量这两个子集的口味偏好分布是否足够接近全校学生的整体偏好。
子集C显示,有55%的学生喜欢甜食,45%的学生喜欢咸食。我们计算它与全校学生偏好的差距:|55% - 60%| = 5%,这个差距远远小于20%的阈值,所以子集C满足T-接近性。
子集D显示,有80%的学生喜欢甜食,20%的学生喜欢咸食。我们计算它与全校学生偏好的差距:|80% - 60%| = 20%,这个差距正好等于阈值,所以子集D也满足T-接近性。
用简单的话来说,T-接近性方法就是确保每个班级的口味偏好分布和全校学生的口味偏好分布不要差得太远。在这个栗子中,子集C和子集D的口味偏好分布都与全校的整体偏好足够接近,因此它们都符合T-接近性的要求。这意味着你可以在不泄露学生个人隐私的情况下,根据这些脱敏后的数据来调整食堂的菜单。
4. ε-差分隐私(s-dincrentialprivacy)方法可以简单理解为:即使有人在数据集中添加或删除一条记录,他们通过查询得到的结果也不会有太大变化。也就是说,数据集的查询结果不应该受到任何单条记录的影响。
从数学的角度来说,ε-差分隐私是指对于两个几乎相同的数据集D和D'(它们只相差一条记录),如果使用某种查询算法A,这个算法在两个数据集上得到相同结果的概率非常接近,那么我们就说这个算法满足了ε-差分隐私。这里的ε是一个参数,表示隐私保护的强度,ε越小,隐私保护得越好。当ε接近0时,隐私保护就非常强了。
简单来说,ε-差分隐私是一种保护数据的方法,它确保了单个数据点的信息不会影响整个数据集的查询结果,从而保护了个人隐私。
数据脱敏的产品
脱敏数据源就是那些里面包含了需要保护的信息的数据来源,它们主要有四种类型:
数据库:国产的,武汉达梦、人大金仓、GaussDB等,国际上常用的,Oracle、MySQL、DB2等。
文件:常见的Excel表格、txt文本文件、CSV文件等,还有网页文件和XML文件。
大数据平台:Teradata、Hive、HBase等。
动态数据流:网络流量、SDK接口数据、API接口数据、实时更新的数据库信息、各种接口传输的数据等。
脱敏过程:
脱敏目标:
脱敏目标就是经过处理后的数据,主要有两种形式,一种是数据文件,另一种是大数据集。
应用场景:
脱敏后的数据可以用在多种场合,比如开发新系统、测试系统、培训人员、数据买卖、数据交换和分析等。简单来说,就是用在任何需要数据但又不能暴露个人信息的地方。
数据脱敏产品应用部署
数据库静态脱敏系统的部署,就像是给数据库加了一个旁路部署“侧门”,这个“侧门”专门用来处理敏感数据。它的主要步骤是这样的:
(1)从原始数据库中“复制”出需要脱敏的数据。
(2)用各种方法(比如改写、加密等)对这些数据进行脱敏处理。
(3)把处理后的数据“粘贴”到一个新的数据库里。
最后,这些脱敏后的数据就可以安全地用在各种场合了,比如开发新系统、测试、培训、数据买卖或者数据分析等,而不用担心会泄露敏感信息。
数据库动态脱敏系统的部署,就像是给数据库加了一个反向代理“中间人”,这个“中间人”会在数据被使用的同时进行脱敏处理。它的主要步骤是这样的:
(1)首先确定谁在用数据,也就是识别使用数据库的人的身份,这可以通过他们的网络地址、电脑标识、数据库账号等方式来判断。
(2)然后制定一套规则,这套规则决定了哪些数据需要被脱敏,比如根据数据库名、表格名或字段名来决定。
(3)接着,系统会分析并理解数据库的操作命令。
(4)最后,系统会创建一个不包含敏感信息的新数据库,这个数据库可以用来进行数据交换、数据汇总等操作。
简单来说,动态脱敏就是在数据被查看或使用的时候,实时地将其中的敏感信息隐藏起来,确保数据安全。
来个题外话:某证券的例子、案例背景:
证券公司积累了海量的客户数据,这些数据中包含大量的个人隐私信息和企业商业敏感信息,如个人身份证号、证券账户号码、个人资产信息、交易记录、手机号码信息、位置信息、企业证券账户、企业资产信息、企业交易流水等。在确保证券公司能够正常进行业务系统测试、升级、数据分析的同时,如何保护好这些敏感数据,成为证券公司决策层待解决的问题。
为此,证券公司提出了以下脱敏需求:
(1)脱敏对象:客户(包括个人投资者、机构投资者)。
(2)脱敏源库:个人基础信息库、个人资产信息库、机构基础信息库、机构资产信息库、个人交易流水库、机构交易流水库等。
(3)脱敏后的数据要求:保持敏感字段间的关联关系;保持与原数据格式、类型一致;保持与原数据相同的统计、聚合特征;保持数据的唯一性;保持数据的可读性(无生僻字)。
CIO之家 www.ciozj.com 公众号:imciow