陈佳文,刘宇,杨涛
(电子科技大学电子科学与工程学院,四川成都,611731)
随着数字时代的不断深入,如何保证数字图像高质量、高安全性地在互联网上传输和存储已成为一大研究热点。由于图像信息属于高冗余、大数据量的二维数据结构,所以AES、3DES等加解密算法已显得不再适用[1]。
现阶段常用的图像加密方法可大致分为两类:图像置乱和图像扩散。图像置乱本质上是将图像中各像素点坐标位置进行打乱,其中最具代表的算法有Zigzag扫描[2]、Arnold算法[3]等;但是单用这类方法往往会使加密完的图像很难抵御如选择明文攻击、穷举攻击等现代密码分析技术。图像扩散本质上是依据算法改变图像中各个像素点的值,其中最常用的方法是利用混沌序列映射成的种子密图与待处理图像进行异或处理,典型的算法有Logistic混沌序列算法[4]、Lorenz混沌序列算法[5]等;这种方法涉及到的混沌序列产生算法往往具备很好的初值敏感性,符合密码设计中所需的混淆和扩散规则。
本设计将Arnold算法和经改进后的Logistic混沌序列算法进行组合,实现了一种可完成图像加密和解密功能的硬件系统,该设计具有消耗资源少、运算速度快、密钥空间大等特点,并且与外界交互端口简单,方便了设计的复用。
Arnold算法完成了加密过程中的图像置乱过程,具体公式如下:
其中(x,y)为原像素坐标,(x′,y')为置乱后的像素坐标,N为图像尺寸,也表示的是x、y以及x′、y′的取值范围。
Arnold迭代具有周期性,且仅能处理方形图像。输入图像尺寸决定了对应的Arnold迭代周期,表1列举了不同尺寸图像对应的Arnold迭代周期。
表1 输入图像尺寸N与对应Arnold迭代周期T的关系
当人为设置的迭代次数T′刚好等于待处理图像对应的Arnold迭代周期T时,经Arnold算法处理得到的输出图像将与输入图像完全一致,所以每个T′均对应一个有效迭代次数Treal,对应关系如图1所示。
图1 人为设置的迭代周期次数T'与对应的有效迭代次
数Treal的关系示意图
Arnold算法是可逆的,对应公式如下:
现阶段常用的Arnold解密方法可分为两类:第一类方法是结合T'和T求出剩余迭代次数TlastkT−T′= ,后利用公式(1)对密文进行Tlast次迭代处理,以完成解密,但是这种方法可能引发因T′过小而导致解密延时过长的问题;第二类方法主要依据公式(2),仅需保证解密迭代次数与加密迭代次数一致即可正确解密。
加密时,本设计采用了提取有效迭代次数Treal的方法,避免了执行过程中的无效迭代;解密时,本设计依据第二类解密方法,保证了解密延时稳定性。Arnold算法涉及到的密钥如表2所示。
表2 Arnold算法对应密钥
Logistic算法本质上是产生图像扩散必须的种子密图。本设计采用的是密钥空间更大、初值敏感性更好的分段Logistic混沌映射算法,如公式(3)所示:
方 程 内 控 制 参 数µ∈ ( 0.344,0.736 ) ∪ ( 0.848,1.752)∪(1 .792,2),初值x0∈( −1 ,1),当前迭代次数n= 0,1,2…。
为了避免数字混沌序列内部存在的短周期问题、提高混沌序列的随机性,本设计在混沌序列产生过程中引入了M序列扰动,原理如图2所示,其中Titer为扰动间隔,iter_cnt为迭代次数计数器。
图2 M序列扰动原理示意图
当迭代次数等于扰动间隔时,iter_cnt清零,Logistic算法当前迭代结果xn+1将与线性反馈移位寄存器(LFSR)当前迭代结果mn进行基于一定位宽的位异或,位宽数值由扰动幅度aD确定。扰动结果将作为Logistic算法下次迭代的输入以及当前迭代得到的混沌序列元素。
本设计M序列产生依据的本原方程式如公式(4)所示[6]:
本设计将利用Logistic算法得到种子密图与待处理图像进行像素点间的异或处理。由于异或存在可逆性,所以加密和解密时的Logistic算法执行过程完全一致,仅需保证解密密钥与加密密钥一致,即可正确解密。Logistic算法涉及到的密钥如表3所示。
表3 Logistic算法对应密钥
因Arnold算法仅可处理方图,为了使本设计的应用场景一般化,项目中增加了对待处理图像的补零和拆解处理,用于非方图与方图之间的转换,其中拆解是补零的逆操作,具体原理如图3所示。
图3 待处理图像补零过程示意图
本设计采用了Arnold算法和Logistic混沌算法相结合的图像加解密方法。加密时,输入图像数据将依次经过补零处理、Arnold算法处理以及Logistic算法处理,Logistic算法处理结果作为加密最终结果。解密时,基于各算法处理特点,解密过程为加密的逆过程:待处理图像将依次经过Logistic算法处理、Arnold算法处理以及拆解处理,拆解处理的结果即为解密最终结果。
为验证算法的可行性,本设计采用Matlab对图像加密和解密过程分别进行了仿真验证,其中以143×181分辨率的输入图像为例,仿真结果如图4和图5所示。
图4 143×181输入图像加密
图5 143×181输入图像解密
本设计架构图如图6所示,各模块之间以及模块与外界之间的交互均采用vaild-ready握手方式。整个设计包括5个模块,分别是顶层控制模块Ctrl_top、补零拆解模块Pad_Slic、缓存模块PIPO_RAM、图像置乱模块Arnold和图像扩散模块Logistic。
图6 硬件系统架构图
顶层控制模块主要包含3个功能:
(1)接收外界模块传来的加/解密开始信号、配置参数包等信号,加密时需额外接收外界模块提供的输入图像数据;
(2)对外界模块传来的配置参数包进行拆包,得到各算法模块所需密钥和配置参数,后将这些参数传送给各个算法模块;
(3)将缓存模块发出的加/解密完成信号、加/解密结果图像数据以数据流的形式输出给外界模块。
补零拆解模块主要完成加密时的补零处理和解密时的拆解处理。当补零拆解模块与缓存模块达成握手时,补零拆解模块将按地址顺序依次读出待处理输入图像像素,并以流水线的形式对各像素进行处理和写回。
缓存模块主要包含3个功能:
(1)负责待处理输入图像的缓存;
(2)负责加密或解密过程中所有中间处理图像结果的缓存;
(3)负责处理完成结果图像的缓存。
为追求资源消耗和系统性能的平衡,缓存模块的实现依据乒乓缓存原理,这样可以保证读写访问的相互独立、防止数据覆盖。因本设计应用场景涉及的图像尺寸不大,所以采用2个RAM作为乒乓缓存单元,RAM的位宽取决于像素位宽、深度取决于输入图像像素总数。
缓存模块与各模块的握手交互由内部状态机控制,对应的状态跳转图如图7所示。wr_data_last信号为缓存模块输入,由各处理模块提供,表示当前写入缓存模块的像素是图像的最后一个像素;iter_last信号表示当前迭代是最后一次迭代;iter_pass表示跳过迭代提前结束。当处于空闲状态(IDLE)时,缓存模块仅对顶层控制模块开放读ready握手信号,保证顶层控制模块可以从缓存模块中读取处理结果图像;当处于配置状态(CONFIG)时,缓存模块仅对顶层控制模块开放写ready握手信号,保证顶层控制模块可以向缓存模块中写入待处理图像像素的同时,也提醒了外界模块算法处理完成。其余各状态,缓存模块仅对对应处理模块开放读写握手信号。
图7 缓存模块内状态机跳转图
图像置乱模块主要依据Arnold算法原理,以流水线的形式完成加密和解密过程中的图像置乱处理。
图像扩散模块主要包含3个功能:
(1)依据Logistic算法产生混沌序列;
(2)将混沌序列中各元素数值通过线性变换成0到255内的整数,以得到种子密图;
(3)当缓存模块向图像扩散模块开放读写握手信号时,图像扩散模块将依据现有的种子密图像素,向缓存模块读取待处理图像像素,并作异或扩散处理,后将得到的结果写回缓存模块。
为提高系统性能,Logistic算法产生种子密图的过程与补零/拆解以及Arnold处理过程相互独立,Arnold处理延时仅会影响到异或扩散过程。Logistic算法模块架构图如图8所示。
图8 Logistic算法模块架构图
本设计以143×181分辨率的图像为例,选用Xilinx Artix-7 FPGA开发板进行上板演示,演示结果如图9所示。图中的LCD屏分别呈现了原图以及经系统处理后的加密结果、正确解密结果和非正确解密结果,对比软件仿真可知一致,证明设计成功。
图9 上板演示结果
本设计选用图像加密中常用的Arnold算法和经过改进后的Logistic混沌序列算法,实现了一种可完成图像加密和解密功能的硬件系统。该设计采用乒乓缓存机制,在保证消耗资源少的同时提高了系统整体性能,另外设计还采用了提取有效迭代次数、多算法并行执行、结果预取等优化处理。外界模块仅需依据握手交互原则,在加密和解密前向设计提供开始信号、密钥以及待处理图像数据,系统便会自动进行密钥分配以及算法处理,当算法处理完毕时,系统便会开放对外界模块的握手供外界模块访问。