混沌与图像合成相结合的实时图像加密算法
2014-07-29刘颖刘章
刘颖 刘章
【摘要】 本文基于matlab平台利用循环程序从视频中读取各帧图像,将置乱后图像与私钥图像进行合成,应用一维logistic映射产生的混沌置乱序列,对合成图像进行行、列置乱,从而实现实时图像加密。
【关键词】 混沌 matlab logistic映射 私钥 实时图像
在信息化时代,保证数字图像的交互安全意义重大。在此背景之下,图像加密技术发展迅速,混沌加密是当前图像加密技术的主流。低维混沌系统结构简单、效率较高,抗穷举法攻击较差,算法安全性较低。为扩大密钥空间和增加混沌序列随机性,人们设计了超混沌系统、级联混沌系统、复合混沌等复杂的系统[1],这些算法虽大大提高了安全性但往往耗时较多,不适用于实时图像的处理。
本文提出一种将混沌与图像合成相结合的新型加密算法,加密算法的程序开发平台为Matlab7.0,涉及计算机模拟环境为 Windows 7/XP/2003/ 2010 。加密算法所涉及的实时图像取自于avi视频,加密中的混沌序列源于logistic映射。
Logistic方程为xn+1=1-μx,其中μ∈(0,2)、xn∈[-1,1],随着控制参數由小到大逐渐增长就可以演示倍周期分岔走向混沌的过程。logistic映射在混沌区,具有伪随机性、初值敏感性、遍历性及收敛性[2]。由此可见,给定初始值xn及μ,由logistic映射生成混沌序列,即可对图像进行初步置乱。本文在此基础上构造出既满足图像安全性又不给传输和存取带来过大延迟的加密程序。其基本思想是引入一张图像作为加密、解密者共享的密钥图像,将密钥图像处理后与待加密图像合成进行logistic映射置乱加密,从而得到加密图像。一张图像所含有的信息量庞大,这就大大增加了密钥空间,并且改变了原图像的像素值,确保了图像加密的安全性。
密钥图像要与待加密图像进行合成,如果密钥图像偏大将耗费不必要的计算量,密钥偏小又起不到隐藏待加密图像的目的。因此,本文将密钥图像进行预处理使其与待加密图像大小相等。matlab读入图像的数据类型是uint8,而如果直接使用unit8进行两个图像的合成就会造成数值溢出,因此在合成前先将图像格式转换成double型,合成后再转换成unit8型进行存储。
logistic混沌具有初值敏感性,初值的数量及其随机性决定了密钥空间的大小。为了增大密钥空间本算法置乱行和列的初值与参数分别设置不同的数值,当其x0= 0.78、μ1=1.932、y0=0.56、μ2=1.689时,加密前后图像如图1:
解密过程为加密过程的逆运算,其基本流程为首先读取加密图像,其次利用Logistic映射复原置乱图像,再次引入密钥图像进行预处理,最后从已复原置乱图像中分离出原图像。
最后,对该加密算法进行了安全性、实时性分析。首先,进行密钥敏感性测试。该算法中密钥的一点微小变化将产生完全不同的解密效果。第二、密钥空间分析。一个好的加密方案是对密钥敏感的同时也应该具有足够大的密钥空间,以抵抗各种攻击。在本项目的算法中,两个方程的参数和初始值都能作为密钥。matlab默认的数据类型是双精度(8个字节),数据具有16位有效数字,因此该算法的密钥空间可以达到1064,再加上私钥图像所占空间,此算法具有足够大的密钥空间抵抗攻击。第三、对此加密方案做实时性分析。本文所涉及的图像加密算法包含像素的置换、图像的加合等,虽然密钥空间较大但迭代次数较少,因此计算速度较快,加密一张图片仅需要0.012S。而人眼观看物体时,视神经对物体的印象不会立即消失,要延续1/24秒左右的时间,人眼的这种性质被称为“眼睛的视觉暂留”[3]。可见,本文所采用的加密算法是可以满足实时性要求的。
综上,本文基于matlab平台将logistic混沌与图像合成相结合实现了实时图像加密。经数值仿真实验证明,该加密算法为无损压缩,加密效果好,具有较强的抗攻击性,加密效率较高,能满足实时图像加密的要求。