一种负数据库生成方法

文档序号:30232036发布日期:2022-06-01 05:49阅读:518来源:国知局
一种负数据库生成方法

1.本发明属于属于隐私保护与安全领域,具体涉及一种负数据库生成方法。


背景技术:

2.随着互联网技术的高速发展,我们享受着网络带给工作、学习、生活等方面的便利,每天都在和社交软件、购物软件、外卖软件打交道。在享受这种方便的时候,我们的个人信息和隐私数据在不知不觉中泄露了出去。近年来,隐私数据泄露和数据安全问题导致个人或团体的利益受到损害的情况时有发生。因此,如何保证个人隐私和数据安全已成为一个焦点问题。
3.信息的负表示是一种可以有效保障数据安全的数据表示方法。主要是通过存储与原始数据补集的信息,来达到保护隐私数据和信息安全的目的。负数据库是一种信息负表示方案。负数据库(ndb)通过对原始数据的补集进行压缩可以有效的减小存储空间并且显著提高数据的安全性。因此,负数据库技术已经被用于隐私保护、生物信息识别、信息隐藏等方面。
4.目前,负数据库的工作主要是针对二进制数据的。如何将十进制数据转化为二进制数据,进而转化为负数据库数据成为了一个重点研究方向。已经有许多种负数据库生成方案被提出,这些方案都有着各自的优缺点。常见的前缀算法和rndb算法生成的负数据库安全性较低,易于被攻击;q-hidden算法、p-hidden算法生成的负数据库生成了更加难解的负数据库,但是负数据库参与计算时精度有一定程度的下降;k-hidden算法和qk-hidden具有着较高的应用效果,但是通过概率统计还是可以得到相近的原始数据,安全性有一定程度的降低。因此,提出一种具有更高安全性的负数据库生成算法是十分有必要的。


技术实现要素:

5.为了克服上述背景技术的缺陷,本发明提供一种负数据库生成方法,提高负数据库安全性。
6.为了解决上述技术问题本发明的所采用的技术方案为:
7.一种负数据库生成方法,包括:
8.步骤1,将原始十进制数据转化为二进制数据;
9.步骤2,生成n个位置对(p,q);
10.步骤3,根据位置对以及隐藏串计算出对应的位置的异或值,然后根据异或结果确定对应位置的zerolist的值的范围;
11.步骤4,根据zerolist计算得出onelist,然后依据zerolist和onelist生成负数据库;
12.onelist为原始数据每一位以
‘1’
在负数据库中出现次数的整型链表,zerolist为原始数据每一位以
‘0’
在负数据库中出现次数的整型链表。
13.较佳地,步骤1具体包括:首先将数据集中数据转化为整型数据,然后将整型的数
据转化为二进制数据。
14.较佳地,步骤2具体包括:
15.人工设定n的初始值,逐条生成位置对(p,q),对于第i个位置对(pi,qi),首先,随机生成p,q的值,若出现p=q,p=i或q=i则重新生成p,q的值,直到p≠q≠i则作为(pi,qi),重复此过程直到生成n个位置对;
16.其中,i为位置对的编号,1≤i≤n;pi是第i个位置对的p值;qi是第i个位置对的q值,第i个位置对记为(pi,qi),p、q为两个随机值,p、q∈[0,l)表示二进制串s的位置下标。
[0017]
较佳地,步骤3具体包括:
[0018]
若si=0,则zerolist[i]=rnd,rnd∈([m/2],m),若si=0,则zerolist[i]=rnd,rnd∈[1,[m/2]];若si=1,则zerolist[i]=rnd,rnd∈[1,[m/2]],若si=1,则zerolist[i]=rnd,rnd∈([m/2],m);
[0019]
其中,l为二进制串s的长度,其中s为步骤1中生成的一条二进制数据;si表示的是s第i位的值,表示s在pi位置的值;zerolist为长度为l的整型链表;zerolist[i]为s的第i位,在负数据库中以
‘0’
表示出现的次数;rnd为随机数;m为s的每一位在负数据库中出现的次数;[m/2]为向下取整。
[0020]
较佳地,步骤4具体包括:onelist[i]=t-zerolist[i],其中t为人工设定的二进制数据s中每一位在负数据库中出现总次数的初始化值;将zerolist和onelist随机组合为负数据库记录。
[0021]
较佳地,将zerolist和onelist随机组合为负数据库的方法包括:从zerolist、onelist中依次随机选取k个不同的位置,将这k个位置对应的
‘0’

‘1’
作为k-ndb的一条负数据库记录的确定位。
[0022]
本发明设计了一种负数据库生成方法。实验结果表明,此种方法生成的负数据库是完备的、难解的;在保障实验精度的前提下,相比以往的负数据库生成算法可以显著提高负数据库的安全性,能够有效的解决以往负数据库生成算法可能被概率统计模型攻破的问题;在kmeans聚类和knn分类实验中已经取得了很好的实验效果。本发明以往的负数据库生成算法通常采用调节多个不同的概率参数控制不同类型的记录的生成概率,以控制它们的分布。而本方法没有采用概率参数,有效的提高了负数据库的安全性。
[0023]
本发明采用二进制异或与随机算法结合的方案,有效保证了负数据库的安全性;不同类型的记录生成概率不受参数影响,因而生成的负数据库中的记录分布更加均匀;方法生成的负数据库具有较高的计算精度。
附图说明
[0024]
图1为本发明实施例的方法流程图。
具体实施方式
[0025]
下面结合附图和实施例对本发明做进一步的说明。
[0026]
步骤1:首先将原始十进制数据转化为二进制数据。
[0027]
现有的负数据库研究都是大多都是基于二进制数据研究的。所以,首先要将十进制数据转化为二进制数据。如果十进制数据为浮点数,那首先要将浮点数转化为整型数。
[0028]
这里以常用的数据集iris数据集为例。iris数据集数据集包含150个数据样本,每条数据有4个属性。iris数据集的数据都是浮点数。对于浮点数,首先要将浮点数转化为整型数据。iris数据集中数据只有一位小数,所以只需要乘以10便可以转化为整型数据。
[0029]
接着是将整型的数据转化为二进制数据。这里采用的不是传统的进制转换。而是用二进制数据中
‘1’
出现的次数来表示原始的整形数据。对于iris数据集,转化为整型后每一个数据都小于100,所以将每一个数据转化为长度为100的二进制串即可。如
‘6’
则转化为“111111”前面再加上94个
‘0’
,来保证二进制数据长度的一致性。iris数据集每一个样本数据有4个属性,所以转化为了4条长度为100的二进制串。将4条二进制串进行顺序拼接便得到了长度为400的二进制数据。
[0030]
经过上面方法的处理我们便将原始的150个数据样本转化为150条长度为400的二进制数据。这样处理有效的保证了数据有效信息的保留。
[0031]
步骤2:随机生成n个位置对(p,q)。
[0032]
初始化n的值设置为400。这里逐条生成位置对。对于第i个位置对(pi,qx),首先,随机生成p,q的值,如果出现p=q,p=i或q=i则重新生成p,q的值,直到p≠q≠i则作为(pi,qi)。重复此过程直到生成400个位置对。
[0033]
其中i是位置对的编号,1≤i≤400;pi是第i个位置对的p值;qi是第i个位置对的q值;第i个位置对记为(pi,qi)。
[0034]
n的取值影响着生成的负数据的安全性以及负数据库上运算的精度。这里n的取值为二进制数据记录的长度,可以在保证安全性的同时提供较高的计算精度。随机生成p,q的值则为了保证该负数据库生成算法的安全性提供了又一重保障。
[0035]
步骤3:根据位置对以及隐藏串计算出对应的位置的异或值,然后根据异或结果确定对应位置的zerolist的值的范围。
[0036]
以一条长度为l的二进制串s为例,则生成长度为l的zerolist。生成规则为:若s=0,则zerolist[i]=rnd,rnd∈([m/2],m),若si=0,则zerolist[i]=rnd,rnd∈[1,[m/2]];若si=1,则zerolist[i]=rnd,rnd∈[1,[m/2]],若si=1,则zerolist[i]=rnd,rnd∈([m/2],m)。
[0037]
其中s为步骤1中生成的iris的一条二进制数据;si表示的是s第i位的值,表示s在pi位置的值;zerolist为长度为l的整型链表;zerolist[i]为s的第i位,在负数据库中以
‘0’
表示出现的次数;rnd为随机数;m为s的每一位在负数据库中出现的次数;[m/2]规定的是向下取整。
[0038]
对于攻击者而言,等价于可看作是增加四条负数据库记录;等价于
,也可看作是增加四条负数据库记录。因此,想要通过本方法生成的负数据库恢复出原始数据十分困难的。本步骤创新的采用了二进制异或结合随机算法,有效保证了负数据库相对于局部搜索策略的难解性。
[0039]
步骤4:根据zerolist,计算得出onelist,然后依据zerolist和onelist生成完整的负数据库。
[0040]
二进制数据s的每一位在负数据库中出现的总次数都是固定的,所以通过zerolist便可以计算得出onelist。假设s的第i位在负数据库中的出现次数为t,那么onelist[i]=t-zerolist[i]。接着,将zerolist和onelist随机组合为负数据库记录。首先从zerolist或onelist中随机选取一位作为负数据库记录的第1个确定位,然后再从zerolist或onelist中随机选取一位作为负数据库记录的第2个确定位。以此类推,最终选取k个位作为k-ndb的一条负数据库记录。
[0041]
规定s的第i位在负数据库中出现的次数为15,如果zerolist[i]=3,那么onelist[i]=15-zerolist[i]=12。生成3-ndb,则负数据库中每条记录包含3个确定位。ndbs首先初始化为空集。ndbs期望包含的数据数为s的长度乘以参数r。每次从zerolist和onelist中随机选择3个位置不同数据作为一条负数据库记录,直到zerolist和onelist中所有数据都出现在负数据库中。这样便生成了s的完整的负数据库。
[0042]
以往的负数据库生成算法通常采用调节多个不同的概率参数控制不同类型的记录的生成概率,以控制它们的分布。而本方法没有采用概率参数,有效的提高了负数据库的安全性。
[0043]
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1