黃清梅 阿孜古麗·伊克木 李國東
(新疆財(cái)經(jīng)大學(xué)統(tǒng)計(jì)與數(shù)據(jù)科學(xué)學(xué)院 新疆 烏魯木齊 830012)
隨著計(jì)算機(jī)與互聯(lián)網(wǎng)的高速發(fā)展以及人們工作時(shí)間與醫(yī)院上班時(shí)間的重疊,有許多人選擇在網(wǎng)絡(luò)上咨詢與就醫(yī),這就導(dǎo)致了醫(yī)學(xué)圖像在網(wǎng)絡(luò)上的傳輸,但是為了保護(hù)患者的隱私,需要對(duì)圖像進(jìn)行加密傳輸,并且對(duì)圖像加密的時(shí)間有嚴(yán)格的要求,加密速度越快越好。
對(duì)于圖像加密,研究者進(jìn)行了大量的研究。研究發(fā)現(xiàn)傳統(tǒng)的DES域AES加密方法在加密中都存在一定的缺陷[1-2]。由于混沌系統(tǒng)具有對(duì)初始值敏感、非周期等特性,運(yùn)用其對(duì)圖像加密能夠取得較好的結(jié)果[3]。文獻(xiàn)[4]基于混沌置亂的加密算法RMIEF-CS對(duì)醫(yī)學(xué)圖像進(jìn)行加密;文獻(xiàn)[5]運(yùn)用混沌序列與Arnold映射結(jié)合的算法對(duì)圖像進(jìn)行加密,這種加密算法取得了較好的加密效果,但其所需的加密時(shí)間較長;文獻(xiàn)[6]運(yùn)用離散混沌映射產(chǎn)生偽隨機(jī)序列,并結(jié)合DNA編碼設(shè)計(jì)了一種圖像加密算法;文獻(xiàn)[7]運(yùn)用超混沌Lorenz產(chǎn)生混沌序列生成密鑰,對(duì)明文圖像數(shù)據(jù)進(jìn)行位分解,對(duì)高位數(shù)和低位數(shù)進(jìn)行分別加密;文獻(xiàn)[8]將Hua提出的一種基于快速置換和可選擇像素?cái)U(kuò)散的加密方法進(jìn)行了分析,驗(yàn)證了其理論的正確性,并在此基礎(chǔ)上,提出了一種基于差分分析的改進(jìn)方案;文獻(xiàn)[9]利用2D sine logistic混沌映射產(chǎn)生混沌序列,選擇三級(jí)小波分解的低頻系數(shù)進(jìn)行擴(kuò)散和置亂加密,再將二級(jí)小波分解的中高頻系數(shù)進(jìn)行擴(kuò)散加密,最后將加密后的小波系數(shù)進(jìn)行小波逆變換得到加密圖像;文獻(xiàn)[10]運(yùn)用改進(jìn)的CAT置亂系統(tǒng)對(duì)明文圖像進(jìn)行三維置亂,再將Henon_Kent混沌系統(tǒng)所產(chǎn)生的三個(gè)混沌序列分別對(duì)圖像的RGB三層的像素灰度值進(jìn)行擴(kuò)散,重復(fù)加密步驟,直至其信息熵在7.99以上停止。
本文用Tent映射來選取超混沌Lorenz系統(tǒng)的初始值,并且將超混沌Lorenz系統(tǒng)產(chǎn)生的混沌序列作為優(yōu)化后Arnold映射的參數(shù)向量a、b,增加了選取初始值及參數(shù)的隨機(jī)性,可以提高加密圖像的抗攻擊性。將此加密方法應(yīng)用到數(shù)字圖像的加密中,加密結(jié)果表明本文方法的可行性,并且加密效果較好。
由于有限域結(jié)構(gòu)比較清晰,元素個(gè)數(shù)有限,所以其在計(jì)算機(jī)科學(xué)與信息理論方面都有較為廣泛的應(yīng)用。
有限域?yàn)楹杏邢迋€(gè)元素的域,其元素的個(gè)數(shù)就稱為有限域的階。將階為pn的有限域記作GF(pn),稱之為pn階的Galois域[11]。
運(yùn)用不可約多項(xiàng)式構(gòu)造有限域:設(shè)p為任意的一個(gè)素?cái)?shù),n為任意的一個(gè)正整數(shù),定義f(x)為域Zp上的一個(gè)不可約的n次多項(xiàng)式,則Zp[x]/f(x)是域,其計(jì)算公式為:
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)中含有的元素個(gè)數(shù)為pn個(gè)??梢园補(bǔ)0+a1x+…+an-1xn-1+f(x)簡記為a0+a1x+…+an-1xn-1。
設(shè)f(x)為域Z2上的一個(gè)不可約的n次多項(xiàng)式,則根據(jù)式(3)可知:
GF(2n)[x]=Z2[x]/(f(x))={a0+a1x+…+
an-1xn-1+f(x)|ai∈Z2}
(4)
當(dāng)n為8時(shí),有限域GF(28)的公式如下:
GF(28)[x]=Z2[x]/m(x)
(5)
式中:m(x)=x8+x4+x3+x+1為選定的8次不可約多項(xiàng)式。則根據(jù)式(5)可知,GF(28)[x]中含有256個(gè)元素,用二進(jìn)制對(duì)每個(gè)元素進(jìn)行賦值,再轉(zhuǎn)化為十進(jìn)制數(shù),就可以得到一個(gè)256×256的加法運(yùn)算表。
Arnold映射又稱為貓映射(cat映射),由數(shù)學(xué)家弗拉基米爾·阿諾德提出,是一種在有限區(qū)域內(nèi)進(jìn)行反復(fù)折疊、拉伸變換的混沌映射方法,一般應(yīng)用在混沌加密中。Arnold映射置亂圖像相較于隨機(jī)置亂、單次不重復(fù)置亂方法來說,算法的運(yùn)算量要大得多,運(yùn)算時(shí)間也較長,但其置亂效果較好[12]。
若直接用一個(gè)2×2的矩陣T對(duì)圖像的像素點(diǎn)位置(xn,yn)進(jìn)行置換,得到新的像素點(diǎn)位置(xn+1,yn+1),Arnold映射置亂算法的變換公式如下:
(6)
由于像素點(diǎn)的位置只能取整數(shù),所以在置亂中矩陣T只能取整數(shù)矩陣,在置亂的逆向操作中的矩陣T-1也只能取整數(shù)矩陣,矩陣T與T-1的取法如下:
(7)
(8)
式中:a、b均為整數(shù)。
本文采用的是優(yōu)化后的Arnold映射對(duì)圖像進(jìn)行置亂:將需要置亂的圖像矩陣展開為一個(gè)一維向量,其交換位置只需要考慮列標(biāo)的變動(dòng),不需要考慮行標(biāo)的變動(dòng),因?yàn)榇藭r(shí)所有像素點(diǎn)位置的行標(biāo)皆為1。對(duì)向量中的任意一點(diǎn)坐標(biāo)(1,j)進(jìn)行Arnold映射置換后得到新的坐標(biāo)位置(p,q),如下:
(9)
(10)
由此可知p恒等于1,只需要考慮q即可,這樣就縮短了置亂的時(shí)間。
本文采用MATLAB R2019b進(jìn)行加密程序編程,設(shè)計(jì)的加密算法如圖1所示,具體步驟如下:
Step1讀取圖像,并規(guī)定圖像的大小為M×N,將其變?yōu)榇笮?×MN的序列。
Step2運(yùn)用Tent映射迭代1 000次,選取其位于200、400、600和800位的數(shù)作為超混沌Lorenz系統(tǒng)的初始值,增加其隨機(jī)性。Tent映射的公式如下:
(11)
Step3運(yùn)用超混沌Lorenz系統(tǒng)產(chǎn)生混沌序列,本文在Lorenz系統(tǒng)的基礎(chǔ)上引入非線性控制器w,得到超混沌Lorenz系統(tǒng)結(jié)構(gòu)如下[13]:
(12)
其初始值為Step2中產(chǎn)生的4個(gè)隨機(jī)數(shù):39、79、76、36。使其迭代產(chǎn)生2×MN大小的混沌序列。
Step4運(yùn)用GF(28)域加法運(yùn)算進(jìn)行圖像擴(kuò)散。首先由多項(xiàng)式得到GF(28)域的加法運(yùn)算表GF2p8Table,其大小為256×256。然后將Step3生成的混沌序列s分為兩個(gè)大小都為1×MN的混沌序列s1和s2。最后由加法算法表對(duì)圖像進(jìn)行2次循環(huán)擴(kuò)散,即運(yùn)用混沌序列s1進(jìn)行正向擴(kuò)散(按照i從1到MN順序),再運(yùn)用混沌序列s2進(jìn)行逆向擴(kuò)散(按照i從MN到1順序),這樣操作能將明文圖像的所有像素點(diǎn)都擴(kuò)散到密文圖像中去。主要程序如下:
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)域加法運(yùn)算表
4. B(i)=LookUpGF2p8(B(i-1),s1(i),A(i),TBL);
%擴(kuò)散
Step5對(duì)擴(kuò)散后的圖像運(yùn)用優(yōu)化后的Arnold映射進(jìn)行置亂。首先將混沌序列s取整取模,將其1∶MN列作為Arnold映射中的隨機(jī)向量a,將其MN+1∶2MN列作為隨機(jī)向量b。然后對(duì)擴(kuò)散后的序列進(jìn)行置換。主要程序如下:
5. x=mod(floor((s+100)*10^10),10*max(M,N))+1;
%生成整數(shù)混沌序列
6. a=x(1:M*N);b=x(M*N+1:2*M*N);
%產(chǎ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;
%置亂
接收方在接收到圖像后,進(jìn)行加密過程的逆向操作,得到明文圖像。解密過程如圖2所示。
圖2 本文解密算法功能流程
本文使用MATLAB R2019b軟件進(jìn)行實(shí)驗(yàn)仿真,選取網(wǎng)絡(luò)醫(yī)學(xué)檢查圖片(圖片來源:搜狗圖片)作為明文圖像,第一幅圖像其大小為46.1 KB,其分辨率為743×720,第二幅圖像其大小為24.6 KB,其分辨率為236×180,如圖3(a)所示。用3.1節(jié)中的加密算法加密后得到的密文圖像如圖3(b)所示,經(jīng)過解密后的圖像如圖3(c)所示。
(a) 原圖像 (b) 密文圖像 (c) 解密后圖像圖3 仿真實(shí)驗(yàn)結(jié)果
由圖3可知,其圖像越小,加密時(shí)間越快,并且加密后的圖像均完全看不出原來的明文圖像,可見加密的效果較好。解密后也能得到原圖像,說明此加密算法具有可行性。
(1) 加密速度比較。將本文加密所需時(shí)間與其他方法進(jìn)行比較,所得結(jié)果如表1所示。
表1 加密時(shí)間比較
可以看出,本文圖像較文獻(xiàn)[14]相比,圖片較大,但加密所需時(shí)間較短。
(2) 直方圖。圖4給出了加密前第一幅圖像的明文圖像統(tǒng)計(jì)直方圖與加密后的密文圖像統(tǒng)計(jì)直方圖,通過兩者的波動(dòng)程度可以看出,加密后的圖像的密文像素直方圖明顯比加密前的明文像素直方圖分布更加平穩(wěn),波動(dòng)程度小,說明加密后的圖像的像素值分布得更為隨機(jī)、更為分散,可以更有效抵抗攻擊。
(a) 明文圖像統(tǒng)計(jì)直方圖 (b) 密文圖像統(tǒng)計(jì)直方圖圖4 統(tǒng)計(jì)直方圖分析
直方圖可以看出明文圖像和密文圖像灰度值的波動(dòng)性,使用χ2統(tǒng)計(jì)量在數(shù)值上衡量明文圖像與密文圖像之間的差別。
表2 χ2檢驗(yàn)結(jié)果
(3) 信息熵分析。信息熵H主要是對(duì)信息源的整體性進(jìn)行考慮,其整體性主要是以平均計(jì)算的原理來顯示。信息熵的表達(dá)形式如式(13)所示。
(13)
本文加密算法得到的信息熵為:H=7.992 9,與文獻(xiàn)[7]中CT圖像的信息熵為7.991 4相比,本文加密算法信息熵更接近于8,加密效果較好。
(4) 統(tǒng)計(jì)學(xué)分析。在原圖像和密文圖像中隨機(jī)地選取一組數(shù)據(jù),并且計(jì)算其水平方向、垂直方向、對(duì)角方向的相關(guān)系數(shù),其計(jì)算公式如式(14)-式(17)所示。
(14)
(15)
(16)
(17)
明文圖像與密文圖像在水平方向上相鄰像素值的關(guān)系如圖5所示。
(b) 密文圖像水平方向關(guān)系圖5 相鄰像素關(guān)系
觀察圖5,可以看出明文圖像水平方向上的相鄰像素具有明顯的線性關(guān)系,密文圖像在矩形區(qū)域內(nèi)無規(guī)則地散布著,不具有相關(guān)性。
通過計(jì)算,可得圖像在水平、垂直、正對(duì)角、反對(duì)角方向上的相關(guān)系數(shù),結(jié)果如表3所示。
表3 原圖像與密文圖像相關(guān)系數(shù)對(duì)比表
可以看出,明文圖像相鄰像素之間相關(guān)系數(shù)較高,均在0.99以上,加密后相鄰像素之間的相關(guān)系數(shù)較小,與文獻(xiàn)[2]相比,達(dá)到了很好的加密效果。
(5) 密鑰敏感性分析。本文選取Tent映射進(jìn)行迭代,為了盡量避免映射落入周期循環(huán),所以本文迭代次數(shù)選取1 000。隨機(jī)選取4位數(shù)字作為超混沌Lorenz的初始值,是為了增加其初始值選取的隨機(jī)性,使得初始值的選取無規(guī)律可循,如果圖像的獲取者沒有得到正確的初始值,即無法對(duì)圖像解密。本文將初始值39改為39×10-6進(jìn)行解密操作,得到結(jié)果如圖6所示。
(a) 正確初始值解密圖像 (b) 錯(cuò)誤初始值解密圖像圖6 初始值變動(dòng)前后解密圖像對(duì)比
可以看出,本文算法對(duì)初始值的選取非常敏感,初始值有略微差異都無法解密出原圖像。
隨著電子通信設(shè)備智能化越來越高,許多人選擇在網(wǎng)絡(luò)上就醫(yī),可以節(jié)約時(shí)間和成本,在傳輸檢查結(jié)果圖像的時(shí)候,對(duì)圖像加密時(shí)間的要求就越來越高,針對(duì)此問題,本文運(yùn)用有限域GF(28)與Arnold映射設(shè)計(jì)一種醫(yī)學(xué)圖像的快速加密算法,通過加密后的效果及安全性分析可以看出,本文算法時(shí)間較短,加密后像素值之間分布比較均勻,相鄰像素的相關(guān)性小,具有一定的可行性。本文算法能夠快速地對(duì)圖像進(jìn)行加密和解密,加密過程簡單可行,達(dá)到了較好的加密效果,能夠滿足醫(yī)學(xué)圖像簡單快速且不易破譯的要求,并且能夠很好地保護(hù)患者的隱私,他人即使從圖像傳輸過程中截獲也無法破譯出來。