浅析PFTL图像加密算法

2018 年 8 月 18 日 0 条评论 2.85k 次阅读 3 人点赞

混沌理论与密码学存在着一些天然的相似性,使得混沌与密码学结合地相得益彰。混沌的轨道混合特性对应于传统加密系统的扩散特性,混沌信号的类随机特性和对系统参数的敏感性对应于传统加密系统的混乱特性,这保证了混沌加密与传统密码学同样具有良好的扩散与混乱特性。因此,提出了一种基于Clifford超混沌映射和加法模运算的图像加密算法——PFTL算法。

PFTL图像加密算法描述

图像预处理
设明文图像M的大小为N×N,把图像看作是一个N×N的序列,图像的任一点的灰度值用M(i)表示,i=1,2,…,N2,L表示图像的灰度值级别,预处理的过程如下:

Step1设定Clifford映射的初始值x0,y0,z0

Step2系统每次迭代产生3个混沌值:xiyizi,提取xiyizi小数点后的第i位,合并成一个新的十进制整数,取模L运算后得到一个整数S(i)。

Step3重复N×N次Step2操作,得到一个混沌整数序列S(i)(i=1,2,…,N2)。

Step4对明文图像M进行运算D(i)=M(i) +S(i),设经过预处理的图像用D(i)(i=1,2,…,N2)表示。

灰度值扩散
对预处理后的图像D(i)(i=1,2,…,N2)进行如下的运算即完成灰度值扩散:

C(i)=C(i-1) + (D(i)+K1D(i)+K2C(i-1))mod L,

这里i=1,2,…,N2

上述两个变换环节经过圈迭代后,输出的结果作为密文图像C(i)(i=1,2,…,N2)。PFTL图像加密算法的流程如图所示:
浅析PFTL图像加密算法

PFTL算法在原文中对算法的描述存在错误,按照其描述算法将无法正常加解密,并且算法密钥参数的分析也存在错误,对这些错误纠正如下:

1、原文中的灰度值扩散算法为:

C(i)=C(i-1) + (D(i)+K1D(i)+K2C(i))mod L,

该变换中当前的密文直接参与当前密文的生成,按此变换环节加密算法将无法得到相应的密文。依据原文文意,正确的灰度扩散算法应为C(i)=C(i-1) + (D(i)+K1D(i)+K2C(i-1))mod L,

注意到必须有(1+K1,L)=1,相应的解密算法应为

D(i)=((C(i) +C(i-1))-K2C(i-1)·(1+K1)-1 mod L。

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)n=296n·L3n