牛宇航, 申淑媛, 吕浩杰, 林焕桀
(华南师范大学 软件学院,广东 佛山 528225)
5G的普及和各种互联网技术的快速发展给人们的生活带来了很多便利,但也给信息安全带来了许多前所未有的挑战。信息隐藏以不可见、隐蔽的方式将秘密信息嵌入到多媒体载体中,接收方通过特定的算法提取载体中秘密信息,从而实现版权保护[1-2]、秘密通信等功能[3-4],有效地解决信息安全问题。大部分信息隐藏算法可以将秘密信息正确地提取出来,但会对多媒体载体造成永久的损害。然而在军事、医学和遥感等特殊的场景,不仅要求嵌入的秘密信息能够被完整提取,多媒体载体也要能够无损地恢复。为了满足这些需求,可逆信息隐藏技术[5]应运而生,接收方在提取出秘密信息的同时可以完整地重建原始载体,具有很高的应用价值。
可逆信息隐藏可分为单图像和双图像两大类。单图像可逆信息隐藏主要包括无损压缩[6]、差值扩展[7]、直方图平移[8]、预测误差扩展[9]等。双图像可逆信息隐藏是可逆信息隐藏的另一个重要组成部分,近些年被许多学者关注和研究。顾名思义,双图像可逆信息隐藏技术将产生两张相似的载密图像,只有同时拥有两张载密图像才能正确地提取秘密信息并恢复原始载体图像。与单图像方法相比,双图像可逆信息隐藏技术具有更高的安全性和嵌入率。常见的双图像可逆信息隐藏方法分为基于EMD(Exploiting modification direction)和基于中心折叠两大类。
Chang等[10]在2007年首先将EMD技术和双图像结合,这种方法通过模函数产生一个256×256大小的模函数矩阵,两个秘密像素的值通过5×5大小的子矩阵对角线的值决定。Qin等[11]使用EMD方法在第一张载密图像上嵌入秘密信息,并根据第一张载密图像自适应地修改第二张载密图像,该方法产生的两张载密图像质量是不一样的,第一张载密图像的视觉质量要明显好于第二张。Chen等[12]充分利用EMD矩阵的特征,将一位秘密信息和一个五进制的数嵌入到一对像素中。文献[13]于2015年提出了基于中心折叠策略的双图像可逆信息隐藏技术,k位二进制秘密信息被转换为十进制后,再通过中心折叠策略和平均法嵌入到两张载密图像中。文献[14]将中心折叠技术和最低有效位结合,提升了载密图像的视觉质量。Meikap等人[15]在2021年将多方向像素值排序技术和中心折叠技术结合,提升了载密图像的嵌入容量。Lu等人[16]采用最大失真控制编码表策略,进一步折叠了十进制秘密信息的大小。
以上这些都是明文域上的双图像可逆信息隐藏方法。Bhardwaj等[17]首次提出了密文域上的双图像可逆信息隐藏方法。该方法先将图像的每个像素分解成3个单元,并将分解后的单元使用Paillier算法[18]加密。然后将秘密信息转化为三进制,即0,1,2,三进制秘密信息对应3种不同的嵌入操作。根据三进制秘密信息的值对加密后的密文值进行不同的修改,产生两个载密的密文。
但是该方法嵌入秘密信息的数量有限,仍有提升空间。本文采用改进的最大失真控制编码表,先将分解后的图像采用Paillier算法加密,然后通过平均法动态地嵌入秘密信息(每次嵌入的秘密信息位数是变化的)。最后产生的载密密文具有更高的嵌入率,同时能够无损地恢复出原始载体图像。本文将密码学技术和信息隐藏技术结合,能更好地保护隐私和传递秘密信息。
Paillier加密[18]是一种典型的同态非对称加密算法,加密使用的密钥(公钥)和解密使用的密钥(私钥)是不同的。不同于对称密钥算法,此加密算法不需要在发送方和接收方共享密钥,具有更好的安全性。Paillier加密算法包括密钥生成、数据加密、数据解密3部分:
Ggcd(S(gλmodN2),N)=1,
(1)
Paillier加密算法中的公钥为(g,N),私钥为λ。
(2)数据加密:对于任意待加密整数m∈ZN,任意选择随机数r,使用公钥(g,N)加密得到密文:
C=E[m]=gmrNmodN2.
(2)
(3)数据解密:对于密文C,通过私钥进行解密得到明文,计算方法如下:
(3)
通过加密操作公式(2)可以看出,当选择的随机数r不同时,对同一个明文加密得到的密文值不一定相同,这使得Paillier算法的安全性和可靠性进一步提升。
同时Paillier算法满足加法同态,对于任意的明文m1和m2,假设
则:
(4)
Lu等[14]在2020年提出了基于最大失真控制的双图像可逆信息算法。此算法中编码数量(Number of codes, NC)和最大失真(Maximum distortion, MXD)用来调整失真程度,并生成对应的编码组合表。其中,NC表示每个编码组合中编码的数量,MXD表示编码组合造成的最大失真。表1展示了NC=3,MXD=2时的所有编码组合,其中d代表秘密信息十进制值,E表示损失值。
最大失真控制通过变量MXD有效地将载密图像损失控制在一个可控的范围,提升载密图像的视觉质量,但是该方法不能充分利用编码组合表。表1中共有25种编码组合,而每次可以嵌入二进制秘密信息的位数k=log225=4。
4位二进制秘密信息对应的十进制为(0,15),只需要表1中的前16个编码组合即可,后面9个编码组合并没有被利用到。如果嵌入5位二进制秘密信息,需要32个编码组合,则需要要增大NC或者MXD的值。增大它们的值后,编码表的组合也会随之增大,仍会有部分编码组合没有被充分利用。为了解决此问题,本文的算法嵌入秘密信息的位数将采用4位和5位相结合的方式,从而更好地利用编码表。
表1 NC=3和MXD=2时所有编码组合Tab.1 All code combinations for NC=3 and MXD=2
本节将详细描述本文所提出的方法,算法整体的流程如图1所示。具体可分为秘密信息嵌入、秘密信息提取及原始图像恢复3部分。
(1)预处理图像。将原始图像的每个像素pi分解成xi,yi,zi三个单元,即pi=xi+yi+zi。后续的嵌入操作中,三单元将作为一个整体进行嵌入。具体分解规则如下:
(5)
(3)复制密文E,得到两个相同的密文E1和E2。
图1 本文的算法流程图Fig.1 Flow chart of the proposed method
(4)构造新的编码表。原始像素被分解成3个单元,因此NC=3;同时为了保证从载密密文中提取出载密明文图像的视觉质量,MXD=2。进一步,为了充分利用编码表,新的编码表对应嵌入二进制信息的位数k可能是4位,也可能是5位。新编码表如表2所示,其中s代表二进制的秘密信息。
(5)确定本次嵌入秘密信息的位数k。从表2可以看出,当4位秘密信息十进制值小于等于6,则k=4;如果4位秘密信息对应的十进制值大于6,则k=5。具体计算方法如下:
表2 NC=3和MXD=2时优化编码组合Tab.1 Optimal code combinations for NC=3 and MXD=2
(6)
(7)
(8)
(9)
(4)重复第3步,直到所有的秘密信息提取完毕。
本节将给出本文算法的实验结果,并与其他算法进行实验结果比较。8张大小为512×512的标准灰度图像被用来进行测试,分别是Lena、Baboon、Barbara、Airplane、Boat、Elaine、Lake、Peppers,如图2所示,秘密信息是随机生成的二进制数。将从图像的不可感知性和嵌入率两方面评估算法性能。
图2 8幅标准测试图像Fig.2 Eight standard test images
SSIM认为图像是高度结构化的,从亮度、对比度和结构3方面衡量载密图像和原始图像之间的相似性。取值范围为(0,1),其值越接近于1,表明两张图像之间越相似。表4给出了嵌入容量为30 000 bit时,本文方法在8张测试图像上的SSIM值,其中SSIM_1,SSIM_2,SSIM_Avg分别表示从第一张载密图像、第二张载密图像以及两张图像的平均SSIM值。当嵌入容量为30 000 bit时,本文方法的平均SSIM值为0.97,这从另一角度验证了本算法产生的载密图像具有较好的视觉质量。
表3 本文方法的PSNR值(嵌入容量分别为 10 000,20 000,30 000 bit)Tab.3 PSNR(dB) of our method (EC of 10 000, 20 000 and 30 000 bit, respectively)
表4 本文方法嵌入容量为30 000 bit对应的SSIM值Tab.4 SSIM of our method for an EC of 30 000 bit
图3 图像Lena在嵌入容量为30 000 bit时的实验结果Fig.3 Experimental results of image Lena for an EC of 30 000 bit
为了更直观地展示本文方法的有效性,图3展示了图像Lena在嵌入容量为30 000 bit时的结果,其中图3(a)和图3(b)是对应的第一张和第二张载密密文,图3(c)和图3(d)是从第一张和第二张载密密文中提取的载密图像,图3(e)是从两张载密密文中恢复得到的载体图像。可以看出,载密图像(图3(c)和图3(d))和原始图像没有明显的差别,人眼无法区分。恢复出的原始图像图3(e)和原始图像是完全相同的,即每个像素对应的像素值都相等,这是可逆信息隐藏的最主要特性。从嵌入过程和提取恢复过程的数学表达式中,可以推导出算法是严格可逆的。图4展示了图像Lena不同嵌入容量提取秘密信息的错误率,本文算法从载密密文中提取的秘密和嵌入的秘密信息是完全一致的。二进制秘密信息能够准确无误全部提取是可逆信息隐藏的基本要求之一。其他图像的实验结果和Lena相似,由于篇幅原因不再展示。在实际应用中,本文的方法是在密文域进行的,传送给接收方的是载密密文。接收方可以直接从两个载密密文中提取出秘密信息并恢复出原始图像,并不需要进行从载密密文中(图3(a),(b))提取载密图像(图3(c),(d))这一操作。因此这里只展示了本文方法的PSNR和SSIM值,并没有和其他明文域的方法进行对比。但仍然可以看到,本文方法在嵌入容量分别为10 000,20 000,30 000 bit时对应的PSNR均在35 dB以上,30 000 bit对应的平均SSIM值为0.97,满足实际应用中对载密图像视觉质量的要求。
图4 嵌入容量和错误率的关系Fig.4 Error rate and the EC of the experiment results
图5展示了本文方法和Bhardwaj等[17]、Chen等[12]、Meikap等[15]以及Lu等[16]的方法在8张标准测试图像上的最大嵌入率。对于双图像信息隐藏方法,嵌入率等于嵌入容量除以图像尺寸后再除以2。嵌入率越高,表明算法可以嵌入越多的秘密信息,算法的性能就越好。与密文域的双图像方法相比,Bhardwaj等[17]将秘密信息转化为三进制,即0,1,2。然后根据秘密信息的值分3种不同的操作方式,将秘密信息嵌入到Paillier加密后密文中,达到了1.53 bpp的平均嵌入率,本文方法嵌入率较其方法提升了0.72 bpp。与明文域的方法相比,Chen等[12]的方法充分利用EMD矩阵的特征,将一位秘密信息和一个五进制的数嵌入到一对像素中,平均嵌入率为1.56 bpp,本文方法嵌入率较其方法提升了0.69 bpp。Meikap等[13]在2021年将多方向像素值排序技术和中心折叠技术结合,该方法依赖于像素值排序技术,因此在平滑图像上的嵌入率要高于纹理图像的嵌入率。但是本文的方法在每张测试图像上的最大嵌入率仍然高于Meikap等人[15]的方法。Lu等人[16]在同年提出了基于最大失真控制的方法,根据2.2节的分析,本文算法改进了失真编码表,每次嵌入的秘密信息不再是固定的位数,更充分利用了编码表,最大嵌入率由2 bpp提升到2.25 bpp,提高了12.5%。通过与以上最新的双图像可逆信息隐藏算法在嵌入率方面进行对比,可以看出本文算法在嵌入率方面有显著的提升。
图5 本文方法和其他4种方法最大嵌入率对比Fig.5 Comparison of maximum embedding rate between our method and other four methods
本文在Bhardwaj等人基础上提出了一种基于Paillier加密的双图像可逆信息隐藏方法。为了进一步提升嵌入率,将图像分解加密后,采用改进后的最大失真编码表,每次嵌入秘密信息的位数是动态变化的,因此能更充分地利用失真编码表。实验结果表明,本文算法的嵌入率比Bhardwaj等人的方法提升了0.72 bpp。与原始的失真控制方法相比嵌入率提升了12.5%。本文方法需要先恢复原始图像,再提取秘密信息。设计一种提取秘密信息和恢复原始图像可以分离的算法是一个值得研究的方向,是未来工作的重点。