会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 密码学 / 结合密码学的安全性水印算法

结合密码学的安全性水印算法

申请号 CN201510658181.1 申请日 2015-10-14 公开(公告)号 CN105306778A 公开(公告)日 2016-02-03
申请人 中国科学院大学; 发明人 肖俊; 李登宇; 王颖;
摘要 本发明主要用于解决针对水印的安全性攻击问题。针对不同的安全性攻击特点,在充分利用密码思想和纠错编码理论的基础上,结合加密机制和双水印机制提出了一种高安全性水印算法,该算法在水印的嵌入环节分私有水印嵌入和公共水印嵌入两部分,其中私有水印的嵌入采用自适应的空域水印算法,在信息层结合载体特征序列对原始水印进行加密,并用汉明纠错编码对加密序列进行纠错编码,以应对拷贝攻击;在传输层对水印的嵌入位置和嵌入强度进行加密,以应对同源检测攻击;而公共水印的嵌入采用有较高鲁棒性的基于DCT的自适应水印算法完成,可以实现对共谋攻击的检测。测试结果表明本发明能很好的应对水印的安全性攻击问题。
权利要求

1.结合密码学的安全性水印方法,其技术要点是:将水印系统分为系统层,信息层和传输层,在信息层对水印进行了载体相关性加密,用以应对未经授权的嵌入中的拷贝攻击;

在传输层对水印的嵌入位置和强度同样进行了加密,用以应对未经授权的检测中的同源检测攻击;而系统层的双水印机制确保了水印能够检测到未经授权的去除中的共谋攻击。具体原理如下:(1)在信息层对水印信息的加密是基于载体特征的,即提取载体特征作为加密密钥之一,结合用户私钥共同对水印加密,因此加密后的水印序列是与该载体相关的,水印提取时需要重新提取载体特征,与用户私钥一起对水印信息进行解密,因此将一个载体中的水印拷贝到另一个载体后,水印提取阶段不能对其进行正确的解密,因此是无效的水印,从而防止了拷贝攻击。

(2)在传输层对水印的嵌入位置和嵌入强度分别进行加密,使得即使攻击者即使知道嵌入水印的位置,他也很难得到水印嵌入的强度,以及水印序列的顺序,从而防止了同源检测攻击。

(3)系统层面上采用双水印嵌入机制,即公共水印和私有水印。对于相同的载体,其公共水印相同,并且嵌入位置相同,私有水印用来标识版权等特殊需要的信息,可以不同。因此即使经过共谋攻击,公共水印仍然存在,而私有水印被去除。因此通过检测公共水印是否存在即可判断载体是否受到了共谋攻击。

2.根据权利要求1所述的在信息层对水印信息加密,其特征是实际嵌入到载体中的是经过加密后的水印序列,并且是与载体相关的,因此该水印只在该载体中有效。其具体过程如下:(1)边信息提取:计算图像的梯度,将其投影并累加到8个主方向,对八个主方向的累计梯度值进行排序,将排序序列作为图像的边信息或公钥。

(2)密钥预处理:将公钥和私钥按位异或作为最终的加密密钥。

(3)水印的DES加密:用本文提出的将DES雪崩效应扩展到全局的新的算法,对水印序列进行加密。

(4)水印的纠错编码:用汉明纠错编码对加密后的水印序列进行编码,纠正传输层的可能的错误。

(5)水印的置乱:采用Arnold置乱算法对水印序列进行置乱,防止裁减攻击。

3.根据权利要求书1所述的在传输层对水印的嵌入位置和嵌入强度分别进行加密,其特征是用logistic混沌序列对水印的嵌入位置进行加密,使得即使攻击者拿到了水印的所有比特,也无法将其正确的排序。而对嵌入强队的加密保证了即使知道嵌入的位置,也无法得到嵌入的水印值。其具体过程如下:(1)基于logistics混沌序列的顺序序列加密(Lose算法):用logistic算法产生混沌序列,将其作为位置序列seq,然后依次从顺序序列中无放回的取出seq序列对应的序号,将其加入最终的加密序列。

(2)对嵌入位置的加密:相对载体进行分块,分块嵌入的先后顺序由Lose算法计算得到,每个分块内部的嵌入顺序同样由Lose算法得出。

(3)对嵌入强度的加密:根据每个嵌入位置的像素值,确定可用于嵌入水印的候选位平面,然后根据logistic混沌序列确定最终的嵌入位平面。

4.根据权利要求书1所述,在系统层面上采用双水印嵌入机制,其特征是将提取到的载体特征作为公共水印嵌入到载体中。对于同一副图像,其嵌入公共水印的位置相同,从而使得即使载体受到了共谋攻击,其公共水印仍然存在。

说明书全文

结合密码学的安全性水印算法

技术领域

[0001] 本发明属于通信与信息系统领域,涉及信息论、隐秘通信、密码及编码学、图像处理等技术,特别涉及数字图像水印技术。

背景技术

[0002] 数字媒体作为一种重要的信息传播载体,广泛的传播于互联网上,为社会创造了巨大的经济价值与社会价值。由于数字媒体具有易拷贝、易篡改、易仿制、易分发且操作难以追踪等特点,因此针对数字媒体的侵权事件越来越多,为国家和个人带来了巨大的经济损失。数字水印技术正是在这种环境下应运而生。通常,版权保护水印技术是将标识作品所有者的信息永久的嵌入到作品中,具有不可见,难以去除等特点。而在发生版权纠纷时,可以用水印提取方法提取出嵌入到作品中的水印信息,从而确定作品的真正所有者,保护其合法利益。然而针对水印的安全性攻击往往利用水印系统的设计漏洞或不足,恶意的仿制、嵌入或提取水印,从而阻止水印实现其最初的设计目的。本发明主要是为了应对针对水印的安全性攻击问题,即未经授权的嵌入、未经授权的检测和未经授权的去除。
[0003] 未经授权的嵌入是指攻击者通过分析含有水印的作品,破解水印系统使用的嵌入密钥或者估计出嵌入的水印模板,将其编辑后重新嵌入到自己的作品中,从而伪装成被攻击者的身份,以欺骗被攻击者的水印检测系统或者利用其为自己提供服务的过程。一般可将这类攻击分为拷贝攻击和解释攻击。拷贝攻击指将一副作品的水印拷贝到另一幅作品中,而解释攻击是通过对已含有水印的作品重新嵌入版权水印达到混淆版权的目的。
[0004] 未经授权的检测是指攻击者未经授权试图判断水印是否存在进而破解嵌入的信息。判断水印标记存在与否是其他许多攻击的前提,如果嵌入的信息被破解,则会造成信息泄露。应对未经授权的检测的常规做法是对水印信息进行加密,阻止敌手对水印信息进行解码。但是这种做法只能防止敌手得到原始信息,而不能隐藏嵌入了水印的事实,严格来讲,这属于隐写术的范畴。另外一种未经授权的检测时攻击者判断某两幅作品是否嵌入了相同的水印,以达到对作品的来源进行归类的目的。
[0005] 未经授权的去除是指通过攻击使得现有的水印检测器不能检测出水印信息。通常可分为消除攻击和掩蔽攻击。水印受到消除攻击后,水印信息确实已经从作品中去除了,而受到掩蔽攻击只是使水印不被现有的检测器检测到,而只能被更完善的检测器检测出来。常见的去除攻击有:线性滤波,图像压缩,几何攻击,共谋攻击,Laplace去除攻击等。
[0006] 本发明针对这三种安全性攻击,即未经授权的嵌入、检测和去除,研究并提出三种相应的应对机制,并在此基础上结合密码学和纠错编码等相关理论提出高安全性的水印算法。

发明内容

[0007] 本发明的主要目的是结合密码及编码学相关理论提高水印系统的安全性,并提出了三种应对安全性攻击的机制:信息层加密机制、传输层加密机制和双水印嵌入机制。主要原理是在信息层对水印进行了载体相关性加密,用以应对未经授权的检测中的同源检测攻击;在传输层对水印的嵌入位置和强度同样进行了加密,用以应对未经授权的嵌入中的拷贝攻击;而双水印机制确保了水印能够检测到未经授权的去除中的共谋攻击。具体如下:
[0008] 1.双水印嵌入机制
[0009] 双水印机制的提出和应用主要是为了解决共谋攻击的问题,它的水印系统模型与传统水印系统模型有所不同。传统水印系统的模型如图1所示,检测器的输出结果有两种:含有水印信息和不含水印信息。因此对于一幅原本不含有水印的图像,检测器的输出应该是不含水印信息。但如果一幅图像原本含有水印信息,经过未经授权的去除攻击后,水印检测器的输出也是不含水印信息,可以看出上述两种情况输出都是不含水印信息。因此,水印系统是无法区分一幅图像是原本就没有水印信息还是经受了去除攻击后去除了水印信息。
这种情况在水印用于监控统计的场合时会带来巨大损失。共谋攻击的思路是利用若干幅载体图片相同但每个载体嵌入了不同水印信息的含水印图片合成不含水印的图片,从而骗过检测器。
[0010] 为了检测这种攻击,本发明提出一种双水印系统,并在水印检测器中引入一个新的输出状态——受到去除攻击,如图2所示。本发明的双水印是指公共水印和私有水印,并将它们同时嵌入到载体图片中。公共水印用于标识图片自身的信息,而私有水印用于标识图片的所有者或来源。具体实施时,首先提取载体图片的特征作为其公共水印,并对载体进行分块,将公共水印嵌入到某些固定分块中,然后将用于标识个人信息的私有水印嵌入到其他分块中。
[0011] 引入公共水印的目的是为了告诉水印检测系统该幅图片嵌入了水印,用以区分不含任何水印的图片,因此要使用鲁棒性较高的嵌入算法,而私有水印可根据需要选用脆弱性或者鲁棒性嵌入算法。可以看出对于含有不同私有水印的相同图片,它们嵌入的公共水印相同,并且位置相同,因此不论经受哪种方式共谋攻击,公共水印仍然存在,被去除的只是私有水印,此时检测器输出“受到去除攻击”。
[0012] 实际中针对水印的攻击类型非常多,需要根据应用场景设计特定的水印算法,但有时候,无法找到一种水印算法可以应对某个场景下的所有攻击,此时可以考虑嵌入多种水印,本发明的双水印正是基于此提出的,可以很好的解决共谋攻击问题。
[0013] 2.信息层加密机制
[0014] 信息层是水印系统的最底层,是保证水印安全通信的基础。当水印用于隐蔽通信时,可以利用密码学中的加密机制对水印信息进行加密,防止通信过程被窃听导致的信息泄露,其安全性依赖于加密算法。但当水印用于身份认证时,攻击者如果想盗用某个人的身份时,他不需要知道被盗用者加密前的原始信息,而只需要将加密后的密文信息拷贝到自己的载体中即可,这种攻击被称为拷贝攻击。
[0015] 为了解决这一问题,本文采取的策略是添加一种新的密钥,称为公共密钥,这种密钥从载体中提取,即与载体相关。加密时用公钥和私钥共同对水印信息进行加密,这样加密后的密文就与载体建立了相关性。也就是说,一个载体中的水印拷贝到另一个载体后水印检测器不能对其进行正确解密,是无效的,这样就解决了拷贝攻击的问题。需要注意的是加密顺序不能采用先用私钥加密后用公钥加密的方式,因为如果这样,攻击者可以从载体中提取特征作为公钥,用其解密密文得到的信息即是用私钥加密后的水印密文,仍然可以进行拷贝攻击。有鉴于此,可以考虑两种加密思路:先用公钥加密后用私钥加密;私钥和公钥运算得到一个新的密钥,用此密钥加密水印信息。
[0016] 3.传输层加密机制
[0017] 传输层是水印嵌入的具体过程,这一层主要由嵌入和提取算法构成。传统的水印嵌入过程是由很少的嵌入参数决定的,一般将它们作为密钥保存用于水印提取。但是为了保证保真度,这些嵌入参数的取值范围很小,即密钥空间很小,容易被暴力破解,因此可以考虑对传输层进行加密处理,以提升安全性。传输层加密可以采用对嵌入位置加密和对嵌入强度加密等策略。从字面意思很容易理解,对嵌入位置的加密就是控制要修改像素或频率域系数的位置,而对嵌入强度加密则是根据载体的特性控制对其修改的强弱。
[0018] 分析水印的嵌入算法可知,空域算法是修改一些像素的值,而变换域算法是修改变换域的系数。如果在修改位置的选取和嵌入顺序上进行加密,则可以增加提取水印的难度。可以计算假设有n个可选的嵌入位置,需要嵌入的水印序列长度为m(m≤n),则如果采用暴力破解,则有 种可能。可见,当m较大时,暴力破解的难度倍增。
[0019] 传输层的加密相当于对信息层进行了二次加密,而二次加密可以抵御很多密码破解方法的破解,进一步提高了水印系统的安全性。

附图说明

[0020] 图1为传统水印系统模型图。
[0021] 图2为双水印系统模型图。
[0022] 图3为边信息提取流程图。
[0023] 图4为扩展DES加密雪崩效应示意图。
[0024] 图5为公共水印嵌入流程图。
[0025] 图6为私有水印嵌入流程图。
[0026] 图7为Lose算法示例。
[0027] 图8为水印的提取流程。
[0028] 图9为算法有效性测试结果。
[0029] 图10为算法拷贝攻击测试1。
[0030] 图11为算法拷贝攻击测试2。
[0031] 图12为算法同源检测攻击测试1。
[0032] 图13为算法同源检测攻击测试2。
[0033] 图14为算法共谋攻击测试。

具体实施方式

[0034] 下面结合附图详细说明本发明所提供的方法中涉及的各个细节问题。
[0035] 1.水印信息的嵌入
[0036] 本发明提供的水印信息嵌入的具体实施方案如下:
[0037] 1)边信息的提取
[0038] 边信息的引入将水印和载体关联在一起,可以抵抗拷贝攻击和同源检测攻击。因为边信息是从载体中提取,参与水印的加密过程,因此水印的提取过程也需要用到边信息。这意味着边信息提取算法要在嵌入水印前后的载体中提取到的信息完全一致,否则不能正确的解密。因此边信息必须是载体比较稳定的特征,要保证即使图像有所变化,该特征仍能不变。
[0039] 图像的梯度反应图像灰度变化的快慢,一些图像处理方法虽然会影响图像梯度,但梯度的整体趋势变化却很小,除非图像严重失真,这样也就失去了实际价值。因此,本文利用图像的梯度构造边信息,构造过程如图3所示,共分为4步进行,下面对每一步进行解释。
[0040] 第一步:计算梯度。本文采用Sobel算子计算图像的梯度,它包含两组3×3的矩阵,分别在横向和纵向与图像进行平面卷积,即可得到两个方向的亮度差分近似值。如果用Gx,Gy分别表示图像A的横向差分和纵向差分,其求解公式如式1所示,
[0041]
[0042] 梯度值的大小G及方向Θ可由Gx,Gy求得,计算公式如式2所示,得到了梯度的大小和方向后,进入下一步计算。
[0043]
[0044] 第二步:梯度投影。将图像梯度矢量投影到固定的八个主方向上,即0°,45°,90°...270°,315°。按照梯度所在的区间,将其加权到区间边界的两个主方向上,加权系数为梯度方向与主方向夹角的余弦值。
[0045] 第三步:梯度统计。上一步完成了主方向投影,这一步对投影到每个主方向的梯度值进行累加,得到每个方向的梯度值。
[0046] 第四步:特征生成。对每个主方向的梯度值进行排序,得到从0°开始的每个主方向的序号(从0开始),如3,2,0,1,将序号序列转成二进制11100001,作为该图像的边信息,记为f_seq。
[0047] 2)私有水印的加密及编码
[0048] 这一部分属于信息层处理,主要使用传统DES加密算法实现对私有水印信息的加密,同时在信息层引入了冗余编码(汉明纠错码),使水印鲁棒性更强。处理过程可分为以下四个阶段:密钥预处理、水印的DES加密及其雪崩效应扩展、水印纠错编码和基于Arnold变换的水印置乱。
[0049] 第一步:密钥预处理。
[0050] 算法中选用的加密算法是DES加密,其加密密钥长度为64比特,其中8比特为奇偶校验位,即有效密钥为56比特,用户可以输入7位16进制的密钥记为user_key。水印系统将用户的输入密钥转换成2进制,每7位分组,分别计算出1个校验位,并插在其后,即可得到64比特的密钥,称作私钥,记为private_key。将之前提取到的边信息作为公钥,记为public_key,长度为32比特。最终的加密密钥为公钥按位异或私钥的结果,记为final_key。
[0051] 第二步:水印的DES加密及其雪崩效应扩展
[0052] 将二维水印图像按行扫描成一维水印序列,并以64位为单位分组,用加密密钥final_key对每一个分组分别进行DES加密,虽然DES的雪崩效应可以保证单个分组内的信息的安全性,不会发生部分泄露,但是由于分组之间是独立进行的,彼此之间没有任何的安全性制约,因此对于较长信息的加密,DES只会呈现局部雪崩效应。这在水印用于隐秘通信时可能造成部分信息被破解泄露。为了解决这个问题,需要将DES的雪崩效应扩展到分组之间。
[0053] 本发明设计的扩展雪崩效应算法原理如图4所示,可以看出相邻的两个分组有8比特的重叠区域,第一轮加密从前向后依次对每一个分组加密,并将加密结果写回数据中。这意味着当前加密的分组的前8比特是上一个分组经过加密后的后8比特,因此前一个分组的雪崩效应会随着重叠的8比特传递到后一个分组,从而使分组间产生了向后的雪崩效应。之后从后向前对所有分组再进行一次加密,在分组间产生一个向前的雪崩效应,即可将DES的雪崩效应扩展的全局。
[0054] 这种加密可以提高长明文加密的安全性,但是是以牺牲效率为代价的。对长度为n个字节的明文,用原始DES加密耗时n×t/8,其中t为一次DES加密的时间。如果用改进后的DES算法,耗时为2×n×t/7,约为原始算法的2.3倍。
[0055] 第三步:水印纠错编码
[0056] 水印在传输过程可能会受到随机噪声的干扰,为了正确、完整的恢复出水印,嵌入算法在信息层引入了纠错编码机制,纠正传输过程中的错误。本算法采用的纠错编码是汉明(7,4)码,即信息码元为4比特,校验码元为3比特,最终的码字为7比特。
[0057] 水印经过上一步的DES加密得到密文des_encrypt,与加密过程一样,编码处理前需要将其分组,这里根据汉明(7,4)码的要求,将其分成长度为4比特的数据段。每段分别计算其校验码元,得到纠错后的码字。将每组的码字连接起来得到水印经纠错编码后的编码hm_encode。
[0058] 第四步:基于Arnold变换的水印置乱
[0059] 水印的去除攻击中有一类攻击是裁剪攻击或删除攻击,做法是随机剪裁掉载体图像的一部分或者删除某行某列。这种攻击对基于空域的水印嵌入算法影响较大,表现为提取到的水印局部丢失。本发明应对这种攻击方案是用Arnold置乱算法将水印置乱,从而将局部的丢失分散到整幅图像中,使得水印仍能被识别或给水印的纠错提供可能。完成水印置乱后,得到最终的水印序列,记为final_encode。
[0060] 3)公共水印的嵌入
[0061] 公共水印引入的本质是告诉水印检测器载体中已经嵌入了水印,用以区分被去除了水印的图片和原本不含水印的图片两种状态,不需要在传输层对其进行特殊的加密,本文用提取到的边信息f_seq作为载体的公共水印,相同载体对应相同的公共水印。而为了应对共谋攻击,要求对于载体的多个拷贝,公共水印的嵌入位置和嵌入算法都保持一致。因此相同载体嵌入公共水印后仍然是相同的。
[0062] 在水印嵌入前,需要对载体分块。分块嵌入水印有很多优点,例如可以嵌入多种水印而互不干扰,也可以应对裁剪攻击等。本文选择其中的若干块用于嵌入公共水印,其余分块用于嵌入私有水印。公共水印的嵌入原则上使用任何鲁棒性较高的变换域和空域算法都可以,本文选用在变换域中嵌入水印流程图如图5所示。
[0063] 4)私有水印的嵌入
[0064] 私有水印也可称为用户水印,是标识用户信息的载体,它是双水印机制中版权保护的核心,之前用边信息对私有水印的加密,得到了最终用于嵌入的水印序列final_encode,下面介绍传输层私有水印的嵌入过程。为了便于理解和进行安全性攻击测试,本文选择在空域中进行水印嵌入。设计的水印嵌入算法的主要思想是用混沌序列加密水印的嵌入位置和强度,加密密钥记为key_x0,流程图如图6所示,下面从三个部分介绍嵌入过程。
[0065] 4.1基于logistics混沌序列的顺序序列加密
[0066] 对水印嵌入位置加密的核心是产生一个位置序列,依次将水印信息嵌入到对应的位置上。先对可选位置编号,记为order_seq,是一个顺序序列,而位置加密的实质则是选择某种规则,对上述顺序序列进行重新排列。本文基于Logistic混沌序列,设计一种无放回挑选排序算法实现对顺序序列的加密,为了方便下文使用,将其简称为Lose算法。Logistic混沌序列的原理不在赘述,此处为了保证初值敏感性,算法选择抛弃迭代产生的前100元素,取其后的n个元素,记为lgs_seq。下面以n=6为例,描述顺序序列重新排序过程如图7所示,可以看出每次从原始的顺序序列中抽取某一个元素添加到reorder_seq的最后,而第i次抽取的元素的位置是混沌序列的第i个元素模除当前order_seq的长度再加一,也就是说抽取位置完全有混沌序列决定。根据混沌序列的伪随机性,重新排序后的序列也会有很好的随机性,从而实现了对顺序序列的加密。
[0067] 4.2对嵌入位置的加密
[0068] 公共水印和私有水印的嵌入都是分块进行的,私有水印嵌入位置的加密可以从分块之间的嵌入顺序和各分块内部嵌入顺序两方面入手。分块间的嵌入顺序加密过程比较简单,只需要利用Lose算法产生一个长度为n的位置序列,然后将分好的水印段依次与位置序列确定的分块相对应,嵌入其中即可。
[0069] 分块内部的嵌入时,为抵抗裁剪去除攻击,需要在嵌入之前先对每个分块像进行Arnold置乱,然后分块(称为大分块)内部再次进行分块(称为小分块),每个小分块用于嵌入1比特水印,小分块的嵌入顺序也通过Lose算法计算得到,而小分块内部的每个像素重复嵌入这1比特水印。此时大分块图像处于置乱状态,而小分块内的水印处于有序状态。最后需要对大分块进行Arnold置乱恢复,在此过程中,大分块从置乱中恢复,而水印顺序则被打乱,从而将水印分散到了大分块中,达到抵抗裁剪攻击的目的。
[0070] 从上述嵌入过程可以看出即使攻击者得到了水印的所有比特,如果没有加密密钥,也不可能对其进行正确的排序,从而在传输层为信息层的破解设置了壁垒,增强了破解难度。
[0071] 4.3对嵌入强度的加密
[0072] 选定了每位水印的嵌入位置后,即可将水印嵌入到载体像素的某一位。为了不影响保真度,并尽可能的增大鲁棒性,本文设计的嵌入算法自适应地计算可用的嵌入位,并用加密序列决定最终的嵌入位。
[0073] a)候选嵌入位的计算。对于8阶灰度图,每个像素有8位,从右向左依次记为第1,2,3…位,位数越高的比特对图像的灰度影响越大,因此一般选用位数低的比特用于嵌入水印。由韦伯定律可以推知,像素值越大,嵌入强度就可以越高。基于此,算法根据像素值的大小确定候选比特位,记某个像素值的二进制为pixel=A8A7A6A5A4A3A2A1,候选嵌入位的选取规则如下,可以看出,像素越亮,可用于嵌入的候选比特位越多,从而保证了保真度要求。
[0074] (1)A8=1,则候选嵌入位为A4A3A2A1;
[0075] (2)A8=0&A7=1,则候选嵌入位为A3A2A1;
[0076] (3)A8=0&A7=0&A6=1,则候选嵌入位为A2A1
[0077] (4)其他,则候选嵌入位为A1。
[0078] b)最终嵌入位确定。首先为每个水印位将要嵌入的小分块产生一个logistic混沌序列,长度等于小分块的像素数目,最终水印的嵌入位由该序列确定。做法是若候选嵌入位有n个,且该像素对应于混沌序列中的值为m,则这个像素最终的嵌入位为。
[0079] 得到了水印的嵌入强度后,将水印嵌入到对应的像素位中即可完成私有水印的嵌入。从私有水印的嵌入过程可以看出,算法在操作层对水印的嵌入位置和强度进行了加密,这保证了即使攻击者掌握嵌入规则和算法,如果没有加密密钥,也无法得到正确的水印序列。因为此处的加密算法密钥空间很大,并且对初值敏感,所以破解难度很大,算法安全性高。
[0080] 2.水印信息的提取
[0081] 利用光学微结构进行水印隐藏水印的提取过程基本上是嵌入过程的逆过程,其流程图如图8所示,因此对应于嵌入过程,提取过程也分为四步进行,因为水印提取过程每一步的算法基本都和嵌入过程类似,或者是其逆过程,所以这里重点介绍提取流程,对具体的算法细节不再赘述。需要注意的是在水印提取之前先对图像进行分块,分别提取公共水印和私有水印,下面对每一步的操作过程进行说明。
[0082] 1)边信息的提取
[0083] 这一步与嵌入过程边信息提取完全相同,根据事先约好的分块方式,将待检测图像分块。对于每个分块分别计算其梯度,然后经过投影和统计,得到每个主方向的梯度和,最后对其排序,排序后新的位置序列即时到该分块的特征序列,将每个分块的特征序列拼接即可得到待检测图像的特征序列,记为f_seq或public_key。
[0084] 2)公共水印的提取
[0085] 在前文中公共水印的嵌入采用的基于DCT的自适应水印算法,因此提取过程也需要自适应的确定水印的嵌入强度。提取过程与嵌入过程类似,先对图像分块,然后根据分块的亮度和方差计算该分块的嵌入强度,最终用传统DCT域水印提取算法提取其中的水印,即可得到公共水印。
[0086] 3)私有水印的提取
[0087] 私有水印的嵌入过程运用了传输层加密技术,因此在提取时,需要用密钥key_x0对传输层进行解密:
[0088] (1)确定大分块嵌入顺序。用密钥经过Lose算法确定分块的嵌入顺序,然后依次从每个分块内提取水印片段。
[0089] (2)确定大分块内部小分块的嵌入顺序。分块内(大分块)的提取需要先进行Arnold置乱,然后再对其进行分块(小分块),每个小分块既是原始水印的每个比特的嵌入位置。提取顺序同样由Lose算法求得。
[0090] (3)确定嵌入强度。与嵌入过程相同,先根据图像像素值的大小确定候选的嵌入位平面,然后由logistic混沌序列确定最终的嵌入位置。
[0091] (4)嵌入位置和强度都确定后,即可得到嵌入到每个小分块的每个像素中的水印,而这些像素在水印嵌入时是重复嵌入了相同的1比特水印,因此根据多数原则,即可得到原始的嵌入的1比特水印。
[0092] (5)由小分块中提取的水印按照其嵌入顺序拼接起来即得到了嵌入到每个大分块中的水印段,将这些水印段按照大分块的嵌入顺序连接起来得到最终的私有水印序列(经信息层加密后的)记为private_extract。
[0093] 4)私有水印的纠错和解密
[0094] 得到私有水印序列密文private_extract后,需要对其进行解密,解密过程基本上是加密过程的逆过程:
[0095] (1)Arnold置乱恢复。嵌入时为了分散传输层的错误,为纠错编码提供更好的纠错效果,在信息层进行了Arnold置乱。水印提取时首先要对置乱进行恢复,记恢复后的密文为arnold_extract。
[0096] (2)水印序列纠错。将arnold_extract分段,每段长为7。对每段进行汉明纠错得到4位有效水印段,将所有水印段拼接起来即完成了纠错,记得到的水印序列为hm_extract。
[0097] (3)秘钥预处理。与加密过程相同,先由user_key计算private_key,用提取到的特征序列public_key对用户私钥private_key进行异或操作得到最终的解密密钥final_key。
[0098] (4)DES解密。加密过程使用了扩展了DES雪崩效应的加密算法,解密过程只需要对其进行逆处理即可得到最终的私有水印的明文。
[0099] 完成了公共水印、私有水印的提取及解密,水印的提取过程也就结束。水印系统可以基于双水印嵌入机制的原理对提取到的结果做出判断。如果公共水印不存在,则视载体从未嵌入水印,不受系统保护;如果公共水印存在,而私有水印不合法,则视载体受到了去除攻击;如果公共水印和私有水印均合法,那么则视为合法用户。据此,水印系统可以根据需要做一些版权方面控制。
[0100] 3.测试结果
[0101] 1)算法有效性测试
[0102] 为了验证本算法的有效性,这里以图9(a)所示的512×512lena标准图作为载体、以图9(b)所示的32×32的二值图像作为水印的结果,其中信息层密钥为info_key=′3af 234dc8e9b73′,传输层密钥为log_key=0.33333334,图4-1为的实验结果。
[0103] 图9(d)是在没有攻击的情况下提取到的水印,与原始水印对比其错误率为零,因此水印算法完整、正确的提取到了水印,表明了SW算法的有效性。
[0104] 图9(e)是当信息层密钥错误,为info_key=′3af234dc8e9b74′时的实验结果,可以看出,虽然密钥只有最后一位由3变为了4,提取的水印完全看不出原始水印的任何信息,误码率达到51.56%,提取到的水印与原始水印的相关性为0.0392,几乎不相关,验证了信息层加密对水印信息的保护作用,同时也证明了了扩展DES雪崩效应算法的正确性。
[0105] 图9(f)是当传输层密钥错误,为log_key=0.33333335时的实验结果,与信息层密钥错误一样,密钥很小的变化就会导致无法提取出任何水印信息,误码率达到50.39%,提取到的水印与原始水印的相关性为0.0074,几乎不相关,从而验证了传输层加密的安全性,同时证明了Lose算法以及扩展Arnold置乱算法的正确性。
[0106] 2)拷贝攻击测试
[0107] 根据攻击者掌握的水印系统的信息多少将拷贝攻击分为三类,即不掌握任何信息、只掌握信息层密钥和只掌握传输层密钥。算法中,信息层密钥为info_key=′3af234dc8e9b73′,传输层密钥为log_key=0.33333334,先将水印watermark嵌入到载体中得到图10(a)图像A′,将其作为被攻击对象,下面分三类情况进行测试。
[0108] (1)攻击者不掌握任何信息
[0109] 此时攻击者几乎不可能破解水印信息,只能用A′可能嵌入了水印的位平面替代载体相应的位平面,图10(b)为提取的嵌入了水印信息的1-4号位平面图像,图10(d)为用替换载体的低四位位平面得到的图像。测试结果如图10(e)所示,其误码率为50.78%,而与原水印的相关性为0.0146,可以看出水印检测器根本提取不到水印。原因在于传输层的水印嵌入强度被加密了。因为每个像素的嵌入强度与该像素值的大小有关,也就是每个像素用于嵌入水印的候选位平面与像素值有关,所以载体每个像素的候选嵌入位平面与载体不可能完全相同,因此不能提取到正确的水印序列。
[0110] (2)攻击者仅掌握信息层密钥info_key
[0111] 此时攻击者与第一种情况相同,同样无法得到正确的水印序列(经过信息层加密),所以掌握的信息层密钥没有任何用处,因此也无法实现拷贝攻击。实验结果和情况1中的相同,这里不再赘述。
[0112] (3)攻击者仅掌握传输层密钥log_key
[0113] 此时攻击者可以用传输层密钥对A′传输层嵌入过程进行解密,即可得到正确的水印序列(经信息层加密)。但由于不掌握信息层密钥,无法对其解密。只能用传输层密钥将其重新嵌入载体B中得到B′,测试结果如图11(e)所示,其误码率为49.41%,而与原水印的相关性为0.0220,可以看出仍然无法提取到正确的水印。原因在于信息层加密用到了载体的特征,因此经拷贝攻击后,提取过程的信息层解密会出错。
[0114] 从拷贝攻击的实验结果可以看出,以上三种情况都无法提取到正确的水印,证明了水印系统能够抵抗拷贝攻击。因此除非系统的所有密钥全部泄露,否则不可能实现拷贝攻击,从而证明了本算法的安全性。
[0115] 3)同源检测攻击测试
[0116] 先使用相同的密钥将水印嵌入到两个载体中得到A′、B′。这里,仍根据用户掌握的密钥信息多少,分三类对同源检测攻击进行测试。
[0117] (1)攻击者不掌握任何信息
[0118] 此时攻击者除了暴力破解系统没有别的办法对比两幅图像嵌入的水印。唯一可行的办法是比较两幅图像嵌入水印1至4号位平面是否相同。为了表述直观,本文将两幅图的1至4号位平面分别提出来如图12(b)和12(d)所示,它们的相关性为0.2879。为了比较差异,对它们做减法后求绝对值,得到测试结果如图12(e)所示,可以看出相减后的位平面不为0,从而无法判断水印是否相同。
[0119] (2)攻击者仅掌握信息层密钥info_key
[0120] 这种情况由于传输层无法破解,不能得到正确的水印序列(经过信息层加密),使得掌握的信息层密钥info_key没有任何用处,依然不能进行有效的攻击,测试过程和情况1相同,不在赘述。
[0121] (3)攻击者仅掌握传输层密钥log_key
[0122] 这种情况下,攻击者可以用密钥对传输层进行解密,得到正确的、被加密过的水印,如图13(b)和13(d)所示。此时,攻击者只能对得到的被加密的水印图像MA′和MB′进行对比,它们的相关性为0.1355,几乎不相关,它们的差值如图13(e)所示。可以看出此时的仍然无法判断水印是否相同。因为信息层加密过程使用的密钥final_key是由用户私钥private_key和公共密钥public_key生成的,所以即使嵌入过程中用户私钥private_key相同,但是由于载体不同导致它们对应的公钥public_key不同,因此final_key也不同,经其加密后的水印序列也不会相同。
[0123] 从同源检测攻击的实验结果可以看出,以上三种情况都无法确定两幅图像是否含有相同的水印。只有当传输层和信息层的密钥全部泄露时,才能实现同源检测,证明了本算法的安全性,而对LSB算法的测试表明,其不具备抵抗同源检测攻击的能力。
[0124] 4)共谋攻击测试
[0125] 共谋攻击的实施可以通过对嵌入了不同水印的相同载体进行求均值操作实现的。测试结果如图14所示。从图14(h)可以看出,共谋攻击后的图像中,它与原始的三个水印的相关性为0.0148、0.0357和0.0019,几乎不相关,因此不含有嵌入的3个水印中的任何一个,从而成功的去除了私有水印,但是由图14(i)可以看出,水印系统提取到的载体特征序列与公共水印相匹配,证明了公共水印存在,从而表明图像受到了去除攻击,实现了对共谋攻击的检测。
[0126] 通过算法的嵌入和提取测试表明了算法的可用性,能够实现传统水印版权保护的目的。拷贝攻击和同源检测攻击的测试结果表明,只有当系统中的所有密钥泄露,即系统完全被攻破的情况下,以上两种攻击才有可能实现。共谋攻击实验结果表明水印检测系统提取到了正确的公共水印,而没有提取到有效的私有水印,从而成功的检测到了共谋攻击。以上的实验结果证明了本发明算法的有效性以及很高的安全性。