张秋余 冯玉春
(兰州理工大学计算机与通信学院 甘肃 兰州 730050)
为了更好地实现隐秘通信以及提高保护传输图像数据的安全性,通常需要对图像进行加密,然后进行数据隐藏。因此,基于加密域图像的可逆数据隐藏技术成为了近年来的研究热点,被广泛应用于军事、医学和法律等应用领域[1]。
现有加密图像可逆数据隐藏算法主要分为:LSB算法[2-4],通过翻转最低有效位进行秘密数据的嵌入;差值扩展算法[4-5],计算相邻像素间的差值,并扩展差值后嵌入秘密信息;直方图转换算法[6-10],首先找到的峰值点和零值点像素对,然后通过平移进行秘密数据嵌入等。2011年,Zhang[2]提出了密文域可逆数据隐藏算法,在流密码加密的图像中反转3个LSB嵌入秘密数据,该方法利用原始图像的平滑度进行数据提取。为提高数据的嵌入量,王子驰等[3]提出了一种多比特嵌入的可逆信息隐藏算法,对分块后的图像根据嵌入密钥在每块中生成多个集合,通过修改集合中的数进行多比特位嵌入,从而很大程度上提高了容量。鄢舒等[4]采用异或-置乱的加密方法,来提高算法的安全性,秘密信息的嵌入式同过比特替换来执行,但是嵌入容量相对较低。后来,Jung等[5]提出了一种大容量的可逆数据隐藏算法,将图像分成不重叠的3×1的子块,进行升值排序计算最大和最小差值,然后将数据(两位数)嵌入在差值中形成新的像素,具有较高的嵌入容量和图像质量。Shiu等[6]在图像加密之前预先计算相邻像素对的差值,然后对差值进行加密再进行秘密数据的嵌入,嵌入容量相对较低。在此基础上,Wu等[7]提出了一种预测差值的差值直方图转换的可逆数据隐藏算法,将信息嵌入到两次预测差值直方图中,该算法具有较高的嵌入容量和较低的失真率。为进一步提高嵌入的容量,钱华山等[8]利用双层嵌入的方法,将原始图像划分为不同的类型,即水平分块和垂直分块,并找到不同类型的最大绝对差,由于像素的LSB 位对图像质量的影响很小,因此信息嵌在第一个像素和第三个像素的LSB中,通过求绝对差和多层嵌入来提高嵌入容量。为增大嵌入容量,基于多维直方图转换[9-10]的方法被提出。Li等[9]提出一种基于二维差值直方图转换的方法,Xue等[10]提出一种自适应调整的差值对映射,相比文献[9]更好地利用了图像的冗余性,嵌入容量较高,图像失真度较低。Yin等[11]提出了一种基于多层加密和块直方图转换的可逆数据隐藏技术,用约瑟夫遍历和流密码相结合的加密方法,改善了原始图像的安全性,但是嵌入容量较低。文献[12]和文献[13]采用公钥对图像进行加密,但嵌入容量非常低,并且在直接解密的情况下图像失真也很严重。为解决这一问题,Nyuyen等[14]在图像加密前先预留空间然后进行秘密数据嵌入,然而,该方法未利用相邻性素间的相关性,并且定位图在一定程度上影响嵌入容量。由以上文献分析可知,现有方法存在着嵌入容量相对较低,或者在嵌入较大容量时图像的感知质量相对降低等问题在实际应用中,彩色图像比灰度图像和二值图像的应用更普遍。因此,研究密文彩色图像可逆数据隐藏技术具有重要的理论意义和实用价值。
针对以上问题,本文结合混沌加密和块直方图转换算法,提出了一种自适应的密文彩色图像可逆数据隐藏算法。该方法首先用Logistics混沌置乱算法对原始图像进行加密,再根据设定的波动阈值将加密后的图像块自适应地分成平滑块和陡峭块,选择陡峭块进行直方图平移嵌入,平滑块进行比特位替换嵌入。实验表明,该算法在具有较大嵌入容量的同时感知质量也较好,并且进行噪声和剪切攻击时鲁棒性较好,接收端也能够提取秘密信息并无失真地恢复出原始图像。
混沌系统[15]加密的序列是由系统迭代产生,混沌系统具有随机性以及敏感性等。从混沌系统的方程中通常很难推断出其初始值。其数学公式定义如下:
(1)
式中:控制参数μ∈(0,4],xi∈[0,1],i∈Z,并且该映射所产生的序列由μ和x的初始值x0控制。图像置乱[16]的实质是破坏相邻像素间的相关性,通过位置空间的变换来置乱像素,这样只是打乱了像素的位置,然而像素的大小并没有发生变化,因此加密后图像的直方图也不会变。如果将置乱算法看作是映射关系,那么原始图像和加密后图像就是一一对应的。假设原始图像为Y0,并且映射关系用字母σ表示,并得到置乱后的图像Y1,则图像之间的映射关系可以表示为:
(2)
对直方图峰值点较高、图像陡峭的块,不仅可以改动较少的像素点而且还能嵌入更多的秘密数据;对于峰值点低、图像平滑的块,不仅需要改动更多的像素点而且嵌入的容量也小。因此,对波动阈值[17]进行改进,根据改进后的波动阈值Tf将图像分成陡峭块和平滑块,选择不同的块进行不同方法的秘密数据嵌入。阈值的计算公式如下:
(3)
式中:l表示块的长度,gmax表示峰值点的个数,gi表示峰值点相邻像素的像素数,通过对峰值点数和相邻像素点数的平均值做差取平方,近而放大差距程度,更加直观地反映出直方图的波动情况。当波动阈值Tf越小时,直方图越平滑,嵌入的秘密信息就越少;当波动阈值Tf越大时,直方图越陡峭,嵌入的秘密数据容量就越大。
基于块直方图平移[18]的可逆数据隐藏算法主要通过峰值和零值点对的平移来嵌入秘密数据,假设每个图像块Q中的像素为qi,j,对每个图像块进行扫描,找出块直方图中的两个峰值点qi,l、qi,r,根据下式,判断出最大峰值点gi,r和次大峰值点gi,l:
gi,l=min(qi,l,qi,r)gi,r=max(qi,l,qi,r)
(4)
式中:qi,l和qi,r分别代表两个峰值点像素,用gi,r代表最大峰值点像素,gi,l代表最小峰值点像素。
对小于峰值点gi,l的像素和大于峰值点gi,r的像素分别进行向左和向右平移,否则像素值保持不变。
(5)
式中:qi,j代表每个图像块中的像素,q′i,j代表像素平移之后的像素值。
将嵌入的秘密数据x(x=0,1,2,3)通过对峰值点像素的平移进而实现秘密信息的嵌入,具体嵌入过程如下式所示:
(6)
算法原理如图1所示。
图1 直方图平移原理
按照上述方法处理完成图像块的直方图平移嵌入。
在直方图平移前,采用直方图收缩的方法来防止像素值的上溢和下溢,也就是对图像要先进行预处理,通过对饱和像素进行平移并做标记,来防止嵌入过程中像素的上下溢出[11]。本文首先对每个图像块Q中的像素q进行扫描,对于l比特的灰度图像,它的像素取值范围应是0~2l-1。当像素值qi,j∈{3,2l-1-3}时,像素值的大小不变;当像素值qi,j∈{0,2l-1}时,如果像素是饱和像素,对其改变的值在位置映射图H中标记为0,对未改变的像素值标记为1,否则不标记。
(7)
首先,将原始彩色图像分成R、G、B三个色彩分量,并在分离的基础上分别对三个分量进行混沌置乱加密;然后对加密后的图像块根据块直方图的波动情况,自适应地将图像分成陡峭块和平滑块,分别对平滑块和陡峭块进行秘密数据的嵌入;最后通过算法的逆运算提取出秘密数据,并且得到解密图像,同时恢复出原始彩色图像,即载体图像。本文提出的自适应的密文彩色图像可逆数据隐藏算法的原理框图如图2所示。
图2 自适应的密文彩色图像可逆数据隐藏算法
首先我们采用Logistics混沌置乱加密算法对N×N的原始彩色图像C进行加密,具体加密步骤如下:
步骤1将明文图像C分成R、G、B三个色彩分量,并将N×N的数字图像转化为N×N的参数矩阵。即:红色分量:R=C(:,:,1),绿色分量:G=C(:,:,2),蓝色分量:B=C(:,:,3)。
步骤2用加密密钥μ和m0作为初始值,通过Logistics混沌映射生成N×N的混沌序列A。然后将序列A中的每个元素扩大N×N倍以获得新的整数序列W。
步骤3用整数序列W产生随机坐标,将W中每个像素对N取整,随机产生行坐标x,对N取余,随机产生列坐标y,然后将R(i,j)像素值赋给R′(x,y),最后得到新的加密后的图像R′。
步骤4然后对G′、B′分别按照步骤2和步骤3 进行像素位置的置乱,最后将R′、G′、B′合并得到最终加密的彩色图像C′。
在获得加密图像C′后,对加密图像C′嵌入秘密数据。具体嵌入步骤如下:
步骤1将加密图像C′分成R′、G′、B′三个通道。基本原则是在通道分离过程中,将剩余的两个置零,然后依次进行处理。
步骤2首先对红色通道R′进行分块,分成互不重叠的图像块,假设每块图像的大小为u×u,本文每块图像的大小为4×4,即u=4。
步骤3根据式(3)计算图像中每块的波动值,然后将其和设定的阈值Tf进行比较,当计算的波动值小于阈值Tf时,图像被分为平滑块;当计算的波动值大于阈值Tf时,图像被分为陡峭块,然后对不同的块自适应地采取不同的嵌入方法。
步骤4对平滑块,先将块中的像素转化成八个平面位,再从最高平面位找非零的比特位平面,然后该平面位与设定的阈值t=4进行差运算,即得到嵌入比特位数,进而自适应地逐个进行秘密数据的比特位替换,然后将嵌入后的数值转化成十进制的数。
步骤5对陡峭块,首先进行像素值上下溢出的预处理,对可能溢出的像素按照式(7)进行平移并做标记,得到定位图H。
步骤6在直方图中找到最大峰值点gi,r和第二峰值点gi,l,以第二峰值点在最大峰值点左边为例,然后找出两对零值点。
步骤7根据直方图的分布,将小于gi,l的像素值像左平移三位,将大于gi,r的像素值向右平移三位,其他像素值保持不变。
步骤8按顺序扫描载体图像,当扫描到的像素值是gi,r时,如果嵌入的秘密数据是00,则像素值不变;秘密数据是01,则像素值加1;秘密数据是10,则像素值加2;秘密数据是11,则像素值加3。当扫描到的像素值是gi,l时,如果嵌入的秘密数据是00,则像素值不变;秘密数据是01,则像素值减1;秘密数据是10,则像素值减2;秘密数据是11,则像素值减3。如果最大峰值点在第二峰值点左边时,只需调整平移方向即可,将嵌入秘密数据的位置标记为1,生成定位图map,再将定位图H和map进行异或加密,然后嵌入到载体中。
步骤9按上述方法分别对G′、B′进行秘密数据的嵌入,得到嵌入有效数据的单通道密文图像,然后合并三个色彩通道,得到隐秘载体图像S。
当接收端对接收到的图像先进行解密,解密过程是加密的逆过程,具体过程如下:
步骤1将提取秘密信息后的图像S分成三个色彩分量,然后再将每个分量转化成参数矩阵。
步骤2接收端根据解密密钥,利用Logistics混沌映射原理产生混沌序列A′。
步骤3将得到的新混沌序列A′中的每个元素乘以N×N得到新的整数序列W′。
步骤4由整数序列W′随机生成横坐标x和纵坐标y,然后将像素值赋给R″(x,y),最后得到解密后的图像R″。
步骤5然后对G″、B″分别按照步骤3和步骤4 进行像素位置的还原,最后将R″、G″、B″合并得到,得到图像S″。
步骤1按照与数据嵌入方法相同的方式,将含有秘密数据的解密图像分成三个色彩分量,然后再对每个分量进行分块。
步骤2根据辅助信息和嵌入算法的逆过程,先将平滑块中的像素转化成八个平面位,然后找非零的比特位平面,再根据设定的阈值计算出嵌入的比特位数,进而自适应地逐个提取出秘密数据。
步骤3将陡峭块按嵌入数据的顺序对图像进行扫描,仍以最大峰值点在第二峰值点右边为例,当发现像素值是gi,l时,提取出的数据为00;当发现像素值是gi,l-1时,提取的数据为01;当发现像素值是gi,l-2时,提取的数据为10;当发现像素值是gi,l-3时,提取的数据为11;当发现像素值是gi,r时,提取的数据为00;当发现像素值是gi,r+1时,提取的数据为01;当发现像素值是gi,r+2时,提取的数据为10;当发现像素值是gi,r+3时,提取的数据为11。如果最大峰值点在第二峰值点左边,只需调整平移方向即可。扫描完成后,秘密数据提取完毕。
步骤4恢复原始载体图像,按嵌入数据的顺序扫描,像素点为gi,l-1、gi,l-2、gi,l-3的像素值都变为gi,l,像素点为gi,r+1、gi,r+2、gi,r+3的像素值都变为gi,r,将大于gi,r的像素值都减3,将小于gi,l的像素值都加3,扫描完成后合并三个通道,得到恢复后的载体图像。
本文采用的实验硬件平台为:AMD phenom II X4 CPU, 8GB,3.01 GHz,实验环境是Windows 7操作系统下的MATLAB R2013a。从USC-SIPI标准彩色图像库中选择具有不同纹理特征的4幅24位彩色图像(512×512)Lena、Airplane、Baboon、Peppers图像作为测试载体图像,如图3所示。秘密数据选择随机的二进制数。
图3 实验采用的载体图像
该实验通过峰值信噪比(PSNR)和嵌入率来评估恢复质量和嵌入容量,分析算法性能。
1) 峰值信噪比。PSNR定量地评价了明文图像和嵌入秘密数据后图像的相似度,PSNR值越大图像保真度越好,其计算公式如下:
(8)
式中:MSE是明文图像C和隐密载体S之间的均方误差,其被定义为:
(9)
2) 嵌入容量。嵌入容量用来评价嵌入数据的多少,使用嵌入率(ER)代表嵌入容量,其定义为:
(10)
式中:capacity为嵌入的总数据位的个数,M、N是图像长和宽。
3) 结构相似度(SSIM)。结构相似度[19]将亮度和对比度从图像的结构信息中分离,并结合结构信息对图像质量进行评价。该方法是目前最常用的评价图像质量的方法,通常与PSNR结合起来全面地评价图像质量。其定义为:
SSIM(x,y)=l(x,y)C(x,y)S(x,y)
(11)
式中:l(x,y)、C(x,y)、S(x,y)分别为x与y的亮度函数、对比度函数和结构函数。
首先,选择512×512的Lena测试图像进行实验,原始图像如图4(a)所示,经过加密后得到图像4(b),可以看出,加密后的图像变得杂乱无章,并且在视觉上是不可见的。再将加密后的图像分成4×4的不重叠块,同时随机的生成2 413比特,即将嵌入率为0.009 2 bpp的秘密数据嵌入到加密图像中,如图(c)所示。图4(d)是根据解密密钥将含秘密信息的图像解密后得到的图像,峰值信噪比为56.41 dB,可以看出,解密后含有秘密数据的图像已经几乎接近明文图像。图4(e)是提取秘密数据后恢复的载体图像,为了更进一步说明加密算法的恢复效果,将恢复出来的图像与原图像做差运算,得到的差值如图4(f)所示,可以看出:差值接近于0,即恢复出的图像几乎接近于明文图像,因此该算法实现了加密域数据的可逆嵌入和提取以及图像的恢复。
图4 加密图像的嵌入和提取以及图像的恢复
表1为本文方法在不同嵌入容量时分别选择Lena、Baboon、Airplane、Peppers图像作为测试载体图像的PSNR值和SSIM值。
表1 不同嵌入容量下的PSNR和SSIM值
由表1可知,随着嵌入率的逐渐增大,峰值信噪比和结构相似度也随之逐渐减小。当嵌入率达到0.687 bpp时,4幅图像的峰值信噪比都在35 dB以上,这表明加密后的含秘图像的不可感知性较好。
为了更进一步说明本文方法的图像质量、嵌入容量和结构相似度等性能,通过与文献[14]、文献[6]、文献[12]、文献[13]和文献[14]的算法进行比较,结果如图5所示。
图5 不同算法的性能比较
图5的4幅图分别为图像Lena、、Peppers、Baboon、Airplane利用本文算法和现有算法在不同嵌入数据的情况下峰值信噪比的对比图。可以看出,本文提出的方法有效提高了嵌入率,并且峰值信噪比均在33 dB以上,具有较好的图像质量。本文根据设定的阈值对图像块进行分类,对陡峭块采用直方图平移的多比特嵌入,对平滑块的高平面位像素进行替换嵌入。在嵌入容量相同的情况下,本文算法的图像恢复质量相比于文献[6]、文献[13]和文献[4]方法有一定的提高;在峰值信噪比一定的情况下,本文算法比文献[14]和文献[12]方法更适合嵌入大容量秘密数据。这是因为本文算法在秘密数据嵌入的过程中,只对像素点集中的块,即陡峭块,进行直方图平移嵌入,因为平滑块像素点相对较分散,嵌入的秘密数据不仅少而且对图像质量影响也很大,因此,相比于文献[6]和文献[4]的方法,当嵌入容量相同时,本文算法具有较好的峰值信噪比;又因为本文算法在直方图嵌入中进行多比特嵌入,对平滑块也进行高平面位秘密数据嵌入,并且对定位图进行了缩减,减少了辅助信息的嵌入,因此,与文献[14]和文献[12]的方法相比,能嵌入更多的嵌入容量,更适用于大容量秘密数据的嵌入。
以Lena图像作为测试载体,取不同的波动阈值T,分析随着波动阈值的变化峰值信噪比和最大嵌入率随之变化的情况,结果如图6所示。
(a) 与峰值信比的关系
(b) 与嵌入率的关系图6 波动阈值与峰值信噪比和 嵌入率之间的变化关系
从图6中可以看出,当波动阈值增大时,峰值信噪比随之增大,但嵌入率随之降低,也就是说,可以通过改变波动阈值的大小来调整嵌入率和峰值信噪比。因而根据嵌入者的需求,可以灵活调整嵌入率和图像质量之间的关系。本算法为了使嵌入率和峰值信噪比相对达到平衡,在实验过程中取波动阈值T=3。
为了验证算法的鲁棒性,对嵌有秘密信息的图像进行噪声、剪切和旋转攻击,对抗攻击性能进行分析。以Lena图像为载体,图7(a)分别是受到均值M=0,方差V=0.0001的噪声攻击、1/16的剪切攻击和逆时针旋转45度的攻击图片,图7(b)分别是恢复后的图片。
(a) 攻攻后的隐密载体
(b) 攻击恢复后的载体图7 攻击前后的图像载体
表2为图像Airplane、Lena、Baboon、Peppers四种不同彩色图像在相同嵌入率下受到噪声、剪切和旋转攻击之后的峰值信噪比变化情况。
表2 相同嵌入容量下不同攻击的PSNR值
从表2中可看出,噪声和剪切攻击的平均PSNR值在32 dB以上,抗噪声和剪切功能相对较好,但是抗旋转攻击相对抗噪声和剪切攻击能力较弱。
3.6.1加密算法的安全性分析
(1) 敏感度分析。为说明加密算法的安全性,分析了加密密钥的灵敏度。假设攻击者已经知道加密图像,我们对解密图像的安全性进行分析。文献[16]证明图像在加密和信息嵌入的过程中对密钥的变化特别灵敏,只要密钥稍微改变,就会改变混沌映射的初始状态,最后得到错误的解密图像,从而导致图像最终不能被恢复。如当加密密钥0.700被错误输成0.699时,接收端就会出现解密错误。如图8所示,(a)、(b)分别为正确密钥和错误密钥的解密效果示意图。因此,攻击者在已知加密图像的情况下,提供的加密算法相对是安全的。
图8 正确密钥和错误密钥的解密效果图
(2) 相关性分析。相关性[20]用于表示图像中两个相邻像素点之间的密切程度,可以非常直观地反映出图像中的像素点被打乱的情况。如果相关性越低,那么表示像素点被打乱的越完全,反之则说明像素点的混乱程度还不够。通过相关系数来验证相关性,并且相邻像素的相关系数可以反映出图像像素的扩散程度。相关系数越接近于0,说明图像的像素点间越不具备相关性,越接近于1,则像素之间越具有相关性。相关系数的计算公式如下:
(12)
(13)
(14)
式中:x和y分别是两个邻近像素点的灰度值,rxy表示相关系数。
从明文图像和加密图像中分别随机抽取5 000对相邻像素,并分别从水平方向、垂直方向和对角线方向测试相邻像素间的相关性。按照式(12)-式(14)计算每对的相关系数,结果列于表3中。
表3 Peppers图像相关性分析
可以看出,明文图像的相关系数均超过了0.9,说明明文图像相邻像素的相关性很强,而加密图像相邻像素的相关系数均小于0.01,说明加密图像相邻像素的相关性很弱。为了更清楚地显示结果,以Peppers图像为例,图9给出了明文图像与加密图像的相关性分布图。
(a)
(b)
(c)
(d)
(e)
(f)图9 Peppers图像水平、垂直和对角线相关性分布图
图9(a)-(c)是明文图像分别在水平、垂直和对角线方向上的相关性分布图,可以看出,像素点聚集在一条对角线附近,说明像素间的相关性很明显。图9(d)-(f)是加密图像的水平方向、垂直方向和对角线方向的相关性分布图,像素点零散的分布在整个平面上,表明加密图像各个方向上像素间的相关性很弱。
3.6.2嵌入算法的安全性分析
假设攻击者已经知道图像的恢复和秘密数据的提取过程,我们分两种情况讨论:不知道解密图像、知道解密图像。
首先,在提取秘密数据和恢复图像之前要获得解密图像,但是根据上述加密安全性分析可知,直接获得解密图像是不容易的。因此,攻击者在不知道解密图像的情况下,是很难提取出秘密数据并恢复出原始图像。
其次,如果攻击者已经知道解密图像,但是在数据提取和图像的恢复过程中是要知道辅助信息,比如位置图和秘密数据的比特位,然而在嵌入的过程中对辅助信息已经进行了异或加密,假设辅助信息的长度为n,那么攻击者获得辅助信息的概率为1/2n。因此,攻击者难以准确地提取秘密数据并恢复原始图像。
为解决现有算法嵌入容量低以及在嵌入容量较大时图像感知质量较低等问题,本文提出了一种自适应的密文彩色图像可逆数据隐藏算法,根据设定的阈值自适应地对陡峭块进行直方图多比特位嵌入来提高嵌入容量;对平滑块进行平面位的替换进行秘密数据嵌入,进而提高图像的不可感知性。实验结果表明,当嵌入率为1.142 bpp时,峰值信噪比可达35 dB以上,且进行噪声、剪切攻击时鲁棒性较好,与现有方法相比在增大嵌入率的同时提高了图像感知质量,并且图像能得到很好的恢复。本文算法的不足之处在于抵抗外界的旋转攻击能力较差。
下一步的研究计划是将该方法应用到频域中,从而提高算法的鲁棒性。