混沌理论与密码学有一些自然的相似性,使混沌与密码学相结合。混沌轨道混合特性对应于传统加密系统的扩散特性,混沌信号的随机特性和对系统参数的敏感性对应于传统加密系统的混乱特性,保证了混沌加密和传统密码学具有良好的扩散和混乱特性。因此,提出了基于Clifford超混沌映射和加法模操作的图像加密算法-PFTL算法。
PFTL图像加密算法描述。
图像预处理
设置明文图像M的大小为N×N,将图像视为N×N的序列。图像任何点的灰度值用M(i)表示,I=1、2..、N2、L表示图像的灰度值等级。预处理过程如下:
Clifford映射的初始值X0、y0、z0设置Step1。
Step2系统每次迭代产生三个混沌值:xi、yi、zi、提取xi、yi、zi小数点后的第一位,合并成新的十进制整数,取模L操作后获得整数S(i)。
Step3重复N×N次Step2操作,获得混沌整数序列S(i=1、2、N2)。
Step4用D(i)=M(i)+S(i)计算明文图像M,用D(i=1、2、N2)表示预处理图像。
灰度值扩散
对预处理后的图像D(i=1、2、N2)进行以下操作,即完成灰度扩散:
(i)=C(i-1)+(D(i)+K1D(i)+K2C(i-1)modl,
i=1,2,N2。
上述两个变换环节经过圈迭代后,输出结果为密文图像C(i=1、2、N2)。PFTL图像加密算法的流程如图所示:
PFTL算法在原文中对算法的描述存在错误。根据其描述算法,不能正常加解密,对算法密钥参数的分析也存在错误。这些错误的纠正如下:
1.原文中的灰度扩散算法为:
(i)=C(i-1)+(D(i)+K1D(i)+K2C(i)modl,
在此转换中,当前密文直接参与当前密文的生成,加密算法将无法获得相应的密文。根据原文的含义,正确的灰度扩散算法应为C(i)=C(i-1)+(D(i)+K1D(i)+K2C(i-1)modl,
注意必须有(1+K1,L)=1,相应的解密算法应该是。
D(i)=(C(i)+C(i-1)-K2C(i-1)-(1+K1)-1modl。
2.密钥参数分析错误。根据整个图像加密算法,作者选择的密钥参数为Clifford映射的初始值x0、y0、z0和扩散算法中涉及的参数K1、K2、C(0)。在原始分析中,C(N2)和C(1)被用作密钥参数,因为C(N2)和C(1)是密文的一部分,敌人可以很容易地获得把它当作密钥显然毫无意义。
3.密钥空间分析错误。PFTL算法的密钥参数配置可以采用两种方式,一种是迭代的每个圆使用相同的密钥参数,另一种是迭代的每个圆使用不同的密钥参数。显然,在后一种情况下,密钥空间更大。本文分析了后一种密钥配置方法。此时,使用的密钥参数包括Clifford超混沌射的初始值x0、y0和z0、混乱密钥K1.K2和扩散密钥C(0)以及算法迭代的圆数n。K1.K2和C(0)的值范围为[0,L)上的整数,n为正整数。当灰度级数为L时,计算机数据的双精度为2-32,密钥空间最大为:(232×232×232×L×L×L×L)n=296n·L3n。