置乱加密是另一种较常用的加密方法,现也被许多文献选用,置乱加密可以是以像素为单位进行全局置乱,该方式打乱了图像像素值的位置,使其图像内容失去相关性,达到保护的目的。也可以是以块为单位进行置乱,该方式保留块内像素的相关性,但是打乱块与块之间的相关性,达到加密效果。另外,也有部分文献采用上述的混合方法,即先进行块置乱加密,再块内像素置乱加密,这一方法有着更好的安全性,同时,也保留块内像素部分相关性。
Arnold加密算法
典型的以像素为单位进行全局置乱加密的算法是Arnold加密算法,该加密算法也叫做“猫脸变换”,该变换在进行矩阵运算时,经过一定次数会变换为原始图像,呈现出一定的周期性,所以解密时也是依据Arnold加密算法的周期性,其变换周期根据图像大小不同而不一样,若图像阶数为N,那么其Arnold变换周期,如表所示。
在图像解密时,只需对照变换周期及加密密钥,就可以对密文图像进行解密,也就是使其变换为原始图像,如图像大小为512×512,选取的加密密钥Key=135,那么解密时只需对密文图像再进行384-135=249次变换,即能得到原始图像。需要说明的是,Arnold变换只是改变了像素值的位置,其像素值是没发生变化的,因此其像素直方图统计特性是没有改变的,非常有利于采用直方图平移嵌入额外信息。也正是因为像素值没发生变化,其图像的信息内容存在着泄漏可能。
另一种置乱方法是以块为单位进行置乱,设图像I的大小为M×N,分块大小为s×s,那么图像一共可以被分为互不重叠的n块,其中n由公式(1)得出:
(1)
上式的 [.] 符号表示取下整。块置乱的一般加密方法是先对块进行排序,然后再利用随机函数打乱序列,达到置乱目的。首先根据图像及分块大小,将图像分为n块,然后按照从左到右、从上到下的顺序扫描块,将二维矩阵块转换为一维向量,按照公式2-5对图像I进行排序,式中T表示n个块的排列序列。
(2)
块的位置排列完成后,再利用位置置乱函数randperm对序列进行随机打乱,得到置乱后的密文图像。从块置乱加密的方法中,可以看出块置乱只是依据置乱函数随机改变了块的位置,而块内像素的位置及其数值都没发生变化,保持者一定的相关性,也正是基于这一特性,从整幅密文图像来看,像素值没发生变化,适合利用直方图平移进行信息隐藏;而从块内像素的相对位置及像数值来看,非常适合基于差值扩展和预测误差的方法来进行信息隐藏,这两种思路也在文献[59-60]中使用。但是需要注意的是,块置乱密文图像安全性与块的大小有着直接关系,一般来说,块的阶数越小,分块数目越多,那么置乱加密后安全性越好,关于块大小及其密文图像关系见图。
从图中可以看出,块的阶数越大,其置乱后密文图像越不安全,主要原因是分块太大,导致其置乱后块内图像信息安全有泄漏的风险,可以凭借肉眼就能分辨得出明文图像,而分块小时,如图(b)所示,置乱加密后图像信息内容安全得到很好保护,同时分块太大,其密文图像会将块的大小给清晰呈现出,间接给出了加密方式,不利于信息内容的保护。而针对这一安全问题,若分块较大时,常用的办法是在对块置乱后,然后再对块内像素进行位置置乱,打乱块内的相关性,使其密文图像呈现出无规律,该方法结合块置乱和位置置乱,能有效保护图像的信息内容安全。