大家都知道,像置乱是实现图像加密的重要手段之一,其最终目的是改变图像像素的位置关系或者灰度值信息,改变图像的统计信息,从而达到图像加密的目的。为提升图像置乱效果和置乱性能,从均匀分块的角度出发,提出了一种改进的Fibonacci双置乱图像加密算法。

一、Fibonacci加密算法

1、Fibonacci像素位置变换

Fibonacci的变换矩阵如式(1)、式(2)所示。

图像像素的位置矩阵表示为p(x,y)H,二维Fibonacci位置变换表达式为:

对图像做n次Fibonacci位置变换的表达式为:

x,y,x',y'∈{O,1,…,N},N为数字图像矩阵的阶数;(x,y)和(x',y')分别是原图像和置乱后图像像素的位置。

2、Fibonacci像素值变换

无论位置置乱还是像素值置乱,其二维Flbonaccl变换矩阵相同,都如式(1)、式(2)所示。与位置置乱不同,h表示任意像素值横纵坐标的十六进制,不再是像素的位置坐标。对图像像素值h变换一次的表示形式如下:

则对图像像素值h变换n次的表示形式为:

式中,h=(h1,h2)H,hi,hi'∈{1,2,…,n},i=l,2,则h'(hi,hi')H是对每个像素值h置乱后对应的像素值。

3、Fibonacci双置乱

Fibonacdi双置乱算法的主要思想是利用图像矩阵左乘二维Fibonacdi变换矩阵,先改变图像像素位置,再改变像素的灰度值,算法分两步进行;

(1)对图像的像素进行kl次位置置乱,削弱图像的空间相关性。

(2)对图像的像素进行k2次灰度值置乱,削弱图像的色彩相关性。最终得到随机生成的密钥序列,具体的置乱流程如图1所示。

二、均匀分块算法

1、图像均匀分块原理

图像能够传达信息是因为图像的像素值之间具有差异性,图像位置置乱的目的是分散。相邻像素点一,从而最大程度地破坏像素之间的相关性.从信息论角度,图像置乱的目的是降低图像相邻像素的相关性,使图像像素由最大确定性变换为不确定性的过程,即增加图像信息量的过程。首先提出图像位置熵的定义:

式中,B为图像分块区域个数;Hk(P)为第正个分块区域的信息熵,即第k个分块区域平均位置信息量,可表示如下:

式中,P(i,j)为原始图像坐标为(i,j)的像素在置乱后图像第k个分块区域出现的概率.刚当P(i,j)等概率时熵函数Hk(P)最大,从而位置熵H(R)最大。

理想的置乱状态是置乱图像中任意分块区域内的点来自原始图像各个位置的概率都相等,或者说原始图像同一分块区域内的点分布到置乱图像不同分块区域的概率相等,则置乱后图像信源的平均信息量最大,置乱效果最好。为达到理想的置乱效果,提出如下均匀置乱方法:若原始图像中每块含有nXn个点。如果这些点分别出现在置乱后图像的n×n个图像块中,不管这些点在置乱后图像各块中出现的顺序如何,只要保证每块中各含有一个点,就称为均匀置乱。

2、图像的块置乱

假设图像的尺寸为MXN,以f(i,j)(1≤i≤M,1≤j≤N)为中心的m×n(O≤m≤M,0≤n≤N)个相邻像素组成的一个邻域,称为图像块。

(1)先将图像做分块处理,通常正方块在图像加密的研究中最有代表意义,图像分块需做如下约束:

①图像行数等于列数,而且是2的指数;

②图像平均分成若干块,每块的行数都等于列数。具体的分块过程如下:

将原始图像分成M1块,每块含有N1个点,置乱后图像分成M2块,每块含有N2个点,那么实现原始图像各块中像素点间的距离由“最近”到“最远”,如图2所示,要保证该块中所有像素点被分到置乱后图像的不同块中,则M2≥N1;同理,实现原始图像各块中像素点间的距离由“最远”到“最近”,就必须保证在原始图像所有块中各取的一点,都能分到置乱后图像的同一块中,则N2≥M1。因为M2≥N1,N2≥M1,则M2,N2≥Ni N2≥M1, Ni,已知M2N2=M1N1;那么M2=N,M=N2。

令原图像由16×16个像素点组成,每块中有2×2个点,共分成8×8块,置乱后的图像为每块中有8×8个像素点,共分成2×2块,如图2所示。

(2)分别将置乱后的每个图像块按式(4)做Fibonacci位置变换,图像的加密流程如图3所示。其中Orilmage是原始图像,Scrlmage是加密图像。

图像的懈密是加密的逆过程。即利用已知密钥,首先将加密图像做Fibonacci反变换,对图像的像索值置乱进行恢复,然后按照加密时块置乱的规律采用均匀分块算法,最后对图像块做Fibonacci反变换,对图像块的像东位置置乱进行恢复,就能将原始图像还原。

三、实验效果与分析

1、相邻像素相关性分析

图像的本质特征决定了图像中栩邻像素间具有很大的相关性,利用该性质的统计攻击方法来分析图像的加密算法就成为可能,因此用相关系数来衡量加密算法破坏相邻像素相关性的能力。首先,从图像中随机选取1000对相邻像素点(水平、垂直和对角),然后利用以下公式进行计算。

式中,x和y分别表示相邻两个像索的像索值,E(.)、D(.)和Cov(.)分别是期望、方差和协方差,r是相邻两像素的相关系数,其值接近1的程度越高,相邻像索的相关性越高。将Lenna图像分别采用传统的整体Fibonacci置乱算法与本文算法进行相邻像素相关性对比实验,比较图像在3个方向的相邻像素相关性。通过表1的计算结果可见,原始图像的相邻像素是高度相关的,相关系数接近于1,密图的像素相关性接近于O,而且利用本文算法能更大程度地降低相邻像素的相关性,几乎达到了O相关。可见采用改进的双置乱加密算法明显优于传统的Fibonacci置乱算法。

2、置乱效果比较

图像置乱包括位置置乱和像素值置乱,置乱的最终目的是实现最大程度的混乱和扩散,对位置置乱而言,如果原始图像任意小的部分都能在加密之后的图像中呈均匀分布,那么可将其看作理想状态,对像素值置乱而言,如果加密之后的像索值能住(0~255)范围内呈均匀分布,即将灰度直方图的均匀分布看作理想状态。从图4可见,传统的置乱算法多数是对图像整体进行位置置乱,加密多次才能达到理想效果,而且单纯的位置置乱即使迭代多次,其灰度直方图也达术到均匀分布的状态,没有削弱图像像素的相关性,然而采用双置乱算法可以在较少的置乱次数下达到混乱和扩散的理想效果,有效削弱了图像像素的相关性。

传统分块方法分3步进行:

①将图像进行分块,假设图像大小为256X256,分块数为32X32,则计算每个图像块中像素点的个数为(256×256)÷(32X32)=8X8=64。

②对含有64个像素点的块进行位置置乱。

③采用幻方变换对图像整体进行加密。

第一行和第二行分别是采用传统分块算法和本文算法由不同分块数目获得的加密效果,如图5所示。

从图5可见,传统的分块方法具有一定的置乱效果,但随着分块数目的增加,原始图像信息逐渐从加密图像中显现出来,所以传统的分块算法有一定的局限性;而改进的分块方法分块数目越多,置乱效果越好,这是因为改进的方法采用均匀分块思想能够将图像像素均匀打乱,所以改进分块方法在图像加密中更具有实际的应用价值。

3、抗算切实验

衡量图像加密性能一般采用误码率BER、归一化相关系数NC和信噪比SNR 3个指标,它们的定义如下:

式中,M和N分别为错误比特数和总比特数,w(i,j)和W1(i,j)分别为原始图像和对加密图像进行裁剪后恢复图像的数据量;A和A’分别是原始图像和加密图像的方差。表2给出图像对随机裁剪攻击的鲁棒性实验结果。

首先采用本文算法对Lena图像进行加密处理,然后利用Adobe photoshop软件对加密图像按图6的方案裁剪,图6(d)一(f)分别是对图6(a)一(c)裁剪攻击恢复的效果图。

由裁剪攻击实验得知,对裁剪后的图像进行恢复会存在一定程度的失真,但是要辨认图像所传达的信息并不困难,通过该实验发现,加密图像恢复的效果与裁剪的位置几乎无关,主要因为改进的双置乱算法采用了均匀分块和图像块置乱的思想,使得每个图像块的像素都均匀分布到其他各个图像块,即“广泛分布”,而非“集中分布”,从本质上削弱了图像内部相邻像素的相关性,所以该算法能有效地抵抗裁剪攻击,一定程度的裁剪对图像的恢复影响不大。

4、抗噪声实验

图像数据一般用于网络传输,因此不可避免地会受到一些噪声或信道干扰。借此,采用实验验证本文算法抵御噪声攻击的能力是必要的,根据式(13) -式(15)计算加密图像在不同的Gauss噪声攻击下的性能,如表3所列。

在加密图像中加入不同程度的高斯白噪声,其中参数m和σ分别代表均值和均方差,加入均值m,均方差σ不同的高斯噪声,图7(d)一(f)分别是利用解密算法对图7(a)-(c)的恢复效果图。

通过采用不同参数对密图进行噪卢攻击的实验可以看出,当图像受到一定程度的噪声污染时基本能恢复原图像,总体上并不会影响图像所展现的内容,证明了本文算法在一定程度上抵御噪声的性能较强。

小知识之Fibonacci

斐波那契堆(Fibonacci heap)是计算机科学中最小堆有序树的集合。它和二项式堆有类似的性质,可用于实现合并优先队列。