一种用于大数据的数字水印嵌入和提取方法及系统
技术领域
本发明涉及数字水印领域,尤其涉及一种用于大数据的数字水印嵌入和提取方法及系统。
背景技术
随着大数据在人类生活、工作和思维方面开启的重大变革,个人数据已成为一个蕴藏着巨大价值的宝藏,当它的价值被发掘后,能以多样的方式不断创造价值。通过深度挖掘个人数据,企业能实现更加细化的市场细分并设计生产更具针对性的产品,实现精准营销;政府政策法规的制定将更加睿智、科学。在大数据时代,个人数据收集、处理、交易和应用将空前活跃,同时,频繁的交易活动也将置个人数据隐私于随时泄露的危险境地。因此,如何解决大数据背景下个人数据隐私保护难题,平衡个人隐私保护与数据利用之间的关系,已引起业界和学术界的广泛关注。
数据溯源是其中一个重要方向。利用数字水印技术采用非加密的方法,实现对数据的版权保护和安全控制,更符合大数据时代数据的特性和应用需求。目前,对于数据的水印嵌入主要基于数值型属性可存在一定的冗余度来实现,通过对数值型属性的最低有效位LSB引入一定的误差实现水印的嵌入和提取。
然而,现有技术有如下缺陷:算法鲁棒性差,抗删除攻击性差,抗增加攻击差等。
因此,提供一种用于大数据的数字水印嵌入和提取方法及系统。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的用于大数据的数字水印嵌入和提取方法及系统。
根据本发明的一个方面,提供一种用于大数据的数字水印嵌入和提取方法,包括:水印嵌入步骤和水印提取步骤,
水印嵌入步骤包括:
将水印信息编译成水印序列;
根据水印序列的长度对原始数据进行元组划分;
对各数据元组进行标记和排序;
依据该排序将水印序列嵌入各数据元组中,获取带水印数据元组;
将各带水印数据元组组合成带水印数据;
将带水印数据的水印参数存储在水印参数数据库中,并与带水印数据建立一一对应关系;
水印提取步骤包括:
接收待验证数据,与水印参数数据库中的带水印数据进行匹配,获取待验证数据的水印参数;
根据水印参数从待验证数据解析出水印序列;
将水印序列转译成水印信息。
进一步地,原始数据为数值型数据库。
进一步地,采用RS编码将水印信息编译成水印序列,并采用RS编码将水印序列转译成水印信息。
进一步地,采用RS编码将水印序列转译成水印信息之前,还包括:
采用RS编码对水印序列进行纠错。
进一步地,对各数据元组进行标记和排序包括:
利用基于密钥和主键的hash函数计算各数据元组的ID值;
根据ID值对各数据元组进行标记和排序。
进一步地,水印参数包括水印序列的长度,各带水印数据元组的水印值的位置,各带水印数据元组的水印值的顺序。
进一步地,根据水印参数从待验证数据解析出水印序列包括:
根据水印序列的长度将带水印数据划分为多个带水印数据元组;
基于水印序列嵌入各数据元组中的位置解析出各带水印数据元组的水印值;
根据各带水印数据元组的水印值的顺序对各水印值进行排序,以合成水印序列。
根据本发明的另一方面,提供一种实现用于大数据的数字水印嵌入和提取方法的系统,包括:水印嵌入子系统和水印提取子系统,
水印嵌入子系统包括:
水印信息编译模块,用于将水印信息编译成水印序列;
原始数据分组模块,用于根据水印序列的长度对原始数据进行元组划分;
元组排序模块,用于对各数据元组进行标记和排序;
水印序列嵌入模块,用于依据该排序将水印序列嵌入各数据元组中,获取带水印数据元组;
带水印数据生成模块,用于将各带水印数据元组组合成带水印数据;
带水印数据存储模块,用于将带水印数据的水印参数存储在水印参数数据库中,并与带水印数据建立一一对应关系;
水印提取子系统包括:
水印参数获取模块,用于接收待验证数据,与水印参数数据库中的带水印数据进行匹配,获取待验证数据的水印参数;
水印序列生成模块,用于根据水印参数从待验证数据解析出水印序列;
水印序列转译模块,用于将水印序列转译成水印信息。
进一步地,元组排序模块包括:
数据元组ID值计算单元,用于利用基于密钥和主键的hash函数计算各数据元组的ID值;
数据元组排序单元,用于根据ID值对各数据元组进行标记和排序。
进一步地,水印序列生成模块包括:
带水印数据划分单元,用于根据水印序列的长度将带水印数据划分为多个带水印数据元组;
水印值获取单元,用于基于水印序列嵌入各数据元组中的位置解析出各带水印数据元组的水印值;
水印序列合成单元,用于根据各带水印数据元组的水印值的顺序对各水印值进行排序,以合成水印序列,
其中,水印参数包括水印序列的长度,各带水印数据元组的水印值的位置,各带水印数据元组的水印值的顺序。
本发明与现有技术相比具有以下的优点:
1.本发明的用于大数据的数字水印嵌入和提取方法及系统对原始数据中各数据元组进行标记和排序,并依据该排序将水印序列嵌入各数据元组中,使得原始数据在流转过程中即使顺序发生变化,也能够根据各数据元组的标记进行排序,从而按照该顺序提取水印,提高水印的鲁棒性;
2.本发明的用于大数据的数字水印嵌入和提取方法及系统采用RS编码将水印信息编译成水印序列,并采用RS编码将水印序列转译成水印信息,使得能够采用RS编码对水印序列进行纠错,使得水印提取准确率更高;
3.本发明的用于大数据的数字水印嵌入和提取方法及系统利用基于密钥和主键的hash函数计算各数据元组的ID值,并根据ID值对各数据元组进行标记和排序,使得数据元组的标记不易识别,进一步提高水印的鲁棒性。
附图说明
以下结合附图和实施例对本发明作进一步说明。
图1是本发明的用于大数据的数字水印嵌入和提取方法步骤图;
图2是本发明的步骤S102具体实施时的步骤图;
图3是本发明的步骤S107具体实施时的步骤图;
图4是本发明的用于大数据的数字水印嵌入和提取系统框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
图1是本发明的用于大数据的数字水印嵌入和提取方法步骤图,如图1所示,本发明提供的用于大数据的数字水印嵌入和提取方法,包括:水印嵌入步骤和水印提取步骤,
水印嵌入步骤包括:
S100,将水印信息编译成水印序列;
S101,根据水印序列的长度对原始数据进行元组划分;
S102,对各数据元组进行标记和排序;
S103,依据该排序将水印序列嵌入各数据元组中,获取带水印数据元组;
S104,将各带水印数据元组组合成带水印数据;
S105,将带水印数据的水印参数存储在水印参数数据库中,并与带水印数据建立一一对应关系;
水印提取步骤包括:
S106,接收待验证数据,与水印参数数据库中的带水印数据进行匹配,获取待验证数据的水印参数;
S107,根据水印参数从待验证数据解析出水印序列;
S108,将水印序列转译成水印信息。
在本实施例的实际应用中,在步骤S105可以对带水印数据进行特征提取,获取带水印数据的水印参数,与带水印数据一并存储在水印参数数据库中;同时,在步骤S106,可以对待验证数据进行特征提取,获取待验证数据的水印参数,并根据该水印参数从水印参数数据库中获取水印参数。
其中,原始数据可以为数值型数据库。
本发明的用于大数据的数字水印嵌入和提取方法还包括:对带水印数据建立特征索引,存储于水印参数数据库中。
特征提取主要包括数据预处理、特征分析、特征选择。数据预处理主要包括数据清洗、数据集成、数据变换和数据规约。其中,数据清洗主要是删除原始数据集中的无关数据、重复数据,平滑噪声数据,筛选掉与挖掘主题无关的数据,处理缺失值、异常值。数据集成是把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中。特征分析主要基于主成分分析PCA(Principal Components Analysis,主成份分析)算法,但不限于PCA算法,例如可同时采用独立成分分析算法、聚类算法等。特征选择即根据特征分析算法的结果,按一定的规则从其中选择部分特征作为数据集的特征。例如采用PCA算法,可选择能量和占总能量90%的成分作为主成分。
具体地,当基于LSB(最不重要位)嵌入水印时,根据标记算法计算出的元组索引,可以按以下规则并按标记顺序向每个符合条件的元组嵌入一位水印:
当待嵌入的一位水印为0时:
若LSB mod 2=0,则不修改LSB;
若LSB mod 2=1,若LSB<9则令LSB=LSB+1,否则LSB=LSB-1;
当待嵌入的一位水印为1时:
若LSB mod 2=1,则不修改LSB;
若LSB mod 2=0,则令LSB=LSB-1。
当然,水印嵌入数据元组中的位置不限于LBS,只要人眼无法察觉即可。
本发明的用于大数据的数字水印嵌入和提取方法对原始数据中各数据元组进行标记和排序,并依据该排序将水印序列嵌入各数据元组中,使得原始数据在流转过程中即使顺序发生变化,也能够根据各数据元组的标记进行排序,从而按照该顺序提取水印,提高水印的鲁棒性。
可以采用RS编码将水印信息编译成水印序列,并采用RS编码将水印序列转译成水印信息。另外,采用RS编码将水印序列转译成水印信息之前,还包括:采用RS编码对水印序列进行纠错。
具体地,带水印数据在流转过程中可能会被删除、增加、修改部分数据,所以检测过程也可能会提取该带水印数据中的错误水印信息。因此,需要水印信息进行纠错编码,用于提取水印时可对错误数据进行纠正。本发明使用里德索罗门码(RS码)进行纠错编码,RS码是一种具有很强纠错和检错能力的多进制BCH码,码元由m个比特组成,m是大于2的任意正整数。仅当所有的n和k都满足以下条件时,m比特码元的RS(n,k)码才存在:
0<k<n<2m+2
其中,k是编码分组的数据码元数目,n是已编码分组中总的码元数。对于大多数RS(n,k)码:
(n,k)=(2m-1,2m-1-2t)
其中,t是RS码能够纠正的错误码元个数,2t=n-k是监督码元个数。
本发明采用RS(255,239)码,是在伽罗华(Galois Field)GF(28)中运算得到的,码长n=255,信息位个数k=239,校验位r=n-k=16,纠错能力t=8,码距d=17。
本发明的用于大数据的数字水印嵌入和提取方法采用RS编码将水印信息编译成水印序列,并采用RS编码将水印序列转译成水印信息,使得能够采用RS编码对水印序列进行纠错,使得水印提取准确率更高。基于RS编码,使水印算法具有较高的鲁棒性和效率。经测试当有效数据大于总体数据20%时,即可有效检测出水印信息。
图2是本发明的步骤S102具体实施时的步骤图,如图2所示,对各数据元组进行标记和排序包括:
S201,利用基于密钥和主键的hash函数(散列函数)计算各数据元组的ID值(identification,识别);
S202,根据ID值对各数据元组进行标记和排序。
具体地,由于水印信息需要分散地嵌入到原始数据中,并且需要均匀地隐藏在原始数据中,但由于原始数据中的数据元组相对独立、无序,关联性比较小,所以在进行水印嵌入时必须将元组这种无序转换为一种稳定的有序序列,因此,先筛选出用以嵌入水印的数据元组并采用标记算法来重新定位这些数据元组,即使数据元组的行列顺序时常变化,数据元组所对应的主关键字P和属性名称是不会改变且不重复的,采用hash函数作为标记算法,通过把一个单向数学函数应用于数据,对于一定长度的输入数据,总是输出固定长度的hash值作为数据元组的ID值。
同时,为了进一步提高水印的鲁棒性,在计算过程中另外加入一个密钥信息wm_key,密钥只有数据所有者知道,采用单向hash函数和密钥对元组进行标记,得到稳定、安全和唯一的ID值,如下式所示。
ID=hash(wm_key,P)
本发明的用于大数据的数字水印嵌入和提取方法及系统利用基于密钥和主键的hash函数计算各数据元组的ID值,并根据ID值对各数据元组进行标记和排序,使得数据元组的标记不易识别,进一步提高水印的鲁棒性。
图3是本发明的步骤S107具体实施时的步骤图,如图3所示,根据水印参数从待验证数据解析出水印序列包括:
S301,根据水印序列的长度将带水印数据划分为多个带水印数据元组;
S302,基于水印序列嵌入各数据元组中的位置解析出各带水印数据元组的水印值;
S303,根据各带水印数据元组的水印值的顺序对各水印值进行排序,以合成水印序列。
水印参数包括水印序列的长度,各带水印数据元组的水印值的位置,各带水印数据元组的水印值的顺序。具体地,各带水印数据元组的水印值的顺序为数据元组ID值的指定顺序。
图4是本发明的用于大数据的数字水印嵌入和提取系统框图,如图4所示,本发明提供的实现用于大数据的数字水印嵌入和提取方法的系统,包括:水印嵌入子系统和水印提取子系统,
水印嵌入子系统包括:
水印信息编译模块,用于将水印信息编译成水印序列;
原始数据分组模块,用于根据水印序列的长度对原始数据进行元组划分;
元组排序模块,用于对各数据元组进行标记和排序;
水印序列嵌入模块,用于依据该排序将水印序列嵌入各数据元组中,获取带水印数据元组;
带水印数据生成模块,用于将各带水印数据元组组合成带水印数据;
带水印数据存储模块,用于将带水印数据的水印参数存储在水印参数数据库中,并与带水印数据建立一一对应关系;
水印提取子系统包括:
水印参数获取模块,用于接收待验证数据,与水印参数数据库中的带水印数据进行匹配,获取待验证数据的水印参数;
水印序列生成模块,用于根据水印参数从待验证数据解析出水印序列;
水印序列转译模块,用于将水印序列转译成水印信息。
在本实施例的实际应用中,该系统的带水印数据存储模块可以是数据特征提取模块,其用于对带水印数据进行特征提取,获取带水印数据的水印参数,以与带水印数据的水印参数一并存储在水印参数数据库中;该系统的水印参数获取模块包括:数据特征提取单元,对待验证数据进行特征提取,获取待验证数据的水印参数;水印参数获取单元,用于根据该水印参数从水印参数数据库中获取水印参数。
本发明的用于大数据的数字水印嵌入和提取系统对原始数据中各数据元组进行标记和排序,并依据该排序将水印序列嵌入各数据元组中,使得原始数据在流转过程中即使顺序发生变化,也能够根据各数据元组的标记进行排序,从而按照该顺序提取水印,提高水印的鲁棒性。
水印信息编译模块可以采用RS编码将水印信息编译成水印序列,并且水印序列转译模块可以采用RS编码将水印序列转译成水印信息。本发明的用于大数据的数字水印嵌入和提取系统,还包括:水印序列纠错模块,用于采用RS编码对水印序列进行纠错。本发明的用于大数据的数字水印嵌入和提取方法采用RS编码将水印信息编译成水印序列,并采用RS编码将水印序列转译成水印信息,使得能够采用RS编码对水印序列进行纠错,使得水印提取准确率更高。
本发明的用于大数据的数字水印嵌入和提取系统还包括:水印参数数据库,用于存储带水印数据的水印参数,以与带水印数据一一对应。
元组排序模块包括:
数据元组ID值计算单元,用于利用基于密钥和主键的hash函数计算各数据元组的ID值;
数据元组排序单元,用于根据ID值对各数据元组进行标记和排序。
本发明的用于大数据的数字水印嵌入和提取系统利用基于密钥和主键的hash函数计算各数据元组的ID值,并根据ID值对各数据元组进行标记和排序,使得数据元组的标记不易识别,进一步提高水印的鲁棒性。
水印序列生成模块包括:
带水印数据划分单元,用于根据水印序列的长度将带水印数据划分为多个带水印数据元组;
水印值获取单元,用于基于水印序列嵌入各数据元组中的位置解析出各带水印数据元组的水印值;
水印序列合成单元,用于根据各带水印数据元组的水印值的顺序对各水印值进行排序,以合成水印序列,
其中,水印参数包括水印序列的长度,各带水印数据元组的水印值的位置,各带水印数据元组的水印值的顺序。
对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。