一种基于混沌S盒的图像加密算法的解密方法与流程

文档序号:15981147发布日期:2018-11-17 00:20阅读:550来源:国知局

本发明涉及密码分析技术领域,尤其涉及一种基于混沌s盒的图像加密算法的解密方法。

背景技术

随着网络技术的快速发展,在为人们生活带来各种便利生活的同时,网络信息安全也愈发引起人们的重视。人们通过各种传输媒介进行沟通交流,如视频、音频、文件、图像等,在传输媒介的传输过程中,不可避免的会产生一些信息安全问题。对于信息安全,需要保证信息的保密性、真实性、完整性、未授权拷贝和所寄生系统的安全性。网络安全下的信息安全体制是我们保证信息安全的关键,从而进行消息认证、数据加密、图像加密来保证安全机制的完善、安全系统的健全是我们所关注的重点。

数字图像是一种以二维数字组形式表示的图像,具有直观性的特点,是一种广泛应用的数字信息。由于数字图像处理信息量大,占用频带宽,数据冗余度大,相邻像素间的相似度高的特点,采用传统的加密技术会产生效率低、浪费计算资源的缺点。混沌系统具有内在随机性、敏感性、遍历性、不收敛性、伪随机性等特点,能够克服传统加密算法的缺点,因此被广泛应用于图像加密领域,因此混沌密码成为新型密码学中研究的热点之一。

在密码技术发展的同时,密码分析技术也得到了空前的发展。为提升密码系统的安全性,很多新的密码破解方案基于密码分析技术被提出来。s盒替换是加密系统设计中常用的一种经典技术,s盒作为高级加密标准中唯一的非线性部件,是影响算法性能的重要因素之一,使用强大的s盒结构有助于进行安全加密,抵御差分密码分析。

等人于2017年设计了一种具有高初值敏感性和宽密钥空间的混沌系统,使得生成的随机序列在nist测试中表现出极好的随机性,并使用混沌系统设计简单的计算复杂度低的算法步骤生成s盒,实验证明生成的s盒具有很好的性能,能有效地提高加密算法的安全性。

在基于混沌的s盒图像加密算法中,加密算法的解密过程必须仅依赖于密钥,解密者在不知道加密系统的密钥时,无法对加密后的图像进行解密;s盒替换的方法只改变了矩阵的数值,并未改变每个像素的位置,从s盒替换入手可以很容易地对加密后的图像进行解密。



技术实现要素:

本发明的目的在于提供一种基于混沌s盒的图像加密算法的解密方法,能够在无法得知密钥的情况下对加密后的图像进行解密,具有计算过程简单,图像还原度高的优点。

为实现上述目的,本发明采用如下技术方案:

一种基于混沌s盒的图像加密算法的解密方法,依次包括以下步骤:

(1)选取像素值为全0、全1、全2……全255的256个灰度图像,将这256个灰度图像通过原加密算法进行加密,得到256个明文像素值矩阵;

(2)获取加密后的密文图像的像素值矩阵;

(3)将步骤(1)得到的256个明文像素值矩阵上每个位置的像素值,与密文图像的像素值矩阵的对应位置上的像素值进行遍历比较,找出密文图像每个位置的像素值所对应的每个原像素值;

对像素进行遍历的过程如下:

设256个明文像素值矩阵为m_j(m_j是由全为j(j=1,2,……,256)的灰度图像加密而得到),密文像素值矩阵为c,图像大小为m*n,依次比较明文像素矩阵m_j和密文像素矩阵c的每个位置的像素值,若相同,则将此值m_j(m,n)记录下来,(m,n)为当前像素的位置,那么此相同的值m_j(m,n)所对应的原像素值j就记为密文图像在该位置上的像素值所对应的原像素值;

(4)根据密文图像每个位置的每个像素值所对应的原像素值,即可得到加密后的密文图像所对应的原始图像。

优选地,所述步骤(1)中,利用原加密算法对256个灰度图像进行加密的过程如下:

①将系统参数值、初始条件值代入混沌系统方程,并选取步长δh=0.0001;

②迭代混沌系统方程,得到浮点值序列,利用rk4算法分析此浮点值序列;

③将浮点值序列中的浮点值转换成二进制值(32位),并从32位中选取适当的位;

④转到步骤②,直到生成100万位大小的比特序列;

⑤用nist测试测试步骤④生成的比特序列,如果通过测试,则此比特序列可以用于加密,并可生成用于加密的s盒,密钥也得以确定;否则调整δh,或调整步骤③中选取的位数,然后转到步骤①继续生成比特序列;

⑥将密钥用rsa算法传给用户;

⑦将256*256大小的图像经过比特转换处理;

⑧将经过比特转换处理后的图像比特序列和通过nist测试的可用于加密的比特相序列按位异或;

⑨将异或后的比特序列根据所生成的s盒进行s盒替换,最终得到加密后的图像。

本发明通过s盒替换,能够在不获取密钥的情况下成功破解出加密后的图像,不仅图像恢复率高,而且简化了计算过程;本发明不仅适用于原加密算法,而且适用于任何基于s盒的加密系统,具有图像恢复率高、适用范围广的优点。

附图说明

图1为本发明所述原加密算法的流程图;

图2为本发明的流程图;

图3为原始图片、加密后的图片和利用本发明所述方案解密后的图片。

具体实施方式

以下结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的其他所有实施例,都属于本发明的保护范围。

在原加密算法中,首先设计了一个新的混沌系统,基于这个新的混沌系统通过迭代和选择生成满足nist测试的随机比特序列,然后通过设计生成基于混沌的s盒使加密算法能够更有效的防御攻击,使其更加的安全。

如图1所示,原加密过程具体如下:

①系统参数值、初始条件值代入混沌系统方程,并选取步长δh=0.0001;

将混沌系统具有高动态特征的事实用于产生数量的随机性,设计出用于rng技术的新混沌系统,方程式可表示为式(1):

其中a、b、c和d均为系统参数,且a=1,b=1,c=2,d=-3;

初设条件的值:x0=1,y0=-1,z0=0.01;

②迭代混沌系统方程,得到浮点值序列,利用rk4算法分析从混沌系统中得到的浮点值序列;

③将浮点值序列中的浮点值转换成二进制值(32位),并从32位中选取适当的位;

④转到步骤②,直到生成100万位大小的比特序列;

⑤用nist测试测试步骤④生成的比特序列,如果通过测试,则此比特序列可以用于加密,并可生成用于加密的s盒,密钥也得以确定;否则调整δh,或调整步骤③中选取的位数,然后转到步骤①继续生成比特序列;

在加密算法中引入混沌系统,并添加初始条件和系统参数,在此之后,基于伪随机数生成器生成通过nist测试的3个阶段的随机比特序列,利用混沌系统的初始条件和系统参数作为密钥进行加密,被用作加密的关键。要加密的大小为256×256的图像经历比特变换处理,最初已经经过比特变换的图像被置于混沌prng的y阶段的随机比特处理过程中,异或值被转换为十进制值,并进行了子字节处理。通过使用s-box生成算法生成子字节所需的16×16大小的s盒,然后使用prng生成的x和z相进行输出,在子字节过程中的字节转换是通过将它们替换为矩阵上行和列的等同字符来实现的。

⑥将密钥用rsa算法传给用户;

⑦将256*256大小的图像经过比特转换处理;

⑧将经过比特转换处理后的图像比特序列和通过nist测试的可用于加密的比特相序列按位异或;

⑨将异或后的比特序列根据所生成的s盒进行s盒替换,最终得到加密后的图像。

s盒生成如下步骤:

a:将初始条件和系统参数输入到混沌系统,迭代得到混沌序列(包含x、y和x三个相位的序列);

b:从x相位和z相位的混沌序列中每提取8位二进制值就进行xor(异或)处理,并转换为新的8位二进制值,再将其转换为十进制值;

c:检查生成的十进制值是否存在于s盒中,如果已存在,则丢弃,如果不存在,则添加进去;

d:持续执行上述步骤,直到s盒里放满不同的256个值。

上述基于混沌s盒的图像加密算法为现有技术,不再详细描述。

原加密算法使用了s盒进行图像加密,在改变像素值矩阵的过程中,虽然使用复杂的混沌系统生成了更为随机的s盒,但是s盒替换的方法只改变了矩阵的数值,并未改变每个像素的位置,使得加密后的图像有了被破解的可能。

事实上,上述缺陷在任何一种单纯使用s盒加密的密码系统中都存在。如果我们能在不考虑具体混沌映射的情况下直接破解s盒加密,那么所提出的破解方法就能适用于任何单纯基于s盒的加密机制。数字灰度图像的灰度范围为0到255,共有256个有限的像素值,而在使用s盒加密之后,密文像素值仍然为0到255范围内的256个整数,这是一种有限到有限的映射,而且样本空间很小。因此,如果能够获得256个到256个像素值的共256种映射关系,就能通过这种映射关系,在不了解基于混沌系统的s盒生成过程的情况下将密文还原成明文。

基于上述原理,本发明公开了一种基于混沌s盒的图像加密算法的解密方法,如图2所示,依次包括以下步骤:

(1)选取像素值为全0、全1、全2……全255的256个灰度图像,将这256个灰度图像通过原加密算法进行加密,得到256个明文像素值矩阵;

在原加密方法中,图像中每个像素位置的像素值映射规律均不同,因此逐像素获取映射关系并不现实。不过对于整幅已知明文图像而言,我们可以一次性获取每个像素位置上已知像素值的对应密文。类似地,改变图像中所有位置的像素值,就可以再次一次性获取每个像素位置上选定像素值的对应密文。因此,要获取图像所有像素位置上全部像素值的明文密文映射关系,只需要256次加密即可。

为简便起见,首先选取全0、全1…全255的256个灰度图像,将这256个灰度图像通过原加密算法进行加密,即引入混沌系统,并添加初始条件和系统参数,基于伪随机数生成器生成随机比特序列,将需要加密的原始图像进行比特变换,逻辑加密单元再进行子字节处理,分别得到256个对应的加密后的明文像素值矩阵。

(2)获取加密后的密文图像的像素值矩阵;

(3)将步骤(1)得到的256个明文像素值矩阵上每个位置的像素值,与密文图像的像素值矩阵的对应位置上的像素值进行遍历比较,找出密文图像每个位置的像素值所对应的每个原像素值;

对像素进行遍历的过程如下:

设256个明文像素值矩阵为m_j(m_j是由全为j(j=1,2,……,256)的灰度图像加密而得到),密文像素值矩阵为c,图像大小为m*n,依次比较明文像素矩阵m_j和密文像素矩阵c的每个位置的像素值,若相同,则将此值m_j(m,n)记录下来,(m,n)为当前像素的位置,那么此相同的值m_j(m,n)所对应的原像素值j就记为密文图像在该位置上的像素值所对应的原像素值;

(4)根据密文图像每个位置的每个像素值所对应的原像素值,即可得到加密后的密文图像所对应的原始图像。

通过所得到的256个加密结果,可以知道图像中每个位置(共m*m个位置)每个像素值(共256个值)所对应的原像素值,因此,对于任一给定的密文图像,其所有的加密像素值都可以找出相对应的明文。

原图像部分像素值矩阵如表1所示,加密图像部分像素值矩阵如表2所示,矩阵中的第一行第一列为数值22,接下来通过对像素值为全0到全255的密文图像的对应相同位置上的像素值进行遍历比较,找出该位置所对应的数值。如果像素值为全0对应的密文图像的第一行第一列为22,则加密图像对应的明文图像的第一行第一列的原像素值为0。表3表示解密后图像的像素值矩阵值。

表1原图像部分像素值矩阵(8*8)

表2加密图像部分像素值矩阵(8*8)

表3解密后图像部分像素值矩阵(8*8)

通过表1、表2与表3的对比可以看出,利用本发明的方案还原的图像即为原始图像。

以下对本发明的方案进行验证。

选取经典的灰度图像“woman”,该图像的大小为256*256,本实验的实验平台是pentium4cpu1.80ghz,1g内存的matlab2010,所用的操作系统为microsoftwindowsxpsp3。如图3所示,3(a)为原图像,3(b)为加密后的图像,3(c)为利用本发明得到的解密后的图像,由图3可以看到,所提出的选择明文攻击方法能够准确无误地将加密图像还原。

综上所述,在不获取密钥的情况下,由s盒替换矩阵可成功解出密文。本发明没有考虑具体的s盒实现细节,而是直接针对s盒加密中像素值一对一变换的结果,因此不管s盒如何构造,只要是单纯采用s盒加密的图像加密算法,本发明均可将明文图像解密出来,从而使得本发明具有图像恢复率高、适用范围广的优点。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1