改進(jìn)的AES加密算法在DICOM醫(yī)學(xué)圖像中的應(yīng)用

DICOM文件的安全性不容忽視,然而目前在其加密方面的研究還比較少,現(xiàn)在醫(yī)學(xué)圖像中常用的文件加密方法只是將經(jīng)典的加密算法直接運用在醫(yī)學(xué)圖像中,如DES,AES加密算法等。傳統(tǒng)的加密算法將輸入明文看作二進(jìn)制流,沒有考慮圖像本身的特性,使得其對圖像并不十分適用?;贏ES加密算法的設(shè)計原理,并結(jié)合斜帳篷映射提出了一種改進(jìn)的算法,使之能夠適應(yīng)醫(yī)學(xué)圖像的數(shù)據(jù)特點。此外,針對DICOM格式的特點增加了對病人基本信息的保護(hù),并與圖像文件加密相結(jié)合。

一、AES加密算法分析與改進(jìn)方案

1、AES加密算法簡介

AES加密算法是分組迭代加密算法,能有效抵抗強(qiáng)力攻擊、差分攻擊和線性密碼分析,具有分組長度和密鑰長度設(shè)計靈活、高安全性和高運行效率等優(yōu)點。AES加密的每一輪運算由4個變換組成,它們是:輪密鑰異或、S盒變換、行置換和列混合。為了后文描述方便,將這4個步驟稱為AddRoundKey、SubBytes、ShiftRows、MixColumns,加密流程如圖1所示。

1c

2、改進(jìn)方案

AES加密算法采用分組迭代,分塊大小為4×4矩陣,每個元素為8比特。本文加密算法以像素(8比特)為單位,對整幅圖像進(jìn)行處理,為了使算法適用于圖像文件加密,達(dá)到較好的安全性,并提高加密效率,我們基于AES加密算法框架進(jìn)行了如下改進(jìn):

(1)改進(jìn)密鑰序列生成方法

混沌動力學(xué)系統(tǒng)具有偽隨機(jī)性和對初始條件與系統(tǒng)參數(shù)的極端敏感性,因此,它為圖像信息加密提供了很好的途徑。在改進(jìn)加密算法中采用如下所示的斜帳篷映射(Skew tent map)生成密鑰序列。

改進(jìn)的AES加密算法在DICOM醫(yī)學(xué)圖像中的應(yīng)用

當(dāng)a∈[O,1]時系統(tǒng)呈混沌狀態(tài)。該映射迭代軌道序列的相關(guān)性以指數(shù)遞減,混沌變量的分布均勻,具有很好的偽隨機(jī)特性。

基于斜帳篷映射生成偽隨機(jī)序列的方法如下:一幅大小為MxN的圖像,需要加密R輪。首先迭代斜帳篷映射得到R個長為M×N的序列Xr={ Xr,o,Xr,1,…,Xr,mn-1},1≤r≤R。對序列X按照式(2)擴(kuò)展為0一255的整數(shù)序列Kr={kr,0,kr,1,…,kr,mn-1}。

改進(jìn)的AES加密算法在DICOM醫(yī)學(xué)圖像中的應(yīng)用

其中[]運算表示向下取整。

(2)改進(jìn)加密/解密操作

AES加密算法的加密方式為像素矩陣D與密鑰序列K直接進(jìn)行異或操作,為了增加對明文的敏感性,本加密算法做出了改進(jìn),第r輪的加密過程如下所示:

改進(jìn)的AES加密算法在DICOM醫(yī)學(xué)圖像中的應(yīng)用

其中i∈[O,m- 1],j∈[0,N-1],D[il[jJ為明文像素,C[Z][j]為得到的密文像素。

明文圖像矩陣按照從左到右,從上到下加密;密文圖像矩陣按照從右到左,從下到上逐像素進(jìn)行解密。經(jīng)過以上的異或操作之后,使得密鑰與明文相關(guān),兩幅不同圖像即使采用相同的初始條件,生成的密鑰序列也不同。

(3)改進(jìn)列混合操作

AES加密算法中,列混合操作(MixColumns)采用矩陣運算,每個像素平均需要經(jīng)過移位和異或運算。為了降低運算量并達(dá)到較好的混合效果,在改進(jìn)的加密算法中,我們改變了MixColumns的矩陣運算,采用簡單的加減運算增強(qiáng)像素間的聯(lián)系,具體做法如下:對于每一行,第一個像素保持不變,從第二個像素開始用相鄰像素的更新當(dāng)前像素(如式(4)所示);對于每一列,第一個像素保持不變,從第二個像素開始用相鄰像素的值更新當(dāng)前像素(如式(5)所示)。

改進(jìn)的AES加密算法在DICOM醫(yī)學(xué)圖像中的應(yīng)用

以5×4的像素矩陣為例.運算過程如圖2所示。

改進(jìn)的AES加密算法在DICOM醫(yī)學(xué)圖像中的應(yīng)用

從圖2中可以看出,當(dāng)D(O](O]發(fā)生變化時,將影響所有像素;當(dāng)D[M-I][N-l]發(fā)生改變時,在同一輪中將不影響其他像素,因此在行列變換操作中,應(yīng)將每一行循環(huán)向左移動,每一列循環(huán)向上移動,經(jīng)多輪加密后將有明顯的擴(kuò)散效果。

改進(jìn)的行列混合操作中采用簡單的加減運算,每個像素平均僅需要2個加法運算,該操作不僅減少了運算量還增強(qiáng)了像素之間的聯(lián)系,經(jīng)多輪加密后能達(dá)到較好的混合效果。

二、改進(jìn)的AES加密算法算法在DICOM醫(yī)學(xué)圖像中的應(yīng)用

DICOM文件一般由一個DICOM文件頭和DICOM數(shù)據(jù)集合組成.DICOM數(shù)據(jù)集合足由DICOM數(shù)據(jù)元素按照一定的順序排列組成的,它不僅包括圖像數(shù)據(jù),還包括許多和病人相關(guān)的信息,如病人姓名、年齡、病歷等。數(shù)據(jù)元素的組成結(jié)構(gòu)如圖3所示,其中標(biāo)志符由組號與元素號組成,表示為(組號,元素號),是數(shù)據(jù)元素的唯一標(biāo)識。

改進(jìn)的AES加密算法在DICOM醫(yī)學(xué)圖像中的應(yīng)用

因此,DICOM文件需要保密的內(nèi)容包括兩個部分:病人的基本信息和圖像信息。

1、病人信息和圖像數(shù)據(jù)的交換方案

我們將病人基本信息的保護(hù)與圖像數(shù)據(jù)的加密結(jié)合起來:設(shè)計一個一維到二維的映射方法,將病人信息以8比特為單位與圖像像素明文交換。假設(shè)存儲病人信息的變量為一維數(shù)組P[L],其中L為病人信息的字節(jié)散,其處理過程為:

Step1迭代斜帳篷映射得到序列X'={x’0,x’1,…,x’2xL-1}將其分成長為L的兩個子序列X'1={x'o,x’1,...,x’L-1},x'2={x’L+1,x’L+2,....x'2L-I}。

Step2獲取隨機(jī)整數(shù)序列作為橫坐標(biāo).將x1’用類似式(2)的方法擴(kuò)展到0一M范圍內(nèi),得到橫坐標(biāo)序列U={uo,u1.…,ul- 1}。

Step3獲取隨機(jī)整數(shù)序列作為橫坐標(biāo).將X2’用擴(kuò)展到0—N范圍內(nèi),得到縱坐標(biāo)序列v={v0,v1,…,vL-1}。

Step4組合兩個序列得到坐標(biāo)序列為(U,V)={(uo,v0),(u1,v1).....(UL-I,VL-1)}。

令L= 1000,M; 1000,N=1000,xo=0.80,a'= 0.6.得到的坐標(biāo)序列分布情況如圖4,分布比較均勻,映射前,病人信息顯示的是ASCII碼;映射后顯示的是亂碼,以病人姓名為例:假設(shè)映射前病人姓名為:" Anoyrniaed",映射后將數(shù)組內(nèi)容重新填充回DICOM原標(biāo)簽中,顯示的內(nèi)容為:“q筆OK w■篁一”。

這種做法使得病人信息失去可讀性,其安全性依賴于圖像的安全性,只要采用安全的圖像加密算法便能保證病人信息的安全。

改進(jìn)的AES加密算法在DICOM醫(yī)學(xué)圖像中的應(yīng)用

2、DICOM文件加密方案

本節(jié)列出了將保護(hù)病人信息的方案和改進(jìn)的AES加密算法應(yīng)用于DICOM文件加密的具體步驟,其基本的加密結(jié)構(gòu)如圖5。

改進(jìn)的AES加密算法在DICOM醫(yī)學(xué)圖像中的應(yīng)用
加密算法步驟如下:

Step1初始化r=0。隱藏病人基本信息,將DICOM文件中的病人信息數(shù)據(jù)取出放在一維效組P[L]中;將圖像像素數(shù)據(jù)取出放在二維矩陣D[M][N]中;按照上節(jié)中的映射算法依次將P的數(shù)據(jù)和D對應(yīng)的數(shù)據(jù)交換,得到交換后的病人信息P',交換后的圖像像素矩陣D1。

Step2密鑰異或操作(HxeIXOR),將圖像像素矩陣D與密鑰序列群按照式(3)異或,得到C1。

Step3 S盒置換(SubBytes)。采用S盒,將C1的每個元素的高4位作為S盒的行坐標(biāo),低4位作為S盒的列坐標(biāo),查表進(jìn)行S盒替換,得到C2。

Step4行列置換(ShiRRowsandColumns)。 C2中第i行元素向左循環(huán)移動j個單位,第j列元素向上循環(huán)移動j個單位,得到C3。

Step5擴(kuò)散增強(qiáng)(MixRowsandColumns).對c3每行所有像素按照式(”進(jìn)行處理操作,對C每列所有像素按式(5)操作,得到C4。

Step6 r= r+1,D= C4.回到Step2進(jìn)行下一輪加密,總共進(jìn)行尺輪.最后得到加密后的像素矩陣C。

其解密過程為加密算法的逆過程:

首先還原圖像像素,即對密文像素矩陣依次進(jìn)行逆MixColumns、Shif/Rows、SubByteo、AddRoundKey操作;然后還原病人信息,重建DICOM文件。

三、實驗結(jié)果與分析

本加密算法采用Visual C++ 2008平臺進(jìn)行數(shù)據(jù)仿真實驗,同時采用DCMTK開發(fā)包實現(xiàn)DICOM文件讀寫。機(jī)器配置:Iruel CoreDu0 1.83GHz CPU, 2GB RAM.Win-dows7 Ultimate中文版操作系統(tǒng).其中明文圖像為440×440的標(biāo)準(zhǔn)DJCOM圖像,密鑰設(shè)置為:xo =0.8,a=0.6,x0’= 0.8,a’=0.6,R=10。

1、加密實驗結(jié)果

加解密圖像如圖6所示。圖6(a)與圖6(c)分別為原始明文圖像和明文直方圖;圖6(b)和圖6(d)是密文圖像和對應(yīng)的直方圖。從圖中可以看出密文直方圖分幫均勻,能夠有效地抵抗統(tǒng)計分析。

改進(jìn)的AES加密算法在DICOM醫(yī)學(xué)圖像中的應(yīng)用

2、實驗分析

(1)密鑰空間

本加密算法的密鑰由兩組斜帳篷映射初始值與參數(shù)組成:一組參數(shù)控制密鑰流的生成(x0,ao)。另一組控鑰病人信息保護(hù)的映射(x0',a0')。在計算機(jī)實現(xiàn)時,分別由64位數(shù)表示,也就是說算法的密鑰為256位,明文空間為256,能夠抵抗暴力破解。

(2)相關(guān)性分析

分別從圖像的水平、豎直和對角相鄰方向隨機(jī)地選取1024對像素,加密10輪,對比它們加密前后的相關(guān)系數(shù):

改進(jìn)的AES加密算法在DICOM醫(yī)學(xué)圖像中的應(yīng)用

實驗結(jié)果如下表2所示,表中數(shù)據(jù)顯示明文圖像中相鄰像素之間的相關(guān)性比較高,但是在密文圖像中相鄰像素的相關(guān)性均很低。

改進(jìn)的AES加密算法在DICOM醫(yī)學(xué)圖像中的應(yīng)用

(3)敏感性分析

密鑰敏感性分析

將原始密鑰進(jìn)行微小改動,將薯o由0.8改為0.80000001。其余密鑰保持不變,對應(yīng)的解密結(jié)果如圖7所示。解密圖像呈現(xiàn)隨機(jī)分布,其直方圖很均勻.即使加密密鑰和解密密鑰有微小的相差也能正確解密,說明該算法能夠抵抗各種基于密鑰敏感性的攻擊。

改進(jìn)的AES加密算法在DICOM醫(yī)學(xué)圖像中的應(yīng)用

明文敏感性性分析

為了測試加密算法對明文的敏感性,應(yīng)用2幅幾乎完全相同的明文圖像(440×440的DICOM圖像Cheat. dcm,其中只有(0,0)位置的像素值不同),對它們進(jìn)行加密,完成4輪加密后,得到對應(yīng)的密文圖像并比較他們的像素值,從圖8中可以看出,當(dāng)僅有一位像索發(fā)生變化時,加密后的圖像幾乎完全不同(白色的像素點表示相同部分,黑色為不同)。通過計算可知,當(dāng)兩幅圖(o,0)位置像素值不同時,對應(yīng)的密文圖像有99.6196的像素不同。通過以上分析,可看出改進(jìn)算法具有良好的擴(kuò)散效應(yīng),達(dá)到了安全性的要求。

小知識之DICOM

DICOM(Digital Imaging and Communications in Medicine)即醫(yī)學(xué)數(shù)字成像和通信,是醫(yī)學(xué)圖像和相關(guān)信息的國際標(biāo)準(zhǔn)(ISO 12052)。它定義了質(zhì)量能滿足臨床需要的可用于數(shù)據(jù)交換的醫(yī)學(xué)圖像格式。