一种可逆的数据库水印方法及系统与流程

文档序号:27309925发布日期:2021-11-09 22:03阅读:271来源:国知局
一种可逆的数据库水印方法及系统与流程

1.本发明涉及数据库管理领域,具体涉及一种可逆的数据库水印方法及系统。


背景技术:

2.关系数据库是当前应用较为广泛的数据库。数据盗窃,非法复制和侵犯版权的安全风险随着数据库的创建,传输和共享也显著增加。近年来经常发生数据库泄漏事故的报道,哪怕在数据敏感的领域如医疗保健领域也是如此。如今用于确保各种数据格式所有权保护和防篡改的有效方法之一是水印技术。数据库加水印将消息嵌入通常独立且离散的数据库记录中,是一种相对较新的技术。数据库水印由agrawal和kiernan于2002年首次引入。此后,国内外学者提出了几种方法。
3.萤火虫遗传算法ffa是剑桥科学家xinshe yang提出的基于生物智能的随机搜索优化算法,通过模拟自然界中萤火虫在择偶觅食等情况下产生的因光而相互吸引,进而相互移动的合作行为,来解决现实生活中的最优化问题。萤火虫遗传算法ffga是将遗传算法ga与萤火虫算法ffa相结合构成的一种优化算法。遗传算法的局部搜索能力较差,但把握搜索过程总体能力较强。
4.y.wu等提出遗传算法(ga)可以被用来设计鲁棒的密钥方法。然后,一种基于差分扩展水印(gadew)技术的遗传算法被提出,作为一种健壮且可逆的数据库水印解决方案。m.b.imamogh等提出了一种新的可逆数据库水印方法,该方法将dew与萤火虫算法(ffa)相结合,ffa选择最佳属性值以产生较低的失真并增加水印容量。2019年donghui hu等提出了遗传算法和直方图移位算法gahsw。
5.lingyun xian从无损数据压缩的角度提出了一种基于自适应二进制算术编码的可逆自然语言水印算法,针对现有的文本可逆水印方法主要存在两个问题:水印嵌入容量低、附加信息共享量大。该方法通过对水印文本中的同义词值进行解码来提取水印,同时可以通过使用算术编码对提取的压缩数据进行解压缩来恢复原始同义词。
6.尽管ffadew等方法最小化了数据失真并增加了水印容量,但是信息失真仍然很严重。gahsw虽然失真较小,但只适用于数值型数据库,实用性较差。同时其使用生成主键,前期计算量非常大。并且单纯的文本型水印与单纯的数值型水印只适用于单一类型数据库,容易遭到攻击且无法满足现实生产生活需求。


技术实现要素:

7.为了解决现有技术中所存在的现有的数据库水印方法中部分方法增加辅助数据导致存储空间增大;部分方法只能用于数值型数据库,实用性较差;且大多数方法会大幅度修改原始数据,导致数据质量下降的问题,本发明提供了一种可逆的数据库水印方法,包括:
8.利用数据库中非空文本型数据生成主键;
9.利用萤火虫遗传算法生成秘钥,并根据所述秘钥、所述主键利用哈希算法对数据
库中数值型数据计算添加或存在水印的位置,并在该位置添加或删除水印;
10.根据所述主键利用同义词对数据库中文本型数据确定添加或存在水印的位置,并采用同义词替换和算术编码法在该位置嵌入或删除文本型水印。
11.优选的,所述根据所述秘钥、所述主键利用哈希算法对不同的数据类型分别计算添加或存在水印的位置,并在该位置添加或删除水印,包括:
12.根据所述秘钥、所述主键利用哈希算法对数据库中数值型的属性列进行分组;根据每组内的各属性所在列的位置确定添加或存在水印的位置,并采用直方图移位法在该位置添加或删除水印。
13.优选的,所述根据每组内的各属性所在列的位置确定添加或存在水印的位置,包括:
14.判断每组中的属性是否为所在列的最大或最小值;
15.当不为最大或最小值时,将所述属性所在位置作为添加或存在水印的位置;
16.当为最大或最小值时,该属性所在位置不作为添加或存在水印的位置,并跳转到下一列的属性继续进行判断,直到找到所有可作为添加或存在水印的位置。
17.优选的,所述采用直方图移位法在该位置添加或删除水印,包括:
18.基于每组的属性列中最大值、最小值以及原始值计算所述属性列的预测变量和预测误差值,并以预测误差为横坐标,以预测误差出现的次数作为纵坐标构建每个元组的直方图;
19.将预先设置的水印信息从第一个bit位开始,依次添加至数值型数据添加或存在水印的位置处,每个位置上添加一个水印信息的bit位,循环执行,直到所有添加或存在水印的位置处均添加了水印信息;
20.基于所有元组的直方图、添加或存在水印的位置以及水印信息构建低失真的直方图,得到加入水印信息后的新属性值;
21.基于新属性值、添加或存在水印的位置以及水印信息结合低失真的直方图删除水印信息,恢复原始数据。
22.优选的,所述基于所有元组的直方图、添加或存在水印的位置以及水印信息构建低失真的直方图,得到加入水印信息后的新属性值,包括:
23.基于所述每个元组的直方图确定具有非零频率的峰值及所述峰值的位置,放入峰值数组,并计算所述峰值左侧频率和、右侧频率和,并将所述左侧频率和以及右侧频率和放入附加信息数组中;
24.计算所述峰值与左侧和右侧第一个为零的频率位置的左侧差值和右侧差值,并将所述左侧差值和右侧差值放入附加信息数组中;
25.基于所述左侧频率和、右侧频率和的大小关系以及预测误差是否大于零,确定新的预测误差计算式,并结合所述预测误差分别与峰值、峰值和所述左侧差值的差、峰值和右侧差值的和的大小关系,以及水印信息计算新的预测误差;
26.以所述新的预测误差为横坐标,以所述新的预测误差出现的次数为纵坐标构建每个元组的低失真直方图;
27.基于所述新的预测误差和预测变量结合属性值计算式计算添加了水印的新的属性值。
28.优选的,所述新的预测误差计算式如下式所示:
29.当左侧频率和大于右侧频率和,并预测误差大于零时,新的预测误差按下式计算:
[0030][0031]
式中,b
e
为预测误差,w为水印中的bit位,b

e
为降低失真后的预测误差,bi为峰值;d
ir
为右侧差值;
[0032]
当左侧频率和大于右侧频率和,并预测误差小于零时,新的预测误差按下式计算:
[0033][0034]
当左侧频率和小于右侧频率和,并预测误差不小于零时,新的预测误差按下式计算:
[0035][0036]
式中,d
il
为左侧差值;
[0037]
当左侧频率和小于右侧频率和,并预测误差小于零时,新的预测误差按下式计算:
[0038][0039]
优选的,所述基于新的属性值、添加或存在水印的位置以及水印信息结合低失真的直方图删除水印信息,恢复原始数据,包括:
[0040]
基于所述新的属性值和预测变量结合预测误差计算式,得到新的预测误差及新的预测误差的绝对值;
[0041]
以所述新的预测误差为横坐标,以新的预测误差出现的次数作为纵坐标构建每个元组的低失真直方图;
[0042]
基于所述低失真直方图确定具有非零频率的峰值及所述峰值的位置,并计算所述峰值左侧频率和、右侧频率和;
[0043]
计算所述峰值与左侧和右侧第一个为零的频率位置的左侧差值和右侧差值;
[0044]
将所述新的预测误差与峰值数组中存储的峰值相比较,基于左侧频率和、右侧频率和,所述新的预测误差与零的关系,结合原始数据计算式还原原始数据。
[0045]
优选的,所述原始数据计算式如下式所示:
[0046]
当h
sl
≥h
sr
并且b

e
≥0时:
[0047][0048]
当h
sl
≥h
sr
并且b

e
<0时:
[0049][0050]
当h
sl
<h
sr
并且b

e
≥0时:
[0051][0052]
当h
sl
<h
sr
并且b

e
<0时:
[0053][0054]
式中,b
e
为预测误差,w为水印中的bit位,b

e
为降低失真后的预测误差,bi为峰值;d
ir
为右侧差值;c

为水印的数据库中存放的值;d
il
为左侧差值;h
sl
为左侧频率和;h
sr
为右侧频率和;w为水印中的bit位。
[0055]
优选的,所述当数据类型为文本型数据时,利用同义词确定添加或存在水印的位置,包括:
[0056]
当存在未作为主键的文本型数据时,基于预先设置的同义词数据库检索数据库中未作为主键的文本型数据,识别出同义词;
[0057]
将所述同义词所在位置确定为添加或存在水印的位置。
[0058]
优选的,所述采用同义词替换和算术编码法在该位置嵌入或删除文本型水印,包括:
[0059]
将识别出的同义词量化为二进制序列,得到同义词序列;
[0060]
采用自适应二进制算术编码将所述同义词序列进行压缩得到压缩后的同义词序列;
[0061]
预先设定的水印信息根据其字符的ascii值转换为二进制序列;
[0062]
将附加信息与所述压缩后的同义词序列和二进制序列的水印信息串联,形成嵌入式信息;
[0063]
将所述嵌入式信息与所述同义词序列进行比较,找到不匹配的位置;
[0064]
在所有不匹配的位置,用所述嵌入式信息替换同义词序列,生成带水印的数据库;或在所有不匹配的位置,用同义词序列替换嵌入式信息,恢复原始数据。
[0065]
优选的,所述利用萤火虫遗传算法生成秘钥,包括:
[0066]
将容量成本、元组失真、容量成本所占权重与元组失真所占权重作为种群中个体的染色体,以容量成本与容量成本所占权重乘积和元组失真与元组失真所占权重的乘积之和得到的总耗费作为适应度,采用萤火虫遗传算法得到总耗费最低对应的适应度最高时的染色体串,并将所述染色体串中容量成本、元组失真、容量成本所占权重与元组失真所占权重作为分组的密钥;
[0067]
其中,将容量成本为不能嵌入水印的行数,元组失真为将水印嵌入前后的属性值的绝对差值的总和。
[0068]
优选的,所述根据所述秘钥、所述主键和哈希算法对数据库数据分组,包括:
[0069]
根据所述秘钥、所述主键和哈希算法按下式得到分组后各组的序号:
[0070]
n
u
=h(ks|h(ks|t
u
.pk))mod ng
[0071]
式中,n
u
是分组后某组的序号,h()为加密哈希函数,t
u
.pk为元组t
u
主键,t
u
为元组,ks为数据库分组的密钥,ng为组数。
[0072]
基于同一发明构思本发明还提供了一种可逆的数据库水印系统,包括:
[0073]
参数生成模块,用于利用萤火虫遗传算法生成秘钥,并利用数据库中非空文本型数据生成主键;
[0074]
水印处理模块,用于根据所述秘钥、所述主键利用哈希算法对数据库中数值型数据计算添加或存在水印的位置,并在该位置添加或删除水印,同时根据所述主键利用同义词对数据库中文本型数据确定添加或存在水印的位置,并采用同义词替换和算术编码法在该位置嵌入或删除文本型水印。
[0075]
与现有技术相比,本发明的有益效果为:
[0076]
(1)本发明提供的一种可逆的数据库水印方法及系统,包括利用数据库中非空文本型数据生成主键;利用萤火虫遗传算法生成秘钥,并根据所述秘钥、所述主键利用哈希算法对数据库中数值型数据计算添加或存在水印的位置,并在该位置添加或删除水印;根据所述主键利用同义词对数据库中文本型数据确定添加或存在水印的位置,并采用同义词替换和算术编码法在该位置嵌入或删除文本型水印;本发明采用萤火虫遗传算法生成密钥提高了局部搜索效率和鲁棒性,并且实现了同时对数据库中不同的数据类型添加或删除水印。
[0077]
(2)本发明是为了实现在数值与文本数据并存的实际数据库上均可使用,水印还原后不会损害数据并且具有高鲁棒性的可逆数据库水印方法。
附图说明
[0078]
图1为本发明的一种可逆的数据库水印方法流程图;
[0079]
图2为萤火虫遗传ffga算法流程图。
具体实施方式
[0080]
为了更好地理解本发明,下面结合说明书附图和实例对本发明的内容做进一步的说明。
[0081]
在本发明中,使用萤火虫遗传算法和直方图移位方法用于数值关系数据水印,同时采用同义词替换和算术编码用于文本型水印,将二者综合而得出了一种可逆的数据库水印方法如图1所示,包括:
[0082]
s1:利用数据库中非空文本型数据生成主键;
[0083]
s2:利用萤火虫遗传算法生成秘钥,并根据所述秘钥、所述主键利用哈希算法对数据库中数值型数据计算添加或存在水印的位置,并在该位置添加或删除水印;
[0084]
s3:根据所述主键利用同义词对数据库中文本型数据确定添加或存在水印的位置,并采用同义词替换和算术编码法在该位置嵌入或删除文本型水印。
[0085]
对于s1具体包括:
[0086]
具体操作可以选择很多种方法,本实施例选择将文本数据转换为十六进制并将其
重复循环,直至生成统一长度的主键值,长度可以由用户自己确定,但是要确保主键值满足互不重复的保障条件。当数据库中没有文本数据时,使用从1逐级增加的自增序列作为主键。
[0087]
在进行数据库水印提取的时候只要确定是哪几个属性列以及生成方法就可以确定主键,在传输过程中主键不会进行传输,不仅可以节省存储空间,而且避免了因主键被恶意删除使得水印无法恢复的问题。
[0088]
对于s2具体包括:
[0089]
本发明引入萤火虫算法的吸引度思想,在进化时进行选择操作,从而提高算法收敛到全局最优的能力。
[0090]
步骤1:首先利用萤火虫遗传算法ffga算法获取最适合数据库分组的密钥k
s
,将待添加水印的数据库作为种群,并设置种群规模和最大迭代次数,这部分工作属于前期工作,如图2所示具体算法流程如下:
[0091]
(1)生成初始种群:随机生成n个初始种群,然后利用适应度函数来评价该种群所有染色体适应度。
[0092]
(2)选择交配个体:ga通常使用轮盘赌或锦标赛选择法。我们这里使用改进策略,利用萤火虫之间相互吸引的行为进行选择结合个体。每只萤火虫染色体的吸引度为染色体i和j之间的吸引度可表示为其中γ为闪光的吸收系数,r为i和j之间的欧式距离。由此我们可以生成n或2对染色体,当两对染色体的平均适应度在所有适应度达到最高。他们便可以组成一对。
[0093]
(3)交叉操作:交叉操作交换父染色体的基因来产生两个后代,在此只考虑单点交叉。
[0094]
(4)变异操作:为了避免陷入局部最优,对每一个子代都进行变异操作,具体为随机选择一个一个基因进行变异。
[0095]
(5)选择下一代:从父染色体和子染色体中选择适应度最高的n个进行下一轮。
[0096]
(6)迭代终止,输出最优秀的染色体即最适合数据库分组的密钥k
s
:如果至少满足了一个设置的终止条件,将终止循环并返回当前种群中最优秀的染色体,否则转向第二步。
[0097]
这里我们将不能嵌入水印的行数作为容量成本,将水印嵌入前后的属性值的绝对差值的总和作为元组失真,将总耗费作为适应度,其中总耗费低适应度就高。这里的总耗费按下式计算:
[0098]
总耗费=容量成本*容量成本所占权重+元组失真*元组失真所占权重
[0099]
这里的总耗费计算式作为适应度函数。
[0100]
步骤2:选择数据库中的多个文本型数据属性列(必须非空),根据选择的文本型数据生成主键pk。
[0101]
根据所述秘钥、所述主键利用哈希算法对不同的数据类型分别计算添加或存在水印的位置,并在该位置添加或删除水印,具体包括:
[0102]
步骤3:利用步骤1得到的密钥,使用公式n
u
=h(ks|h(ks|t
u
.pk))mod ng对数据库的数据进行分组。使用公式将数据库数据分为ng组数据,为预设的值,n
u
是分组后某组的序号,为[0,ng

1]间一个整数,h()为加密哈希函数即secure hash algorithm(sha),ks即
ffga算法获取的最适合数据库分组的密钥,t
u
.pk为元组t
u
主键。其中,ng组数据,与n
u
是分组后某组的序号。
[0103]
步骤4:采用hsw直方图移位法对数值型数据加水印,其具体算法如下。
[0104]
2006年直方图移位首次被用于数据库水印,之后直方图移位方法得到改进,使得该方法能更好解决水印嵌入失真问题。hs需要一些辅助空间存储必要的信息以进行水印的无损还原,并使用预测变量来创建要素元素以进行扩展嵌入。
[0105]
(1)从水印信息ω的第一个bit位开始,在水印嵌入属性列位置依次增加一个bit位,直到迭代至最后一位,在水印嵌入属性列位置增加水印信息ω的一个bit位;
[0106]
(2)对每一行,确认其水印嵌入的属性列位置j:
[0107]
(2.1)当该属性并非该属性列中最大或最小的数则满足嵌入要求,否则j向后移一位,并将其主键记录到mp;
[0108]
(2.2)使用公式计算公式计算p
e
,构造直方图;
[0109]
(3)若所有元组均已完成直方图构造则进入(4),否则回到(2);
[0110]
(4)构建具有低失真的直方图
[0111]
(4.1)通过b
e
确定具有非零频率的峰值bi及其位置o,放入峰值数组ba;
[0112]
(4.2)计算峰值左右两侧的频率的和,即左侧频率和右侧
[0113]
频率和将两者放入附加信息数组mb中;
[0114]
(4.3)计算出峰值bi与左右两侧第一个为0的频率位置的差值,即左侧差值d
il
=|bi

b
l
|,右侧差值d
ir
=|bi

b
r
|,将其放入附加信息数组mb中;
[0115]
(4.4)如果h
sl
≥h
sr
,那么:
[0116][0117]
b

h
为b

e
的绝对值,即预测误差的绝对值。
[0118]
否则,有:
[0119][0120]
(4.5)因为b
h
=|b
e
|,按照(4.4)中公式,则有新的计算预测误差b

e
为:
[0121]
h
sl
≥h
sr
并且b
e
≥0:
[0122][0123]
h
sl
≥h
sr
并且b
e
<0:
[0124][0125]
h
sl
<h
sr
并且b
e
≥0:
[0126][0127]
h
sl
<h
sr
并且b
e
<0:
[0128][0129]
(5)使用公式计算新的属性值c

以嵌入水印;
[0130]
(6)当所有元组均已完成水印嵌入则进入(7),否则回到(5);
[0131]
(7)当所有水印位均已嵌入完成则结束,得到带水印数据库d
w
,信息存储数组pa及mp,否则回到(1)。
[0132]
对于s3具体步骤如下:
[0133]
步骤5:信息嵌入过程完成后生成水印文本,并将压缩后的同义词序列与水印信息一起嵌入,ssac文本水印的增加和提取流程如下:
[0134]
lingyun xiang提出了的同义词替换和算术编码ssac,也是本发明选择的文本型数据水印方法,该方法需求部分辅助空间以确保水印可以无损还原。其同义词量化规则为:同义词集中频率最高的同义词为mfs;频率第二高的同义词为smfs;其他为没有编码值的普通单词。由mfs和smfs的编码值组成的二进制序列应具有可压缩的空间,以有效地压缩为较短的二进制序列。通过自适应二进制算术编码ssac,可以对封面文本中同义词的编码值进行压缩,然后可以无损地对其进行解压缩以恢复原始同义词。
[0135]
(1)遍历未作为主键的文本型数据并检索准备好的同义词数据库,如果单词是mfs或smfs,则将其识别为同义词;当不存在未作为主键的文本型数据时,放弃对文本型数据添加水印,或者使用从1逐级增加的自增序列作为主键,然后基于预先设置的同义词数据库对数据库中的文本型数据中的同义词进行识别。
[0136]
(2)将识别出的同义词量化为二进制序列,获得n位同义词序列q。
[0137]
(3)通过采用自适应二进制算术编码将q压缩为较短的m位二进制序列q

。由此获得一些冗余空间来容纳附加水印信息。
[0138]
(4)水印信息根据其字符的ascii值转换为二进制序列。
[0139]
(5)为了将压缩的同义词序列q

与水印信息m区分开来,将它们串联在一起嵌入到文本中时将其长度记录并发送给接收者。
[0140]
(6)附加信息与q

和水印信息m串联,形成一个完整的嵌入式信息s。
[0141]
(7)将嵌入信息s与原始同义词序列q相比较,找到某些对应位置的不匹配值。
[0142]
(8)对于不匹配的位置,原始同义词将被其同义词替换,该同义词的编码值等于嵌入的信息位。而对于匹配位置不会进行替换,当所有嵌入的信息位都嵌入后,带水印的文本生成完成。
[0143]
步骤6:数据库水印的提取和数据恢复是上述过程的逆过程。我们的方法在添加水印过程中并未对最大值和最小值进行变换,所以水印增加前后,的大小是不变的,在增加了水印的数据库中存放的值为y

,由此,根据公式我们可以计算得到p

e

[0144]
将p

e
与pa数组中存储的p相比较,我们可以通过下面公式来恢复原始数据,特殊
情况存储在mp中,遇到时属性列为后一个:
[0145][0146]
如果p

e
=p,水印位ω为0,如果p

e
=p+1或是p

e


(p+1),则水印位ω为1。至此,水印数据被提取出来,原始数据库也恢复完成了。
[0147]
带水印的文本将被发送到接收方后,接收方可以提取水印信息并恢复原始封面文本而不会产生任何失真。由于同义词数据库共享,所以接收方可以很容易完成同义词的统计并进行二进制量化。在得到同义词序列q

与水印信息m的长度后,接收方可以轻易完成水印提取和数据恢复,该过程即为水印添加的逆过程。
[0148]
本发明提出的技术方案在数值与文本并存的数据库上均可使用,水印还原后不会损害数据并且具有高鲁棒性。该方案的主要思想是利用萤火虫遗传算法为分组数据库选择最佳密钥,直方图预测误差以便进行移位嵌入水印。同义词替换和算数编码则可以有效地在文本中加入水印。通过对现有的数值型水印方法进行优化,同时结合文本水印方法,有效增强了数据库安全,同时做到了减少数据质量损失。
[0149]
1.我们改进了现有的数值型数据水印方法,采用ffga萤火虫遗传算法进行密钥选取,提高鲁棒性。
[0150]
2.我们采用文本生成主键方法,节省了存储空间,提高了传输效率,并可以降低主键攻击的风险。
[0151]
3.将数值型数据库水印方法与文本型数据库水印方法结合,提高其安全性能并使其更加适用于实际生产生活。
[0152]
根据步骤6中的技术方案,我们可以得知:
[0153]
1、本方案的水印是可逆的,不会对数据库原始数据产生任何损害,保证了数据质量与数据库的可用性。
[0154]
2、在数值型数据方面,我们采用的ffga萤火虫遗传算法设置密钥比起已有的ga遗传算法解决了ga遗传算法局部搜索效率不高的问题。
[0155]
实施例2:
[0156]
我们采用表1,表2,表3的实验参数设置对ffga萤火虫遗传算法,ffa萤火虫算法,ga遗传算法进行实验,并对每一个参数设置运行10次,取其结果的平均值进行对比。
[0157]
表1 ffga算法的参数设置
[0158]
参数值种群规模n20,40闪光吸收系数2交叉概率1变异概率0.2进化代数1000
[0159]
表2 ffa算法的参数设置
[0160][0161][0162]
表3 ga算法的参数设置
[0163]
参数值种群规模n20,40交叉概率1变异概率0.2进化代数1000
[0164]
为了验证算法性能,我们使用这三种算法来寻找四个标准函数的最优解,四个函数分别为sphere function,rastrigen function,levy function和sum square function,四种函数在此不做过多介绍。实验结果在表4、表5和表6中列出,其中平均迭代指达到最优解的迭代次数的均值,成功率指算法成功收敛到全局最优解的次数百分比,平均时间是收敛到全局最优解所用时间的均值。由结果表格我们可以看出,ffga算法在求解rastrigen,levy和sum square函数时时间性能均优于萤火虫ffa算法,且在四个函数求解时均优于遗传ga算法。同时,当函数没有局部最优解或者局部最优解很少时,遗传算法才能达到很好的性能,当局部最优解较多时如rastrigen函数,遗传算法不如ffga算法的性能出众。
[0165]
表4 ffga算法实验结果
[0166][0167]
表5 ffa算法实验结果
[0168][0169]
表6 ga算法实验结果
[0170][0171]
在抗攻击方面,我们的水印方法也比现有的方法更加优秀。我们采用通用的数据库增加,删除,修改三个攻击方式进行测试遗传算法和直方图位移法gahsw,文本水印嵌入法ssac及我们提出的综合水印法fhsa三者的鲁棒性。我们将被破坏的水印位数与水印总体位数比值ω作为错误率来估计三种方法的鲁棒性,如表7、表8和表9,分别在数据变动情况为20%,40%,60%,80%时进行10次实验并取平均值进行对比,可以发现我们提出的fhsa方法鲁棒性更强。
[0172]
表7三种方法在数据增加情况下的错误率对比
[0173] 20%40%60%80%fhsa0000saac0.0510.0990.1650.232gahsw0000
[0174]
表8三种方法在删除数据情况下的错误率比较
[0175] 20%40%60%80%fhsa0.1020.3010.3570.410saac0.3030.4960.5870.804gahsw0.2980.3560.4050.413
[0176]
表9三种方法在修改数据情况下的错误率比较
[0177] 20%40%60%80%fhsa0.0320.0970.2570.356saac0.1990.5070.7030.897gahsw0.0510.2050.2990.398
[0178]
本发明的技术方案不会产生大量的辅助数据,所有的数据都是精简且必要的。同时我们采用数据库内文本生成主键,比起现有数据库水印方法节省了存储空间,提高了效率,降低了主键攻击的风险。
[0179]
本发明将数值型数据水印方法与文本型数据水印方法相结合,可以用于实际生产生活中数值型数据和文本型数据混合的数据库,贴合实际应用。
[0180]
本技术方案产生的效果:
[0181]
1.我们改进了现有的数值型数据水印方法,采用ffga萤火虫遗传算法进行密钥选取,提高鲁棒性,改进了直方图移位法,使其冗余减少。
[0182]
2.我们采用文本生成主键方法,节省了存储空间,提高了传输效率,并可以降低主键攻击的风险。
[0183]
3.将数值型数据库水印方法与文本型数据库水印方法结合,提高其安全性能并使其更加适用于实际生产生活。
[0184]
实施例3:
[0185]
基于同一发明构思,本发明还提供了一种可逆的数据库水印系统,包括:
[0186]
参数生成模块,用于利用遗传算法生成秘钥,并利用数据库中非空文本型数据生成主键;
[0187]
水印处理模块,用于根据所述秘钥、所述主键利用哈希算法对数据库中数值型计算添加或存在水印的位置,并在该位置添加或删除水印;同时根据所述主键利用同义词对数据库中文本型数据确定添加或存在水印的位置,并采用同义词替换和算术编码法在该位置嵌入或删除文本型水印。
[0188]
水印处理模块包括:
[0189]
判断子模块,用于判断数据库中属性列属于数值型数据还是文本型数据;
[0190]
分组子模块,用于当数据类型为数值型数据时,根据所述秘钥、所述主键利用哈希算法对数据库中数值型的属性列进行分组;
[0191]
数值处理子模块,用于根据每组内的各属性所在列的位置确定添加或存在水印的位置;
[0192]
数值水印处理子模块,用于采用直方图移位法在该位置添加或删除水印;
[0193]
文本处理子模块,用于当数据类型为文本型数据时,利用同义词确定添加或存在水印的位置;
[0194]
文本水印子模块,用于采用同义词替换和算术编码法在该位置嵌入或删除文本型
水印。
[0195]
数值处理子模块,包括:
[0196]
比较单元,用于判断每组中的属性是否为所在列的最大或最小值;
[0197]
位置确定单元,用于当不为最大或最小值时,将所述属性所在位置作为添加或存在水印的位置;当为最大或最小值时,该属性所在位置不作为添加或存在水印的位置,并跳转到下一列的属性继续进行判断,直到找到所有可作为添加或存在水印的位置。
[0198]
数值水印处理子模块,包括:
[0199]
直方图构建单元,用于基于每组的属性列中最大值、最小值以及原始值计算所述属性列的预测变量和预测误差值,并以预测误差为横坐标,以预测误差出现的次数作为纵坐标构建每个元组的直方图;
[0200]
水印添加单元,用于将预先设置的水印信息从第一个bit位开始,依次添加至数值型数据添加或存在水印的位置处,每个位置上添加一个水印信息的bit位,循环执行,直到所有添加或存在水印的位置处均添加了水印信息;
[0201]
低失真直方图构建单元,用于基于所有元组的直方图、添加或存在水印的位置以及水印信息构建低失真的直方图,得到加入水印信息后的新属性值;
[0202]
数据恢复单元,用于基于新属性值、添加或存在水印的位置以及水印信息结合低失真的直方图删除水印信息,恢复原始数据。
[0203]
分组子模块根据所述秘钥、所述主键和哈希算法按下式得到分组后各组的序号:
[0204]
n
u
=h(ks|h(ks|t
u
.pk))mod ng
[0205]
式中,n
u
是分组后某组的序号,h()为加密哈希函数,t
u
.pk为元组t
u
主键,t
u
为元组,ks为数据库分组的密钥,ng为组数。
[0206]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0207]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0208]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0209]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一
个方框或多个方框中指定的功能的步骤。
[0210]
以上仅为本发明的实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均包含在申请待批的本发明的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1