李珊珊,趙 莉,張紅麗
(長(zhǎng)安大學(xué)信息工程學(xué)院,西安 710064)
智能手機(jī)和移動(dòng)互聯(lián)網(wǎng)的發(fā)展,使得圖像信息的獲取與發(fā)布日益便捷,圖像內(nèi)容的安全性也受到越來(lái)越多的關(guān)注。包含有私人、商業(yè)、軍事或醫(yī)用信息的圖像內(nèi)容需要保密,而當(dāng)這些圖像通過(guò)公共信道傳播時(shí),易被惡意第三方獲取,造成隱私內(nèi)容泄漏,危害信息安全。圖像加密通過(guò)方法隱藏視覺(jué)信息,保護(hù)數(shù)據(jù)安全,使無(wú)權(quán)限者無(wú)法得到圖像的內(nèi)容,而有權(quán)限者通過(guò)解密能得到圖像的具體內(nèi)容和全部細(xì)節(jié),是保護(hù)圖像安全和隱私最常用的途徑。
從20世紀(jì)90年代起,圖像加密就吸引了圖像處理和信息安全領(lǐng)域研究者的興趣。隨著多媒體和互聯(lián)網(wǎng)技術(shù)的發(fā)展,近年來(lái),國(guó)內(nèi)外許多研究團(tuán)隊(duì)利用不同工具探索各種圖像加密方法。一幅有意義的圖像,其鄰近像素點(diǎn)間具有很強(qiáng)的相關(guān)性。圖像加密一般采取破壞這種相關(guān)性的原則,將原本內(nèi)容有意義的明文信號(hào)加密后轉(zhuǎn)換為無(wú)意義的類噪聲信號(hào)。常用的方法可分為空域加密和變換域系數(shù)加密兩種類別,其中空域加密又可以分為像素值變換和像素位置擾亂兩種處理方式。
像素值變換將每個(gè)像素點(diǎn)的取值作為明文進(jìn)行加密,鄰近像素的密文差異變大,從而消除明文間的相關(guān)性,使原本有意義的信號(hào)失去意義。像素值變換過(guò)程可以逐像素點(diǎn)進(jìn)行,也可以先分塊再對(duì)每個(gè)區(qū)塊進(jìn)行。像素位置擾亂打亂像素排列的順序,使原本鄰近的像素變得不再相鄰,從而失去明文像素間的相關(guān)性[1]。變換域加密選用明文的變換域系數(shù)為加密對(duì)象。變換域個(gè)別系數(shù)的加密在時(shí)域會(huì)引起幾乎每個(gè)像素值的變化,破壞原有的相關(guān)性。常用的變換域有離散小波變換域、離散傅里葉變換域、離散余弦函數(shù)變換域,以及分?jǐn)?shù)維傅里葉變換域等[2]。
在以上三種傳統(tǒng)圖像加密方法的基礎(chǔ)上,為了擴(kuò)大密鑰空間,提高密文的混亂程度,混沌序列被引入產(chǎn)生密鑰序列。
混沌系統(tǒng)具有初始狀態(tài)敏感性、拓?fù)浠旌闲院椭芷谲壍莱砻苄?。初值敏感性是指系統(tǒng)的狀態(tài)完全取決于初始值的選取,初始條件非常微小的變動(dòng)也會(huì)導(dǎo)致?tīng)顟B(tài)的巨大差別。對(duì)于加密方法來(lái)說(shuō),混沌系統(tǒng)的初值敏感性能夠有效地提高整個(gè)加密方法的安全性,初始值較大的取值范圍能夠提供足夠大的密鑰空間。
基于混沌序列的圖像加密,可以利用混沌映射的類隨機(jī)性,通過(guò)計(jì)算機(jī)迭代產(chǎn)生混沌序列,處理后對(duì)圖像進(jìn)行加密操作。常用的混沌映射有l(wèi)ogistic 映射、Baker 映射、standard 映射、circle 映射等[3-4]。其他系統(tǒng)例如神經(jīng)網(wǎng)絡(luò)、脫氧核糖核酸(DeoxyriboNucleic Acid,DNA)[5]和物理混沌電路也具有混沌特性,因此也能夠用于圖像加密。
根據(jù)香農(nóng)理論,強(qiáng)加密方法都是基于混淆(confusion)和擴(kuò)散(diffusion)兩種本原操作[6],前者是使密鑰和密文之間的關(guān)系盡可能模糊的加密操作,常用方法是替換;后者是將一個(gè)明文符號(hào)的影響擴(kuò)散到多個(gè)密文的加密操作。僅僅執(zhí)行混淆的密碼是不安全的,兩者結(jié)合才能構(gòu)建強(qiáng)壯的加密方案。
本文提出一種新的空間域圖像加密方法,利用混沌序列對(duì)混淆圖像像素值和像素點(diǎn)位置,通過(guò)雙向擴(kuò)散操作提高方法的安全性能:一個(gè)混沌序列用于產(chǎn)生廣義貓映射的控制系數(shù),再利用廣義貓映射同時(shí)加密兩個(gè)像素點(diǎn)的值;另一個(gè)混沌序列用于置亂圖像像素點(diǎn)位置。這種加密方法易于實(shí)現(xiàn),密鑰空間大,安全性能好。
貓映射最早是由俄國(guó)數(shù)學(xué)家Vladimir 提出的一個(gè)離散混沌模型,因?yàn)榻?jīng)常使用一張貓臉演示而得名。這種映射擁有簡(jiǎn)潔直觀的混沌性能。貓映射能夠擾亂圖像像素位置,使整幅圖像混亂化。然而,在經(jīng)過(guò)足夠多的迭代之后,原始圖像將會(huì)被恢復(fù)[7]。最經(jīng)典的貓映射工作于大小為N×N的圖像平面,在該圖像平面中的每個(gè)點(diǎn)唯一地被變換為另一個(gè)點(diǎn)。其方程為:
其中:(xn+1,yn+1)為映射后的像素點(diǎn)坐標(biāo);(xn,yn)為映射之前的像素點(diǎn)坐標(biāo)。
貓映射可以被推廣為最一般的二維可逆保面積映射:
其中a、b、c、d為映射系數(shù),為正整數(shù),并且滿足關(guān)系:
將圖像數(shù)據(jù)作為初始值利用廣義貓映射進(jìn)行迭代加密時(shí),需要先指定三個(gè)獨(dú)立映射參數(shù)。任意三個(gè)整數(shù)并不一定能夠滿足限制條件式(3),因此常用文獻(xiàn)[8]提出的方法,依次令a=1,b=1,c=1,d=1,相應(yīng)地產(chǎn)生4 個(gè)映射系數(shù)矩陣,每個(gè)取法所在公式包含兩個(gè)獨(dú)立參數(shù),這種方法易于程序處理:
由于貓映射的保面積性,因此圖像加密通常采用貓映射來(lái)置亂像素點(diǎn)位置。大多數(shù)利用貓映射的圖像加密方案都基于這個(gè)原則。貓映射可以被擴(kuò)展到三維,再結(jié)合隨機(jī)掃描來(lái)置亂像素點(diǎn)位置[9]。文獻(xiàn)[10]利用廣義貓映射結(jié)合灰度擴(kuò)散對(duì)像素塊進(jìn)行二維空間變換;而文獻(xiàn)[11]先利用二維廣義貓映射對(duì)圖像像素位置進(jìn)行置亂變換,再對(duì)置亂后的2 × 2區(qū)域內(nèi)像素點(diǎn)采用四維貓映射進(jìn)行像素值擴(kuò)散變換。這種加密方案需要進(jìn)行k輪以保證像素值盡可能多地?cái)U(kuò)散。
本文提出加密方案與傳統(tǒng)基于貓映射的加密方案最大的區(qū)別,在于采用二維廣義貓映射對(duì)像素灰度值進(jìn)行變換,每次加密的廣義貓映射的控制系數(shù)都不同。生成貓映射的控制系數(shù)的序列和用于像素位置置亂的序列產(chǎn)生自coupled logistic映射。在像素灰度值變換和像素點(diǎn)位置置亂處理之后,所有像素灰度值進(jìn)行雙向擴(kuò)散。本文方案只需要進(jìn)行一輪加密就可以取得良好的加密效果。
本文提出的圖像加密方法一共有四個(gè)主要步驟:二維混沌序列的產(chǎn)生,像素灰度值變換,像素點(diǎn)位置置亂,灰度值雙向擴(kuò)散。混沌序列的初始值、貓映射系數(shù)選自對(duì)應(yīng)混沌序列元素的位數(shù)、灰度值雙向擴(kuò)散的兩個(gè)初始值組成整個(gè)系統(tǒng)的密鑰,由用戶輸入。整個(gè)方法的流程如圖1所示。
圖1 本文方法流程Fig.1 Flowchart of proposed method
本文提出的加密方法采用coupled logistic 映射[12]來(lái)產(chǎn)生二維混沌序列。設(shè)要加密的灰度圖像尺寸為R×M,灰度級(jí)一共為L(zhǎng)級(jí),用戶輸入的初始值為(s0,t0)。迭代式(5)總共R×M+200次,從而獲得二維混沌序列。
其中:(μ1,μ2,γ1,γ2)為控制系數(shù)。為了保證式(5)產(chǎn)生的序列是混沌的,需要滿足以下要求:2.75 <μ1≤3.4,2.7 <μ2≤3.45,0.15 <γ1≤0.21,0.13 <γ2≤0.15,且0 <s0,t0<1。為了保證用于加密的序列足夠混亂,迭代產(chǎn)生的兩個(gè)序列前200項(xiàng)棄之不用。
由這一步產(chǎn)生的兩個(gè)長(zhǎng)度為R×M的混沌序列分別被記作T和S。其中T被用于灰度值擾亂,S被用于像素位置置亂。
將二維灰度圖像拉伸為R×M的一維序列P。用戶輸入兩個(gè)整數(shù)值(u,v),用于從混沌序列T中選取貓映射的控制系數(shù)。具體來(lái)講,對(duì)混沌序列T中第i× 2位的元素,選擇其小數(shù)點(diǎn)后第u位的數(shù)值作為二維廣義貓映射的第一個(gè)控制系數(shù)混沌序列T中第i× 2+1位的元素,選擇其小數(shù)點(diǎn)后第v位的數(shù)值作為廣義貓映射的第二個(gè)控制系數(shù)如果u和v大于系統(tǒng)允許的小數(shù)總位數(shù)D,則控制系數(shù)為u或v對(duì)D取模的值。從式(4)中選擇一種,利用生成二維廣義貓映射矩陣C。對(duì)一維圖像序列中第i× 2位的像素p2i和第i× 2+1位的像素p2i+1,利用式(6)變換其像素值,得到變換后的像素e2i和e2i+1。
重復(fù)該過(guò)程直到所有的像素點(diǎn)灰度值都被變換,得到變換后的一維序列E。如果像素點(diǎn)的總數(shù)為奇數(shù),則在最后一位補(bǔ)上一個(gè)0值像素點(diǎn)。
將混沌序列S中的元素按照從小到大的順序排列,其中的元素在排序前的序列中的序號(hào)將形成一個(gè)新的混沌序列A,其元素值為從1 到R×M的正整數(shù)。例如將序列(0.2,0.6,0.3)升序排列后得到(0.2,0.3,0.6),其中元素在排序前的序列中的序號(hào)為(1,2,3),在排序后會(huì)形成一個(gè)新的混沌序列(1,3,2 )。這個(gè)新的序列A被用于置亂一維序列E中的像素位置。對(duì)E中的第i個(gè)像素,位置改變?yōu)橹脕y后序列G的第A(i)個(gè)像素。也就是說(shuō)
由于A中的元素值是從1到R×M的正整數(shù),而且每個(gè)數(shù)字都出現(xiàn)且只出現(xiàn)一次,因此式(7)可以保證E中的每個(gè)像素唯一地被映射到G中。
擴(kuò)散能夠?qū)⒚魑闹幸粋€(gè)像素的改變擴(kuò)展到密文中的多個(gè)像素,是對(duì)抗差分攻擊最常用的方法。雙向擴(kuò)散[13]能保證明文中任何一個(gè)像素的改變擴(kuò)展到所有密文像素中,能顯著提高加密方法的安全性能。擴(kuò)散操作是將當(dāng)前的像素灰度值與前一個(gè)擴(kuò)散操作后的結(jié)果相加,再對(duì)總的灰度級(jí)L取模,從而保證擴(kuò)散后的像素灰度值都在允許的范圍內(nèi)。正向處理完畢后,再逆向擴(kuò)散一次。
雙向擴(kuò)散結(jié)束后,產(chǎn)生的序列G2再經(jīng)過(guò)2.2節(jié)中,二維圖像拉伸為一維序列的逆過(guò)程,還原為二維圖像,這個(gè)圖像就是加密后的圖像。
由于對(duì)圖像的處理是拉伸為一維序列,因此與傳統(tǒng)的基于貓映射圖像加密方案要求圖像的行列數(shù)必須相等不同,本文方法對(duì)圖像的尺寸大小沒(méi)有要求。
解密過(guò)程是加密過(guò)程的逆運(yùn)算。對(duì)于密文圖像,先將其拉伸為一維序列,利用逆向擴(kuò)散的初始值解除逆向擴(kuò)散,利用正向擴(kuò)散的初始值解除正向擴(kuò)散;接著輸入混沌序列的初始值,迭代式(5),獲得二維混沌序列T和S;采取2.3 節(jié)中的方法從序列S生成序列A,從而恢復(fù)出像素位置置亂前的序列;然后利用序列T生成廣義貓映射的逆矩陣,解除像素灰度值的變換;最后將一維序列還原為二維圖像,即得到解密后的圖像。
為了驗(yàn)證新加密方法的有效性,本文對(duì)一系列灰度圖像進(jìn)行了實(shí)驗(yàn)。實(shí)驗(yàn)中coupled logistic 映射的參數(shù)選擇為(μ1,μ2,γ1,γ2)=(2.93,3.17,0.179,0.139);廣義貓映射控制參數(shù)矩陣采取式(4)中的第一種形式。圖2 是源自CVG-UGR(Computer Vision Group,University of Granada)數(shù)據(jù)庫(kù)大小為256×256 的Lena 原圖。從圖2 可以看出密文圖像混亂,無(wú)規(guī)律,無(wú)法從密文圖像中看出明文圖像內(nèi)容。此外,加密圖像的直方圖分布非常接近均勻分布,即無(wú)法通過(guò)對(duì)密文圖像的直方圖統(tǒng)計(jì)獲得明文圖像的直方圖信息。
圖2 Lena圖像加密前后的對(duì)比Fig.2 Comparison before and after encryption of Lena image
密文圖像應(yīng)該盡可能地破壞原圖像中,鄰域像素之間的相關(guān)性。圖3(a)是圖2 Lena原圖在水平方向鄰域像素值分布圖,圖3(b)是圖2 加密圖像在水平方向鄰域像素值分布圖??梢钥吹剑魑膱D像的鄰域像素之分布集中于對(duì)角線,說(shuō)明鄰域像素的相關(guān)性較強(qiáng),密文圖像的鄰域像素值分布則毫無(wú)規(guī)律,說(shuō)明加密破壞了鄰域像素之間的相關(guān)性。
圖3 加密前后水平方向鄰域像素值的分布圖Fig.3 Distribution maps of neighborhood pixel values in horizontal direction before and after encryption
信息熵反映一個(gè)系統(tǒng)的混亂程度。有規(guī)律的系統(tǒng)信息熵小,無(wú)規(guī)律、混亂的系統(tǒng)信息熵大?;叶葓D像的灰度信息熵通過(guò)式(9)計(jì)算:
其中:h(i)為灰度值i的概率。
表1 統(tǒng)計(jì)了文獻(xiàn)[14]對(duì)于Cameraman 圖像、文獻(xiàn)[15]對(duì)于Lena 圖像及一系列源自CVG-UGR 圖片數(shù)據(jù)庫(kù)的灰度圖像加密前后的灰度信息熵值。其中Lena 和Cameraman 原圖像大小為256 × 256,Goldhill 和Peppers 原圖像大小為512 × 512,View 原圖像大小為640 × 480。實(shí)驗(yàn)圖像的灰度等級(jí)均為L(zhǎng)=256。加密前的信息熵值較小,加密后的信息熵值都非常接近于理論上的最大值8,實(shí)驗(yàn)數(shù)據(jù)如表1所示。
表1 加密前后圖像的信息熵值Tab.1 Information entropies of images before and after encryption
鄰域像素的相關(guān)性可以通過(guò)鄰域像素相關(guān)系數(shù)的絕對(duì)值來(lái)定量衡量。相關(guān)系數(shù)[16]的絕對(duì)值越小,意味著鄰域像素之間的相關(guān)性越小。相關(guān)系數(shù)通過(guò)式(10)計(jì)算:
其中:(ai,bi)是一對(duì)相鄰的像素點(diǎn),相鄰的方向可以為水平、垂直或?qū)蔷€;B是這些像素對(duì)的總數(shù)為所有ai的平均值;是所有bi的平均值。
表2 統(tǒng)計(jì)了加密前后圖像的水平方向鄰域像素相關(guān)系數(shù)。密文圖像的相關(guān)系數(shù)絕對(duì)值接近于0,說(shuō)明加密效果較好。
表2 加密前后圖像的水平方向鄰域像素相關(guān)系數(shù)Tab.2 Correlation coefficient of horizontal neighborhood pixels of images before and after encryption
表3 統(tǒng)計(jì)了本文與文獻(xiàn)[17-19]方法對(duì)Lena 圖像在水平、垂直和對(duì)角方向鄰域像素相關(guān)系數(shù)的對(duì)比結(jié)果。
表3 幾種加密方法對(duì)加密前后Lena圖像的相關(guān)性分析Tab.3 Correlation analysis of Lena image before and after encryption by several encryption methods
加密方法應(yīng)具備足夠大的密鑰空間以抵抗暴力攻擊。本文的方法通過(guò)coupled logistic 映射生成用于變換灰度值和置亂像素點(diǎn)位置的混沌序列。日常采用的64 位電腦對(duì)于這種二維映射的初始值空間大小為2104,再疊加上生成貓映射控制系數(shù)的密鑰和雙向擴(kuò)散的初始值,整個(gè)系統(tǒng)在雙精度、灰度等級(jí)為256的條件下,密鑰空間可以達(dá)到2104× 3082× 28×2。這么大的密鑰空間足以抵抗暴力攻擊。
除了足夠大的密鑰空間,加密方法需要對(duì)密鑰高度敏感,才能更好地抵抗暴力攻擊。圖4 為對(duì)圖2 加密圖像采用細(xì)微不同的密鑰進(jìn)行解密的結(jié)果,其中圖4(a)為使用正確密鑰的解密結(jié)果,圖4(b)所采用的密鑰中,coupled logistic 映射的初始值其中之一有0.000 000 1的差異。可以看到錯(cuò)誤的密鑰無(wú)法解密出原圖像,方法對(duì)密鑰高度敏感。
圖4 本文方法的解密結(jié)果Fig.4 Decryption result of proposed method
一個(gè)安全的加密方案還應(yīng)該對(duì)明文敏感,即原始圖像的輕微部分更改會(huì)在加密圖像中產(chǎn)生很大的更改。像素?cái)?shù)目變化率(Number of Pixels Change Rate,NPCR)是指當(dāng)明文一個(gè)像素改變時(shí)密文像素?cái)?shù)目改變率,其取值范圍為0~1。加密圖像系統(tǒng)抵抗查分攻擊的能力可以通過(guò)NPCR指標(biāo)衡量[20-21],該指標(biāo)的值越接近1,表明該加密系統(tǒng)的明文敏感性越強(qiáng),則該加密系統(tǒng)越能抵抗已知明文攻擊。當(dāng)圖2中Lena原圖的第(3,3) 個(gè)像素從161 改變?yōu)?60 時(shí),加密后的NPCR 值為0.997 5,非常接近于1。也就是說(shuō)幾乎每個(gè)密文像素的值都發(fā)生了改變。這說(shuō)明本文方法能抵抗已知明文攻擊。
成功的加密方法要求處理速度盡可能快,但因方法所運(yùn)行的環(huán)境具有一定的差異,直接比較運(yùn)行時(shí)間可能不是很準(zhǔn)確,但若在相近的軟硬件配置下比較運(yùn)行時(shí)間是較為切實(shí)可行的性能比較方法。如表4 所示,選用像素256 × 256 的Lena作為測(cè)試圖像,在相近的軟硬件配置下各方法的運(yùn)行時(shí)間。本實(shí)驗(yàn)使用的處理器為Intel Core i5-2430M CPU@2.40 GHz,所使用的編程語(yǔ)言軟件為Matlab 2012a。從表4 可以看出,本文方法的加密的處理速度比文獻(xiàn)[22]方法快,但比文獻(xiàn)[15]方法略慢。本文所提的加密方法是對(duì)每個(gè)像素組使用不同的貓映射系數(shù),用于變換組內(nèi)每個(gè)像素的灰度值,此外,方法采取雙向擴(kuò)散提高安全性能,在加密的效果和時(shí)間的復(fù)雜度之間有一定的取舍;文獻(xiàn)[22]方法改善加密方法對(duì)密鑰、明文的敏感性以及置亂的隨機(jī)性達(dá)到較好的加密效果,但同時(shí)增加了時(shí)間的復(fù)雜度;文獻(xiàn)[15]方法利用廣義cat映射對(duì)像素點(diǎn)進(jìn)行迭代和置亂,再用廣義Henon 映射產(chǎn)生的混沌序列與置亂后圖像進(jìn)行擴(kuò)散加密運(yùn)算。文獻(xiàn)[15]方法和本文方法有著更高的置亂隨機(jī)性,相較于文獻(xiàn)[22]方法損失了一定的密鑰空間和密鑰敏感性,從而提高了加密速率。本文方法相較于文獻(xiàn)[15]方法有著略低抵抗熵攻擊性能,但比文獻(xiàn)[22]方法有著更高抵抗熵攻擊性能。因此本文在確保加密效果同時(shí)有著較理想的加密時(shí)間,基本可以滿足用戶需求。
表4 不同方法的加密時(shí)間對(duì)比Tab.4 Comparison of encryption time of different methods
本文提出一種基于coupled logistic 映射和貓映射的圖像加密方案。密鑰空間由混沌序列的初始值、貓映射系數(shù)選自對(duì)應(yīng)混沌序列元素的位數(shù)、灰度值雙向擴(kuò)散的兩個(gè)初始值組成,密鑰空間足夠大,能夠抵御暴力攻擊。雙向擴(kuò)散保證了加密方案在明文攻擊下穩(wěn)定。實(shí)驗(yàn)和分析表明,新方法加密效果好,安全性能高,便于實(shí)現(xiàn)。