可左右滑动选省市

数据脱敏方法以及装置实用新型专利

更新时间:2024-07-01
数据脱敏方法以及装置实用新型专利 专利申请类型:实用新型专利;
源自:北京高价值专利检索信息库;

专利名称:数据脱敏方法以及装置

专利类型:实用新型专利

专利申请号:CN202110939084.5

专利申请(专利权)人:京东科技控股股份有限公司
权利人地址:北京市北京经济技术开发区科创十一街18号C座2层221室

专利发明(设计)人:徐力权,邹欣如,闫家宝,曲诗文

专利摘要:本申请公开了一种数据脱敏方法以及装置。其中方法适用于在已运行的业务系统中接入数据库中间件以实现对业务数据脱敏的场景,通过在业务数据的原明文字段的基础上,增加密文、辅助列字段,并将数据脱敏过程分成三个阶段,每个阶段处理不同的逻辑。其中第一阶段将业务系统的增量数据的明文、密文和辅助列值均入库,此阶段中数据计算过程按照明文字段操作;第二阶段将增量数据的明文、密文和辅助列值均入库,此阶段中数据计算过程按照辅助列字段操作;第三阶段将增量数据的密文和辅助列值入库,此阶段中数据计算过程按照辅助列字段操作。使得业务在不改业务代码的情况下完成数据脱敏,整个过程业务无感知,可以在业务正常运行的情况下实现数据脱敏。

主权利要求:
1.一种数据脱敏方法,其特征在于,所述方法适用于在已运行的业务系统中接入数据库中间件以实现对业务数据脱敏的场景,所述方法包括:响应于所述业务系统运行在第一阶段,接收所述业务系统运行在所述第一阶段时的第一增量数据;
确定与所述第一增量数据对应的第一明文数据、第一密文数据和第一辅助列数据,并将所述第一明文数据、第一密文数据和第一辅助列数据写入所述数据库;
响应于所述业务系统运行在第二阶段,接收所述业务系统运行在所述第二阶段时的第二增量数据;
确定与所述第二增量数据对应的第二明文数据、第二密文数据和第二辅助列数据,并将所述第二明文数据、第二密文数据和第二辅助列数据写入所述数据库;
响应于所述业务系统运行在第三阶段,接收所述业务系统运行在所述第三阶段时的第三增量数据,并确定与所述第三增量数据的第三密文数据和第三辅助列数据,将所述第三密文数据和第三辅助列数据写入所述数据库;
其中,所述第一阶段中的数据计算过程按照明文字段操作;所述第二阶段和所述第三阶段中的数据计算过程均按照辅助列字段操作;所述第一阶段、所述第二阶段和所述第三阶段中用以生成密文数据和辅助列数据的加密算法是不同的,且生成辅助列数据的加密算法需要使得辅助列数据保持不变且无法解出对应的明文数据。
2.根据权利要求1所述的数据脱敏方法,其特征在于,还包括:在所述业务系统运行在所述第一阶段和所述第二阶段时,对所述数据库中的存量数据进行脱敏处理。
3.根据权利要求2所述的数据脱敏方法,其特征在于,所述对所述数据库中的存量数据进行脱敏处理,包括:根据所述数据库之中所述存量数据的明文数据,计算与所述存量数据对应的密文数据和辅助列数据;
判断计算得到的所述密文数据和所述数据库中存储的与所述存量数据对应的密文数据是否一致,并判断计算得到的所述辅助列数据和所述数据库中存储的与所述存量数据对应的辅助列数据是否一致;
响应于计算得到的所述密文数据和所述数据库中存储的与所述存量数据对应的密文数据一致,且计算得到的所述辅助列数据和所述数据库中存储的与所述存量数据对应的辅助列数据一致,删除所述数据库之中所述存量数据的明文数据。
4.根据权利要求3所述的数据脱敏方法,其特征在于,在根据所述数据库之中所述存量数据的明文数据,计算与所述存量数据对应的密文数据和辅助列数据之前,所述方法还包括:判断所述存量数据的辅助列数据与所述存量数据的明文数据是否对应;
响应于所述存量数据的辅助列数据与所述存量数据的明文数据不对应,获取所述存量数据的明文数据;
根据所述存量数据的明文数据,计算所述存量数据的最新密文数据;
将所述存量数据的原密文数据更新为所述最新密文数据。
5.根据权利要求3或4所述的数据脱敏方法,其特征在于,在根据所述数据库之中所述存量数据的明文数据,计算与所述存量数据对应的密文数据和辅助列数据之前,所述方法还包括:对所述数据库之中所述存量数据进行数据清洗处理。
6.一种数据脱敏装置,其特征在于,所述装置适用于在已运行的业务系统中接入数据库中间件以实现对业务数据脱敏的场景,所述装置包括:收发模块,用于响应于所述业务系统运行在第一阶段,接收所述业务系统运行在所述第一阶段时的第一增量数据;
数据处理模块,用于确定与所述第一增量数据对应的第一明文数据、第一密文数据和第一辅助列数据,并将所述第一明文数据、第一密文数据和第一辅助列数据写入所述数据库;
所述收发模块,还用于响应于所述业务系统运行在第二阶段,接收所述业务系统运行在所述第二阶段时的第二增量数据;
所述数据处理模块,还用于确定与所述第二增量数据对应的第二明文数据、第二密文数据和第二辅助列数据,并将所述第二明文数据、第二密文数据和第二辅助列数据写入所述数据库;
所述收发模块,还用于响应于所述业务系统运行在第三阶段,接收所述业务系统运行在所述第三阶段时的第三增量数据;
所述数据处理模块,还用于并确定与所述第三增量数据的第三密文数据和第三辅助列数据,并将所述第三密文数据和第三辅助列数据写入所述数据库;
其中,所述第一阶段中的数据计算过程按照明文字段操作;所述第二阶段和所述第三阶段中的数据计算过程均按照辅助列字段操作;所述第一阶段、所述第二阶段和所述第三阶段中用以生成密文数据和辅助列数据的加密算法是不同的,且生成辅助列数据的加密算法需要使得辅助列数据保持不变且无法解出对应的明文数据。
7.根据权利要求6所述的数据脱敏装置,其特征在于,所述数据处理模块还用于:在所述业务系统运行在所述第一阶段和所述第二阶段时,对所述数据库中的存量数据进行脱敏处理。
8.根据权利要求7所述的数据脱敏装置,其特征在于,所述数据处理模块具体用于:根据所述数据库之中所述存量数据的明文数据,计算与所述存量数据对应的密文数据和辅助列数据;
判断计算得到的所述密文数据和所述数据库中存储的与所述存量数据对应的密文数据是否一致,并判断计算得到的所述辅助列数据和所述数据库中存储的与所述存量数据对应的辅助列数据是否一致;
响应于计算得到的所述密文数据和所述数据库中存储的与所述存量数据对应的密文数据一致,且计算得到的所述辅助列数据和所述数据库中存储的与所述存量数据对应的辅助列数据一致,删除所述数据库之中所述存量数据的明文数据。
9.根据权利要求8所述的数据脱敏装置,其特征在于,所述数据处理模块还用于:在根据所述数据库之中所述存量数据的明文数据,计算与所述存量数据对应的密文数据和辅助列数据之前,判断所述存量数据的辅助列数据与所述存量数据的明文数据是否对应;
响应于所述存量数据的辅助列数据与所述存量数据的明文数据不对应,获取所述存量数据的明文数据;
根据所述存量数据的明文数据,计算所述存量数据的最新密文数据;
将所述存量数据的原密文数据更新为所述最新密文数据。
10.根据权利要求8或9所述的数据脱敏装置,其特征在于,所述数据处理模块还用于:在根据所述数据库之中所述存量数据的明文数据,计算与所述存量数据对应的密文数据和辅助列数据之前,对所述数据库之中所述存量数据进行数据清洗处理。
11.一种计算机设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至5中任一项所述的数据脱敏方法。
12.一种计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1至5中任一项所述的数据脱敏方法。 说明书 : 数据脱敏方法以及装置技术领域[0001] 本申请涉及数据处理领域,尤其涉及一种数据脱敏方法、装置、计算机设备和存储介质。背景技术[0002] 目前数据脱敏技术,一般是依赖加密算法实现,所以业务系统在接入加密算法之后,业务代码必须得按照加密算法的SDK(SoftwareDevelopmentKit,软件开发工具包)进行改造,对业务有侵入性。可以理解,数据脱敏分静态数据脱敏和动态数据脱敏,常见的技术方案只能单独对静态数据脱敏或者只对动态数据脱敏,而相关技术中尚未有对已运行的业务系统中的历史数据和新增数据实现脱敏的手段。发明内容[0003] 本申请提供了一种数据脱敏方法、装置、计算机设备和存储介质,可以使得业务在不改业务代码的情况下完成数据脱敏,整个过程业务无感知,可以在业务正常运行的情况下实现数据脱敏。[0004] 根据本申请的第一方面,提供了一种数据脱敏方法,所述方法适用于在已运行的业务系统中接入数据库中间件以实现对业务数据脱敏的场景,所述方法包括:[0005] 响应于所述业务系统运行在第一阶段,接收所述业务系统运行在所述第一阶段时的第一增量数据;[0006] 确定与所述第一增量数据对应的第一明文数据、第一密文数据和第一辅助列数据,并将所述第一明文数据、第一密文数据和第一辅助列数据写入所述数据库;[0007] 响应于所述业务系统运行在第二阶段,接收所述业务系统运行在所述第二阶段时的第二增量数据;[0008] 确定与所述第二增量数据对应的第二明文数据、第二密文数据和第二辅助列数据,并将所述第二明文数据、第二密文数据和第二辅助列数据写入所述数据库;[0009] 响应于所述业务系统运行在第三阶段,接收所述业务系统运行在所述第三阶段时的第三增量数据,并确定与所述第三增量数据的第三密文数据和第三辅助列数据,将所述第三密文数据和第三辅助列数据写入所述数据库;[0010] 其中,所述第一阶段中的数据计算过程按照明文字段操作;所述第二阶段和所述第三阶段中的数据计算过程均按照辅助列字段操作。[0011] 根据本申请的第二方面,提供了一种数据脱敏装置,所述装置适用于在已运行的业务系统中接入数据库中间件以实现对业务数据脱敏的场景,所述装置包括:[0012] 收发模块,用于响应于所述业务系统运行在第一阶段,接收所述业务系统运行在所述第一阶段时的第一增量数据;[0013] 数据处理模块,用于确定与所述第一增量数据对应的第一明文数据、第一密文数据和第一辅助列数据,并将所述第一明文数据、第一密文数据和第一辅助列数据写入所述数据库;[0014] 所述收发模块,还用于响应于所述业务系统运行在第二阶段,接收所述业务系统运行在所述第二阶段时的第二增量数据;[0015] 所述数据处理模块,还用于确定与所述第二增量数据对应的第二明文数据、第二密文数据和第二辅助列数据,并将所述第二明文数据、第二密文数据和第二辅助列数据写入所述数据库;[0016] 所述收发模块,还用于响应于所述业务系统运行在第三阶段,接收所述业务系统运行在所述第三阶段时的第三增量数据;[0017] 所述数据处理模块,还用于并确定与所述第三增量数据的第三密文数据和第三辅助列数据,并将所述第三密文数据和第三辅助列数据写入所述数据库;[0018] 其中,所述第一阶段中的数据计算过程按照明文字段操作;所述第二阶段和所述第三阶段中的数据计算过程均按照辅助列字段操作。[0019] 根据本申请的第三方面,提供了一种计算机设备,包括:[0020] 至少一个处理器;以及[0021] 与所述至少一个处理器通信连接的存储器;其中,[0022] 所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述第一方面所述的数据脱敏方法。[0023] 根据本申请的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行前述第一方面所述的数据脱敏方法。[0024] 根据本申请的技术方案,通过在业务数据的原明文字段的基础上,增加密文、辅助列字段,并将数据脱敏过程分成三个阶段,每个阶段处理不同的逻辑。其中第一阶段将业务系统的增量数据的明文、密文和辅助列值均入库,此阶段中数据计算过程按照明文字段操作;第二阶段将增量数据的明文、密文和辅助列值均入库,此阶段中数据计算过程按照辅助列字段操作;第三阶段将增量数据的密文和辅助列值入库,此阶段中数据计算过程按照辅助列字段操作。使得业务在不改业务代码的情况下完成数据脱敏,整个过程业务无感知,可以在业务正常运行的情况下实现数据脱敏。[0025] 应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。附图说明[0026] 附图用于更好地理解本方案,不构成对本申请的限定。其中:[0027] 图1为本申请实施例所提供的一种数据脱敏方法的流程图;[0028] 图2为本申请实施例所提供的数据库中间件内部运行架构图;[0029] 图3为本申请实施例所提供的业务数据脱敏处理的示例图;[0030] 图4为本申请实施例所提供的存量数据脱敏处理的流程图;[0031] 图5为本申请实施例所提供的一种数据脱敏装置的结构框图;[0032] 图6示出了可以用来实施本申请的实施例的示例计算机设备的示意性框图。具体实施方式[0033] 以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。[0034] 首先对本申请所涉及的术语进行描述说明。[0035] 1)数据脱敏[0036] 数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。数据脱敏划分为静态数据脱敏和动态数据脱敏。其中,静态数据脱敏与动态数据脱敏主要的区别是:是否在使用敏感数据当时进行脱敏。静态数据脱敏一般用在非生产环境,在敏感数据从生产环境脱敏完毕之后再在非生产环境使用,一般用于解决测试、开发库需要生产库的数据量与数据间的关联,以排查问题或进行数据分析等,但又不能将敏感数据存储于非生产环境的问题。动态数据脱敏一般用在生产环境,在访问敏感数据当时进行脱敏,一般用来解决在生产环境需要根据不同情况对同一敏感数据读取时需要进行不同级别脱敏的问题。[0037] 2)数据加密技术[0038] 加密是一种限制对网络上传输数据的访问权的技术。原始数据(也称为明文,Plaintext)被加密设备(硬件或软件)和密钥加密而产生的经过编码的数据称为密文(Ciphertext)。将密文还原为原始明文的过程称为解密,它是加密的反向处理,但解密者必须利用相同类型的加密设备和密钥对密文进行解密。[0039] 加密类型可以简单地分为四种:[0040] 1.根本不考虑解密问题;[0041] 2.私用密钥加密技术;比如对称式加密,该对称式加密方式对加密和解密使用相同的密钥。通常,这种加密方式在应用中难以实施,因为用同一种安全方式共享密钥很难。如:RC4(RivestCipher4,流加密算法)、RC2(RivestCipher2,传统对称分组加密算法)、DES(DataEncryptionStandard,使用密钥加密的块算法)和AES(AdvancedEncryptionStandard,高级加密标准)系列加密算法。[0042] 3.公开密钥加密技术:比如非对称密钥加密,该非对称密钥加密使用一组公共/私人密钥系统,加密时使用一种密钥,解密时使用另一种密钥。公共密钥可以广泛的共享和透露。当需要用加密方式向服务器外部传送数据时,这种加密方式更方便。如:RSA。[0043] 4.数字证书。数字证书是一种非对称密钥加密,但是,一个组织可以使用证书并通过数字签名将一组公钥和私钥与其拥有者相关联。[0044] 相关技术中,数据脱敏技术一般是依赖加密算法实现,所以业务在接入加密算法之后,业务代码必须得按照加密算法的SDK进行改造,对业务有侵入性。数据脱敏分静态数据脱敏和动态数据脱敏,常见的技术方案只能单独对静态数据脱敏或者只对动态数据脱敏,当已运行的业务系统要实现对历史数据脱敏而且新增数据也是脱敏的场景,要完成脱敏,而且业务无感知,目前并没有太好解决方案。另外,常规的通过对数据进行加密算法脱敏之后,就不能再回退,即使能回退,也已经对业务造成影响了,常见技术方案不具备回滚能力,或者回滚是对业务有侵入。[0045] 基于上述问题,本申请提供了一种数据脱敏方法、装置、计算机设备和存储介质。具体地,下面参考附图描述本申请实施例的数据脱敏方法、装置、计算机设备和存储介质。[0046] 需要说明的是,本申请实施例的数据脱敏方法适用于在已运行的业务系统中接入数据库中间件以实现对业务数据脱敏的场景。如图1所示,该数据脱敏方法可以包括如下步骤。[0047] 步骤101,响应于业务系统运行在第一阶段,接收业务系统运行在第一阶段时的第一增量数据。[0048] 步骤102,确定与第一增量数据对应的第一明文数据、第一密文数据和第一辅助列数据,并将第一明文数据、第一密文数据和第一辅助列数据写入数据库。[0049] 可选地,在接收到业务系统运行在第一阶段时的第一增量数据时,可先判断该第一增量数据的类型是否为敏感数据,若否,则直接将第一增量数据的第一明文数据写入数据库。若该第一增量数据的类型为敏感数据,则需要对该第一增量数据进行脱敏。可先确定该第一增量数据的第一明文数据,并根据该第一明文数据确定对应的第一密文数据和第一辅助列数据。[0050] 在一种实现方式中,可采用第一加密算法对第一增量数据的明文数据(即上述第一明文数据)进行加密,得到第一增量数据的第一密文数据。采用第二加密算法对第一增量数据的明文数据(即上述第一明文数据)进行加密,得到第一增量数据的第一辅助列数据。其中,第一加密算法与第二加密算法不同。也就是说,可采用不同的加密算法对增量数据进行加密,对应得到增量数据的明文数据和辅助列数据。[0051] 在本申请实施例中,第一加密算法可以是对称式加密算法、非对称密钥加密算法或数字证书中的任意一种。第二加密算法可以是哈希算法,即第一辅助列数据可以是一个哈希值。[0052] 需要说明的是,在本申请实施例中,增量数据的密文数据可以随着加密算法的私钥的变化而变化,而辅助列数据是保持不变的且无法解出对应的明文数据。[0053] 步骤103,响应于业务系统运行在第二阶段,接收业务系统运行在第二阶段时的第二增量数据。[0054] 步骤104,确定与第二增量数据对应的第二明文数据、第二密文数据和第二辅助列数据,并将第二明文数据、第二密文数据和第二辅助列数据写入数据库。[0055] 可选地,在接收到业务系统运行在第二阶段时的第二增量数据时,可先判断该第二增量数据的类型是否为敏感数据,若否,则直接将第二增量数据的第二明文数据写入数据库。若该第二增量数据的类型为敏感数据,则需要对该第二增量数据进行脱敏。可先确定该第二增量数据的第二明文数据,并根据该第二明文数据确定对应的第二密文数据和第二辅助列数据。[0056] 在一种实现方式中,可采用第一加密算法对第二增量数据的明文数据(即上述第二明文数据)进行加密,得到第二增量数据的第二密文数据。采用第二加密算法对第二增量数据的明文数据(即上述第二明文数据)进行加密,得到第二增量数据的第二辅助列数据。其中,第一加密算法与第二加密算法不同。也就是说,可采用不同的加密算法对增量数据进行加密,对应得到增量数据的明文数据和辅助列数据。[0057] 在本申请实施例中,第一加密算法可以是对称式加密算法、非对称密钥加密算法或数字证书中的任意一种。第二加密算法可以是哈希算法,即第二辅助列数据可以是一个哈希值。[0058] 需要说明的是,在本申请实施例中,增量数据的密文数据可以随着加密算法的私钥的变化而变化,而辅助列数据是保持不变的且无法解出对应的明文数据。[0059] 步骤105,响应于业务系统运行在第三阶段,接收业务系统运行在第三阶段时的第三增量数据,并确定与第三增量数据的第三密文数据和第三辅助列数据,将第三密文数据和第三辅助列数据写入数据库。[0060] 可选地,在接收到业务系统运行在第三阶段时的第三增量数据时,可先判断该第三增量数据的类型是否为敏感数据,若否,则直接将第三增量数据的第三明文数据写入数据库。若该第三增量数据的类型为敏感数据,则需要对该第三增量数据进行脱敏。可先确定该第三增量数据的第三明文数据,并根据该第三明文数据确定对应的第三密文数据和第三辅助列数据。[0061] 在一种实现方式中,可采用第一加密算法对第三增量数据的明文数据(即上述第三明文数据)进行加密,得到第三增量数据的第三密文数据。采用第二加密算法对第三增量数据的明文数据(即上述第三明文数据)进行加密,得到第三增量数据的第三辅助列数据。其中,第一加密算法与第二加密算法不同。也就是说,可采用不同的加密算法对增量数据进行加密,对应得到增量数据的明文数据和辅助列数据。[0062] 在本申请实施例中,第一加密算法可以是对称式加密算法、非对称密钥加密算法或数字证书中的任意一种。第二加密算法可以是哈希算法,即第三辅助列数据可以是一个哈希值。[0063] 需要说明的是,在本申请实施例中,增量数据的密文数据可以随着加密算法的私钥的变化而变化,而辅助列数据是保持不变的且无法解出对应的明文数据。[0064] 其中,在本申请实施例中,第一阶段中的数据计算过程按照明文字段操作;第二阶段和第三阶段中的数据计算过程均按照辅助列字段操作。[0065] 需要说明的是,本申请实施例中的数据脱敏是调用加解密系统接口实现数据加解密,该数据脱敏方法的整个过程是在数据库中间件层实现的。如图2所示,为数据库中间件内部运行架构图。从图2所示可知,数据从应用层到数据库落地,需要经历“解析==>路由==>重写==>出入库==>归并==>返回”这几个步骤。[0066] 值得注意的是,本申请不直接对数据做加密,这是因为:假如直接对数据加密,当业务系统接入中间件后,增量数据就已经开始加密,但是数据库存的还是明文,而新数据写入是密文,这样数据库里既有明文又有密文,业务系统就不能用了,而且,假如加密解密失败,或者出错,那么数据就不可恢复了,风险很高。再有一种情况,如果是分表加密,就需要数据路由,明文加密之后变成了密文,那么路由key值变了,数据路由也就变了,业务数据就查不到之前入库的数据了,所以也会有问题。[0067] 针对上述问题,本申请通过在原明文字段的基础上,增加了密文、辅助列这两个字段,并将数据脱敏过程分成三个阶段,每个阶段处理不同的逻辑。下面来具体介绍脱敏三个阶段。假设脱敏的列,即明文为A,密文为B,辅助列为C,将脱敏的过程分为三个阶段,每个阶段的操作如下表描述:[0068] 表1[0069]阶段 明文A 密文B 辅助列C第一阶段 入库(按此操作) 入库 入库第二阶段 入库 入库 入库(按此操作)第三阶段 不入库 入库 入库(按此操作)[0070] 其中,第一阶段:业务系统应用接入数据库中间件的时候,此时业务出入数据库是明文,计算操作也是使用明文操作,但此时已同时写入了密文和辅助列,即使此时接入有问题,因为明文还在,所以对业务系统没有影响,可以随时回滚。第二阶段:业务系统运行到这个阶段,说明接入数据库中间件和加解密系统的加解密过程都没有问题,那么此时可以将计算逻辑切换到密文计算的逻辑,因为明文最终是会删掉的,此时数据写入与第一阶段的数据写入没有区别,但是计算过程是按照辅助列数据操作。假如此时有问题,那么可以将系统切回一阶段,明文密文都在,所以没有风险。第三阶段:业务系统运行到这个阶段,说明接入数据库中间件和加解密系统的加解密过程都没有问题,而且按密文辅助列操作也没有问题,那么明文就没有用了,所以在第三阶段,明文就不再写库。[0071] 根据上述设计,可以枚举CRUD几种操作在这几个阶段的处理情况:(说明:xx代表明文数据,yy代表密文数据,zz代表辅助列数据,ww代表其他字段值,即非敏感数据)[0072] 1)insertinto、replaceinto[0073] 脱敏前:insertintotable(A)value(xx);[0074] 第一阶段:insertintotable(A,B,C)value(xx,yy,zz)[0075] 第二阶段:insertintotable(A,B,C)value(xx,yy,zz)[0076] 第三阶段:insertintotable(B,C)value(yy,zz)[0077] 2)SelectwhereA=xx[0078] 脱敏前:selectA,otherfromtablewhereA=xx;[0079] 第一阶段:selectA,otherfromtablewhereA=xx;[0080] 第二阶段:selectA,B,C,otherfromtablewhereC=zz;[0081] 第三阶段:selectB,C,otherfromtablewhereC=zz;[0082] 在数据归并阶段,由CDS将A、B、C的值转换成xx,返回给业务层。[0083] 3)SelectAwhereother=ww[0084] 脱敏前:selectA,otherfromtablewhereother=ww;[0085] 第一阶段:selectA,otherfromtablewhereother=ww;[0086] 第二阶段:selectA,B,C,otherfromtablewhereother=ww;[0087] 第三阶段:selectB,C,otherfromtablewhereother=ww;[0088] 在数据归并阶段,判断C是否存在,如果存在则根据B+C计算A返回,如果不存在直接返回A[0089] 4)UpdatetablesetA=xxwhereA=xx[0090] 第一阶段:updatetablesetA=xxwhereA=xx;[0091] 第二阶段:updatetablesetA=xx,B=yy,C=zzwhereC=zz;[0092] 第三阶段:updatetableB=yy,C=zzwhereC=zz[0093] 5)UpdatetablesetA=xxwhereother=ww[0094] 第一阶段:updatetablesetA=xxwhereother=ww;[0095] 第二阶段:updatetablesetA=xx,B=yy,C=zzwhereother=ww;[0096] 第三阶段:updatetablesetB=yy,C=zzwhereother=ww;[0097] 6)Deletefromtablewhereother=xx这种情况直接执行,不做改写[0098] 7)DeletefromtablewhereA=xx[0099] 第一阶段:deletefromtablewhereA=xx;[0100] 第二阶段:deletefromtablewhereC=zz;[0101] 第三阶段:deletefromtablewhereC=zz。[0102] 需要说明的是,DDL(DataDefinitionLanguage,数据库模式定义语言)不在脱敏考虑范围内。[0103] 值得注意的是,在本申请实施例中,在业务系统运行在第二阶段和第三阶段时,通过使用辅助列数据来进行计算操作。这是因为:为了安全,数据加密的私钥可能会变化,这样一来,同一个密文,在某一个时刻以后,可能加密出来的密文是不一样的,所以就不能用密文直接计算了,因为加密密码改变以后,路由逻辑就不一样了,所以需要一个不变的值去辅助计算,这个就是辅助列的由来以及计算不用密文,而是直接用辅助列的原因,而由于该辅助列是由哈希算法算的,即使解出了辅助列,也无法解出明文。[0104] 上述是数据库中间件脱敏内部实现的理论基础,下面来看下怎么在数据库中间件内核层完成这些改造。如图3所示,根据设计方案,数据在路由的时候,不需要做加密,直接用明文路由,而在底层交互的时候,需要对SQL做相应的改写,最后业务在获取最后的ResultSet的时候,需要对相应的数据做脱敏处理,最终用户得到的依旧是明文。[0105] 需要说明的是,上面给出了数据库中间件如何实现增量数据的脱敏,此时其实业务系统已经可以接入数据库中间件实现明文密文的兼容运行,也就是接入数据库中间件以后,增量数据已经是明文加密文了,而增量数据也能兼容之前的业务系统,而这些第一阶段和第二阶段的增量数据写入到数据库中成为了存量数据(即历史数据)。接下来就是要对数据库中的存量数据(即历史数据)进行清洗,以实现对历史数据的脱敏。[0106] 在本申请一些实施例中,可对业务系统运行在第一阶段和第二阶段时,对数据库中的存量数据进行脱敏处理。在一种实现方式中,如图4所示,对数据库中的存量数据进行脱敏处理的实现方式可包括如下步骤。[0107] 步骤401,根据数据库之中存量数据的明文数据,计算与存量数据对应的密文数据和辅助列数据。[0108] 可选地,采用第一加密算法计算存量数据的密文数据,并采用第二加密算法计算存量数据的辅助列数据。其中,第一加密算法与第二加密算法不同。作为一种示例,第一加密算法可以是对称式加密算法、非对称密钥加密算法或数字证书中的任意一种。第二加密算法可以是哈希算法,即辅助列数据可以是一个哈希值。[0109] 步骤402,判断计算得到的密文数据和数据库中存储的与存量数据对应的密文数据是否一致,并判断计算得到的辅助列数据和数据库中存储的与存量数据对应的辅助列数据是否一致。[0110] 步骤403,响应于计算得到的密文数据和数据库中存储的与存量数据对应的密文数据一致,且计算得到的辅助列数据和数据库中存储的与存量数据对应的辅助列数据一致,删除数据库之中存量数据的明文数据。[0111] 可选地,在本申请一些实施例中,在根据数据库之中存量数据的明文数据,计算与存量数据对应的密文数据和辅助列数据之前,可判断存量数据的辅助列数据与存量数据的明文数据是否对应;响应于存量数据的辅助列数据与存量数据的明文数据不对应,获取存量数据的明文数据;根据存量数据的明文数据,计算存量数据的最新密文数据;将存量数据的原密文数据更新为最新密文数据。[0112] 可选地,在本申请一些实施例中,在根据数据库之中存量数据的明文数据,计算与存量数据对应的密文数据和辅助列数据之前,对数据库之中存量数据进行数据清洗处理。[0113] 需要说明的是,本申请实施例中的存量数据脱敏可包括:数据校正步骤、数据清洗步骤、数据校验步骤和明文删除步骤。[0114] 其中,数据校正步骤[0115] 由于业务系统应用升级数据库中间件阶段,此时可能存在新老数据库中间件并存的场景,老应用更新了明文,但是新应用更新了密文,造成明文密文不一致,故应用全升级后,本申请可先对这部分被加密过的数据进行数据校正。数据校正是指将以明文为准,将已有的密文根据此明文做一次加密。例如,可先判断辅助列存在的数据,比较明文和辅助列,如果明文和辅助列对应关系不正确,即该辅助列不是基于该明文计算的,则按照明文做更新。当然理论情况下这一阶段数据比较少,校正过程一般比较快。[0116] 数据清洗步骤[0117] 清洗数据的逻辑是依据增量脱敏的实现,将已有的数据取出来后进行update,因为第一阶段在update明文的过程中,将密文也做更新,所以能实现数据脱敏,同时也验证了业务接入数据库中间件后update是不是正确的。[0118] 当然,在数据清洗中的update也不是简单的select出数据,然后一条条做update,而是用数据库锁的方式实现的,即“SelectAfromtableforupdate;updateAwhereA=A;”之所以采取这种方式,是因为在一种特殊情况会出现数据不一致,假设业务已经接入数据库中间件进行一阶段脱敏,那么有可能业务系统正在update一条记录,若此时也在update这条记录,从而导致数据不一致,为了避免这种情况,数据清洗阶段在更新数据时需要加锁,由于加锁会影响性能,所以数据清洗阶段尽量在业务低峰期运行,而且每次清洗的数据不要太大。[0119] 数据校验步骤[0120] 数据校验是为了再加一次保险,保证明文和密文是一致的,校验的过程是根据明文,查对应的密文和辅助列是否正确。例如,可分段将表中的明文A取出,利用加解密系统获取加密后的数据B和C,判断加密后的数据B和C与数据库中该明文A所对应的密文和辅助列是否一致。[0121] 明文删除步骤[0122] 明文删除的过程,就是updatetablesetA=‘’;由于需要大量的update,如果直接操作数据库的话会对数据库的性能有影响,故本申请可采用了分段update的方式,逐步将明文设置为空,从而彻底完成数据脱敏。例如,在判断计算得到的密文数据和数据库中存储的与存量数据对应的密文数据一致,且计算得到的辅助列数据和数据库中存储的与存量数据对应的辅助列数据一致,可将数据库之中存储的该存量数据的明文数据置为空,以删除数据库之中存量数据的明文数据。[0123] 根据本申请实施例的数据脱敏方法,通过在业务数据的原明文字段的基础上,增加密文、辅助列字段,并将数据脱敏过程分成三个阶段,每个阶段处理不同的逻辑。其中第一阶段将业务系统的增量数据的明文、密文和辅助列值均入库,此阶段中数据计算过程按照明文字段操作;第二阶段将增量数据的明文、密文和辅助列值均入库,此阶段中数据计算过程按照辅助列字段操作;第三阶段将增量数据的密文和辅助列值入库,此阶段中数据计算过程按照辅助列字段操作。可以使得业务系统在不改业务代码的情况下完成数据脱敏;另外,提供了一种完整的存量数据脱敏和增量数据脱敏方案,而且整个过程业务无感知,即可以在业务系统正常运行的情况下实现数据脱敏;此外,提供一套完整异常处理方案,当脱敏出现问题的时候可以随时回滚,数据保持完整,整个过程业务无感知。[0124] 为了实现上述实施例,本申请还提出了一种数据脱敏装置。[0125] 图5为本申请实施例所提供的一种数据脱敏装置的结构框图。需要说明的是,本申请实施例的数据脱敏装置适用于在已运行的业务系统中接入数据库中间件以实现对业务数据脱敏的场景。如图5所示,该数据脱敏装置可以包括:收发模块501和数据处理模块502。[0126] 其中,收发模块501用于响应于业务系统运行在第一阶段,接收业务系统运行在第一阶段时的第一增量数据;[0127] 数据处理模块502用于确定与第一增量数据对应的第一明文数据、第一密文数据和第一辅助列数据,并将第一明文数据、第一密文数据和第一辅助列数据写入数据库;[0128] 收发模块501还用于响应于业务系统运行在第二阶段,接收业务系统运行在第二阶段时的第二增量数据;[0129] 数据处理模块502还用于确定与第二增量数据对应的第二明文数据、第二密文数据和第二辅助列数据,并将第二明文数据、第二密文数据和第二辅助列数据写入数据库;[0130] 收发模块501还用于响应于业务系统运行在第三阶段,接收业务系统运行在第三阶段时的第三增量数据;[0131] 数据处理模块502还用于并确定与第三增量数据的第三密文数据和第三辅助列数据,并将第三密文数据和第三辅助列数据写入数据库;[0132] 其中,在本申请实施例中,第一阶段中的数据计算过程按照明文字段操作;第二阶段和第三阶段中的数据计算过程均按照辅助列字段操作。[0133] 可选地,在本申请一些实施例中,数据处理模块502还可用于:在业务系统运行在第一阶段和第二阶段时,对数据库中的存量数据进行脱敏处理。[0134] 在本申请实施例中,数据处理模块502对数据库中的存量数据进行脱敏处理的实现过程可如下:根据数据库之中存量数据的明文数据,计算与存量数据对应的密文数据和辅助列数据;判断计算得到的密文数据和数据库中存储的与存量数据对应的密文数据是否一致,并判断计算得到的辅助列数据和数据库中存储的与存量数据对应的辅助列数据是否一致;响应于计算得到的密文数据和数据库中存储的与存量数据对应的密文数据一致,且计算得到的辅助列数据和数据库中存储的与存量数据对应的辅助列数据一致,删除数据库之中存量数据的明文数据。[0135] 可选地,在本申请一些实施例中,数据处理模块502在根据数据库之中存量数据的明文数据,计算与存量数据对应的密文数据和辅助列数据之前,判断存量数据的辅助列数据与存量数据的明文数据是否对应;响应于存量数据的辅助列数据与存量数据的明文数据不对应,获取存量数据的明文数据;根据存量数据的明文数据,计算存量数据的最新密文数据;将存量数据的原密文数据更新为最新密文数据。[0136] 可选地,在本申请其他实施例中,数据处理模块502在根据数据库之中存量数据的明文数据,计算与存量数据对应的密文数据和辅助列数据之前,对数据库之中存量数据进行数据清洗处理。[0137] 关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。[0138] 根据本申请实施例的数据脱敏装置,通过在业务数据的原明文字段的基础上,增加密文、辅助列字段,并将数据脱敏过程分成三个阶段,每个阶段处理不同的逻辑。其中第一阶段将业务系统的增量数据的明文、密文和辅助列值均入库,此阶段中数据计算过程按照明文字段操作;第二阶段将增量数据的明文、密文和辅助列值均入库,此阶段中数据计算过程按照辅助列字段操作;第三阶段将增量数据的密文和辅助列值入库,此阶段中数据计算过程按照辅助列字段操作。可以使得业务系统在不改业务代码的情况下完成数据脱敏;另外,提供了一种完整的存量数据脱敏和增量数据脱敏方案,而且整个过程业务无感知,即可以在业务系统正常运行的情况下实现数据脱敏;此外,提供一套完整异常处理方案,当脱敏出现问题的时候可以随时回滚,数据保持完整,整个过程业务无感知。[0139] 基于本申请的实施例,本申请还提供了一种计算机设备,至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行前述任一实施例所述的数据脱敏方法。[0140] 基于本申请的实施例,本申请还提供了一种计算机可读存储介质,其中,计算机指令用于使计算机执行根据本申请实施例提供的前述任一实施例所述的数据脱敏方法。[0141] 图6示出了可以用来实施本申请的实施例的示例计算机设备的示意性框图。计算机设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。[0142] 如图6所示,设备600包括计算单元601,其可以根据存储在只读存储器(ROM)602中的计算机程序或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序,来执行各种适当的动作和处理。在RAM603中,还可存储设备600操作所需的各种程序和数据。计算单元601、ROM602以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。[0143] 设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。[0144] 计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如数据脱敏方法。例如,在一些实施例中,数据脱敏方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到RAM603并由计算单元601执行时,可以执行上文描述的数据脱敏方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行数据脱敏方法。[0145] 本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。[0146] 用于实施本申请的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。[0147] 在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD‑ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。[0148] 为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入)来接收来自用户的输入。[0149] 可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、互联网和区块链网络。[0150] 计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端‑服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("VirtualPrivateServer",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。[0151] 应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。[0152] 上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

专利地区:北京

专利申请日期:2021-08-16

专利公开日期:2024-06-18

专利公告号:CN113591127B

电话咨询
读内容
搜本页
回顶部