设为首页 加入收藏

TOP

12.5.3 基于灰度值变换的混沌加密
2014-03-31 09:54:51 】 浏览:270
Tags:12.5.3 基于 变换 混沌 加密

12.5.3  基于灰度值变换的混沌加密

图像置乱算法简单高效、易于实现。然而,我们也很容易发现,基于置乱的图像加密算法并没有从本质上改变图像的像素集合的内容,而只是简单地对图像中各像素的位置进行了重排列。而一旦图像像素集合固定下来,那么图像像素的排列组合情况就已经稳定了。对密图的破解结果恰恰就位列其中,特别是当图像的尺寸比较小的时候,似乎置乱算法的安全性就不那么令人放心了。于是,一种能够彻底改变图像本来面貌(对每个像素的灰度值进行加密变换,而非简单的调整像素之间的位置)的算法呼之欲出。这就是基于灰度变换的图像加密算法。

混沌是一种貌似无规则的运动,因此混沌映射生成的序列理想情况下应该是一种天然的伪随机序列,通过这种性能优良的伪随机序列对原有图像中的像素序列进行处理,就可以得到具有白噪声特性的密图。混沌又是一种确定性的运动,在混沌映射的初始状态给定下,那么生成的混沌序列也就固定了,这意味着加密过程是可逆的,所以对应的解密算法是必然存在的。由于这些算法充分利用了混沌序列的天然优势,所以基于灰度变换的图像混沌加密算法的安全性是非常高的。本小节就向读者介绍一种基于灰度变换的图像混沌加密算法。

在对图像进行基于像素置换的加密操作之前,先对图像进行预处理,有效的预处理操作能够增加加密算法的安全性。本算法选用S盒运算作为图像的预处理手段。S盒的非线性很高,因此S盒变换能够较大地增加攻击的难度。假设彩色图像的一个像素P由3个8比特值组成,其中C1表示B分量,C2表示G分量,C3表示R分量,那么该像素的S盒代数算子定义如下:

很明显,S盒的逆运算就是它本身,即p = SBox(p′)。

数字图像Input_image,用MW×H表示,W是图像的宽度,H是图像的高度(均以像素计)。图像的一个像素P由3个8比特值组成。下文所用双精度型的值key1~ key5由用户输入。具体的加密过程如图12-17所示,具体描述如下。

① 将Input_image进行S盒变换。

② 记W×H的图像Input_image像素点的灰度值为二维矩阵P(x, y),将其转换为一维像素数组P(H×x+y),即P0, P1, P2, P3, …,Pn,其中W×H=n。记上述序列为{Pi}。

③ 输入密钥key1,用Chebychev映射迭代后,排除前100个值,取后续数目为W×H×9的Chebychev混沌序列{Xc},Xc∈( 1,1)。

④ 将{Pi}中的每个像素的各个分量与{Xb}中的数值逐个进行XOR运算得到{X′b}。

⑤ 输入双精度型密钥(key2, key3, key4, key5),其中key2、key3为双Logistic序列的初始状态,key2、key3∈(0, 1),key4、key5为双Logistic序列的初始混沌参数,key4、key5∈(3.7, 4)。为了使系统充分发散,输入初始状态后迭代排除前100个值,得到两个Logistic序列的状态值XL10和XL20。

⑥ 将XL10 和XL20代入Logistic映射进行迭代,获得的XL11 和XL21继续带入Logistic映射进行迭代……每次迭代的初始值XL1n由上一次迭代的最终结果作为输入,直到生成容量为i=W×H×3的两个双精度数组{XL1i}和{XL2i}为止,图为{XL1i}的生成过程,{XL2i}的生成和{XL1i}的一样。每次迭代的次数依次取自数组{Xb }。同时,每次迭代不断更换参数μ,产生数组{XL1i}的参数μ依次取自{Xai},产生{XL2i}时所使用的参数μ依次取自{Xaj}。

⑦ 对{XL1i}和{XL2i}进行放大取模操作,即{XL1i′}={XL1i}×1014mod255,{XL2i′}={XL2i}× 1014mod255,得到{XL1i′}和{XL2i′},图仅以单个Logistic序列{XL1i′}的生成为例,第2个Logistic序列{XL2i′}的生成过程同第1个。

⑧ 将{XL1i′}和{XL2i′}的各个值与{Pi}中的每个像素的各个分量进行XOR运算,即Pi′=Pi⊕XL2i′⊕XL1i′。

至此,完成加密过程。

上述第4步中的{X′b}和第6步中的{Xai}、{Xaj}的详细生成过程如下。

①对{Xc}取绝对值,并将为0的值加一个较小的正数δ,最终得到{Xc′},Xc′∈(0, 1)。

②取{Xc′}中序号为0, 1, 3, 4, 6, 7…的项作为{Xcj′},序号为2, 5, 8, 11, 14…的项作为{Xci′},通过线性变换{Xa}={Xcj′}×0.3+3.7,把{Xa}按奇偶分为两个序列{Xai}和{Xaj},作为双Logistic映射的参数μ。

③对{Xci′}进行放大、量化和模运算{Xb}={Xc′}×1014mod255,{Xb}为[0, 255]之间的整数,数目为W×H×3个。

④将{Xb}中的各项逐个与图像MW×H中各像素的3个分量进行XOR运算,得到新整数序列{Xb′},即Xb′=Pi⊕Xb。通过取模运算可以有效控制方法的复杂度。

图12-18是图12-17中虚线框内过程的放大表述。

解密过程与加密过程相似,这里不再赘述。限于篇幅,这里不再详细列出该算法的实现程序,随书光盘中给出了详细的代码清单,可供读者参考。
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇12.5.2 基于起始地址法的混沌置乱 下一篇12.5.4 对图像进行混沌加密的评价..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目