随着计算机、通信技术和区域医疗协同服务的不断发展,信息的安全与保密显得越来越重要。医学图像作为诊断依据的重要部分需要在公网上传播,为了防止病人敏感信息的非法泄漏,研究医学图像文件加密有着重要的意义。

一、混沌的特点

混沌是指一种由非线性确定系统产生的类随机行为,它具有以下特征:

1)随机性:混沌系统产生的混沌序列表现出类随机行为,具有长期不可预测性。

2)确定性:只要初始参数确定,产生的混沌序列即确定。

3)遍历性:混沌系统将以一种不重复的方式遍历相空间中的所有取值。

利用混沌系统的这些特点,可以设计出密钥空间大、加密流随机性高的加密算法,混沌加密近年在计算机领域成为了研究热点,大量混沌图像加密算法被提出来。

图像文件加密与普通文件加密的不同之处在于,图像相邻像素之间通常存在着比较大的相关性,对图像加密不仅要使图像变得不可识别,还要尽可能地减小相邻像素之间的相关性。目前国内外提出的各种混沌图像加密算法,有的通过Logistic函数生成混沌序列进行加密,有的通过DCT变换、Arnold变换进行加密,但总结起来,主要加密原理有以下两种形式:

1)利用混沌系统产生的伪随机序列与明文进行异或操作,直接改变明文的值,通过这种方式进行加密可使图像明文转变为一系列无规则“噪声”,能有效防止统计攻击;

2)利用伪随机序列对明文进行重新排序,通过这种方式加密能有效地对图像进行置乱,使加密后的密文图像具有一定的鲁棒性,但由于置乱过程没有改变像素本身的值,因此加密后图像的颜色直方图并没有改变。

结合医学图像数据量大、同色像素连续性高的特点,本文采用异或的方式提出一种新的混沌图像加密算法。

二、加密算法的创新

医学图像的特点是两高一大(高分辨率、高精度、大数据量),这就要求加密算法具备较高的运行效率。对于混沌系统,通常高维混沌系统产生的加密序列有较高的安全性,但运行速度较慢。低维混沌系统产生加密序列速度快,却容易受到非线性预测、相重构等方式的攻击,综合考虑算法运行效率与安全性,本文的算法将采用多个一维混沌系统混合的方式产生加密序列,并通过加密序列与图像进行异或操作进行加密和解密。

医学图像通常有着大片连续的区域存在颜色相同的像素点,加密算法若简单地采用加密序列与明文异或的方式生成密文,密码攻击者容易根据这片连续的区域分析对应密钥序列的情况。所以加密算法应该以某种方式改变这种由于明文而导致密文单一变化的情况,本文算法通过在加密过程中加入双重反馈解决这一问题。

三、加密算法的实现

考虑到加密算法的运行效率,本文选择以下两个混沌系统进行加密。

a、Logistic映射

基于多混沌系统的医学图像加密算法

当X∈(0,1),u∈(3. 5699456,4),X≠1-(1/u)时,系统处于混沌状态。

b、PLCM映射

基于多混沌系统的医学图像加密算法

当X∈(0,1),p∈(0,0.5)时,系统处于混沌状态。

以上两个混沌系统皆为一维混沌系统,从公式上看,不涉及sin与cos等复杂运算,所以能有较高的运行速度。

由于单个一维混沌系统产生的序列容易被非线性分析与相重构攻击,因此算法将选择的混沌系统混合使用,交替产生序列。设所选混沌系统数为N,每个混沌系统产生序列的最大长度为MAX_LEN。从第t个混沌系统开始产生序列。以N,t及各混沌系统的初始参数作为密钥:

a、用相应参数初始化混沌系统,为了跳过混沌系统初期迭代的非线性状态,每个混沌系统先进行P(P>100)次迭代。

b、获取图像中要进行加密的序列长度PL。

c、第f个混沌系统进行一次迭代产生混沌数值a,t=(t+1) mod N,令kLen=(a×E) mod MAX_LEN(文中E=10000,MAX-LEN=300),获得下一个混沌系统将要产生的序列长度kLen。

d、若PL<kLen,令kLen=PL。利用第f个混沌系统产生长度为kLen的混沌序列。PL=PL-kLen。

e、若PL=0,序列产生算法结束;否则转到第c步。

通过运行上述算法,即可得到加密所需的序列CARRAY,所产生的序列如图1所示。

基于多混沌系统的医学图像加密算法

混沌系统产生的混沌序列为一系列的实数,想要利用CARRAY对图像进行加密操作,需要对其进行离散化处理。

对CARRAY中的每个元素a,令a=(a×ENLARGE-MENT)mod256(文中ENLARGEMENT取10000),即取出了混沌序列中的一系列二进制密钥流BARRAY。

医学图像中存在着大量连续的像素值相同的区域,若按传统加密简单地将图像信息与密钥流BARRAY进行异或操作以产生密文图像,密文图像在原图相应的同像素区域处容易反映出密钥流的变化情况,继而被攻击破解。所以本文在加密的过程中加入了反馈机制,将图像与密钥流相结合作用,以产生变化更大的密文图像。

设图像数据流为DATA,反馈算法如下:

a、前向反馈

对于第一个数据点;DATA[O]=((DATA[O]+BAR-RAY[O])+BARRAY[O]) mod 256,对于之后的数据点:DA-TA[i]一(((DATA[i]0BARRAY[i])+BARRAY[i-1])mod 256)0 DATA[i-1]

b、后向反馈

对于非最后一个数据点:DATA[i]=(((nAlA[i]+BARRAY[i]) +BARRAY[i1])mod 256)+DATA[i+1],对于最后一个数据点:DATA[j]一《DATA[i]+BAR-RAYCi])+BARRAY[i]) mod 256

在前向反馈中,当i以递增的形式进行时,加密过程为密文反馈,已经加密的数据将反馈作用到后面的加密过程中,由于反馈的过程有混沌序列中的随机二进制位参与,因此最后得到的密文图像能呈现出良好的随机特性,具有较强的抗统计分析能力。

而当i以递减的形式进行时,加密过程为明文反馈,这时的反馈过程没有传递性,每个密文字符只与加密时它的前面一个明文数值有关,所以当明文图像有较明显的区域连续性时,加密后的图像也容易看出大概的轮廓。但由于加密过程与明文紧密相关,当解密过程中有一位明文遭到破坏时,将导致后续图像无法解密,这就有效加大了攻击者通过统计密文微小改变对明文造成的影响进而攻击的难度。

无论明文反馈加密还是密文反馈加密,在单向反馈过程中图像的第一点都没有受到反馈的作用,所以算法对明文反馈与密文反馈都进行了双向加密,这样不但提高了图像中第一点的安全性,也加大了密文图像的随机性,增大了对图像的破解难度。

解密图像只需在产生密钥流后将算法反向运行即可。

四、实验结果与安全性分析

采用以下实验环境:操作系统为Windows XP SP3,CPU为InteI(R) Core (TM2) Duo CPU E7500色93GHz,内存1. 96GB,在Visual Studi02005平台上用VC++实现本文加密算法。从中南大学湘雅医学院获取了100幅不同形态的医学图像进行实验,均得到了较好的加密效果,以下为对一幅1024×1024的24位CT图像进行加密的结果,如图2所示。

基于多混沌系统的医学图像加密算法

实验相关参数测试如下。

1、图像直方图

图像直方图能很好地反映出图像的颜色分布特征,一个好的图像加密算法应使加密后图像的直方图分布均匀,尽量地减小加密图像存在的像素统计特征,实验结果如图3所示。

基于多混沌系统的医学图像加密算法

由图可知,本文加密算法能很好地混淆图像像素值的分布,具有较好的加密效果。

2、图像相关性计算

应用以下公式可计算图像像素之间的相关性。

基于多混沌系统的医学图像加密算法

式中,N为选取对比的像素对总数,x与y分别是两组对比像素的平均值。

本文随机选取图像中的3000个相邻像素点对分别进行水平、垂直、对角关系的图像相关性计算,结果如表1所列。

基于多混沌系统的医学图像加密算法

可见,原本相关性很强的图像加密后成了像素间关联性很小的“杂乱”图像。

3、敏感性测试

a)密钥敏感性

首先对图像文件进行加密操作,保存密文图像后,对解密密钥中一个混沌初始参数值进行微小的改变,再对图像进行解密操作。由实验结果可知,虽然密钥只进行了10-15数量级的改变,亦将导致图像无法解密。实验结果说明算法中的密钥有着极高的敏感性,算法由多个混沌系统组成,每个混沌系统都有着初始参数敏感性,可见算法有着极大的密钥空间,能很好地抵抗暴力破解攻击。

b)明文敏感性

实验将对两幅只有一个像素不同的图像分别进行加密,再应用式(3),将公式中的对比值设为两幅图中对应位置的像素值,计算两幅加密图像的相似程度L,得L=0.06883。可看到,虽然明文图像只有一个像素的差别,加密结果却能得到两个几乎无相关性的图像,说明算法具有良好的明文敏感性,能在加密过程中将明文的改变扩散到整个图像。这一特性使算法能很好地抵抗通过对明文中存在的大量同色区域相对应密文的变化来分析密钥流情况的攻击。

c)密文敏感性

实验中先对图像文件进行加密,再将密文图像进行一个像素的改变。从结果可看到,一个像素的改变也能导致无法解密,说明在算法中密文也存在着极高的敏感性。

加密算法存在的这些敏感性,加大了差分攻击等通过观察加密过程中的细微变化来破解算法这类方式的攻击难度。

4、图像文件加密速度

医学图像成像精度通常较高,所生成的图像大小相对较大,所以算法的加密速度也是一个关键因素。实验中取了3类不同大小的医学图像进行加密,结果如表2所列。

基于多混沌系统的医学图像加密算法

由表2可知,加密时间与图像大小基本成线性关系,对大小为3M的医学图像可在1s内完成加密运算,符合实际应用需求。

5、加密算法安全性分析

混沌系统在理论上是一个无限周期的伪随机数发生器,但在计算机上实现时,由于计算机只能进行有限精度的计算,系统将不可避免地退化为一个周期函数,在加密过程若因周期问题产生了重复的密钥流,将大大降低算法的安全性。在本文提出的加密算法中,密钥流是由多个混沌系统共同产生的,每个混沌系统在加密时都会由一个流长度生成点来决定下一个混沌系统产生的密钥长度。这一个随机生成的加密流长度取值较小,混沌系统间能紧密地相互作用,攻击者雉以对其进行单一的分析,而且即使算法中的某一混沌系统在加密过程已经到达周期长度,只要该系统在进行系统切换时的流长度决定点没有停留在之前周期的同一个点,整体的密钥流依然可以看成是非周期的。系统的加密周期由所选的混沌系统共同决定,足以应用于大数据量的医学图像加密中。而混沌序列是由多个混沌系统共同产生,能很好地抵抗对单一混沌系统的非线性预测攻击与相重构攻击。系统对一幅大小为3M的图像加密只需244ms,可见算法有着较高的运行效率,能满足在医学中的应用。

小知识之DCT变换

DCT变换的全称是离散余弦变换(Discrete Cosine Transform),是指将一组光强数据转换成频率数据,以便得知强度变化的情形。若对高频的数据做些修饰,再转回原来形式的数据时,显然与原始数据有些差异,但是人类的眼睛却是不容易辨认出来。