数据库数值型字段的加密方法转让专利

申请号 : CN201910558130.X

文献号 : CN110334530B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张毅骏

申请人 : 上海派拉软件股份有限公司

摘要 :

本发明涉及一种数据库数值型字段的加密方法,本发明基于统计分布的分位数建立了一个实数与一个0与1之间数字的映射,从而实现了对数值字段的加密,其具有以下优点:固定性:当统计分布的参数固定后,这种映射是固定的;保密性:对某一分布,除非已经掌握了测度为1的映射关系,否则没有办法通过掌握的数据精确的反向推测出其他未知的映射关系;计算简单:由于对于给定的分布,这种映射关系是一一对应的,所以在计算上较为简单,性能较高。

权利要求 :

1.一种数据库数值型字段的加密方法,其特征在于,包括以下步骤:

步骤1、获取待加密字段的字段类型,若字段类型为数值型字段,则进入步骤2,否则,退出本方法;

步骤2、获得待加密字段的可取值范围,依据事先确定的划分方法将可取值范围划分为N组数字组,N≥1,每组数字组由M个数字组成,M≥1;

步骤3、确定第n组数字组所对应的分布类型,n=1,…,N,并规定第n组数字组中M个数字对应M个不同的分位数;

步骤4、依据步骤3确定的分布类型及M个分位数,计算得到第n组数字组的分布参数,并将第n组数字组的分布参数记入秘钥库,并记录第n组数字组的分布参数在秘钥库中的位置;

步骤5、利用分布参数在秘钥库中的位置及M个不同的分位数对第n组数字组中的M个数字进行分位数加密获得与M个数字相对应的分位数加密数,第n组数字组中的第m个数字对应的分位数加密数由位置字段及分位数字段组成,m=1,…,M,位置字段表示第n组数字组所对应的分布参数在秘钥库中的位置,分位数字段表示步骤3规定的第n组数字组中的第m个数字所对应的分位数;

步骤6、判断是否遍历N组数字组,若已经遍历完,则进入步骤7,若未遍历完,则返回步骤3;

步骤7、获得待加密字段的可取值范围中每个数字所对应的分位数加密数,由所有分位数加密数组成分位数加密集合;

步骤8、利用分位数加密集合对数据库中上述待加密字段的数据进行加密。

2.如权利要求1所述的一种数据库数值型字段的加密方法,其特征在于,组成每组数字组的数字的数量相同或不相同。

说明书 :

数据库数值型字段的加密方法

技术领域

[0001] 本发明涉及一种基于统计分布与统计分布分位数的数据库数值型字段的加密方法。

背景技术

[0002] 随着互联网和大数据的兴起,数据成为了社会生产中不可忽视的生产资料,而数据安全也成为了互联网安全领域的核心话题,关于数据加密的算法也成为了算法研究的新领域。
[0003] 在数据库中的数据,根据其包含内容的不同,可粗略的分为数值型字段和非数值型字段。数值型字段是指字段中包含的数据,例如10这样的数字的字段;而非数值型字段是指字段中包含的数据不是数字的字段。
[0004] 数值型字段一般会包含极度敏感的信息,比如:员工收入、员工私人电话号码和合同营收额度等。所以对这类数据的加密非常有必要,因为这些数据要么是关乎个人隐私,要么关乎公司的核心利益,如果不慎泄露则公司甚至会有法律风险。对数值型字段的加密往往有以下几个难点:
[0005] (a)欠缺保密性
[0006] 对任何一个加密方法来说,保密性是比较重要的考量,试想若是一种加密方法并不能做到保密的话,这种加密方法就没有存在的必要了。
[0007] 在对数值字段的加密的过程中,由于所有的数值都是有0到9这十个数字组成,如果只是简单的将各个数字映射成固定的密文,则当一定数量的密文被截获并破解后,整个字段的加密就失去了意义。而如果将各个数字映射成不固定的密文,那很难做到在没有数据主键(即数据库中的位置)时,对密文进行解密。
[0008] (b)密文超出字段限制
[0009] 由于数据存储在数据库中,数据库中的每个字段在定义后,都是有类型和字段长度的限制的,例如:在SQL Server数据库中,若一个字段被定义成了smallint型,则字段中的数据只能是整数,并且整数的大小在-32,768到32,767之间。若对这个字段加密,则密文的格式也需要是只能是整数,并且整数的大小在-32,768到32,767之间。
[0010] (c)解密的性能
[0011] 在讨论数据库中的数据相关的加密方法时,解密的性能也是加密方法的重要考量。实际应用中可能可以允许一个加密方法在对明文加密时有一定的耗时,但几乎不能忍受加密方法在对密文解密时性能脱节,否则会影响用户体验。
[0012] 综上所述,在对数据库中的数值型字段进行加密时,需要考虑加密方法的保密性,使密文符合数据库字段规范和解密的性能问题。虽然使用某些复杂的算法可以满足保密性并使密文符合数据库字段规范,但往往这类算法的解密性能没法满足实际需求。

发明内容

[0013] 本发明的目的是:提供一种解密性能能够满足实际需求的对数据库中的数值型字段进行加密的方法。
[0014] 为了达到上述目的,本发明的技术方案是提供了一种数据库数值型字段的加密方法,其特征在于,包括以下步骤:
[0015] 步骤1、获取待加密字段的字段类型,若字段类型为数值型字段,则进入步骤2,否则,退出本方法;
[0016] 步骤2、获得待加密字段的可取值范围,依据事先确定的划分方法将可取值范围划分为N组数字组,N≥1,每组数字组由M个数字组成,M≥1;
[0017] 步骤3、确定第n组数字组所对应的分布类型,n=1,…,N,并规定第n组数字组中M个数字对应M个不同的分位数;
[0018] 步骤4、依据步骤3确定的分布类型及M个分位数,计算得到第n组数字组的分布参数,并将第n组数字组的分布参数记入秘钥库,并记录第n组数字组的分布参数在秘钥库中的位置;
[0019] 步骤5、利用分布参数在秘钥库中的位置及M个不同的分位数对第n组数字组中的M个数字进行分位数加密获得与M个数字相对应的分位数加密数,第n组数字组中的第m个数字对应的分位数加密数由位置字段及分位数字段组成,m=1,…,M,位置字段表示第n组数字组所对应的分布参数在秘钥库中的位置,分位数字段表示步骤3规定的第n组数字组中的第m个数字所对应的分位数;
[0020] 步骤6、判断是否遍历N组数字组,若已经遍历完,则进入步骤7,若未遍历完,则返回步骤3;
[0021] 步骤7、获得待加密字段的可取值范围中每个数字所对应的分位数加密数,由所有分位数加密数组成分位数加密集合;
[0022] 步骤8、利用分位数加密集合对数据库中的数据进行加密。
[0023] 优选地,组成每组数字组的数字的数量相同或不相同。
[0024] 本发明基于统计分布的分位数建立了一个实数与一个0与1之间数字的映射,从而实现了对数值字段的加密,其具有以下优点:
[0025] (1)固定性:当统计分布的参数固定后,这种映射是固定的;
[0026] (2)保密性:对某一分布,除非已经掌握了测度为1的映射关系,否则没有办法通过掌握的数据精确的反向推测出其他未知的映射关系;
[0027] (3)计算简单:由于对于给定的分布,这种映射关系是一一对应的,所以在计算上较为简单,性能较高。

附图说明

[0028] 图1为本发明中的加密过程流程图;
[0029] 图2为本发明中的解密过程流程图。

具体实施方式

[0030] 下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
[0031] 本发明提供的一种数据库数值型字段的加密方法基于如下概念:
[0032] 统计学中,在统计分组的基础上,把总体的所有单位数按组归并排列,形成各组单位数在总体中的分布,称统计分布。每一类不同的参数统计分布,在给定了对应的分布参数后,都对应着自己独特的分布密度函数和分布累计函数,例如,某个正态分布,在给定了分布的均值和分布的方差后,该正态分布就是可以确定的。
[0033] 统计学中,分位数指的就是连续分布函数中的一个点,这个点对应概率p。若概率0<p<1,随机变量X或它的概率分布的分位数Za,是指满足条件p(X≤Za)=α的实数。
[0034] 本实施例将以SQL Server数据库中smallint型的数值型字段作为例子进一步说明本发明。
[0035] 由于数据库字段加密中要求密文需要符合加密明文的数据字段的限制(类型、长度),对SQL Server数据库中smallint型的数值型字段,要求字段的所有存储数据位数字,并且数字的大小范围在-32,768到32,767之间。由于种种考虑,将密文从左到右的前三位用来定位分布,而从左到右的最后两位作为分布的分位数。比如:密文7707表示第77个分布的7%的分位数对应的概率值。
[0036] 密文解析出的概率值中从左往右第一个非零数字到最后位的内容,为对应的明文内容,例如,密文7707对应的概率值为0.003728,则该密文解密后的明文为3728。
[0037] 从上面的叙述中不难总结出,加密方法中的秘钥是各种统计分布,但是,如何对于不同的数据稳定而快速的获得这些分布,也是应当考虑在方法实现的整个过程中。
[0038] 对于不同的字段类型,事先可以根据某些划分方法(比如除余划分)将所有可能的数值都划分成若干份,再对这若干份的每一份数字进行分布的构建,包括分布的类型、分布中数字的分布、分布的参数确定。这样做的好处是:(a)加大直接通过密文解密难度;(b)可快速而稳定的生成需要的分布;(c)只要更换划分方法,就可快速更换秘钥。
[0039] 举个例子,假设现在将{12,17,24,97}这四个数字划分为一组,那么可以选择某一种分布X(均值,方差),再规定分布X的25%对应12,X的39%对应17,X的70%对应24,X的75%对应97。根据这些信息,就可以快速算出分布X的均值和方差,从而将分布X存入秘钥库中。比如分布X是第30个分布,则12、17、24、97的密文分别对应3025、3039、3070、3075。