快速圖像加密算法之自適應(yīng)排列加密
現(xiàn)有的自適應(yīng)圖像加密算法可以抵抗已知明文攻擊,其單輪加密速度很快,但安全性和整體加密速度較低。基于自適應(yīng)排列,我們提出一種新的快速圖像加密算法,在確保加密操作簡(jiǎn)單高效的前提下,改變加密前后圖像的像素分布。
一、自適應(yīng)圖像加密算法
1、自適應(yīng)圖像加密算法描述
排列是圖像文件加密中最常用的加密操作。通過(guò)排列可以改變圖像的空間有序性和相鄰像素的相關(guān)性,使明文變?yōu)橐曈X(jué)上無(wú)意義的圖像。由于排列操作只涉及內(nèi)存的讀寫操作,因此運(yùn)算速度很快。但僅采用傳統(tǒng)的排列操作是不安全的,一般只要通過(guò)若干對(duì)明文和密文圖像就能恢復(fù)大部分密鑰。
其原因是傳統(tǒng)的排列操作僅與密鑰相關(guān),而與明文無(wú)關(guān),因此,容易受已知明文和選擇明文攻擊。攻擊者通過(guò)明文和密文對(duì)可以獲得密鑰的部分信息,而此類信息對(duì)于解密其他明文同樣有效。為了避免上述缺陷,有管專家提出了一種自適應(yīng)圖像加密算法,使排列變換可以由明文決定。排列時(shí)先將圖像分成上下(或左右)2個(gè)部分,對(duì)下半部分進(jìn)行排序,然后按下半部分的排序序號(hào)對(duì)上半部分進(jìn)行排列(圖1給出了一個(gè)排列示例),再采用同樣方法對(duì)下半部分進(jìn)行排列。

上文僅描述了一輪圖像文件加密過(guò)程,為保證安全性,需要進(jìn)行多輪加密。加密輪數(shù)由密鑰長(zhǎng)度決定。為了防止窮舉攻擊,目前公認(rèn)安全的密鑰長(zhǎng)度至少為100 bit,即自適應(yīng)排列的加
密輪數(shù)至少為100輪。若密鑰的第i位(i=1,2,…,128)的值為0,則圖像分為左右2個(gè)部分。先根據(jù)右半部分像素的順序?qū)ψ蟀氩糠诌M(jìn)行排列,再排列右半部分。若第i位的值為1,則
先排列上半部分,再排列下半部分。
2、自適應(yīng)圖像加密算法性能
(1)安全性
由于自適應(yīng)圖像加密算法中的排列變換依賴明文自身的信息,因此可以有效抵抗已知明文攻擊。此外,加密算法密鑰長(zhǎng)度為128位,可以抵抗窮舉攻擊。
由于該加密算法僅引入了排列變換,因此無(wú)法改變圖像的像素分布,即加密前后圖像的直方圖沒(méi)有變化。因?yàn)橹狈綀D通??梢苑从硤D像的重要信息,所以該加密算法存在一定安全隱患。
(2)加密速度
自適應(yīng)圖像加密算法的主要運(yùn)算為排列操作。一個(gè)排列操作可以通過(guò)內(nèi)存的讀和寫操作實(shí)現(xiàn),因此,一輪加密耗費(fèi)的時(shí)間很短。但出于安全性考慮,要求密鑰長(zhǎng)度為128位,即加密輪數(shù)為128輪,因此,加密整個(gè)圖像的耗時(shí)較大。
二、基于自適應(yīng)排列的快速圖像加密算法
本節(jié)利用自適應(yīng)排列設(shè)計(jì)一種新的圖像加密算法。該加密算法改正了原加密算法加密前后像素分布不變以及加密速度較慢2個(gè)主要缺點(diǎn)。新加密算法保留了原加密算法的優(yōu)點(diǎn),如加密操作簡(jiǎn)單高效、可以抵抗已知明文攻擊和窮舉攻擊等。
1、加密結(jié)構(gòu)
加密算法采用Feistel網(wǎng)絡(luò)結(jié)構(gòu),先將圖像分成左右2個(gè)部分,然后對(duì)圖像進(jìn)行多輪Feistel迭代,迭代過(guò)程由式(1)和式(2)確定。
![]()
其中,Li和Ri表示經(jīng)i次迭代后圖像的左半部分和右半部分;⊕為異或運(yùn)算;F表示任意非線性函數(shù);Ki為第i個(gè)輪密鑰。
圖2描述了Feistel網(wǎng)絡(luò)結(jié)構(gòu)。

2、F函數(shù)與輪密鑰產(chǎn)生過(guò)程
采用Feistel網(wǎng)絡(luò)結(jié)構(gòu)的加密算法最核心的問(wèn)題是F函數(shù)的具體實(shí)現(xiàn)(圖3)。在本加密算法中,F(xiàn)函數(shù)包含4個(gè)過(guò)程:
(1)混沌迭代
以輪密鑰Ki為初始值x0和系統(tǒng)參數(shù)μ進(jìn)行256次logistic迭代,產(chǎn)生256個(gè)混沌狀態(tài),其值均位于[0,1]區(qū)間內(nèi)。logistic迭代公式如下:
![]()
(2)產(chǎn)生S盒
對(duì)256個(gè)混沌狀態(tài)進(jìn)行排序,得到256個(gè)排列序號(hào),將所有序號(hào)減1,以產(chǎn)生S盒。該S盒的輸入輸出均為8 bit,共有256個(gè)元素,每個(gè)元素為0—255之間的整數(shù)。
(3)S盒替換
使用步驟(2)產(chǎn)生的5盒對(duì)圖像的全體像素進(jìn)行S盒替代。
(4)自適應(yīng)排列
對(duì)S盒替代后的圖像進(jìn)行自適應(yīng)排列。
在Feistel結(jié)構(gòu)中,每輪均需要輪密鑰,即logistic迭代的系統(tǒng)參數(shù)和初始值。在第1輪加密中,系統(tǒng)參數(shù)和初始值采用外部密鑰,為(0,1)區(qū)間內(nèi)的2個(gè)雙精度浮點(diǎn)數(shù)(每個(gè)數(shù)占52 bit有效值)。以后的輪密鑰中系統(tǒng)參數(shù)不變,初始值為上一輪最后一次的迭代值。

三、實(shí)驗(yàn)結(jié)果與對(duì)比分析
本節(jié)主要考查第2節(jié)中提出的圖像加密算法的各種安全特性,包括直方圖、明文和密鑰的敏感性以及密文相鄰像素的相關(guān)性。對(duì)本文算法與2個(gè)已有圖像加密算法進(jìn)行比較,實(shí)驗(yàn)所用明文為128x128的Lena圖像,密鑰(μ,x)設(shè)為(4,0.1)。
1、直方圖
圖4列出了Lena圖像加密后的直方圖和加密前后的直方圖對(duì)比??梢钥闯觯用芎蟮闹狈綀D較均勻,掩蓋了明文圖像各像素的分布。

2、明文敏感性檢測(cè)
嚴(yán)格雪崩效應(yīng)是衡量加密算法的重要指標(biāo)之一,它是指當(dāng)明文或密鑰改變一位時(shí),密文應(yīng)有接近一半的比特發(fā)生改變。該特性也稱為密文對(duì)明文或密鑰的敏感性。本節(jié)對(duì)明文、logistic映射的系統(tǒng)參數(shù)和初始值進(jìn)行微小改動(dòng),并考查密文的改動(dòng)情況。
將Lena圖像最后一個(gè)像素的最后一比特由“1”置為“0”,并對(duì)比加密后密文的變化。表1列出了各輪加密后,密文位的改變率??梢钥闯?,經(jīng)過(guò)3輪加密后,密文位的變化穩(wěn)定在0.5左右,即產(chǎn)生嚴(yán)格雪崩效應(yīng)。

將系統(tǒng)初始值由0.1改為x1=0.09999999,明文和系統(tǒng)參數(shù)保持不變,并對(duì)比加密后密文的變化。表2列出了各輪加密后密文位的改變率??梢钥闯?,經(jīng)過(guò)2輪加密后,密文位的變化穩(wěn)定在0.5左右。

將參數(shù)值由0.1改為3.99999999,明文和系統(tǒng)初始值保持不變,并對(duì)比加密后密文的變化。表3列出了各輪加密后密文位的改變率。可以看出,經(jīng)過(guò)2輪加密后,密文位的變化穩(wěn)定在0.5左右。

3、密文相關(guān)性檢測(cè)
在連續(xù)色調(diào)圖像中,相鄰像素的相關(guān)性通常很高,好的圖像加密算法可以去除這種相關(guān)性。從明文和密文圖像的水平、豎直和對(duì)角3個(gè)方向隨機(jī)選取1 000對(duì)像素,并計(jì)算對(duì)應(yīng)的相關(guān)系數(shù)。表4對(duì)比了加密前后3個(gè)方向上的相關(guān)系數(shù)。
由表4可知,加密后相鄰密文像素之間的相關(guān)性接近于0。

小知識(shí)之自適應(yīng)
自適應(yīng)是指處理和分析過(guò)程中,根據(jù)處理數(shù)據(jù)的數(shù)據(jù)特征自動(dòng)調(diào)整處理方法、處理順序、處理參數(shù)、邊界條件或約束條件,使其與所處理數(shù)據(jù)的統(tǒng)計(jì)分布特征、結(jié)構(gòu)特征相適應(yīng),以取得最佳的處理效果。








