一种基于四维忆阻超混沌系统的彩色图像加密方法

    专利查询2022-07-07  109



    1.本发明涉及一种彩色图像加密方法,具体涉及了一种基于忆阻超混沌系统的彩色图像加密方法。


    背景技术:

    2.随着移动互联网以及5g技术的发展,社会迎来了大数据时代,信息交流的效率得到大幅度提高,同时也使得信息安全面临着极大的挑战。数字图像由于其易于存储、表达信息生动形象等特征而在网络上得到了广泛的使用。因此,对于图像的加密处理和安全通信引发了学者的关注与研究。
    3.传统的文本加密算法虽然具有足够的安全性,但由于数字图像的数据量较大,像素冗余度以及相邻像素之间的相关性较高,而使得传统算法在图像加密效率上表现欠佳。混沌系统对初始值以及参数都极为敏感,其产生的混沌序列属于非周期信号,并且具有良好的伪随机性,可以用来设计伪随机数生成器。另外,混沌序列可以作为图像加密算法的密钥流以提高信息加密的效率和安全性。


    技术实现要素:

    4.本发明针对现有技术的不足,提供了一种基于四维忆阻超混沌系统的彩色图像加密方法。所述加密过程包括以下步骤:
    5.s1:构造四维忆阻超混沌系统,并对系统进行离散化。其中,混沌系统表达式为:
    [0006][0007]
    其中,g(w)为三值忆阻器的忆导值,表达式为:
    [0008][0009]
    其中,x、y、z和w为系统状态变量,a、b、c、d、a0、b0、c0和d0为系统参数。使用euler法对其进行离散化,可得:
    [0010][0011]
    s2:读取彩色明文图像信息,将待加密的彩色图像拆分成三基色分量矩阵,并按照r、g、b进行分组,得到三个m*n的矩阵。其中m代表阵的行数,n为矩阵的列数。
    [0012]
    s3:经过sha-512算法得到蕴含明文信息的初始值[x0,y0,z0,w0];将初始值与离散忆阻超混沌系统相结合进行迭代,得到超混沌序列[x,y,z,w]。
    [0013]
    s4:超混沌序列进行预处理,包括放大、取整和取余操作,使得混沌序列可以适用于图像数据。对序列x和z使用式(4)进行处理,得到密钥序列sr、sc和sz。
    [0014][0015]
    s5:用密钥序列对彩色明文图像r、g、b三个通道分别进行加密操作。首先使用密钥序列sr通过hash表结构得到索引序列,通过索引序列对图像的像素矩阵中的行进行像素级置换,再进行比特级置换,并使用密钥序列sz基于hilbert曲线的扩散方法对该行继续进行扩散操作,直到遍历每一行。随后,使用密钥序列sc通过hash表结构得到索引序列,通过索引序列对图像的像素矩阵中的列进行像素级置换,再进行比特级置换,并使用密钥序列sz基于hilbert曲线的扩散方法对该列继续进行扩散操作,直到遍历每一列。其中行和列的操作是类似的。
    [0016]
    以r通道操作为例具体为:
    [0017]
    (1)首先,通过sha-512算法得到蕴含明文信息的初始值[x0,y0,z0,w0],结合离散的超混沌系统得到超混沌序列,并从中取出与图像数据规模相匹配的超混沌序列。将混沌序列进行预处理后得到密钥序列sr、sc以及sz。
    [0018]
    (2)其次,设计置换操作。处理sr和sc的重复值,得到hash表索引序列xr和xc,分别用于行操作和列操作。使用索引序列xr对图像的第一行进行像素级置换,随后对进行比特级置换。
    [0019]
    (3)再次,设计扩散操作。使用hilbert曲线的遍历矩阵对序列sz进行重新排序,得到序列sh。使用序列sh对矩阵中的行进行扩散操作,依次遍历图像的每一行。
    [0020]
    (4)对图像矩阵的每一行依次进行像素级置换、比特级置换、扩散操作结束后,再进行列操作,其过程与行操作类似。
    [0021]
    本发明使用基于三值忆阻器的超混沌系统设计了一种新的图像加密算法。多值忆阻器具有较强的非线性,用于构建新型超混沌系统将会产生随机性更高的序列,有益于提高混沌加密算法的安全性。并且,在设计算法时,算法的初始密钥蕴含了原始图像的hash值,并在引入hash表结构与hilbert曲线的情况下完成图像的置换与扩散操作,使得明文、密文与密钥之间的关系变得更为复杂,通过分形证明,算法同时兼备高安全性与高效率的特点。因此,该算法具有较高的理论与应用价值。
    附图说明
    [0022]
    图1是本发明实施例中的加密流程示意图;
    [0023]
    图2是本发明实施例中的忆阻超混沌系统相图;
    [0024]
    图3是本发明实施例中的离散化的忆阻超混沌系统相图;
    [0025]
    图4是本发明实施例中的hash表示意图;
    [0026]
    图5是本发明实施例中的hlibert曲线示意图;
    [0027]
    图6是本发明实施例中的待加密彩色图像,加密后的图像和解密后的图像;
    [0028]
    图7为加密图像和原始图像的直方图;
    [0029]
    图8为原始图像和加密图像的相邻像素相关性;
    [0030]
    图9为算法的npcr指标和uaci指标;
    具体实施方式
    [0031]
    为了使本发明的技术方案及优点更加的清楚明白,下面结合实施例对本发明做进一步的详细说明。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
    [0032]
    如图1所示,本发明提出一种基于忆阻超混沌系统的彩色图像加密方法,所述加密过程包括以下步骤:
    [0033]
    s1:构造四维超混沌系统,其表达式为:
    [0034][0035]
    其中,g(w)为三值忆阻器的忆导值,表达式为:
    [0036][0037]
    其中,x、y、z和w为系统状态变量,a、b、c、d、a0、b0、c0和d0为系统参数,系统相图在x-y平面如图2中a所示,相图在x-z平面如图2中b所示,相图在x-w平面如图2中c所示。
    [0038]
    离散化的超混沌系统在数字化软件平台上更容易实现。采用euler法对系统进行离散化。euler算法是根据导数的定义实现的,当δt

    0或取较小的值时,导数的定义可近似表示如式(7)所示。
    [0039][0040]
    将式(7)代入式(5),可得离散化后的系统表达式如式(8)所示。
    [0041][0042]
    其中,δt为采样间隔,本文取δt=0.001。其他参数保持不变,得到离散化系统的相图在x-y平面如图3中a所示,相图在x-z平面如图3中b所示,相图在x-w平面如图3中c所示。可见离散化后的系统较为完整地保留了连续系统动力学特性。
    [0043]
    s2:读取彩色明文图像信息,将待加密的彩色图像拆分成三基色分量矩阵,并按照rgb进行分组,得到三个m行、n列的矩阵。
    [0044]
    具体实施时,本实施例采用图像为256*256的彩色lena图像作为测试图。如图6中a所示。
    [0045]
    s3:过sha-512算法得到蕴含明文信息的初始值[x0,y0,z0,w0]。将初始值与离散忆阻超混沌系统相结合进行迭代,得到超混沌序列。
    [0046]
    具体实施时,使用sha-512算法得到明文图像的64个8位整数hash值h,如式(9)所
    示。
    [0047][0048]
    对矩阵h所做处理如下:
    [0049]
    取出矩阵的第一行[h1,h2,h3,h4],若下一行的第一个元素为偶数,则直接与下一行对应元素进行异或操作;若下一行的第一个元素为奇数,则先将下一行进行左右翻转,再与对应元素进行异或操作,得到加扰值k1、k2、k3和k4。之后,通过式(10)确定离散系统的初始值[x0,y0,z0,w0]。
    [0050][0051]
    将[x0,y0,z0,w0]带入式(8)中,并设置迭代次数为m*n*o l,得到超混沌序列[x,y,z,w]。其中,m为图像像素矩阵的行数,n为矩阵的列数,o为矩阵的通道数,l为要丢弃的迭代次数,l=60000。m、n和o的选取使得超混沌序列的长度与图像数据的规模相匹配。
    [0052]
    s4:超混沌序列进行预处理,包括放大、取整和取余操作,使得混沌序列可以适用于图像数据,得到密钥序列。
    [0053]
    具体实施时,对序列x和z使用式(11)进行处理,得到密钥序列sr、sc以及sz。
    [0054][0055]
    s5:用密钥序列对彩色明文图像r、g、b三个通道分别进行加密操作,每个通道的图像矩阵分别进行行操作和列操作,其中三个通道的操作是类似的,行和列的操作是类似的。
    [0056]
    具体的,进行加密操作所用操作方法如下:
    [0057]
    (1)hash表数据结构。其结构是基于三个组件所实现的,分别为关键字k、hash函数f以及存储表m,如图4中a所示。其中a1,a2,

    ,an为k的值,1,2,

    ,n为表m的存储索引。具体实现过程为,给定任意关键字k,并代入函数f(k)中,得到k在表m中的索引值,最后将k存放在对应的索引位置上。为了防止m中的索引值出现重复的现象,使用闭列算法进行去重操作。具体的,如图4中b所示,长度为15的整数序列x,最终目标是将1至15的整数放在15个位置上,使序列中没有重复的值。首先,找出序列x中重复的值,并置为-1,表示空闲位置,如图4中c所示;其次,创建与x大小相同的序列n,如果n的索引值i出现在x中,则在n的对应位置填入数字1,否则填0,如图4中d所示;最后,找出x中缺失的索引值填入序列p,再将p填入到x中,得到无重复值的索引序列xh,如图4中e所示。
    [0058]
    (2)hilbert曲线。该曲线可以不间断地遍历一个正方形网格中所有的点,如图5中a所示。通过控制曲线起始点的位置和方向进行组合,可以决定它之后的走向,同时决定了
    它遍历空间点位的顺序。通过这种方法得到八种初始曲线,即八种一阶hilbert曲线,如图5中b所示。以图5中b所示的



    两种初始曲线为例,并使用基于矩阵运算的hilbert曲线生成算法,得到两种5阶hilbert曲线(32
    ×
    32),如图5中c与图5中d所示。
    [0059]
    具体实施时,用到了预处理后的超混沌序列sr、sc和sz。sr将用于对图像行像素的置换操作,sc用于对列像素的置换操作,sz用于对像素的扩散操作。
    [0060]
    进一步的,以r通道行操作为例,具体操作方式如下:
    [0061]
    (1)像素级置换操作。根据图像数据的规模,对式(11)中的密钥序列sr进行分块处理,即对应每行的置换操作。其次,使用hash表数据结构对分块后的密钥序列进行处理,得到无重复值的索引序列的密钥序列进行处理,得到无重复值的索引序列使用新的索引值对每行像素进行像素级置换。如式(12)所示。
    [0062][0063]
    其中,j=1,2,3,

    ,m
    ×n×
    o,表示第j行序列,i=1,2,3,

    ,n,表示该序列的第i个元素。此外,k为新的索引值,p为明文图像序列,a为置换后的序列。
    [0064]
    (2)比特级置换操作。每一行的像素级置换完成后,紧接着进行该行的比特级置换。对于第一行像素,首先将该行索引序列x
    r1
    的第一个数对8进行取模运算,得到循环移位的位数,再对该行的每一个像素进行比特级循环移位,如式(13)所示。
    [0065][0066]
    其中,t表示循环移位的位数,a1为像素级置换后的序列,b1为比特级置换后的序列,circshift(
    ·
    )为循环移位函数,用于将序列a1中每个元素的比特位循环右移t位。
    [0067]
    对于非首行的第j行像素,首先将其索引序列x
    r j
    的第一个索引值对256进行取模运算;其次,与前一行中该索引值对应的像素点进行异或操作;再次,将其结果对8取模以得到循环移位的位数;最后,进行比特级循环移位。算法流程如式(14)所示,其中s表示中间数据。
    [0068][0069]
    (3)扩散操作。使用hilbert曲线的遍历矩阵作为索引序列,对式(11)中的密钥序列sz进行重新排序,并将新的序列用于扩散操作。
    [0070]
    首先,根据图像数据规模确定hilbert曲线的阶数。图像尺寸为m
    ×n×
    o,则所需要的hilbert曲线的阶数可由式(15)计算。
    [0071][0072]
    其中,s表示中间数据,ceil(
    ·
    )表示进1取整,e为所需hilbert曲线的阶数。
    [0073]
    其次,从图5中选择一种初始曲线。选择方法为:将密钥序列sz的第一个数sz(1)对8进行取模运算,并将结果加1,得到1至8的整数,对应图8中的八种初始曲线。
    [0074]
    再次,由初始曲线得到e阶hilbert曲线,并将曲线的遍历矩阵转化为序列h,大小为1
    ×4e
    。舍弃序列h中大于m
    ×n×
    o的元素以得到索引序列,使用索引序列对密钥序列sz进行重新排序,得到新的序列sh用于扩散操作。
    [0075]
    最后,进行扩散操作。由于扩散加密的行操作与列操作类似,这里仅以行操作为例进行说明。在扩散操作之前,应先对密钥序列sh进行分块处理,即进行分块处理,即设第j行的图像序列为pj,其对应的密钥序列为s
    h j
    。若是第一行像素,则直接与序列s
    h1
    进行异或,得到第一行的密文序列c1;若是其它第j行像素,则先与前一行的密文序列进行异或,再与序列s
    h j
    进行异或,得到第j行的密文序列cj。该过程如式(16)所示。
    [0076][0077]
    值的指出的是,在对图像像素矩阵第一行进行像素级置换后,立即进行比特级置换,并继续进行扩散操作,随后再进行下一行的操作,直到遍历矩阵的每一行。完成行操作后再进行列操作,列操作与行操作类似。完成r通道的操作后,再进行g和b通道的操作。r、g、b通道操作方法类似。此外,图像的解密流程是加密流程的逆操作。
    [0078]
    本发明实施例中,选择了256*256的彩色lena图像作为测试图,其中,图6中a为待加密图像,图6中b为加密图像,图6中c为解密图像。图7为本加密方法的直方图分析结果,其中图7中a为原始图像r通道的直方图,图7中b为原始图像g通道的直方图,图7中c为原始图像b通道的直方图,图7中d为加密图像r通道的直方图,图7中e为加密图像g通道的直方图,图7中f为原始图像b通道的直方图。显然,从图中可以看出,加密后的图像像素杂乱,毫无规律,解密后的图像与原始图像完全一致,说明本发明具有较好的效果。
    [0079]
    为了防止攻击者使用统计手段破解密文图像,加密算法需要降低数字图像中相邻像素之间的相关性。通过式(17)计算了原始图像和密文图像在水平、垂直方向和对角方向上的相邻像素之间的相关性,其中每次计算将随机选择10000个相邻像素对。
    [0080][0081]
    其中,x和y表示相邻像素对,n=10000,表示随机选取的像素对个数,ρ
    xy
    为相关系数。其中,图8中a为原始图像水平方向像素分布结果,图8中b为原始图像垂直方向像素分布结果,图8中c为原始图像对角方向像素分布结果,图8中d为加密图像水平方向像素分布结果,图8中e为加密图像垂直方向像素分布结果,图8中f为加密图像对角方向像素分布结果。
    加密图像的相邻像素的像素值均匀密集地在整个平面上,呈现随机特性,几乎不存在相关性,因此本发明具有良好的抗统计攻击性能。
    [0082]
    为了抵抗差分攻击,需要加密算法对明文的灵敏性足够高。采用像素变化率(npcr)和归一化平均变化强度(uaci)两个指标来测试本发明在差分攻击中的表现。npcr表示其密文图像的像素点的变化率,理想值为99.6049%,而uaci表示密文图像的像素值的变化强度,理想值为33.4635%。它们的计算方法如式(18)所示:
    [0083][0084]
    其中,c1(i,j,k)和c2(i,j,k)分别表示在坐标(i,j,k)处两个密文图像的像素值。在原始图像中随机选择了100个像素点,每次只改变一个像素点的像素值,并计算对应密文图像的npcr和uaci,将得到的100组测试结果绘制成曲线图。由图9中a可知,npcr的值在99.6%左右浮动,由图9中b可知,uaci的值在33.46%左右浮动,非常接近它们的理想值。因此,该测试结果表明加密算法具有较强的抗差分攻击能力。
    [0085]
    由上述实施例可知,本发明提出的新的加密算法对彩色图像的加密效果具有较高的安全性,在信息安全技术中具有广阔的应用前景。
    [0086]
    以上是结合附图对本发明优选的具体实施方式和实施例进行的详细说明,本领域的普通技术人员应当认识到,以上实施例仅是用来验证本发明,而非作为对本发明的限定,只要是在本发明的范围内,对以上实施例的变化、变形都将落在本发明的保护范围内。
    转载请注明原文地址:https://tc.8miu.com/read-1705.html

    最新回复(0)