圖像文件加密之變參數(shù)混沌系統(tǒng)加密
針對一維離散單混沌系統(tǒng)在計算機有限精度下存在的退化問題,提出了一種在生成混沌信號的過程中參數(shù)隨機變化的混沌偽隨機序列產(chǎn)生方法,基于該方法構建的混沌系統(tǒng)較單混沌系統(tǒng)具有偽隨機序列周期大、密鑰數(shù)量多、密鑰空間大等優(yōu)勢,所產(chǎn)生的密碼具有更高的安全性能。
一、參數(shù)隨機變化的一維混沌映射
通過隨機改變混沌映射的參數(shù),可以提高混沌序列的復雜性,并且在有限精度實現(xiàn)時,使得混沌序列的周期可用不同參數(shù)的混沌映射的數(shù)目來度量,即混沌序列的周期等于狀態(tài)x(i)的周期與參數(shù)的周期的乘積。
1、一個良好隨機統(tǒng)計特性的分段線性混沌映射PLCM
一個良好隨機統(tǒng)計特性的一維分段線性迭代混沌映射,其定義如下:

其中,x∈(0,1],p∈(0,0.5)。
該迭代系統(tǒng)是混沌的,其輸出信號,{x(t)}在[o,1]上遍歷,且具有良好的自相關性和均勻分布特性。
2、Logistic混沌映射
![]()
其中,O≤Xn≤1,n∈Z當μ∈[3.57,4]時,系統(tǒng)是混沌的。
若直接利用式(1)的迭代來產(chǎn)生密鑰序列存在混沌參數(shù)p易被破解的缺陷。
對于由式(1)生成的混沌序列,只要得到位于同一個分段上的任意兩個(或多個)的點對x(t),x(t+1)、x(t'),x(t'+1),就能確定出參數(shù):
![]()
3、參數(shù)隨機變化的多級一維分段線性混沌系統(tǒng)
基于FLCM和Logistic混沌映射,本文設計了一個基于參數(shù)隨機變化的多級混沌系統(tǒng)。如圖1所示。

其中,S01,S02是用戶隨機輸入的初始條件,F(xiàn)ip是一個按式(1)定義的一維分段線性混沌映射fLCM迭代k次后的混沌映射,其表達式為x(i+1)=fk(x(i),p),其中k>n,
k為迭代級數(shù),F(xiàn)IP的初始值是用戶隨機輸入的S01,利用S01作為Fi,的初始條件來生成x(1)。F1p,用來控制F2p的初始化和迭代過程,其中F2p是按式(1)定義的一個一維分段線性混沌映射PLCM。由于是在有限精度下實現(xiàn),所以設其精度為n,則序列{x(t)}t=1的取值空間為2n。
F2p也是一個一維線性混沌映射PLCM,在n=16精度下,由于參數(shù)p的取值空間為216所以對不同的參數(shù)另F2p可以看成是不同的混沌模型。也即相當于存在216個一維線性
混沌映射F(x,p)。在每次迭代的過程中,F(xiàn),中的控制參數(shù)p是這樣產(chǎn)生的。
1)初始時,隨機輸入一個數(shù)據(jù)O1時,p=F3μ(x(t-1),μ)/3,其中μ=μ1或μ2。
3)F3μ中的參數(shù)μ是這樣控制在μ1和μ2之間來回切換的:把迭代次數(shù)徐運算正整數(shù)m,當運算結果為奇數(shù)時,F(xiàn)中使用參數(shù)μ1,當運算結果為偶數(shù)時,F(xiàn)3μ中使用參數(shù)μ2。
這就保證了在生成,{x(t)}t=1的過程中,當某次迭代產(chǎn)生的x(t')與之前的某次x(t)相等時其中t’>t與x(t')對應的參數(shù)p'也以極大的概率與x(t')對應的參數(shù)p不相等。只有當某次的迭代狀態(tài)與之前的相同而且要使其對應的參數(shù)也與之前的相同時,混沌序列才會出現(xiàn)循環(huán)。在該偽隨機序列發(fā)生器中,只有當x(t-1)與x(t'-1)相等,x(t)與x(t')相等,而且還必須當tm與t'%m運算得到的這兩個數(shù)的奇偶性相同時,該偽隨機序列才可能會進入周期循環(huán)之中。這樣,混沌序列的周期即h=t*22n,其中n為精度,h=1,2,3,4,…,h的初始值和m有關。從而在有限精度實現(xiàn)時,輸出混沌序列的周期變大,并可以度量。
二、
序列轉換為0-1序列![]()
把根據(jù)圖1生成的模擬序列{x(t)}t=1用量化函數(shù)進行量化,得到0-1二進制序列{s(t)}t=1:

其中,ni為任意正整數(shù),I0n',I1n',I2n',I3n',一是區(qū)間,o,1的2n'個連續(xù)的等分區(qū)間。
由于混沌序列,{x(t)}t=1具有良好的隨機統(tǒng)計特性,這樣生成的{s(t)}t=1在理論上具有均衡的0-1比和δ-like的自相關等優(yōu)良的統(tǒng)計特性。
最后,為了進一步增加算法的隨機性,提高序列的抗破解能力,使得對初始條件的攻擊無效,加密時截掉序列的初始端部分和結尾部分,假設序列{s(t)}t=1L的長度為L,任取截點N1,N2,滿足1<N1
這樣,本算法的保密性不但依賴于混沌系統(tǒng)的參數(shù)和初始條件,而且還依賴于保密系統(tǒng)的初始值N1,N2和隨機選取的某個正整數(shù)m,m=1,2 3,4,5,…。這樣,加密系統(tǒng)的密鑰就包括N1,N2,m,n',s01,S02,p,p1~p(2n),L1,L12,這就使得密碼分析變得極其困難。
三、混沌系統(tǒng)性能分析
本文設計的混沌系統(tǒng)有以下優(yōu)點。
1)保證了產(chǎn)生的0-1序列滿足二值分布。在迭代過程中,每次換一個混沌參數(shù)p(t),相當于更換了一個混沌方程。由此來提高產(chǎn)生的混沌序列的復雜性,而且對于相同的狀態(tài)p(t),由于它所對應的參數(shù)p(t)不同,使得它的下一個狀態(tài)x(t+1)不同。
2)使得破解參數(shù)p變得異常復雜。破解一個一維分段線性混沌的參數(shù)p需要該混沌2個點對。本系統(tǒng)有2n個不同的混沌方程。所以一個點對落入一個指定的混沌的概率為2n,2個點對同時落入一個指定的混沌方程的概率為2-n X2-n=2-2n,因此,破解本系統(tǒng)的一個混沌參數(shù)的復雜度是破解一維分段線性混沌映射的22n倍。全部破解P1,p2,p3,…,p2n。這2n個參數(shù),其復雜度是破解一維分段線性混沌系統(tǒng)的2n*22n=23n倍。同時由于N1,N2,m的引入,破解該混沌系統(tǒng)的復雜度在此基礎上又得到了極大的提高,使得到的混沌序列的隨機性更強,周期更長,極大地增強了抗密碼分析的能力。
3)進一步增大了序列的周期。作為密碼序列,其周期應該越長越好。而定參數(shù)的方法產(chǎn)生的序列的周期完全取決于序列{x(i)}的精度。而本文采用的方法其周期由混沌參數(shù)的改變周期與,{x(i)}的周期的乘積來決定,即,h X2n×2n=7z×22n(n為數(shù)字化精度,h為正整數(shù)),這樣產(chǎn)生的序列周期大大增加,而且可以度量。
四、變參數(shù)混沌系統(tǒng)的仿真驗證
從圖2(a)可以看出,該混沌系統(tǒng)在初始值S01改變10- 16時,該混沌系統(tǒng)大約經(jīng)歷15次迭代之后,這兩個序列就變得完全不同了,其中,實線為初值So1=9.501292851471754e -001,虛線為初值So1 =9. 501292851471753e - 001,這說明該偽隨機序列發(fā)生器對初始值具有極高的敏感性。由 Berlekanp Messy算法對該序列的線性復雜度進行分析,可從圖2(b)看出,該序列的線性復雜度曲線趨向于獨立二項同分布隨機序列的復雜度曲線,約等于序列長度的一半,表現(xiàn)出良好的隨機性,滿足保密通信的要求。從圖2(c)、(d)可以看出,該偽隨機數(shù)發(fā)生器生成的二進制混沌序列,{k(t)}t=1具有類似δ-like的性質,有尖銳的自相關和良好的互相關性。

五、基于該混沌系統(tǒng)的圖像加密算法
1、圖像加密解密算法原理
加密算法
1)發(fā)送方利用該混沌模型在本地生成加密序列fo(假定圖像大小為M×M,灰度等級為256,則序列肭長度為M×MX8;如果數(shù)字圖像不是方陣,可以通過填充為背景色的方法擴充為方陣。為了提高加密/解密效率,序列f可以多次使用,發(fā)送方和接收方經(jīng)過協(xié)商可以在約定時刻更換加密序列Z以提高加密算法的安全性。)
2)發(fā)送方通過初始值S01、S02和混沌參數(shù)利用該混沌模型生成一個序列,把該序列量化為0-1序列后,轉換為一個十進制數(shù)組x(L),且L≤Mo用x(L)對圖像的灰度矩陣m進行行置亂,即根據(jù)x(L)中的元素值對m的相應于該值的行進行倒置,得到m2。
3)同2),發(fā)送方利用該混沌模型最終生成一個十進制數(shù)組Y(L2),且L2≤M。用Y(L2)對經(jīng)過第2)步后圖像的灰度矩陣m2進行列置亂,即根據(jù)Y(L2)中的元素值對m2的相應于該值的列進行倒置,得到m3。
4)發(fā)送方利用該混沌模型最終生成一個十進制數(shù)組Z(L3),且L3≤M。通過Z(L3),對m3以主對角線為對稱軸,把按Z(L3)指定的那些平行于主對角線的行進行翻轉,得到
m4。
5)同4),發(fā)送方生成十進制數(shù)組N(L4),且L4≤M。通過N(L4),對m4以副對角線為對稱軸,把按w(L4)指定的那些平行于副對角線的行進行翻轉,得到最終置亂后的矩陣
m5。
6)用第1)步生成的加密序列f對m5轉換成的二進制位進行逐位異或運算。得到加密后的圖像。
7)發(fā)送方把生成該混沌模型加密序列J各個初始值和參數(shù)以及生成x(L)、y(L2)、Z(L3)、w (L4)的各個初始值和參數(shù)在一個安全信道上傳給接收方。
8)發(fā)送方把加密后的圖像通過公共信道傳給接收方。
2、算法安全性分析
1)從算法的原理看,整個算法由兩部分組成:置亂和替代。這與很多圖像加密算法原理相似,不同的是,一般的圖像加密算法中置亂矩陣時不受密鑰的控制,導致無法完全公開加密算法,不能抵御選擇明文攻擊,而本算法在對灰度矩陣置亂時要4次用到混沌系統(tǒng)產(chǎn)生的混沌序列,即要受到密鑰的控制,而且本系統(tǒng)密鑰數(shù)量眾多;此外,以本文中大小為256×256的灰度矩陣為例,完全能夠抵御窮舉攻擊,這就極大地增加了加密圖像的抗破解性。
2)該加密方案利用本文中提出的混沌系統(tǒng)產(chǎn)生的混沌序列作為加密序列,利用了該混沌系統(tǒng)對初始條件的極端敏感性,對于初始值僅有非常微小的偏差,該混沌系統(tǒng)在迭代了一定的次數(shù)后便會產(chǎn)生完全不同的混沌序列,本文中混沌系統(tǒng)由于使用的是迭代2000次之后的混沌序列,使得加密效果更佳,安全性更高。
3)由于本文采用的混沌系統(tǒng)是有多個混沌映射級聯(lián)而成,這就大大增大了密鑰的個數(shù)和密鑰空間;從一次一密的角度分析,加密者可以隨意地選擇密鑰,這極大地增強加密后圖像抵抗強行攻擊的能力;同時,該混沌系統(tǒng)設計原理簡單,便于用硬件實現(xiàn)。
六、加密仿真及安全性分析
1、可視效果及對密鑰的敏感性
采用該加密方案對多幅圖像進行了實驗,圖3為用該方案對大小為256*256,灰度等級為256的BMP圖像Yanhn加密解密的結果。其中,圖3(a)為Yanhn原始圖像,生成加密序列肭密鑰參數(shù)為0.45,3 57.3 92, 12.5,5000 +65536×8, So1,So2),其中,S01=9501292851471754e-001. S02=2311385135742878e-001;生成置亂矩陣時所用的密鑰參數(shù)為:(0.45,3.57,3.67, 11,5,200,4 450 964 322 879468e-001,0.318 145 784 616 647e -001,0.38,0.5,3.97,9,5,210,4659 943 416 754 240e- 001,4 186 494 677 275 062 e-001,0.49,0.82,3.71, 12,7,240,&462214178243245e-001,5.251524963 051724e - 001,0.48,3.73,3.62, 10,5,180,2026473576503873e-001,6 721374684742885e-001);圖3(b)為置亂操作后異或加密前圖像,圖3(c)為加密后圖像。圖4(a)為使用正確密鑰解密后得到的圖像。把生成加密序列f的初始密鑰S01改為:9.501292851471753e - 001,即S01減小了10-16,其他一切參數(shù)都不變,解密后得到的圖像為圖4(b);把生成加密序列,的初始密鑰S02改為:2311385135742879e-01,即S02增加了10- 16,其他一切密鑰參數(shù)都同正確的密鑰參數(shù)相等,解密后得到的圖像為圖4(c)。從仿真結果可以看出,該混沌系統(tǒng)對密鑰參數(shù)極其敏感,即使密鑰參數(shù)發(fā)生極其微小的偏差都會造成無法正確解密。

從圖5(a) Yanhn原始圖像的直方圖可以看出,不同像素值的像素數(shù)目分布是不均等的;而加密后的直方圖圖5(b)表明,密文像素值在整個取值空間的取值概率趨于均等,呈現(xiàn)出良好的均勻分布特性,完全掩蓋了Yanhn原圖的特性。

2、相鄰像素的相關性分析
為了檢驗明文圖像和密文圖像相鄰像素的相關性,從圖像中隨機選取部分水平方向相鄰像素對,部分垂直方向相鄰像素對和部分對角線方向相鄰像素對,用下列公式定量計算相鄰像素的相關系數(shù):

其中,x和y分別表示灰度圖像中相鄰2個像素的像素值,gxy即為灰度圖像中相鄰2個像素的相關系數(shù)。
圖6所示為原始Yanhn灰度圖像相鄰像素和加密后Yanhn灰度圖像相鄰像素的相關性,表1列出了按水平、垂直及對角線3種方向計算所得的圖像相鄰像素間的相關系數(shù)值。可以看出,原始明文Yanhn圖像的相鄰像素高度相關,相關系數(shù)值接近于1;加密后Yanhn圖像的相鄰像素相關系數(shù)接近于0,表明相鄰像素已基本不相關,證明圖像的統(tǒng)計特征已被擴散到了隨機的密文中,能夠有效抵御像素相關統(tǒng)計分析攻擊。


小知識之遍歷
所謂遍歷(Traversal),是指沿著某條搜索路線,依次對樹中每個結點均做一次且僅做一次訪問。訪問結點所做的操作依賴于具體的應用問題。 遍歷是二叉樹上最重要的運算之一,是二叉樹上進行其它運算之基礎。當然遍歷的概念也適合于多元素集合的情況,如數(shù)組。









