改進(jìn)的Rijndael加密算法在醫(yī)學(xué)圖像上的應(yīng)用
醫(yī)學(xué)圖像因其海量數(shù)據(jù)和專業(yè)針對(duì)性等問題,在加密領(lǐng)域還沒有觸及,因Rijndael加密算法主要針對(duì)文本文件進(jìn)行加密,直接使用Rijndael加密算法加密并不能完全保證圖像的加密效果。我們基于Rijndael加密算法的設(shè)計(jì)原理,并結(jié)合二維離散混沌系統(tǒng)具有類隨機(jī)性的特點(diǎn)對(duì)其進(jìn)行改進(jìn),該加密算法具有置亂效果好、安全性高等特點(diǎn),非常適合對(duì)要求高保密性的醫(yī)學(xué)圖像文件進(jìn)行加密。
一、二維離散混沌系統(tǒng)及加密因子序列
混沌序列是一種性能優(yōu)良的偽隨機(jī)序列,具有較高的保密安全性,目前被廣泛應(yīng)用于加密學(xué)領(lǐng)域的混沌模型是一維離散系統(tǒng)(如Logistic映射),其缺陷是密鑰空間太小。因此,我們采用了形式簡單且具有超混沌特性的二維離散混沌系統(tǒng),其方程如下:
![]()
式中:當(dāng)a= 1.55、b=-1。3、c= -11和d- 0.1時(shí),xn和yn序列的Layapunov指數(shù)分別為0.238和0.166.該系統(tǒng)處于超混沌狀態(tài)。
將xn和yn作非線性變換得到序列zn,由序列zn通過線性變化映射到0-255的整數(shù)序列作為加密因子序列,這樣即使攻擊者知道序列,在不知道非線性變換函數(shù)的情況下,也難以重構(gòu)出密鑰流,因而提高了整個(gè)混沌系統(tǒng)的抗破譯性。
混沌實(shí)值序列轉(zhuǎn)換為0~255的整數(shù)序列的設(shè)計(jì)原則是讓加密因子序列盡量保持原混沌序列的偽隨機(jī)性。針對(duì)數(shù)字圖像的特點(diǎn),其映射方法是將混沌實(shí)值序列在其最大值和最小值之間,按256級(jí)等級(jí)線性映射,得到8位二進(jìn)制序列作為加密因子序列。
二、Rijndael加密算法分析及改進(jìn)方案
Rijndael加密算法的設(shè)計(jì)原型是Square加密算法,設(shè)計(jì)策略是寬軌跡策略,可以有效抵抗強(qiáng)力攻擊、差分和線性密碼分析,具有分組長度和密鑰長度設(shè)計(jì)靈活、高安全性和高運(yùn)行效率等優(yōu)點(diǎn)。
本文改進(jìn)的Rijndael加密算法其思想是利用圖像像素的灰度值或R、G、B各分量的值與Rijndael加密算法中的State矩陣元素值相吻合的特點(diǎn),采用密鑰加和字節(jié)替代操作改變圖像中每個(gè)像素點(diǎn)的像素值,降低圖像相鄰像素之間的相關(guān)性,從而更好地保護(hù)圖像文件;使用行置換和列置換對(duì)圖像位置進(jìn)行置亂,改變圖像的相互位置關(guān)系,降低圖像的相關(guān)性,從而達(dá)到圖像保密的目的。
Rijndael加密算法的輪密鑰是通過遞歸定義生成的,某一輪的密鑰可以由前一輪或幾輪的輪密鑰推導(dǎo)而來,而Rijndael加密算法的子密鑰的前NK個(gè)字完全由種子密鑰直接填充而成。如果密碼分析者知道了這前NK個(gè)字的部分密鑰字,就可以根據(jù)遞推公式得到與這部分密鑰字相關(guān)的密鑰字。當(dāng)泄露的密鑰信息達(dá)到一定程度時(shí),其它的種子密鑰或許就可以通過窮舉法獲得,進(jìn)而獲得全部輪子密鑰。因此,充分利用加密因子序列偽隨機(jī)性的特點(diǎn)對(duì)Rijndael加密算法進(jìn)行改進(jìn):
①采用加密因子序列作為種子密鑰進(jìn)行密鑰擴(kuò)展,使密碼分析者更難以找到加密密鑰特別是種子密鑰:
②改進(jìn)行置換和列置換,使圖像中的像素置亂位置由加密因子序列來確定,以便增強(qiáng)該加密算法的安全性;
③改進(jìn)密鑰編排方案m,將加密因子序列的長度設(shè)定為待加密圖像的像素個(gè)數(shù),以便更好地適應(yīng)數(shù)字圖像文件加密。
三、改進(jìn)的Rijndael加密算法在醫(yī)學(xué)圖像上的應(yīng)用
1、DICOM文件格式
DICOM文件是指按照DICOM標(biāo)準(zhǔn)而存儲(chǔ)的醫(yī)學(xué)文件,一般由一個(gè)DICOM文件頭和一個(gè)DICOM數(shù)據(jù)集合組成。DICOM數(shù)據(jù)集合是由DICOM數(shù)據(jù)元素按照一定的順序排列組成的,它不僅包括醫(yī)學(xué)圖像,還包括許多和醫(yī)學(xué)圖像有關(guān)的信息。數(shù)據(jù)元素的組成結(jié)構(gòu)如圖1所示,其中標(biāo)識(shí)符由組號(hào)和元素號(hào)組成,表示為(組號(hào),元素號(hào)),是數(shù)據(jù)元素的惟一標(biāo)識(shí)。每個(gè)DICOM文件都必須有一個(gè)文件頭,包括文件導(dǎo)言,DICOM文件前綴(DICOM Prefix)和DICOM文件元信息。DICOM文件的起始部分是128個(gè)字節(jié)固定長度的文件導(dǎo)言,它可以用來存放一些信息,給完成特定功能的應(yīng)用程序使用的。文件導(dǎo)言隨后部分就是4個(gè)字節(jié)的DICOM文件前級(jí),這4個(gè)字節(jié)依次是"D”,“I”、"C'、"M"4個(gè)字符,它們是DICOM文件的標(biāo)識(shí),表示這是一個(gè)DICOM文件。文件前綴之后的文件元信息,它的組織方式實(shí)際上與DICOM數(shù)據(jù)集合中的數(shù)據(jù)元素完全一樣,有時(shí)候也看成是0002組的數(shù)據(jù)元素。

2、DICOM圖像文件加密的總體思路
(1)定義一些存儲(chǔ)圖像參數(shù)的變量,并將變量初始化。
(2)按照傳輸語法格式要求,對(duì)DICOM文件的各相關(guān)數(shù)據(jù)元進(jìn)行遍歷,提取出0002組、0028組和7EFO組有用的數(shù)據(jù)元的內(nèi)容,分別存入先前定義的變量中。
(3)根據(jù)有關(guān)數(shù)據(jù)元的值還原出DICOM文件的圖像矩陣并進(jìn)行加密操作。
(4)將加密后的圖像數(shù)據(jù)重新寫入DICOM文件中,關(guān)閉文件。
3、圖像像素?cái)?shù)據(jù)的解析
DICOM圖像像素?cái)?shù)據(jù)元素標(biāo)識(shí)是(7FEO,0010),值域中的數(shù)據(jù)就是DICOM文件的圖像像素。在這部分中,圖像像素有兩種存儲(chǔ)方式:一種是原始像素矩陣;另一種是壓縮格式,是JPEG還是RLE壓縮格式由傳輸語法決定。
當(dāng)圖像有多幀時(shí),要用到3個(gè)特殊的數(shù)據(jù)元素:項(xiàng)(FFFE,EOOO),項(xiàng)定界符(FFFE,EOOD),系列定界符(FFFE,EODD),用來封裝多個(gè)圖像幀。這3個(gè)數(shù)據(jù)元素后面直接跟4個(gè)字節(jié)的值域長度。圖像的每幀像素?cái)?shù)據(jù)都用項(xiàng)元素(FFFE,EOOO)封裝,如果它的值域長度是-1,則需要通過項(xiàng)定界符元素(FFFE,EOOD)來確定該幀圖像的結(jié)束;全部圖像幀數(shù)據(jù)結(jié)束,用系列定界符元素(FFFE,EODD)來標(biāo)識(shí)。項(xiàng)定界符(FFFE,EOOD)和系列定界符(FFFE,EODD)只是用來標(biāo)識(shí)一幀圖像或所有圖像的結(jié)束,因此值域長度都為0。
圖像在多幀的情況下,第一個(gè)項(xiàng)元素(FFFE,EOOO)封裝的并不是第一幀圖像數(shù)據(jù),而是一個(gè)偏移表項(xiàng),用來存放每一幀圖像的像素矩陣的第一個(gè)字節(jié)相對(duì)于偏移表項(xiàng)結(jié)束處相距的字節(jié)數(shù)。當(dāng)圖像解析時(shí)可以從偏移表項(xiàng)中計(jì)算出每幀圖像的像素矩陣的起始位置S和數(shù)據(jù)長度L,定義一個(gè)包含這兩個(gè)數(shù)據(jù)成員的STRUCT類型,將這兩個(gè)值保存在該STRUCT類型的數(shù)組中。另外讀取圖像文件的相關(guān)數(shù)據(jù)元素(0028,0008)、(0028,0010)、(0028,0011)、(0028,0002)和(0028,0100)可得到圖像的幀數(shù)、行數(shù)、列數(shù)、像素的采樣數(shù)和像素所占的字節(jié)數(shù),來對(duì)像素矩陣進(jìn)行劃分,得到像素矩陣中的每個(gè)像素值,還原出原始像素矩陣。
4、對(duì)還原的原始像素矩陣加密
步驟1、密鑰加操作。一般情況下還原后的像素矩陣中的像素是用字節(jié)的整數(shù)倍來存儲(chǔ),這里設(shè)為k倍。順序取出輪密鑰,按字節(jié)與還原后的像素矩陣中每個(gè)像素所對(duì)應(yīng)的k個(gè)字節(jié)分別異或得到新的像素。
步驟2、字節(jié)替代操作。將像素所對(duì)應(yīng)的k個(gè)字節(jié)分別作替代操作,即前4位作為置換表列坐標(biāo),后4位作為置換表行坐標(biāo),用置換表行列坐標(biāo)處的值替換像素所對(duì)應(yīng)的k個(gè)字節(jié)得到新的像素值。
步驟3、行置換和列置換。由加密因子序列確定圖像像素進(jìn)行橫向和縱向移動(dòng)的位數(shù),首先將圖像中的每行像素依次循環(huán)左移到該行的另一位置;然后將圖像中的每列像素依次向下循環(huán)到該列的另一位置。
5、封裝像素矩陣
對(duì)像素矩陣進(jìn)行加密后,取出該像素矩陣的起始位置S的值,從文件的S位置處將加密后的圖像數(shù)據(jù)重新寫入文件中。圖像文件加密流程圖如圖2所示。

解密的過程就是上述過程的逆過程,只要使用與加密時(shí)相同的密鑰序列和加密因子序列就可得到解密的像素矩陣。
四、實(shí)驗(yàn)結(jié)果分析
采用Matlab7.0平臺(tái),取CT圖像文件進(jìn)行實(shí)驗(yàn),從實(shí)驗(yàn)結(jié)果可以看出本文算法應(yīng)用于醫(yī)學(xué)圖像的可行性。
1、相鄰像素相關(guān)性分析
圖像中相鄰像素的相關(guān)性可反映圖像置亂的程度,相關(guān)性越小說明置亂程度越高,相關(guān)性越大說明置亂程度越低。一個(gè)有效的圖像加密算法應(yīng)該去除這種相關(guān)性。分別從圖像的水平、豎直和對(duì)角方向隨機(jī)地選取1000對(duì)像素,并對(duì)比它們加密前后的相關(guān)系數(shù),對(duì)比結(jié)果如表1所示。

2、改進(jìn)的Rijndael加密算法安全性分析
加密因子序列與混沌映射參數(shù)、初值等因素有關(guān)。它們中任何一個(gè)發(fā)生微小變化均可以生成完全不同的密鑰序列,這就使得采用窮盡式密鑰搜索分析來進(jìn)行解密是很困難的。即便在公開混沌映射參數(shù)的情況下,由于在一般的計(jì)算機(jī)系統(tǒng)中,10進(jìn)制小數(shù)有效位置精度為15位,所以采用窮舉攻擊的難度仍將達(dá)到10的15次方。
對(duì)于各種分組長度的Rijndael密碼,不存在可預(yù)測(cè)的擴(kuò)散率大于2的-150次方的4輪差分軌跡以及不存在可預(yù)測(cè)的擴(kuò)散率大于2的-300次方的8輪差分軌跡。同樣可以證明不存在相關(guān)系數(shù)大于2的-75次方的4輪線性軌跡以及不存在相關(guān)系數(shù)大于2的-150次方的8輪線性軌跡。因此,4輪的Rijndael加密算法就可以有效地抵抗差分密碼分析和線性密碼分析。
3、圖像直方圖分析
圖3(b)是原圖的直方圖,圖3(d)是加密后圖像的直方圖,實(shí)驗(yàn)結(jié)果說明加密過程將原始圖像像素值的不均勻分布變成了像素值的均勻分布,使圖像的相關(guān)性大大降低,密碼分析者很難進(jìn)行唯密文攻擊。

4、密鑰敏感性分析
圖4(b)是初值相差10的-15次方得到的解密結(jié)果。從實(shí)驗(yàn)結(jié)果可以看出,僅當(dāng)初值密鑰有細(xì)微的改變,將導(dǎo)致解密結(jié)果截然不同于正確結(jié)果,改進(jìn)的Rijndael加密算法具有良好的密鑰敏感性。

實(shí)驗(yàn)結(jié)果表明,改進(jìn)的Rijndael加密算法安全性高,加密后的圖像置亂效果好,而且解密本質(zhì)上和加密有相同的結(jié)構(gòu),能夠方便地恢復(fù)出原始圖像。因此,改進(jìn)的Rijndael加密算法非常適用于數(shù)據(jù)量大、要求高保密性的醫(yī)學(xué)圖像文件。
小知識(shí)之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é)圖像格式。









