信息预处理的加密域大容量可逆图像信息隐藏
2023-04-07李喜艳周清雷
李喜艳 周清雷,2 刘 征,3*
1(解放军信息工程大学数学工程与先进计算国家重点实验室 河南 郑州 450001) 2(郑州大学信息工程学院 河南 郑州 450001) 3(河南牧业经济学院信息工程学院 河南 郑州 450001)
0 引 言
数字图像可逆信息隐藏是信息安全领域的一个研究方向,其理论背景涉及信号处理、密码学等多个学科。信息隐藏不仅可以保证传输载体不引起第三方的注意,还可以在网络上安全地传输秘密信息,因此,在医学、军事、法律等领域有着广泛的应用。
目前可逆信息隐藏方法主要分为四类:基于无损压缩、基于差值扩展、基于误差扩展和基于直方图平移。基于无损压缩的方法[1-3]通过压缩原始图像,得到可嵌入数据的空间,这类方法通常嵌入量较低,很难实现大容量数据的隐藏。Tian[4]提出的差值扩展方法具有里程碑意义,通过扩展相邻像素的差值实现数据的嵌入,相比传统的无损压缩方法嵌入容量显著提高。差值扩展的思想不断在改进,Alatter[5]提出利用n个像素组成像素向量,进而产生n-1个待扩展差值,嵌入容量进一步提升。在差值扩展的基础上,专家学者们提出了更高效的差值扩展方法,即预测误差扩展方法。Thodi等[6]利用目标像素的上下文环境计算出预测值,然后通过扩展预测误差实现数据嵌入。Li等[7]提出的基于像素排序的预测方法成为了近几年的研究热点之一,由于数据嵌入操作没有改变像素排列顺序,确保了算法的可逆性,另一个明显的优点是预测准确率较高。Qu等[8]充分利用了像素排序块内的k个最大值和最小值,进一步提高了嵌入容量。文献[6-8]的方法都是以像素块为单位,实现数据的嵌入。文献[9]引入了传统的目标像素上下文的概念,不再以像素块为嵌入单位,提出了以目标像素为单位的新型嵌入方法。直方图平移算法[10-12]也是典型的一类算法,通过移动灰度直方图实现数据嵌入,对像素修改的最大值为1,总的来说,计算复杂度低,保真度高,但是嵌入容量很有限。
云服务的发展对数字图像可逆信息隐藏提出了新的要求,即数字图像加密域可逆信息隐藏。个人隐私保护的需求、大容量信息隐藏的需求,使得加密域可逆信息隐藏的研究成了一个热点。数字图像加密域可逆信息隐藏的实现过程中涉及到三方:所有者,管理者和接收者。各种方法都努力实现两个目标:管理者能够嵌入大容量的信息;接收者能够完全重构原始图像和提取嵌入信息。前期的研究中,一般从三个角度进行优化:(1) 优化加密过程;(2) 优化隐藏过程;(3) 两者兼顾。在文献[13,18,20-22,24-25]中,所有者充分利用编码方法增加图像的冗余空间,但是也造成了接收者不能完全重构原始载体图像。在文献[14-16,19,26]中,管理者充分利用加密图像的冗余空间,这种策略往往不能实现大容量的嵌入。文献[25]针对所有者的工作提出了两种方法,能够实现大容量的嵌入,图像品质较佳。在文献[17,23]中图像品质较好,但是不能兼得大容量的嵌入。
数字图像加密域可逆信息隐藏根据所有者加密策略的不同,可以分为两类:加密后的冗余空间(vacating room after encryption,VRAE)和加密前的冗余空间(reserving room before encryption,RRBE)。VRAE的策略是在加密后对图像进行各种处理,获取足够的冗余空间嵌入秘密信息,这类方法的嵌入容量比RRBE类方法要小些,但是可以实现载体图像的完全恢复。RRBE的策略是先对原始图像进行各种预处理获得更多冗余空间,然后进行加密得到加密图像。这类方法的嵌入容量较大,但是不能实现载体图像的完全恢复。
通过大量文献的阅读可以发现两个问题:(1)
图像的冗余空间是有限的,虽然有很多的压缩方法,但是实现大容量的信息隐藏还是不够明显;(2) 嵌入容量和完全重构不能兼顾。为了真正地实现加密域大容量信息隐藏,本文延续VRAE的策略,实现大容量的信息隐藏,并且实现原始图像的完全重构。以往很多方法中采用加密方法之后,加密图像冗余空间很有限,本文方法将原始图像分成互不重叠的块,对块进行数独变换[27],然后对变换后的图像进行Arnold变换[28],不仅达到了加密置乱的效果,同时保留了原始图像的冗余度。为了实现大容量的信息隐藏,管理者对信息进行密码学中的S盒[29]变换,为实现嵌入容量提高1.5倍做铺垫。管理者将预处理过的秘密信息嵌入加密图像像素值的最高有效位,每个像素嵌入1 bit信息。接收者根据隐藏密钥提取出秘密信息,然后经过S盒逆变换,得到最原始秘密信息,根据加密密钥重构原始图像,实现原始图像的完全重构。
1 基于信息预处理的RDHEI
目前很少有可以兼顾大容量信息嵌入(1 bpp左右)和高视觉质量(大于50 dB)的方法,在很多时候,使用的方法大都是基于误差扩展、直方图转换的。最低有效平面位的方法是经典的信息隐藏方法,但是在加密域信息隐藏中,加密图像很难检测出是否嵌入了秘密信息。另外,最高有效平面位方法比最低有效平面位的方法更容易计算预测值,所以在加密域的信息隐藏中,较多使用MSB。基于已有的编码方法中图像的冗余空间很难再有大的突破,为了实现加密域大容量信息隐藏,在加密前或后对图像像素值进行了处理。本文做了三个工作,算法流程如图1所示,(1) 对原始载体图像进行数独变换和Arnold变换得到加密图像,保留原始图像冗余空间的同时安全性也得到了保证。(2) 在信息隐藏之前对流文件进行S盒压缩变换,使得秘密信息进行无损压缩。云管理者将预处理过的信息使用MSB方法嵌入加密图像中。(3) 接收者根据密钥等信息提取出秘密信息,并解压恢复载密信息内容,同时将完全恢复原始图像。
(a) 所有者
(b) 管理者
(c) 接收者图1 算法流程
加密过程实现如下:
输入:原始图像I(M×N)。
输出:载密图像Pe(M×N)。
1. 对载体图像计算像素预测值。
2. 对输入载体图像进行2×2分块。
3. 对所有子块进行Arnold变换。
4. 对Arnold变换的图像进行3×3分块。
5. 对所有子块进行数独变换,对于不含在任何子块中的像素不做处理。
隐藏过程实现如下:
输入:载密图像Pe(M×N)。
输出:载密加密图像Pem(M×N)。
1. 对秘密信息采用S盒变换进行预处理,将相应的S盒行号和预处理后的数据分别安全储存,以备后续处理。
2. 采用MSB嵌入方法,将预处理后的信息嵌入到载密图像中去获得载密加密图像。
3. S盒的行号通过专门的安全通道传输。
接收者的工作过程如下:
输入:载密加密图像Pem(M×N)。
输出:提取的秘密信息,重构的原始载体图像。
1. 对载密加密图像进行进行3×3分块,所有子块进行数独逆变换,不在任何子块中的像素不做处理。
2. 对数独逆变换后的图像进行2×2分块,所有子块进行Arnold逆变换。
3. 利用像素预测值重构原始载体图像。
4. 采用式(4)对加密载体图像进行运算,得到提取的秘密信息。
5. 对提取的信息进行分组,根据相应S盒的行号进行逆变换,获得最终的秘密信息。
1.1 图像加密
所有者为了保护文件的版权内容,将载体图像I(M×N)进行了加密。首先对原始图像I(M×N)进行Arnold变换生成图像IA(M×N),然后被分割成互不重叠的3×3子块,最后根据数独矩阵的映射关系对每个子块进行置乱。先前的RDHEI方法中,采用传统加密方法加密的载体图像只有很少量的冗余空间。为了避免冗余空间的减少,本文采用Arnold变换和数独变换对载体图像加密,充分保存了冗余空间。所有者经历了两个步骤进行加密载体图像:1) Arnold变换;2) 数独映射。图2是一个数独问题以及对应的解决方案,图3是Lena图像的加密处理效果图。
(a) 数独问题
(b) 数独解决方案
(a) 原图
(b) Arnold置乱图
(c) 加密图图3 Lena(512×512)图像
1) 预测误差检测。采用MSB替换方法将信息嵌入到图像中,会造成像素值的最高位缺失。在解码阶段,秘密信息提取之后,很多时候需要实现载体图像的完全重构。为了能够完全重构原始图像,准确预测像素值,在加密阶段计算并记录误差值,解码阶段利用误差值重构原始图像。具体实现过程如下:
(1) 假设当前像素值是p(i,j),其中:0≤i (3) 分别计算p(i,j)、inv(i,j)和pred(i,j)的差的绝对值,记作Δ和Δinv Δ=|p(i,j)-pred(i,j)| Δinv=|pred(i,j)-inv(i,j)| 当Δ<Δinv时,p(i,j)更接近pred(i,j),这时没有预测误差;当Δ≥Δinv时,存在误差,记录误差值。 2) Arnold变换。1960年,Arnold等[28]首次提出Arnold变换,所有者通过Arnold变换改变像素的位置达到加密图像的效果。Arnold变换公式如下: 对变换后的图像从左到右、从上到下进行扫描,分成互不重叠的3×3子块,对每一个子块按照下述的数独映射关系进行置乱,得到加密图像pe。 在本文中像素的预测值、n和数独的映射关系作为密钥保存,通过专门的安全通道传输至接收方。图3是对测试图像Lena(512×512)进行Arnold变换和数独变换的效果图,计算简单,安全性高,更重要的是保留了载体图像的冗余空间。 随着行业的快速发展,例如军事、法律、医学领域对目前的信息嵌入量不满意,嵌入大容量的信息成为云管理者的努力方向。图像的冗余空间已经进行了充分开发,几乎没有再继续突破的空间。本文从压缩性和安全性两个因素考虑,引入DES加密算法的S盒,充分压缩了秘密信息的容量,使得实际嵌入量提高1.5倍。S盒是DES算法的核心,是唯一的非线性部分,每个S盒可以实现6 bit的输入,得到4 bit的输出。根据这一特性,可以被应用到压缩和扩展变换中。本文中采用S盒来预处理秘密信息,行号被专门存储,并通过安全通道传输。 1) S-BOX。S盒的功能是一种简单的代替操作,将每个S盒的6位输入变换为4位输出,假设输入A=a1a2a3a4a5a6,令a2a3a4a5=k,a1a6=h,在S盒的h行k列找到一个数B,B在0~15之间,则用二进制表示B=b1b2b3b4,就是S盒的输出。例如,根据图4的S盒,输入二进制串1110001010101110001010101110001 01010111000101010,每6 bit分为一组,共分为8组。每组通过S-BOX替换操作,生成新的数据串0011 0110 0011 0110 0011 0110 0011 0110,8个行号10 10 10 10 10 10 10 10被保存下来作为密钥,通过专门的安全通道传输。 图4 S盒 2) 信息隐藏。在信息隐藏阶段,云管理者对秘密信息进行预处理,进行S盒变换预处理。压缩后的信息作为实际嵌入的消息,相关的行号作为秘密保存在专门的安全通道。云管理者将预处理过的秘密信息bk采用最高有效位的方法嵌入加密图像pe中,嵌入式(3)实现秘密信息的嵌入,得到隐藏图像pem。 pem(i,j)=bk×128+(pe(i,j) mod 128) (3) 在解码阶段,接收者收到隐藏图像pem,根据所拥有的密钥,可以提取出秘密信息或者恢复原始载体图像。1) 只拥有隐藏密钥的情况下,可以准确地提取出秘密信息;2) 拥有加密密钥和隐藏密钥,既可以提取出秘密信息,也可以重构原始载体图像。 1) 数据提取。接收者根据隐藏密钥和式(4),提取出隐藏图像中的秘密信息,然后经过S盒逆变换得到原始秘密消息。例如提取出的秘密信息是00110110 001101100011011000110110,每4 bit一组,分8组,根据行号查找S盒得到原始秘密信息111000 101010 111000 101010 111000 101010 111000 101010。 bk=pem(i,j)/128 (4) 2) (1) 根据数独的映射关系调整隐藏图像pem,得到初步重构图像pe1。 (3) 像素最高有效位的计算: ① 分别计算像素值最高位为0和1的情况下与预测像素值pred(i,j)差的绝对值: ② 根据差值比较重构像素值,当e1 为了验证本文算法的性能,选取20幅USC-SIPI图像库中的灰度图像作为测试图像,图像大小为512×512,BMP格式,水平和垂直分辨率均为71 DPI,大小均为257 KB。编程环境为Python 3.8和Windows 10操作系统(主频2.20 GHz,内存2.19 GB)。其中S盒采用的是DES算法中的S1盒;为了降低攻击者解密图像的风险,Arnold置乱的分块不能太大,同时达到全面置乱的效果选择2×2的分块大小;数独变换进一步置乱加密图像,根据数独矩阵的特征选择3×3的分块大小,尽可能地处理所有像素。数独的盘面是一个九宫格,每一宫又分为九个小格,因此,我们采用数独映射变换时子块大小为3×3,符合数独变换的特征。在实际应用中,我们希望Arnold变换的周期越小越好,这样就可以减少计算时间和计算量。实验中采用的图像尺寸是512×512,数独变换并没有覆盖到所有的像素值,所以在Arnold变换时采用2×2分块。峰值信噪比(Peak Signal to Noise Ration,PSNR)和结构相似度(Structural Similarity index Measurement,SSIM)用来评价图像的质量。PSNR越高说明图像的品质越好,SSIM越趋近于1说明重构的效果越好。下面具体通过两方面进行展开:1) 数据分析Lena、Airplane、Lake和Baboon四幅测试图像;2) 安全性分析;3) 给出与文献[13,16-18,25]五种方法的对比。 1) 数据分析。测试图像的尺寸都是512×512,实际嵌入的秘密信息是经过S盒预处理的消息。图3是Lena图像的加密效果图,图5是Lena图像的重构过程图。Lena、Airplane、Lake和Baboon四幅测试图像的平均嵌入率是1.448 3 bpp、1.483 3 bpp、1.476 2 bpp和1.121 7 bpp。由于嵌入信息的图像是载密图像,所以PSNR=+∞。加密过程中的额外信息有:数独映射表、Arnold变换的次数;隐藏过程中的额外信息有:行号。为了实现加密域大容量信息的嵌入,额外信息单独保存,通过专门的安全通道传输。通过表1看出SSIM=1,表明原始载体图像可以完全重构。 (a) 隐藏图 (b) 解密图 (c) 重构图图5 Lena(512×512)重构 表1 测试图像的嵌入率 因此,我们研究的密钥空间为6.67×1021×KSA。假设我们要研究的512×512×8图像要加密,T的值为3,则我们密钥空间为6.67×1021×265 536。我们研究的关键空间足够大,可以抵抗多种暴力攻击。此外,非法的第三方提取的秘密信息是乱码,需要同时获得每组的行号,再通过S盒的逆运算才能恢复原始秘密消息。 3) 数据对比。为了进一步验证本文算法的性能,通过与文献[13,16-18,25]5种方法的对比,充分说明了本文方法的有效性和安全性。在文献[25]中(PSNR=+∞,SSIM=1),所有测试图像都能够完全重构,平均嵌入率是0.921 2 bpp。在文献[13,16-18]中,嵌入容量都较低,而且不能实现载体图像的完全重构。表2详细说明了各种方法的嵌入率和图像品质,本文的平均嵌入率是1.382 6 bpp,比文献[25]提高了将近0.5倍,而且图像品质很优(PSNR=+∞,SSIM=1)。从安全的角度分析,即使有非法的第三方窃取了秘密信息,也无法获得原始的秘密信息;从通用性的角度分析,由于对信息进行了统一预处理,所以在很大程度上,该方法具有很好的通用性;从性能的角度分析,该方法不仅能够实现高品质的图像(PSNR=+∞,SSIM=1),还能兼顾嵌入容量的提高。 表2 本文与文献[13,16-18,25]的对比 续表2 本文介绍了一种信息预处理的加密域图像可逆信息隐藏方法,加密的过程采用Arnold变换和数独映射变换,操作简单安全性高,而且没有改变载体图像的冗余度。隐藏的过程中,对秘密信息进行了压缩预处理,不仅提高了嵌入容量,而且增加了安全性。提取过程中可以提取秘密信息,并恢复原始秘密消息内容,也可以实现载体图像的完全重构。通过实验表明,本文算法平均嵌入率是1.382 6 bpp,而且图像品质很优(PSNR=+∞,SSIM=1)。该方法是一种通用性较强的加密域大容量可逆信息隐藏算法,安全性也有很大保障,额外的信息保存,并通过专门的安全通道传输。本文算法的提出为云平台上加密域信息隐藏提供了理论保障,在不久的将来应用与推广打下了扎实的基础。在后续的工作中,可以进一步处理额外信息的安全轻便传输。1.2 信息隐藏
1.3 信息提取和图像重构
图像重构。秘密信息提取之后,破坏了像素值的最高有效位,在法律求证、军事和医学等领域,不仅需要获取秘密信息,还需要完全重构原始载体图像,本文通过三个步骤实现图像的重构:2 实验结果
3 结 语