一种批量数据脱敏方法与流程

文档序号:21201934发布日期:2020-06-23 19:25阅读:1330来源:国知局
一种批量数据脱敏方法与流程

本发明属于计算机和信息安全领域,尤其涉及一种批量数据的脱敏方法。



背景技术:

数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。典型的,个人电话、身份证号、银行卡号都属于常见的数据脱敏对象,这些敏感数据一般是存储于高安全性的数据库服务器中,但是在例如需要进行大数据分析时,需要将这些数据传输给分析方,这就有了数据泄露的风险,因此在传输之前,需要对这些敏感数据进行脱敏。

通常而言,数据脱敏不改变数据的形式,只是改变数据的实际内容,例如,电话号码是由数字组成,脱敏后的电话号码仍然由数字组成,只是脱敏后的数字与原电话号码不同,不再具有实际意义。

数据脱敏可以分为可逆脱敏和不可逆脱敏两种方式。不可逆脱敏指的是无法从脱敏后的数据恢复出原数据,以8位电话号码为例,只要随机生成8位数字即可。可逆脱敏指的是可以从脱敏后的数据恢复出原数据,现有技术中的一种方法是提供一个置换表,例如将0置换为1,1置换为3,等等,但是这种简单的置换规则容易被破解;另外一种方法是使用一种可逆的加密算法,但是加密计算通常比较费时,在进行大批量的数据脱敏时,效率很低。



技术实现要素:

为了解决现有技术中的上述问题,本发明提供了一种批量数据的脱敏方法。

本发明采用的技术方案具体如下:

一种批量数据脱敏方法,包括以下步骤:

步骤100:将待脱敏的所有数据分批,赋予每一批数据一个批次号;

步骤200:对当前批次的待脱敏数据,随机生成一个脱敏密钥key,将该脱敏密钥和当前批次的批次号关联存储;

步骤300:根据当前批次待脱敏数据中单个数据的最大可能字符数length,设置一个循环移位寄存器;

步骤400:生成当前批次数据的双字符置换表;

步骤500:将当前批次待脱敏数据中的一个数据放入所述循环移位寄存器,并右移k2次,其中k2=keymodlength;

步骤600:根据当前批次的双字符置换表,对所述循环移位寄存器中的数据进行置换脱敏;

步骤700:重复上述步骤500-600,直到当前批次的所有数据都完成脱敏。

步骤800:重复步骤200-700,直到所有批次的数据都完成脱敏。

进一步地,所述步骤100中,批次号按序生成。

进一步地,每一批次的数据量是固定的或者随机指定的。

进一步地,所述脱敏密钥是一个64位的随机数。

进一步地,所述步骤400具体包括:

预先生成标准双字符置换表,所述标准双字符置换表包括原始双字符序列,以及和原始双字符序列一一对应的置换双字符序列;

在原始双字符序列不变的情况下,将置换双字符序列循环右移k1=keymodl次,其中,l是置换双字符序列的长度;从而得到当前批次数据的双字符置换表。

进一步地,所述步骤600中,对所述循环移位寄存器中的待脱敏数据,从其第1个字符开始,根据所述双字符置换表进行字符的两两置换;如果该待脱敏数据的长度是奇数,则将所述循环移位寄存器最后一个字符和第1个字符组成一个双字符进行置换。

进一步地,对所述循环移位寄存器中的待脱敏数据,从其第1个字符开始,根据所述双字符置换表进行字符的两两置换;如果该待脱敏数据的长度是奇数,根据设置的单字符置换表,置换其中的一个字符,剩余的字符按照双字符置换表进行置换。

进一步地,所述单字符置换表所置换的字符位置根据批次随机选定,同一个批次内,所置换的字符位置是相同的。

进一步地,所述待脱敏数据是电话号码、身份证号或者银行卡号。

进一步地,根据批次号查询到相应批次的脱敏密钥,根据脱敏密钥将脱敏数据还原成原始数据。

本发明的有益效果是:在数据脱敏可逆的情况下,提高数据脱敏的安全性,并且保证了脱敏效率。

附图说明

此处所说明的附图是用来提供对本发明的进一步理解,构成本申请的一部分,但并不构成对本发明的不当限定,在附图中:

图1是本发明步骤的基本流程图。

具体实施方式

下面将结合附图以及具体实施例来详细说明本发明,其中的示意性实施例以及说明仅用来解释本发明,但并不作为对本发明的限定。

本发明的数据脱敏方法是一种可逆脱敏,可以针对各种常见的敏感数据,例如电话号码、身份证号、银行卡号等,这些敏感数据都具有有限的字符集合。以下主要以电话号码作为具体实施例进行说明,电话号码的字符集合是0到9共十个字符,脱敏后的电话号码同样是由0到9十个字符组成,并且在需要时可恢复。

参见附图1,下面详细说明本发明的数据脱敏方法:

步骤100:将待脱敏的所有数据分批,赋予每一批数据一个批次号。

本发明针对的是批量数据的脱敏,通常而言,待脱敏的数据量都很庞大,因此本发明以批次为单位进行数据脱敏。批次号可以按序生成,例如第一个批次的批次号为1,第二个批次的批次号为2,以此类推。每一批次的数据量可以固定,也可以随机指定。在特殊情况下,如果每个批次只包括一个数据,那么就相当于每个数据都进行独立的脱敏。

以电话号码为例,可以设置每个批次的数据包括100个电话号码,每次对同一批次的电话号码进行一次独立的脱敏过程。

步骤200:对当前批次的待脱敏数据,随机生成一个脱敏密钥key,将该脱敏密钥和当前批次的批次号关联存储。

为安全性考虑,脱敏密钥一般要求是一个较大的随机数,例如,脱敏密钥可以是一个64位的随机数。每一个批次的待脱敏数据都随机生成一个脱敏密钥,这样保证了每个批次的脱敏密钥都不相同。

将脱敏密钥和批次号关联存储是为了后续还原脱敏数据时候使用,如果不考虑后续还原数据,则可以不存储脱敏密钥,这样本发明的方法实际上就变成了一个不可逆脱敏方法。

步骤300:根据待脱敏数据的最大字符数length,设置一个循环移位寄存器。

具体的,对于8位电话号码,其最大字符数length=8,设置一个8字符的循环移位寄存器,该寄存器能够以字符为单位进行循环移位。例如,设电话号码为12345678,将该电话号码存入该寄存器,寄存器存储的内容为12345678,如果右移一次,则寄存器中的内容为81234567,再右移一次,寄存器存储的内容就为78123456,以此类推,如果右移8次,则寄存器中的内容重新变为12345678。

步骤400:生成当前批次数据的双字符置换表。

本申请的置换表与现有技术不同,是双字符置换表,以两个字符为单位进行置换,即将两个字符置换成另外两个字符。通过双字符置换可以扩大置换的可能性,从而提高破解难度。以电话号码为例,其可能的双字符包括:

00,01,02,……,09;10,11,12,……,19;…………;90,91,92,……,99。

这样总共有100种可能的双字符,双字符置换表可以将其中的任意一个双字符置换成另外一个双字符,例如将00置换成12,将01置换成55,等等。

为了提高计算效率,本发明需要预先生成一个标准的双字符置换表,称为标准置换表。所述标准置换表的置换规则是随机生成的。而每个批次的双字符置换表是在标准置换表的基础上产生。具体的,下面是一个标准置换表的例子,其包括原始双字符序列和置换双字符序列,即:

表1

从表1可见,标准置换表是将100个原始序列的双字符,按照随机生成的置换规则,替换为对应的100个置换序列的双字符。

在标准置换表的基础上,根据脱敏密钥生成当前批次的置换表。具体的,在原始序列不变的情况下,将置换序列循环右移k1=keymodl次,其中,l是置换序列的长度。

以上表为例,置换序列的长度l为100,则将keymod100的值作为置换序列循环右移的次数k1,每右移一次就意味着将置换序列的第i个双字符变成第i+1个双字符(1≤i≤99),第100个双字符变成了第1个双字符,因此当前批次的置换表就变为(假设k1=2):

表2

至此,根据标准置换表和当前批次的脱敏密钥,就生成了当前批次的置换表,由于标准置换表是事先生成的,因此只需要简单的右移运算,就可以生成当前批次的置换表,可以保持较高的效率。

此外,实际上也可以使用多于双字符的多字符置换表,以获得更高的安全性,本领域技术人员可以在不脱离本发明精神的情况下,引入多字符置换表。

步骤500:将当前批次待脱敏数据中的一个数据放入所述循环移位寄存器,并右移k2次,其中k2=keymodlength。

所述k2值取决于当前批次的脱敏密钥和待脱敏数据的字符长度,因此对于当前批次的所有数据而言,k2值是固定的。假设k2值为3,则将电话号码12345678右移三次得到的数据为67812345。

步骤600:根据当前批次的双字符置换表,对所述循环移位寄存器中的数据进行置换脱敏。

具体的,由于是双字符置换,则数据的置换也是以双字符为单位进行置换。对于8位电话号码而言,将所述循环移位寄存器中的第1-2个字符按照当前批次的双字符置换表置换为对应置换序列中的双字符,将第3-4个字符、第5-6个字符、第7-8个字符也分别按照当前批次的双字符置换表置换为对应置换序列中的双字符。

例如,假设所述循环移位寄存器中的数据为98960103,则按照上述表2中的置换规则,得到脱敏数据为32738555。

如果待脱敏数据的长度是奇数,则将所述循环移位寄存器最后一个字符和第1个字符组成一个双字符进行置换。例如,假设所述循环移位寄存器中的数据为九位的989601039,则前8位同样置换为32738555,而最后一位和第一位组成的双字符为99,按照表2置换为46,则得到的最后脱敏数据为十位的3273855546。

这种脱敏方法会将长度为奇数的待脱敏数据置换为偶数长度。如果需要保持长度不变,也可以设置一个单独的单字符置换表,置换其中一个字符(例如置换待脱敏数据的第3个字符),剩下的偶数个字符就可以按照双字符置换表进行置换。具体置换哪一个字符,可以根据批次随机选定,同一个批次内是相同的。

步骤700:重复上述步骤500-600,直到当前批次的所有数据都完成脱敏。

步骤800:重复步骤200-700,直到所有批次的数据都完成脱敏。

通过上述步骤,可以按照批次完成批量数据的逐批脱敏,显然上述过程是可逆的,如果需要从待脱敏数据恢复出原数据,只要根据批次号查询到相应批次的脱敏密钥,执行上述步骤的逆过程即可。本领域技术人员可以根据上述步骤很容易得到相应的逆过程,在此不再赘述。

从本发明的上述脱敏步骤可以看出,在批量数据的脱敏过程中,使用了双字符置换表,并且数据和置换表都根据脱敏密钥进行了右移,相对于现有技术中简单的字符替换,安全性大为提高;并且,简单的右移计算不会给大量数据的脱敏带来负担,实际上可以设计一个简单的硬件就能完成上述步骤,保证了大批量数据脱敏的效率。

以上所述仅是本发明的较佳实施方式,故凡依本发明专利申请范围所述的构造、特征及原理所做的等效变化或修饰,均包括于本发明专利申请范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1