一种水印嵌入方法、系统及相关装置与流程

文档序号:19314161发布日期:2019-12-03 23:49阅读:221来源:国知局
一种水印嵌入方法、系统及相关装置与流程

本申请涉及数据库领域,特别涉及一种水印嵌入方法、系统及相关装置。



背景技术:

目前的数字水印方案很多,在关系数据库水印方面,也有很多种解决方案。最早在2002年,agrawal等人就提出了对关系数据库中的数值型属性值进行标记的策略,利用单向hash函数来标记关系数据库中的属性值,并按照水印嵌入算法对这些数值型属性值的某些比特位置1或者0,作为标记,将所有的标记组合起来就是嵌入的水印信息。2014年,sureshkuri等人提出利用伪随机生成器生成伪随机数,将其嵌入到图片中,实现图片的版权保护,虽然这种方法产生的水印十分安全,即便攻击者获取到了水印,他也无法从中获知水印代表的含义即真正的版权信息。但是如果攻击者破坏了嵌入的水印,这会使得水印信息无法被完整地提出来,因而整个水印系统将会失效。guoyinzhang[4]等人提出了一种利用单向哈希函数的方法产生水印信息,然后嵌入到iot的感知层中以实现数据的完整性保护。donghuihu等人提出了一种带有失真控制的可逆数据库水印方案,通过使用遗传算法生成的水印信息,结合hash函数来将数据进行分组,然后采用直方图移位算法来嵌入水印信息。这种方案在水印嵌入的时候采用了冗余嵌入方法,但是,无法保证在部分水印遭到破坏时仍然能够将水印完整的恢复出来。假设含水印的数据在传播过程中遭遇到恶意攻击,如攻击者彻底删除了某个水印片段,则使得数据库中的水印信息无法被完整的恢复,失去了版权保护的意义。

在关系型数据库环境下,目前提出的数字水印方案,都没有解决在遇到水印攻击时如何提高水印的容错率的问题。现有的水印方案,无法解决当嵌入的水印被攻击者恶意删除时,整个水印方案失效的问题。



技术实现要素:

本申请的目的是提供一种水印嵌入方法、系统、一种计算机可读存储介质和一种终端,能够提高水印的容错率。

为解决上述技术问题,本申请提供一种水印嵌入方法,具体技术方案如下:

对水印信息进行预处理,得到冗余水印编码;

利用单向哈希函数对数据库中的元组进行分组;

确定每个分组中所述元组的待嵌入属性;

利用预设密钥将所述冗余水印编码嵌入至所述元组的所述待嵌入属性。

其中,对水印信息进行预处理,得到冗余水印编码包括:

对水印信息进行版权信息转换;

利用范德蒙矩阵生成冗余码;

采用最大距离分割码对所述水印信息进行编码,并根据所述冗余码和单位矩阵得到冗余水印编码。

其中,对水印信息进行版权信息转换包括:

在有限域中将所述版权信息转换成数值序列;

将所述水印信息按照所述数值序列进行分割,得到若干子水印。

其中,确定每个分组中所述元组的待嵌入属性包括:

利用数据库主键pr对所述元组进行标记;

利用预设密钥和所述数据库主键pr得到待嵌入属性。

其中,利用预设密钥将所述冗余水印编码嵌入至所述元组的所述待嵌入属性包括:

s1:根据所述待嵌入属性确定待嵌入子水印;

s2:根据所述索引值、所述预设密钥确定所述元组对应的哈希值;

s3:根据所述待嵌入属性、所述预设密钥和数值型属性中的小数长度确定嵌入位置;

s4:将所述待嵌入子水印嵌入至所述嵌入位置;

循环s1-s4直至所述元组的每个所述待嵌入属性均嵌入完毕。

其中,还包括:

根据所述预设密钥和临时存储数组提取所述水印信息。

其中,根据所述预设密钥和临时存储数组提取所述水印信息之后,还包括:

利用解码矩阵对所述水印信息进行重构;

其中,所述解码矩阵为所述水印信息在预处理过程中对应编码矩阵的逆矩阵。

本申请还提供一种水印嵌入系统,包括:

预处理模块,用于对水印信息进行预处理,得到冗余水印编码;

分组模块,用于利用单向哈希函数对数据库中的元组进行分组;

属性确认模块,用于确定每个分组中所述元组的待嵌入属性;

嵌入模块,用于利用预设密钥将所述冗余水印编码嵌入至所述元组的所述待嵌入属性。

本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的水印嵌入方法的步骤。

本申请还提供一种终端,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的水印嵌入方法的步骤。

本申请提供一种水印嵌入方法,包括:对水印信息进行预处理,得到冗余水印编码;利用单向哈希函数对数据库中的元组进行分组;确定每个分组中所述元组的待嵌入属性;利用预设密钥将所述冗余水印编码嵌入至所述元组的所述待嵌入属性。

本申请利用纠删码技术进行水印编码,通过生成冗余水印,当攻击者完全删掉部分子水印时,本方案根据已提取出来的子水印能够恢复出完整的水印信息,这种水印编码方法解决了以往子水印被完全删除导致整个水印方案失效的问题,使得水印具有一定的容错率。本申请还提供一种水印嵌入系统、一种计算机可读存储介质和一种终端,具有上述有益效果,此处不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例所提供的一种水印嵌入方法的流程图;

图2为本申请实施例所提供的水印编码过程示意图;

图3为本申请实施例所提供的水印解码重构过程示意图;

图4为本申请实施例所提供的一种水印嵌入系统结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参考图1,图1为本申请实施例所提供的一种水印嵌入方法的流程图,该水印嵌入方法包括:

s101:对水印信息进行预处理,得到冗余水印编码;

本步骤需要对水印信息进行预处理,优选的,本步骤可以包括如下步骤:

对水印信息进行版权信息转换;利用范德蒙矩阵生成冗余码;采用最大距离分割码对所述水印信息进行编码,并根据所述冗余码和单位矩阵得到冗余水印编码。

在水印预处理阶段主要的任务是处理水印,其中包括的版权信息转换,纠删码计算,生成冗余水印编码。对水印信息进行版权信息转换主要是在有限域中将所述版权信息转换成数值序列,然后将所述水印信息按照所述数值序列进行分割,得到若干子水印。

本方法采用ascii码转换w=ascii(s),将版权信息转换成一个新的数值序列w,然后将水印序列分成k份w={w1,w2,…,wk},嵌入到n个不同的属性列中,其中lx为水印的位数。本申请实施例采取最大距离分割码(mds码)对水印信息进行编码。其中所有的运算都在有限域gf(2w)下进行以确保可逆性。o1,...,ok为k个子水印,系数矩阵b与k×k单位矩阵共同组成编码矩阵,p1,...,pn-k为水印编码生成的n-k个冗余编码块,用于检测和纠正水印中的错误。一般为了确保得到最优冗余水印编码,系数矩阵b需满足一定的条件,本申请实施例采用范德蒙矩阵来生成冗余码。具体的,参见图2,图2中根据单位矩阵和系数矩阵并结合原始子水印块等到冗余水印块。

s102:利用单向哈希函数对数据库中的元组进行分组;

基于水印预处理阶段处理完成的情况下,水印嵌入阶段主要将水印嵌入到数据库中的特定位置,本方案采用单向哈希函数对数据库中的元组进行分组,然后从候选属性中选择属性来嵌入子水印,使用了一种多位映射的方法,将子水印嵌入到多个元组中,并且不会破坏数据的可用性以及嵌入的水印对用户不可见。

分组的目的是:同一分组中的元组嵌入相同的子水印,这样保证了水印的冗余性,在遇到水印攻击(删除或增加数据库中的元组)时,仍然能够提取出水印。分组步骤如下:

第一步,首先对元组进行标记,也就是计算出一个唯一值,每个元组一个唯一id,id=hash(pr,key)

第二步,根据idmodn的值进行分组,值相同的元组为一组,分成n组。

s103:确定每个分组中所述元组的待嵌入属性;

待嵌入属性指的是各元组中需要嵌入子水印的候选属性。候选属性是预先从所有属性中选择的一部分属性,被选取的属性(候选属性)包含了重要信息,以员工收入数据库为例,其中员工收入这个属性就是候选属性,包含重要信息,还有员工工作年限,员工基本工资等都是重要属性,也就是候选属性,像员工身高,体重,性别等这些属性就不是那么重要,不作为候选属性,然后根据哈希函数从这些候选属性中选取一个属性来嵌入水印。也即确定哪些候选属性需要嵌入水印信息。优选的,本步骤可以分为以下两个步骤:

s1031:利用数据库主键pr对所述元组进行标记;

s1032:利用预设密钥和所述数据库主键pr得到待嵌入属性。

而步骤s1032可以具体包括:

s1:根据所述待嵌入属性确定待嵌入子水印;

s2:根据所述索引值、所述预设密钥确定所述元组对应的哈希值;

s3:根据所述待嵌入属性、所述预设密钥和数值型属性中的小数长度确定嵌入位置;

s4:将所述待嵌入子水印嵌入至所述嵌入位置;

循环s1-s4直至所述元组的每个所述待嵌入属性均嵌入完毕。

s104:利用预设密钥将所述冗余水印编码嵌入至所述元组的所述待嵌入属性。

以下举例对步骤s103和s104进行说明:

step1:用d表示原始数据库,由于原始数据库的元组不具有固定的顺序,为了保证可以提取出所有的子水印,本申请实施例采用数据库主键pr来进行元组标记。

step2:对于每一个元组t,t∈d,计算id=hash(pr,key),其中key为预先选择的密钥;

step3:计算index=idmod(n),选择嵌入的子水印的index[0,n-1],然后计算h(t)=hash(index||key);

step4:计算x=mod(h(t),α),其中α为数值型属性中小数部分lsb的长度,x为水印嵌入数据中具体的位置,即选择浮点数的小数部分的第x位嵌入子水印;

step5:对于元组t每一个候选属性ai∈t,i∈[1,β],重复steps6;

step6:如果mod(h(t),β)==i,其中β为候选属性的数量,则将索引为index的子水印(windex,index∈[1,n])嵌入到该元组ai属性ai(t)的小数部分的第x位和第x+1位之间。否则,继续step2。

水印嵌入到特定选择的数字属性的小数部分,这些候选属性都是由数据所有者选择的,以便它们能够可以容忍由水印引起的一定量的数据失真。在小数部分所做的改变,能够使得数据失真的影响最小,从而保证了数据的可用性。

本申请实施例利用纠删码技术进行水印编码,通过生成冗余水印,当攻击者完全删掉部分子水印时,本方案根据已提取出来的子水印能够恢复出完整的水印信息,这种水印编码方法解决了以往子水印被完全删除导致整个水印方案失效的问题,使得水印具有一定的容错率。

基于上述实施例,容易理解的是,在进行水印嵌入后,还对应存在水印的提取过程。具体的,可以根据预设密钥和临时存储数组提取所述水印信息。

水印的检测和提取阶段,主要的任务就是将水印从数据库中提取出来。水印提取过程跟水印嵌入过程大致一样,只是有些操作的顺序不同。水印提取的具体过程可以如下:

step1:原始数据库用d表示,由于数据库的元组不具有固定的顺序,为了保证可以提取出所有的子水印,本方法采用数据库主键pr来进行元组标记。

step2::对于每一个元组t,t∈d,计算id=hash(pr,key),其中key为预先选择的密钥;

step3:计算index=idmod(n),选择嵌入的子水印的index[0,n-1],然后计算h(t)=hash(index||key);

step4:计算x=mod(h(t),α),其中α为数值型属性中小数部分lsb的长度;

step5:对于元组t每一个候选属性ai∈t,i∈[1,β],重复steps6-7;

step6:清空临时存储数组m,m为一个数组用于临时存储提取出来的子水印;

step7:如果mod(h(t),β)==i,其中β为候选属性的数量,将该元组ai属性ai(t)的小数部分的第x位和第x+1位之间的数值提取出来,储存到mindex,index∈[1,n]中去。否则,继续循环。

step8:对每个矩阵mindex采用多数投票法,选取位置index处的数值,即为此子集嵌入的水印信息。将所有的index,index∈[1,k]对应的数值提取出来,构成了整个数据库的水印信息w′。

从数据库中提取出的所有子水印后,还需要进行判别是否正确,即每一个提取出来的子水印是否跟嵌入的水印一致。如果存在不一致的情况,需要进行重构恢复,本实施例提出了一种水印解码重构方法进行水印的纠错。

具体的,利用解码矩阵对水印信息进行重构,解码矩阵为水印信息在预处理过程中对应编码矩阵的逆矩阵,如公式(1)和图3所示。

a=b-1(1)

根据提取出来的子水印,从编码矩阵中删除丢失的子水印和丢失编码块对应的行,然后组成解码矩阵a,然后跟提取出确定正确的子水印块组成的矩阵在gf(2w)下进行矩阵乘法运算,得到原始的所有子水印。

下面对本申请实施例提供的一种水印嵌入系统进行介绍,下文描述的水印嵌入系统与上文描述的水印嵌入方法可相互对应参照。

本申请还提供一种水印嵌入系统,包括:

预处理模块100,用于对水印信息进行预处理,得到冗余水印编码;

分组模块200,用于利用单向哈希函数对数据库中的元组进行分组;

属性确认模块300,用于确定每个分组中所述元组的待嵌入属性;

嵌入模块400,用于利用预设密钥将所述冗余水印编码嵌入至所述元组的所述待嵌入属性。

本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请还提供了一种终端,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述终端还可以包括各种网络接口,电源等组件。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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