针对伪随机数在数字图像加密中保密性不佳的缺点,提出了利用真随机数对数字图像像素序列进行异或的加密算法。加密前对原图像进行基于Arnold变换的图像分块置乱,在接收方进行异或解密、Arnold变换周期还原获得原图像,加密过程简单,图像置乱提高了保密性。
一、数字图像文件加密过程
数字图像文件是由模拟图像数字化得到的,通常以二维数字组(行和列)形式表示,基本元素为像素,可以用计算机或数字电路来存储和处理。像素是在模拟图像数字化时对连续空间进行离散化得到的,每个像素具有整数行和列位置坐标,同时具有整数灰度值或颜色值,常见的有灰度图像和彩色图像。灰度图像中每个像素可以由O(黑)一255(白)的亮度值表示,0—255之间表示不同的灰度级,每幅彩色图像是由红绿蓝3幅不同颜色的灰度图像组合而成,因此数字图像加密本质上是对灰度图像进行的加密,即对灰色图像的像素位置坐标或灰度值的加密。
用真随机数对灰色图像进行加密的过程如图l所示, 首先对原始灰色图像进行基于Arnold变换的分块图像置乱,改变像素点的位置;然后将置乱图像像素点的8 bit灰度值序列与真随机序列相异或,改变原先像素点的灰度值,得到最终的加密图像。真随机序列由真随机数生成器产生,随机统计特性满足由美国国家标准与技术研究院( National Institute of Standards and Technology, NIST)指定的随机数统计特性测试标准,具有严格的独立性和完全的可靠性,与灰度值序列异或后的序列同样具有真随机的特性,因此加密图像具有很高的保密性。
1、图像置乱
在Arnold变换基础上提出一种分块图像置乱算法,如图2所示。
先对原始图像进行分块操作,再进行图像块和块内像素点的Arnold变换置乱,获得置乱图像,该算法迭代次数少、置乱速度快、执行效率高。Arnold变换具有周期性,即当迭代次数达到一定值三后,图像的所有像素点又都回到初始位置,置换图像恢复为原始图像。这个最小定值L被称为置乱周期L。当发送方将置乱次数为m(m64)的图像划分成若干个大小为凡×凡的图像块,得到N2/n2个图像块,对图像块和块内像素点都进行Arnold变换置乱,打乱图像块的排列顺序和块内像素点的位置,完成了整幅图像的置乱。二维Arnold变换公式可表示为:
当a=l,b=l时,得到标准的Arnold变换公式:
式中:当M=N/n时,(x,y)为图像块变换前的位置,(x',y’)为图像块变换后的位置;当M=n时,(x,y)为图像块内像素点变换前的位置,(x',y’)为图像块内像素点变换后的位置。
在数字图像的接收方,仍然可依据Arnold变换的周期性将分块的置乱图像还原为原始图像,假设图像块的Arnold变换置乱周期为Li,图像块内像素点的Arnold变换置乱周期为l2,发送方对图像块进行S,次Arnold变换,对图像块内像素点进行S2次Arnold变换,接收方只需要再对图像块作Li - Si次Amold变换,对图像块内像素点作Lz - S2次Amold变换,即可恢复出整幅图像。
2、真随机数的产生
用纯数字电路的方式实现了真随机数生成器(TRNG)的设计,其核心思想是利用查找表(LUT)的方法设计RS触发器,利用其亚稳态作为随机源,多组触发器的输出经过异或和同步处理后得到随机序列,PC机通过串口输出模块采集真随机序列,该TRNG在XC3S400物理平台上实现并进行测试验证。
如图3所示,RS触发器的R、S端连接时钟信号CLK,当倒Ⅸ=0时,触发器的稳定输出为(Q,Q)=(1,l);当CLK=:1时,经历决断时间后输出稳定在(Q,Q)=(1,O)or(0,1),更精确一些,在CLK上升沿到来时,触发器进入亚稳态,经过决断时间输出Q最终稳定在0或1,输出量Q具有随机性,这就为随机数的产生提供了熵源。
查找表(LUT)结构本质上是1个RAM,它类似于l块有4个输入、16个输出的16位的存储器。这个存储器里面存储了所有可能的结果,然后由输入来选择哪个结果应该输出。用户通过原理图或者HDL语言来描述1个逻辑电路时,FPGA的综合软件和布局布线软件会自动计算逻辑电路中所有可能的结果,并且把结果事先写入RAM。这样对输入信号进行逻辑运算就相当于输入1个地址进行查表,找出并输出地址对应的内容。即可利用LUT实现FPGA器件的逻辑功能。
因此可以用基于查找表的原理实现RS触发器的逻辑功能。如图4所示,编制两个可配置逻辑模块( CLB)即可实现RS触发器的逻辑功能,RS触发器的2个与非门可由Slice中的LUT设计完成,把Slicel和Slice2的位置约束在左右相邻的2个CLB中,并在前后加入2个内嵌的D触发器元件,分别称为触发器A和触发器Bd触发器A能减小输入时钟CLK的相位偏移,触发器B能解耦Q端的容性负载,提高输出序列的随机性。把基于LUT设计完成的RS触发器称之为LUT触发器。
对多个同步的LUT触发器的输出进行异或操作,可降低序列的相关性,使得产生的序列具有良好的随机性。设计的随机源模块如图5所示,对256个LUT触发器的输出进行异或。最后由2个D触发器以1个较低的时钟频率进行采样和同步,从而得到真随机序列。
该TRNG在XC3S400物理平台上实现并进行了测试验证,系统时钟频率为100 MHz,PC机通过串口输出模块采集到速率为12.5 MHz的真随机序列,其随机统计特性满足NIST指定的随机数统计特性测试标准,NIST测试结果如表1所示,15项指标测试均通过,说明产生的真随机数具有良好的随机性和可靠性。
二、实验结果与分析
为验证基于Arnold变换的分块图像置乱算法、真随机数加密的有效性和安全性,对其进行仿真实验,实验结果如图6所示,将加密后的图像再次与同一组真随机数进行异或,然后经过Amold周期置乱可以还原为原始图像。恢复后的图像同原始图像无明显差异,说明真随机数对置乱后的图像有很好的加密和解密作用,能应用于数字图像的加密中。
原始图像先经过分块置乱,打乱像素点的位置,得到初步的安全加密;再经过真随机数异或加密,使得攻击者恢复原图像,窃取图像信息的概率大大降低。
下面对该加密过程的抗攻击性能进行分析,检验该加密过程能否有效地阻止攻击者对图像的破坏,主要从抗剪切及抗噪声等方面进行分析,实验结果如图7—图9所示。
从图7可以看出加密图像在遭到剪切攻击后,能较好地恢复原始图像,且信息保存完整;从图8、图9可以看出加密图像加入各种噪声后恢复出的图像都比较清晰。以上结果说明该加密过程具有良好的抗剪切攻击和抗噪声性能。
小知识之Arnold变换
Arnold变换是一种常用的图像置乱技术,Arnold变换的定义如下:
对任意N*N矩阵(所有元素都相同的矩阵除外),设i,j为矩阵元素原始下标,经过Arnold变换后新下标为i',j',且满足下式:
i'=(i+j)mod N
j'=(i+2j)mod N
i,j:0,1,.........N-1
Arnold变换具有周期性,即经过若干次变换后,矩阵回到最初状态,且周期T与N的大小有关。理论基础没找到,但可以用程序来进行计算,可以设i,j从一个点出发,不断使用以上变换,再次回到这个起点时,经历的变换次数就是周期。