APP下载

基于有限域与Arnold映射结合的医学图像快速加密算法

2023-06-07黄清梅阿孜古丽伊克木李国东

计算机应用与软件 2023年5期
关键词:明文加密算法密文

黄清梅 阿孜古丽·伊克木 李国东

(新疆财经大学统计与数据科学学院 新疆 乌鲁木齐 830012)

0 引 言

随着计算机与互联网的高速发展以及人们工作时间与医院上班时间的重叠,有许多人选择在网络上咨询与就医,这就导致了医学图像在网络上的传输,但是为了保护患者的隐私,需要对图像进行加密传输,并且对图像加密的时间有严格的要求,加密速度越快越好。

对于图像加密,研究者进行了大量的研究。研究发现传统的DES域AES加密方法在加密中都存在一定的缺陷[1-2]。由于混沌系统具有对初始值敏感、非周期等特性,运用其对图像加密能够取得较好的结果[3]。文献[4]基于混沌置乱的加密算法RMIEF-CS对医学图像进行加密;文献[5]运用混沌序列与Arnold映射结合的算法对图像进行加密,这种加密算法取得了较好的加密效果,但其所需的加密时间较长;文献[6]运用离散混沌映射产生伪随机序列,并结合DNA编码设计了一种图像加密算法;文献[7]运用超混沌Lorenz产生混沌序列生成密钥,对明文图像数据进行位分解,对高位数和低位数进行分别加密;文献[8]将Hua提出的一种基于快速置换和可选择像素扩散的加密方法进行了分析,验证了其理论的正确性,并在此基础上,提出了一种基于差分分析的改进方案;文献[9]利用2D sine logistic混沌映射产生混沌序列,选择三级小波分解的低频系数进行扩散和置乱加密,再将二级小波分解的中高频系数进行扩散加密,最后将加密后的小波系数进行小波逆变换得到加密图像;文献[10]运用改进的CAT置乱系统对明文图像进行三维置乱,再将Henon_Kent混沌系统所产生的三个混沌序列分别对图像的RGB三层的像素灰度值进行扩散,重复加密步骤,直至其信息熵在7.99以上停止。

本文用Tent映射来选取超混沌Lorenz系统的初始值,并且将超混沌Lorenz系统产生的混沌序列作为优化后Arnold映射的参数向量a、b,增加了选取初始值及参数的随机性,可以提高加密图像的抗攻击性。将此加密方法应用到数字图像的加密中,加密结果表明本文方法的可行性,并且加密效果较好。

1 有限域

1.1 有限域基本概念

由于有限域结构比较清晰,元素个数有限,所以其在计算机科学与信息理论方面都有较为广泛的应用。

有限域为含有有限个元素的域,其元素的个数就称为有限域的阶。将阶为pn的有限域记作GF(pn),称之为pn阶的Galois域[11]。

运用不可约多项式构造有限域:设p为任意的一个素数,n为任意的一个正整数,定义f(x)为域Zp上的一个不可约的n次多项式,则Zp[x]/f(x)是域,其计算公式为:

GF(pn)[x]=Zp[x]/f(x)

(1)

Zp[x]/f(x)={a0+a1x+…+an-1xn-1+

f(x)|ai∈Zp}

(2)

GF(pn)[x]={a0+a1x+…+an-1xn-1+

f(x)|ai∈Zp}

(3)

式中:Zp={0,1,2,…,p-1}。域Zp[x]/f(x)中含有的元素个数为pn个。可以把a0+a1x+…+an-1xn-1+f(x)简记为a0+a1x+…+an-1xn-1。

1.2 有限域GF(28)

设f(x)为域Z2上的一个不可约的n次多项式,则根据式(3)可知:

GF(2n)[x]=Z2[x]/(f(x))={a0+a1x+…+

an-1xn-1+f(x)|ai∈Z2}

(4)

当n为8时,有限域GF(28)的公式如下:

GF(28)[x]=Z2[x]/m(x)

(5)

式中:m(x)=x8+x4+x3+x+1为选定的8次不可约多项式。则根据式(5)可知,GF(28)[x]中含有256个元素,用二进制对每个元素进行赋值,再转化为十进制数,就可以得到一个256×256的加法运算表。

2 Arnold映射

Arnold映射又称为猫映射(cat映射),由数学家弗拉基米尔·阿诺德提出,是一种在有限区域内进行反复折叠、拉伸变换的混沌映射方法,一般应用在混沌加密中。Arnold映射置乱图像相较于随机置乱、单次不重复置乱方法来说,算法的运算量要大得多,运算时间也较长,但其置乱效果较好[12]。

若直接用一个2×2的矩阵T对图像的像素点位置(xn,yn)进行置换,得到新的像素点位置(xn+1,yn+1),Arnold映射置乱算法的变换公式如下:

(6)

由于像素点的位置只能取整数,所以在置乱中矩阵T只能取整数矩阵,在置乱的逆向操作中的矩阵T-1也只能取整数矩阵,矩阵T与T-1的取法如下:

(7)

(8)

式中:a、b均为整数。

本文采用的是优化后的Arnold映射对图像进行置乱:将需要置乱的图像矩阵展开为一个一维向量,其交换位置只需要考虑列标的变动,不需要考虑行标的变动,因为此时所有像素点位置的行标皆为1。对向量中的任意一点坐标(1,j)进行Arnold映射置换后得到新的坐标位置(p,q),如下:

(9)

(10)

由此可知p恒等于1,只需要考虑q即可,这样就缩短了置乱的时间。

3 加密算法设计

3.1 加密具体过程

本文采用MATLAB R2019b进行加密程序编程,设计的加密算法如图1所示,具体步骤如下:

Step1读取图像,并规定图像的大小为M×N,将其变为大小为1×MN的序列。

Step2运用Tent映射迭代1 000次,选取其位于200、400、600和800位的数作为超混沌Lorenz系统的初始值,增加其随机性。Tent映射的公式如下:

(11)

Step3运用超混沌Lorenz系统产生混沌序列,本文在Lorenz系统的基础上引入非线性控制器w,得到超混沌Lorenz系统结构如下[13]:

(12)

其初始值为Step2中产生的4个随机数:39、79、76、36。使其迭代产生2×MN大小的混沌序列。

Step4运用GF(28)域加法运算进行图像扩散。首先由多项式得到GF(28)域的加法运算表GF2p8Table,其大小为256×256。然后将Step3生成的混沌序列s分为两个大小都为1×MN的混沌序列s1和s2。最后由加法算法表对图像进行2次循环扩散,即运用混沌序列s1进行正向扩散(按照i从1到MN顺序),再运用混沌序列s2进行逆向扩散(按照i从MN到1顺序),这样操作能将明文图像的所有像素点都扩散到密文图像中去。主要程序如下:

1. a=mod(floor(j/pow2(8-i)),2);

2. q=mod(mod(a+b,2));

3. w=sum(q.*pow2(7:-1:0));

%生成GF(28)域加法运算表

4. B(i)=LookUpGF2p8(B(i-1),s1(i),A(i),TBL);

%扩散

Step5对扩散后的图像运用优化后的Arnold映射进行置乱。首先将混沌序列s取整取模,将其1∶MN列作为Arnold映射中的随机向量a,将其MN+1∶2MN列作为随机向量b。然后对扩散后的序列进行置换。主要程序如下:

5. x=mod(floor((s+100)*10^10),10*max(M,N))+1;

%生成整数混沌序列

6. a=x(1:M*N);b=x(M*N+1:2*M*N);

%产生向量a、b

7. q=mod(b+a.*(1:M*N),M*N)+1;

8. t=A(j);A(j)=A(q(j));A(q(j))=t;

%置乱

3.2 解密具体过程

接收方在接收到图像后,进行加密过程的逆向操作,得到明文图像。解密过程如图2所示。

图2 本文解密算法功能流程

3.3 仿真实验结果

本文使用MATLAB R2019b软件进行实验仿真,选取网络医学检查图片(图片来源:搜狗图片)作为明文图像,第一幅图像其大小为46.1 KB,其分辨率为743×720,第二幅图像其大小为24.6 KB,其分辨率为236×180,如图3(a)所示。用3.1节中的加密算法加密后得到的密文图像如图3(b)所示,经过解密后的图像如图3(c)所示。

(a) 原图像 (b) 密文图像 (c) 解密后图像图3 仿真实验结果

由图3可知,其图像越小,加密时间越快,并且加密后的图像均完全看不出原来的明文图像,可见加密的效果较好。解密后也能得到原图像,说明此加密算法具有可行性。

4 实验安全性分析

(1) 加密速度比较。将本文加密所需时间与其他方法进行比较,所得结果如表1所示。

表1 加密时间比较

可以看出,本文图像较文献[14]相比,图片较大,但加密所需时间较短。

(2) 直方图。图4给出了加密前第一幅图像的明文图像统计直方图与加密后的密文图像统计直方图,通过两者的波动程度可以看出,加密后的图像的密文像素直方图明显比加密前的明文像素直方图分布更加平稳,波动程度小,说明加密后的图像的像素值分布得更为随机、更为分散,可以更有效抵抗攻击。

(a) 明文图像统计直方图 (b) 密文图像统计直方图图4 统计直方图分析

直方图可以看出明文图像和密文图像灰度值的波动性,使用χ2统计量在数值上衡量明文图像与密文图像之间的差别。

表2 χ2检验结果

(3) 信息熵分析。信息熵H主要是对信息源的整体性进行考虑,其整体性主要是以平均计算的原理来显示。信息熵的表达形式如式(13)所示。

(13)

本文加密算法得到的信息熵为:H=7.992 9,与文献[7]中CT图像的信息熵为7.991 4相比,本文加密算法信息熵更接近于8,加密效果较好。

(4) 统计学分析。在原图像和密文图像中随机地选取一组数据,并且计算其水平方向、垂直方向、对角方向的相关系数,其计算公式如式(14)-式(17)所示。

(14)

(15)

(16)

(17)

明文图像与密文图像在水平方向上相邻像素值的关系如图5所示。

(b) 密文图像水平方向关系图5 相邻像素关系

观察图5,可以看出明文图像水平方向上的相邻像素具有明显的线性关系,密文图像在矩形区域内无规则地散布着,不具有相关性。

通过计算,可得图像在水平、垂直、正对角、反对角方向上的相关系数,结果如表3所示。

表3 原图像与密文图像相关系数对比表

可以看出,明文图像相邻像素之间相关系数较高,均在0.99以上,加密后相邻像素之间的相关系数较小,与文献[2]相比,达到了很好的加密效果。

(5) 密钥敏感性分析。本文选取Tent映射进行迭代,为了尽量避免映射落入周期循环,所以本文迭代次数选取1 000。随机选取4位数字作为超混沌Lorenz的初始值,是为了增加其初始值选取的随机性,使得初始值的选取无规律可循,如果图像的获取者没有得到正确的初始值,即无法对图像解密。本文将初始值39改为39×10-6进行解密操作,得到结果如图6所示。

(a) 正确初始值解密图像 (b) 错误初始值解密图像图6 初始值变动前后解密图像对比

可以看出,本文算法对初始值的选取非常敏感,初始值有略微差异都无法解密出原图像。

5 结 语

随着电子通信设备智能化越来越高,许多人选择在网络上就医,可以节约时间和成本,在传输检查结果图像的时候,对图像加密时间的要求就越来越高,针对此问题,本文运用有限域GF(28)与Arnold映射设计一种医学图像的快速加密算法,通过加密后的效果及安全性分析可以看出,本文算法时间较短,加密后像素值之间分布比较均匀,相邻像素的相关性小,具有一定的可行性。本文算法能够快速地对图像进行加密和解密,加密过程简单可行,达到了较好的加密效果,能够满足医学图像简单快速且不易破译的要求,并且能够很好地保护患者的隐私,他人即使从图像传输过程中截获也无法破译出来。

猜你喜欢

明文加密算法密文
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
奇怪的处罚
一种基于密文分析的密码识别技术*
奇怪的处罚
基于小波变换和混沌映射的图像加密算法
四部委明文反对垃圾焚烧低价竞争
云存储中支持词频和用户喜好的密文模糊检索
Hill加密算法的改进