法律状态公告日
法律状态信息
法律状态
2020-03-10
授权
授权
2019-08-27
实质审查的生效 IPC(主分类):H04L9/00 申请日:20190428
实质审查的生效
2019-08-02
公开
公开
技术领域
本发明涉及数字图像加密的技术领域,尤其涉及一种基于像素值关联的约瑟夫遍历和超混沌系统图像加密方法。
背景技术
随着经济的发展、社会的进步、信息化水平的提高,互联网、物联网等技术飞速发展,人类正在进入大数据和人工智能的时代。图像信息因其形象、直观、生动、信息量巨大的特点在很多领域内得到广泛的应用,例如,多媒体技术、数字化办公,移动支付等。图像信息的应用正在改变人们的生活方式和生活习惯。图像信息正充斥着人类活动的每一个角落,但是,随着图像信息的广泛应用,其安全问题也逐渐显露出来。数字图像加密技术是有效保护数字图像传输的重要手段。一些传统的文本加密算法如DES、AES等并不适用图像信息的加密:一是加密效率较低,二是加密效果一般。例如,Silva等注意到,使用DES算法加密具有大块相同灰度区域的图像时,密文图像中会出现一些加密质量不高的区域。由于图像信息在军事、政治、经济领域的广泛应用,这些信息的泄露会产生巨大的影响力和破坏力。因此,设计更为可靠的图像加密算法迫在眉睫,图像加密也正成为热门的研究领域。
图像加密包括像素置乱和像素置换。常见的像素置乱方法有:基于图形学的扫描模式置乱法、基于伪随机序列的像素重排法等。这些置乱方法通过改变像素在图像中的位置产生加密的效果。常见的像素置换方法有:基于Hill矩阵的加密方法、基于混沌系统的密码流加密方法等。这些置换方法通过改变像素的值达到加密的效果。近些年提出的加密方案中,混沌密码学备受关注。混沌系统作为一种复杂的非线性动力系统,具有初始参数敏感、轨道不可预测、状态遍历性强的特点,通常作为伪随机数发生器使用。将混沌系统应用于图像加密的置乱和置换过程中,能够提高加密系统的安全性,弥补传统加密算法的不足。但随着密码分析技术的提高,混沌加密技术也暴露出了对密钥的低敏感性等问题。为了解决这些问题,有研究人员提出,与其他方法融合是提高混沌图像加密技术安全性的有效途径。约瑟夫问题是由古罗马著名的史学家Josephus提出的问题演变而来的,它的使用对各种恶意篡改、侵权盗版等违法行为起到了遏制作用。使用约瑟夫遍历进行数据置乱,增加了数据安全性。
发明内容
针对现有图像加密方法对密钥的敏感性较低,数据安全性较差的技术问题,本发明提出一种基于像素值关联的约瑟夫遍历和超混沌系统图像加密方法,具有极大的密钥敏感性,良好的伪随机性,安全性分析结果表明,能有效抵御各种经典攻击。
为了达到上述目的,本发明的技术方案是这样实现的:一种基于像素值关联的约瑟夫遍历和超混沌系统图像加密方法,其步骤如下:
步骤一:将大小为Height×Width的原始图像输入SHA-384散列函数,得到384位二进制序列H;将384位二进制序列H等分为48份,八个一组进行运算得到分段线性映射和Chen超混沌系统的初始值;
步骤二:将分段线性映射的初始值带入分段线性映射进行迭代得到长度为Height*Width的伪随机序列U,将Chen超混沌系统的初始值带入Chen超混沌系统进行迭代得到四个长度为Height*Width/4的伪随机序列x、y、z、w;
步骤三:用伪随机序列U的前Height个伪随机数作为索引值,使用与像素值关联的约瑟夫置乱方法对原始图像进行行置乱操作,得到密文图像C1;
步骤四:将密文图像C1等分成4份得到密文块,使用伪随机序列x、y、z、w分别对4个密文块中的像素进行像素置换并重组置换后的密文块,得到密文图像C2;
步骤五:用伪随机序列U的后Width个伪随机数作为索引值,使用与像素值关联的约瑟夫置乱方法对密文图像C2进行列置乱操作,得到密文图像C3;
步骤六:使用两个密钥像素Pixel1和Pixel2对密文图像C3中的像素做像素扩散操作,得到加密后的密文图像C。
所述步骤一中计算分段线性映射和Chen超混沌系统的初始值的方法为:将384位二进制序列H等分成48份,得到8位二进制序列h1,h2,…,h48,使用的分段线性映射和Chen超混沌系统的初始值的计算方法为:
其中,u1和p为分段线性映射的初始值,x1、y1、z1、w1为四维Chen超混沌系统的初始值,
所述分段线性映射的迭代方程为:
其中,p为分段线性映射的参数,取值范围为(0,0.5);u(i+1)∈[0,1)表示分段线性映射第i次迭代产生的伪随机数,i=1,2,……,Height+Width-1;u(i)∈[0,1)是第i次迭代使用的前一次迭代的伪随机数或初始值u1;
所述Chen超混沌系统的动力方程为:
其中,
所述伪随机序列U的实现方法为:分段线性映射利用初始值u1迭代Height+Width-1次,将初始值u1和得到的Height+Width-1个伪随机数组成一个长度为Height+Width的混沌序列u;将混沌序列u重构为伪随机序列U:
其中,u(:)为混沌序列u中的元素,mod(,)表示求余函数;
所述得到伪随机序列x、y、z、w的方法为:将初始值x1、y1、z1、w1带入四维Chen超混沌系统,对Chen超混沌系统迭代Height×Width/4+999次,舍去前999次迭代的值,得到四个长度为Height×Width/4的伪随机序列x、y、z、w。
所述步骤三中与像素值关联的约瑟夫置乱方法的实现方法为:将伪随机序列U(j)的元素作为初始步长InitialValue、原始图像的第j行元素作为序列S的元素带入扩充的约瑟夫函数,得到的序列S′是置乱后密文图像C1的第j行元素;其中,j=1,2,……,Height;
所述步骤五中与像素值关联的约瑟夫置乱方法的实现方法为:将伪随机序列U(Height+q)的元素作为初始步长InitialValue、密文图像C2的第q列元素作为序列S的元素带入扩充的约瑟夫函数,得到的序列S′是置乱后密文图像C1的第j行元素;其中,q=1,2,……,Width。
所述扩充的约瑟夫函数为:S′=F(S,InitialValue);
其中,F(,)是约瑟夫函数,S是待置乱的序列,S′是置乱后的序列,InitialValue为初始步长;
所述扩充的约瑟夫函数的实现方法为:初始遍历时的步长为InitialValue,第n次循环时的步长为S′n-1+1;其中,2≤n≤N,N为序列S中元素的个数;具体实现方法为:
步骤1:以步长为InitialValue遍历序列S组成的约瑟夫环,求得S′1;
步骤2:以步长为S′1+1遍历约瑟夫环,求得S′2;
步骤3:循环步骤2:以步长为S′n-1+1遍历约瑟夫环,求得S′n;
步骤4:以步长为S′N-1+1遍历约瑟夫环,求得S′N;
步骤5:S′1、S′2、……、S′n、……、S′N组成的序列为之乱后的序列S′。
所述步骤四中进行像素置换的方法是:
步骤S1:对四个伪随机序列x、y、z、w进行重构得到四个取值区间为[0,255]的伪随机矩阵X、Y、Z、W;
步骤S2:将大小为Height×Width的密文图像C1等分为大小为Height×Width/4的密文块Block1、Block2、Block3、Block4,使用伪随机矩阵X、Y、Z、W分别与密文块Block1、Block2、Block3、Block4做按位异或运算,得到四个矩阵Block′1,Block′2,Block′3,Block′4;
步骤S3:利用伪随机矩阵X、Y、Z、W分别计算控制字矩阵ControlMatrix1和控制字矩阵ControlMatrix2;
步骤S4:使用控制字矩阵ControlMatrix1,将矩阵Block′1和矩阵Block′4进行交叉操作得到交叉后的矩阵Block″1和矩阵Block″4;使用ControlMatrix2作为控制字矩阵,将矩阵Block′2和矩阵Block′3进行交叉操作得到交叉后的矩阵Block″2和矩阵Block″3;
步骤S5:将交叉后的矩阵Block″1、Block″2、Block″3和Block″4重新组成密文图像C2。
所述伪随机矩阵的重构方法为:
其中,x(:)、y(:)、z(:)、w(:)分别为序列x、y、z、w中的元素,
所述矩阵Block′1=bitxor(Block1,X),Block′2=bitxor(Block2,Y),Block′3=bitxor(Block3,Z),Block′4=bitxor(Block4,W),其中,bitxor(·,·)为二进制位异或运算;所述控制字矩阵ControlMatrix1=bitxor(X,Y),控制字矩阵ControlMatrix2=bitxor(Z,W)。所述利用控制字矩阵进行交叉操作的方法为:将待交叉的两个矩阵中的对应位置的元素分别转化为八位的二进制数A和二进制数B,将控制字矩阵中对应位置的元素别转化为八位的二进制数得到控制字C,如果控制字C中的某控制位的值为1时,二进制数A和二进制数B中与控制位对应位置的二进制字符交换;当控制字C中的某控制位的值为0时,二进制数A和二进制数B中与控制位对应位置的二进制字符不进行任何操作。
所述步骤六进行像素扩散的方法为:
将密文图像C3转化为长度为Height*Width的一维像素序列PixelSequence,利用密钥像素Pixel1对一维像素序列PixelSequence向后扩散得到一维像素序列PixelSequence':
利用密钥像素Pixel2对向后扩散得到一维像素序列PixelSequence'向前扩散得到一维像素序列PixelSequence”:
将长度为Height*Width的一维像素序列PixelSequence”重构成大小为Height×Width的二维矩阵得到加密后的密文图像C;其中bitxor(·,·)为二进制位异或运算。
本发明的有益效果:与像素值关联的约瑟夫置乱方法将约瑟夫问题、混沌系统和像素值关联起来,借助混沌映射对初始条件的敏感性与伪随机性,结合约瑟夫遍历置乱的优势,增加了对明文的敏感性,并且减少了置乱过程中混沌系统的迭代次数;将图像进行分块,结合高维度的混沌系统,使分块间进行异或和交叉操作对像素做置换操作,增加了密文图像的随机性同时也提高了密文图像的安全性;通过使用像素的扩散操作使密文图像中的所有像素均受到其它像素的影响,提高了像素之间的联系。仿真结果和安全性分析表明,本发明对密钥的敏感性强,能有效抵御统计性分析和穷举分析等攻击操作,可以用作图像加密。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的流程图。
图2为本发明Chen混沌系统的相轨图,其中,(a)为x-y,(b)为x-z,(c)为x-w,(d)为y-z,(e)为y-w,(f)为z-w。
图3为本发明原始图像和使用与像素值关联的约瑟夫问题置乱的图像,其中,(a)为Lena原始图像,(b)为置乱后的Lena图像,(c)为Cameraman原始图像,(d)为置乱后的Cameraman图像。
图4为本发明像素置换的操作示意图,其中,(a)为交叉操作的示意图,(b)为图像分割、按位异或运算和交叉运算的流程图。
图5为本发明的原始图像和密文图像,其中,(a)为128×128的Cameraman原始图像,(b)为256×256的Lena原始图像,(c)为256×256的Cameraman原始图像,(d)为512×512的Brain原始图像,(e)为128×128的Cameraman密文图像,(f)为256×256的Lena密文图像,(g)为256×256的Cameraman密文图像,(h)为512×512的Brain密文图像。
图6为本发明的256×256的Lena原始图像、密文图像以及当密钥发生微小改变时的解密图像,其中,(a)Lena原始图像,(b)为正确的解密图像,(c)为u1改变10-15后的解密图像,(d)为p改变10-15后的解密图像,(e)为x1改变10-15后的解密图像,(f)为y1改变10-15后的解密图像,(g)为z1改变10-14后的解密图像,(h)为w1改变10-15后的解密图像。
图7为本发明原始图像、原始图像的直方图和密文图像的直方图,其中,(a)为Lena原始图像,(b)为Cameraman原始图像,(c)为Baboon原始图像,(d)为Lena原始图像的直方图,(e)为Cameraman原始图像的直方图,(f)为Baboon原始图像的直方图,(g)为Lena密文图像的直方图,(h)为Cameraman密文图像的直方图,(i)为Baboon密文图像的直方图。
图8为Lena原始图像和密文图像中各方向上相邻像素的值,其中,(a)为Lena原始图像中水平方向上,(b)为Lena原始图像中垂直方向上,(c)为Lena原始图像中对角线方向上,(d)为Lena密文图像中水平方向上,(e)为Lena密文图像中垂直方向上,(f)为Lena密文图像中对角线方向上。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,一种基于像素值关联的约瑟夫遍历和超混沌系统图像加密方法,其特征在于,其步骤如下:
步骤一:将大小为Height×Width的原始图像输入SHA-384散列函数,得到384位二进制序列H;将384位二进制序列H等分为48份,八个一组进行运算得到分段线性映射和Chen超混沌系统的初始值。
本发明使用SHA-384函数产生加密所需的密钥。SHA-384函数是Hash安全散列函数的一种,可以将任意长度的原始图像即明文图像转换为长度为384位的二进制序列。SHA-384函数是不可逆的,因此无法通过密钥推断出任何的明文信息。本发明所使用的混沌系统共有两个,分别为一维分段线性映射和四维Chen超混沌映射。这些混沌系统的初始值共有六个,,分别为u1,p,x1,y1,z1,w1。所述步骤一中计算分段线性映射和Chen超混沌系统的初始值的方法为:将384位二进制序列H等分成48份,得到8位二进制序列h1,h2,…,h48,使用的分段线性映射和Chen超混沌系统的初始值的计算方法为:
其中,u1和p为分段线性映射的初始值,x1、y1、z1、w1为四维Chen超混沌系统的初始值,
步骤二:将分段线性映射的初始值带入分段线性映射进行迭代得到长度为Height*Width的伪随机序列U,将Chen超混沌系统的初始值带入Chen超混沌系统进行迭代得到四个长度为Height*Width/4的伪随机序列x、y、z、w。
混沌系统在密码学中极具应用价值,它因为系统初始值敏感,轨道遍历性强的特点通常被作为伪随机数发生器使用。本发明中置乱过程所使用的伪随机索引值序列由分段线性映射产生。所述分段线性映射的迭代方程为:
其中,p为分段线性映射的参数,取值范围为(0,0.5);u(i+1)∈[0,1)表示分段线性映射第i次迭代产生的伪随机数,i=1,2,……,Height+Width-1;u(i)∈[0,1)是第i次迭代使用的前一次迭代的伪随机数或初始值u1。分段线性映射利用初始值u1迭代Height+Width-1次,将初始值u1和得到的Height+Width-1个伪随机数组成一个长度为Height+Width的混沌序列u,混沌序列u中元素的取值范围为[0,1)。
与像素值关联的约瑟夫置乱方法中,索引值必须为大于0的整数,所以对分段线性映射产生的伪随机的混沌序列u进行重构,将混沌序列u重构为伪随机序列U:
其中,u(:)为混沌序列u中的元素,伪随机序列U中元素的位置和u(:)中元素的位置一一对应,mod(,)表示求余函数。
将序列U的前Height个值用作与像素值关联的约瑟夫置乱方法中行置乱的初始值,后Width个值用作与像素值关联的约瑟夫置乱方法列置乱的初始值。例如,当分段线性映射的u(1)=0.23046875,p=0.37890625时,采用改进后的约瑟夫遍历方法对Lena和Cameraman的原始图像进行置乱,结果如图3所示。由图3可知,置乱后的Lena图像和Cameraman图像明显与原始的Lena图像和Cameraman图像不同。
本发明中像素的置换过程使用的混沌系统为Chen超混沌系统,高维的混沌系统相比于低维混沌系统初始值和系统参数更多,轨道更为复杂,系统更为安全。所述Chen超混沌系统的动力方程为:
其中,
所述得到伪随机序列x、y、z、w的方法为:将初始值x1、y1、z1、w1带入四维Chen超混沌系统,对Chen超混沌系统迭代Height×Width/4+999次,舍去前999次迭代的值以消除暂态效应,得到四个长度为Height×Width/4的伪随机序列x、y、z、w。
步骤三:用伪随机序列U的前Height个伪随机数作为索引值,使用与像素值关联的约瑟夫置乱方法对原始图像进行行置乱操作,得到密文图像C1。
据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus和他的朋友并不想遵从。问题是,给定了总数和步长,一开始要站在什么地方才能避免被处决?Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,逃过了这场死亡游戏。对于约瑟夫问题可以量化成一个约瑟夫函数S′=F(S,k),该函数中,S序列代表元素的排列集合{s1,s2,s3,…,sN},k表示步长。以序列S={1,2,3,4,5,6,7},k=3为例,该约瑟夫函数的解为{3,6,2,7,5,1,4},此解代表序列中元素3,6,2,7,5,1,4被依次选出。约瑟夫问题是一个经典的计算问题,又称为约瑟夫环。后人对约瑟夫问题进行了扩充,增加了起始位点和循环的方向,大大丰富了约瑟夫问题的内涵。
为了使约瑟夫遍历与明文关联,本发明对约瑟夫问题进行改造,给出了一种与像素值关联的约瑟夫遍历方法,将约瑟夫函数扩充并将其应用在像素的置乱过程中得到与像素值关联的约瑟夫置乱方法。扩充的约瑟夫函数为:S′=F(S,InitialValue);其中,F(·,·)是约瑟夫函数,S是待置乱的序列且S={s1,s2,s3,…,sN},S′是置乱后的序列,InitialValue为初始步长。
所述扩充的约瑟夫函数的实现方法为:初始遍历时的步长为InitialValue,第n次循环时的步长为S′n-1+1;其中,2≤n≤N,N为序列S中元素的个数;具体实现方法为:
步骤1:以步长为InitialValue遍历序列S组成的约瑟夫环,求得S′1;
步骤2:以步长为S′1+1遍历约瑟夫环,求得S′2;
步骤3:循环步骤2:以步长为S′n-1+1遍历约瑟夫环,求得S′n;
步骤4:以步长为S′N-1+1遍历约瑟夫环,求得S′N;
步骤5:S′1、S′2、……、S′n、……、S′N组成的序列为之乱后的序列S′。
假设给定序列S={1,0,255,128,100,80,60},InitialValue=3,扩充的约瑟夫函数F(S,InitialValue)的遍历步骤为:
步骤1:以步长为3遍历约瑟夫环,求得S′1=255;
步骤2:以步长为S′1+1=256遍历约瑟夫环,求得S′2=60;
步骤3:以步长为S′2+1=61遍历约瑟夫环,求得S′3=1;
步骤4:以步长为S′3+1=2遍历约瑟夫环,求得S′4=128;
步骤5:以步长为S′4+1=129遍历约瑟夫环,求得S′5=0;
步骤6:以步长为S′5+1=1遍历约瑟夫环,求得S′6=100;
步骤7:以步长为S′6+1=101遍历约瑟夫环,求得S′7=80。
所以,当S={1,0,255,128,100,80,60},InitialValue=3时,函数F(S,InitialValue)的解为序列S′={255,60,1,128,0,100,80}。改造后的约瑟夫函数被用于像素的置乱过程中,其中,InitialValue是置乱过程的密钥。该置乱过程是可逆的,即知道加密后的像素序列S′和初始步长InitialValue,即可还原出原序列S。该置乱方法的还原过程可被描述为S=F-1(S′,InitialValue)。
所述步骤三中与像素值关联的约瑟夫置乱方法的实现方法为:将伪随机序列U(j)的元素作为初始步长InitialValue、原始图像的第j行元素作为序列S的元素带入扩充的约瑟夫函数,得到的序列S′是置乱后密文图像C1的第j行元素;其中,j=1,2,……,Height。具体方法为:
S1:将伪随机序列U(j)的元素作为初始步长、原始图像的第j行元素作为序列S带入扩充的约瑟夫函数,遍历约瑟夫环得到S′j1,其中,j=1,2,……,Height;
S2:将S′j1+1作为步长遍历约瑟夫环,得到S′j2;
S3:循环步骤S2:将S′j(q)+1作为步长遍历约瑟夫环,得到S′j(q+1);其中,q=1,2,……,Width-1;
S4:将S′j(Width-1)+1作为步长遍历约瑟夫环,得到S′j(width);
S5:S′j1、S′j2……、S′j(q+1)、S′j(width)组成的序列序列S′j是原始图像的第j行置乱后的序列,即S′j1、S′j2……、S′j(q)、S′j(width)是密文图像C1的第j行的元素。
使用与像素值关联的约瑟夫置乱方法包括行置乱操作和列置乱操作。因为置乱所使用的伪随机索引值序列的长度较小,所以置乱所使用的伪随机索引值序列将由分段线性映射产生。
步骤四:将密文图像C1等分成4份得到密文块,使用伪随机序列x、y、z、w分别对4个密文块中的像素进行像素置换并重组置换后的密文块,得到密文图像C2。
像素置乱将图像的位置进行打乱,破坏了相邻像素之间的相关性,但是像素并没有经过任何计算,无法有效地抵抗密码学攻击,进一步通过像素置换能够彻底混淆明文图像和密文图像之间的关系。本发明使用异或和交叉操作对像素进行置换操作。交叉操作是遗传算法中常用的算子,交叉操作的示意图如图4(a)所示。即假设有两个待加密的像素A和B,为使交叉操作具有可逆性,这里添加一个控制字C,并将A、B和C均转为八位二进制数:当控制字C中的某位值为1时,像素A、B中与控制位对应位置的二进制字符交换;当控制字C中的某位值为0时,像素A、B中与控制位对应位置的二进制字符不进行任何操作。
如图4(b)所示,所述步骤四中进行像素置换的方法是:
步骤S1:对四个伪随机序列x、y、z、w进行重构得到四个取值区间为[0,255]的伪随机矩阵X、Y、Z、W。
所述伪随机矩阵的重构方法为:
其中,x(:)、y(:)、z(:)、w(:)分别为序列x、y、z、w中的元素,
步骤S2:将大小为Height×Width的密文图像C1等分为大小为Height×Width/4的密文块Block1、Block2、Block3、Block4,使用伪随机矩阵X、Y、Z、W分别与密文块Block1、Block2、Block3、Block4做按位异或运算,得到四个矩阵Block′1,Block′2,Block′3,Block′4。
所述矩阵Block′1=bitxor(Block1,X),Block′2=bitxor(Block2,Y),Block′3=bitxor(Block3,Z),Block′1=bitxor(Block4,W),其中,bitxor(·,·)为二进制位异或运算,即将密文块和伪随机矩阵对应位置的元素转换为8位二进制数,然后对应位置的二进制数进行二进制位异或计算,然后将8位二进制数转化为十进制数即为矩阵Block′1,Block′2,Block′3,Block′4的对应位置的元素。
步骤S3:利用伪随机矩阵X、Y、Z、W分别计算控制字矩阵ControlMatrix1和控制字矩阵ControlMatrix2。
所述控制字矩阵ControlMatrix1=bitxor(X,Y),控制字矩阵ControlMatrix2=bitxor(Z,W)。即利用两个伪随机矩阵进行二进制位异或运算得到控制字矩阵。
步骤S4:使用控制字矩阵ControlMatrix1,将矩阵Block′1和矩阵Block′4进行交叉操作得到交叉后的矩阵Block″1和矩阵Block″4;使用ControlMatrix2作为控制字矩阵,将矩阵Block′2和矩阵Block′3进行交叉操作得到交叉后的矩阵Block″2和矩阵Block″3。
所述利用控制字矩阵进行交叉操作的方法为:将待交叉的两个矩阵中的对应位置的元素分别转化为八位的二进制数A和二进制数B,将控制字矩阵中对应位置的元素别转化为八位的二进制数得到控制字C,如果控制字C中的某控制位的值为1时,二进制数A和二进制数B中与控制位对应位置的二进制字符交换;当控制字C中的某控制位的值为0时,二进制数A和二进制数B中与控制位对应位置的二进制字符不进行任何操作。
步骤S5:将交叉后的矩阵Block″1、Block″2、Block″3和Block″4重新组成密文图像C2。
步骤五:用伪随机序列U的后Width个伪随机数作为索引值,使用与像素值关联的约瑟夫置乱方法对密文图像C2进行列置乱操作,得到密文图像C3。
所述步骤五中与像素值关联的约瑟夫置乱方法的实现方法为:将伪随机序列U(Height+q)的元素作为初始步长InitialValue、密文图像C2的第q列元素作为序列S的元素带入扩充的约瑟夫函数,得到的序列S′是置乱后密文图像C1的第j行元素;其中,q=1,2,……,Width。具体实现方法与步骤三相同。
步骤六:使用两个密钥像素Pixel1和Pixel2对密文图像C3中的像素做像素扩散操作,得到加密后的密文图像C。
为了使密文中的像素互相影响,进一步对像素进行扩散。首先将密文图像C3的图像矩阵转换成一维序列,然后入两个算子先后对像素进行向后扩散和向前扩散,以确保图像中的每一个像素都受到其它像素的影响。所述步骤六进行像素扩散的方法为:
将密文图像C3转化为长度为Height*Width的一维像素序列PixelSequence,利用密钥像素Pixel1对一维像素序列PixelSequence向后扩散得到一维像素序列PixelSequence':
利用密钥像素Pixel2对向后扩散得到一维像素序列PixelSequence'向前扩散得到一维像素序列PixelSequence”:
将长度为Height*Width的一维像素序列PixelSequence”重构成大小为Height×Width的二维矩阵得到加密后的密文图像C。像素扩散操作的解密过程是加密过程的逆过程,这里不再赘述。
本发明的解密方法是加密方法的逆过程,因此本发明不再赘述。
当加密的初始密钥分别为u′1=0,x′1=0,y′1=0,z′1=0,w′1=0,Pixel1=127,Pixel1=255时,使用本发明加密的原始图像和密文图像如图5所示,该仿真实验在MATLABR2018a平台上完成。通过观察,本发明加密的密文图像已经完全失去原始图像所表达的特征。因为本发明的加密算法是无损的,所以使用本发明所得到的密文图像的解密图像和原始图像完全相同,这里不再一一列举。下面将对使用本发明加密的密文图像的安全性进行量化分析,以此证明该加密算法的安全性。
本发明使用SHA-384算法产生的二进制序列和两个像素作为初始密钥,其密钥空间足以抵抗穷举攻击。本发明所使用的两个混沌系统对系统的初始值十分敏感,当混沌系统的初始值发生微小的改变时,解密图像会发生很大的变化。图6中列举了大小为256×256的Lena原始图像、密文图像以及当密钥发生微小改变时的解密图像,通过对比可以看出,当密钥发生微小的改变,密文图像便无法被正确的解密。本发明有着极强的密钥灵敏性。均方差(MSE)和峰值信噪比(PSNR)可以用来衡量当密钥发生微小改变时原始图像与解密图像的差别,MSE的计算方法如公式(11)所示,PSNR的计算方法如公式(12)所示:
公式(11)和(12)中,P1(i,j)表示原始图像第i行、第j列的像素,P2(i,j)表示当密钥发生微小改变时的解密图像第i行、第j列的像素,Height和Width分别为图像的高和宽。一般来说,当MSE≥30时,说明两幅图像之间的差异是显著的。PSNR的值越小,两幅图像之间的差异越大。以Lena图像为例,当密钥发生微小改变时,原始图像和解密图像之间的MSE和PSNR的值如表1所示。通过对比可知,本发明的密钥灵敏性很强。
表1当密钥发生微小改变时原始图像和解密图像之间的MSE和PSNR的值
直方图可以反映出一个图像中所有像素的值的统计情况。图7中(a)-(c)为原始图像、(d)-(f)为原始图像的直方图、(g)-(i)为密文图像的直方图。原始图像的直方图中,像素值分布较为集中,具有一定的统计特性,对穷举攻击没有抵抗能力。而密文图像中像素的分布则均匀而且分散,像素的分布规律被打破,不再具有统计特性,攻击者不能利用统计特性穷举图像的原有信息,因此本发明可以很好地抵抗统计分析攻击。
像素直方图的分布规律可以使用直方图方差来衡量,用histi(i=0,1,…,255)表示图像的直方图,则直方图方差的计算公式如公式(13)所描述:
直方图方差表示图像直方图中像素值分布的均匀程度,直方图的方差越小,像素值分布越均匀。图7中所列举图像的方差如表2所示。通过对比可知,本发明极大的改变了图像的方差,具有良好的打破原始图像直方图分布的能力。
表2直方图的方差统计
信息熵是香农提出的用以量化信息量的概念,香农用信息熵来量化信息的不确定度。信息熵的计算方法如公式(14):
式中,s表示信源中可能出现的事件的总数,p(i)表示信源中每种事件i可能出现的概率。信息熵H(s)可以用来度量图像的随机程度。当使用公式(14)计算图像的信息熵时,
表3原始图像和密文图像的信息熵
图8中(a)-(c)为Lena原始图像水平方向、垂直方向和对角线方向的相邻像素的值的统计,(d)-(f)为Lena密文图像水平方向、垂直方向和对角线方向的相邻像素的值的统计。原始图像中大部分区域相邻像素间的值都十分接近,图像相邻位置像素的值的相关性很强。而密文图像打破像素之间的强相关性,对抵抗统计分析攻击具有很大的意义。相邻像素间相关系数的计算方法如公式(15)所示:
其中,xi表示被选定的像素的值,yi表示和xi的相邻的像素的值,N表示被选定的像素的总数,E(x)为被选定的像素的平均值,E(y)为与被选定的像素相邻的像素的平均值,D(x)表示被选定的像素的方差,D(y)与被选定的像素相邻的像素的方差,cov(x,y)表示x、y之间的协方差,rxy表示x、y之间的协方差。
随机选取10000对像素点,对原始图像和密文图像的水平方向、垂直方向和对角线方向上的相关系数进行了统计。统计结果如表4所示。表4中的统计结果表明,在原始图像中随机选取得到的像素相关性很强,而在密文图像中像素之间的相关系数接近于0。本发明所提出的加密方法可以更好地打乱像素之间的相关性,因此可以更好地抵御统计分析攻击。
表4原始图像和密文图像各方向的相关系数
差分攻击是指使明文发生微小的改变,然后比较分析密文的改变。像素数改变率(NPCR)和归一化平均改变强度(UACI)两个指标可以反应出算法抵抗差分攻击能力的大小,NPCR的计算方法如公式(16)所示,UACI的计算方法如公式(17)所示:
公式(12)中,sign()为符号函数,其计算方法如公式(18)所示:
NPCR的理想值为100%,UACI的理想值为33.4635%,明文发生微小改变后,其NPCR、UACI的值越接近与理想值,加密算法的抗差分攻击能力越强。表5中列举了当明文图像发生1bit的变化,它们的密文图像的NPCR,UACI的值,通过对比可知,本发明具有良好的抗差分攻击能力。
表5明文图像发生1bit的变化后NPCR、UACI的值
本发明对约瑟夫问题做出了改进,提出了一种与像素值关联的约瑟夫置乱方法,这种置乱方法将约瑟夫问题、混沌系统和像素值关联起来,增加了对明文的敏感性,并且减少了置乱过程中混沌系统的迭代次数。本发明使用高维度的混沌系统对像素做置换操作,增加了加密系统的随机性的,同时也提高了系统的安全性。本发明通过使用像素的扩散操作使密文图像中的所有像素均受到其它像素的影响,提高了像素之间的联系。仿真结果和安全性分析表明,本发明是安全的,可以用作图像加密。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
机译: 用于基于对象的像素值之间的一致性来设置像素的属性的信息处理设备,用于基于对象的像素值之间的一致性来设置像素的属性的信息处理方法,以及用于设置像素的非暂时性计算机可读介质。基于对象像素值之间一致性的像素属性
机译: 图像插值单元,程序产品和读取设备,其基于参考像素的边缘量和像素值之间的差的总和在丢失的像素位置中插入插值的像素值
机译: 具有用于生成种子像素值和用于显示的网格地址值的基于主机的渲染元件的图像生成系统,其具有用于生成最终像素值的渲染网格