可逆映射集合的圖像加密算法

圖像加密就是對圖像進行某種變換,使得變換后圖像與原始圖像存在顏色流度、或者輪廓等定性或定量等視覺差異,從而可以有效地保護圖像數(shù)據(jù),為重要圖像信息的傳輸提供一種安全保障。我們利用拉伸和折疊的原理,提出了一種可逆映射集合的圖像文件加密方法,將不同的拉伸映射和折疊映射相互組合建立一個可逆混沌映射的集合,密鑰設(shè)計為集合中可逆映射的種類,來實現(xiàn)圖像文件加密。

一、拉伸和折疊算法

拉伸和折疊算法就是通過特定的映射,將圖像像素的位置置亂,并將置亂后的像素排成一個向量,再將這個向量按照一定的順序折疊成與原圖大小—致的圖像,完成對圖像像素位置的置亂。

1、拉伸算法設(shè)計

(1)Line map的拉伸算法設(shè)計

Line map拉伸算法包括左映射和右映射。圖像的左映射分成3個部分,如圖1(a)所示。第1部分是第1條虛線左上部,奇數(shù)斜行中的像素向偶數(shù)斜行里插入,形成新的向量。第2部分是兩個虛線之間的部分,斜行之間的像素按順序兩兩互插。第3部分是第2條虛線右下部,斜行中的像素(4,4)、(3,5)、(2,6)、(1,7)插入到像素(4,5)、(3,6)、(2,7)中;像素(4,6)、
(3,7)和像素(4,7)構(gòu)成向量(4,6)、(4,7)、(3,7)。然后再將這些向量首尾相接構(gòu)成一個向量,完成左映射。

圖像的右映射與左映射類似,只是插入時從右上角開始至左下角結(jié)束,如圖1(b)所示。

可逆映射集合的圖像加密算法

左映射算法和右映射算法類似,這里僅給出左映射算法,假設(shè)維數(shù)為ⅣXM的圖像矩陣A,則當(dāng)N<M時,左映射算法如下:

可逆映射集合的圖像加密算法

可逆映射集合的圖像加密算法

式中,floor(x)表示對x向下取整,mod(x,y)是表示x除以y后獲得的余數(shù),以后提到的floor(x),mod( x,y)的定義與此相同。

當(dāng)N>M時,先對圖像矩陣A進行轉(zhuǎn)置變換變成A',然后對A,進行拉伸映射。

轉(zhuǎn)置變換算法為:

可逆映射集合的圖像加密算法

(2)行非鄰和列非鄰拉伸算法設(shè)計

行非鄰和列非鄰拉伸算法是將圖像矩陣行或列的像素插入到其它行或其它列,然后首尾相接形成一個新的向量,實現(xiàn)拉伸。對于維數(shù)為N×M的圖像,行(列)非鄰互插拉伸算法是將第1行(列)同第N行(列)互插拉伸,第2行(列)同第N-1行(列)互插拉伸,后面各行(列)的依次搭配互插拉伸,當(dāng)N為偶數(shù)時中間的兩行(列)互插拉伸,當(dāng)N為奇數(shù)時,圖像中間一行(列)不經(jīng)避互插拉伸直接添加到向量尾,圖2為6 ×5的圖像行非鄰拉伸和4?×4的圖像列非鄰拉伸過程。

可逆映射集合的圖像加密算法

定義奇偶識別函數(shù):

可逆映射集合的圖像加密算法

當(dāng)x為奇數(shù)時,f(x)=0,g(x)=1;當(dāng)x為偶數(shù)時f(x)=1,g(x) =0。

則行非鄰拉伸算法為:

可逆映射集合的圖像加密算法

列非鄰拉仲算法為:

可逆映射集合的圖像加密算法

可逆映射集合的圖像加密算法

2、折疊算法設(shè)計

(1)蛇形線折疊算法設(shè)計

將上述拉伸算法得到的向量可以按照蛇形線的順序進行折疊,得到同樣大小的圖像矩陣。蛇形線折疊可分為水平、垂直和斜向折疊。

維數(shù)為N×M的圖像有4個頂點,分別是(1,1)、(1,M)、(N,1)、(N,M)。水平蛇形線折疊可以這4個頂點為起點進行折疊。垂直蛇形線折疊同水平蛇形線折疊類似,垂直蛇形線折
疊根據(jù)起始點的不同也分為4種類型,圖3給出了起點為f(1,1)的水平和垂直蛇形線折疊過程,以其余3個頂點為起點的折疊過程與此類似。

可逆映射集合的圖像加密算法

設(shè)B(i,j)表示折疊后生成的密圖,i=1,2,...,N,j=1,2,...,M。l(i)表示拉伸后生成的向量中的任意一點,i=1,2,...,MN。

當(dāng)起點為(1,1)時,水平蛇形線折疊算法如下:

可逆映射集合的圖像加密算法

當(dāng)起點為(1,1)時,垂直蛇形線折疊的算法為:

可逆映射集合的圖像加密算法

以其余3個頂點為起點的折疊算法與此類似,不再詳述。

對于1個維數(shù)為N×M的圖像,從45°方向看去,其圖像矩陣是由M+N-1個斜行組成的。1個由N×M個像素組成的向量沿著斜向蛇形順序折疊,就得到一個N×M的圖像矩陣。斜向蛇形線折疊也是根據(jù)起點的不同有4種不同的形式,圖4給出了起點為(1,1)的斜向折疊過程。與水平和垂直蛇形線折疊相比。斜向蛇形線折射短發(fā)推導(dǎo)更加復(fù)雜,擴散效率也更好。

可逆映射集合的圖像加密算法

當(dāng)起點為(1,1),且N<M時,斜向蛇形線折疊映射的算法為:

可逆映射集合的圖像加密算法

式中,lmin表示M和N中最小值,lmax表示M和N中最大值,下面提到的lmin和lmax。的定義與此相同。以其余3個頂點為起點的斜向折疊算法與此類似。

(2)渦卷折疊算法設(shè)計

通過上述拉伸算法得到的向量可以按照渦卷的形狀進行折疊得到同樣大小的圖像。以(1,1)、(1,M)、(N,1)和(N,M)4個頂點為折疊起點,按順時針和逆時針兩種方向,渦卷折疊有
8種形式,圖5給出順時針起始點為(1,1)的渦卷折疊方式。

可逆映射集合的圖像加密算法

為使其算法表達簡化,定義中間函數(shù)如下:

可逆映射集合的圖像加密算法

順時針起點為(1,1)的渦卷折疊算法為:

可逆映射集合的圖像加密算法

二、可逆映射集合的圖像加密方法

1、可逆映射集合

將前面所提出的各種拉仲和折疊方法進行組合,可建立一個可逆映射集合。在建立可逆映射集合的過程中遵循了方向回避和起始點回避的原則。例如:Line- map屬于斜向拉伸,故不與斜向蛇形線折疊組合;行冽非鄰拉伸不與水平、垂直蛇形線折疊組合;另外,起始點在(1,1)附近的拉伸算法不與起始點為(1,1)的折疊映射組合。選取了其中4種拉伸映射和5種折疊映射進行組合構(gòu)成一個具有26種可逆映射的集合,分別用a,b,c,...x,y,z 26個英文字母表示,如表1所示。

可逆映射集合的圖像加密算法

用Z表示可逆映射集合,則Z={a,b,c,...x,y,z},其中,每一種映射都有逆映射,分別用a',b',...,z',表示z'用2表示逆映射集合,則z'={a',b',...,z'}。

2、加密方案設(shè)計

對于基于可逆映射集合的圖像文件加密方案,密鑰設(shè)計為集合中映射的種類,也就是密鑰用26位英文字母表示,密鑰的每一位對應(yīng)集合中的—種映射方式,每種映射對應(yīng)的循環(huán)映射次數(shù)設(shè)計為3,然后根據(jù)密鑰對明文圖像做映射循環(huán)以完成圖像加密,圖像的解密是圖像加密的逆過程。

下面舉例說明加密過程,假設(shè)密鑰Key=acd,則對像素矩陣A的操作是:讀取密鑰第1位以,查表1得到以對應(yīng)的映射種類,即左Line- map拉伸(N,1)起點水平蛇形線折疊映射,則對
矩陣A進行3次該映射得到矩陣Bi:讀取密鑰第2位c,查表1得到c對應(yīng)的映射種類,即左Line- map拉伸(N,M)起點水平蛇形線折疊映射,則對Bi進行該映射3次得到B2;讀取密鑰第3位d,查表1得到d對應(yīng)的映射種類,即右Line- map拉伸(N,M)起點水平蛇形線折疊映射,則對B2進行該映射3次得到B3。讀取密鑰完畢,B3即為置亂后的圖像矩陣。

三、仿真結(jié)果分析

1、圖像文件加密和解密

(1)單次映射結(jié)果分析

表1中的26種二維可逆映射均可實現(xiàn)對圖像像素位置的置亂,首先分別用26種映射對多個不同的原始灰度圖像進行了單次映射的加密試驗,計算原圖和密圖相鄰像素間的相關(guān)系數(shù),加密前后的不動點比等。對試驗結(jié)果進行分析可知不同映射的加密結(jié)果是不同的,其中Line map拉伸同渦卷折疊的組合映射加密的密圖的不動點比小于其它映射算法,而且相鄰像素間的相關(guān)系數(shù)也小于其它映射算法,說明該算法的置亂效果較好,而且相鄰像素間的相關(guān)系數(shù)也小于其它映射算法,說明該算法抵御統(tǒng)計攻擊的能力較強。

左line map拉伸(N,1)起點水平蛇形線折疊的映射n,行非鄰互插后伸(1,M)起點斜向蛇形線折疊的映射a,左line map拉伸(N,1)起點順時針渦卷折疊的映射0,如圖6所示。圖6(b)和圖6(c)的密圖與原圖的不動點比分別為0. 54%,0.51%,而密圖6(d)與在圖的不動點比為0.43%。圖6中的4幅圖像相鄰像素間的相關(guān)系數(shù)如表2所示,由該表可以看出,o映射密圖的相鄰像素間的相關(guān)系數(shù)比a映射和j映射的小。由以上結(jié)果可知表1中的不同映射單次映射的加密效果是不同的。

可逆映射集合的圖像加密算法

可逆映射集合的圖像加密算法

(2)映射的抗攻擊結(jié)果分析

本文分析了各種映射的抗攻擊能力,利用26種映射對多個灰度圖像進行單次映射加密,對于得到的密圖,嘗試用其它映射的逆映射進行解密。結(jié)果表明用一種映射對明文進行一次映射置亂后,有可能用其它映射的逆映射完成一定程度的恢復(fù)。本文僅以a映射和c映射為例進行說明,用a映射對原圖進行1次置亂的加密結(jié)果是不安全的,可以用c的逆映射解密進行一定程度的恢復(fù),如圖7所示。

可逆映射集合的圖像加密算法

大量的加密試驗表明,上述問題的解決方案是每種映射對原圖循環(huán)置亂2次以上,得到的密圖就無法用其它映射恢復(fù)。如圖8所示用口映射對圖7(a)的明文圖進行循環(huán)映射3次后,再用c映射的逆映射無法對密圖進行解密。

可逆映射集合的圖像加密算法

由此可知,每位密鑰對應(yīng)的循環(huán)映射次數(shù)量少3次以上才是安全的,即對原圖進行循環(huán)映射3次以上才不會被其它映射解密所以提出的可逆映射集合的加密方案每位密鑰對應(yīng)的映射次數(shù)設(shè)計為3。

不同的密鑰對圖像的加密效果是不同的。當(dāng)映射次數(shù)一定時,分析了采用同種映和不同種映射相互結(jié)合加密的密圖的相關(guān)性值,結(jié)果表明同樣的映射次數(shù),如果用同一種映射置亂原始圖像,得到的密圖相關(guān)性值偏大;而且不同種映射置亂原始圖像,得到的密圖相關(guān)性值偏小,即其置亂效果更好。即當(dāng)映射次數(shù)相同時,用到的映射種類越多,其置亂效果越好;在設(shè)計加密密鑰時,應(yīng)調(diào)用盡可能多的二維可逆映射進行加密。

(3)加密方案仿真結(jié)果分析

利用提出的可逆映射集合的加密方案對圖像進行加密和解密,密鑰取為Key=abcdef ghij klmnop,結(jié)果如圖9所示。

可逆映射集合的圖像加密算法

由圖9可知,從密文圖像中看不出原圖的信息,說明該映射加密算法高效地置亂了原圖像素的位置,解密后圖像與原圖完全相同,說明該算法沒有信息損失。

2、安全性分析

為了驗證提出的加密方案的安全性能,分別對其進行了密鑰敏感性分析、密鑰空間分析卉目關(guān)系數(shù)分析和直方圖分析。

(1)密鑰敏感性分析

密鑰敏感性是指在原來的解密密鑰Key1基礎(chǔ)上做微小的變化,得到Key2,如果用Key2可以對密文進行解密則說明加密算法對密鑰的變化不敏感;反之如果無法解密則說明加密算法對密鑰的變化敏感,該算法是安全的。

圖9(b)的加密密鑰為Keyi=abcdef ghij kl mnop,用Keyz=abcdefghij klmnoo和Key3=bbcdefghijklmnop對密文圖9(b)進行解密,結(jié)果如圖10所示,僅對最后—位和第一位密鑰值做微
小的變化均不能解密圖像,說明該算法對密鑰的敏感性較高。

可逆映射集合的圖像加密算法

(2)密鑰空間分析

由于最基本、最流行攻擊密圖的方法是對密鑰進行窮盡搜索,密鑰空間大是加密算法安全的前提。該加密算法的密鑰空間與密鑰長度的關(guān)系如表3所示。

可逆映射集合的圖像加密算法

可逆映射集合的加密方案的密鑰空間只和密鑰長度有關(guān)。理論上,在計算速度允許的前提下,密鑰長度沒有限制,這樣可逆映射集合的加密方法的密鑰空間可以無限大,保證了加密的
安全性。

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

由于原始圖像相鄰像素之間具有很強的相關(guān)性,而可逆映射置亂像素后,一個很重要的特性就是改變了原來相鄰像素間的聯(lián)系。如果密圖相鄰像素之間的相關(guān)性變小,說明密圖安全性變強。

計算圖9的明文圖像和密文圖像相鄰像素的相關(guān)系數(shù),結(jié)果如表4所示。密文圖像相鄰像素之間的相關(guān)系數(shù)比原圖的小很多,解密算法很難利用統(tǒng)計攻擊方法從密圖中恢復(fù)原圖。

可逆映射集合的圖像加密算法

(4)直方圖分析

直方圖指圖像中所有灰度值的概率分布(某一灰度值像素數(shù)占像素總數(shù)的比率),—般來說,就是圖像灰度值的概率密度函數(shù)的離散化圖形??赡嬗成浼系募用芊椒ㄊ峭ㄟ^置亂明文像素的位置來實現(xiàn)加密的,沒有改變像素點的像素值,也就是沒有改變圖像的直方圖。利用所提出的加密方案對明文圖像進行加密,圖11給出了明文圖像、密文圖像以及它們的直方圖。由該圖可以看出,明文圖像和密文圖像的直方圖完全相同,直方圖信息沒有改變,因此密文圖像容易被攻擊。

可逆映射集合的圖像加密算法

為了隱藏直方圖信息,增加相鄰4點擴散機制。設(shè)圖像的大小為偶數(shù),則該圖像可以看作是由很多2 ×2的方塊構(gòu)成的新圖像。新圖像的每一個像素點值,都和2?×2的方塊中的每一個像素的值有關(guān)。這樣,經(jīng)過一次迭代之后,被原圖像變化影響的像素點有4個。通過這樣的過程,就可以達到改變?nèi)炕蛘卟糠謭D像像素值的目的,改變原文的一位,都能產(chǎn)生完全不同的密文。從而使得明文攻擊無效。

設(shè)相鄰4點為x(i,j)、x(ij+1)、x(i+1,j)和x(i+1,j+1),擴散后的點為x'(i,j)、x'(ij+1)、x'(i+1,j)和x'(i+1,j+1),則擴散函數(shù)為:

可逆映射集合的圖像加密算法

增加擴散機制后的密文及直方圖如圖12所示。在增加了擴散函數(shù)之后,為了檢驗加密算法擴散性,對兩個只有1個像素點有差異的M XN的灰度為256的圖像進行N PCR(numberof pixels change rate,像素變化率)和UACI(unif'ied averagechanging intensity,歸一化平均變化強度)分析。

可逆映射集合的圖像加密算法

對本文提出的加密方法進行NPCR和UACI分析。采用lenna圖做仿真對象,兩個密圖對應(yīng)的明文僅有1個像素值不同。計算得到NPCR~1,UACI~0. 35,說明在參數(shù)不變的情況下,兩個僅有一個像素值不同的原始圖像,兩個圖基本所有的點像素值都不同,且其值變化了35%左右。原圖的差別擴散到密圖的整個區(qū)域,說明擴散效果良好。

可逆映射集合的圖像加密算法

為了進一步研究擴散函數(shù)的效果,對上述密圖做信息熵分析.lenna圖的信息熵為7.4255。密圖的信息熵分別為7.9892和7. 9826。信息熵和原來的lenna圖相比變大了,說明加密后信息熵變大,攻擊者從灰度分布中得到的圖像信息更少,通過灰度值分析對加密圖像進行攻擊更難。

小知識之折疊算法

邊折疊算法(Edge Collapse)屬于幾何元素刪除法的一種,它的實質(zhì)是頂點刪除。也稱邊塌陷。.每次簡化時,通過算法選定一條有向邊e以及相關(guān)的2個點(u,v),將其中一個點u“折疊”至v,然后修改拓撲關(guān)系,將與u相關(guān)的邊映射到v,最后完成簡化操作。一次簡化可以減少源模型的1條邊和2個面。