安企神电脑监控软件 在线试用
扫码咨询客服
安企神电脑监控软件、局域网监控软件
首页
功能介绍
产品简介
下载中心
帮助中心
客户列表
关于安企神

基于最小粒度全置乱图像加密算法

更新时间:2022-10-28 15:43:46


本文简介:基于最小粒度全置乱图像加密算法是通过对图像比特全排列,同时完成全矩阵范围内像素比特位置置乱和像素值替换两个操作。图像比特全排序的驱动是依赖非线性混沌动力系统来完成的。在众多的混沌映射中,依据混沌置乱信息熵选择用于比特全排列的混沌映射。一、选择混沌映射常见的混沌很多,如一维Logistc映射、二维的Henon映射、三维的Lorenz映射和Chua映射等。在众多的混沌映射中,选择哪一个混沌序列才能使图

基于最小粒度全置乱图像加密算法

基于最小粒度全置乱图像加密算法是通过对图像比特全排列,同时完成全矩阵范围内像素比特位置置乱和像素值替换两个操作。图像比特全排序的驱动是依赖非线性混沌动力系统来完成的。在众多的混沌映射中,依据混沌置乱信息熵选择用于比特全排列的混沌映射。

一、选择混沌映射

常见的混沌很多,如一维Logistc映射、二维的Henon映射、三维的Lorenz映射和Chua映射等。在众多的混沌映射中,选择哪一个混沌序列才能使图像全排列加密算法安全性好,本文提出应用混沌置乱熵选择标准。

从置乱信息熵定义可知,置乱信息熵越大,图像全排列加密强度越高,安全性越好。依据置乱信息熵的定义,实验测得常见混沌置乱信息熵如表所示。

基于最小粒度全置乱图像加密算法

表第一行数字代表窗口宽度。从实验数据可见,Lorenz混沌整体置乱信息熵高于Logistc映射、Henon映射和Chua映射,而Lorenz混沌分量x的置乱信息熵强于分量y、z的置乱信息熵。故本文图像比特全排列使用Lorenz混沌分量x驱动。

二、混沌加密算法

1、 图像比特全排列算法

对于一幅任意大小的灰度图像I,设其大小为M×N。

a)依据混沌置乱信息熵,选择合适的混沌动力学方程,给出与密钥相关的初始值x1或初始向量V1,并令K=1。

b)应用选择的混沌方程迭代m=m×n×8次,生成混沌实值序列{x1,x2,…,xm}或向量序列{V1,V2,V3,…,Vm},依据置乱信息熵,选择置乱信息熵最大的一行,成为实值序列{x1,x2,…,xm}。

c)从小到大把混沌实值序列{x1,x2,…,xm}排序,得到排序后的序列{y1,y2,…,ym}。

d)计算置乱地址码集{t1,t2,…,tm},ti∈{1,2,…,m}。ti是xi在排序后的序列{y1,y2,…,ym}中的下标。

e)把二维图像变成一维数组,再把每个数组元素变成二进制比特序列,顺序连接形成长度为M×N×8的比特序列,利用置乱地址码集进行扰乱,然后还原成一维十进制数组,完成图像比特全置乱。

2、图像替换算法

虽然上述图像最小粒度(比特)全排列已使图像像素值和位置发生改变,具有很好的加密信息熵,但仅仅全排列加密并不安全,不能抵御差分攻击能力。为了增加图像抗差分攻击能力,我们又进行了像素值替换算法。

基本思想如下:仿照混沌拉伸和折叠的运行机理,首先把要替换的像素放到更大的运算空间进行;为了增大轨道回归周期,把当前像素尽可能地与前面已经加密的像素进行运算,最后折叠回像素空间。

a)给出种子元素seed,选择合适的混沌。

b)设Ei,Ei+1分别代表第i个和第i+1个已经加密元素,Pi+2代表顺序号为i+2的欲加密元素,分别把Ei,Ei+1转换为二进制串并进行连接,作为hash函数的输入值。若采用MD5加密算法,输出长度为32个十六进制串,转化为十进制类型的数值,然后作为混沌参数输入。迭代一次的输出值转换为uint64类型的数值,与当前欲加密像素做相加或异或操作,把得到的结果模256折叠回像素值区间。

基于最小粒度全置乱图像加密算法

其中:hash()为哈希函数;chaosfunction()为生成混沌序列的混沌映射;F()为把哈希函数输出的32个十六进制串转换为十进制类型的数值。

c)重复上述过程直到最后一个元素。

d)把一维数组转换为表示图像的二维矩阵。

说明:

a)对于第一个元素的加密,w值由用户给定,对于生成第二个元素w值过程中,因为没有E0,可由用户指定任意一个长度为8的十六进制串。

b)数组元素转换为二进制序列的方法。pt(i,j)代表数组元素p(i,j)变换成二进制后的第t个数字。

基于最小粒度全置乱图像加密算法

式中,可以把灰度图像变换成由0,1组成的比特矩阵。相反,运用下面公式可以把pt(i,j)变成灰度像素p(i,j)。

基于最小粒度全置乱图像加密算法

3、解密算法

a)给定相同的初始值,先进行图像替换算法的逆操作,把密文图像转换为一维数组,从最后一个加密元素开始向前解密,直到第一个元素。

b)根据图像比特全排列算法进行操作,不同的是i从1到m,把第i列的比特值用第ti列的比特值替换。

三、基于最小粒度全置乱图像加密算法安全性分析

1、密钥空间

一个安全可靠的加密算法应拥有足够大的密钥空间。而对于基于混沌映射的加密算法,参数(包括初始值)往往用作密钥,因此控制参数越多就意味着密钥越多,参数空间大才能保证密钥空间大。本文提出的加密算法分两步:

a)图像比特全置乱,密钥为选择混沌的初始值及参数,Lorenz的密钥初值为x0=10e-15,yo=10e-15,zo=10e-14;

b)图像比特置换,密钥为初始种子,用于哈希函数输入的Eo、混沌参数。在这样一个足够大的密钥空间中,采用穷举法进行攻击是没有意义的。

2、统计分析

统计分析包括直方图分析和相邻像素点的相关性分析。

1)原始图像及密文图像数字特征

下表给出了密文图像及其直方图的各种数字特征。

基于最小粒度全置乱图像加密算法从实验结果可见,建议算法的密文信息熵、密文均值、方差、直方图方差较Huang算法、Ye算法更加优越。具有更强的抗攻击能力。

2)相邻像素点的相关性分析

以水平相关性为例,从图像中随机选择1000对两个水平邻接像素,选择1000次,运用下面公式计算每一对相邻像素的平均相关系数。

基于最小粒度全置乱图像加密算法

x,y图像中两个邻接像素灰度值,在数值计算中使用下面的离散公式。

基于最小粒度全置乱图像加密算法

原始图像和加密图像相关性分析如表所示。由表可知,原始图像相邻像素相关系数接近1,加密图像相邻像素相关系数接近0。经文件加密,图像相邻像素间相关度很低。同时,比较建议算法和Ye算法、Huang算法可知,建议算法比Ye算法优越,与Huang算法具有同等的去相关性能。这说明攻击者很难通过统计攻击方法破解加密图像。

基于最小粒度全置乱图像加密算法

3)密文对密钥的敏感性分析

密文对密钥的依赖性可以采用计算两幅图像间的相关系数进行验证。用上文公式进行计算,不同的是x,y代表使用不同密钥加密后密文图像的像素值,像素为整个图像。根据密文对密钥的敏感性定义可知,如果加密方法对密钥具有敏感性,那么微小差异的密钥对同一幅图像进行加密后得到的结果应具有很大差异,具有很小的相关性。本文选择Lorenz分量x0密钥先后两次相差10的-10次方,测试相关系数结果为1.263862e-4,从该数据可以得知,算法对密钥具有很高的敏感性。这主要是因为混沌敏感性和哈希函数敏感性再加上最小粒度置乱的结果。

4)差分分析

为了抵抗差分攻击,明文细小的改变应该造成密文巨大的变化。为了测试改变一个像素对密文图像的影响,使用两个常用的定量测试方法:像素个数变化率(NPCR)和整体平均变化密度(UACI),定义如下:

基于最小粒度全置乱图像加密算法

其中:c1和c2是两个密文图像,其对应的明文图像仅有一个像素差异,c1、c2在(i,j)处的灰度值表示为c1(i,j)、c2(i,j),W、H是密文图像的宽度和高度。D(i,j)由c1(i,j)、c2(i,j)决定,如果c1(i,j)=c2(i,j),则D(i,j)=1;否则,D(i,j)=0。

明文首先被加密,接着随机选择图像中的一个像素并改动,被修改的图像用相同的密钥加密生成新的密文图像。最后计算NPCR和UACI,其值如下表所示。

基于最小粒度全置乱图像加密算法

由表可以看出,建议算法比Ye算法和Huang算法在NPCR、UACI两个度量指标方面具有更大的优越性。因而,加密算法能有效抗击外界差分攻击。

本文首先给出选择混沌作为图像比特全排列准则,即依据混沌信息熵,选择适合图像置乱的混沌映射;接着,把图像转换为二值比特串进行全排列,在所选混沌的驱动下,利用混沌轨道不可预测的特性,完成最大程度的置乱;最后,依据混沌映射原理,设计图像比特替换算法,完成图像置乱和替换的加密算法。

小知识之置乱

所谓“置乱”,就是将图像的信息次序打乱,将a像素移动到b像素的位置上,b像素移动到c像素的位置上……使其变换成杂乱无章难以辨认的图像。

立即下载试用

基于3DES加密算法的研究

关于加密方法,我们之前有介绍过很多,最近大出风头的秀尔算法和DES、MD5等等一直占据鳌头,今天我们来介绍一个小众的加密算法——就是3DES。

加密算法主要通过软件和硬件两种方式来实现,软件的实现方式具有灵活方便的优点,同时也具有加密速度受限制的缺点。采用硬件实现加密算法是实际应用中必须要考虑到的问题。目前经常采用硬件FPGA等来实现,该种实验方式具有处理速度快的特点,但是对系统的复杂度要求较高。

嵌入式微处理器具有实现简单,系统集成度高,体积小,易于移植等众多优点,因此有必要研发基于嵌入式微处理器的加密算法硬件设备,在此提出一种基于ARM处理器的3DES的硬件实现方法。

3DES算法原理

DES是美国国家标准局颁布的数据加密算法,作为世界范围内的公开加密标准已经使用了20多年。随着计算机处理速度的提高,DES算法面临着一些安全威胁,DES采用56位密钥,曾经有人用穷举搜索法对DES进行过密钥搜索攻击。

近年来也有人提出了差分和线性攻击方案,该方案的实施必须有超高速计算机的支持。为了增强DES算法应对差分或线性攻击的可能性,人们提出了一系列改进方案,采用增加密钥长度是一种可行的途径。

为了增加密钥的长度,可将分组密码进行级联,在不同的密钥作用下,连续多次对一组明文进行加密。其中,最有效的方法是使用三重DES加密,它可使加密密钥长度扩展到128位,在提高加密强度的同时,足以应付目前的各种攻击。

DES是一个分组加密算法,它以64位为分组对数据加密。64位的分组明文序列作为加密算法的输入,经过16轮加密得到64位的密文序列。加密的密钥为64位,实际长度为56位,DES算法的保密性取决于密钥。DES对64位的明文分组进行操作。

首先通过一个初始置换IP,将64位的明文分成各32位长的左半部分和右半部分,该初始置换只在16轮加密过程进行之前进行一次。在经过初始置换操作后,对得到的64位序列进行16轮加密运算,这些运算被称为函数f,在运算过程中,输入数据与密钥结合。经过16轮运算后,左、右两部分合在一起得到一个64位的输出序列,该序列再经过一个末尾置换IP-1,获得最终的加密结果。过程如图1所示。

在每一轮加密过程中,函数厂的运算包括以下四个部分:

首先进行密钥序列移位,从移位后的56位密钥序列中选出48位;

然后通过一个扩展置换将输入序列32位的右半部分扩展成48位,再与48位的轮密钥进行异或运算;

再者通过8个s盒将异或运算后获得的48位序列替代成一个32位序列;

最后对32位序列应用置换P进行置换变换,得到-厂的32位输出序列。将函数厂的输出与输入序列的左半部分进行异或运算后的结果作为新一轮加密过程输入序列的右半部分,当前输入序列的右半部分作为新一轮加密过程输入序列的左半部分。

上述过程重复操作16次,便实现了DES的16轮加密运算。

假设Bi是第i轮计算的结果,则Bi为一个64位的序列,Li和Ri分别是Bi的左半部分和右半部分,Ki是第i轮的48位密钥,且f是实现代换、置换及密钥异或等运算的函数,那么每一轮加密的具体过程为:

以上操作的详细过程如图2所示。

在3DES加密算法中,加密过程用两个不同的密钥K1和K2对一个分组消息进行三次DES加密。首先使用第一个密钥进行DES加密,然后使用第二个密钥对第一次的结果进行DES解密,最后使用第一个密钥对第二次的结果进行DES加密。

解密过程首先使用第一个密钥进行DES解密,然后使用第二个密钥对第一次的结果进行DES加密,最后再使用第一个密钥对第二次的结果进行DES解密。

DES算法的密钥长度是56位,三重DES算法的密钥长度是112位,加密强度显著增强,可以很好地应付各种攻击,目前尚没有可行的攻击方法,应用3DES的加密系统具有很大的实用价值。

本文为收集整理,文章部分观点不代表本站观点,如有侵权或其它问题请反馈客服。https://www.wgj7.com/cjwt/16289.html