大家好,又见面了,我是你们的朋友全栈君。
传统计算机平台下的图像加密技术已经得到了广泛的研究和应用,但移动平台受限于当前的硬件架构,无法直接继承传统平台的安全性技术。针时智能手机等移动平台中的图像信息安全问题,提出了一种基于Android移动平台的图像加密方案。
一、图像加密技术
1、传统图像加密技术分析
传统的图像加密技术主要基于现代密码体制。通常将图像像素信息看作一维数据流,在密钥的控制下,利用加密算法(常用加密算法如EDS、AES、RC6等)进行加密。但现代密码体制主要是为文本信息设计,而没有考虑到数字图像数据量大、相关性强、空间有序等特点,故对图像信息加密具有较大的计算量,加密效率也不高。随着人们对多媒体信息的安全越来越重视,研究者提出了多种针对图像的加密技术,其主要的思想是将数字图像进行灰度变换和图像置乱。灰度变换是指改变图像像素点的灰度值的大小,使得加密前后,像素序列的内容完全改变,有人利用灰度变换对图像进行加密,得到了较好的加密效果。图像置乱就是将图像的信息次序打乱,将像素移动到像素的位置上,像素移动到f像素的位置上等,使其变换成杂乱无章难以辨认的图像。有人首先利用混沌系统构造随机序列,然后将像素矩阵的行或者列按照随机序列重新排列,得到了比较理想的加密效果。但这些方法,一般在灰度变换或者构造随机序列的过程中需要较大的计算量,如果直接移植到移动平台,可能会影响图像加密速度。
2、混沌系统
混沌是非线性系统中出现的一种貌似无规则的类随机过程,是普遍存在的复杂运动形式和自然现象。混沌系统一般都具有对初始条件的敏感依赖性、整体稳定而局部不稳定、轨道不稳定及分岔、长期不可预测性等特点。此系统由于具有良好的随机特点,因此经常应用于图像加密算法一混沌系统中常见的有Logistic系统和tent系统。
Logistic映射源自于对人口统计的动力学系统,是一个典型非线性混沌方程。它具有遍历性、非周期性、长期不可预测性以及非收敛性等良好的混沌性质,其映射定义为(当系数3. 596≤a≤4时,系统进入混沌状态):
Tent系统是一种分段线性的一维映射,具有均匀的概率密度与功率谱密度,以及较理想的自相关性。Tent映射定义为(其中当O
二、Android移动平台图像加密
1、算法设计思想
本文通过对图像加密技术的研究,提出了一种创新的移动平台图像加密算法。首先将待加密图像矩阵J分成若干个小的矩阵块;再利用图像置乱与灰度变换处理每一个小的分块;然后把每个分块内的像素值发散到其他分块内;最后将所有分块合成加密后的图片,加密流程如图1所示。本算法在保证加密效果的同时,减少了图像置乱处理所需要的计算量,使之适合在移动平台上加密图像。
2、加密算法描述
(1)预处理
对于原始图片f,其像素矩阵大小为MXN,扩充(用O填充)像素矩阵使其大小变为M’×N’,使得其中m’、N’为完全平方数,不妨设M’=m,N’=n。将M’×N’的像素矩阵按顺序分成m×n2个大小为m×n的分块。为了方便起见,用二维数组Aij来表示第(i,j个分块。用二维数组BAij[x][y]来表示分块A[ij]中的像素值(其中0≤i≤m-1,O≤j≤n-l,0≤z≤m-l,O≤y≤n-1)。为了增加安全性,先将Logistic混沌系统和Tent混沌系统分别迭代keyl、key2次。迭代次数keyl、key2作为加密密钥。其中Logistic的初值作为密钥key3,参数a作为密钥key4。其中tent系统的初值作为密钥key5。参数b作为密钥key6。
(2)分块内的处理
利用Logistic混沌系统构造序列T[m×n],使得O≤T[i]≤mXn-l,其中o≤i≤mXn-1,并且有T[i]≠T[j],当i≠j时。对每个分块内像素值的处理方法如下,以分块A[i]j]为例。
a)构造置换数组
利用tent混沌系统产生一个随机数temp。再对mXn取余,得到新的序列T[mXn]。公式表述:
b)按照序列T[mxn]的顺序,置换分块内的像素值
如对于BA[ij] [x] [y],首先计算置换位置,设:
c)异或操作
对于分块内的每一个像素值BA[ij] [x] [y],利用tent混沌系统产生一个伪随机数e,再将像素值BA[ij] [x] [y]与e异或。即:
(4)将步骤(3)处置之后的分块按列序优先从小到大的顺序排列,得到加密后的图像I’。
3、解密算法描述:
利用加密时密钥keyl、key2、key3、key4、key5、key6的值,按照加密的逆过程解密,然后去掉添加的多余数据(如果存在),即可得到解密后的图像。
三、实验分析
实验的测试平台为双核CPU,其型号为ARM Cortex-A9,频率为l024MHz,RAM容量为lGB,搭载Android 4.O操作系统。利用本文的算法对Lena(256×256)加密的效果如图2所示。图2(a)为加密前的图像,图2(b)为加密后的图像,图2(c)为解密后的图像,由图可知,通过本算法,达到了较好的加密效果,通过加密后的图像无法看到原图的信息。
1、密钥敏感性分析
通过对密钥做微小的改变来测试密文对密钥的敏感性。为了简单起见,这里只测试对密钥key3的敏感性。将couple(256×256)图像作为用例,不妨令key3=0.9000000。图3(a)为加密前的图像,图3(b)为加密后的图像,图3(c)为输入正确密钥key3=0. 9000000后得到的解密图像。图3(d)为输入错误密钥key3=0.90000001后得到的解密图像。
2、直方图分析
Lena图像加密前后的直方图对比如图4所示,该直方图是一幅图像像素有序分布的图表,反映了图像处理之后像素的分布。由图4可知,加密后直方图分布非常均匀,掩盖了图像加密前像素值的分布规律,从而可以有效地抵抗统计分析和已知密文攻击。
3、相关性分析
加密效果之一是尽可能地降低相邻像素的相关性,用如下离散化式计算相关系数:
随机在水平、垂直方向各选取1000对相邻像素值,利用上面的公式计算出相关系数,如表1所列。通过对比加密前后的相关系数,可以发现本算法有效地减小了相邻像素值之间的相关性。
4、信息熵分析
图像信息熵是一种特征的统计形式,它反映了图像中平均信息量的多少。在信息论中,一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。所以信息熵也可以说是系统有序化程度的一个度量。
对图像信息熵的计算,可利用如下公式:
其中,p(i)表示图像中灰度值为Z的像素所占的比例。利用以上公式可计算出加密前后的信息熵,表2为加密前后的信息熵的比较,从中看出加密后的各个颜色分量的信息熵均大于加密前的信息熵,说明加密后图像中的信息变得混乱,达到了加密的效果。
小知识之直方图
直方图(Histogram)又称质量分布图。是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/145418.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...