近年来,混沌理论以其对初值极其敏感性、非线性、伪随机等特性受到人们的广泛应用,将混沌理论应用于图像加密已成为一个热点的研究方向。下面,我就给大家介绍一种新的加密方法:在空域和变换域将两种加密方式结合起来,在空域利用混沌序列和矩阵扩散变换对原始图像信息进行双重像素值扰乱,在小波变换域对小波系数进行基于混沌序列的位置置乱,对置乱后的小波系数重构生成加密图像。

一、混沌序列

混沌现象是在非线性动力系统中出现的类似随机过程,这种过程既非周期也不收敛。混沌区的数据具有迭代不重复性、初值敏感性和参数敏感性等特征。目前,用于图像加密的典型的混沌系统有三种:一维的Logistic映射,二维的Henon映射,三维的Lorenz映射。其中,Logistic映射是一类非常简单且被广泛研究的非线性动力系统,现选用该混沌系统完成图像像素值的扰乱和小波系数的位置置乱。

Logistic混沌系统被定义为:

Xk+1=μXk(1 -Xk)      式(1)

式中,0≤μ≤4称为分支参数。研究工作者指出:当Xk∈(0,1)且3.569 945 <μ≤4时,Logistic映射工作于混沌状态。

二、像素值扰乱

对像素值置乱的目的是为了改变原图像的直方图,保护原图像像素的灰度值分布信息,使加密图像能有效地抵抗对图像进行分析统计的攻击。文中采用两种方法对原始图像的像素值进行双扰乱,一种是基于混沌序列的像素值扰乱,一种是基于矩阵变换的扩散变换扰乱。

1、基于混沌序列的像素值扰乱

设原图像I的大小为M×N,选取参数μ与初始值X0采用式(1)生成一组混沌序列,并选取舍去参数n0,从Xno开始取M×N个序列并将其转换成M×N的矩阵G。根据Logistic混沌的特点可知G(i,j)∈(0,1),对G按照式(2)做相应地变换得到像素扰乱矩阵G1,G1(i,j)∈(0,255)。

G1(i,j)= round(G(i,j)×255)   式 (2)

对原图像I中的每个像素的像素值I(i,j)与G1(i,j)作异或运算,得到像素值首次被扰乱的加密图像I1。为了像素扰乱的有效性,我们给出图1(a)与图1(b)两幅图像的原直方图分布情况和经过像素值扰乱后的直方图分布情况(μ=4,X0=0.100 1,n0=40),图2(a)与图2(b)分别为两幅图的原始数据直方图。图3(a)与图3(b)分别为两幅图经过像素置乱后的直方图分布情况。从图中可以看出,经过混沌置乱后的图像直方图更均匀,有效地保护了原图像的直方图分布情况,因此,该像素值扰乱方法能有效地抵抗图像的分析统计攻击。

基于Logistic映射的多重图像加密技术

基于Logistic映射的多重图像加密技术

基于Logistic映射的多重图像加密技术

2、基于矩阵变换的扩散

变换为了使加密图像能够抵抗已知明文图像的统计分析攻击的能力更强。对原始图像的像素值进行扩散变换,使得密文的直方图得以改变以进一步保护原图像灰度值的分布信息。

将经过初次像素值扰乱的图像I1分解成2 ×2的小方块,对每个方块中的四个像素值I1(i,j),I1(i+1,j),I1(i,j+1),I1(i+1,j+1)运用变换X'=T×X,其中X=[I1(i,j),I1(i+ 1,j)I1(i,j+ 1),I1(i+1,j+1)]'为图像块中四个像素值组成的列向量,X'为经过扩散变换后的像素值向量,T为扩散矩阵。

基于Logistic映射的多重图像加密技术

其中k为任意数。这样可以把k作为扩散的参数增强加密强度。这样可以进一步扰乱图像的像素值,并改变其分布情况。

为了说明扩散变换的有效性,图4(a)与图4(b)给出了图1所示的两幅图像所对应的仅经过扩散变换后的直方图(扩散参数k= 2)。对比图2原始图像直方图与图4仅经过扩散变换的直方图,可以看出扩散变换扰乱像素值信息的有效性,实质上,扩散变换不仅扰乱了图像的直方图分布信息,而且改变了图像数据的数据范围(原图像的数据范围为0 , 255,扩散变换后数据范围将扩大很多,这与扩散变换的参数k有关)。图5为两幅原始图像经过基于混沌序列的像素值扰乱和扩散变换扰乱的双重扰乱后的直方图分布情况。结合图3与图5,可以看出仅经过混沌序列的置乱使图像分布趋于均匀,经过双重扰乱后使加密图像的直方图分布趋于相似,这样可以防止已知明文对加密图像的攻击。实验表明:文中的双重像素值扰乱方法是一种有效的图像文件加密方法。

基于Logistic映射的多重图像加密技术

基于Logistic映射的多重图像加密技术

3、小波系数位置置乱

为了进一步提高加密图像的安全性,对经过双重像素值扰乱的图像进行小波分解,在小波变换域对小波系数进行位置置乱,并对置乱后的小波系数重构得到最终的加密图像。设经过多层小波分解得到的系数矩阵为C,这里即利用混沌生成的位置置乱矩阵对C进行位置置乱。由于采用Matlab提供的wavedec2函数进行多层小波分解,则得到的小波系数矩阵C为一个行向量。设C的大小为1 ×t,位置置乱矩阵的生成方法为:首先选取参数μ和X0根据式(1)产生一组混沌序列,舍弃前R0个混沌元素,从第R0+ 1个序列开始取t个混沌序列{Xr0+1,Xr0+2,Xr0+3,…,Xr0+t},通过变换将这t个混沌序列值从小到大排序(或从大到小)得到新的序列{x'1,x'2,x'3,…,x't},并确定Xr0+i在{x'1,x'2,x'3,…,x't}中的位置编号,得到位置编号集{s1,s2,s3,…,st},得到的位置编号集即为位置置乱矩阵,设置乱后的系数矩阵为C1,则置乱时将C(i)存放于C1(si)中。位置置乱完成后对置乱后的小波系数C1重构得到最终加密图像I*。

4、加密/解密算法描述

设原始图像为I(大小为M×N),最终加密图像为I*,则具体加密过程为:

(1)选取参数μ,x0,n0根据式(1)生成像素扰乱矩阵G1,并按式(2)进行像素值的扰乱,得到初次加密图像I1;

(2)选取扩散变换参数k,对I1进行扩散变换,得到第二次像素值扰乱图像I2;

(3)选取小波变换的层数l及小波基函数fwave,对I2进行多层小波变换,得到小波系数矩阵C;

(4)重新设置混沌序列生成的参数μ,X0,n0,新参数记为μ1,x10,r0,按上述(3)中的方法生成位置置乱矩阵{s1,s2,s3,…,st},并将小波系数C置乱得到置乱后的小波系数C1;

(5)对C1进行小波重构得到最终加密图像I*。

这里,密钥为μ,x0,n0,k,l,fwave,μ1,x10,r0。解密过程与加密过程相反。

小知识之置乱

所谓“置乱”,就是将图像的信息次序打乱,将a像素移动到b像素的位置上,b像素移动到c像素的位置上……使其变换成杂乱无章难以辨认的图像。