对一种基于动态S盒与混沌映射的图像加密算法的安全分析与改进

2022-07-13 01:15朱淑芹李秀娟李若玉
中国电子科学研究院学报 2022年2期
关键词:明文加密算法密文

朱淑芹,李秀娟,李若玉

(聊城大学,山东 聊城 252059)

0 引 言

随着网络通信和大数据应用的快速发展,信息安全已经成为一个非常重要的热点问题。保护信息最重要的手段是数据加密。因此,密码学是信息安全的核心技术。在现代密码系统中,块加密算法得到了广泛的应用,如数据加密标准(Data Encrypted Standard,DES)、高级加密标准(Advanced Encrypted Standard,AES)等。然而,由于图像中数据量大,相邻数据相关性强,存在冗余等特点,传统的加密算法不适用于图像加密。作为非线性系统的混沌,存在着貌似随机的不规则运动,其行为表现为不确定性、不可重复、不可预测,这使得混沌与密码学有许多天然的联系。比如,混沌系统能产生大量的伪随机序列,能构造非线性加密元件,可以快速生成大量密钥。作为传统加密技术的补充,混沌加密技术非常适合实时图像加密系统。

S盒作为分组密码系统中唯一的非线性元件,对密码系统的安全性能有着重要的影响。AES在很大程度上被认为是一种有效的密码体制,它的一个重要组成部分是基于GF(28)的逆和仿射变换的S盒元素。随着AES在通信系统中的普及,S盒引起了密码系统设计者的关注。利用混沌系统产生S盒并将其应用于图像加密是混沌系统最有前途的研究领域,人们提出了许多相关的工作[1-10]。对于分组密码系统中S盒的设计,S盒的强密码性能一直是密码系统设计人员的目标。研究人员提出了多种S盒构造方法。文献[5]提出了一种基于离散混沌映射的S盒设计方法。该方法采用基于排列组合的离散混沌映射,混沌映射的连续值不需要离散化,因此S盒的生成过程不受任何近似的影响。文献[6]采用七种不同的优化算法,对四种不同的离散时间混沌系统确定了最合适的初始条件和控制参数,提出了一种基于最优混沌参数的替换盒生成算法,该算法提高了S盒的数量和质量。利用zhongtang混沌系统丰富的动态特性,文献[4]设计了一种具有较强密码学特性的S盒设计算法,该算法在较短的时间和处理负载下生成的S盒具有最佳DP值,因此它比其他文献中构造的S盒更安全。文献[7]使用logistic映射、Mobius变换和对称群S256构造出AES的动态S盒。相比传统AES中使用的固定S盒组件,该算法中构造出的S盒组件加密强度将比以前更大。文献[8]提出了一种新的基于三角形群的S盒构造方法,而文献[9]提出了一种利用三次多项式映射设计S盒的新方法。文献[10]提出了一种基于NCML时空系统生成S盒的新方法。NCML系统的高维特性不仅可以抵抗有限精度计算的退化,而且增加了所构造S盒的随机性,同时利用独立的混沌序列进行置换运算,改善了所构造S盒的BIC和LP性质。文献[11]提出了一种基于抗退化混沌系统的动态 S 盒设计方法。由于采用了抗退化的混沌系统,生成的S 盒具有良好的非线性度、差分均匀性、严格雪崩准则、比特间独立性等性能。

同时许多基于混沌和S盒的图像加密算法被不断提出。文献[12]提出一种结合 S 盒与混沌映射的三阶扩散图像加解密算法,在设计中采用传统的置乱扩散模式,并创新性地进行三阶扩散,以图像散列值作为混沌系统的密钥,使提出的算法能抵抗选择明文攻击。针对目前低维混沌算法存在的明显缺点,文献[13]提出一种基于神经网络(Convolutional Neural Network, CNN)超混沌与S盒结合的图像加密算法,该算法能够有效地抵挡选择明文(密文)攻击,实现了一次一密,而且拥有更大的密钥空间,具有优良的加密效果及速度快、复杂度低的优点。文献[14]提出一种基于线性Diophantus模型与循环移位动态S盒的图像加密算法。文献[15]以明文图像的SHA-512哈希值作为混沌系统初值的一部分,构造出动态S盒,据此提出结合混沌系统和动态S盒的图像加密算法。文献[16]提出了一种基于切比雪夫混沌映射产生的多个混沌S盒的图像加密算法。然而一些基于S盒的图像加密算法存在安全缺陷,无法抵抗选择的明文攻击。文献[17]提出了一种攻击仅有S盒图像加密系统的通用模型,而且攻击的计算复杂度仅为O(128L)(其中L是图像的像素总数)。文献[18]中基于S盒的图像加密算法已经被文献[19]破解。文献[20]破解了一种基于超混沌系统和动态S盒的图像加密算法。以上图像加密算法被破解的主要原因在于加密系统所用的密钥流与明文图像无关,加密不同的图像所用密钥流不变。最近,文献[21]提出基于混沌映射与动态S盒的图像加密算法,所提算法具有密钥空间大,能够抵抗穷举攻击,差分攻击,具有加密效率高,易于实现的优点。但是该加密系统的密钥与明文图像无关,加密不同的明文图像所用的4个S盒和扩散阶段所需的混沌序列是固定不变的,因此,导致该加密系统不能抵抗选择明文的攻击。本论文将详细论述其安全缺陷并给出一个选择明文攻击方法。

1 原加密算法的描述

1.1 S盒的构造

利用Arnold cat映射具有置乱的特性来产生动态S盒,具体步骤如下:

步骤2:改变a,b,c,d的值继续进行步骤1的操作,最终产生4个类似随机的S盒。

1.2 加密过程

该加密算法主要包括两部分,第一部分是对图像像素值进行扩散,即对图像像素利用Logistic映射进行扩散; 第二部分则主要是利用产生的动态S盒对图像像素进行置换操作。具体步骤如下:

步骤1:假设具有256级灰度级的明文图像的矩阵为I,大小为M×N,用Logistic映射通过迭代生成长度为M×N的混沌序列X,将其转化为整数,再把X转化为大小为M×N的矩阵T,最后对I和T进行异或操作得到矩阵I′为

I′(m,n)=I(m,n)⊕T(m,n),

m=1,2,…,M;n=1,2,…,N

(1)

步骤2:将矩阵I′从上到下平均分为四块,分别将图像的每一块对应一个随机的S盒进行置换操作,得到密文图像C为

C(m,n)=sub_byte[S(:,:),I′(m,n)],

m=1,2,…,M;n=1,2,…,N

(2)

式中:sub_byte[S(:,:),I′(m,n)]是一个函数,它返回S盒(row,col)中的元素值。row和col由I′(m,n)的值决定。例如,如果I′(m,n)=151=(10010111)2,则row=(1001)2+1=10,col=(0111)2+1=8。

从整个加密算法来看,加密系统的等效密钥流为扩散阶段所用的混沌矩阵T和4个S盒,但是它们的生成与明文图像无关,加密不同的明文图像所用的混沌矩阵T和4个S盒是固定不变的。因此,可以采用选择明文攻击的方法破解出待解密的密文。

2 对原加密算法的选择明文攻击

选择明文攻击(CPA)是四种经典密码攻击方法中最强的一种[22]。选择明文攻击模型认为攻击者有机会使用密码系统的加密机,可以选择特殊的明文来获得相应的密文。因此,攻击者使用这些已知的明文-密文对来破译密码系统的等效密钥或目标密文。

从加密过程可知,密文图像C的(m,n)处的像素值C(m,n)完全被S盒和I′(m,n)决定,而I′(m,n)的值由I(m,n)和T(m,n)共同确定。又因为加密不同的明文图像所用的混沌矩阵T和4个S盒是固定不变的,因此,密文图像C的(m,n)处的像素值C(m,n)与明文图像I的(m,n)处的像素值I(m,n)是一一对应的。而明文图像每个位置的像素的取值范围为0~255,可以采用选择明文攻击的方法破解出待解密的密文。具体攻击步骤如下:

1)假设待解密的密文图像为C,大小为M×N。解密出的明文图像为I。构造大小为M×N的像素值都为i-1的明文图像Pi={Pi(m,n)=i-1}(i=1,2,…,256)。随着i取值的变化,可以构造出256幅明文图像Pi, 用原加密系统加密这256幅明文图像Pi,得到对应的256幅密文图像Ci={Ci(m,n)}。

2)对比密文图像C在(m,n)处的像素值C(m,n),256幅密文图像Ci在(m,n)处的像素值Ci(m,n)。若有C(m,n)=Ci(m,n),则得到明文图像P的(m,n)处的像素值P(m,n)=i-1,这样就可以解密出明文图像P。具体的伪代码描述如图1所示。

从破解过程可以看出,我们不是破解出等效的密钥流:混沌矩阵T和4个S盒,而是利用原加密算法的性质,通过分别对比256幅明文图像对应的256幅密文图像Ci,i=1,2,…256,与待解密图像C的(m,n)处的值是否相等来确定明文图像P的(m,n)处的值。

3 密文破译仿真实验

为了进一步证明文献[22]不能抵抗选择明文的攻击,根据第2小节的分析,进行选择明文攻击的实验仿真。仿真实验采用Matlab2014a平台,选用大小为256× 256的256级灰度图像cameraman,混沌系统的参数选择与原算法中的选择保持一致。原加密算法的密钥为Logistic 映射初值x0,参数μ以及产生四个S盒的广义猫映的置乱轮数k,四组映射参数a,b,c,d。Logistic映射初值选为:x0=0.257 512 3,参数μ的值设定为3.875 123。产生四个S盒的广义猫映的置乱轮数都为k=15,映射参数分别为:a=5,b=2,c=7,d=3;a=1,b=1,c=1,d=2;a=1,b=1,c=2,d=3;a=3,b=2,c=4,d=3。对Cameraman加密,得到图像如图2(a)所示,同时加密256幅大小为256× 256的256级灰度图像Pi={Pi(m,n)=i-1}(i=1,2,…,256),得到对应的256幅密文图像Ci={Ci(m,n)}。

在未使用加密密钥的前提下,由第2小节提出的攻击算法1破译出图2(a)对应的明文图像,结果如图2(b)所示。以上结果表明密码破译是成功的。

图2 实验仿真结果

4 改进算法及其解密算法

4.1 加密算法

原图像加密算法还存在以下缺陷:

1)该算法没有扩散效应,明文图像(i,j)处的像素值发生改变时,密文图像只有(i,j)处的像素值发生改变。

2)密码系统缺乏置乱过程,导致密码系统的抗攻击能力降低。这也是本文能破解原算法的主要原因。

根据存在的安全漏洞,提出以下改进算法。

步骤1:构造4个S盒,其构造方法与原算法一致,这里不再赘述。

步骤2:设待加密的图像是大小为M×N的灰度图像I,把其转化为长度为M×N的一维序列I。设置Logistic 映射初值x0与I的元素总和相关。

(3)

更新x0为

x0=(mod(floor(x0×sum),M×N))/(M×N)

(4)

利用新更新的x0作为Logistic映射初值进行迭代,生成长度为M×N的混沌序列X,对X进行升序排列得到位置索引序列值sx,按该序列值一一将I序列变换到新序列P,变换公式为

P(i)=I(sx(i))

(5)

步骤3:设置y0作为Logistic 映射初值进行迭代生成长度为M×N的混沌序列Y,通过(7)式把Y转化为整数序列T={T(1),T(2),…,T(M×N)}。

T(i)=mod(floor(Y(i)×1014),256)

(6)

步骤4:由序列T再通过式(8)生成序列K={K(1),K(2),…,K(M×N)}

K(i)=mod(T(i),4)+1,i=1,2,…,M×N

(7)

显然,K(i)的可能取值为1,2,3或4。

由置乱的图像序列P通过式(9)生成序列kt

kt(i)=floor(P(i)×(i-1)/256)+1,

i=1,2,…,M×N

(8)

显然,kt(i)∈[1,i-1]。

步骤5:利用序列T,kt进行如下操作得到中间密文CT

(9)

步骤6:利用序列K对中间密文CT进行S盒替换操作,得到最终的密文C。

C(i)=sub_byte[S(:,:,K(i)),CT(i)],

i=1,2,…,M×N

(10)

式中:sub_byte[S(:,:,K(i)),CT(i)]是一个函数,它返回第K(i)个S盒(row,col)中的元素值。row和col的值由CT(i)决定。

可以看出改进算法与原算法相比主要有以下三点优势。

1)改进算法增加了置乱操作且置乱序列的生成与明文图像的像素总和相关,这增强了密码系统的抗选择明文攻击的能力。

2)原算法在进行扩散操作时只是将明文图像与随机序列进行简单的异或操作,没有密文反馈机制,这导致原加密算法对明文和密文都不敏感。而改进算法在扩散阶段引入了密文反馈机制,且反馈的密文的位置由序列kt决定,而kt又与明文相关,这使得改进算法对明文和密文都敏感,更能抵抗选择明文攻击。

3)改进算法在生成置乱序列sx时,混沌映射的初始值与明文图像的所有像素总和sum相关,但在解密时sum并不属于密钥,因此改进算法具有“一次一密”的加密效果,但是没有额外增加密钥传递的负担。

4.2 解密算法

步骤1:利用密钥,构造4个S盒。

步骤2:用密钥y0作为Logistic 映射初值进行迭代生成序列T和K。

步骤3:利用K和4个S盒对密文C进行加密过程中步骤6的反操作得到中间密文CT。

步骤4:由式(10)可以解出P(1)。根据(9)式,由P(1)可以解出kt(1),从而得到CT(kt(1))。由式(10)可以进一步解出P(2),依次类推可以解出P(3),P(4),…,P(M×N),从而解密出序列P。

步骤5:由于置乱不改变像素值,从而

(11)

根据式(2)用sum去更新x0得到新的x0,用新的x0作为Logistic 映射初值进行迭代生成长度为M×N的混沌序列X,对X进行升序排列得到位置索引序列值sx,按该序列值一一将P序列变换到新序列I,变换公式为

I(sx(i))=P(i),i=1,2,…,M×N

(12)

把I转化为大小为M×N的矩阵即得明文图像。

5 改进算法的实验仿真及其安全分析

5.1 实验仿真

改进后的加密算法的密钥为Logistic映射初值x0,y0,参数μ以及产生四个S盒的广义猫映的置乱轮数k,四组映射参数a,b,c,d。与原加密算法相比,多了一个y0。设置y0=0.568 732 98,其他的密钥设置与第4节中的取值完全一样。采用Matlab2014a平台,选用大小为256× 256的256级灰度图像“cameraman”和大小为256× 256的256级灰度图像“peppers”,对它们进行加密和解密,其实验结果如图3所示。实验结果表明改进后的加密算法加密效果良好且能无误解密。

图3 改进算法的仿真结果

5.2 安全分析

5.2.1抵抗选择明文攻击分析

从式(5)和式(9)可知序列sx和kt的生成都与明文图像相关,加密不同的图像所用的序列sx和kt不同,具有“一次一密“的加密效果。因此,改进算法可以抵抗选择明文攻击。

5.2.2密文的统计特性分析

统计分析主要包括密文直方图分析、密文信息熵分析和密文关联系数分析。

(1)直方图分析

直方图是数字图像的一个基本属性,若密文图像的直方图呈现均匀分布或高斯分布,说明加密效果良好。用改进算法加密灰度图像“cameraman”和灰度图像“peppers”后得到的密文图像的直方图如图4所示。可以看出密文图像直方图呈现均匀分布,加密效果良好。

图4 密文图像直方图

(2)信息熵分析

信息熵是度量图像混乱程度的一个量,图像越混乱,信息熵越大。对于具有8个灰度级的灰度图像来说,当像素为等概率分布时,信息熵可以达到8 bit。信息熵的计算公式为

(13)

改进算法加密的“rice”,“cameraman”,“pout”,“peppers”4幅数字图像的信息熵见表1。可以看出,4幅图像的密文图像的信息熵都非常接近8,加密后图像的混乱程度很高。

表1 改进算法与其他算法的密文信息熵比较

(3)相关系数分析

一幅明文图像相邻像素间具有很强的相关性,而加密的目的就是消除这种相关性。分别在密文图像的水平方向、垂直方向和对角方向随机选取2 000对相邻图像计算它们的相关系数。相关系数的计算公式为

(14)

式中:xi和yi代表两个相邻位置的像素值;n代表像素值对数。

本实验中计算“rice”,“cameraman”,“pout”,“peppers”四幅数字图像的相关系数见表2,而用原算法计算“rice”,“cameraman”,“pout”,“peppers”四幅数字图像的相关系数见表3,可以看出改进算法的密文图像的关联系数比原算法的小,加密效果良好。

表2 改进算法加密的密文图像相邻元素相关系数

表3 原算法加密的密文图像相邻元素相关系数

5.2.3敏感性分析

敏感性分析包括明文敏感性分析和密钥敏感性分析。一个算法对明文或密钥越敏感,算法抵抗差分攻击的能力越强。

(1)明文敏感性分析

所谓算法对明文敏感是指如果修改明文图像的一个像素值会引起密文图像的巨大变化。一般用数字图像像素变化率(NPCR)和归一化平均变化强度(UACI)来衡量数字图像加密算法对明文敏感的程度。NPCR和UACI的计算公式分别为

(15)

(16)

其中,

(17)

式中:C1为原密文图像;C2为明文改变后对应的密文图像。对于8位灰度图像来说,NPCR与UACI的理想期望值分别为:NPCR=99.609 4%,UACI=33.463 5%。在改进算法中随机选取“Peppers”图像中的50个像素点,改变它们的像素值,结果计算的NPCR最大为99.656 7%,最小为99.239 8%,平均值为99.623 4%;UACI最大为33.564 3%,最小为33.232 1%,平均值为33.449 8%,非常接近理想值。而在原算法中随机选取“Peppers”图像中的50个像素点,改变它们的像素值,结果计算的NPCR最大为16.656 7%,最小为10.239 8%,UACI最大为8.236 7%,最小为2.336 7%。正如前面分析的那样,这主要是因为原算法中没有扩散反馈机制和置乱操作,使得原算法不能抵抗差分攻击。

(2)密钥敏感性分析

所谓算法对密钥敏感是指如果解密密钥与正确密钥有一点点误差,则无法从解密结果中获得明文图像的任何有用信息。我们选择表4中的错误密钥Key1、Key2对原始的cameraman的密文图像进行解密,解密结果如图5所示。可以看出,解密后的图像无法获得原始图像的任何信息,这也说明了算法对密钥的高度敏感性。

表4 解密时用的错误密钥

图5 错误密钥的解密结果

同样,如果混沌映射(1)中的参数a,b,c,d,k有变化,生成的S盒也会有巨大变化,从而无法从解密结果中获得明文图像的任何有用信息。

6 结 语

本文对一种基于混沌映射与动态S盒的图像加密算法进行了安全分析,通过选择明文攻击的方法破解出待解密的图像。在破解过程中,不是破解出等效的密钥流混沌矩阵T和4个S盒,而是利用原加密算法的性质,通过分别对比256幅明文图像对应的256幅密文图像Ci,与待解密图像的(m,n)处的值是否相等来确定明文图像的(m,n)处的值。这种破解思路具有一定的新颖性,为如何评估混沌密码算法安全性展示了一种新的、可行的密码分析方法。仿真实验演示了所提出的选择明文攻击方法的有效性。原加密算法的密钥流与明文图像无关和原算法没有置乱操作是原算法被破解的根本原因,同时提出了改进算法,并对改进算法进行了安全分析。

猜你喜欢
明文加密算法密文
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
基于网络报文流量的协议密文分析方法
密钥共享下跨用户密文数据去重挖掘方法*
DES加密算法的实现
基于整数矩阵乘法的图像加密算法
奇怪的处罚
奇怪的处罚
基于小波变换和混沌映射的图像加密算法
奇怪的处罚