发明内容
本发明的目的在于克服现有技术存在的缺点,提出设计一种基于2D-LCLM的能源互联网数据分组加密方法,能够对数据进行快速有效的加密。
本发明解决其技术问题所采取的技术方案是:
一种基于2D-LCLM的能源互联网数据分组加密方法,包括以下步骤:
1)读取待加密的文本或图像数据,用plain来表示;计算所有明文数据的十进制和,并记为Sum_Pt,即Sum_Pt=∑(plain)10;
2)设用于加密方法的2D-LCLM的初值为(x'1(1),x'2(1),x'3(1)):
其中(x1(1),x2(1),x3(1))为原始2D-LCLM的初值,Sum_Pt×10-9为明文对初值的微小扰动;将混沌映射迭代生成的伪随机序列记为X1,X2,X3;利用X1和X3中的部分序列分别生成两个整数序列w和z:
3)用实数序列X2构造位置序列T1,利用X2、T1和Baker离散化映射共同构造8×8的S盒;
4)在给定十六进制初始密钥Key的前提下,截取X2中部分序列构造位置序列T2;T2和DNA加密规则生成轮密钥k;
5)用公式P1=bitxor((plain+w)mod256,z)将(plain)10中的整数限制在0-255这256个数之间;用部分X2中序列构成的位置序列T3打乱P1中数据的位置P2=P1(T3),再用部分X1中序列构成的位置序列T4打乱P2中数据的位置;P3=P2(T4);随后将P3中所有整数化为8位二进制数P4,并分成每64bit一组记为Plain_block(i);
6)类Feistel密码结构加密步骤为:首先将明文分组Plain_block(i)与初始向量IV进行异或操作,再经过P置乱后划分为4个等长的运算单元L1,L2,R1,R2;其次对这4个运算单元进行round轮运算,每轮调用两次F函数;最后对4个运算单元进行P置乱后串联构成该组明文的类Feistel输出,即密文Ciphered_block(i);
7)经过类Feistel密码结构输出的密文Ciphered_block(i)通过密文分组组链接(Cipher Block Chaining,CBC)模式进行链接,得到最终的二进制密文输出Ciphered_data;
8)最后,利用函数bin2dec(·),将每8位二进制数转化为整数,再根据ASCII码表翻译成最终的密文。
进一步的,所述F函数的表示方法为
其中,l表示16bit序列,k代表该轮中16bit轮密钥,DNA_algorithm(·)表示DNA加密规则,S_box(·)代表动态S盒,为按位异或操作,QF是一个非线性方程。
进一步的,步骤2)中,两个整数序列w和z分别为:
进一步的,所述2D-LCLM(二维滞后复Logistic映射,2D lag-complex Logisticmap)方程为:
其中wn=xn+jyn是复变量,xn,yn和zn+1均为实变量,a和b为实参数,该复数域二维方程在实数域的三维展开式为:
进一步的,所述2D-LCLM系统的不动点的值仅与参数b的取值有关,与参数a无关,即参数b唯一决定系统是否混沌;当a=1,b∈[1.69,2)时,2D-LCLM是混沌的。
进一步的,设2D-LCLM的初值为(x1(1),x2(1),x3(1)),迭代此混沌系统可得三组伪随机序列X1,X2,X3:
对序列值按从小到大的顺序排列,将每个实数在原序列中的位置记为位置序列T;利用公式floor(((Xi×103-floor(Xi×103))×103))mod 256将混沌序列中的元素由实数变为0-255之间的整数,构造整数序列。
进一步的,所述动态S盒的生成过程为:首先,根据待加密明文数据确定2D-LCLM的初值大小,迭代混沌系统,得到三组伪随机序列X1,X2和X3;其次,在第二组伪随机序列X2中选取一串连续实数序列,经过取整和取模运算后使实数序列没有重复的落入[0,255]这256个不同的区间,构成8×8的初始S盒;最后,用伪随机序列X2生成的位置序列T1和Baker离散化映射进一步对初始S盒中的元素进行置乱,使其具有更强的非线性效果。
进一步的,所述Feistel密码结构开始前和结束后利用P置乱对明文数据进行预处理和进一步打乱密文数据以增强每轮数据的伪随机性。
本发明的技术效果:
与现有技术相比,本发明的一种基于2D-LCLM的能源互联网数据分组加密方法,以能源互联网为背景,将混沌系统用于电力文本、图像等数据的加密,主要具有以下优点:
1)对2D-LCLM的不动点的稳定性和分岔图进行了分析,进一步验证了b是影响系统混沌的唯一参数;
2)2D-LCLM的初值与明文直接相关,该混沌系统迭代生成的伪随机序列被用来构造整数序列和位置序列以替换和置乱明文数据;
3)将2D-LCLM和Baker映射相结合,构造了随明文变化的动态S盒以充当密码算法中的非线性部分;
4)轮密钥是由DNA加密规则和2D-LCLM生成的位置序列构造的,该算法具有“一次一密”的效果;
5)基于2D-LCLM的分组加密方法作为轻量级加密算法能被同时用于电力数据和电力图像的加密;实验仿真和性能分析结果表明,此分组加密方法对电力数据和电力图像都具有良好的加密效果,且对密码攻击具有很强的鲁棒性。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面结合说明书附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明首先用2D-LCLM和Baker映射一起构建动态S盒;使用DNA加密规则及2D-LCLM生成轮密钥;最后采用每轮包含两次F函数的类Feistel密码结构对电力数据和电力图像进行加密。其中,轮密钥随明文自适应变化,使加密算法具有“一次一密”的效果以抵抗选择明文攻击。仿真结果及性能分析测试表明,此混沌分组加密方法能对电力文本和图像信息进行充分的混淆和扩散以达到加密的效果,并且该方法对密码攻击表现出良好的鲁棒性。
1、二维滞后复Logistic映射
二维滞后复Logistic映射(2D lag-complex Logistic map,2D-LCLM)是对二维实Logistic映射的拓展,即将系统变量由实数域向复数域拓展,从而构造出在实数域三维,复数域二维的Logistic映射。
2、系统方程
二维Logistic映射系统方程为:
其中wn=xn+jyn是复变量,xn,yn和zn+1均为实变量,a和b为实参数;将系统(1)的实部和虚部分离可得2D-LCLM,即三维实Logistic映射方程为:
令xn+1=xn=x,yn+1=yn=y,zn+1=zn=z,代入公式(2)可得:
1)当x≠0,y≠0时,有不动点:
2)当x=0,y≠0时,有不动点:
3)当x≠0,y=0时,有不动点:
4)当b=1时,有不动点:P7=(0,0,0)。
系统(3)的Jacobin矩阵为:
取det(λE-J=0),其中E为单位矩阵,将7个不动点依次代入Jacobin矩阵,可得特征方程:
(λ-1)(λ2-λ+2b-2)=0 (4);
解得特征根为:
根据不动点的稳定性定理,有以下推论:
1)当或当/>a>-1或当/>a>0时,特征值为:λ1=1,λ2<1,λ3<1;不动点Pi(i=1,...,6)在三种条件下均为稳定结点;
2)当b<0,a>-1或当a>-1:b<0,a>0或当0<b<1,a<0时,特征值为:λ1=1,λ2>1,λ3<1;不动点Pi(i=1,...,6)在三种条件下均为不稳定鞍点;
3)当时,特征值为:λ1=1,/>且λ2,3为共轭复根,不动点Pi(i=1,...,6)均为不稳定焦点;
4)当时,特征值为:λ1=1,/>在不动点Pi(i=1,...,6)处发生Hopf分岔,也即Neimark-Sacker分岔;
5)当b=0时,特征值为:λ1=0,λ2=λ3=1;在不动点P7=(0,0,0)处有可能发生切分岔;
6)当b<1时,特征值为:λ1=0,λ2=λ3<1;不动点P7=(0,0,0)为稳定结点;
7)当b>1时,特征值为:λ1=0,λ2=λ3>1;不动点P7=(0,0,0)为不稳定结点。
由上述推论可得,2D-LCLM系统的不动点的值仅与参数b的取值有关,与参数a无关,即参数b唯一决定系统是否混沌。当a=1,b∈[1.69,2)时,2D-LCLM是混沌的。
3、分组加密方法
本发明所述的分组加密方法采用类Feistel密码结构,如图1所示;该密码结构与传统Feistel密码结构相比,每组明文被分为4个等长的运算单元且每轮采用两次F函数,能更有效的抵抗差分攻击;F函数作为Feistel密码结构的核心由动态S盒和DNA加密规则所构成;其中DNA加密规则为整个方法提供轮密钥;2D-LCLM迭代生成的混沌序列主要用于构造整数序列和位置序列来对明文数据的值和位置进行替换和置乱;本发明提出的方法主要是对能源互联网中电力数据、电力图像进行加密和解密,且为满足终端传感设备存储空间小、能量少、对数据处理能力弱的特点,本发明将Feistel密码结构的输入输出均设为64bit,即将明文数据分为每64bit为一组,每组划分成包含4个16bit的运算单元,且每轮采用左右各16bit,共32bit的轮密钥。
1)整数序列和位置序列的构造
设2D-LCLM的初值为(x1(1),x2(1),x3(1)),迭代此混沌系统可得三组伪随机序列X1,X2,X3:
对序列值按从小到大的顺序排列,将每个实数在原序列中的位置记为位置序列T;利用公式floor(((Xi×103-floor(Xi×103))×103))mod256将混沌序列中的元素由实数变为0-255之间的整数,构造整数序列。
2)轮函数F的构造
轮函数F是分组密码结构的核心,是非线性的;在整个密码结构中除了P置换(permutation)和Feistel结构中每轮包含的位置交换以外,F函数承担着主要的混淆(confusion)和扩散(diffusion)作用;本发明所提出的加密方法中的F函数,如图2所示;由动态S盒和DNA加密规则所构成。若用l表示16bit序列,则F函数可以表示为:
其中k代表该轮中16bit轮密钥,DNA_algorithm(·)表示DNA加密规则,S_box(·)代表动态S盒,为按位异或操作,QF是一个非线性方程,其变换机制如表1所示。
表1.QF方程
2.1)动态S盒的生成
本发明将2D-LCLM生成的伪随机序列与Baker映射的拉升、折叠功能相结合,共同生成动态S盒;首先,根据待加密明文数据确定2D-LCLM的初值大小,迭代混沌系统,得到三组伪随机序列X1,X2和X3;其次,在第二组伪随机序列X2中选取一串连续实数序列,经过取整和取模运算后使实数序列没有重复的落入[0,255]这256个不同的区间,构成8×8的初始S盒;最后,用伪随机序列X2生成的位置序列T1和Baker离散化映射进一步对初始S盒中的元素进行置乱,使其具有更强的非线性效果;动态S盒的结构如图3所示。
2.2)DNA加密规则
DNA作为脱氧核苷酸大分子组成的聚合物,主要由A(腺嘌呤),C(胞嘧啶),G(鸟嘌呤),T(胸腺嘧啶)这四种碱基组成;这四种碱基根据碱基互补配对原则两两配对,以此来传递遗传信息,其中A和T互补配对,C和G互补配对;在二进制算法中同样有类似规则,即0和1是互补配对的,因此可将01,10和11,00两两分组;将DNA规则引入二进制算法,即分别用A、T、G和C来表示00、01、10和11,可得表2中的8种DNA加密规则。
若对整数177进行加密,首先应将其换算成8位二进制数,即10010011,此时177对应于GTAC;接着,若选则表2中的规则4对该数加密,则此数的DNA表示方法为TAGC,即177经过DNA加密规则后的二进制表示为01001011;DNA解密规则是加密规则的逆过程。
表2.DNA加密规则
3)轮密钥的生成
本发明主要采用DNA加密规则来生成动态轮密钥,动态轮密钥指密钥流的值会随明文而变化,如当明文发生微小扰动时,轮密钥会随之更新以达到“一次一密”的效果。
首先,在给定一串16进制初始密钥Key的前提下,将其中所有元素转化为4位二进制数;其次,用2D-LCLM生成的位置序列T对所有的二进制数进行置乱;最后,将置乱后的二进制序列每8bit分为一组作为DNA加密规则的输入,输出值即为轮密钥k,以上过程可用如下公式来表示:
k=DNA_algorithm(T(hex2bin(Key,4))) (7)。
4)P置乱
P置乱(permutation)是一种对二进制数进行位置置乱的方法,它能在一定程度上打乱序列的顺序。本发明的方法在Feistel密码结构开始前和结束后利用P置乱对明文数据进行预处理和进一步打乱密文数据以增强每轮数据的伪随机性;P置乱结构示意图如图4所示。
实施例1:
本实施例涉及的一种基于2D-LCLM的能源互联网数据分组加密方法,包括以下步骤:
1)读取待加密的文本或图像数据,用plain来表示;计算所有明文数据的十进制和,并记为Sum_Pt,即Sum_Pt=∑(plain)10;
2)设用于加密方法的2D-LCLM的初值为(x'1(1),x'2(1),x'3(1)):
其中(x1(1),x2(1),x3(1))为原始2D-LCLM的初值,Sum_Pt×10-9为明文对初值的微小扰动;将混沌映射迭代生成的伪随机序列记为X1,X2,X3;利用X1和X3中的部分序列分别生成两个整数序列w和z:
3)用实数序列X2构造位置序列T1,利用X2、T1和Baker离散化映射共同构造8×8的S盒;
4)在给定十六进制初始密钥Key的前提下,截取X2中部分序列构造位置序列T2;T2和DNA加密规则生成轮密钥k;
5)用公式P1=bitxor((plain+w)mod256,z)将(plain)10中的整数限制在0-255这256个数之间;用部分X2中序列构成的位置序列T3打乱P1中数据的位置P2=P1(T3),再用部分X1中序列构成的位置序列T4打乱P2中数据的位置;P3=P2(T4);随后将P3中所有整数化为8位二进制数P4,并分成每64bit一组记为Plain_block(i);
6)类Feistel密码结构加密步骤如表3所示,首先将明文分组Plain_block(i)与初始向量IV进行异或操作,再经过P置乱后划分为4个等长的运算单元L1,L2,R1,R2;其次对这4个运算单元进行round轮运算,每轮调用两次F函数;最后对4个运算单元进行P置乱后串联构成该组明文的类Feistel输出,即密文Ciphered_block(i);
其中F函数的表示方法为
7)经过类Feistel密码结构输出的密文Ciphered_block(i)通过密文分组组链接(Cipher Block Chaining,CBC)模式进行链接,得到最终的二进制密文输出Ciphered_data;
8)最后,利用函数bin2dec(·),将每8位二进制数转化为整数,再根据ASCII码表翻译成最终的密文。
表3.类Feistel加密算法
针对本发明所述基于2D-LCLM的能源互联网数据分组加密方法的解密方法,本质上与加密方法一致,但需满足以下三个条件:
1)为保证解密成功,加密、解密的循环轮数round只能取偶数,否则只有半数密文能被解密;
2)奇数轮的左右轮密钥完全相同,即kj,1=kj,2;
3)最后一轮输出换位与加密过程不同,即变为Lj+1,1=Rj,2,Lj+1,2=Lj,1,Rj+1,1=Lj,2,Rj+1,2=Rj,1。
本实施例实验结果及性能分析测试:
1)文本加密实验结果分析
为了直观展示2D-LCLM分组加密方法对电力数据的加密效果,本发明将部分接收、发送电力数据作为明文数据在Windows10系统的Matlab平台上进行仿真。根据上述循环轮数只能取偶数的推论,取round=6;再根据奇数轮左右两个轮密钥相同的条件,仅取38个16进制初始密钥Key:
Key=a4360d25e71dcbf807483c1bb957f0e4533ca6
原始明文文本加密、解密结果如图5所示,图5(b)的密文信息是一串乱码,人们很难通过肉眼和理解能力从中判断出有效信息,而只有当加密和解密端密钥一致时,才能最终解密出正确信息(图5(c))。为从客观上对此算法做定量分析,本发明引入了密钥空间分析、“0-1”平衡性测试、字符频率测试、信息熵测试等测试方法对该分组加密方法的性能作进一步的分析和验证,以证明其有良好的加密效果和鲁棒性,能被应用于电力终端传感设备。
2)文本加密性能分析
2.1)密钥空间分析
本发明所提出的分组方法的密钥包括两部分,一部分来自于2D-LCLM混沌系统的参数和初值,即a,b,x1(1),x2(1),x3(1);另一部分来源于轮密钥k。在2D-LCLM中,密钥数量为5,且参数b∈[1.69,2)具有很大的变化空间。用于加密方法的混沌系统的初值随明文数据的变化而改变,即是“一次一密”的。假设计算机内存精度是1015,此时密钥空间大约为1015×5=1075>2100,再加上随混沌序列变换的轮密钥k,此算法有足够的密钥空间来抵抗对密钥的穷举攻击,从而防止暴力破解。
2.2)“0-1”平衡性测试
“0-1”平衡性测试是对密文二进制数据中“0”和“1”的个数进行比较的测试方法;若经过加密后的密文具有足够的随机性,其二值数据中的“0”和“1”的个数应该是均衡的。可用如下公式进行平衡性测试:
其中k1代表“0”的个数,k2代表“1”的个数,n代表“0”和“1”的总和。ε越接近于0,“0”和“1”的分布就越均匀,经过加密后的密文的值就越随机,算法的加密效果越好。为此,本发明分别在发送和接收的电网数据中选取了长度为5000byte,10000byte,100000byte和1000000byte的4组二值序列进行测试,并分别计算了其密文的ε值,结果被记录在了表4中。由表4结果可以看出,随着测试数据长度增加,ε的值越来越接近于0,密文二值数据中“0”和“1”的个数呈均匀分布的趋势,攻击者或没有密钥的第三方很难通过二值序列中“0”和“1”的个数找到破译方法。与RC5,RC6及AES-Rijndael算法相比,在输出密文数据等长的情况下,本发明所提出的分组加密方法的ε值更小,对文本数据的加密效果更好。
表4.二值序列“0-1”平衡性测试结果
2.3)信息熵测试
信息熵能对信息源中的数据的有序性进行度量,其公式如下所示:
其中L=256,p(xi)代表xi在密文中出现的频率。将密文文本每8比特分为一组,当密文值是等概率分布,即0-255这256个整数出现概率均为1/256时,信息源的最优信息熵为8。因此加密文本的H越接近于8,每个整数出现的概率就越近似,密文的不确定性就越好。仍选取长度为5000byte、10000byte、100000byte和1000000byte的4组二值序列进行测试,并将输出信息熵的值记录在表5中。由表5中数据可得信息熵随密文长度的增加逐渐趋近于1,并且本方法所得信息熵略优于RC5,RC6和AES-Rijndael算法下的信息熵,也即本发明提出的分组加密方法随机性相对来说更好,具有良好的置乱文本的能力。
表5.加密方法的信息熵
2.4)频率测试
频率测试,即字符频率统计测试,被用于检测256个ASCII码在密文中出现的频率。在输出结果中,如果部分字符出现频率高,其余字符出现频率低,那么密码攻击者就可能会根据统计规律破译出明文,从而劫取甚至篡改数据,威胁数据安全。而当字符出现频率基本一致时,人们就很难对密文进行有效分析。因此密文字符频率测试至关重要。
如图6所示,展示了两组电网数据加密前后字符频率分布情况。从图中可以看出,加密前的数据聚集在某些字符附近,数据分布具有明显的规律性。而密文文本的ASCII码值在0-255之间几乎是均匀分布的,第三方很难从中获取有效信息。与此同时,从图6(b)中可以看出,密文的分布频率在理想值3.90625×10-3周围上下浮动,意味着该算法对统计攻击具有强鲁棒性。
3)图像加密实验结果分析
为测试本发明所提出的分组加密方法对图片的加密效果,本节选取大小为512×512的标准化测试图‘Lena’,大小为400×300的两个电力设备红外图像(‘算例2’,‘算例3’)及大小为640×420的风力发电故障设备图像(‘算例4’)作为测试图像。图7中第一列为原图,第二列为加密图像,第三列为解密图像。从图7可以看出,密文图像为一堆乱码,单凭人的肉眼无法辨识出原图,而解密图像与明文图像完全一致。为定量分析此分组加密方法对图像的加密效果,下文中将引入直方图,信息熵,像素点的相关性,NIST测试等分析测试方法。密码攻击测试将被用于检测该分组加密方法对外部攻击的鲁棒性。
4)图像加密性能分析
1)直方图分析
直方图能精确反应图像的信息特征,直观显示各个灰度级下像素点的个数,不同图像具有完全不同的直方图。图8为‘Lena’中R,G,B三信道加密前后的直方图,从图中可以看出加密后的图像的像素点在各个灰度级下均匀分布,明文图像中的信息特征完全被隐藏,即该算法具有良好的保密特性。
2)信息熵测试
图像的信息熵测试与文本信息熵测试从本质上来说是一致的。做文本信息熵测试时,是把数据每8bit分为一组。单信道图像的像素点一般可直接用8个位平面来表示,即图像信息的信息熵的理想值为8。信息熵计算公式如(11)所示。其中L=256,p(xi)表示像素值xi在0-255中出现的频率。图像的信息熵测试结果已记录在了表6中,从表6中的数据可以看出,加密前图像的信息熵大多在7附近,而加密后图像的信息熵接近于理想值8,且本发明计算所得信息熵大多优于[1]、[2]、[3]、[4]的结果,其中表6中位于上面的Lena(gray)引用文献[1]:2020年发表于物理学报的《基于新的五维多环多翼超混沌系统的图像加密算法》;表6中位于下面的Lena(gray)引用文献[2]:2019年发表于物理学报的《一种基于压缩感知和多维混沌系统的多过程图像加密方案》;表6中位于上面的Lena引用文献[3]:2017年发表于电子技术期刊的《混沌理论与小波变换技术结合的图像加密算法》;表6中位于下面的Lena引用文献[4]:2020年发表于IET Image Processing期刊的《Efficient symmetric imageencryption by using a novel 2D chaotic system》。与此同时,一定范围内被加密图像的像素点越多,密文图像的信息熵越大,即加密效果越好,图像越不容易被泄露。
表6.图像的信息熵
3)相关性测试
图像之所以能呈现出肉眼可识别的信息是因为其相邻像素点之间具有很强的相关性。加密算法的作用就在于打破这种相关性,使像素点随机分布。相关性测试能定量分析像素点之间的相关性程度,相邻像素点的相关性越接近于0,像素点就被打乱地越彻底。在测试图像‘Lena’中随机选取N=8000对相邻像素点,每对像素点用坐标(ui,vi),i∈[1,N]来表示,像素点ui和vi之间的相关性ruv可用公式表示为:
其中E表示数学期望,D为方差,Cov则是协方差。ruv的值越接近于1,图像相邻像素点之间的相关性就越强,ruv越趋近于0,相邻像素越不相关。图9反应了加密前后‘算例4’中单信道像素点的分布情况,表7则记录了‘Lena’和‘算例4’加密前后相邻像素点的相关性结果,其中H、V、D分别代表水平方向、垂直方向和对角线方向。从图9和表7中可以看出,明文图像的像素点呈现出明显的线性,且相关性趋近于1。而与之对应的密文图像的像素点的相关性则都小于0.01,像素点杂乱无章地分布于整个平面。与文献[1]、[2]、[3]、[4]中的相关性测试结果相比,此分组加密方法的相关性测试结果十分理想,像素点被充分置乱。
表7.加密前后相邻像素点的相关性
4)差分攻击测试
差分攻击测试又称为明文敏感性测试,它能定量地分析出明文中的某个像素值发生微小变化后输出的密文与原密文之间的差异。像素变化率(the number of pixelschange rate,NPCR)和归一化平均变化强度(the unified average changing intensity,UACI)通常被用来衡量此项指标。两者数学表达式如下所示:
其中M和N分别表示图像的长和宽,C1和C2表示原密文图像的像素值和单个像素点发生微小变化后密文图像的像素值,(i,j)代表像素点在图像中的位置。对于8位灰度图像,NPCR和UACI的期望值分别是99.6094%和33.4635%,测试结果越接近于期望值,图像对微小扰动越敏感。从表8中可以看出测试图像三个信道的NPCR和UACI值都与期望值十分接近,并且与文献[1][2]相比,此分组加密方法的性能更优。因此。本发明提出的方法对选择明文攻击具有较强鲁棒性,能有效抵抗差分攻击。
表8.密文图像的NPCR和UACI值
5)剪切攻击和噪声攻击分析
数据在信道中传输时难免会受到外界干扰,而剪切攻击和噪声攻击是最常见的两种攻击方式。本发明通过裁剪图像像素点的方式来实现剪切攻击,通过对明文图像叠加常见噪声以实现噪声攻击。为证明本发明提出的分组加密方法对数据丢失攻击有较强的鲁棒性,本发明分别裁剪掉‘算例2’中64×64,80×80,128×128个像素点,并对比了裁剪前后的解密图像,如图10所示;为证明该算法同样能抵抗噪声攻击,本发明在密文图像中添加了密度分别为0.01和0.05的松柏噪声(speckle noise,SN),均值为0、方差为0.01和0.005的高斯噪声(Gaussian noise,GN)和密度分别为0.05和0.01的椒盐噪声(salt-and-peppernoise,SPN)并对噪声攻击前后的解密图像进行了比较,如图11所示。本发明引入了峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)作为一种全参考的图像质量评价指标,对图片质量进行定量评估。PSNR的数学公式如下:
且
其中,M×N代表测试图像大小,K(i,j)和I(i,j)分别表示遭受攻击前后图片中各个像素点的像素值,MSE表示K和I间的均方误差,MAX在本发明中表示8bit图像的最大像素值255。PSNR单位为dB,其与MSE具有强相关性,PSNR数值越大表明图像失真越小。
表9中记录了遭到剪切攻击后‘算例2’的PSNR值,图10为残缺图像的加密和解密图。虽然PSNR值随剪切面积的变大而逐渐减小,但此分组加密方法的在图像极大部分像素都丢失的情况下,仍能基本还原出图像。表10记录了6组噪声攻击下‘算例4’的PSNR值,其中所有值都大于或趋近于20。图10为噪声攻击下的解密图像,从图中可以看出,解密出的噪声图像虽然清晰度有所下降,但图像原本所包含的特征还是十分容易被辨别。因此该算法对剪切攻击和噪声攻击具有强鲁棒性,即当电力图像在传输信道中遭受攻击后仍能保留其重要特征并在解密端被成功解密。
表9.剪切攻击下的PSNR值
表10.噪声攻击下的PSNR值
6)经典攻击分析
在密码学领域主要包含四种典型攻击方式:唯密文攻击、已知明文攻击、选择密文攻击和选择明文攻击。而在这四种攻击方式中,选择明文攻击对图像的破坏性最大,也即当加密算法能有效抵抗这种攻击时,必然能够抵抗其余三种攻击方式。
选择明文攻击方法主要为差分攻击,本发明已经验证了本发明方法对差分攻击的鲁棒性。2D-LCLM的初值随明文数据的变化而变换,轮密钥、DNA加密规则、S盒也会受到混沌序列的直接影响,即明文的微小扰动会直接改变Feistel结构中轮密钥的值,从而使不同明文对应于不同的加密和解密密钥,有“一次一密”的效果。与此同时,CBC模式使每组明文都与之前的密文相关联,这种混合加密方法进一步增加了像素的复杂度。综上所述,本发明所提出的分组加密方法能有效抵抗典型的攻击分析,从而确保电力图像的完整性和有效性。
7)NIST测试
NIST测试中包含15项统计测试,它通常被用于测试序列的随机性。每项测试都对应于一个P_value,当α<P_value<1(α通常取0.01)时,表明通过此项测试,且P_value值越大,数据的随性越好。在图像加密算法中,NIST测试同样可以检测以二值形式表示的密文图像是否服从随机分布。本发明通过改变初始密钥的值分别对图像‘Lena’,‘算例2’,‘算例3’,‘算例4’进行循环加密,以获取20,000,000个二值序列作为NIST测试的输入,测试结果被记录在表11中。表中所有测试图像的15个P_value均大于阈值0.01且小于1,并且图像的某些测试结果甚至接近于1。也就是说,4个图像经过该分组加密方法加密后所得的密文图像的像素点随机分布。
表11.图像的NIST测试结果
本发明将混沌映射与分组密码相结合,提出了一种基于2D-LCLM的分组加密方法。该方法主要采用类Feistel密码结构,该密码结构与传统Feistel结构相比,每轮包含两个F函数并对差分攻击具有更强的鲁棒性。随明文变化的混沌伪随机序列、动态S盒、动态轮密钥、DNA加密规则及F函数进一步增强了该方法的置乱和替换效果使密文呈现出随机分布的特性,并达到“一次一密”的效果。仿真实验及性能分析结果表明,该方法在满足终端传感设备特点的同时,对电力文本和电力图像具有良好的加密效果,对密码攻击表现出良好鲁棒性。