随着计算机网络和多媒体技术的迅速发展,数字图像的安全保障问题日益凸显。传统的图像置乱方法如Arnold变换,面包师变换,Standard映射,幻方变换,魔方变换等已不再安全。为此,我们提出了一种图像加密算法,利用新的二维映射进行图像位置置乱,同时采用一个更加安全的基于混沌映射的扩散函数,实现图像灰度置乱。该加密算法不仅适用于加密方形图像而且对矩形图像同样适用。
一、新二维映射原理与算法
1、 新二维映射原理
设图像A的大小为M@N,首先将图像分为左右两个部分,左边的图像块为M行,7N/2_列,右边的图像块则有M行,_N/28列(其中_X8表示不大于X的最大整数,7X_表示不小于X的最小整数)。对于图像块的每相邻两列,可以将一列元素依次插入到另一列的纵向相邻的两像素之间,反复该过程,依次连接各像素点,原始图像块将被拉伸成为一条直线。根据插入的角度不同,共有4种插入方法,如图所示:
举例说明:当图像为3@5时,采用插入方法(a)时,如下图所示,则依次将像素(3,1)插入像素(3,2)之后,像素(2,1)插入像素(2,2)和(3,2)之间,像素(1,1)插入像素(1,2)和(2,2)之间,重复这个过程,即按照下图的方式可将原图像拉伸成为一条直线:(3,1),(3,2),(2,1),(2,2),(1,1),(1,2),(3,3),(3,4),(2,3),,,其它3种插入方法和方法(a)类似。
从第一个图所示的4种插入方法中任选两种分别对原图像的左右两个图像块进行操作,这样原始图像块将被拉伸成为两条直线,依次将它们连接起来得到一条长为M@N直线,然后,再折叠成一个M@N的新图像,实现图像位置的置乱。根据左右两个图像块采用的插入方法的不同可以得到12种不同的组合方式,如图所示:
在实际的图像文件加密中,可以任意抽取其中的若干组合方式用于图像位置置乱。
2、新二维映射计算加密算法
(1)各插入方法的计算加密算法
由于映射是由4个插入方法任意组合形成的,分别给出各插入方法的算法如下:设图像大小为M@N,A(i,j)为图像中的任意一点像素值i=1,2,,M,j=1,2,,N,L(t),t=1,2,,,M@N为将A(i,j)拉伸后的一维向量。
A、方法(a)的算法:
如上图方法a所示,插入方法为(a)算法:
当j是奇数时,若j=N,
L(M@(j-1)+i)=A(i,j), (1)
若j<N,
L(M@(j-1)+2@(M-i)+1)=A(i,j), (2)
当j是偶数时,
L(M@(j-2)+2@(M-i+1))=A(i,j)。 (3)
B、方法(b)的算法:
当j是奇数时,若j=N,
L(M@(j-1)+i)=A(i,j), (4)
若j<N,
L(M@(j-1)+2@i-1)=A(i,j), (5)
当j是偶数时,
L(M@(j-2)+2@i)=A(i,j)。 (6)
C、 方法(c)的算法
可以通过下列过程得到:将原图A做一次镜像,如式(7)所示,Ac表示镜像后的图像,
Ac(i,j)=A(i,N-j+1), (7)
其中,i=1,2,,,M;j=1,2,,,N,然后通过算法(a)中式(1)~(3),可得到算法(c)。
D、方法(d)的算法
可以通过下列过程得到:将原图A如式(7)所述做一次镜像得到Ac通过算法(b)中(4)~(6)式,可得到方法(d)的算法。
(2)_新映射的计算算法
A、映射1算法
对B实行算法(a)得到长为M@D的直线L1,然后对C实行算法(c)得到长为M@(N-D)的直线L2。则
L(1B(M@D))=L1, (8)
L(((M@D)+1)BM@N)=L2, (9)
得到一条长为M@N的直线L。
B、映射o算法
映射o算法可以通过下列过程得到:
将原图A做一次镜像,如式(7)所示得Ac,然后对Ac施行映射1算法,如此得到映射o的算法。
C、折叠算法
把直线L重新折叠成M@N的图像的算法如式(10)所示:
E(i,j)=L((i-1)@N+j), (10)
其中,i=1,2,,,M;j=1,2,,,N。
E(i,j)是位置置乱后的图像。
_二、图像加密、解密算法
1、图像加密算法原理
本加密算法采用了位置置乱和灰度置乱相结合的方法,图像的整个加密过程如图所示。
(1)密钥设计
如图所示,加密算法采用两个密钥K1和K2,其中K1用于图像位置置乱,K2作为混沌映射的初值,用于灰度置乱,其范围为(0,1)。位置置乱中采用了映射1和映射o,其映射次数可以作为密钥K1。如K1=1234,表示依次用1映射1次,用o映射2次,然后用1映射3次,最后用o映射4次。由于图像是有限像素点的集合,像素的排列组合是有限的。因此在有限次迭代之后,加密图像会恢复到原来的状态,即混沌映射都具有庞加莱回复性。有专家指出,当迭代次数较小(如<15)时,加密算法是安全的。本文将密钥K1的每一位设计为>1015的整数。由于新映射的周期非常大(<1015),这种设计是合理的。
本文采用的扩散函数如式(11)所示。
vck=vk+Y2molL, (11)
其中,vk是指每一个像素的灰度值,vck为扩散后的像素灰度值,Y为由混沌映射产生的混沌序列,L为像素灰度级。该类扩散函数结构简单、扩散速度快。
(2)混沌序列Y的产生
采用简单的logistic映射,其函数式如下:
Xn+1=f(L,Xn)=LXn(1-Xn)。 (12)
当L=4时,系统处于混沌状态,此时系统产生的序列具有随机性,遍历性,对初值的敏感性,其范围为(0,1)。K2作为混沌序列的初值X(0)。对产生的混沌实值序列,每个实值取其从百分位开始的3个数字组成的十进制数构成序列Y即对于X(i)=0.b1b2b3b4b5,,序列,Y由式(13)得到:
Y(i)=100@b1+10@b2+b3,i=0,1,2,,。 (13)
在扩散函数中引入了伪随机序列,克服了在已知扩散函数时通过简单的逆运算就可得到原图像精确直方图的缺陷,使得该加密方法可以抵御已知明文攻击。
2、图像加密算法步骤
图像加密算法可分为3步进行:
(1)利用密钥K1及映射1或o的算法,将图像A(i,j)拉伸处理为一条直线L(t),其中t=1,2,,,M@N。
(2)利用折叠算法如式(10)所示,将直线折叠处理,得到置乱图像E(i,j)。
(3)利用密钥K2及logistic映射和扩散函数,对置乱图像进行扩散处理得到密图。
解密算法与加密算法密钥相同,过程相反。
小知识之图像加密
图像加密的概念是:利用数字图像的特性设计加密算法,以提高加密的安全性和运算效率的一种技术。