采用混沌序列的保密通信仅仅只需要传递少数参数。馄饨序列的特性类似随机的过程忆等同于白噪声,对初始值极其敏感。因此,将混沌序列运用于图像加密,将具有极大的方便。那么下面我就给大家介绍一种基于离散数字混沌序列的图像加密方法。
一、离散数字混沌计算原理
根据Logistic映射:
其中0≤μ≤4,称为分支参数称为分支参数。Xk∈(-1,1)。
经过简单的变量代换,Logistic映射可以在区间(−1,+1)上定义如下:
其中λ∈[0,2],当λ=2时称为满映射。 对式(2)两边乘以a2得:
令zk=axk+a,则:
将式(4)代入式(3),取λ=2,化简得:
令式(5)左边为零,得到两个稳定解:
在有限二进制位离散数字计算中,由于量化误差的存在,即使初始值不为零值或2a,则由式(5)经过多次的迭代计算,只要某次迭代中间得到值2a,则以后再次迭代的值就保持为零值。如参数a=2的15次方=32768,初始值取9,则经过120次的迭代后将保持为零值。为了消除这种现象,将式(5)改写为:
如果初始值不为零,则该式迭代结果不再出现零值。可以证明,只要初始值不取为零,则式(5)的计算范围为:
二、产生图像加密数字混沌序列
设序列x(n),y(n),z(n),u(n)的最小周期分别为p1、p2、p3、p4,则可以证明函数运算:
所得复合序列的最小周期p为:
其中运算1cm表示求最小公倍数。显然,若p1,p2,p3,p4中有一个为∞,则p = ∞。
通过短序列的函数运算,就可以克服有限精度处理的短周期问题,从而获得长周期序列。取函数运算为“异或”运算,由3个离散数字混沌序列进行“异或”运算产生的长周期离散数字混沌序列的算法如图。其中的离散数字混沌计算是式(7)的迭代计算。采用时钟同步的3个离散数字混沌序列“异或”运算函数,可以表示为:
下图为采用24bit精度(对应的参数a=2的23次方)的3个混沌序列运算产生的离散数字序列的一个实例。
下图为它的自相关图,可见序列自相关具有良好的二值性,表明序列具有很好的随机性。
三、数字图像加密
采用BMP格式图像文件加密仿真。BMP格式图像的每一个像素点可以由R(red),G(green),B(blue)各一个字节的值表示。
由上图输入3个初始值,3个初始值的每一个都为24bit整数,产生一个新的离散数字序列用于图像加解密。密钥序列的长度与图像总像素相等。蜜钥序列的每一个序列值与图像中每一像素对应。每一密钥序列值占3个字节(24bit)。加密时分别将这3个字节与像素的R(red),G(green),B(blue)各一个字节的值进行“异或”运算。解密是加密的逆运算。
下图为加解密仿真对比图。
其中图(a)为加密前原图,图(b)为加密后的图(密钥参数为3个离散数字混沌的初始值:10,11,13),图(c)为正确解密后的图,图(d)为错误解密后的图(输入的3个离散数字混沌的初始值:9,11,13)。
四、基
基于离散数字混沌序列的图像加密的安全性取决于密钥空间大小。
由不同初始值根据式(7)可以获得离散序列。这些离散序列表现为短的周期性。当a=2的24次方,周期为8,272,716,2的24-1的4种序列,此表为这4种周期对应的初始值数目。
将初始值按产生的周期分成4个集合,设x(n),y(n),z(n)序列的初始值分别取自周期分别为272,716,22的24-1的这3个集合,作为初始值输入图1用以产生图像加密序列。于是产生的新序列的w(n)最小周期p为:
则新序列的密钥数量为:
以每秒100亿次运算,则约需要49.27年才能穷举完所有的可能密钥。令:
可见通过移位、乘法、取补、加法就可以实现离散数字混沌序列,且输入、输出都为离散数字整数值,方法简单,便于硬件实现。
本文在推导出了离散数字混沌计算公式的基础上,采用3个由离散数字混沌序列进行“异或”运算获得周期较长的离 散数字混沌序列。并将产生的序列用于图像的加密和解密的仿真。仿真结果可见,所产生的离散数字混沌序列对初始密钥敏感,且计算简单,参数较少,安全性非常高。
小知识之异或
异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0异或0=0,1异或0=1,0异或1=1,1异或1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位。