三維混沌加密算法之壓縮算法

為保證數(shù)字圖像的安全性,提出了一種壓縮圖像的三維混沌加密算法。該算法是通過對已壓縮的數(shù)據(jù)流進行加密而實現(xiàn)的。首先采用基于小波的Contourlet變換的類等級樹集合分割(SPIHT)編碼算法對明文圖像進行壓縮,得到壓縮數(shù)據(jù)流,然后將壓縮數(shù)據(jù)流映射為一個三維位矩陣,利用Lorenz混沌映射產(chǎn)生混沌序列,并對其進行預處理得到比特值序列,根據(jù)比特值序列對上述三維位矩陣進行置亂和替代操作;將置亂和替代后的位矩陣重新映射為數(shù)據(jù)流,并對其進行解碼和反變換操作,得到加密后的壓縮圖像。

一、圖像壓縮算法

基于WBCT的壓縮編碼算法

為得到壓縮后的數(shù)據(jù)流,采用壓縮編碼算法對明文圖像進行壓縮。由于提出的加密算法是將由0,1組成的數(shù)據(jù)流映射為三維位矩陣,并對該矩陣進行置亂和替代操作而實現(xiàn)加密的。因此所選擇的壓縮算法對源圖像進行壓縮編碼后必須能產(chǎn)生由O,1組成的編碼流,而SPIHT編碼算法能夠滿足這一要求。并且,利用該壓縮編碼算法對源圖像進行壓縮,可得到較高的峰值信噪比(PSNR),同時具有計算復雜度低、位速率容易控制等優(yōu)點,因此選擇SPIHT編碼算法對源圖像進行壓縮處理。另外,之所以選擇在WBCT域對圖像進行壓縮編碼,是因為Contourlet變換是一種基于圖像的幾何性變換,能有效地表示輪廓和紋理豐富的圖像,它彌補了小波變換在這方面的不足。由于拉普拉斯金字塔(Llaplacian pyramid,LP)分解存在數(shù)據(jù)冗余問題,不利于圖像壓縮編碼,因此R.Eslami等于2004年提出了一種基于WBCT的類SPIHT編碼算法。

1

下面簡要介紹該編碼算法。

WBCT的基本思想是用小波變換的Mallat塔式分解代替Contourlet變換中的LP分解,然后用方向濾波器組( dirctional filterband,DFB)分別對Mallat分解中的非LL子帶進行卷積處理,原理如圖1所示。圖1中共進行了3次Mallat小波分解,第一次小波分解的高頻(LH,HL和HH)子帶方向分解數(shù)(層方向數(shù))為4,共16×3個方向子帶,第二、三次小波分解的層方向數(shù)都為3,共8×3×2個方向子帶,LL子帶層方向數(shù)為O(不分解)。

由于WBCT各個方向子帶的排列是橫向和縱向分開,因此基于WBCT的類SPIHT編碼算法的相鄰兩級方向子帶系數(shù)對應關系如圖2所示。為了更高效地進行SPIHT編碼,按照圖3所示調(diào)整子帶之間數(shù)據(jù)放置結構,原先的方向子帶排列如左圖,陰影部分為縱向子帶,同樣標稱的子帶為同一個上一級小波子帶的對應高頻子帶分解,將它們的排列重新安排為右圖所示。

1

1

2、壓縮數(shù)據(jù)流的預處理

假設明文圖像的數(shù)據(jù)矩陣為A,利用上述壓縮算法對其進行編碼,得到由O,l組成的壓縮數(shù)據(jù)流L,長度為l。為方便對壓縮數(shù)據(jù)流進行置亂和替代操作,需要對其進行預處理,將L映射為一個三維位矩陣B。令N;fc~7),其中f(x)表示對z向下取整。如果N=~7,則三維位矩陣口的維數(shù)為NXN×N,否則其維數(shù)為N×N×(N+1)。若l<N×NX(N+1),則矩陣B的元素通過補零填充。假設壓縮數(shù)據(jù)流的長度L=71,則由其映射得到的三維數(shù)據(jù)矩陣B如圖4所示。矩陣B的維數(shù)是4×4×5,圖中的元素為數(shù)據(jù)流L中元素的序號。

1

三、圖像加密算法

提出的加密算法是通過預處理后的混沌序列對位矩陣B進行置亂和替代操作實現(xiàn)的,并選擇Lorenz混沌映射產(chǎn)生所需的混沌序列。

1、混沌序列的預處理

Lorenz混沌映射的動力學方程如下:

1

當a= 10,6—8/3,c> 24.74時,系統(tǒng)進入混沌狀態(tài)。對Lorenz混沌映射模型進行迭代,得到的實數(shù)值混沌序列為{xk,k一1,2,…,夕),{yk,k=1,2,…,p)和{zk,k=1,2,…,戶),迭代精度取為雙精度。

以{z.,k=l,2,…,戶)為例來說明將實數(shù)值混沌序列改寫為比特序列的方法。首先將混沌序列改寫為16 bit的位序列:

1

式中bj (xl)是lxil第歹位整數(shù)。所得到的序列為{以(砑),p一1,2,…,16;i-1,2,…,p}。然后將bj(k)改寫為比特值序列{6,(z)x,k=1,2,…,16×p}:

1

式中r(x,y)表示z除以y后的余數(shù)。同理,可以得到由{弘,k=1,2,…,p),{2t,k=1,2,…,p)改寫的比特值序列{67(kn,k=1,2,…,16×p),f67(2)上,k=1,2,--.,1 6×p)。對這3個比特值序列進行處理:

1

式中①表示進行異或操作,可以得到另外3個比特值序列{6’(z,∽^,忌=1,2,…,16×p),{67(z.z).,p;1,2,”.,16×p){67(y,Z)^,k-l,2,.“,1 6×p),它們將被用于加密在上節(jié)得到的三維位矩陣。

2、加密算法設計

所提出的加密算法的密鑰設計為key:[c,z。,yo,zo,Ni,N2,Na,M,sub-key],其中參數(shù)c為Lorenz混沌映射的參數(shù),xo,y。,zo為Lorenz混沌映射的初始值,Ni tN2,N3,M為正整數(shù),M∈[O,1000],sub-key是由正整數(shù)組成的字符串。提出的加密過程如下:

1)將由壓縮編碼算法得到的三維位矩陣B看作是由J軸上的N個二維矩陣{Bj,i-l,2,…,N}組成,Bi的維數(shù)是(N+1)×N,如圖5所示;

1

2)令n=[1000+N×N×(N+1)],以a,6,c為參數(shù),z。,yo,z。為初始值,對Lorenz映射模型迭代夕次可得到3個實數(shù)值混沌序列{Xl,k-l,2,…,p},{yt,憊一1,2,…,p}和{戤,k一1,2,…,夕),迭代精度為雙精度;

3)令ni i=(M+N/16)+l’n2 -挖一M,取上述實數(shù)值混沌序列的一部分{弧,k一刀,,ni+l.…,T2),{x,y- ni,ni+l,--,行2}和{zt,n=ni,ni+l,…,nz)。按照上節(jié)的混沌序列的預處理方法將其轉換成比特值序列(67(z,3,)^,k-1,2,…,N},{6’(z,Z)I,k-l,2,…,N)和{6,(y,Z)上,k-l,2,…,N}.

4)根據(jù)比特值序列{6’(z,∞。,k=l,2,…,N)實現(xiàn)對{Bi,i=l,2,…,N)的列元素的置亂和替代操作,算法如下:假設當前操作的二維矩陣為bi,若67(z,y)I為0,則:

1

否則:

1

5)為使密鑰值與明文相關,利用子密鑰Ni更新M的值:首先令N1'=r(Ni,N+1),取ni(i>1)平面上的第N7.行的第1~8個比特值,將其轉換成一個字節(jié),若其值為m,將M+m賦值于M。

6)重復步驟3)~5),直到I軸上的所有二維矩陣都進行了相同操作,完成一次I軸上二維矩陣的置亂和替代操作;

7)將三維位矩陣B看作是由J軸上的N個二維矩陣(Bj,j=l,2,…,N}組成,Bj的維數(shù)是(N+1)×N,或者是K軸上的(N+1)個二維矩陣{k,k -1,2,…,N+1)組成n的維數(shù)是(N+1)×N。J軸和K軸上二維矩陣的置亂和替代操作與I軸類似,不同的是步驟4)和5)。在步驟4),Bj是利用b'(x,z)上實現(xiàn)置亂和替代的,風則是利用6,(y,z).實現(xiàn)的;在步驟5),J軸上的二維矩陣是利用子密鑰Nz更新M的值,而K軸利用子密鑰N3更新M的值。

子密鑰sub-key表示循環(huán)置亂和替代操作的次數(shù)。假設sub-key:12345,則表示首先對J軸上二維矩陣進行1次置亂和替代操作,然后對j軸上二維矩陣進行2次置亂和替代操作,對K軸上二維矩陣進行3次置亂和替代操作,再對J軸上二維矩陣進行4次置亂和替代操作,對J軸上二維矩陣進行5次置亂和替代操作。

四、仿真結果

1、比特值序列的隨機性檢驗

為了檢驗由實數(shù)值混沌序列所產(chǎn)生的比特值序列的隨機性,對三組比特值序列進行了頻數(shù)檢驗、序偶檢驗、撲克檢驗和游程檢驗。其中頻數(shù)檢驗就是用來測試密鑰序列中和的個數(shù)是否大致相同;序偶檢驗用于檢驗一段序列中相鄰比特組成的序偶的分布特性}撲克檢驗是用來測試各種不同排列方式出現(xiàn)的次數(shù)是否均勻;游程檢驗又被稱為腳檢驗,是一種非參數(shù)檢驗法,用來檢驗序列中是否存在自相關。

檢驗結果如表1所示。

1

由表1可知,所產(chǎn)生的比特值序列通過了隨機性檢驗,具有較好的隨機性能。利用該比特值序列對位矩陣進行置亂和替代操作,能夠保證加密算法的安全性。

2、加密性能分析

為了測試所提出的加密算法,針對256 pixel×256 pixel的Lenna灰度圖像進行加、解密仿真實驗。圖6為源圖像,密鑰為key: [28. 35,0.11,0. 21,0.32,30,42,61,20,12345],圖7為加密后的重建圖像,圖8為正確解密的重建圖像口其中壓縮圖像的壓縮比率為8. 76,重建圖像相對于源圖像的峰值信噪比(PSNR)為30.48 dB。

1

抵抗窮舉攻擊的有效方法是要求密碼系統(tǒng)有足夠大的密鑰空間并且具有非常大的密鑰敏感度,抵抗已知明文攻擊的有效方法是令加密算法的密鑰和明文相關。將所提出的加密方法和兩種典型的圖像加密算法在密鑰空間、密鑰是否與明文相關兩個方面進行比較,結果如表2所示。由該表可以看出,所提出的加密方案的密鑰空間只和密鑰長度有關。理論上,在計算速度允許的前提下,子密鑰sub-key的長度沒有限制,因此該加密算法的密鑰空間可以無限大,保證了加密的安全性。加密算法的密鑰和明文有關,從而能有效抵抗已知明文攻擊。

1

為了測試密鑰的敏感度,令key1:[28. 35,0. 11,0.21,0.32, 31, 42, 61, 20, 12345], keY2:[28. 351,0.11,0.21,0.32, 30, 42, 61, 20’12345],keYi,key2與key僅有微小差別,利用keyi,key2對圖7進行解密,解密圖像如圖9所示。由圖9可知,keYi,keYz均不能正確解密圖像,即使解密密鑰與正確的解密密鑰僅有微小差別。由此看出,提出的加密算法對密鑰非常敏感。

1

為了測試所提出加密算法的加密速度,針對不同大小的源圖像,利用相同的加密和解密密鑰進行加密以及解密實驗,所用的時間如表3所示,表中的時間包括對圖像進行編碼和解碼的時間。測試平臺的硬件配置為:計算機的CPU主頻為1.8 GHz,內(nèi)存2 GB;使用的編程軟件是VC6.O。

1

小知識之矩陣

在數(shù)學中,矩陣(Matrix)是指縱橫排列的二維數(shù)據(jù)表格,最早來自于方程組的系數(shù)及常數(shù)所構成的方陣。這一概念由19世紀英國數(shù)學家凱利首先提出。