黃清梅 阿孜古麗·伊克木 李國東
(新疆財經大學統計與數據科學學院 新疆 烏魯木齊 830012)
隨著計算機與互聯網的高速發展以及人們工作時間與醫院上班時間的重疊,有許多人選擇在網絡上咨詢與就醫,這就導致了醫學圖像在網絡上的傳輸,但是為了保護患者的隱私,需要對圖像進行加密傳輸,并且對圖像加密的時間有嚴格的要求,加密速度越快越好。
對于圖像加密,研究者進行了大量的研究。研究發現傳統的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,增加了選取初始值及參數的隨機性,可以提高加密圖像的抗攻擊性。將此加密方法應用到數字圖像的加密中,加密結果表明本文方法的可行性,并且加密效果較好。
由于有限域結構比較清晰,元素個數有限,所以其在計算機科學與信息理論方面都有較為廣泛的應用。
有限域為含有有限個元素的域,其元素的個數就稱為有限域的階。將階為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。
設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的加法運算表。
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即可,這樣就縮短了置亂的時間。
本文采用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;
%置亂
接收方在接收到圖像后,進行加密過程的逆向操作,得到明文圖像。解密過程如圖2所示。

圖2 本文解密算法功能流程
本文使用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可知,其圖像越小,加密時間越快,并且加密后的圖像均完全看不出原來的明文圖像,可見加密的效果較好。解密后也能得到原圖像,說明此加密算法具有可行性。
(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 初始值變動前后解密圖像對比
可以看出,本文算法對初始值的選取非常敏感,初始值有略微差異都無法解密出原圖像。
隨著電子通信設備智能化越來越高,許多人選擇在網絡上就醫,可以節約時間和成本,在傳輸檢查結果圖像的時候,對圖像加密時間的要求就越來越高,針對此問題,本文運用有限域GF(28)與Arnold映射設計一種醫學圖像的快速加密算法,通過加密后的效果及安全性分析可以看出,本文算法時間較短,加密后像素值之間分布比較均勻,相鄰像素的相關性小,具有一定的可行性。本文算法能夠快速地對圖像進行加密和解密,加密過程簡單可行,達到了較好的加密效果,能夠滿足醫學圖像簡單快速且不易破譯的要求,并且能夠很好地保護患者的隱私,他人即使從圖像傳輸過程中截獲也無法破譯出來。