基于PSO的RGB图像加密方法

国际安全及其应用杂志第11卷,第9期(2017年),第73‐94页

http://dx.doi.org/10.14257/ijsia.2017.11.9.06
ISSN:1738‐9976 IJSIA 版权所有 c 2017 SERSC 澳大利亚

基于PSO密钥生成的RGB图像加密流密码方法

摘要

本文介绍了一种基于流密码的RGB图像加密新方法。为此,采用一种基于粒子群优化(PSO)的算法生成用于加密的密钥流。将RGB图像的红色、绿色和蓝色通道表示为明文,然后使用流密码对结果图像进行加密。一种名为PSO密钥生成彩色图像加密(PKGCE)算法的方法,为RGB图像的每个3个通道使用3字符编码表,以对密钥和表示RGB图像对应通道的明文进行编码。在每个通道的结果图像上执行之字形操作,以提高安全性,其中之字形路径的起点取决于密钥和通道大小。
与先前的算法相比,该算法的主要优势在于所需存储和分发的密钥数量更少,且算法速度适中。文中详细讨论了实验结果以及所提出算法与其他加密算法的比较。

关键词 :RGB图像加密,流密码,粒子群优化算法

1. 引言

在当今技术不断发展的世界中,保护信息安全变得越来越困难[1]。因此,在数字数据的传输和存储过程中,安全性一直被视为一个至关重要的问题[2][25]。数字图像是常见的一种二维数据,包含大量信息[3]。由于数字图像和多媒体在当前应用中的快速发展,人们对数字图像的快速且安全的表示、传输和存储提出了迫切需求[4]。数字图像面临着与其他数据相同的各种安全问题,例如未经授权的访问和伪造检测[5]。在不同类型的数字图像中,RGB图像是在互联网和其他社交媒体中最常使用的图像类型之一[6]。

传统的加密算法如DES、AES、IDEA、RSA等,由于某些图像固有的特征,如庞大的数据量、像素间的强相关性以及高冗余性,不适合用于实际的图像加密 [7],因此需要开发新的数字图像加密方法。

近年来,许多图像加密方法被提出。通常,图像加密方法包括两个过程:像素置乱和扩散。香农首次提出了使用上述过程来保护数字信息[8]。置乱过程会改变图像像素的位置。

收到日期(2017年7月22日),审稿结果(2017年8月17日),接受日期(2017年9月8日)

扩散过程以一种方式改变像素值,使得一个像素的微小变化可以传播到整个图像的几乎所有像素[9]。流密码是一种对称密钥密码学,其用于加密和解密图像的加密与解密密钥会随机变化,使得生成的密文图像在数学上无法被破解。使用流密码的优点在于,与分组密码相比,其执行速度更高且硬件复杂度更低。与分组密码不同,流密码即使对于重复的明文块,也不会生成相同的密文,因为密钥会针对每个明文元素持续变化[10]。

关于图像加密算法的不同论文已经提出,这些论文使用了替换和置换过程。在参考文献[2]中,灰度明文图像被划分为若干块。在扩散过程中,每个块中的像素位置通过之字形路径进行改变。之字形路径的起始像素位置取决于图像特征,并由子密钥获得。然后对图像执行替换过程和混合过程。加密过程共进行十六轮。事实上,在我们提出的方法中,也将对明文图像使用之字形路径,但起始像素的位置将以不同的方式计算。在[11]中,半色调明文图像被划分为一组2*2块。然后将图像转换为十进制整数矩阵M。选取M中的两个相邻元素组成一对{x, y},并对所选元素执行称为可逆成对交换的操作。然后将整数转换为二进制序列。最后,基于伪随机数序列生成器中用密钥K生成的伪随机数序列,对所有元素进行置换以获得新矩阵。

上述操作重复若干轮次。在文章[1]中,Abdul Hanan Abdullah提出了一种基于混合模型的新方法。该混合模型结合了遗传算法和混沌函数。首先,利用原始灰度图像和混沌函数生成一些加密图像。然后将这些加密图像作为遗传算法的初始种群。

在遗传算法的每一阶段,从前一次迭代得到的结果被优化,以生成加密效果最佳的图像。最佳加密图像是从前一阶段的优化迭代中获得的。在我们的方法中,也将使用一种优化算法,但用于生成密钥。在[10]中,斯里拉贾提出了一种用于二值图像加密的流密码,采用蚁群优化来生成密钥。首先将二值图像编码为明文,以表示该二值图像:如果对应列位置上的二值图像值为0,则替换为字符’a’;如果为1且列位置mod 25的值不等于0,则替换为具有相应字符值的字符。为了生成密钥流,选择一组蚂蚁代理。根据明文中表示编码后二值图像的字符在其明文中的出现概率,生成字符编码表。生成字符编码树,遍历该树并为明文中表示编码后二值图像的字符生成编码。通过取编码的十进制等价值来确定字符的值。在树的第二层进行变异,并生成新的字符编码表。变异后得到的字符编码表用于对明文中表示编码后二值图像的字符以及密钥流中出现在明文中的字符进行编码。对明文中表示编码后二值图像的字符的编码值与密钥值执行异或操作,从而获得密文图像。上述论文提出了一种结合替换和置换过程来加密二值图像的方法,但实际上,大多数情况下图像在互联网和其他社交媒体上是以RGB形式存在的。因此,使用一种能够加密RGB图像的方法是很有意义的。另一方面,蚁群优化算法耗时较长,将其用于生成加密密钥会导致整个加密算法耗时过长,尤其是在处理RGB图像时更是如此

具有3个通道,且三通道将执行相同的过程。我们提出的方法主要思想来源于[10]。

实际上,我们采用类似的方法处理RGB图像,并使用更快的优化算法(PSO)生成加密密钥。此外,为了研究在图像加密中除法运算的影响,我们将在进行异或操作之前,对编码后的明文图像与密钥进行除法运算以生成密文图像。事实上,我们希望提出一种安全、足够快速、所需保存密钥数量较少,并通过在算法中引入除法运算实现的新颖RGB图像流密码算法。本文其余部分组织如下:第2节讨论加密和解密系统的结构;第3节介绍PSO算法及其在本方法中的应用;第4节以及第0节和第6节介绍所提出的主要算法;第7节展示案例研究;第0节展示实验结果;第9节对PKGCE与现有流密码过程进行比较;第9.7节讨论所提出方法的安全性分析;第0节为结论部分。

2. 加解密系统架构

流密码过程用于加密和解密RGB图像通道。

2.1. 加密过程

图1显示了一个加密系统模型。PKGCE算法对RGB图像的红色、绿色和蓝色通道分别进行约简阶段处理,然后将三个RGB图像通道以仅包含小写字母的明文形式进行编码,并生成用于加密的密钥流。在每个通道的结果图像上执行之字形操作,以提高安全性,其中之字形路径的起点取决于通道大小。所生成的密钥流包含一组字符,密钥流中存在的字符定义了加密所使用的密钥。为了确保安全性,每次执行加密过程时都会生成随机密钥字符,因此同一组密钥不会被重复使用。显示编码RGB图像通道的明文中的字符以及对应明文中出现的密钥流字符,均使用字符编码表的值进行编码。与直接用ASCII值替换密钥流及显示编码RGB图像通道的明文中的字符不同,通过为每个通道使用字符编码表对密钥流和明文进行编码,提高了系统的安全性。即使攻击者检测到密钥流中的字符,由于进行了编码操作,其对应的值也无法被识别。系统的安全性分析在第10节中进行说明。如果显示编码RGB图像通道的明文大小超过密钥流大小,则将密钥流中的密钥值除以一个预定值,所得余数作为明文字符位置超出密钥流大小部分的密钥值。

预定值通过取显示编码RGB图像通道的明文大小的2个根号来计算,如(1)所示。

显示编码RGB图像通道的明文被划分为密钥流长度大小的块。密钥流字符的值构成第一个块所需的密钥。用于显示编码RGB图像通道的明文的连续块的密钥,通过考虑前一个块的密钥值除以预定值的余数获得,如(2)所示。

$$
\text{预定值} = \sqrt{\sqrt{\text{图像通道大小}}}
$$

$$
\text{第i块所需的密钥} = \text{mod}(\text{放置在第i块中的密钥} - 1, \text{预定值}), \quad i \geq 2
$$

通过将每个通道的明文值除以相应的密钥值来获得加密的RGB图像通道。在每个通道中,将除法的商与密钥进行异或操作,同时将除法的余数与密钥进行异或操作。然后将得到的商和余数视为密文。

示意图0

2.2. 解密过程

图2展示了所提出的解密系统的模型。对每个通道分别执行相同的操作,并且在每个通道中使用加密过程中获得的各自字符编码表。因此,该过程将在所有3个通道上重复进行,但我们仅以一个通道为例进行详细说明。解密系统利用加密时使用的相同密钥集来解密获得的加密RGB图像。用于编码的RGB图像红、绿、蓝各通道对应的字符编码表内容被隐藏,而这些表的基地址保存在内存中。由PKGCE算法生成的用于加密显示编码RGB图像通道的明文的密钥流被提供给接收器。从内存中获取编码所用的字符编码表的基地址,并通过简单的查表操作对密钥流密钥进行编码。那些在通道字符编码表中不存在的密钥流密钥将被替换为其ASCII值。接收器根据加密的RGB图像通道的长度计算预定值。接收器生成密钥值以用于

通过使用预定值和密钥流中的密钥值,对加密的RGB图像通道中超过密钥流长度的部分进行处理,从而使接收器能够识别用于加密的密钥值。在下一阶段,为了获得解码后的商和余数的值,需在加密的RGB图像通道的给定商与该通道的密钥值之间执行异或操作,同时在加密的RGB图像通道的给定余数与该通道的密钥值之间执行另一个异或操作。为了获得每个通道明文的值,对每个通道执行公式(3):

$$
\text{解码通道(红色、绿色或蓝色)在之字形操作前的值}(i) = \text{密钥}(i) \times \text{商}(i) + \text{余数}(i); \quad i = 1 \text{到图像大小}
$$

在下一阶段,我们对每个通道的结果元素进行逆Z字形路径遍历。如前面部分所述,通道中遍历时的起始元素位置依赖于密钥和图像大小。为此,设(x, y)为逆Z字形路径的起点。我们可以通过公式(7)获得该起点。所得到的起点在所有通道中均相同。

每个通道的字符编码表用于将明文值解码,以获得显示编码RGB图像通道的明文中的字符。然后使用表1将编码的RGB图像通道以数字4、14、24、34…、234、244、253的形式解码,得到原始的缩减图像通道。

3. PSO算法

粒子群优化(PSO)是一种基于群体的随机优化方法,其灵感来源于鸟群聚集或鱼群训练的社会行为[12]。PSO算法的基本类型通过拥有一个由候选解(称为粒子)组成的群体(称为 swarm)来运行。当检测到更优的位置时,这些位置将被用来引导群体的移动。该过程不断重复,以期最终能找到一个较优的解,但并不能保证一定成功[13]。

我们通过一组随机的粒子(解)初始化粒子群优化算法,然后通过更新迭代来搜索最优解。在每次迭代中,我们根据以下两个“最佳”值来更新每个粒子。第一个值是该粒子迄今为止找到的最佳解(适应度)(我们也存储适应度值),这个值称为个体最优(pbest)。另一个“最佳”值是群体中所有粒子迄今为止找到的最佳值,该值被粒子群优化器视为全局最优,并命名为全局最优(gbest)。当单个粒子以其自身的拓扑邻居参与群体时,该最佳值被视为局部最优,并命名为局部最优(lbest)。

粒子检测到两个最佳值后,使用随后的公式(4)和(5)更新其速度和位置。

$$
v[] = v[] + c1 \times \text{rand}() \times (\text{pbest}[] - \text{present}[]) + c2 \times \text{rand}() \times (\text{gbest}[] - \text{present}[])
$$

$$
\text{present}[] = \text{persent}[] + v[]
$$

v[]称为粒子速度,persent[]被视为当前粒子。gbest[]和pbest[]的定义如前所述。rand() 是一个在(0, 1)之间的随机数。c1、c2是学习因子。通常,c1 = c2 = 2[12]。

示意图1

4. PSO密钥生成RGB(或彩色)图像加密算法

基于粒子群优化算法的RGB(或彩色)图像加密密钥生成(PKGCE)算法是一种用于生成RGB图像加密密钥流的方法。图3展示了用于获取RGB图像加密密钥流的PSO系统的示意图。

示意图2

PKGCE算法的目标函数是生成一个密钥流,同时考虑以下限制:在编码的RGB图像的红色通道明文显示中,密钥流字符出现的概率接近或等于阈值(我们设定阈值为75%)。首先,如第4.1节所述,对RGB图像进行降维处理。如前所述,RGB图像的红、绿、蓝通道被编码为明文形式。系统中的粒子协同工作以获得最优解。粒子在搜索空间中寻找更优的解,并相互交换所获得的信息。每个粒子通过计算其局部最优来构造解,并计算能量值。初始时,每个粒子通过选择随机字符组合创建候选解。粒子的每个候选解表示一个密钥流。粒子计算其候选解的能量值。能量值使用(6)计算。

$$
\text{能量值} = \frac{\text{密钥流字符在明文定义的RGB图像的红色通道中出现的数量}}{\text{密钥流长度}}
$$

粒子考虑一个0.75的能量阈值以获得解(该阈值可根据编码器需求设置为其他任意值)。设定0.75能量阈值的目的是:在表示粒子候选解的密钥流字符中,约有75%的字符出现在编码的RGB图像红色通道的明文显示中(或其他任意通道,包括绿色或蓝色通道),从而利用字符编码表(此处使用红色通道的字符编码表)对密钥流中的字符进行编码,进而增强系统的安全性。如公式(6)所示,能量值通过统计出现在编码的RGB图像红色通道明文显示中的密钥流字符数量,再除以密钥流长度来计算得出。该算法

在100次迭代中运行(可以少于或多于100次),每次迭代都会为每个候选解计算能量值。经过100次迭代后,每个候选解的能量值若接近或等于阈值,则该候选解被视为加密所用的密钥流。在每次迭代中,每个粒子通过选择不同的字符组合作为密钥流来生成一个候选解。全局最优在整个过程中被保留,并且在每次迭代中,如果当前解优于全局最优,则更新全局最优。如果有两个或多个解具有相同的最佳能量值,则选择第一个解作为密钥流。

PKGCE算法的基本块如下所述。

4.1. RGB图像的降维和编码作为明文

如前几节所述,真彩色图像通常是一幅24位彩色图像,其每个像素包含红色 (R)、绿色(G)和蓝色(B)分量;每个R、G和B由8位表示,单个颜色R、G和B的取值范围为0到255[6]之间的整数值。在我们提出的流密码方法中,对所有3个通道执行相同的操作阶段。为了减少需要处理的整数值数量,并提高算法速度,我们对RGB图像应用一个称为“降维”的阶段。在此过程中,将RGB图像的整数值划分为26组,其中0到9的值映射到4并替换为’a’,10到19的值映射到14并替换为’b’,20到29的值映射到24并替换为’c’,依此类推。选择14、24、34⋯⋯等值的原因是这些值分别为0到9、10到19、20到29等组的中间值。表1显示了将RGB整数值映射到每组中间元素的完整形式,表2展示了此过程的一个示例。

颜色范围 0–9 10–19 20–29 30–39 40–49 50–59 60–69
映射颜色 4 14 24 34 44 54 64
对应字母 a b c d e f g
颜色范围 70–79 80–89 90–99 100–109 110–119 120–129 130–139
映射颜色 74 84 94 104 114 124 134
对应字母 h i j k l m n
颜色范围 140–149 150–159 160–169 170–179 180–189 190–199 200–209
映射颜色 144 154 164 174 184 194 204
对应字母 o p q r s t u
颜色范围 210–219 220–229 230–239 240–249 250–255
映射颜色 214 224 234 244 253
对应字母 v w x y z

表1. RGB颜色映射格式

RGB图像的一个通道 映射颜色 一个通道的明文
108 120 70 100 203 104 124 74 104 204 kmhku
0 55 189 100 16 4 54 184 104 14 afskb
111 255 55 179 90 114 253 54 174 94 hzfrj
78 203 170 0 255 74 204 174 4 253 huraz

表2. 将RGB图像的一个通道以纯文本形式编码

在大多数RGB图像中,约简阶段对原始图像的改变不大。图4和图5展示了在两个RGB图像上应用约简阶段的示例。当颜色发生渐变时,最明显的变化可以被感知到。

在图像中可以看到,当颜色发生轻微变化时,约简阶段的结果是将RGB图像中相近的值映射到单个值,因此图像中会识别出一些条纹,如图4所示。但在其他图像中,约简阶段没有产生如此明显的差异,如图5所示。

示意图3 原始图像 和 (b) 原始图像的简化形式)

示意图4 原始图像 和 (b) 原始图像的简化形式)

使用0到255的值表示的RGB图像被编码为仅包含小写字母的明文形式。这些字母相互连接,形成定义编码RGB图像的明文。表2中定义该图像的明文是“kmhkuafskbhzfrjhuraz”。

5. 创建字符编码表以对明文进行编码,定义编码后的RGB图像通道和密钥流

为了生成字符编码表,基于明文中字符在红、绿、蓝通道所对应的编码RGB图像通道中的分布情况,构建了3个字符编码树。遍历这些树,并将内容分配给构成字符编码表的字符。如果表中字符的值相等,则向相应字符的值添加‘5’,以获得表中字符的唯一值。

5.1. 初始字符编码表生成

明文中显示编码后的RGB图像通道的字符根据出现概率被枚举并以树的形式展示。树的左侧分支标记为‘0’,右侧分支标记为‘1’。考虑一个缩减的RGB图像的通道“kekree”。图表示该树结构。通过遍历树来检测所需的代码。通过获取构成字符编码表的代码的十进制数值来确定字符值。表3展示了代码和对应的值。

示意图5

字符 Code
e 0 0
r 01 1
k 11 3

表3. 为明文中的字符生成的代码和值,用于定义RGB图像通道

6. 扩散过程

在扩散过程中,通过之字形路径对每个通道的元素在同一通道内进行重新排列。

例如,使用图7所示的路径来重新排列大小为8 × 8图像的某个通道的元素。假设存储在RGB图像通道中的元素按照表4所示分配了数字,并且我们从元素54开始遍历该图像通道的路径(即起始元素的位置为(2, 2))。该矩阵的序列为94 4 114 124 54 253 74 184 224 164 104 174。(2, 2)之前序列中的元素数量为4。首先,我们改变序列中元素的位置,使得起点及起点之后的值位于序列的开头。在本例中,替换后的结果序列为54 253 74 184 224 164 104 174 94 4 114 124。表4显示了所得矩阵。

最后,对替换后得到的矩阵按照图7执行之字形路径遍历,结果如表4所示。

示意图6

a 94 124 74 164 4 54 184 104 114 253 224 174 b 54 184 104 4 253 224 174 114 74 164 94 124 c 54 74 4 94 184 224 174 114 253 104 164 124

表4. 在降维RGB图像通道中应用之字形路径。从左到右:原始通道、起始点前的值替换、应用之字形路径后

遍历通道时,起始元素的位置取决于密钥和图像大小。为此,设(x, y)为之字形路径的起点。我们可以通过公式(7)和(8)获得该起点。

$$
x = \text{向下取整}(\text{图像行长度} / \text{密钥长度})
$$

if( x == 0) then( x = number of the rows);

如果 (x <= 图像列数量) 则 (y = 向下取整(图像列数量 / x))

else ( y = floor( x / number of the image columns)

7. 案例研究

假设对表6所示的RGB图像的红色通道进行加密的过程。该通道被编码,明文显示的编码通道为“aszaanzsznaaznxa”。为了生成密钥流,阈值设为0.75。表5展示了由4个粒子找到的候选解及其对应的能量值。在迭代1中,第一个粒子的候选解为’wyaz’,用于定义密钥流。密钥流中只有一个字符’a’出现在编码的RGB图像红色通道的明文中,因此该粒子的能量值为0.25。其他粒子的候选解及其对应能量值如表5所示。该过程共进行了2次迭代。由于在迭代2中第三个粒子的能量值最佳,为0.75,等于阈值,因此选择对应于此粒子的密钥流’znsd’用于加密。

国际安全及其应用杂志第11卷,第9期(2017年)

基于PSO密钥生成的RGB图像加密流密码方法

7. 案例研究(续)

迭代1 能量值 迭代2 能量值
wyak 0.25 zaas 1
bmfr 0.0 cdex 0.25
wsmo 0.25 znsd 0.75
naxa 1 szbb 0.5

表5. 寻找密钥流的粒子

根据字符在显示编码RGB图像通道的明文中的出现概率,为这些字符创建一个字符编码表。生成字符编码树,并遍历该树,为显示编码RGB图像通道的明文中的字符生成编码,如表7所示。通过取编码的十进制数值来确定明文中各字符的值。对于具有相同值的字符,在其值上加‘5’,以确保表中各值的唯一性。然后生成字符编码表。表7显示了明文中字符的值。

每个通道获得的字符编码表用于对显示相应编码RGB图像通道的明文中的字符以及密钥流中出现在相应通道明文中的字符进行编码。密钥流中未出现在明文中的字符则替换为其ASCII值。由于显示编码RGB图像通道的明文长度为16,而密钥流长度为4,因此对于超过密钥流长度的通道明文部分,其密钥值通过预定值和密钥流中的密钥值生成。该预定值通过对显示编码RGB图像通道的明文长度取2次根号得到。由于显示编码RGB图像通道的明文长度为16,计算得出预定值为2。在本例中,显示编码RGB图像通道的明文被分为4个块。密钥流中的密钥值定义了通道第一个块所使用的密钥。第二个块所使用的密钥值通过将第一个块的密钥值除以预定值得到的余数生成。类似地,第三个块和第四个块所使用的密钥值分别通过将第二个块和第三个块的密钥值除以预定值得到的余数生成。显示编码RGB图像通道的明文用密钥进行除法运算,得到商和余数。如果密钥值为0,则将商设为0,余数设为编码RGB图像通道的对应值。显然,商和余数与原始图像具有相同的尺寸。然后进行两次异或操作:第一次异或操作使用密钥和得到的商,第二次异或操作使用密钥和得到的余数。这两个结果图像被视为密文图像。

字符 字符的等效值(使用树的霍夫曼编码) 字符的等效值(十进制)
a 0 0
z 01 1
x 0011 3
n 111 7
s 1011 11

表7. 显示RGB图像通道的字符值

示意图7 原始缩减RGB图像。(b) 红色通道的除数密文图像。(c) 绿色通道的除数密文图像。(d) 蓝色通道的除数密文图像。(e) 红色通道的余数密文图像。(f) 绿色通道的余数密文图像。(g) 蓝色通道的余数密文图像)

密钥流 Key 值 (Ki) 的减少通道的一个RGB 图像 编码后减少的 RGB图像 通道 (Pi) 明文显示 编码后减少的 RGB图像通道 明文显示 编码后减少的RGB 图像通道之后 之字形路径:E(Pi) 商 (Qi) 余数 (Ri) Ci1= Qi 异或 Ki Ci2= Ri 异或 Ki
z 1 0 a 0 1 1 0 0 1
n 7 184 s 11 0 0 7 7 0
s 11 253 z 1 7 0 7 11 12
d 100 0 a 0 3 0 3 100 103
1 4 a 0 11 11 0 10 1
1 134 n 7 0 0 0 1 134
1 253 z 1 1 1 0 0 1
0 184 s 11 7 0 7 7 7
1 253 z 1 1 1 0 0 1
1 134 n 7 0 0 0 1 1
1 0 a 0 0 0 0 1 1
0 4 a 0 1 0 1 0 5
1 253 z 1 7 7 0 6 1
1 134 n 7 0 0 0 1 1
1 234 x 3 11 11 0 10 1
0 0 a 0 0 0 0 0 0

表8. RGB图像的一个通道的加密

8. 结果与讨论

实验在来自RGB图像库数据库[14]和[15]的不同尺寸图像上进行。实验所用系统配置为英特尔(R)酷睿(TM) i5处理器和4 GB内存。

表9显示了使用密钥流长度15加密不同大小RGB图像所需的时间。图8和图10分别显示了barche和郁金香的商和余数的缩减RGB图像以及红色、绿色和蓝色通道的密文图像。

RGB图像大小 时间(秒)
128*128 2.6
256*256 3.8
512*512 9.3

表9. 加密RGB图像所需时间

示意图8 barche.pbm图像的简化明文图像。(b,c,d) 红、绿、蓝通道的商 密文图像。(e,f,g) 红、绿、蓝通道的余数密文图像)

9. PKGCE与现有流密码过程的比较

使用PKGCE算法的流密码方法与现有的图像加密流密码过程进行了比较。比较结果如表10所示。

图像加密过程 最大密钥数量,应为存储
PKGCE 104
快速安全的流密码 256
密钥池化RC4 2048
mv3 259

表10. 使用PKGCE算法的流密码与现有图像加密方法的比较

结果表明,与现有方法相比,使用PKGCE方法的流密码具有良好的可扩展性。在采用PKGCE方法的流密码算法中,需要共享的密钥数量无需与构成RGB图像红、绿或蓝通道的元素数量一样长。假设对每个通道最多包含300个元素的RGB图像进行加密,即使我们将密钥流中的最大密钥数量设为26,每个通道字符编码表中的最大字符数也设为26,则需共享的最大总密钥数量为26*3+ 26=104 ,相较于表10中所示的其他图像加密算法而言更少。假设密钥流中放置的最大字符数为26,之所以选择26个字符是因为其包含了字母。考虑到表示编码后RGB图像通道的明文包含所有可行字符,字符编码表中应保留的最大字符数为26*3=78。因此,需分发的总密钥数量为78+26=104。

示意图9 tulips.ppm 图像的简化明文图像。(b, c, d) 红、绿、蓝通道的商 密文图像。(e, f, g) 红、绿、蓝通道的余数密文图像)

9.1. 使用PKGCE的流密码与快速安全的流密码的对比

比哈姆和塞贝里 [16]提出了一种用于加密的快速安全的流密码。该算法的缺点是初始置换需要完全保存256个密钥。生成的密钥流与要加密的明文无关。此外,明文未被编码。

9.2. 使用PKGCE的流密码与密钥池化RC4的对比

金等人[17]提出了一种实现和测量有效RC4流密码的方法。该算法的缺点是需要保存和共享的密钥数量较多。此外,明文未被编码。

9.3. 使用PKGCE的流密码与基于离散小波变换(DWT)和ELKNZ混沌流密码的部分图像加密方案的对比

埃尔‐卡米等人提出了一种基于离散小波变换(DWT)和混沌流密码( ELKNZ)的局部加密系统。该方法的缺点是密钥长度为464位。

9.4. 使用PKGCE的流密码与用于图像加密的流密码

吴和柯志杰 [19]提出了一种使用流密码过程加密图像的算法。其缺点是,如果伪随机数生成器被破解,则密钥可能被发现。

9.5. 使用PKGCE的流密码与使用DCT和流密码的图像加密

克里科等人 [20]提出了一种用于图像加密的选择性加密方法。该方法的缺点是,如果伪随机比特生成器被破解,则可用于加密的伪随机比特序列可能被获取。此外,用于生成伪随机比特序列的密钥以及用于置乱的密钥都必须传输给接收器。

9.6. 使用PKGCE的流密码与基于混沌系统的图像加密算法

Liu 等人,[21]提出了一种基于混沌的图像加密系统,采用流密码架构。该方法的缺点是密钥可能被破解,因为使用了伪随机数生成器。此外,共享的密钥数量更多。

9.7. 使用PKGCE的流密码与mv3流密码

Keller 等人,[22]提出了一种mv3,这是一种基于字的新型流密码,用于加密长数据流。该方法的缺点是共享的密钥数量更多。

10. 使用PKGCE的流密码方法的安全性分析

基于攻击模型和统计分析,考虑了使用PKGCE算法的流密码方法的安全性。

10.1. 攻击模型

假设密码分析者已知晓加密或解密方法的详细信息。

10.1.1. 仅密文图像攻击

密码分析者仅拥有包含商和余数的密文图像进行分析。攻击者通过在密文图像中寻找相似性来分析密文图像。由于密文图像具有真正的随机性,攻击者必须执行暴力穷尽密钥搜索攻击。算法抵抗穷尽密钥搜索攻击的稳定性取决于较大的密钥空间。在红、绿或蓝通道中的每一个通道中,针对明文的每个字符都会改变密钥,从而生成编码后的RGB图像通道以产生密文图像,这些密文图像在数学上几乎不可能被破解。因为在用于密钥生成的PSO算法中,将包括小写字母、大写字母、数字以及@、#、&等特殊字符在内的90个不同字符作为密钥数据库,在每个通道中,为了通过结果密文图像(包含商和余数)与密钥之间的异或阶段,攻击者必须在密文图像的每个元素上尝试密钥空间中的所有可能字符,该阶段的复杂度为90^image size。若同时考虑除法阶段,该复杂度可进一步获得:为了通过除法阶段,攻击者必须在密文图像的每个元素上尝试全部90个字符以找到密钥,因此所有可能的状态数量为 90^image size。在除法阶段未考虑阶乘形式(即90!)的原因是,商或余数中的相同元素并不意味着编码明文和密钥具有相同的值,因此即使在商和余数中看到相同的值,攻击者仍需尝试所有可能的状态。例如,在等式25*2+0=50和50*2+0=100中,尽管两个等式的商和余数分别为2和0,但被除数(编码明文)和除数(密钥)并不相同。在将编码明文除以密钥后,对所得商和余数执行异或操作的好处是,攻击者无法通过除法规则找到密钥与商或余数之间的任何关系。此外,由于在除法操作之前在图像上执行了之字形路径,而该路径的起点取决于由PSO算法生成的密钥大小,因此图像的每个元素都可能成为起点,因为攻击者不知道由PSO算法生成的密钥大小。因此,图像大小需乘以状态数的阶,最终得到的状态数阶为“90^image size*图像大小”。最后,由于使用包含26个小写字母的树遍历方法对原始压缩明文图像进行编码,攻击者必须构造所有可能的树,该操作的阶为26!。最终,考虑到3个通道,攻击者必须测试所有状态,其阶为“90^image size*图像大小*26!*3”,才能实施暴力穷尽密钥搜索攻击,这意味着对该算法实施此类攻击实际上是不可能的。

10.1.2. 已知明文图像攻击

密码分析者掌握主数据中的若干字符及对应的密文图像,包括商和余数密文图像。这些信息可能是通过内部信息获取或猜测得到的。他们的目标是利用这些值来恢复原始RGB图像通道。为了恢复原始RGB图像通道,必须找出加密所用的密钥流以及各通道的字符编码表。对表示图像的明文和密钥流进行编码,可以增强安全性,使得难以推断出用于编码后RGB图像通道的明文中字符所对应的值。假设 ‘P i ’ 表示明文中的一个字符,代表 RGB 图像的某个通道,’C i Q ’ 和 ‘C iR ’ 分别表示对应的商和余数密文图像中的密文图像。令 E(Pi) 表示明文的编码值。考虑到流密码方法,首先在商值 CiQ 和密钥值 Ki 之间执行异或操作,同时在余数值 CiR 和密钥值 Ki 之间也执行异或操作,然后执行 (9):

$$
E(Pi) = CiQ \times Ki + CiR
$$

除法和异或阶段是分开的。因此,专注于复杂度更高或与另一操作复杂度相当的操作,有助于计算密码分析的复杂度。攻击者仅有 Pi 和 Ci,因此必须找出对应的 E(Pi) 和密钥值 Ki 。为了找到 E(Pi),必须确定编码所使用的字符编码表。由于生成的字符编码表依赖于明文中的字符,攻击者需要预测所有可能排列顺序的字符编码表。可能的字符码树的数量级为 26!。此外,为了找到Ki,必须从90^image size种可能的密钥流中检测出密钥流。因此,对于攻击者来说,从更大的密钥空间和更多数量的可能字符编码表中找出所使用的密钥流以及用于编码的字符编码表是困难的。

10.1.3. 选择明文图像攻击

在这种攻击中,攻击者可以选择显示编码的RGB图像的明文,并获取相应的密文图像值。其目的是获取用于解密密文图像的密钥。在每个通道中,首先将显示编码的RGB图像的明文字符的编码值除以密钥,然后在密钥与这些字符的编码值之间执行异或操作,其中编码值包括前一阶段的商和余数,从而得到最终密文图像值,包括最终的商和余数值。如上所述,该算法不易受到选择明文攻击的影响。

10.2. 统计分析

一个好的密码系统应能抵抗任何统计攻击 [23]。

10.2.1. 直方图分析

图像直方图通过绘制每个强度级别上的像素数量来解释图像像素的分发情况。为了展示系统安全性并阻止信息泄露,密文图像必须在统计上与明文图像没有相似性。对原始图像的简化形式以及加密图像的直方图进行了分析,结果显示这两种图像的内容存在显著差异。直方图的x轴和y轴分别定义了色调变化和该特定色调下的像素数量(图11和图12)。

示意图10 peppers.ppm的降阶图像。(b, c, d) 降阶图像的红色、绿色和蓝色通道的直方图。(e, f, g) 降阶图像的红、绿、蓝通道商密文图像的直方图。(h, i, j) 降阶图像的红、绿、蓝通道余数密文图像的直方图)

从密文图像的直方图可以看出,所有尖峰值与明文图像的尖峰值明显不同,因此与明文图像没有统计上的相似性,从而不会为任何统计分析提供线索。

示意图11 barche.pbm的降阶图像。(b, c, d) 降阶图像红色、绿色和蓝色通道的直方图。(e, f, g) 降阶图像红、绿、蓝通道商密文图像的直方图。(h, I, j) 降阶图像红、绿、蓝通道余数密文图像的直方图)

10.2.2. 相关系数分析

密文图像与简化明文图像之间的相关系数也被用于分析图像之间的类比关系。图像之间的类比关系会暴露明文图像的身份信息。密文图像的相关系数明文图像和提出的方法表明,该方法具有良好的混淆和扩散能力,并且对统计攻击具有高度的抵抗力如[24]。相关系数在 −0.5和 −1.0之间或0.5和1.0之间,则表明图像之间存在强负相关或强正相关。如果相关系数在−0.1和−0.5之间或0.0和0.5之间,则表明图像之间存在弱负相关或弱正相关。这些图像来自RGB图像数据库[14]和[15]。表11分别显示了密钥流长度值15时密文图像与简化明文图像之间的相关系数。从表11可以看出,密文图像与明文图像之间具有较弱的相关性。这表明使用PKGCE的流密码加密的 RGB图像能够抵抗统计攻击。

相关性 之间 降阶像和 商 降阶间图像 和余数 之间 降阶像和 商 降阶间图像 和余数 之间 降阶像和 商 降阶间图像 和余数
相关性 红色通道 红色通道 绿色通道 绿色通道 蓝色通道 蓝色通道
peppers -0.0103 -0.0029 ‐9.3644e‐04 -0.0129 -0.0042 0.0039
barche 0.0013 0.0026 7.0863e‐04 0.0094 3.8009e‐04 0.0080
tulips 3.3366e‐06 -0.0048 -0.0010 -0.0052 6.0073e‐04 0.0016

表11. 密钥流长度15下简化明文图像与密文图像之间的相关系数

11. 结论

本文讨论了一种用于加密RGB图像的流密码方法。该方法采用一种基于粒子群优化的PKGCE算法,为待加密的RGB图像生成密钥流。这种使用流密码进行加密的方法减少了需要存储和分发的密钥数量。此外,用于表示编码后RGB图像通道(包括红色、绿色和蓝色通道)的明文中的密钥和字符,通过字符编码表中的值进行编码,这使得密码分析者难以追踪用于编码密钥和明文的字符编码表。此外,在每个通道的结果图像上执行之字形操作,以进一步提高安全性,其中之字形路径的起点取决于密钥和通道大小。PKGCE算法展示了对不同尺寸RGB图像进行加密的潜力。它克服了某些加密方法在密钥存储和分发方面的缺点。同时,该方法提出了一种速度适当的流密码算法。该方法能够抵抗多种类型的攻击,明文图像与密文图像之间的相关系数较弱,并且图像之间的直方图完全不同。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值