王 慧,栗风永,朱恒杰
(上海电力大学 计算机科学与技术学院,上海 200120)
可逆信息隐藏(reversible data hiding,RDH)算法早期多应用于明文图像,主流的方法包括基于无损压缩的算法[1]、基于差值扩展的算法[2]和基于直方图平移的算法[3]。因人们对个人隐私愈加重视,密文域可逆信息隐藏(reversible data hiding in encrypted domain,RDH-ED)由此得到发展[4]。密文域可逆信息隐藏在医学诊断、法庭取证等领域有重要意义[5,6]。
针对加密图像嵌入率低的问题,学者们设计了适应加密域的算法。Zheng等[7]对加密图像像素的低有效位(least significant bit,LSB)进行无损压缩,该方法最大嵌入率可达到1 bpp(bits per pixel),但直接解密图像的视觉质量(peak signal tonoise ratio,PSNR)不高。Nguyen等[8]根据平滑像素的局部复杂度选择平滑像素来产生额外空间。该方法解密图像的PSNR较高,但嵌入率较低。Li等[9]在预测误差中提出比特替换的算法,该方法具有较高的PSNR,但嵌入容量小,Lena图嵌入率仅为0.5 bpp。Chen等[10]对灰度图像的位平面进行重排列和比特流压缩以腾出空间。该方法虽有效提高了算法的嵌入率,但平面压缩利用效率并不高。
本文提出一种基于图像位平面循环异或的可逆信息隐藏方案。提出的方法首先对图像高位平面进行依次循环异或,然后设计块的重排列机制对异或后的图像进行无损压缩。实验结果表明,该方法与现有的方法相比,不仅实现了完美的可逆性,而且能够在高嵌入率的情况下保证载体明文图像依然具有较高的视觉质量。
提出方案主要由以下几部分组成:首先图像拥有者将原始图像进行位平面分解,高有效位平面之间相互异或形成新的高位平面。然后图像拥有者利用基于块的重排列算法对新高位平面比特流重排列,将重排列构造的4种比特流利用无损压缩方法以腾出空间。利用流密码对腾出空间的图像加密。随后信息隐藏者利用LSB替换将额外信息嵌入到腾出的空间。接收方提取秘密信息并恢复原始图像。接收方在收到载密加密图之后,对图像进行解密,提取嵌入的辅助信息和秘密信息,并利用这些信息恢复原始图像。
记标准灰度图I大小为M×N,图像像素Ii,j是位置为(i,j)的像素值,每个像素是由8个比特构成,其取值范围在[0,255]。假设Bk表示第k个位平面,bi,j,k是平面Bk中位置为(i,j)的比特,则
(1)
Bk=Bk+1⊕Bk,k=7,6,…,4
(2)
定义k=8和k=1分别表示原始图像的最高、最低位平面,平面异或操作只在图像的高8-4位平面中进行。位平面异或的步骤如式(2)所示,⊕表示异或操作。
由于高位平面的比特位包含较大的相关性,因此高位平面与低位平面异或后的平面容易出现连续的相同比特,这使得异或后的平面更容易被压缩。相关结论会在后续实验中验证。
在图像高位平面循环异或之后,对图像位平面进行压缩以便腾出空间来嵌入秘密信息。传统的图像无损压缩方法是统一按行或按列扫描位平面,但此方法没有充分利用到图像像素之间的空间相关性,故而平面压缩率较低。为了提高压缩效率,提出的方案采取基于块的重排列策略。
首先将位平面分成相同尺寸大小的块,如2×2,然后按照4种扫描顺序对位平面比特流进行重排列:Type=00代表块内比特按行扫描,块与块之间也按行扫描;Type=01代表块内比特按行扫描,块与块之间按列扫描;Type=10代表块内比特按列扫描,块与块之间按行扫描;Type=11代表块内比特按列扫描,块与块之间按列扫描。重排列后的位平面比特流较原始比特流有更多的“0”、“1”连续比特段,因此更适合压缩来腾出空间。进一步对重排列后的位平面进行无损压缩,如行程编码。
在原始图像经平面循环异或和压缩处理后,采用流密码对处理后的图像加密。同样记处理后的图像中Bk表示第k个位平面,bi,j,k是平面Bk中位置为(i,j)的比特。
利用标准流密码的加密密钥K1生成二进制比特流ri,j,k,对图像进行流加密
(3)
图像位平面经压缩后会腾出部分空间,假设原始的图像比特流长度为Lo,压缩之后的比特流长度为Le,辅助信息(如块排列顺序)长度为l,则能够嵌入的秘密信息长度Lc为
Lc=Lo-Le-l
(4)
计算出额外秘密信息容量之后,我们进一步利用信息隐藏密钥K3随机从图像的LSB平面上选择长度Lc的比特位,先将这些比特填充到高位平面压缩后腾出的空间中以便接收者对图像进行复原,然后将秘密信息按顺序嵌入到LSB平面的这些比特位中。最终,数据隐藏者将载密的加密图像发给接收方。
当接收者接收到载密的加密图像时,可以通过不同的密钥从中获得不同的数据:①只有图像加密密钥K1和置乱密钥K2;②只有信息隐藏密钥K3;③同时拥有图像加密密钥、置乱密钥和信息隐藏密钥K1,K2,K3。
情况1:只有图像加密密钥K1和置乱密钥K2。接收方可以直接解密图像,并利用解压缩和逆循环异或得到载密的解密图像。由于秘密信息仅在LSB平面嵌入,因此载密解密图像在视觉质量上与原始图像很近似。此种情况可以查看图像内容但无法获得秘密信息。
情况2:只有信息隐藏密钥K3。接收者可以准确提取嵌入的秘密信息,但无法查看原始载体图像内容。
情况3:同时拥有图像加密密钥、置乱密钥和信息隐藏密钥K1,K2,K3。如果接收方同时拥有加密密钥和数据隐藏密钥,则可以无失真恢复原始载体图像,同时准确提取秘密信息。
本文通过一系列实验来测试提出算法的优势,实验中使用了6幅经典的灰度图像,包括Lena、Lake、Airplane、Peppers、Tiffany、Baboon。所有图像的大小都是512×512。实验从算法有效性、嵌入容量、图像视觉质量以及安全性4个方面分别给出对比结果。为了展示算法性能,通过计算原始图像和载密明文图像的峰值信噪比PSNR(peak signal to noise ratio)来例证算法在图像视觉质量上的优越性。记载密明文图为ID
(5)
(6)
其中,MSE是原图像I和载密明文图像ID的均方误差,MAXI表示图像颜色的最大值。PSNR的值越大,失真越少,视觉质量越高。
实验首先验证了提出算法的有效性。图1给出了使用Lena和Baboon图像的测试结果,其中Lena是较为平滑的图像,而Baboon是纹理丰富的图像,从实验结果看,不论纹理图像还是平滑图像,提出的算法都能正确提取秘密信息,同时完美恢复原始图像,这说明算法整体是有效的。此外,实验中Lena图像的嵌入率为2.533 bpp,而Baboon图像的嵌入率为1.002 bpp,但是通过解密之后的含密明文图像中,Lena图像的PSNR值为39.830 dB,如图1(d)所示,而Baboon图像的PSNR值为51.087 dB,如图1(i)所示。从实验结果可知,提出的算法对平滑图像和纹理图像都有很好的嵌入效果,在高容量的情况下均能保持良好的视觉质量。
图1 Lena和Baboon测试结果(分块大小s=2)
提出的算法利用位平面的循环异或操作来构造更长行程的比特流,我们首先测试循环异或操作对嵌入容量的影响。实验分别测试使用循环异或操作和不使用循环异或时在相同压缩方法下压缩率对比。由于位平面压缩率直接影响到腾出的空间大小,因此它可以直观反映秘密信息的嵌入容量。实验选取4幅图:Lena、Tiffany、Airplane、Baboon图,分别进行位平面压缩(第8MSB平面未实施压缩)。表1给出了测试结果。从表中可以看出,图像的第4位平面可压缩空间很小,甚至没有压缩,因为在该平面,重排列后的比特流经过无损压缩之后的比特流长度大于或者等于原始比特流长度,故此时的压缩率为0。对于第7、6、5位平面,使用循环异或之后的压缩率明显提升,以Tiffany图像为例,第7位平面使用循环异或前后减少了4670比特的空间占用,第6位平面减少了29 062比特,第5位平面减少了43 556比特,这说明提出的方法腾出的空间更大,能够嵌入更多的秘密信息。这主要是因为位平面异或的操作使平面比特流拥有更多长的“0”、“1”行程段,进而提高了平面的压缩率。
由于块重排列环节中分块大小s会直接影响到后续的压缩效果,进而对腾出的空间产生影响,因此,实验进一步测试不同的分块大小情况下的最大嵌入容量。表2分别给出了当块大小为s=2,s=4和s=8时算法的嵌入率(bpp)。从表中可以看出,当分块大小s=2时,不管是平滑图像或纹理图像,嵌入率能够达到最高。随着分块尺寸变大,载密图像的嵌入率逐渐减小,这是因为图像相邻像素具有相关性,块越小,块内联系越紧密,经过重排列之后更容易产生长行程的“0”、“1”比特序列。
表1 算法在相同压缩算法条件下使用循环异或和未使用循环异或时的位平面压缩率对比
表2 块重排列中不同分块大小对嵌入率的影响
为了给出充分对比,我们使用6幅标准图像对比不同 方案下的嵌入率。对比方法选择Zheng等方法[7]、Nguyen等方法[8]、Li等方法[9]、Chen等方法[10]。实验在s=2的条件下进行。表3给出了对应的实验结果,可以看出,在不同的测试图像上,本文提出的算法嵌入率具有较明显的优势,相比文献[7]、文献[8]、文献[9]、文献[10]的算法,平均嵌入率分别提高了1.25 bpp、2.14 bpp、1.75 bpp、0.49 bpp。这是因为平面异或和位平面压缩的方法使行程编码的压缩率变高,充分利用了相邻像素的相关性,腾出更多的空间来嵌入秘密信息,最终嵌入率得到显著提升。
表3 不同算法图像-嵌入率比较
对于不同的可分离加密图像可逆信息隐藏算法,载密明文图像的质量决定了算法性能的优劣。实验选取已有的Zheng等[7]、Nguyen等[8]、Li等[9]、Chen等[10]这4种可逆信息隐藏方法,与本文提出的算法进行对比。横坐标表示嵌入率,纵坐标为载密明文图像的PSNR值。从图2中可以看出,相同嵌入率下,提出的算法在不同测试图像上都能达到较好的视觉质量效果,并且与其它4种方法相比具有较为明显的优势。另外,由于Chen等的方法也使用压缩位平面来腾出空间,而提出的方法使用循环异或操作构造更容易压缩的位平面,因此相比Chen等的方法,提出方法在相同嵌入率下平均PSNR值有了明显提升,在1.50 bpp时,对Lena图像平均提升3.80 dB;在0.50 bpp时,对Baboon图像平均提升13.07 dB。
此外,当嵌入率较低时,如小于1.00 bpp时,提出的方法和Chen等的方法的载密解密图像能够直接达到∞,这是因为两种方法都使用压缩腾出了部分空间来保存LSB平面的原始载体信息,当嵌入容量小于压缩腾出的空间时,尽管不能提取秘密信息,但两种方法的载密含密图像都能够实现完美恢复。
实验从图像熵和密钥敏感性两个方面分析提出算法的安全性。信息熵反映了图像中的平均信息量,熵越高,图像越安全,它的定义为[11]
(7)
式中:s表示信息源,p(si)表示符号si的概率,2n表示信息源的总状态数,对于灰度图像通常设为256。密钥的敏感性通过使用统一平均变化强度(UACI)和像素变化率(NPCR)来定量分析,定义分别如下[12]
(8)
(9)
其中,c1(i,j)和c2(i,j)是原始图像和加密图像的同一位置的像素(第i行和第j列),而M和N是图像的宽度和高度,sign()为符号函数。
图2 6幅测试图像的视觉质量对比
根据文献[13],对于单个灰度图像,NPCR和UACI的理论值分别为100%和33.46%。即离理论值越近,密钥就越敏感。表4给出了不同算法和本文算法在信息 熵和密钥敏感性上的对比。由表4可知,本文使用的加密方法在不同图像的熵值和密钥敏感性非常接近理论值,且与已有方法相比并无明显下降,说明提出的方法在安全性度量方面保持了较好的性能,可以满足安全性要求。
表4 不同加密算法安全性比较
本文提出一种基于平面异或和位平面压缩的加密域可逆信息隐藏算法。提出的算法利用图像相邻像素具有相关性,异或相邻的高位平面,从而构成新的高位平面矩阵。这一操作使构成的新平面比特流中长行程段增加,短行程的数量减少。进一步将形成的新的位平面矩阵进行基于块的重排列和比特流压缩操作,从而腾出更多空间。实验结果表明,该方法在嵌入大容量信息的情况下仍能保持良好的图像视觉质量,秘密信息的提取和载体图像的恢复也实现了可分离操作,且能无失真地恢复原始载体图像。在未来的工作中,我们将从两方面对本文方法进行拓展,首先是循环异或可能会增加运算时间,考虑进一步减少实验计算量;其次块的重排列存在多种情况,可考虑利用自适应的块尺寸来约束重排列过程,使压缩效率提升,进而提高嵌入容量。