基于FPGA可配置浮点精度的混合混沌图像加密方法

专利2023-03-07  111


基于fpga可配置浮点精度的混合混沌图像加密方法
技术领域
1.本发明属于图像加密领域,涉及一种基于fpga可配置浮点精度的混合混沌图像加密方法。


背景技术:

2.当图像和视频等多媒体信息在互联网上传输时必须要经过加密,以避免未经授权方的攻击,数据加密是预防数据泄露的有效方式,传统算法并没有结合图像数据的统计特征,并且往往算法复杂、加密效率低,很难满足实际应用的需求。
3.混沌系统迭代的混沌序列因具有对初值敏感、随机、不可预测等优良的密码学特性,使其广泛应用于图像加密领域,基于混沌的图像加密算法密钥空间大,密钥敏感性、随机性强,安全体系结构基本属于非算法的,基于代码的黑客攻击很难有效,相比传统的加密方法更有安全性,所以现有的大部分图像加密技术,主要是使用混沌系统产生随机序列,来打乱图像像素的排列顺序和改变像素的值,使像素值在像素域中均匀分布。
4.fpga以其高并行、可定制、能重构、低成本等特点十分适合于混沌加密算法的硬件实现,然而数字图像混沌加密系统在硬件实现时由于截断效应和舍入误差,使得产生的伪随机序列坍塌在有限域上,此时对超大图像数据加密有可能出现混沌序列周期性变化,面临着混沌动力学退化导致的安全性挑战,提高计算精度是克服数字混沌系统动力学退化的有效方案。
5.因此,利用fpga硬件处理方式来完成混合混沌图像加密方法的研究具有现实意义。


技术实现要素:

6.有鉴于此,本发明的目的在于提供一种基于fpga的可配置浮点精度的混合混沌图像加密方法,解决传统混沌图像加密方法安全性不足,且应用场景单一等问题。该方法不仅能够满足高强度加密要求,而且还能根据图像数据传输目的确定安全级别后,采用合适的加密精度来降低功耗或提升加密强度,适合实际多场景应用。
7.为达到上述目的,本发明提供如下技术方案:
8.一种基于fpga可配置浮点精度的混合混沌图像加密方法,利用fpga并行运算能力设计了logistic映射、lozi映射、tent映射三种一维混沌映射并联组合的随机序列发生器,并设计了量化、选择位组合、压缩方法将三种伪随机序列互联,提高了混沌系统复杂性,混沌参数范围得到扩展,能有效提升加密系统安全性能。且在fpga硬件平台上针对上述加密方法设计了可切换的两种加密精度,可根据图像数据传输目的,确定安全级别选取合适加密精度。采用sha_256函数对密图数据进行信息摘要提取,提取出初始密钥,有效提高了加密系统的抗差分攻击的能力。该方法具体包括以下步骤:
9.s1:获取待加密原图像像素值,以此计算出加密初始密钥;
10.s2:为fpga加密系统选取单精度或双精度两种可选的浮点精度,用于加密图像数
据;
11.s3:基于fpga加密系统(硬件),将步骤s1计算得到的初始密钥和给定参数以浮点数形式代入混合混沌llt系统中,用于生成各类混沌伪随机序列xn',xn″
,xn″′
;所述混合混沌llt系统是logistic映射模型、lozi映射模型和tent映射模型并联组成的混沌序列发生器;
12.s4:分别量化,组合,压缩混合混沌llt系统生成的混沌伪随机序列,得到二值密钥序列,作为整体加密密钥对图像数据进行加密。
13.进一步,步骤s1具体包括:利用sha_256函数对待加密原图像数据进行信息摘要h提取,提取出对应的32个哈希初值小段h0,h1,

,h
31
,每个初值小段为8位;将32个小段相互异或运算再与256做除法得到初始密钥x0,x0∈(0,1);即
14.h=h0,h1,

,h
31
[0015][0016]
进一步,步骤s2中,选取fpga加密系统的浮点精度,具体包括:根据图像数据传输目的自行确定安全级别,fpga加密系统提供片选端,可选用单精度、双精度两种运算方式迭代混沌序列,从而达到相应加密强度的要求。
[0017]
若判断出待加密的原图像数据,根据使用场景要求的加密强度较低,可采用单精度运算迭代混沌序列用于加密,可达到降低功耗、节约硬件资源的目的;
[0018]
若判断出原图像数据应用于高级别保密场所传输,则采用双精度运算迭代混沌序列用于加密,从而提高加密强度,有效抵抗第三方攻击。
[0019]
进一步,步骤s3中,
[0020]
logistic映射模型的表达式为:x'
n+1
=μx'n(1-x'n),x'n∈[0,1],n=0,1,2,...;
[0021]
lozi映射模型的表达式为:
[0022]
tent映射模型的表达式为:
[0023]
其中,μ、α、β、μ
″′
为控制参数,n表示迭代次数;xn',xn″
,xn″′
分别为logistic映射模型、lozi映射模型和tent映射模型迭代出的混沌伪随机序列。
[0024]
进一步,步骤s3中,控制参数μ和混沌伪随机序列xn的浮点数表示形式如下:
[0025][0026][0027]
混合混沌llt系统中混沌伪随机序列的迭代需要浮点数减法运算模块以及浮点数乘法运算模块来实现,即浮点数的减法运算和乘法运算表达式如下:
[0028][0029]
[0030]
其中,s
μ
表示μ的符号位,e
μ
表示μ的指数位,f
μ
表示μ的尾数位,s
x
表示xn的符号位,e
x
表示xn的指数位,f
x
表示xn的尾数位,bias表示指数偏移量。
[0031]
进一步,步骤s4具体包括以下步骤:
[0032]
s41:采用阈值量化法分别对混沌伪随机序列xn',xn″
,xn″′
进行量化,量化为单比特数据sn',sn″
,sn″′

[0033]
若采用单精度运算方式产生:
[0034]
若采用双精度运算方式产生:
[0035]
s42:先将量化后的单比特数据sn',sn″
,sn″′
进行关联得到sn,根据sn的值,对xn',xn″
,xn″′
进行选择位组合,得到一组8位的序列xn,具体操作为:
[0036]
若sn=1,再将xn',xn″
,xn″′
的尾数前8位取出,进行异或操作得到xn;若sn=0,再将xn',xn″
,xn″′
的尾数后8位取出,进行异或操作得到序列xn;
[0037]
单精度浮点数组合方法为:
[0038]
双精度浮点数组合方法为:
[0039]
s43:将8位的xn进行逐位异或,压缩为单比特密钥xor_bit:
[0040]
xor_bit=^xn[0041]
s44:重复执行步骤s41~s43,将依次产生的8个单比特密钥xor_bit组合为一组8位加密密钥xor_byte[7:0],将一组密钥xor_byte[7:0]与1个待加密图像数据image[7:0]进行异或运算,得到1组密文enc_image[7:0],如下式子,依次加密,得到最终密文;
[0042][0043]
进一步,本发明混合混沌图像加密方法是利用matlab与fpga之间进行待加密原图像数据、初始密钥、密文交互,并用matlab对待加密图像数据进行算法分析;具体包括:matlab端将经过sha_256函数运算出的初始密钥和原图像数据以所选浮点数的形式依次通过rs-232端口发送到fpga进行加密得到密文,同时返回密文并进行显示。
[0044]
进一步,matlab端发送加密初始密钥x0:确定单精度或多精度加密方式,利用rs-232串口,将经过sha_256函数运算出的初始密钥x0发送到fpga加密系统上;
[0045]
matlab端发送原图像,接收密文:等待开始加密信号,利用uart串口通信协议,发送原图像数据image[7:0]到fpga加密系统,同时fpga加密系统迭代混沌伪随机序列,加密原图像数据image[7:0],fpga加密系统再逐帧将密图数据enc_image[7:0]发送到matlab端并实时显示加密效果。
[0046]
本发明的有益效果在于:本发明首先利用sha_256算法获取初始密钥,可有效提高密钥隐秘性。再利用logistic映射、lozi映射和tent映射并联组成混沌序列发生器使产生的伪随机加密序列更加复杂,随机性更强;加密参数范围更广也能有效提升加密系统的安
全性。引入可切换单双浮点数运算来提高伪随机序列的精度,从而有效抵抗混沌动力学退化问题,同时根据不同级别的加密需求选取不同的精度加密而减少功耗。本发明加密方法具有有效抵抗差分攻击的能力,为军事、医疗、通信图像加密传输等领域提供一种可量化的加密方案,有着重要现实意义。
[0047]
本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。
附图说明
[0048]
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:
[0049]
图1为本发明基于fpga可配置浮点精度的混合混沌图像加密方法的流程图;
[0050]
图2为双精度llt量化、组合、压缩流程图;
[0051]
图3为mandril_gray图像;
[0052]
图4为单精度模式加密图;
[0053]
图5为单精度模式解密图;
[0054]
图6为双精度模式加密图;
[0055]
图7为原图以及双精度、单精度加密后的灰度直方图。
具体实施方式
[0056]
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
[0057]
其中,附图仅用于示例性说明,表示的仅是示意图,而非实物图,不能理解为对本发明的限制;为了更好地说明本发明的实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
[0058]
本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若有术语“上”、“下”、“左”、“右”、“前”、“后”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本发明的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
[0059]
请参阅图1~图7,本发明提供的基于fpga可配置浮点精度的混合混沌图像加密方法,关键核心在于可以结合实际应用场景可选加密精度提升加密强度或降低资源消耗,以
及基于fpga硬件设计混合混沌llt序列发生器,有效提高加密强度以及抵抗混沌动力学退化问题。
[0060]
如图1所示,本实施例设计了一种基于fpga可配置浮点精度的混合混沌图像加密方法,在对每位原图数据进行加密时,要提前确定初始密钥、混沌迭代参数、浮点数加密精度等问题。
[0061]
该加密方法的具体步骤如下:
[0062]
步骤1:获取待加密原图像像素值,以此计算出加密初始密钥;具体包括:
[0063]
利用sha_256函数对待加密原图像数据进行信息摘要h提取,提取出对应的32个哈希初值小段h0,h1,

,h
31
,每个初值小段为8位;将32个小段相互异或运算再与256做除法得到初始密钥x0,x0∈(0,1);即
[0064]
h=h0,h1,

,h
31
[0065][0066]
步骤2:为fpga加密系统选取单精度或双精度两种可选的浮点精度,加密图像数据。
[0067]
确定图像数据传输安全级别后,设置fpga的1位数据选择器,将信号端置1,选择双精度信号通道加密;信号端置0,选择单精度信号通道加密。
[0068]
步骤3:基于fpga硬件,将上述初始密钥和给定参数代入混合混沌llt中,用于生成各类混沌伪随机序列x',x

,x
″′
,混合混沌llt是logistic映射、lozi映射和tent映射并联组成的混沌序列发生器;具体包括:
[0069]
利用fpga并行运算能力,设置各个混沌映射参数μ、α、β、μ
″′
,将混合混沌ttl模型并行处理同时得到三种混沌序列x',x

,x
″′

[0070]
混合混沌llt中logistic映射为:x'n+1=μx'n(1-x'n),x'n∈[0,1],n=0,1,2,...;
[0071]
混合混沌llt中lozi映射模型为:
[0072]
混合混沌llt中tent映射模型为:
[0073]
其中,μ、α、β、μ
″′
为控制参数,xn',xn″
,xn″′
为三种映射模型迭代出的混沌序列;结合步骤2浮点数表示形式为:
[0074][0075][0076]
混合混沌llt浮点序列的迭代所需要的浮点数减法运算模块以及浮点数乘法运算模块电路级实现,标准参数的浮点数表现形式、减法运算、乘法运算表达式如下所示:
[0077]
[0078][0079]
结合步骤2,若选用单精度浮点数形式,为了达到最佳效果,设置混沌参数μ=32'h40800000(4.0),α=32'h3fb33333(1.4),β=32'h3e99999a(0.3),μ
″′
=32'h3f000000(0.5);若选用双精度浮点数形式,设置混沌参数μ=64'h4010000000000000(4.0),α=64'h3ff6666666666666(1.4),β=64'h3fd3333333333333(0.3),μ
″′
=64'h3fe0000000000000(0.5)。
[0080]
步骤4:分别量化、组合混合混沌llt生成的伪随机序列,得到二值密钥序列作为整体加密密钥对图像数据进行加密;具体包括以下步骤:
[0081]
步骤4.1:采用阈值量化法分别对步骤3生成的混沌序列xn',xn″
,xn″′
进行量化,并量化为单比特数据sn',sn″
,sn″′
;若采用单精度运算方式产生:
[0082][0083]
采用双精度运算方式产生:
[0084][0085]
步骤4.2:先将量化后的单比特数据sn',sn″
,sn″′
进行关联得到sn,根据sn的值,对xn',xn″
,xn″′
进行选择位组合,得到一组8位的序列xn,具体操作为:
[0086][0087]
若sn=1,再将xn',xn″
,xn″′
的尾数前8位取出,进行异或操作得到xn;若sn=0,再将xn',xn″
,xn″′
的尾数后8位取出,进行异或操作得到序列xn。
[0088]
单精度浮点数组合方法如下:
[0089][0090]
双精度浮点数组合方法如下:
[0091][0092]
步骤4.3:将8位的xn进行逐位异或,压缩为单比特密钥xor_bit:
[0093]
xor_bit=^xn[0094]
步骤4.4:执行以上所有步骤将依次产生的8个单比特密钥xor_bit组合为一组8位加密密钥xor_byte[7:0],将一组密钥xor_byte[7:0]与1个待加密图像数据image[7:0]进行异或运算,得到1组密文enc_image[7:0]如下式子,依次加密,得到最终密文;
[0095][0096]
步骤5:matlab与fpga之间进行原图数据、初始密钥、密图数据交互,并用matlab对密图数据进行算法分析。
[0097]
matlab端发送加密初始密钥x0:确定单精度或多精度加密方式,利用rs-232串口,将经过sha_256函数运算出的初始密钥x0发送到fpga系统上;
[0098]
matlab端发送原图,接收密图:等待开始加密信号,利用uart串口通信协议,发送原图数据image[7:0]到fpga,同时fpga系统迭代混沌序列,加密原图数据image[7:0],fpga再逐帧将密图数据enc_image[7:0]发送到matlab端并实时显示加密效果;
[0099]
以mandril_gray(512*512)测试图为例,选用不同的加密精度进行加解密,实验图如图3~7。运用灰度直方图检验法对两种精度混沌序列进行复杂度分析,如图7(a)、图7(b)、图7(c)所示,图7(b)的平稳度明显高于图7(c),可得双精度加密系统的复杂程度较高,安全性较强。
[0100]
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

技术特征:
1.一种基于fpga可配置浮点精度的混合混沌图像加密方法,其特征在于,该方法具体包括以下步骤:s1:获取待加密原图像像素值,以此计算出加密初始密钥;s2:为fpga加密系统选取单精度或双精度的浮点精度;s3:基于fpga加密系统,将步骤s1计算得到的初始密钥和给定参数以浮点数形式代入混合混沌llt系统中,用于生成各类混沌伪随机序列;所述混合混沌llt系统是logistic映射模型、lozi映射模型和tent映射模型并联组成的混沌序列发生器;s4:分别量化,组合,压缩混合混沌llt系统生成的混沌伪随机序列,得到二值密钥序列,作为整体加密密钥对图像数据进行加密。2.根据权利要求1所述的混合混沌图像加密方法,其特征在于,步骤s1具体包括:利用sha_256函数对待加密原图像数据进行信息摘要h提取,提取出对应的32个哈希初值小段h0,h1,

,h
31
,每个初值小段为8位;将32个小段相互异或运算再与256做除法得到初始密钥x0,x0∈(0,1);即h=h0,h1,

,h
31
3.根据权利要求1所述的混合混沌图像加密方法,其特征在于,步骤s2中,选取fpga加密系统的浮点精度,具体包括:若判断出待加密的原图像数据,根据使用场景要求的加密强度低,采用单精度运算迭代混沌序列用于加密;若判断出原图像数据应用于高级别保密场所传输,则采用双精度运算迭代混沌序列用于加密。4.根据权利要求1所述的混合混沌图像加密方法,其特征在于,步骤s3中,logistic映射模型的表达式为:x'
n+1
=μx'
n
(1-x'
n
),x'
n
∈[0,1],n=0,1,2,...;lozi映射模型的表达式为:tent映射模型的表达式为:其中,μ、α、β、μ”'为控制参数,n表示迭代次数;x
n
',x
n”,x
n”'分别为logistic映射模型、lozi映射模型和tent映射模型迭代出的混沌伪随机序列。5.根据权利要求4所述的混合混沌图像加密方法,其特征在于,步骤s3中,控制参数μ和混沌伪随机序列x
n
的浮点数表示形式如下:的浮点数表示形式如下:混合混沌llt系统中混沌伪随机序列的迭代需要浮点数减法运算模块以及浮点数乘法运算模块来实现,即浮点数的减法运算和乘法运算表达式如下:
其中,s
μ
表示μ的符号位,e
μ
表示μ的指数位,f
μ
表示μ的尾数位,s
x
表示x
n
的符号位,e
x
表示x
n
的指数位,f
x
表示x
n
的尾数位,bias表示指数偏移量。6.根据权利要求4所述的混合混沌图像加密方法,其特征在于,步骤s4具体包括以下步骤:s41:采用阈值量化法分别对混沌伪随机序列x
n
',x
n”,x
n”'进行量化,量化为单比特数据s
n
',s
n”,s
n”';若采用单精度运算方式产生:若采用双精度运算方式产生:s42:先将量化后的单比特数据s
n
',s
n”,s
n”'进行关联得到s
n
,根据s
n
的值,对x
n
',x
n”,x
n”'进行选择位组合,得到一组8位的序列x
n
,具体操作为:若s
n
=1,再将x
n
',x
n”,x
n”'的尾数前8位取出,进行异或操作得到x
n
;若s
n
=0,再将x
n
',x
n”,x
n”'的尾数后8位取出,进行异或操作得到序列x
n
;单精度浮点数组合方法为:双精度浮点数组合方法为:s43:将8位的x
n
进行逐位异或,压缩为单比特密钥xor_bit:xor_bit=^x
n
s44:重复执行步骤s41~s43,将依次产生的8个单比特密钥xor_bit组合为一组8位加密密钥xor_byte[7:0],将一组密钥xor_byte[7:0]与1个待加密图像数据image[7:0]进行异或运算,得到1组密文enc_image[7:0],如下式子,依次加密,得到最终密文;7.根据权利要求1~6中任意一项所述的混合混沌图像加密方法,其特征在于,该方法利用matlab与fpga之间进行待加密原图像数据、初始密钥、密文交互,并用matlab对待加密图像数据进行算法分析;具体包括:matlab端将经过sha_256函数运算出的初始密钥和原图像数据以所选浮点数的形式依次发送到fpga进行加密得到密文,同时返回密文并进行显示。8.根据权利要求7所述的混合混沌图像加密方法,其特征在于,matlab端发送加密初始密钥x0:确定单精度或多精度加密方式,利用rs-232串口,将经过sha_256函数运算出的初始密钥x0发送到fpga加密系统上;matlab端发送原图像,接收密文:等待开始加密信号,利用uart串口通信协议,发送原图像数据image[7:0]到fpga加密系统,同时fpga加密系统迭代混沌伪随机序列,加密原图
像数据image[7:0],fpga加密系统再逐帧将密图数据enc_image[7:0]发送到matlab端并实时显示加密效果。

技术总结
本发明涉及一种基于FPGA可配置浮点精度的混合混沌图像加密方法,属于图像加密领域。该方法包括:S1:获取待加密原图像像素值,计算加密初始密钥;S2:为FPGA加密系统选取单精度或双精度的浮点精度;S3:基于FPGA加密系统,将步骤S1计算得到的初始密钥和给定参数代入混合混沌LLT系统中,生成各类混沌伪随机序列;混合混沌LLT系统是Logistic映射模型、Lozi映射模型和Tent映射模型并联组成的混沌序列发生器;S4:分别量化,组合,压缩混合混沌LLT系统生成的混沌伪随机序列,得到二值密钥序列,作为整体加密密钥对图像数据进行加密。本发明能有效提高加密强度,抵抗混沌动力学退化问题。抵抗混沌动力学退化问题。抵抗混沌动力学退化问题。


技术研发人员:魏东 庞宇 余超
受保护的技术使用者:重庆邮电大学
技术研发日:2022.07.25
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-1708.html

最新回复(0)