一种基于混沌映射和SHA‐3的安全图像加密算法
摘要
本文提出了一种结合双混沌映射、SHA‐3(安全哈希算法‐3)和自动更新系统的混沌图像加密算法。为了打乱像素位置,在置换阶段生成一个与明文图像大小相同的矩阵,该矩阵依赖于明文图像。然后利用SHA‐3计算其哈希值,用于生成Logistic映射的控制参数和初始条件。随后,对行和列进行全置乱以交换像素,其中通过不同图像建立自动更新系统,起到一次一密的作用。此外,在扩散过程中采用三维混沌猫映射来扩大密钥空间。首先将置换后的图像划分为四个子块,并根据Logistic映射的密钥随机排列顺序。选取最后一个子块,使用SHA‐3计算其哈希值,并将其分为三组,用于更新三维混沌猫映射的初始条件,再次实现一次一密的效果。当前子块的设计会影响扩散过程中的下一个子块。因此,所提算法能够有效抵抗选择明文攻击和已知明文攻击。同时给出了实验结果,以说明所提方法的高安全性。
关键词
自动更新;图像加密;混沌映射;SHA‐3;一次一密
引言
在过去十年中,混沌图像加密算法被设计和实现得越来越多。我们可以观察到混沌系统(或映射)表现出类似随机的行为特性,其具有一些优良特性,如确定性系统、对初始条件和系统参数敏感等。因此,混沌系统(或映射)在图像密码学中的置乱和扩散操作中得到了广泛认可。然而,由于图像具有数据量大、高冗余和强相关性等特殊特性,传统方法难以适用于图像加密。这推动了混沌系统(或映射)在图像编解码 [1–4]中的广泛应用。在应用方面,许多领域都可以从图像加密算法中受益,例如电子病历,其利用计算机对患者的记录进行存储、管理、传输和再现。目前,已有大量关于基于混沌的图像加密算法的专利被申请并获得授权[5,6]。
弗里德里希 [7]提出了一种二维混沌映射,用于创建一种新的对称加密方案,该方案研究表明,Baker映射可以表现出典型的随机置换行为。王和栾[8]提出了一种基于可逆细胞自动机的混沌图像加密算法,他们采用Logistic映射进行置换操作,同时使用二维可逆细胞自动机实现扩散。达斯卡莱斯库和博里加提出了一种生成随机置换的新快速混沌方法,因此设计并提出了高移位因子[9]。通过一些比较,该方法[9]表现出优于其他方法的性能。
然而,许多图像加密方法中都存在密钥相关现象。例如,Pareek et al.[10]在置乱阶段提出了一种使用128位密钥的新图像加密算法。该方法采用密钥相关方法来确定遍历图像块的起始像素,从而削弱了整个加密过程的安全性。在[11]中,作者提出了一种图像加密方案,该方案使用改进的超混沌序列。生成的迭代值xi、yi和zi并未考虑不同图像之间的差异,而仅与图像大小相关。因此,该方案在应对差分攻击时安全性不足。
本文提出了一种新的混沌图像加密算法,以解决上述问题,其中利用安全哈希算法(SHA‐3)函数模拟一次一密的效果。作为最新的SHA标准,SHA‐3函数相比SHA‐1和SHA‐2更加安全。更重要的是,SHA‐3中的Keccak函数(一种新标准)在设计上与SHA‐2和高级加密标准差异最大。由于SHA‐3对输入消息具有高度敏感性,本文方法利用该特性,使得明文图像的任何微小变化都会导致生成完全不同的密文图像。因此,所提出的算法能够实现香农理论所要求的雪崩效应。该系统能够自动更新初始条件,从而使密钥流随不同图像而变化。在本方法中,置换和扩散两个阶段均为反馈操作,因此新算法可有效抵御已知明文攻击和选择明文攻击。
2. 提出的图像加密算法
2.1. 混沌映射
本文中,所提算法采用了两种混沌映射,即一维 Logistic映射 [12] 和三维混沌猫映射 [13]。一维 Logistic映射由公式(1)定义,是一种简单且被广泛使用的映射。
$$
x_i = \mu x_{i-1}(1 - x_{i-1}), \quad i = 1, 2, 3, \dots \tag{1}
$$
其中 $x_i \in (0, 1)$。当 $3.56994 < \mu \leq 4$ 时,系统将变为混沌 [12]。混沌行为可以在图1(a)中观察到,控制参数为 $\mu = 3.993$,初始条件为 $x_0 = 0.306$。三维混沌Cat映射由Chen et al.[13] 设计,其三个初始条件 $x_0$、$y_0$、$z_0$ 由公式(2)给出。
$$
\begin{pmatrix} x_i \ y_i \ z_i \end{pmatrix} =
\begin{pmatrix} 2 & 1 & 3 \ 3 & 2 & 5 \ 2 & 1 & 4 \end{pmatrix}
\begin{pmatrix} x_{i-1} \ y_{i-1} \ z_{i-1} \end{pmatrix} \mod 1 \tag{2}
$$
其中 $i = 1, 2, \dots$,且映射矩阵(2)的特征值为 $\lambda_1 \approx 7.1842$, $\lambda_2 \approx 0.2430$, $\lambda_3 \approx 0.5728$。因此,所有特征值均为正数,这意味着对于任意的 $x_i,y_i,z_i \in (0, 1)$,该映射均处于混沌状态。此外,最大李雅普诺夫指数为7.1824,大于1,因此该映射是超混沌的。图1(b)展示了映射(2)在三个初始条件 $x_0 = 0.451$、$y_0 = 0.812$ 和 $z_0 = 0.634$ 下的混沌行为。
2.2. 安全哈希算法‐3 函数
安全哈希算法‐3函数采用海绵结构(图2),其中输入被吸收进哈希状态,然后以相同速率[14]从中挤压输出哈希。如果我们希望吸收r比特的数据,则将数据异或到状态的前导比特中,然后应用分块置换[14,15]。为了实现挤压函数,首先生成状态的前r比特作为输出,然后再应用分块置换。填充是一个必要过程,以确保消息能够被均匀地划分为r比特的块。当所有分块置换完成后,状态的前导l比特即为所需的哈希值。本文选择固定的256比特作为输出,以满足灰度图像的比特级别要求;然后将其转换为32个十进制数。
2.3. 加密算法
假设明文图像P的大小为 $m \times n$。为了扰乱明文图像中存在的高度相关性,通常首先考虑像素位置置换进行。在此操作中,像素值不发生变化,仅改变像素位置的置乱情况。因此,图像像素和在置换操作前后保持不变。我们计算预处理图像P的像素和s。根据以下公式(3),可得到一个新的向量p1。然后将向量p1按从上到下、从左到右的顺序排列成一个与明文图像大小相同的矩阵Q1。
$$
p_1(i) = (s + i) \mod 256, \quad i = 1, 2, \dots, mn \tag{3}
$$
对于前面的矩阵 Q1,我们使用SHA‐3函数计算其哈希值,这些哈希值被分为两组 G1 和 G2;每组包含16个整数。其中,G1用于确定一维Logistic映射中的控制参数 $\mu$,如算法1所示,而G2用于根据算法2更新初始条件 $x_0$。因此,如果对Logistic映射(1)进行迭代,则生成的密钥流将依赖于明文图像。控制参数$\mu$也因不同图像而异,但接近于3.999。因此,一维 Logistic映射的初始条件和控制参数将根据预加密的明文图像自动改变。
算法1
设置 α = sum(G1);
while (α ≤ 0.0001)
α = α / 10;
end
μ = 4 – α;
算法2
给定 x₀;
设置 δ = sum(G2);
while (δ ≤ 0.1)
δ = δ / 10;
end
x₀ = (x₀ + δ) mod 1;
更新后的 $x_0$ 在Logistic映射中进行迭代,通过将迭代值排列成矩阵,可得到一个大小为 $m \times n$ 的混沌矩阵 Q2。然后,将 Q2 的每一行按从小到大顺序排序,并找到索引每一行中。例如,在第一行中,我们可以得到索引序列p2,该序列用于根据公式(4)对明文图像P第一行的像素位置进行置换。同样的操作应用于所有其他行和所有列。之后,我们可以实现完整的置换,得到置换图像PI。由于密钥流的生成依赖于明文图像,因此所提出的加密算法能够很好地抵抗已知明文攻击[16]。
$$
PI(1,i) = P(1,p_2(i)), \quad i = 1, 2, 3, \dots, n. \tag{4}
$$
在扩散阶段,为了避免统计攻击、选择明文攻击和差分攻击,密文图像应随着置乱图像中任意两个像素的关联而发生显著变化。PI首先通过垂直和水平方向被均等地划分为四个子块,即PI1、PI2、PI3 和 PI4(此处假设m和n为偶数)。该顺序按照表I中的索引进行打乱,共有4! = 24种可能,该顺序由置乱阶段所使用的初始密钥x0(更新前)根据以下公式(5)确定。假设选定的顺序为(2, 3, 1, 和 4),记作A1、A2、A3 和 A4。然后我们使用SHA‐3函数计算最后一个子块A4的哈希值。这些值被分为三组:G3、G4 和 G5。前两组各包含10个数,第三组包含12个数。
$$
Ind = \lfloor x_0 \times 10^{14} \rfloor \mod 24 + 1 \tag{5}
$$
其中,运算 $\lfloor v \rfloor$ 返回小于或等于 $v$ 的最大整数。利用自更新系统(6),生成新的初始条件 $x_0$、$y_0$ 和 $z_0$。接着,对三维猫映射进行迭代,得到一个大小为 $\frac{m}{2} \times \frac{n}{2}$ 的混沌矩阵 E。然后,根据方程(7) 对块 A1、A2、A3 和 A4 执行扩散操作。最后,若扩散操作已完成三轮,则可获得密文图像 C。
表I. 索引的可能性。
| (1,2,3,4) | (1,2,4,3) | (1,3,2,4) | (1,3,4,2) | (1,4,2,3) | (1,4,3,2) |
| (2,1,3,4) | (2,1,4,3) | (2,3,1,4) | (2,3,4,1) | (2,4,1,3) | (2,4,3,1) |
| (3,1,2,4) | (3,1,4,2) | (3,2,1,4) | (3,2,4,1) | (3,4,1,2) | (3,4,2,1) |
| (4,1,2,3) | (4,1,3,2) | (4,2,1,3) | (4,2,3,1) | (4,3,1,2) | (4,3,2,1) |
$$
\begin{cases}
x_0 = [x_0 + f(\text{sum}(G3))] \mod 1 \
y_0 = [y_0 + f(\text{sum}(G4))] \mod 1 \
z_0 = [z_0 + f(\text{sum}(G5))] \mod 1
\end{cases} \tag{6}
$$
其中函数f(x)由算法3给出。
算法3
给定 x;
while (x ≤ 0.1)
x = x / 10
end
输出 x
$$
\begin{cases}
C_1 = (A_1 + C_0 + E) \mod 256 \
C_2 = (A_2 + C_1) \mod 256 \
C_3 = (A_3 + C_2) \mod 256 \
C_4 = (A_4 + C_3) \mod 256
\end{cases} \tag{7}
$$
其中 $C_0$ 是一个与子块 $A_i (i = 1, 2, 3, 4)$ 大小相同的常数矩阵。
2.4. 解密算法
由于对称结构,解密过程正是之前加密的逆过程,首先从密文图像C中获取子块A4,并利用哈希值更新三维猫映射的初始条件通过SHA‐3函数计算,利用E对方程(7)进行逆运算得到置换图像。然后,经过三轮逆扩散后,可计算出置换图像的和s,该和用于更新初始条件、生成一维 Logistic映射中的控制参数,并生成矩阵Q1。将 SHA‐3函数应用于矩阵Q1,可以利用新的控制参数和初始条件从一维Logistic映射生成混沌矩阵Q2。随后,相应地对行和列执行逆序置换。最终,明文图像P将被恢复。
3. 仿真结果
在本节中,我们对所提算法进行测试以展示其高效率和高安全性。一维Logistic映射和三维猫映射的初始条件分别随机设置为 $x_0 = 0.443$、$x_0 = 0.346$、$y_0 = 0.189$ 和 $z_0 = 0.266$。所有测试均在Windows 7平台下通过MATLAB 7.0完成,CPU为Intel(R) Core(TM) i3‐2350M,2.30 GHz。大小为 $256 \times 256$ 的Lena图像用作明文图像,如图4(a)所示。图4(b)显示了仅使用所提全置乱方法得到的置换图像,而图4(c)给出了相应的密文图像。
4. 安全分析
4.1. 密钥空间
为了抵御暴力破解攻击,任何新设计的加密算法都应使其密钥空间至少达到 $10^{30}$ [17]。在所提算法中,密钥由 $x_0$(一维Logistic映射)、$x_0$、$y_0$ 和 $z_0$(三维猫映射)组成。若精度设置为 $10^{-14}$,则本方法可使用的密钥组合有 $10^{56}$ 种可能。因此,密钥空间足够大,能够抵抗暴力破解攻击。
4.2. 敏感性与直方图分析
关于密钥的敏感性,图4(d)、(e)、(f)和(g)表明,即使密钥存在 $10^{-14}$ 的微小差异,也无法正确恢复明文图像。所提算法中的四个密钥对初始设置都非常敏感。
图像的特征可以通过其直方图来展示,图4(h)显示了图4(a)中Lena图像的直方图。经过所提出方法加密后,密文图像的直方图非常均匀,并且与明文图像的直方图完全不同,如图4(i)所示。此外,图5展示了不同明文图像对应的密文图像直方图的均匀分布情况。因此,由于密文图像中没有泄露任何有用信息,攻击者难以进行统计分析。
4.3. 差分攻击分析
在一个理想的加密算法中,明文图像中任何一个像素的变化,即使只改变一位,也应该导致相对于同一明文图像,密文图像具有显著差异。通常采用以下公式(8)和(9)分别定义的NPCR(像素变化率)和UACI(统一平均变化强度)[18,19]来衡量其效率。
$$
\text{NPCR} = \frac{\sum_{i,j} D(i,j)}{M \times N} \times 100\% \tag{8}
$$
$$
\text{UACI} = \frac{1}{M \times N} \left[ \sum_{i,j} \frac{|C_1(i,j) - C_2(i,j)|}{255} \right] \times 100\% \tag{9}
$$
其中 $D(i,j) = \begin{cases} 0, & C_1(i,j) = C_2(i,j) \ 1, & \text{Otherwise} \end{cases}$
表II. UACI 和 NPCR 性能。
| 方向 | Lena | 摄影师 | Barb | 狒狒 |
|---|---|---|---|---|
| UACI | 33.432 | 33.498 | 33.414 | 33.428 |
| NPCR | 99.603 | 99.641 | 99.600 | 99.600 |
NPCR,像素变化率;UACI,统一平均变化强度。
表II展示了不同图像的实验结果,说明了明文图像中一位变化对密文图像的影响。因此,可以看出所提出的方法具有良好的抵抗差分攻击的能力。
4.4. 相关性分析
通常,任何自然的有意义的明文图像中都存在强相关性。一个好的加密方案应能将相关系数大幅降低至接近零[24,25]。通过从水平、垂直和对角三个方向随机选择若干对相邻像素,根据公式(10)得到的结果列于表III中。此处选用Cameraman图像进行测试。因此可以看出,新方法具有良好的混淆特性。
$$
r_{uv} = \frac{N \sum_{i=1}^N u_i v_i - \sum_{i=1}^N u_i \sum_{i=1}^N v_i}{\sqrt{r_u r_v}} \tag{10}
$$
其中 $r_u = N \sum_{i=1}^N u_i^2 - (\sum_{i=1}^N u_i)^2$,$r_v = N \sum_{i=1}^N v_i^2 - (\sum_{i=1}^N v_i)^2$,$u_i$ 和 $v_i$ 表示两个相邻像素的灰度值。
表III. 相关系数。
| 方向 | 垂直 | 水平 | 对角 |
|---|---|---|---|
| 明文图像 | 0.9671 | 0.9926 | 0.9421 |
| 密文图像 | 0.0093 | 0.0159 | 0.0097 |
4.5. 信息熵
接收消息的随机性可使用信息熵(IE)通过以下公式 (11)[26]进行计算。一个安全的图像加密算法应使密文图像中的信息熵接近理论值8。表IV显示了使用我们算法得到的结果,表明在具有满意随机性的情况下,熵攻击是不可行的。
$$
\text{IE}(h) = \sum_{i=1}^{2^l - 1} p(h_i) \log_2 \frac{1}{p(h_i)} \tag{11}
$$
其中,$l$ 表示灰度值的比特长度,$h$ 表示接收到的消息,$p(h_i)$ 表示符号 $h_i$ 的概率。
表IV. 不同图像的信息熵。
| 图像 | Boat | Barb | 狒狒 | 辣椒 |
|---|---|---|---|---|
| IE | 7.991 | 7.992 | 7.991 | 7.991 |
信息熵,information entropy.
4.6. 一次性密码本分析
在所提算法中,初始条件 $x_0 = 0.443$、$x_0 = 0.346$、$y_0 = 0.189$ 和 $z_0 = 0.266$ 是随机的,分别用于一维Logistic映射和三维猫映射。然而,由于算法1和方程(6)中对这些密钥的更新机制,密钥 $x_0,x_0,y_0$ 和 $z_0$ 将根据不同的明文图像以及不同轮次的迭代进行更新,其作用类似于一次一密。在随机选择船图像、Lena图像和Peppers图像后,表V给出了使用本方法得到的相应结果。因此,所提出的图像加密算法能够实现一次一密的效果。
表V. 不同明文图像和不同轮次的初始条件。
| 图像 | Boat | Lena | 辣椒 |
|---|---|---|---|
| 置换 | |||
| $x_0$ | 0.25548 | 0.26026 | 0.25925 |
| $x_0$ | 0.51404 | 0.51699 | 0.51311 |
| 第一次扩散 | |||
| $y_0$ | 0.43610 | 0.35892 | 0.35474 |
| $z_0$ | 0.79868 | 0.79854 | 0.80270 |
| $x_0$ | 0.51416 | 0.51342 | 0.51121 |
| 第二次扩散 | |||
| $y_0$ | 0.35748 | 0.35771 | 0.35656 |
| $z_0$ | 0.80639 | 0.80070 | 0.80151 |
| $x_0$ | 0.51273 | 0.51139 | 0.51603 |
| 第三次扩散 | |||
| $y_0$ | 0.41370 | 0.35682 | 0.35596 |
| $z_0$ | 0.79880 | 0.80195 | 0.80185 |
4.7. 对比分析
本节给出了我们的方法与一些现有方法的对比。一方面,表VI中分析了速度性能。另一方面,请求的加密轮数[1]列于表七中。此处测试再次选用了Lena图像。此外,表八展示了使用相同加密轮数(两轮)并参考 [4,19]的不同方法之间的比较。这些结果说明了所提出的图像加密方法具有较高的效率。为了避免在通信中对每幅图像进行密钥的额外传输,表IX给出了与近期文献的比较。因此,我们的方法能够提供一种更优的加密算法。
表VI. 速度分析。
| 方法 | Ref. [20] | Ref. [21] | Ref. [22] | Ours |
|---|---|---|---|---|
| $256 \times 256$ | 0.811 秒 | 0.172 秒 | 0.047 秒 | 0.022 秒 |
| $512 \times 512$ | 3.463 秒 | 0.702 秒 | 0.257 秒 | 0.123 秒 |
表七. UACI和NPCR的轮次比较。
| 轮次 | 方法 | NPCR | UACI | 置换 | 扩散 |
|---|---|---|---|---|---|
| Ref.[2] | ≥99.6 | ≥33.3 | 3 | 3 | |
| Ref.[23] | ≥99.6 | ≥33.3 | 2 | 2 | |
| Ours | ≥99.6 | ≥33.3 | 1 | 3 |
NPCR,像素变化率;UACI,统一平均变化强度。
表八。 UACI和NPCR值的比较。
| 方向 | [4] | [19] | Ours |
|---|---|---|---|
| UACI | 33.253 | 27.386 | 33.422 |
| NPCR | 99.586 | 81.196 | 99.579 |
NPCR,像素变化率;UACI,统一平均变化强度。
表IX. 是否需要密钥的额外传输。
| 方法 | [15] | [27] | Ours |
|---|---|---|---|
| 是否必要 | Yes | Yes | Not |
4.8. 彩色图像的应用
任何彩色图像都可以分解为三个通道R、G和B。每个通道被视为一个灰度级的灰度图像。因此,所提出的图像加密算法可以分别应用于这三个通道。然后将加密后的R、G和B组合成一幅彩色图像,从而得到密文图像。例如,图6(b)和(d)分别显示了来自Google图像数据库中明文图像图6(a)和(c)的密文图像。表X给出了房屋和树两幅彩色图像的信息熵,它们的值均接近8。
表X. 彩色图像的信息熵。
| 图像 | R | G | B | 平均值 |
|---|---|---|---|---|
| 房屋 | 7.990 | 7.990 | 7.990 | 7.990 |
| Tree | 7.989 | 7.990 | 7.989 | 7.989 |
5. 结论
本文提出了一种混沌图像加密算法。通过使用Logistic映射和Cat映射、SHA‐3哈希函数和自动更新系统,所提密码系统可以清晰且易于实现。同时,对于不同的图像和不同轮次的迭代,该算法表现得像一次一密。本算法中提出了全置乱与块扩散操作相结合的方法。与一些现有方法相比,所提方法具有更快的速度和更高的效率。更重要的是,在加密过程中,密钥流分别依赖于明文图像和置换图像生成。因此,明文图像中的任何微小变化都会导致密文图像的巨大差异。因此,所提算法能够抵御包括暴力破解攻击、已知明文攻击、选择明文攻击、统计攻击等在内的多种攻击。
315

被折叠的 条评论
为什么被折叠?



