混沌图像文件加密系统主要功能足完成对数字图像文件加密、解密处理,因此整个系统主要划分为图像文件密文接收模块、图像文件加密功能模垛、图像文件解密功能模块和图像密文发送模块。
各个功能模块相互之问的关系如图1所示。
图像密文接收模块:向本系统输入待加解密的数字图像,可以直接从网络中直接获取,也可以用打开图像文件的方式获取,获取后进行一定的预处理。如果获得的数字图像足待加密的明文图像,则系统调用加密模块进行加密;如果获得的是密文图像,则调用解密模块进行解密。
图像文件加密模块:对接收的数字图像文件加密处理,并判断图像是否要求进行压缩处理,从而选择不同的加密方式。这是本系统的核心功能部分。
图像文件解密模块:对接收的数字图像进行解密,同样可根据不同的罔像格式选择是否要求进行解压缩处理。
图像密文文件发送模块:对加密处理后的图像进行直接存储或者通过网络进行发送。
二、混沌序列
混沌(chaos)定义:设X为一个度量空间,f:X→X称为在X上足混沌的,如果:
(1)f对初始条件的敏感依赖性:即存在ξ>0对任何X∈X和善的任何邻域N。存在Y∈N和自然数n>0.使得d(fn(x),fn(y))>ξ。
(2)f是拓扑传递的,即对任何一对开集U,V_X。存在k>0,使得fk(U)∩v≠φ。
(3)周期点在V中稠密。
目前被广泛研究的一维混沌系统是Logistic映射。
Logistic迭代公式如下:
其中λ∈[O,2]。
LogisLic系统的统计特性:
概率密度函数:
(1)均值:
式中:
从以上特性可以知道.Logistic序列的统计特性与白噪声一致。
三、JPEG图像的混沌加密算法
1、图像加密算法比较
(1)通用加密算法
(2)基于矩阵变换、象素置换的图像加密算法
以Amold变换和按幻方做图像象寨置乱变换为代表,这类算法把静止图像看作是平面区域上的二元连续函数:z=f(x,y),0≤x≤Lx;0≤y≤_Ly。
对区域中任意的点(x,y).则f(x,y)代表图像在这一点的灰度值,与图像存这一点的亮度相对应。并且图像的亮度值是有限的,因而函数z=f(x,y)也是有界的。在图像数字化之后.z=f(x,y)则相应于一个矩阵,矩阵的元素所在的行与列就是图像显示在计算机屏幕上诸象素点的坐标,元素的数值就是该象素的灰度(通常有256等级,用整数0至255表示)。矩阵的初等变换可以将一幅图像变换成另一幅图像,其缺点足象裹置乱作用较差,保密性不高。
(3)基于混沌序列的图像置乱算法
基于混沌序列的图像置乱算法是利用混沌系统生成一个混沌序列,按行或列将序列生成一个置乱矩阵P。根据置乱算法,利用矩阵P对图像的明文矩阵A进行置乱,置乱后得到随机排列的密文矩阵A'。
以上几种图像加密方法没有充分考虑压缩图像本身的性质,压缩、加密效果不理想,因此,本文以JPEG压缩图像为例,把混沌系统与图像压缩方法相结合,提出了一种新的加密算法。
2、基于JPEG图像压缩方法的混沌加密算法
(1)JPEG图像压缩方法
首先将图像分为8×8的像素块,根据从左到右,从上到下的光栅扫描方式进行排序;然后利用DCT对8×8的像素块进行计算,得到64个DCT系数,用均匀量化表逐一进行标量量化;接着根据“Z”形扫描方式对块中的系数排序,得到的比特流通过行顺序对编码生成中问的符号序列;最后将这些符号序列经过Huffman编码用于传输或存储。
(2)加密算法原理
将原图像分成8×8的块,利用混沌置乱矩阵进行置乱,DCT变换后使低频分最都集中在左上角,高频分量分布在右下角(DCT变换实际上是空间域的低通滤波器)。均匀量化后进行“Z”形扫描,扫描的比特流用行顺序编码生成中间符号序列,并对其进行Huffmari编码得到由“0”和“1”组成的经过压缩的数据,此时利用混沌灰度序列与得到的序列进行位异或操作,生成的新序列看起来是随机的,保存为JPFG文件。JPEG图像压缩加密过程如图2所示:
压缩前在空域内进行混沌置乱,不会破坏DCT系数的概率分布函数,也就不会影响图像压缩的效率。在压缩加密过程中,DCT变换使低频分量集中在左上角,而高频分量集中在右下角,忽略图像中不包含重要信息的高频分量,可以达到压缩的目的。
经过“Z"扫描后,序列行程中连续“0”的个数增加,提高了压缩效率。在Huffnun编码后,将编码后的序列与混沌系统生成的灰度序列进行位异或操作,实现对数据文件加密。这样将混沌加密过程与JPEG图像的压缩过程相结合,既不影响压缩效愚,又实现了对图像文件加密。
(3)密钥生成
针对Logistic映射迭代初值Xo、YO∈(0,1)的要求,把用户选取的不同形式的密钥敞列映射为128位值,每4位组成十进制数与十作模运算,得到32个十进制数字,截取前后两部分,对于每个部分,分别将每位数字作为在(0,1)区间的双精度实数的一位,正好生成Logislic映射的两个迭代初值。
(4)置乱矩阵及灰度变换序列
利用密钥值Xo、Y0,我们采用Logishc系统分别生成实数值混沌序列Xk和Yk(不使用序列的初始段部分),然后由Xk分别生成全局置乱变换矩阵P。
(5)置乱步骤
a、确定置换块的大小为8×8。
b、生成置换矩阵Po设图像I大小为M×N,通过K得到置换矩阵Pm/8,n/8,其中矩阵中的元素为l到(M/8)×(N/8)中互不袖同元素的杂乱排列。
c、排列图像矩阵。对图像进行分块,块的大小为8x8.逐块进行编号,将各块按行排列成有序矩阵IB。即IBij=j+(Z-1)×(N/8)。
d、开始置换。根据置换规则将幽像矩阵置乱,设IP为霞乱变换后的图像,则图像IP的第i行第j列象素块对应为原图像I的第m行第n列的像素块,其中m、n由等式慨=Pwn决定。
(6)加密算法实现
a、选择任意长度的字符串作为密钥,利用单向Hash函数(MD5)生成Logistic函数所需要的参数X0、Yo。
b、用X0、Yo生成Logistic混沌序列Xk、Yk。由Xk生成置乱矩阵P。
c、将图像I进行8x8分块,利用矩阵P对I进行置乱,得矩阵IP;
d、对矩阵IP进行8x8的DCT变换,用JPEG量化表对其量化。
e、扫描行程编码后,进行Huffman编码得序列Ik。
f、用混沌序列Yk与扫描后得到的序列Ik进行位异或操作,得到加密后的序列I'k。
g、保存JPEG图像。
(7)解密算法实现
a、获得JPEG图像。
b、输入密钥,用单向Hash函数生成Logistic函数所需要的参数X0、Yo。
c、用x0、Yo生成Logistic混沌序列x0、Yo,Xk生成置乱矩阵P。
d、用混沌序列yk与扫描后得到的序列I'k。进行位异或操作,得到加密后的序列I'k。
e、对k进行解压缩得到按8x8分块的图像IP。
f、利用矩阵P对图像IP进行反置乱,即可得元图像I。
四、实验结果与分析
利用VisualC++编程,实现了图像压缩、加密和解密、解压缩的算法a对Lena图(如图3-a)进行实验,选择密钥字符半为“abcdefghi”,经过MD5算法得Logistic函数的初值,对图像文件进行压缩加密,得到图像文件(3-b)。利用相同的密钥字符串进行解密,解密图像文件如图(3-c)。选择解密字符串“abcdefgi”进行解密,错误密钥解密如图(3-d)。不能还原为原图像,这是因为利用MD5散列函数生成Ingistic系统的迭代初位时,输入字符串的细微改动都会体现到所生成的128位数值的每一位,而混沌系统本身具有很强的初始条件敏感性,迭代初值的细微差异将会导致生成的混沌序列完全不同,因此错误密钥解密后的图像杂乱无序,有效地抵抗了密码分析方法的攻击。
小知识之幻方
幻方(MagicSquare)是一种将数字安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。
欢迎访问夏冰加密软件技术博客,您的数据安全知识库和加密技术资讯平台。我们致力于提供最新的加密技术动态、深入的行业资讯以及实用的软件使用技巧,帮助您在数字时代中保护好每一比特的数据。