Print

发布时间: 2016-06-25
摘要点击次数: 288
全文下载次数: 39
DOI: 10.11834/jig.20160603
2016 | Volumn 21 | Number 6




    图像处理和编码    




  <<上一篇 




  下一篇>> 





整合ChaCha20哈希运算的分块扩散自适应图像加密算法
expand article info 宋金林, 张绍武
1. 西北工业大学自动化学院, 西安 710072;
2. 信息融合技术教育部重点实验室, 西安 710072

摘要

目的 针对数字图像网络传输安全性和混沌加密算法自适应差的问题,提出一种基于ChaCha20哈希运算的分块扩散自适应图像加密算法(BDCH)。 方法 BDCH算法首先通过分段线性混沌映射(PWLCM)产生的混沌序列填充明文图像,使其成为方形图像;其次,利用初始输入密钥及明文图像总和,通过ChaCha20哈希运算生成8×8的初始哈希矩阵,并与PWLCM混沌映射生成的伪随机序列作用,联合产生哈希密钥矩阵,PWLCM的迭代初值选取为初始密钥矩阵均值、初始密钥及明文图像归一化均值;然后,利用Arnold和PWLCM映射同步置乱扩散整幅图像,并分成互不重叠的8×8大小图像块;最后,采用哈希密钥矩阵对图像块进行两轮扩散,完成图像加密。 结果 灰度及彩色图像的计算机仿真与性能分析表明,BDCH算法的信息熵、峰值性噪比、密钥敏感性指标优于其他加密算法,并且解决了直接使用初始哈希矩阵会产生的弱密钥问题,密钥空间大。 结论 结合同步置乱扩散和哈希密钥矩阵非线性分块扩散的BDCH算法可有效抵抗各种攻击,安全性高、自适应性强,适合各种类型的灰度及彩色图像加密,潜在应用价值大。

关键词

ChaCha20哈希运算, 置乱, 扩散, 分块, 图像加密

Adaptive image encryption algorithm of blocking diffusion based on the ChaCha20 hash operation
expand article info Song Jinlin, Zhang Shaowu
1. College of Automation, Northwest Polytechnical University, Xi'an 710072, China;
2. Key Laboratory of Information Fusion Technology, Ministry of Education, Xi'an 710072, China
Supported by: National Natural Science Foundation of China (61170134, 61473232, 91430111)

Abstract

Objective Along with the rapid development of network technology, digital images, as the main carriers of information expression, have been widely used in commercial, economic, aerospace, military, defense,and other fields. However,they entail the risk of information leakage in image storage and transmission. The security problem of image data must be solved effectively. Moreover, some image algorithms have poor self-adaptability and weak keys. This paper proposes an adaptive encryption algorithm of blocking diffusion based on the ChaCha20 hash operation (BDCH) to solve these issues. Methods First,BDCH translates a plain image into a square image by filling the chaotic sequences that are generated using a piece wise linear chaotic map (PWLCM). Second, a 512-bit initial key and the sum of plain-image pixels are used as input tothe ChaCha2 hash operation to generatean initial 8×8 hash matrix. The matrix is then combined with a chaotic sequence through a PWLCM map, whose inputs consist ofthe average of the initial hash matrix, initial key, and normalized average of plainimage pixels to form an 8×8 hash key matrix. Third, permutation and diffusion are simultaneously implemented on the whole image using an Arnold map and PWLCM.The image is then segmented into an 8×8 array of non-overlapping blocks. In the end, the hash key matrix is used to diffuse the blocks with two rounds and to finish the encryption process. Results The BDCH algorithm can solve the issue of weak keys by co-producing a hash key matrix using the initial hash matrix and the PWLCM chaotic sequences, thereby increasing the key space. Plain-image information is also a part of the input keys of ChaCha20, Arnold map, and PWLCM chaotic map, thereby enhancing self-adaptability and plain text sensitivity. The simulation results and performance analysis on seven gray and color images show that the BDCH algorithm achieves a larger key space, higher sensitivity to both key and plainimages, and faster encryption speed. Conclusion The BDCH algorithm,which combines simultaneous permutation, diffusion, and hash key matrix blocking nonlinear diffusion,can effectively resist various attacks and is suitable for all kinds of grayscale and color images.

Key words

ChaCha20 hash operation, permutation, diffusion, blocking, image encryption

0 引 言

随着互联网和移动互联网技术的飞速发展,网络上传输和存储的信息总量出现了爆炸式增长。方便快捷的同时,风险也日益凸显,隐私泄露、机密信息遭到窃取等新闻屡见报端。特别是“棱镜门”事件曝光后,信息安全问题被推到了一个新的高度,急需安全性较高的加密算法以防止机密信息外泄。互联网上各种信息传输和存储过程中,图像信息因为其直观、方便的特点,扮演越来越重要的角色,如社交网站每天产生数以亿计图像,因而图像信息安全性保护已迫在眉睫。

传统加密算法,如AES(advanced encryption standard)、DES(data encryption standard)和RSA加密算法等,均是针对文本信息加密而设计,而数字图像因为具有数据量大、相邻像素相关性强、冗余度较高等特点,使得传统加密方法不适合对其进行加密。Fridrich首次提出置乱—扩散(confusion-diffusion)加密算法框架[1],通过置乱明文图像像素位置可移除相邻像素点相关性,经过扩散依次修改图像像素值可使一个像素的微小变化扩散到整幅图像所有像素中,实现图像加密。基于Fridrich加密框架,人们提出了一系列图像加密算法,目前这些算法可大致分为三大类:基于混沌系统的置乱—扩散加密算法、基于哈希运算和混沌系统的置乱—扩散加密算法、基于哈希运算的扩散加密算法。

基于混沌系统的置乱-扩散加密算法在图像加密的置乱和扩散阶段依靠混沌特性对图像进行加密[2-8],如Pisarchik等人[2]采用混沌耦合(chaotic coupling)进行图像像素置乱和扩散,但该算法抗噪声攻击的鲁棒性不高[9];Patidar等人[3]提出一种基于standard和logistic映射的置乱-扩散加密算法,该加密算法进行两轮置乱、两轮扩散,置乱和扩散效果较好,但难以抵抗已知/选择明文攻击[10],仅一个“明文—密文对”就可破解此加密系统。置乱—扩散加密框架在混沌系统控制参数不变的情形下使用时,易遭到同像素图像攻击,降低置乱性能[4],且每轮置乱、扩散操作都需遍历图像,增加了加密时间[6]。为此,人们提出同时实施置乱和扩散,从而抵抗同像素攻击、减少加密时间[6-8]

基于哈希运算和混沌系统的置乱—扩散加密算法通过引入哈希运算、混沌系统进行图像加密[11-14]。加密系统被攻破除了加密框架本身的脆弱性原因外,另一个原因在于密钥流的产生独立于明文图像,使得加密任何图像均产生相同的密钥流,这为攻击者采用已知/选择明文攻击手段提供了可能。而哈希运算拥有对不同输入只输出唯一结果、及计算不可逆等特性,因此,可采用哈希运算将明文图像信息融入密钥流的产生,避免已知/选择明文攻击,如文献[11-13]分别采用SHA-256、SHA-256、SHA-512哈希运算,结合明文图像信息和外部密钥产生固定长度的哈希值,并以哈希值产生混沌系统的迭代初值,其生成的密钥流与明文信息密切相关,可有效地抵抗已知/选择明文攻击,加密效果和安全性较好。但SHA-256、SHA-512哈希运算得到输入信息的哈希值至少需要迭代64次和80次,计算复杂度较高。

基于哈希运算的扩散加密算法不进行图像像素位置置乱操作,而是利用哈希运算对图像扩散加密,如文献[15]提出一种基于哈希矩阵两轮扩散的加密算法,该算法通过Salsa20哈希运算生成8×8哈希密钥矩阵,并依次与8×8明文图像块异或运算生成密文图像,此密文图像再次与哈希密钥块异或运算对图像进一步加密,虽然哈希密钥块与明文图像块异或运算可有效抵抗已知/选择明文攻击、加密效果较好,但存在弱密钥问题[16]

基于以上分析,针对基于混沌的加密算法安全性不高、哈希运算计算量大及弱密钥问题,根据混沌系统拥有的对系统参数和初始条件高度敏感、类随机性等特性,及ChaCha20哈希运算加密速度快、安全性高等优点[17],提出一种基于ChaCha20哈希运算和混沌映射的分块扩散自适应图像加密算法,并通过图像仿真验证算法加密效果。

1 哈希运算和混沌系统

1.1 ChaCha20哈希运算

ChaCha20状态(state)由16个状态字(state word)w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15构成,每个状态字32 bit。

ChaCha20哈希运算首先对16个状态字赋初始值,然后按如下分组顺序:w0, w4, w8, w12w1, w5, w9, w13;w2, w6, w10, w14;w3, w7, w11, w15w0, w5, w10, w15;w1, w6, w11, w12;w2, w7, w8, w13;w3, w4, w9, w14依次进行32 bit加、32 bit异或、及32 bit旋转运算,即QUARTERROUND(a,b,c,d),具体过程为

a=a+b; d=d ^ a;d=d<<<16;

c=c+d;b=b ^ c;b=b<<<12;

a=a+b;d=d ^ a;d=d<<<8;

c=c+d;b=b ^ c;b=b<<<7

式中,^表示按位异或,<<<16表示向左旋转16个比特。重复迭代上述过程10次,完成20轮扩散操作。从上到下逐行读取每个状态字,依据小端字节序方式将其转换成字节流,连接成512 bit流密码。

1.2 Arnold映射

Arnold映射为2维混沌映射,它将N×N图像的像素点(x,y)经过变换矩阵映射到另一点(x,y),其动力学方程为[6]

$\left[ \begin{matrix} x' \\ y' \\ \end{matrix} \right]=\left[ \begin{matrix} 1 & p \\ q & pq+1 \\ \end{matrix} \right]\left[ \begin{matrix} x \\ y \\ \end{matrix} \right]\bmod \ N$ (1)

式中,p、q为控制参数。Arnold映射用于图像置乱,是一种从顺序位置到随机位置的映射,即由原来顺序位置(x,y)映射到一个随机位置,并将该点像素存入到位置(x′,y′)。

1.3 分段线性混沌映射

由于Logistic映射混沌范围窄,产生的序列不均匀[18],而分段线性混沌映射(PWLCM)混沌范围宽、遍历性好,能够产生均匀的伪随机序列[19],因此,采用PWLCM产生随机序列,其表达式为

$\begin{array}{l} {x_{n + 1}} = f\left( {{x_n},l} \right) = \\ \left\{ \begin{array}{l} {x_n}/l\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;{x_n} \in \left( {0,l} \right)\\ \left( {{x_n} - l} \right)/\left( {0.5 - l} \right)\;\;\;{x_n} \in \left[ {l,0.5} \right]\\ f\left( {1 - {x_n},l} \right)\;\;\;\;\;\;\;\;\;\;\;{x_n} \in \left( {0.5,1} \right) \end{array} \right. \end{array}$ (2)

式中,l为控制因子。xn∈(0,1),l∈(0,0.5)条件下,映射进入混沌状态。

2 算法及步骤

2.1 加密过程

BDCH算法主要包括明文图像预处理、哈希密钥矩阵生成、同步置乱扩散以及两轮分块扩散4个过程。首先,初始密钥通过PWLCM混沌映射产生混沌序列,填充明文图像,使其为方形图像;然后,初始密钥与明文图像像素总和通过ChaCha20哈希运算生成密钥流,对其分割构建形成8×8的初始哈希矩阵,将此哈希矩阵均值、初始密钥及明文图像归一化均值作为PWLCM混沌系统的初始值,迭代生成8×8混沌序列矩阵,该矩阵与初始哈希矩阵求和取模生成哈希密钥矩阵;采用Arnold及PWLCM映射同时改变图像像素位置及像素值,实现整幅图像同步置乱扩散,将其分成互不重叠的8×8图像块,采用哈希密钥矩阵进行两轮扩散,完成图像加密。BDCH算法的加密框图如图 1所示。

图 1 BDCH算法加密方框图
Fig. 1 The schematic diagram of BDCH algorithm

设明文图像为P,大小为M×N,BDCH算法加密步骤如下:

1)明文图像预处理。图像在置乱过程中需进行Arnold映射,并且在两轮分块扩散过程中将图像分成8×8方块,因此输入图像必须为宽、高均为8的整倍数的方形图像,否则需进行整形或填充为大小为S×S的方形图像,满足S=min{A|S≥「 $\sqrt{M\times N}$˥且mod(S,8)=0}。「x˥表示对x向上取整,mod(S,8)表示S对8取模,min{A}表示求集合A中的最小值。例如输入图像宽、高为128×2,则S≥「 $\sqrt{128\times 2}$˥=16,并且有mod(16,8)=0,可得S=16,因此只需将其整形为大小为16×16的图像。具体整形或填充过程如下:

(1)将输入初始密钥x0l0赋给xn,l作为迭代初始值,式(2)迭代k0+S2MN次,舍弃前k0项(避免暂态效应),生成长度为S2MN的混沌序列y={y1,y2,…,yS×S-M×N}。

(2)将序列y转换成整数序列

$\begin{array}{l} Z = \left\{ {{z_1},{z_2}, \cdots ,{z_{S \times S - M \times N}}} \right\}\\ {z_\eta } = floor\left( {\bmod \left( {{y_\eta } \times {{10}^{15}},256} \right)} \right)\\ \;\;\eta = 1,2, \cdots ,{S^2} - MN \end{array}$ (3)

式中,floor(x)表示x对向下取整。

(3)当S2MN=0时,不进行第(1)(2)步,直接逐行读取输入图像P的像素按每行个像素逐行存放至新图像,将输入图像整形为S×S的方形新图像I;当S2MN>0时,首先逐行读取输入图像P的像素按每行S个像素逐行存放至新图像,然后从输入图像P最后一个像素的下一位置将Z序列元素按序逐行填充到新图像中,最后生成大小为S×S的方形新图像I

2)哈希密钥矩阵生成。初始密钥与明文图像像素总和通过ChaCha20哈希运算生成密钥流,对其分割构建形成8×8初始哈希矩阵,将此哈希矩阵均值、初始密钥及明文图像归一化均值作为PWLCM混沌系统的初始值,迭代生成8×8混沌序列矩阵,该矩阵与初始哈希矩阵求和取模生成哈希密钥矩阵。具体实施过程如下:

(1)输入512 bit外部密钥,赋给ChaCha20状态字(w0,w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11,w12,w13,w14,w15)初始值。为提高算法抵抗已知/选择明文攻击能力,将明文图像像素总和与初始值进行异或,即w12=w12sum(P),sum(P)表示求明文图像像素总和,其中,⊕表示按位异或。经过20轮ChaCha20哈希迭代运算,生成512 bit哈希密钥流,8 bit 一组(单字节整数∈[0255])分割哈希密钥流,构建8×8初始哈希矩阵,记作hashkey0

(2)计算明文图像像素归一化均值x1=mean(P)/256,mean(P)表示对明文图像P中的像素求均值;计算初始哈希矩阵hashkey0的均值havg,并计算l1,即

${l_1} = \left( {{h_{avg}} - floor\left( {{h_{avg}}} \right) + {x_0}} \right)\bmod 0.5$ (4)

x1,l1代入式(2),迭代k1+66次产生长度为k1+66的混沌序列,舍弃前k1项(避免暂态效应)生成长度为66的混沌序列c。按顺序将序列c分割为rm序列,其中r={r1,r2},ru=∈(0,1),u=1,2,m={m1,…mv,…,m64},mv∈(0,1),r序列用于计算Arnold映射控制参数,m序列用于构建哈希密钥矩阵。

(3)将序列m转换成整数序列O′={o1,…,ov,…,o64},ov∈(0,255),其中

$\begin{array}{l} {o_v} = floor\left( {\bmod \left( {{m_v} \times {{10}^{15}},256} \right)} \right)\\ \;\;\;v = 1,2, \cdots ,64 \end{array}$ (5)

将序列O′转换成8×8矩阵O。求和取模构建哈希密钥矩阵hashkey,即

$hashkey\left( {x,j} \right) = \bmod \left( {hashke{y_0}\left( {i,j} \right) + O\left( {i,j} \right),256} \right),i,j = 1,2 \cdots ,8$ (6)

3)图像同步置乱扩散。采用Arnold反向映射,将明文图像随机位置的点映射到顺序位置,即将点(x′,y′)的像素值保存到点(x,y),Arnold参数p=mod(r1×1015,1 000),q=mod(r2×1015,1 000);进行同步图像扩散,同步置乱扩散后的像素值记为I(x,y),即

$I\left( {x,y} \right) = I\left( {x',y'} \right) \oplus I''\left( {x,y} \right)$ (7)

式中,I″(x,y)为经过PWLCM映射产生的0255整数,具体过程为:先将前一个同步置乱扩散后的像素归一化,并将其作为PWLCM的xn参数初值,输入式(2)迭代一次,将结果xn+1转化成0255整数I″(x,y),即I″(x,y)=floor(mod(xn+1×1015,256)),I″(x,y)的初值通过矩阵hashkey中的64个元素异或产生,即I0(x,y)=hashkey(1)⊕hashkey(2)⊕…⊕hashkey(64)。根据以上操作过程从(1,1)点开始至(S,S)点结束,得到置乱扩散图像I

4)两轮分块扩散。第1轮先将图像I分成矩阵子块8×8,然后利用哈希密钥矩阵对其进行扩散;第2轮转置上轮扩散图像,再次利用哈希密钥矩阵对其进行扩散,完成图像加密。具体实施过程如下:

(1)第1轮扩散步骤如下:

①分割图像I,生成S2/64个8×8矩阵子块,记作D={d1…,dα,…dS2/64}。设本轮扩散后产生的密文矩阵为C={c1,…,cα,…,cS2/64},大小为S2/8×8,其中cα表示8×8密文矩阵子块。用矩阵D初始化C

②计算MdαKdα,即

${M_{{d_\alpha }}} = \frac{{\left( {\left( {\sum\limits_{\beta = 1}^{{S^2}/64} {\left( {{c_\beta }} \right)} } \right) - mean\left( {{c_\alpha }} \right)} \right) \times {{10}^{15}}}}{{4 \times {{256}^4}}}$ (8)

${K_{{d_\alpha }}} = floor\left( {\bmod \left( {hashkey \times {M_{{d_\alpha }}},256} \right)} \right)$ (9)

式中,mean(π)表示对矩阵子块π取均值,Kkα为8×8矩阵。根据式(8)(9),要加密一个矩阵子块,则需计算除本子块以外的其他块的平均值。

③当a=1时,由第②步计算Md1Kd1,对第1个子块d1加密,即

${c_1} = {d_1} \oplus \bmod \left( {hashkey + {K_{{d_1}}},256} \right) \oplus {K_{{d_1}}}$ (10)

a≠1时,对其余子块加密,即

${c_\alpha } = {d_\alpha } \oplus \bmod \left( {hashkey + {c_{\alpha - 1}},256} \right) \oplus {K_{{d_\alpha }}}$ (11)

④令a=a+1,转到第②步计算MdαKdα,加密下一个矩阵块dα,直到a=S2/64结束。

在加密过程中,每加密一个矩阵子块da-1,矩阵C中的子块cα-1获得更新,然后通过更新后的矩阵C计算MdαKdα从而加密矩阵块dα。例如,如果要加密第n个块dn,则由前n-1个已加密子块和后S2/64-n个未加密子块共S2/64-1个子块的平均值来计算MdnKdn

通过第1轮扩散,生成大小为S2/8×8的加密矩阵C={c1,…,c2,…,cS2/64},将cS2/64作为第2轮扩散初值。

(2)第2轮扩散步骤如下:

①转置矩阵C,即CT={c1T,c2T,…cS2/64T},设本轮扩散后产生的密文矩阵为C′={c1,…,cα,…,cS2/64},大小为8×S2/8,其中cα表示8×8密文矩阵子块。首先用CT初始化C

②计算M′dαKdα,即

${M_{{d_\alpha }}} = \frac{{\left( {\left( {\sum\limits_{\beta = 1}^{{S^2}/64} {\left( {{c_\beta }} \right)} } \right) - mean\left( {{c_\alpha }} \right)} \right) \times {{10}^{15}}}}{{4 \times {{256}^4}}}$ (12)

$K{'_{{d_n}}} = floor\left( {\bmod \left( {hashkey \times M{'_{{d_\alpha }}},256} \right)} \right)$ (13)

③当α=1时,由第②步计算Md1Kd1,对第一个子块c1T加密,即

$c{'_1} = c_1^T \oplus \bmod \left( {hashkey + {c_{{S^2}/64}},256} \right) \oplus K{'_{{d_1}}}$ (14)

a≠1时,对其余子块加密,即

$c{'_\alpha } = c_\alpha ^T \oplus \bmod \left( {hashkey + c{'_{\alpha {\rm{ - 1}}}},256} \right) \oplus K{'_{{d_\alpha }}}$ (15)

④令a=a+1,转到第②步计算MdαKdα,加密下一个矩阵块cαT,直到a=S2/64结束。

在加密过程中,每加密一个矩阵块ca-1T,矩阵C中的子块ca-1获得更新,然后通过更新后的矩阵C计算M′dαKdα从而加密矩阵块cαT

第2轮扩散后生成加密矩阵C′={c1,…,cα,…,cS2/64},其大小为8×S2/8,将其转化成S×S加密图像,完成图像加密过程。

2.2 解密过程

由于加密过程的每一步均是可逆操作,所以算法是可逆的,解密是加密的逆过程。为了保证正确解密,解密时除了需要初始密钥[k1k2k512,x0,l0]外,还需要明文图像的像素总和以及图像的高和宽。解密的主要过程如下:

1)根据初始密钥和明文图像总和产生初始哈希矩阵,然后与以初始哈希矩阵均值和明文图像归一化均值作为初值的PWLCM映射产生的混沌序列求和取模生成哈希密钥矩阵hashkey。该步与加密过程的计算方式完全相同,详见加密过程哈希密钥矩阵生成。

2)将得到的加密图像逆转化为大小为8×S2/8的矩阵C′={c1,…,cα,…,cS2/64},其中cα的大小为8×8。

3)两轮移除扩散过程如下:

(1)第1轮移除扩散过程。从最后一个矩阵子块开始,第a个加密子块扩散性能的移除过程需要计算前a-1个未解密矩阵子块和后S2/64-a个已解密子块的平均值,因此通过式(12)(13)得到M′dαKdα。当a≠1时,移除扩散后的子块cαT

$\begin{array}{*{20}{c}} {c_\alpha ^T = c{'_\alpha } \oplus }\\ {\bmod \left( {hashkey + c{'_{\alpha - 1}},256} \right) \oplus K{'_{{d_\alpha }}}} \end{array}$ (16)

a=1时,将子块cS2/64T进行转秩,得到cS2/64,并计算c1T,即

$\begin{array}{*{20}{c}} {c_1^T = c{'_1} \oplus }\\ {\bmod \left( {hashkey + {c_{{S^2}/64}},256} \right) \oplus K{'_{{d_1}}}} \end{array}$ (17)

本轮移除扩散操作完成后,得到矩阵CT={cT,c2T,…,cS2/64T},大小8×S2/8。

(2)第2轮移除扩散过程。将上一轮得到的矩阵CT={cT,c2T,…,cS2/64T}进行转秩,得到大小为S2/8×8的矩阵C={c1,…,cα,…,cS2/64}。与第1轮移除扩散过程类似,通过式(8)(9)计算MdαKdα。当a≠1时,dα

$\begin{array}{*{20}{c}} {{d_\alpha } = {c_\alpha } \oplus }\\ {\bmod \left( {hashkey + {c_{\alpha - 1}},256} \right) \oplus {K_{{d_\alpha }}}} \end{array}$ (18)

a=1时,d1

$\begin{array}{*{20}{c}} {{d_1} = {c_1} \oplus }\\ {\bmod \left( {hashkey + {K_{{d_1}}},256} \right) \oplus {K_{{d_1}}}} \end{array}$ (19)

本轮移除扩散操作完成后,得到矩阵D={d1,…,dα,…,dS2/64},大小为S2/8×8。

4)将矩阵D还原为大小为S×S的图像I,通过同步置乱扩散方式从(1,1)点到(S,S)点进行移除像素的置乱扩散操作,得到新图像

$I\left( {x',y'} \right) = I\left( {x,y} \right) \oplus I''\left( {x,y} \right)$ (20)

具体为加密过程中同步置乱扩散阶段的逆过程。

5)按照预处理方式的逆操作将图像I中填充的像素移除或重新整形,即得到大小为M×N的解密图像P。解密过程完成。

3 仿真结果与分析

基于MATLAB R2010b平台,选取大小为256×256的Lena、Cameraman,512×512像素的Baboon、Peppers、Tiffany、Lake,以及1 024×1 024像素的Elaine总共7幅标准测试图像进行加密仿真实验。

设加密密钥为[k1k2k512,x0,l0]=[“000102 030405060708090a0b0c0d0e0f0001020304050607123 4567890123456”,0.763 456 6,0.253 267 932 112 3],按照BDCH算法加密步骤对图像进行加密。图 2为Lena、Cameraman、Peppers、Tiffany、Lake、Baboon、Elaine这7幅明文图像、BDCH算法密文图像及对应的直方图。由图 2可知,图像加密前后的直方图差别较大,加密后图像灰度直方图呈均匀分布,说明各像素出现的频率非常接近,可较好地掩盖明文图像分布规律,表明BDCH算法能够有效抵御直方图分析攻击。

图 2 7幅测试图像的明文、密文图像及其直方图
Fig. 2 Plain images,encryption images with BDCH algorithmand their corresponding histograms for seven test images

3.1 敏感性分析

差分攻击是攻击者常用的、有效的攻击手段,为抵御差分攻击,明文中的微小改变应该产生截然不同的密文。像素变化率(NPCR)和归一化平均变化强度(UACI)指标常用来衡量明文像素微小变化对密文的影响[6],本文采用这两个指标来分析BDCH算法抵抗差分攻击能力和密钥敏感性。

选取Lena、Cameraman图像验证BDCH算法抵抗差分攻击能力。实验过程中,将Lena、Cameraman图像(50,1)点处的像素值分别加1,生成新明文图像,分别对改变前后的两组明文图像用相同密钥加密,产生两组对应的密文图像,通过两组密文图像计算NPCR值和UACI值[15]。文献[8, 15]和BDCH算法的NPCR和UACI值如表 1所示。

表 1 3种加密算法的NPCR与UACI值
Table 1 NPCR and UACI values with three algorithms

下载CSV
算法NPCR/%UACI/%
LenaCameramanLenaCameraman
文献[8]99.610 033.430 0
文献[15]99.613 799.613 133.459 433.461 5
BDCH99.632 399.644 533.518 633.475 9

表 1可以看出,BDCH算法的NPCR值和UACI值均高于文献[8, 15],说明BDCH算法抵抗差分攻击能力大于文献[8, 15]。

为测试BDCH算法的密钥敏感性,设原始密钥集C0为“000102030405060708090a0b0c0d0e0f000 10203040506071234567890123456”,x0=0.763 456 6,l0=0.253 267 932 112 3,改变外部密钥中的某一位,生成新密钥集C1为“000102030405060708090 a0b0c0d0e0f00010203040506071234567890123457”,x0=0.763 456 6,l0=0.253 267 932 112 3;混沌序列初始密钥加上10-16,生成另一个新密钥集C2为“000102030405060708090a0b0c0d0e0f000102030405 06071234567890123456”,x0=0.763 456 6+10-1l0=0.253 267 932 112 3。采用密钥集C0图 3(a)Lena、图 3(b)Cameraman图像进行加密,然后通过密钥集C1对Lena、Cameraman密文图像进行解密,其解密图像分别为图 3(c)(d);采用密钥集C2对Lena、Cameraman密文图像进行解密,其解密图像分别为图 3(e)(f);采用密钥集C0对Lena、Cameraman密文图像进行解密,其解密图像分别为图 3(g)(h)。从图 3可以看出:密钥集C1C2解密不出Lena、Cameraman原图像,而使用密钥集C0可成功解密出原图像。实验结果说明,BDCH算法密钥敏感性较高,即使解密密钥和加密密钥差异极小,解密也会失败。

图 3 Lena、Cameraman图像密钥敏感性测试
Fig. 3 Key sensitivity test for Lena、Cameraman image ((a)Lena;(b)Cameraman;(c)decrypted image using C1; (d)decrypted image using C1;(e)decrypted image of C2; (f)decrypted image using C2;(g)decrypted image using C0;(h)decrypted image using C0)

为进一步测试算法的密钥敏感性,仅改变一位密钥,研究密钥改变前后加密图像的像素差别。采用密钥集C0C1使用BDCH算法分别对Lena、Cameraman图像加密,由密钥集C0C1加密所得密文图像计算NPCR值和UACI值,并与文献[15]计算结果对比,如表 2所示。

表 2 密钥改变一位的加密图像像素差别
Table 2 Pixel difference between images encrypted by two keys with one bit difference

下载CSV
/%
测试图像BDCH算法文献[15]
NPCRUACINPCRUACI
Lena99.666 833.557 099.668 933.556 1
Cameraman99.657 333.663 399.646 033.518 5

表 2可以看出,对于Cameraman图像,BDCH算法的NPCR、UACI值均高于文献[15];对于Lena图像,BDCH算法的UACI值比文献[15]稍大,而NPCR值比文献[15]稍小,说明BDCH算法的密钥敏感性较高,可有效保障图像安全。

3.2 密钥空间分析

文献[15]直接采用Salsa20生成哈希密钥矩阵,该矩阵可能为稀疏矩阵,这将会引起弱密钥问题。针对此弱密钥问题,BDCH算法采用ChaCha20与PWLCM映射联合生成哈希密钥矩阵的策略,避免出现稀疏哈希密钥矩阵,从而增大密钥空间,提高抵抗穷举攻击能力。为证明ChaCha20与PWLCM映射联合生成哈希密钥策略的有效性,设计下列实验进行验证。

假设基于Salsa20(或者ChaCha20)生成的稀疏哈希密钥矩阵为A,矩阵A与PWLCM映射联合生成哈希密钥矩阵为B,矩阵B显然为非稀疏矩阵,解密矩阵为C

$\begin{array}{l} A = \left[ {\begin{array}{*{20}{c}} 0&0&0&0&0&0&0&0\\ 0&0&{12}&0&0&0&0&0\\ 0&0&0&{20}&0&0&{76}&0\\ 0&2&0&0&0&0&0&0\\ 0&0&0&{25}&0&0&0&0\\ 0&0&0&0&0&0&0&0\\ 0&{34}&0&0&{45}&0&0&0\\ 0&0&0&0&0&0&0&{64} \end{array}} \right]\\ B = \left[ {\begin{array}{*{20}{c}} {143}&{216}&{91}&{31}&{177}&{149}&{50}&{58}\\ {218}&{93}&{255}&{111}&{149}&{180}&{105}&{205}\\ {123}&{65}&{26}&{255}&{209}&{102}&{166}&{81}\\ {99}&{182}&{123}&{152}&{185}&{97}&{58}&{222}\\ {215}&{1118}&{135}&{255}&{107}&1&{243}&5\\ {20}&{160}&{119}&{144}&{11}&3&{203}&{178}\\ {174}&{217}&{162}&{182}&{241}&{213}&{245}&{215}\\ {142}&{168}&{178}&{205}&{175}&{134}&{121}&{121} \end{array}} \right]\\ C = \left[ {\begin{array}{*{20}{c}} 0&0&0&0&0&0&0&0\\ 0&0&0&0&0&0&0&0\\ 0&0&0&5&0&0&0&0\\ 0&0&0&0&0&0&0&0\\ 0&0&0&0&0&7&0&0\\ 0&0&3&0&0&0&0&0\\ 0&0&0&0&0&0&0&0 \end{array}} \right] \end{array}$

矩阵AB通过BDCH算法分别对Lena图像进行加密,然后采用矩阵C解密,其加密图像如图 4(a)(c)所示,解密图像如图 4(b)(d)所示。

图 4 弱密钥验证加解密图
Fig. 4 Encryption and decryption images for weak keys test ((a)encrypted image using matrix A;(b)decrypted image using matrix C;(c)encrypted image using matrix B; (d)decrypted image using matrix C)

图 4的实验结果可见:稀疏哈希密钥矩阵A的密文图像通过稀疏矩阵C解密后,其图像轮廓依稀可见(图 4(b)),而哈希密钥矩阵B的密文图像通过稀疏矩阵C解密后,看不出任何图像轮廓(图 4(d)),完全掩盖了明文图像信息,说明本文ChaCha20与PWLCM映射联合生成哈希密钥矩阵的策略可有效解决文献[15]中的弱密钥问题。

密钥空间指的是加/解密密钥的取值空间。在初始密钥[k1k2k512,x0,l0]中,l0用于明文图像预处理阶段,因此只分析[k1k2k512,x0]的取值空间,k1k2k512为512 bit二进制数,x0为双精度浮点型,且受计算机表示精度的影响,取值范围为x0∈(0,1)。由密钥敏感性实验可知,k1k2k512改变一位,产生的加密矩阵完全不同,因此k1k2k512的密钥组合有2512种;当x0变化10-16时解密失败,故x0的敏感度至少为10-16。每个密钥的密钥空间等于其取值范围与其敏感度的比值,则总的密钥空间为所有独立密钥空间的乘积,因此在本算法中,总的密钥空间V0≥2512×(1/10-16)=2512×1016。对于大小为M×N的图像,用8 bit表示一个像素,不同图像个数最多为(28)MN=28MN,则算法真正的密钥空间V=min(V0,28MN)。因此,要使BDCH算法总密钥空间达到2512×1016,必须满足远大于2512×1016,即MN之乘积应远大于70。在实际应用中,医疗图像、像片、卫星图像等比128×128像素的尺寸大得多,因此本文提出的BDCH算法的密钥空间至少为2512×1016,远大于文献[15]的密钥空间(2195)[16],可有效抵抗穷举攻击。

3.3 信息熵、均方差和峰值信噪比分析

信息熵是衡量图像加密算法随机性的重要指标之一,均方差用来估计算法可靠性,峰值信噪比衡量密文图像质量[15]。一般来说,8 bit二进制表示的灰度图像,其信息熵理论值应该等于8;均方差越大、峰值信噪比越低,意味着密文图像质量越差。为了研究BDCH算法抵御熵攻击性能及密文图像质量,本文选取Lena、Cameraman、Peppers、Baboon、Elaine 5幅图像,采用BDCH算法对其加密,计算加密图像信息熵(Entropy)、均方差(MSE)和峰值信噪比(PSNR),并与文献[8, 15]结果比较,3种算法计算结果如表 3所示。

表 3 3种算法密文图像的信息熵、均方差和峰值信噪比
Table 3 Information entropy 、MSE and PSNR of cipher-image with three schemes

下载CSV
测试图像 BDCH算法文献[15] 文献[8]Entropy
EntropyMSEPSNR/dBEntropyMSEPSNR/dB
Lena7.997 59 1328.525 37.997 99 0308.574 0
Cameraman7.997 49 4138.325 17.997 1939 28.403 1
Peppers7.999 49 1098.536 07.999 37.999 3
Baboon7.999 49 0628.558 57.999 37.999 3
Elaine7.999 87 6529.292 67.999 8

3.4 相邻像素相关性分析

降低或消除图像相邻像素间的关联性,可避免攻击者利用相关性恢复原图像,因而安全性较高的加密算法产生的密文图像,其相邻像素间的关联性应该非常低。为进一步研究BDCH算法抵御统计攻击性能,选用Lena、Baboon、Peppers 3幅图像,分析其明文/密文图像相邻像素相关性,并与文献[8, 15]进行对比。分别从3幅明/密文图像中,随机选取2 000对像素点,计算它们水平、垂直、对角方向相邻像素间的相关系数[6]表 4为文献[8, 15]及BDCH 3种算法的明/密文图像相邻像素相关系数对比结果,图 5为Lena明文图像及BDCH算法密文图像在水平、垂直、对角方向上相邻像素分布图,其中图 5(a)(c)为明文图像和密文图像分别在水平、垂直、对角方向上相邻像素分布。

表 4 3种算法明/密文图像相邻像素相关系数
Table 4 Correlation coefficients between two adjacent pixels in plain/cipher images with three algorithms

下载CSV
测试图像算法水平方向垂直方向对角线方向
Lena 明文0.922 40.910 40.925 2
BDCH0.000 997 5-0.000 825 90.000 138 2
文献[8]b-0.000 989 20.000 948-0.000 061 3
文献[15]a0.000 821 30.000 842 30.000 508 3
Baboon明文0.904 60.936 00.915 4
BDCH0.000 347 9-0.000 139 90.000 197 2
文献[8]a-0.000 105 6-0.000 496 60.000 084 48
文献[15]b0.000 336 30.000 106 70.000 465 8
Peppers 明文0.931 10.928 50.899 3
BDCH0.000 747 85-0.000 822 170.000 825
文献[8]a-0.000 261 42-0.000 094 81-0.000 3
文献[15]b0.000 346 7-0.000 754 3-0.000 632 1
注:a为原文献结果,b为文献算法运算结果(即本文作者根据文献算法编程计算而得)。

表 4可知,3幅明文图像相邻像素之间均存在着较大的相关性,3种算法的密文图像相邻像素之间相关性远小于明文图像,BDCH算法密文图像相邻像素相关系数的绝对值与文献[8, 15]基本处于相同的数量级,说明同步置乱扩散及两轮分块扩散策略可有效降低图像像素相邻像素相关性。从图 5可以看出,明文图像在3个方向上的相邻像素几乎分布在一条直线上,而BDCH算法的密文图像在3个方向上的相邻像素杂乱无章均匀分布于整个像素空间,有效隐藏明文图像像素统计信息,表明BDCH算法具有较强的抵抗统计分析能力。

图 5 Lena明文图像及其密文图像在水平、垂直和对角方向上的相邻像素分布
Fig. 5 Distribution of adjacent pixels in horizontal,vertical and diagonal directions in plain/cipher images of Lenaimage ((a)horizontal;(b)vertital;(c)diagonal)

3.5 抗恶意攻击分析

图像传输过程中,由于网络的开放性,各种攻击无处不在,因此鲁棒的加密算法应该在图像被攻击之后能够恢复原始图像信息。为研究BDCH算法抗恶意攻击能力,选取Lena为测试图像,分别采用剪切图中任意50×50像素大小方块和在图中添加5%椒盐噪声这两种方式,对BDCH加密图像进行攻击,并用BDCH解密算法恢复,结果如图 6所示。

图 6 裁剪和噪声攻击分析
Fig. 6 Data loss and noise attacks analysis((a) ciper image with data loss; (b) salt & pepper noise; (c) decrypted image of (a); (d) decrypted image of (b))

图 6可以看出,密文图像在受到图像裁剪攻击和噪声攻击后,解密出的图像虽然有一些噪声颗粒影响,但仍能较好反映原始图像信息内容,说明BDCH加密算法对裁剪、噪声恶意攻击具有较强的鲁棒性。

3.6 彩色图像加密

为验证BDCH算法在彩色图像上的加密效果,选取24 bit深度彩色图像Lena为测试图像,采用BDCH算法分别加密R、G、B 3个颜色分量,得到3个颜色分量的加密图像。图 7(a)(c)分别为明文图像和密文图像Red、Green、Blue 3个颜色分量直方图,从图 7可以看出,明文图像统计信息清晰可见,而密文图像像素点均匀分布,完全隐藏了明文信息。

图 7 彩色图像RGB明文、密文图像及其直方图
Fig. 7 Plain images,encryption images with BDCH algorithmand their corresponding histograms for RGB components of color images ((a)Red;(b)Green;(c)Blue)

BDCH算法与文献[8, 11-13, 15]在Lena彩色图像R、G、B 3个颜色分量的加密结果如表 5所示。从表 5可以看出,BDCH算法相对于其他5种算法取得了较好的加密效果,说明BDCH算法同样适合彩色图像加密。

表 5 6种算法在Lena彩色图像RGB通道上的加密结果
Table 5 Results of RGB components encrypted with six algorithms on Lena image

下载CSV
算法NPCR/%UACI/% Entropy
RGBRGB
BDCH99.630 799.627 799.655 233.594 233.412533.602 47.997 5
文献[8]b99.609 599.613 199.614 833.436 933.383 933.436 77.997 2
文献[11]a99.639 999.600 299.577 333.591 633.501 033.485 37.997 3
文献[12]a99.612 499.613 499.619 233.443 833.523 233.501 07.997 4
文献[13]a99.633 899.603 399.609 433.429 433.366 933.530 47.989 9
文献[15]b99.619 599.609 499.603 333.536 933.549 233.524 37.997 6
注:a为原文献结果,b为文献算法经本文运算结果。

3.7 加密时间分析

除加密安全性指标外,加密时间也是衡量加密算法的重要指标。选用大小为512×512像素的Lena为测试图像,在Intel(R)core(TM)i5-3470台式计算机(3.20 GHzCPU、4 GBRAM)上使用MATLAB R2010b仿真平台,比较文献[8, 15]和BDCH算法图像加密时间,结果如表 6所示。

表 6 3种算法加密时间
Table 6 Comparison of encryption time of three algorithms

下载CSV
文献[8]文献[15]BDCH
加密时间/s1.400.254 80.282 1

表 6可以看出,BDCH算法加密时间远小于文献[8],高于文献[15] 的0.027 3 s,其原因在于:相对于文献[15],虽然BDCH算法解决了弱密钥问题,但由于采用同步置乱扩散加密方式,其算法复杂度稍高于文献[15]。

3.8 存储代价分析

BDCH算法要求待加密图像的宽和高应为8的整数倍,对宽和高非8整数倍的图像须进行整形或填充操作使其变成方形图像,这将带来额外的存储消耗。设宽和高非8整数倍的图像大小为M×N,若将其填充为S×S的图像,其中S=min{S|S≥「 $\sqrt{M\times N}$˥且mod(S,8)=0},则因进行填充操作产生的额外存储消耗增长率(%)可通过公式δ=(S2MN)/MN×100%计算而得,取值范围为 [「 $\sqrt{M\times N}$˥,「 $\sqrt{M\times N}$˥+7],可以看出,随着图像增大,额外存储消耗随之减小。例如大小为1 025×513像素的输入图像,将其填充为728×728像素的图像,额外存储仅增长0.79%。因此,本文算法的预处理阶段产生的额外存储代价很小,完全在可接受的范围内。

4 结 论

本文提出一种基于ChaCha20的分块扩散自适应图像加密算法BDCH,该算法利用哈希函数对不同输入只输出唯一结果,及计算不可逆等特性,产生哈希密钥矩阵进行图像分块扩散加密。BDCH算法利用外部密钥通过ChaCha20产生的初始哈希矩阵,与分段线性混沌映射PWLCM产生的均匀混沌序列,联合生成非稀疏哈希密钥矩阵,解决了初始稀疏哈希矩阵的弱密钥问题;同步置乱扩散阶段,通过Arnold反向映射,将像素等概率从随机位置映射到顺序位置,提高置乱随机性,同步进行扩散与置乱可避免同像素图像攻击,减少遍历次数。两轮分块扩散阶段,利用哈希密钥矩阵对同步置乱扩散产生的图像实施两轮分块扩散,成块地将像素之间的影响非线性地扩散到整幅图像中。另外,根据明文图像信息对哈希密钥矩阵、Arnold映射控制参数和PWLCM映射赋初值,增强BDCH加密算法的自适应性、密钥敏感性。

实验结果及分析表明,本文BDCH加密算法密钥空间大,密钥敏感性高,密文图像相邻像素相关性小、像素分布均匀,可有效抵抗穷举、已知/选择明文、差分及统计分析攻击,适合加密各种类型得彩色及灰度图像,加密效率高,具有较高的安全性和潜在应用价值。

参考文献

  • [1] Fridrich J. Symmetric ciphers based on two-dimensional chaotic maps[J]. International Journal of Bifurcation and Chaos, 1998 ,8 (6) : 1259 –1284. [DOI:10.1142/S0218127498000978]
  • [2] Pisarchik A N, Zanin M. Image encryption with chaotically coupled chaotic maps[J]. Physica D: Nonlinear Phenomena, 2008 ,237 (20) : 2638 –2648. [DOI:10.1016/j.physd.2008.03.049]
  • [3] Patidar V, Pareek N K, Sud K K. A new substitution-diffusion based image cipher using chaotic standard and logistic maps[J]. Communications in Nonlinear Science and Numerical Simulation, 2009 ,14 (7) : 3056 –3075. [DOI:10.1016/j.cnsns.2008.11.005]
  • [4] Wang Y, Wong K W, Liao X F, et al. A chaos-based image encryption algorithm with variable control parameters[J]. Chaos, Solitons& Fractals, 2009 ,41 (4) : 1773 –1783. [DOI:10.1016/j.chaos.2008.07.031]
  • [5] Huang X L, Ye G D. An efficient self-adaptive model for chaotic image encryption algorithm[J]. Communications in Nonlinear Science and Numerical Simulation, 2014 ,19 (12) : 4094 –4104. [DOI:10.1016/j.cnsns.2014.04.012]
  • [6] Zhang W, Wong K W, Yu H, et al. An image encryption scheme using reverse 2-dimensional chaotic map and dependent diffusion[J]. Communications in Nonlinear Science and Numerical Simulation, 2013 ,18 (8) : 2066 –2080. [DOI:10.1016/j.cnsns.2012.12.012]
  • [7] Zhang Y S, Xiao D. An image encryption scheme based on rotation matrix bit-level permutation and block diffusion[J]. Communications in Nonlinear Science and Numerical Simulation, 2014 ,19 (1) : 74 –82. [DOI:10.1016/j.cnsns.2013.06.031]
  • [8] Xu Y, Zhang S W. Encryption algorithm of image blocking and double adaptive diffusion with Arnold mapping[J]. Journal of Image and Graphics, 2015 ,20 (6) : 740 –748. [ 徐亚, 张绍武. 基于Arnold映射的分块双层自适应扩散图像加密算法[J]. 中国图象图形学报, 2015 ,20 (6) : 740 –748.] [DOI:10.11834/jig.20150602]
  • [9] Arroyo D, Li S J, Amigó J M, et al. Comment on "Image encryption with chaotically coupled chaotic maps"[J]. Physica D: Nonlinear Phenomena, 2010 ,239 (12) : 1002 –1006. [DOI:10.1016/j.physd.2010.02.010]
  • [10] RhoumaR, Solak E, Belghith S. Cryptanalysis of a new substitution-diffusion based image cipher[J]. Communications in Nonlinear Science and Numerical Simulation, 2010 ,15 (7) : 1887 –1892. [DOI:10.1016/j.cnsns.2009.07.007]
  • [11] Guesmi R, Farah M A B, Kachouri A, et al. Hash key-based image encryption using crossover operator and chaos[J]. Multimedia Tools and Applications, 2015 : 1 –17. [DOI:10.1007/s11042-015-2501-0]
  • [12] Wang X Y, Zhang H L. A color image encryption with heterogeneous bit-permutation and correlated chaos[J]. Optics Communications, 2015 ,342 : 51 –60. [DOI:10.1016/j.optcom.2014.12.043]
  • [13] Dong C E. Asymmetric color image encryption scheme using discrete-time map and hash value[J]. Optik-International Journal for Light and Electron Optics, 2015 ,126 (20) : 2571 –2575. [DOI:10.1016/j.ijleo.2015.06.035]
  • [14] Yuen C H, Wong K W. A chaos-based joint image compression and encryption scheme using DCT and SHA-1[J]. Applied Soft Computing, 2011 ,11 (8) : 5092 –5098. [DOI:10.1016/j.asoc.2011.05.050]
  • [15] Norouzi B, Seyedzadeh S M, Mirzakuchaki S, et al. A novel image encryption based on hash function with only two-round diffusion process[J]. Multimedia systems, 2014 ,20 (1) : 45 –64. [DOI:10.1007/s00530-013-0314-4]
  • [16] Peinado A, García A O. Reducing the key space of an image encryption scheme based on two-round diffusion process[M]//Herreroá, BaruqueB, SedanoJ, et al. International Joint Conference. Burgo, Spain: Springer International Publishing, 2015: 447-453. [DOI: 10.1007/978-3-319-19713-5_38]
  • [17] Bernstein D J. ChaCha, a variant of Salsa20[EB/OL]. 2008-01-20[2015-10-24].http://cr.yp.to/papers.html#chacha.
  • [18] Zhou Y C, Bao L, Chen C L P. A new 1D chaotic system for image encryption[J]. Signal Processing, 2014 ,97 : 172 –182. [DOI:10.1016/j.sigpro.2013.10.034]
  • [19] Li S J, Li Q, Li W M, et al. Statistical properties of digital piecewise linear chaotic maps and their roles in cryptography and pseudo-random coding[C]//Proceedings of the 8th IMA International Conference. Berlin: Springer, 2001: 205-221.[DOI: 10.1007/3-540-45325-3_19]