基于混沌与SHA-3的图像加密

一种基于混沌映射和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$ 下的混沌行为。

示意图0

2.2. 安全哈希算法‐3 函数

安全哈希算法‐3函数采用海绵结构(图2),其中输入被吸收进哈希状态,然后以相同速率[14]从中挤压输出哈希。如果我们希望吸收r比特的数据,则将数据异或到状态的前导比特中,然后应用分块置换[14,15]。为了实现挤压函数,首先生成状态的前r比特作为输出,然后再应用分块置换。填充是一个必要过程,以确保消息能够被均匀地划分为r比特的块。当所有分块置换完成后,状态的前导l比特即为所需的哈希值。本文选择固定的256比特作为输出,以满足灰度图像的比特级别要求;然后将其转换为32个十进制数。

示意图1

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

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哈希函数和自动更新系统,所提密码系统可以清晰且易于实现。同时,对于不同的图像和不同轮次的迭代,该算法表现得像一次一密。本算法中提出了全置乱与块扩散操作相结合的方法。与一些现有方法相比,所提方法具有更快的速度和更高的效率。更重要的是,在加密过程中,密钥流分别依赖于明文图像和置换图像生成。因此,明文图像中的任何微小变化都会导致密文图像的巨大差异。因此,所提算法能够抵御包括暴力破解攻击、已知明文攻击、选择明文攻击、统计攻击等在内的多种攻击。

【四轴飞行器】非线性三自由度四轴飞行器模拟器研究(Matlab代码实现)内容概要:本文围绕非线性三自由度四轴飞行器模拟器的研究展开,重点介绍了基于Matlab的建模仿真方法。通过对四轴飞行器的动力学特性进行分析,构建了非线性状态空间模型,并实现了姿态位置的动态模拟。研究涵盖了飞行器运动方程的建立、控制系统设计及数值仿真验证等环节,突出非线性系统的精确建模仿真优势,有助于深入理解飞行器在复杂工况下的行为特征。此外,文中还提到了多种配套技术如PID控制、状态估计路径规划等,展示了Matlab在航空航天仿真中的综合应用能力。; 适合人群:具备定自动控制理论基础和Matlab编程能力的高校学生、科研人员及从事无人机系统开发的工程技术人员,尤其适合研究生及以上层次的研究者。; 使用场景及目标:①用于四轴飞行器控制系统的设计验证,支持算法快速原型开发;②作为教学工具帮助理解非线性动力学系统建模仿真过程;③支撑科研项目中对飞行器姿态控制、轨迹跟踪等问题的深入研究; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注动力学建模控制模块的实现细节,同时可延伸学习文档中提及的PID控制、状态估计等相关技术内容,以全面提升系统仿真分析能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值