0引言随着互联网、计算机等技术迅速发展,手机、电脑等已进入人们的日常生活,大量私密信息通过这些电子设备传输、存储,因而信息安全问题越来越重要。图像因其直观、形象的特点,成为众多信息形式中必不可少的一种,其安全问题的重要性不言而喻。图像数据具有尺寸大、冗余高的特性,采用诸如DES(data encryption standard)、AES(advanced encryption standard)、IDEA(international data encryption algorithm)等传统加密算法加密图像数据,效率低、安全性差[1]。针对这一情况,研究者提出了许多新的数字图像加密算法,这些加密算法一般可归类为:基于像素置换的图像加密算法、基于混沌系统的图像加密算法、基于位平面的图像加密算法。基于像素置换的图像加密算法[1-3]通过对像素矩阵进行有限次置换操作,改变像素位置,破坏相邻像素相关性,生成类似噪声或纹理的、无意义的密文图像,典型的置换加密方法主要包括:基于仿射变换的图像加密算法[1]、基于Arnold变换的图像加密算法[2]、基于魔方变换的图像加密算法[3]等。采用像素置换方法加密图像操作简单、便于计算,但由于未破坏原图像的统计特性,因而,仅采用像素置换方法进行图像加密,其抵抗统计攻击能力弱、安全性不高。基于混沌系统的图像加密算法[4-12]利用混沌序列良好的遍历性、伪随机性、初始条件敏感性等性质,实现图像加密的扩散和混淆操作。常用的基于混沌系统的加密方法主要包括:基于Logistic映射的图像加密算法[4-5]、基于Tent映射的图像加密算法[6-7]、基于Henon映射的图像加密算法[8]等。这类方法密钥空间大,密钥流自适应性强,安全性高。但随着混沌理论的深入研究,人们发现一些低维混沌系统存在结构简单、周期窗口等问题,意味着这些混沌系统产生的伪随机序列抗攻击能力弱、易被破解,无法保证加密算法的安全性。针对此问题,研究者提出了一些新的混沌系统,如文献[9-10]采用混沌范围宽、分岔图中无窗口的分段线性混沌映射(PWLCM),替代动态特性弱、混沌范围窄的Logistic映射;文献[11]将两种不同的已有1维混沌映射作为种子映射构造混沌范围宽、混沌行为好的非线性新混沌映射;文献[12]采用超混沌系统等。这些混沌系统产生的伪随机序列随机性好、范围广,能够确保加密算法的安全性。基于位平面的图像加密算法[13-15]将像素分解到比特级,在位平面上进行置乱和扩散操作。典型的代表性方法包括:基于矩阵变换的位平面加密方法[13]、基于位平面信息量分布的选择性加密方法[14]、位级与像素级加密相结合的方法[15]。基于矩阵变换的位平面加密方法[13]将分解到位平面的图像看作一个3维矩阵,通过3维矩阵变换操作完成位平面内和位平面间的置乱,实现图像加密。该算法加密性能好,但不适用于大尺寸图像加密。基于位平面信息量分布的选择性加密方法[14]针对图像高位平面包含大量图像信息、低位平面几乎不包含图像信息的位平面分布特点,重点加密高位平面,不加密或简单加密低位平面。该算法计算量小,加密速度快,但安全性能一般。位级与像素级加密相结合的方法[15]在位级和像素级同时加密图像,以提高算法加密效率和加密性能。位平面加密操作可增强算法对明文微小改变的敏感性,增加算法抵抗差分攻击能力。且位平面上的置换操作可同时改变像素比特位置和像素值,从而降低加密算法计算量,多数位平面加密算法仅一轮加密就可达到较理想的加密效果。基于上述分析,针对基于位平面信息量分布的选择性加密算法安全性不高;像素置换加密算法不能有效抵抗统计攻击;现有位级与像素级相结合加密算法多采用顺序扩散方式、位级加密阶段仅执行扩散操作或置换操作、缺少块间扩散导致算法明文敏感性不高和抗差分攻击能力弱等问题。本文提出一种基于位级同步置乱扩散和像素级环形扩散的图像加密算法(BSPDPAD),并通过图像仿真实验验证算法加密性能。1位平面特性设一幅$N \times N$图像灰度级为255,通过二进制位平面分解(BBD)产生8个位平面$\left[ {{\mathit{\boldsymbol{b}}_8}, {\mathit{\boldsymbol{b}}_7}, \cdots {\mathit{\boldsymbol{b}}_i}, \cdots , {\mathit{\boldsymbol{b}}_1}} \right]$,${{\mathit{\boldsymbol{b}}_i}}$为图像所有像素第$i$比特的集合,表示为 1 ${\mathit{\boldsymbol{b}}_i} = \left[ {\begin{array}{*{20}{c}}{b_{11}^i}&{b_{12}^i}& \cdots &{b_{1N}^i}\\{b_{21}^i}&{b_{22}^i}& \cdots &{b_{2N}^i}\\ \vdots&\vdots &{}& \vdots \\{b_{N1}^i}&{b_{N2}^i}& \cdots &{b_{NN}^i}\end{array}} \right]$ ${{\mathit{\boldsymbol{b}}_8}}$是最高位平面,${{\mathit{\boldsymbol{b}}_1}}$是最低位平面。8个位平面所包含的信息量如表 1所示[15]。从表 1可以看出,高4位平面包含了94.13%的信息量,而低位平面仅包含不到6%的信息量。鉴于高4位平面包含了大量图像信息,加密算法应考虑重点对高4位平面进行加密。 表1 不同位平面所包含的信息量[15] 位平面 信息量/% 8 50.20 7 25.10 6 12.55 5 6.28 4 3.14 3 1.57 2 0.78 1 0.39 Percentage of pixel information for different bitsTable 1Zhang等人[16]随机选取大量测试图像,统计图像相邻位平面中相同位置的比特值,发现大多数测试图像在第7位平面与第8位平面相同位置上,超过70%的位置存在比特值差异。也就是说,假设第7位平面上某一位置的比特值为0,那么第8位平面对应位置比特值等于1的可能性为70%,意味着如果攻击者获得了一个高位平面的比特值,那么就有可能恢复相邻高位平面70%以上的比特值。因此,图像加密时必须破坏高位平面相邻位平面间的相关性。2分段线性混沌映射分段线性混沌映射(PWLCM)由多个线性段组成,其表达式为 2 $\begin{array}{*{20}{c}}{{x_{n + 1}} = F\left( {{x_n},\eta } \right) = }\\{\left\{ \begin{array}{l}{x_n}/\eta \;\;\;\;\;\;\;\;\;\;\;\;\;0 {x_n} \eta \\\left( {{x_n} - \eta } \right)/\eta \;\;\;\;\;\eta \le {x_n} 0.5\\F\left( {1 - {x_n},\eta } \right)\;\;\;\;0.5 \le {x_n} 1\end{array} \right.}\end{array}$ 式中,$η$为控制因子,$x_{n}$为第$n$次迭代混沌值,在$x_{n}$∈(0, 1)、$η$∈(0, 0.5)条件下,系统进入混沌状态。鉴于Logistic映射混沌范围窄,产生的混沌序列不均匀,而PWLCM混沌范围宽,遍历性好,产生的混沌序列更均匀[17],本文选择PWLCM生成密钥流。3BSPDPAD算法及步骤BSPDPAD算法框图如图 1所示,该算法主要包括明文图像预处理、位级同步置乱扩散和像素级环形扩散3个过程。首先,迭代PWLCM混沌映射产生混沌序列,分为两组,其中一组用来对明文图像进行随机分块,构建若干个8×8大小的像素块,另一组混沌序列分解到位平面生成位级密钥流;然后,将各像素块分解到位平面,利用位级密钥流对高位平面进行同步置乱扩散、低位平面进行整体置乱,实现位平面上块内置乱扩散及块间扩散;其次,以中间密文图像像素和扰动初始密钥,并将扰动后的初始密钥作为PWLCM的初始值和控制参数,迭代产生新的混沌序列,利用该混沌序列对中间密文图像进行横向顺序扩散和纵向逆序扩散,完成图像加密。 图1 BSPDPAD算法方框图 The schematic diagram of BSPDPAD algorithmFig 1设明文图像为$M \times N$大小的灰度图像$\mathit{\boldsymbol{I}}$,算法加密步骤分别为明文图像预处理、位级同步置乱扩散、像素级环形扩散。3.1明文图像预处理加密过程中需要将图像划分为8×8的像素块。对于宽和高非8整数倍、大小为$M \times N$的输入图像,将其整形为$S \times S$大小的方形图像,使其满足$S = \min \left\{ {\mathit{\boldsymbol{A}}\left| {S \ge \left\lceil {\sqrt {M \times N} } \right\rceil } \right.\;{\rm{and}}\;{\rm{mod}}\left( {S, 8} \right) = 0} \right\}$,其中$\left\lceil x \right\rceil $表示对$x$向上取整,$\bmod \left( {S, 8} \right)$表示$S$对8取模,$\min \left\{ \mathit{\boldsymbol{A}} \right\}$表示求集合$\mathit{\boldsymbol{A}}$中最小值。与直接将宽和高扩展为8整数倍的方法相比,这种方法能够尽可能减少整形所需添加的像素数。图像整形及分块过程如下:1) 将2维明文图像$\mathit{\boldsymbol{I}}$按照光栅扫描顺序转换为1维向量$\mathit{\boldsymbol{P}}{\rm{ = }}\left\{ {{p_1}, {p_2}, \cdots , {p_{M \times N}}} \right\}$,若$M \times N \ne S \times S$,在P中添加随机数扩展其长度为$S \times S$。于是,图像一维向量$\mathit{\boldsymbol{P}}$变为$\mathit{\boldsymbol{P'}}{\rm{ = }}\left\{ {{p_1}, {p_2}, \cdots , {p_{M \times N}}, \cdots , {p_{S \times S}}} \right\}$。2) 设${x_1}$、${l_1}$为初始密钥,将明文图像像素作为扰动因子,扰动初始密钥,使PWLCM混沌系统产生的密钥流与明文相关,保证算法能够抵抗已知明文攻击和选择明文攻击,即 3 ${x_{11}} = \bmod \left( {{x_1} + \frac{{sum\left( \mathit{\boldsymbol{I}} \right)}}{{xor\left( \mathit{\boldsymbol{I}} \right) \times 256}},1} \right)$ 式中,$sun\left( \mathit{\boldsymbol{I}} \right)$表示对明文图像$\mathit{\boldsymbol{I}}$中像素求和,$xor\left( \mathit{\boldsymbol{I}} \right)$表示明文图像$\mathit{\boldsymbol{I}}$中像素互相异或。${\mathit{\boldsymbol{y}}_2} = \left\{ {{y_{2, 1}}, {y_{2, 2}}, \cdots , {y_{2, S \times S}}} \right\}$,将${x_{11}}$、${l_1}$作为初始值和控制参数,迭代式(2)${n_0} + 2 \times S \times S$次,舍弃前$n_0$项以避免暂态效应,生成两组长度为$S \times S$的混沌序列${\mathit{\boldsymbol{y}}_1} = \left\{ {{y_{1, 1}}, {y_{1, 2}}, \cdots , {y_{1, S \times S}}} \right\}$、${\mathit{\boldsymbol{y}}_2} = \left\{ {{y_{2, 1}}, {y_{2, 2}}, \cdots , {y_{2, S \times S}}} \right\}$。根据式(4)对两组混沌序列进行标准化处理,获得序列${\mathit{\boldsymbol{z}}_1} = \left\{ {{z_{1, 1}}, {z_{1, 2}}, \cdots , {z_{1, S \times S}}} \right\}$、${\mathit{\boldsymbol{z}}_2} = \left\{ {{z_{2, 1}}, {z_{2, 2}}, \cdots , {z_{2, S \times S}}} \right\}$。 4 $\begin{array}{l}{z_{k,i}} = floor\left( {\bmod \left( {{y_{k,i}} \times {{10}^{14}},256} \right)} \right)\\k = \left\{ {1,2,3,4} \right\};\;\;\;\;i = 1,2, \cdots ,S \times S\end{array}$ 式中,$floor\left( \psi \right)$表示对$\psi $下取整。3) 按升序对${z_1}$排序,得到索引序列$\mathit{\boldsymbol{T}}{\rm{ = }}\left\{ {{t_1}, {t_2}, \cdots , {t_{S \times S}}} \right\}$。将$\mathit{\boldsymbol{P'}}$划分为${S^2}/64$个小块,记作$\mathit{\boldsymbol{D}} = \left\{ {{d_1}, {d_2}, \cdots , {d_i}, \cdots , {d_{{s^2}/64}}} \right\}$,其中${\mathit{\boldsymbol{d}}_i}$表示为 5 $\begin{array}{*{20}{c}}{{\mathit{\boldsymbol{d}}_i} = \left\{ {\mathit{\boldsymbol{P'}}\left( {{t_{8 \times \left( {i - 1} \right) + 1}}} \right),\mathit{\boldsymbol{P'}}\left( {{t_{8 \times \left( {i - 1} \right) + 2}}} \right), \cdots ,} \right.}\\{\left. {\mathit{\boldsymbol{P'}}\left( {{t_{8 \times \left( {i - 1} \right) + 8}}} \right)} \right\}}\end{array}$ 3.2位级同步置乱扩散首先,对混沌序列进行位平面分解生成位级密钥流,并将各像素块分解到位平面。鉴于高4位平面包含94%以上的图像信息,可结合密钥流通过循环移位和异或操作重点加密高4位平面。鉴于低4位平面仅包含少量图像信息,可通过整体循环移位操作加密低4位平面。然后,通过参数传递实现块间扩散。具体实现步骤如下:1) 通过二进制位平面分解(BBD)将混沌序列分解到位平面,鉴于低4位位平面分布比高4位更均匀,取低4位位平面生成密钥流序列,按照4×64一组进行分组,分组后的密钥流序列记作$z' = \left\{ {{{z'}_1}, {{z'}_2}, \cdots , {{z'}_i}, \cdots , {{z'}_{{S^2}/64}}} \right\}$,${{{z'}_i}}$表示$4 \times 64$二进制密钥流。2) 通过BBD将各像素块分解到位平面,按照光栅扫描顺序将各个位平面变换为1维向量,按照高位到低位顺序构成$8 \times 64$大小二进制像素块,记作$\mathit{\boldsymbol{B}}{\rm{ = }}\left\{ {{\mathit{\boldsymbol{b}}_1}, {\mathit{\boldsymbol{b}}_{\rm{2}}}, \ldots , {\mathit{\boldsymbol{b}}_i}, \cdots , {\mathit{\boldsymbol{b}}_{{S^2}/64}}} \right\}$,${{\mathit{\boldsymbol{b}}_i}}$表示$8 \times 64$二进制像素块。3) 设加密后的二进制中间密文为$\mathit{\boldsymbol{C}} = \left\{ {{\mathit{\boldsymbol{c}}_1}, {\mathit{\boldsymbol{c}}_2}, \cdots , {\mathit{\boldsymbol{c}}_i}, \cdots , {\mathit{\boldsymbol{c}}_{{S^2}/64}}} \right\}$,${{\mathit{\boldsymbol{c}}_i}}$表示$8 \times 64$二进制像素块。将第$i$个像素块的高4位整体循环左移${s_1}$位。$i = 1$时${s_1} = \bmod \left( {sum\left( \mathit{\boldsymbol{I}} \right), 256} \right)$;$i 1$时,${s_1} = \sum\limits_{k = 1}^{8 \times 64} {{c_{i - 1, k}}} $。4) 扩散加密第$i$个像素块的高4位,即 6 $\begin{array}{*{20}{c}}{{c_{i,1}} = {b_{i,1}} \oplus {b_{i,4 \times 64 + 1}} \oplus {{z'}_{i,1}} \oplus {\tau _i}}\\{i = 1,2, \cdots ,{S^2}/64}\end{array}$ 7 $\begin{array}{*{20}{c}}{{c_{i,j}} = {b_{i,j}} \oplus {b_{i,4 \times 64 + j}} \oplus {{z'}_{i,j}} \oplus {c_{i,j - 1}}}\\{i = 1,2, \cdots ,{S^2}/64;j = 2,3, \cdots ,4 \times 64}\end{array}$ 式中,${b_{i, j}}$表示第$i$个二进制明文像素块的第$j$位,${c_{i, j}}$表示第$i$个二进制中间密文块的第$j$位,${z'_{i, j}}$表示第$i$组密钥流的第$j$位,$ \oplus $表示异或操作。${\tau _i}$为传递参数,$i = 1$时,设${\tau _1} = 1$;$i 1$时,${\tau _i} = {c_{i - 1, 4 \times 64}}$,即前一个中间密文块高四位平面的最末位。5) 将第$i$个像素块低4位整体循环左移${s_2}$位。$i$=1时,${s_2} = \sum\limits_{k = 1}^{8 \times 64} {{c_{1, k}}} $;$i 1$时,${s_2} = \sum\limits_{k = 1}^{8 \times 64} {{c_{i - 1, k}}} $。6) 重复步骤3)-5),直至所有像素块完成加密。将二进制中间密文$\mathit{\boldsymbol{C}}$恢复成十进制形式,并转换成$S \times S$大小的中间密文图像$\mathit{\boldsymbol{C'}}$。3.3像素级环形扩散仅采用顺序扩散方法会导致加密算法对明文前端像素敏感性强,而对末尾处像素几乎不敏感,且易发生停止点现象。因此,BSPDPAD算法完成图像位级加密后,进行像素级环形扩散加密。像素级环形扩散加密阶段,结合密钥序列执行一次横向顺序扩散和一次纵向逆序扩散,如图 2所示。 图2 环形扩散顺序 The order of annular diffusion((a) horizontal sequential diffusion; (b) vertical reverse diffusion)Fig 21) 设${x_2}$、${l_2}$为初始密钥,将中间密文图像像素和作为扰动因子,扰动初始密钥后,即 8 ${x_{22}} = \bmod \left( {{x_2} + sum\left( {C'} \right)/256,1} \right)$ 将${x_{22}}$、${l_2}$作为初始值和控制参数,迭代式(2)${n_0} + 2 \times S \times S$次。舍弃前${n_0}$项以避免暂态效应,生成两组长度为$S \times S$的混沌序列${\mathit{\boldsymbol{y}}_3} = \left\{ {{y_{3, 1}}, {y_{3, 2}}, \cdots , {y_{3, S \times S}}} \right\}$、${\mathit{\boldsymbol{y}}_4} = \left\{ {{y_{4, 1}}, {y_{4, 2}}, \cdots , {y_{4, S \times S}}} \right\}$。根据式(4)对两组混沌序列进行标准化处理,获得密钥序列${\mathit{\boldsymbol{z}}_3} = \left\{ {{z_{3, 1}}, {z_{3, 2}}, \cdots , {z_{3, S \times S}}} \right\}$、${\mathit{\boldsymbol{z}}_4} = \left\{ {{z_{4, 1}}, {z_{4, 2}}, \cdots , {z_{4, S \times S}}} \right\}$。2) 按照图 2(a)顺序将中间密文图像$\mathit{\boldsymbol{C'}}$转换成1维向量$\mathit{\boldsymbol{H = }}\left\{ {{H_1}, {H_2}, \cdots , {H_i}, \cdots , {H_{S \times S}}} \right\}$,进行横向顺序扩散,即 9 ${{H'}_1} = {H_1} \oplus sum\left( H \right) \oplus {z_{3,1}}$ 10 $\begin{array}{*{20}{c}}{{{H'}_i} = {H_i} \oplus {{H'}_{i - 1}} \oplus {z_{3,i}}}\\{i = 2,3, \cdots ,S \times S}\end{array}$ 横向顺序扩散后的中间密文为 $\mathit{\boldsymbol{H' = }}\left\{ {{{H'}_1},{{H'}_2}, \cdots ,{{H'}_i}, \cdots ,{{H'}_{S \times S}}} \right\}$ 3) 将1维向量$\mathit{\boldsymbol{H'}}$变换成$S \times S$矩阵,按照图 2(b)顺序将该矩阵转换成1维向量$\mathit{\boldsymbol{V}} = \left\{ {{V_1}, {V_2}, \cdots , {V_i}, \cdots , {V_{S \times S}}} \right\}$,进行纵向逆序扩散,即 11 ${E_1} = {V_1} \oplus sum\left( V \right) \oplus {z_{4,1}}$ 12 $\begin{array}{*{20}{c}}{{E_i} = {V_i} \oplus {E_{i - 1}} \oplus {z_{4,i}}}\\{i = 2,3, \cdots ,S \times S}\end{array}$ 纵向逆序扩散后的密文为$\mathit{\boldsymbol{E}} = \left\{ {{E_1}, {E_2}, \cdots , {E_i}, \cdots , {E_{S \times S}}} \right\}$。4) 将1维向量$\mathit{\boldsymbol{E}}$转换成$S \times S$矩阵,即获得最终加密图像。3.4解密过程解密是加密的逆过程。4仿真结果与分析基于MATLAB R2013a平台,首先选取大小为256×256像素的Lena、Baboon、Couple、Peppers 4幅标准测试图像,进行加密仿真实验,然后在Lena彩色图像上进行加密仿真实验。设加密密钥$\left[ {{x_1}, {l_1}, {x_2}, {l_2}} \right]$=[0.012 3,0.123 4,0.234 5,0.023 456 789 012 345 6],按照BSPDPAD算法加密步骤对Lena、Baboon、Couple、Peppers测试图像进行加密。其密文图像及对应的明文图像如图 3所示。 图3 4幅测试图像及其对应密文图像 Plain images and encryption images of the 4 test images with BSPDPAD algorithm ((a) Lena; (b) Baboon; (c) Couple; (d) Peppers)Fig 34.1密钥空间分析密钥空间是指加密算法密钥的取值空间,每个密钥的密钥空间等于其取值范围与敏感度的比值,总密钥空间为各相互独立密钥空间的乘积。BSPDPAD算法的密钥包括两次PWLCM映射的控制参数和初始值$\left[ {{x_1}, {l_1}, {x_2}, {l_2}} \right]$,均为双精度浮点型数据。由敏感性实验可知${{x_1}, {l_1}, {x_2}, {l_2}}$的敏感度至少为10-16,因此,BSPDPAD算法的密钥空间${V_0} = {\left( {\frac{1}{{{{10}^{ - 16}}}}} \right)^2} \times {\left( {\frac{1}{2} \times \frac{1}{{{{10}^{ - 16}}}}} \right)^2} = 0.25 \times {10^{64}} 1.51 \times {2^{210}}$。对于一个有效的加密系统,其密钥空间应不小于2100才能有效抵抗穷举攻击[8]。显然,BSPDPAD加密算法具有足够大的密钥空间,能够有效抵抗穷举攻击。4.2直方图分析直方图是关于图像像素分布的函数,反映了各像素出现的频率。Lena、Baboon、Couple、Peppers 4幅测试图像的直方图及其BSPDPAD算法密文图像直方图如图 4所示,从图 4可以看出,图像加密前后直方图差别较大,密文图像直方图趋近于均匀分布,意味着密文图像各像素出现的频率非常接近,能够较好地掩盖图像像素分布规律,保证算法有效抵抗统计攻击和已知密文攻击。 图4 4幅测试图像直方图及其对应密文图像直方图 Plain images's histograms and encryption images's histograms for 4 test images ((a) Lena; (b) Baboon; (c) Couple; (d) Peppers)Fig 44.3相邻像素相关性分析明文图像相邻像素间具有较强的相关性,降低或消除这一相关性,可有效避免攻击者利用相关性恢复明文图像,因此一个理想的加密算法应保证相邻像素相关性足够低,以抵抗统计攻击。为进一步分析BSPDPAD算法抵抗统计攻击性能,本文选用Lena、Baboon、Couple、Peppers 4幅测试图像,分析其明/密文图像相邻像素相关性。鉴于BSPDPAD算法属于位平面加密算法范畴,选取目前性能较优的位平面加密算法[18]、位级加密与像素级加密相结合的加密算法[19]、以及基于分块的位级加密与像素级加密相结合的图像加密算法[15]进行对比分析。分别从4幅明/密文图像中随机选取2 000对像素点,采用文献[18]方法分别计算它们水平、垂直、对角线方向相邻像素间的相关性系数,BSPDPAD算法和文献[15, 18-19] 4种算法的明/密文图像相邻像素相关性系数对比结果如表 2所示,Lena明文图像及其BSPDPAD算法密文图像在水平、垂直、对角线方向上相邻像素分布图如图 5所示。 表2 4种算法的明/密文图像相邻像素相关性系数 测试图像 算法 水平方向 垂直方向 对角线方向 Lena明文 0.971 1 0.934 4 0.910 9 BSPDPAD -0.000 4 -0.000 7 0.004 7 文献[15] -0.001 8 -0.022 1 0.002 8 文献[18] -0.023 0 0.001 9 -0.003 4 文献[19] 0.001 8 0.001 1 -0.001 2 Baboon明文 0.790 6 0.865 8 0.749 5 BSPDPAD -0.000 9 0.001 3 0.007 4 文献[15] - - - 文献[18] 0.013 2 0.001 0 0.007 2 文献[19] -0.054 0 0.006 0 0.005 7 Couple明文 0.949 5 0.940 7 0.901 4 BSPDPAD 0.001 8 -0.006 7 0.003 5 文献[15] - - - 文献[18] -0.003 3 -0.001 3 -0.014 5 文献[19] 0.003 2 -0.036 8 0.016 0 Peppers明文 0.979 6 0.974 5 0.955 4 BSPDPAD 0.000 6 -0.005 5 0.000 5 文献[15] - - - 文献[18] 0.003 7 -0.016 1 -0.008 4 文献[19] 0.012 2 0.007 2 -0.005 8 Correlation coefficients between two adjacent pixels in plain/cipher images with four algorithmsTable 2 “-”表示该文献原文未给出此性能值。 图5 Lena明文图像及其BSPDPAD算法密文图像在水平、垂直、对角线方向上的相邻像素分布 Distribution of adjacent pixels in horizontal, vertical and diagonal directions in Lena's plain image and its cipher image encrypted with BSPDPAD algorithm ((a)horizontal; (b)vertical; (c)diagonal)Fig 5由表 2可知,4幅明文图像相邻像素间均存在较强相关性,4种算法的密文图像相邻像素相关性远小于明文图像,BSPDPAD算法的密文图像相邻像素相关性系数绝对值比文献[15, 18-19]算法约小12个数量级。这些结果说明,随机分块及位级同步置乱扩散策略能够有效降低相邻像素相关性,保证算法有效抵抗统计攻击,且效果略优于文献[15, 18-19]算法。由图 5可知,明文图像在水平、垂直、对角线方向上的相邻像素几乎分布在一条直线上,而BSPDPAD算法的密文图像在3个方向上的相邻像素均匀分布于整个像素空间,呈杂乱无章状态,能够有效隐藏明文图像像素统计信息。因此,BSPDPAD算法具有较强的抵抗统计分析能力。4.4信息熵分析信息论中,信息熵是衡量随机性的重要指标之一。对于256灰度级的密文图像来说,理想信息熵值为8,表明信息是均匀分布的[19]。因此,密文图像的信息熵应尽可能接近8。为了研究BSPDPAD算法抵抗熵攻击性能,选用Lena、Baboon、Couple、Peppers 4幅测试图像,采用BSPDPAD算法对它们进行加密,计算明/密文图像信息熵,并与文献[18-19]进行比较,结果如表 3所示。显然,BSPDPAD算法的密文图像信息熵非常接近于理论值8,说明BSPDPAD算法具有较强的抵抗熵攻击能力。 表3 3种算法密文图像信息熵 测试图像 BSPDPAD算法 文献[18] 文献[19] Lena 7.997 7 7.997 4 7.999 4 Baboon 7.998 3 - - Couple 7.999 2 7.997 0 - Pepper 7.997 2 7.997 3 - Information entropy with three algorithmsTable 3 “-”表示该文献原文未给出此性能值。4.5密钥敏感性分析为保证加密算法的安全性,一个好的加密系统应具有良好的密钥敏感性,包括加密和解密两个方面。为了分析BSPDPAD算法的密钥敏感性,选用Lena图像进行加解密实验,实验结果如图 6、图 7所示。图 6(a)为明文图像,图 6(b)(c)分别为使用原始密钥[0.012 3,0.123 4,0.234 5,0.023 456 789 012 345 6]和修改密钥[0.012 3,0.123 4,0.234 5,0.023 456 789 012 345 7]加密得到的密文图像,图 6(d)为两密文图像差值。显然,当密钥仅发生10-16微小改变,将获得完全不同的密文图像。图 7(a)为明文图像,图 7(b)为原始密钥加密的密文图像,图 7(c)(d)分别为使用修改密钥和原始密钥解密得到的解密图像。由图 7可知,当密钥发生仅10-16微小改变时,也无法正确解密。因此,BSPDPAD算法具有良好的密钥敏感性。 图6 Lena图像上BSPDPAD算法加密阶段密钥敏感性实验结果 Key sensitivity test for Lena encryption image with BSPDPAD algorithm ((a) The Lena image; (b) the encrypted image using the original key; (c) the encrypted image using the modified key; (d) the difference between (b) and (c))Fig 6 图7 Lena图像上BSPDPAD算法解密阶段密钥敏感性实验 Key sensitivity test for Lena decryption image with BSPDPAD algorithm((a) the Lena image; (b) the encrypted image using the original key; (c) the decrypted image with an incorrect security key; (d) the decrypted image with the correct security key)Fig 74.6抗差分攻击分析差分攻击是攻击者常用、有效的攻击方式。为抵抗差分攻击,一个安全的加密系统应确保明文中发生微小变化时,会产生完全不同的密文。像素变化率(NPCR)和归一化平均变化强度(UACI)是衡量明文像素微小变化对密文影响的常用指标[18],本文采用这两个指标分析BSPDPAD算法的明文敏感性,并与文献[15, 18-19]比较。选取Lena、Baboon、Couple、Peppers 4幅测试图像,分别将4幅图像(100, 100)点处的像素值加1,生成一组新的测试图像,对两组测试图像采用相同的密钥进行加密,生成两组对应的密文图像,计算其NPCR值和UACI值,其计算结果如表 4所示。 表4 4种算法的NPCR与UACI值 测试图像NPCR/% UACI/% BSPDPAD 文献[15] 文献[18] 文献[19] BSPDPAD 文献[15] 文献[18] 文献[19] Lena 99.658 2 99.580 4 99.620 0 99.62 33.572 2 33.534 8 33.510 0 33.436 5 Baboon 99.620 7 99.591 4 - - 33.518 6 33.464 9 - - Couple 99.641 4 - 99.616 6 - 33.539 2 - 33.510 0 - Peppeer 99.617 0 - - - 33.569 0 - - - The NPCR and UACI values with four algorithmsTable 4 “-”表示该文献原文未给出此性能值。由表 4可以看出,BSPDPAD算法的NPCR值和UACI值均高于文献[15, 18-19],表明本文算法能够提高算法明文敏感性。对于加密算法来说,明文敏感性越强,算法抗差分攻击能力就越强。因此,BSPDPAD算法所用块内块间同步扩散及环形扩散策略能够有效提高明文敏感性、扩散均匀性,较好地抵抗差分攻击,其抗差分攻击能力优于文献[15, 18-19]所提算法。4.7彩色图像加密为验证BSPDPAD算法在彩色图像上的加密效果,选取24比特深度彩色图像Lena为测试图像,采用BSPDPAD算法分别加密R、G、B3个颜色分量。鉴于文献[15, 18-19]未给出彩色图像加密结果,选取目前彩色图像加密效果较好的二种算法(即文献[9-10]所提算法)进行对比分析。文献[9]采用基于位平面信息量分布的多相位级置换方法实现图像加密,文献[10]采用像素级同步置乱扩散和哈希密钥矩阵非线性分块扩散实现图像加密。Lena彩色图像上,BSPDPAD算法测试结果如图 8、表 5所示,3种算法的NPCR值、UACI值和信息熵如表 6所示。 图8 Lena明文/BSPDPAD密文图像及其RGB颜色通道直方图 Plain image, encryption image with BSPDPAD algorithm and their corresponding histograms for RGB components on the Lena image((a) the Lena image; (b)encryption image with BSPDPAD algorithm; (c)the histograms of R channel of Lena; (d) the histograms of G channel of Lena; (e) the histograms of B channel of Lena)Fig 8 表5 Lena彩色图像明文和BSPDPAD密文图像各颜色通道相邻像素相关性系数 明文图像 密文图像 R通道水平方向 0.967 8 0.007 1 垂直方向 0.944 3 -0.004 4 对角线方向 0.917 7 -0.006 9 G通道水平方向 0.971 8 0.003 3 垂直方向 0.949 0 0.000 9 对角线方向 0.921 1 -0.008 2 B通道水平方向 0.970 7 -0.002 4 垂直方向 0.952 7 0.010 5 对角线方向 0.930 0 0.005 2 Correlation coefficients between two adjacent pixels in RGB components of plain/cipher images with BSPDPAD algorithm on the Lena imageTable 5 表6 3种算法在Lena彩色图像RGB颜色通道上的加密结果 算法NPCR/% UACI/% Entropy R G B R G B BSPDPAD 99.665 8 99.636 2 99.652 1 33.699 9 33.649 6 33.562 1 7.999 1 文献[9] 99.612 4 99.613 4 99.619 2 33.443 8 33.523 2 33.501 0 7.997 4 文献[10] 99.630 7 99.627 7 99.655 2 33.594 2 33.412 5 33.602 4 7.997 5 Results of RGB components encrypted with three algorithms on Lena imageTable 6图 8(a)分别为Lena彩色明文图像和Lena彩色图像的BSPDPAD算法密文图像,图 8(c)-(e)分别为明文图像及密文图像Red、Green、Blue3个颜色通道的直方图。表 5为Lena彩色图像的明文图像,及其BSPDPAD算法密文图像各颜色通道在水平、垂直及对角线方向上相邻像素相关性系数(各颜色通道分别随机选取2 000对像素点进行计算)。从图 8可以看出,图像加密前后直方图差别很大,明文图像统计信息清晰可见,而密文图像像素点分布均匀,较好的掩藏了明文信息。由表 5可知,明文图像各颜色分量相邻像素间均存在较强相关性,经BSPDPAD算法加密后图像各颜色分量相邻像素相关性远小于明文图像。因此,BSPDPAD算法加密彩色图像能够很好的抵抗统计攻击和已知密文攻击。从表 6可以看出,相对于文献[9-10]所提算法,BSPDPAD算法取得了较优的加密效果,说明BSPDPAD算法同样适合彩色图像加密。4.8时间复杂度分析除安全性指标外,算法时间复杂度也是衡量加密算法性能的重要指标之一。对于BSPDPAD算法来说,时间复杂度主要受位级同步置乱扩散和像素级扩散两部分影响。在位级同步置乱扩散阶段,BSPDPAD算法主要包括${\rm{O}}\left( {2MN} \right)$的浮点型操作构建混沌序列,以及${\rm{O}}\left( {4MN} \right)$的异或操作和循环移位操作;在像素级环形扩散阶段,BSPDPAD算法主要包括${\rm{O}}\left( {2MN} \right)$的浮点型操作构建混沌序列和${\rm{O}}\left( {2MN} \right)$的异或操作。因此,BSPDPAD算法的总复杂度为${\rm{O}}\left( {2MN} \right) + {\rm{O}}\left( {4MN} \right) + {\rm{O}}\left( {2MN} \right) + {\rm{O}}\left( {2MN} \right) \approx {\rm{O}}\left( {4MN} \right)$。文献[15]将图像分解成$M \times 8N$的比特矩阵,对各行各列仅进行一次整体循环移位操作,而后将像素矩阵分成4块进行扩散操作,其算法复杂度为${\rm{O}}\left( {2M} \right) + {\rm{O}}\left( {18N} \right){\rm{ + O}}\left( {MN/16} \right) + {\rm{O}}\left( {MN} \right) \approx {\rm{O}}\left( {MN} \right)$。文献[18]所有加密操作均在位平面上完成,包括${\rm{O}}\left( {8MN} \right) + {\rm{O}}\left( {4MN} \right)$的置换加密,及${\rm{O}}\left( {MN} \right) + {\rm{O}}\left( {4MN} \right)$的扩散加密,其算法总复杂度为${\rm{O}}\left( {8MN} \right) + {\rm{O}}\left( {4MN} \right) + {\rm{O}}\left( {MN} \right) + {\rm{O}}\left( {4MN} \right) \approx {\rm{O}}\left( {8MN} \right)$。文献[19]通过各个位平面与置换矩阵相乘的方法实现位级置乱,与混沌迭代过程相结合实现像素级扩散,其算法总复杂度为${\rm{O}}\left( {2MN} \right) + {\rm{O}}\left( {MN/64} \right) + {\rm{O}}\left( {8MN} \right) + {\rm{O}}\left( {2MN} \right) \approx {\rm{O}}\left( {8MN} \right)$。基于上述分析可知,4种算法的计算复杂度处于同一数量级,BSPDPAD算法计算复杂度略低于文献[18-19],稍高于文献[15]。但BSPDPAD算法在位级加密部分将循环移位与异或操作相结合,同步实现置乱和扩散操作,增强了算法抵抗差分攻击和统计分析攻击能力;在像素级通过环形扩散进一步加密图像,避免发生明文敏感性不均匀问题和停止点现象。因此,相对于文献[15],BSPDPAD算法以牺牲时间复杂度来换取较高的加密安全性。5结论本文提出一种基于位级同步置乱扩散和像素级环形扩散的图像加密算法(命名为BSPDPAD算法),算法利用PWLCM产生的混沌序列生成位级和像素级密钥流,对图像进行位级和像素级加密,一般需要一轮的加密操作就能达到较理想的加密效果。与现有位级与像素级加密相结合的方法相比,BSPDPAD算法采用随机分块、块内块间同步置乱扩散、及环形扩散等操作,提高了密文图像安全性和加密算法效率。在位级加密阶段,首先利用密钥流对图像进行随机分块,破坏相邻像素相关性;然后,对包含信息量极少的低四位平面像素进行循环移位操作,而对包含信息量多的高4位像素,除进行循环移位操作外,需要将高四位平面的各个像素与低四位平面像素、前一密文像素及密钥流相互作用,将像素每一个比特的影响扩散到该块整个位平面中;通过参数传递的方法实现块间扩散,将像素每一个比特的影响扩散到整个像素矩阵中。在像素级加密阶段,将各像素与中间密文像素、前一密文像素及密钥流相互作用,实现横向顺序扩散和纵向逆序扩散。此种循环扩散方法避免了各像素沿一个方向扩散,而导致的明文敏感性不均匀问题和停止点现象。另外,本文根据明文图像信息对PWLCM的初值进行了修改,增强BSPDPAD算法的自适应性和明文敏感性。实验结果及分析表明,本文所提出的BSPDPAD加密算法密钥空间大,密钥敏感性高,密文图像像素分布均匀,相邻像素相关性小,可有效抵抗穷举、统计分析、已知/选择明文、及差分攻击,加密效率高,具有较高的安全性、可靠性和潜在的应用价值。

使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,

确定继续浏览么?

复制成功,请在其他浏览器进行阅读