数据脱敏技术与应用

简介: 数据脱敏技术与应用

什么是数据脱敏

数据脱敏也叫数据的去隐私化,在我们给定脱敏规则和策略的情况下,对敏感数据比如 手机号、银行卡号 等信息,进行转换或者修改的一种技术手段,防止敏感数据直接在不可靠的环境下使用。

从个人理解来说,数据脱敏就是为原始数据创建结构类似但不真实的数据的方法,以便将数据在开发、测试、培训、分析等非生产环境下的使用。在数据脱敏中只是改变数据值但数据的格式和原始数据保持一致,需要注意的是原始数据不能探测到或者经过转换还原出原始数据。数据脱敏将被广泛应用于遵守政策、法规需求、防止数据泄露、防止数据被意外接触等方面

数据脱敏梳理

在数据脱敏进行之前,我们首先要确定哪些数据要作为脱敏的目标。我们根据美团特有的业务场景和数据安全级别划分(绝密、高保密、保密、可公开,四个级别), 主要从“高保密”等级的敏感数据,开始进行梳理。
这里我们把敏感数据分成四个维度进行梳理,用户、商家、终端、公司

从用户维度进行梳理可能有这些敏感字段如下:手机号码、邮件地址、账号、地址、固定电话号码等信息(此外个人隐私数据相关还有如:种族、政治观点、宗教信仰、基因等)

从商家维度进行梳理:合同签订人,合同签订人电话等(不排除全局敏感数据:如商家团购品类等)

从用户终端维度进行梳理:能够可能标识终端的唯一性字段,如设备id。

从公司角度进行梳理:交易金额、代金卷密码、充值码等

数据脱敏原则

数据脱敏工具通过将真实敏感数据按照数据脱敏规则进行转换、处理,去除敏感信息,从而帮助组织实现生产数据的依法依规共享。数据脱敏可以通过各种不同的方法进行实现,但是这些方法都必须遵循数据脱敏的五项基本原则1)防逆向破解原则无论采用哪种脱敏方法,都不能够通过破解方法获取到原始敏感数据。2)表征原始数据原则脱敏后数据要保持一定的真实性以便数据能够应用开发、测试、分析的环境。例如对姓名处理,脱敏后形式类似王*凯,而不能采用随意的值来替换姓名。3)引用完整性原则经过脱敏后数据要保持引用完整性,例如对银行卡号进行脱敏处理(银行卡号是一个主键)所有引用了银行卡号信息的实体,经过脱敏处理后要能够关联到一起。4)防数据推理原则数据脱敏不需要将所有的数据进行脱敏处理,只处理被定义为敏感数据内容。但需要注意的是有些非敏感数据能够被用来重新生成敏感数据或者能够回溯到敏感数据,这些非敏感数据同样需要进行脱敏处理。5) 自动化原则针对一个数据源只需要配置一次,就可以重复进行脱敏处理。开发和测试环境的数据需要能够及时反映生产数据的变化。分析数据也需要每天甚至每小时来生成。如果不是通过自动化的方式进行,那么数据脱敏就是一个低效且耗费成本的工作。

数据脱敏核心算法

常用的脱敏有混淆、替换、置空、加密:混淆算法:打乱现有数据的位置,使数据不再表示其原有的含义。可以使用java的Collection类对数据内容的ArrayList进行顺序打乱,经实际试验效果不太好,无法保证数据项顺序和原来顺序完全不一致。任意替换:替换敏感数据的内容,使数据看上去和原始数据类似,但实际上两者没有任何关联。常用于姓名替换、数值替换、日期替换及卡号替换等。置空算法:删除敏感数据将其置空。数据加密:敏感数据进行加密处理,加密后的数据与原始数据差异较大。可以使用的数据脱敏算法包括:MD5加密、AES对称加密、FPE格式保留加密等方法。

数据脱敏与数据加密的区别

说到数据保护,大多数人第一时间想到的便是加密技术。很多时候大家可能会对数据脱敏与数据加密这两个概念产生疑问,认为数据加密是数据脱敏的一种方式,但其实这是两种完全不同的技术,适用于不同的目的。数据脱敏技术并不需要对所有信息进行加密,数据脱敏保存了数据原有的格式,在不需要解密的条件下,降低数据敏感度。因此,脱敏技术兼顾了数据安全与数据使用,脱敏后的数据依然可以用于分析和测试。

60a6bcefe26f4b118e50f46e4d0afd1d.png

数据加密技术则涉及到通过算法对数据进行可逆的变形或转换从而隐藏原始信息,大多数加密算法(如对称加密、非对称加密)都是可逆的,密文可以通过密钥被还原。数据加密更多适用于长期数据储存或数据传输,因为被加密后的数据将无法使用。

60a6bcefe26f4b118e50f46e4d0afd1d.png

数据脱敏工具技术架构设计

数据脱敏类型可以分为静态脱敏和动态脱敏:静态数据脱敏(SDM),是数据存储时脱敏,存储的是脱敏数据。一般用在非生产环境,如开发、测试、外包和数据分析等环境。动态数据脱敏(DDM),在数据使用时脱敏,存储的是明文数据或直接存储密文。一般用在生产环境,动态脱敏可以实现不同用户拥有不同的脱敏策略。其总体技术架构如下:

60a6bcefe26f4b118e50f46e4d0afd1d.png

数据脱敏技术架构整体可以划分为管理端、执行端。执行端又分为静态脱敏执行端和动态脱敏执行端。管理端负责数据源维护、敏感数据扫描规则配置、数据脱敏规则配置、脱敏任务管理、日志查看、扫描结果查看等核心功能。数据脱敏执行端(Excecutor)负责处理具体脱敏工作,按照管理端数据源、脱敏规则配置,进行脱敏任务执行。静态数据脱敏是比较常见的脱敏任务,也有很多常见的开源工具能够实现数据的静态脱敏。比如DataX工具。动态脱敏技术,通常是基于数据库中间件技术来实现的,这里可以采用了Apache ShardingSphere 生态圈中的 ShardingSphere-JDBC来实现。

常见的数据脱敏方式

在数据脱敏的过程中,需要根据不同的数据使用场景,选择相应的数据脱敏方式。较为常见数据脱敏方式包括数据替换、掩码屏蔽、随机化、泛化、平均化、偏移取整。本节将以下图数据为例,介绍上述几种数据脱敏的方式。

60a6bcefe26f4b118e50f46e4d0afd1d.png

1.掩码屏蔽:使用*掩盖部分数据,如保留身份证前6位代表地区信息的数字,其余用*代替,被掩码屏蔽的部分可以根据需要进行调整。

60a6bcefe26f4b118e50f46e4d0afd1d.png

2.数据替换:使用虚拟值替换真实值,如设置一个常数将所有数据进行替换。下图使用数据替换方式,将所有手机号统一替换为“13900800900”。

60a6bcefe26f4b118e50f46e4d0afd1d.png

3.随机化:使用随机数据代替真实值,如随机生成客户姓名代替真实值。

60a6bcefe26f4b118e50f46e4d0afd1d.png

4.泛化:在保留数据局部特征的情况下,对数值型字段进行归类后替换原有数值,使原有数据特征被模糊化。如根据借记卡余额数值分为 “<5万”, “5-10万”, “10-15万”等区间,并将其替换原有的借记卡余额数据。

60a6bcefe26f4b118e50f46e4d0afd1d.png

5.平均值:针对数值型数据,计算它们的平均值后,将脱敏值在均值附近随机分布,在改变数值的情况下不改变数据总值和均值。以借记卡余额为例,对借记卡余额做平均值处理后,余额总数不变,但脱敏后的数据在均值97602.97附近。

60a6bcefe26f4b118e50f46e4d0afd1d.png

6.偏移取整:将数据中的数字随机进行位移,从而改变原始数据。以开户时间为例,经过偏移取整后,开户时间2015-07-26 15:03:24变成了2017-06-25 15:00:00。

60a6bcefe26f4b118e50f46e4d0afd1d.png

数据脱敏技术的实现

通过程序对敏感数据的自动识别,能够自动识别的敏感字段包括:电话号码,姓名、地址、邮件、身份证号、银行卡号等。识别数据的方法使用到了正则表达式和关键字识别,身份证号、邮箱、电话号码都可以采用正则表达式的方法来识别。电话号码识别,正则表达式((((010)|(0[2-9]\d{1,2}))[-\s]?)[1-9]\d{6,7}$)|((\+?0?86\-?)?1[3|4|5|7|8][0-9]\d{8}$)银行卡号识别,正则表达式(([13-79]\d{3})|(2[1-9]\d{2})|(20[3-9]\d)|(8[01-79]\d{2}))\s?\d{4}\s?\d{4}\s?\d{4}(\s?\d{3})?$身份证号识别,正则表达式 [1-9]\d{5}(19|20)\d{9}[0-9Xx]$邮箱识别,正则表达式 [a-zA-Z0-9_%+-]{1,}@[a-zA-Z0-9-]{1,}\.[a-zA-Z]{2,4}$姓名、地址采用关键字识别方法,例如姓名中内置三百个姓来做姓名的自动识别,地址中通过街道、区、市、县、村、栋等关键字来匹配。这里我们使用了Python来实现敏感数据的扫描,只需要配置数据库连接参数,就能自动进行全库扫描。在进行全库扫描时为了防止占用的资源会比较多,通常会设置自动扫描参数,参数包括扫描最大数据量、采样数据量等,当表的数据量少于最大数据量这个阀值时,会进行全表扫描配置。另外一个参数是采样数据量,当表的数据量超过最大数据量时,会对表的数据进行采样,选取其中的一定量的数据(采样数据量)进行扫描。扫描的同时需要对扫描到的敏感数据记录下来。记录的信息包括:数据库IP、数据库用户、数据库、扫描表、扫描字段、敏感数据内容、敏感数据类型、敏感数据率等。数据动态脱敏使用ShardingSphere分布式治理子功能模块。它通过对用户输入的SQL进行解析,并依据用户提供的脱敏配置对SQL进行改写,从而实现对原文数据进行加密,并将原文数据(可选)及密文数据同时存储到底层数据库。在用户查询数据时,它又从数据库中取出密文数据,并对其解密,最终将解密后的原始数据返回给用户。Apache ShardingSphere分布式数据库中间件屏蔽了数据脱敏过程,让用户无需关注数据脱敏的实现细节,像使用普通数据那样使用脱敏数据。先看下动态数据脱敏的的实现原理:

60a6bcefe26f4b118e50f46e4d0afd1d.png

60a6bcefe26f4b118e50f46e4d0afd1d.png









相关文章
|
4天前
|
数据处理 数据安全/隐私保护
JeecgBoot 中如何对敏感信息进行脱敏处理?
数据脱敏即将一些敏感信息通过加密、格式化等方式处理,展示给用户一个新的或是格式化后的信息,避免了敏感信息的暴露。
8 1
|
2月前
|
算法 大数据 数据挖掘
数据脱敏技术
【4月更文挑战第24天】数据脱敏可以划分为静态数据脱敏(Static Data Masking, SDM)和动态数据脱敏(Dynamic Data Masking, DDM)技术。
|
2月前
|
安全 算法 数据管理
数据安全产品之认识数据脱敏系统
数据脱敏是一种信息安全技术,它通过将敏感信息转换成无实际意义的数据,同时保持原始数据的格式、类型和业务逻辑,以确保数据在使用过程中的安全性和合规性。数据脱敏的目的是保护个人隐私和企业敏感信息,防止数据在非生产环境中泄露或被不当使用。
83 0
|
8月前
|
安全 算法 大数据
数据脱敏,顾名思义就是对敏感数据进行变形处理
数据脱敏,顾名思义就是对敏感数据进行变形处理
65 2
|
前端开发 数据处理 数据安全/隐私保护
【项目数据优化一】敏感数据脱敏处理
【项目数据优化一】敏感数据脱敏处理
375 1
|
安全 调度 数据安全/隐私保护
数据安全最佳实践(6):敏感数据实时识别与批量保护【Dataphin V3.9】
在DataphinV3.9版本中,我们支持了敏感数据实时识别的能力,能够实时发现敏感数据并进行保护,形成了手动上传+周期识别+实时识别的完整敏感数据识别体系。 同时,我们在DataphinV3.9版本中,支持了给敏感数据批量配置脱敏策略,可以给没有单独配置脱敏策略的敏感数据进行批量的脱敏保护,从而确保敏感数据不泄露。
数据安全最佳实践(6):敏感数据实时识别与批量保护【Dataphin V3.9】
|
Java 关系型数据库 MySQL
数据脱敏的 3 种常见方案,好用到爆!
数据脱敏的 3 种常见方案,好用到爆!
682 0
数据脱敏的 3 种常见方案,好用到爆!
|
数据采集 大数据 数据安全/隐私保护
数据预处理-数据脱敏-身份证脱敏代码|学习笔记
快速学习数据预处理-数据脱敏-身份证脱敏代码
609 0
数据预处理-数据脱敏-身份证脱敏代码|学习笔记
|
SQL 安全 算法
数据安全最佳实践(4):数据脱敏场景如何进行where、join关联
Dataphin在3.6版本上线了脱敏等级功能,就可以完美实现脱敏分级的需求:对于绝密数据,采用底层脱敏,防止数据碰撞,保护更彻底;对于一般保护数据,可以采用仅展示脱敏的方法,既能满足正常的分析需求,又能防止意外和批量的数据泄露。
数据安全最佳实践(4):数据脱敏场景如何进行where、join关联
|
数据采集 大数据 数据安全/隐私保护
数据预处理-数据脱敏-手机号码脱敏代码|学习笔记
快速学习数据预处理-数据脱敏-手机号码脱敏代码
465 0