Android平臺圖像文件加密
傳統(tǒng)計算機平臺下的圖像加密技術(shù)已經(jīng)得到了廣泛的研究和應(yīng)用,但移動平臺受限于當(dāng)前的硬件架構(gòu),無法直接繼承傳統(tǒng)平臺的安全性技術(shù)。針時智能手機等移動平臺中的圖像信息安全問題,提出了一種基于Android移動平臺的圖像加密方案。
一、圖像加密技術(shù)
1、傳統(tǒng)圖像加密技術(shù)分析
傳統(tǒng)的圖像加密技術(shù)主要基于現(xiàn)代密碼體制。通常將圖像像素信息看作一維數(shù)據(jù)流,在密鑰的控制下,利用加密算法(常用加密算法如EDS、AES、RC6等)進行加密。但現(xiàn)代密碼體制主要是為文本信息設(shè)計,而沒有考慮到數(shù)字圖像數(shù)據(jù)量大、相關(guān)性強、空間有序等特點,故對圖像信息加密具有較大的計算量,加密效率也不高。隨著人們對多媒體信息的安全越來越重視,研究者提出了多種針對圖像的加密技術(shù),其主要的思想是將數(shù)字圖像進行灰度變換和圖像置亂?;叶茸儞Q是指改變圖像像素點的灰度值的大小,使得加密前后,像素序列的內(nèi)容完全改變,有人利用灰度變換對圖像進行加密,得到了較好的加密效果。圖像置亂就是將圖像的信息次序打亂,將像素移動到像素的位置上,像素移動到f像素的位置上等,使其變換成雜亂無章難以辨認的圖像。有人首先利用混沌系統(tǒng)構(gòu)造隨機序列,然后將像素矩陣的行或者列按照隨機序列重新排列,得到了比較理想的加密效果。但這些方法,一般在灰度變換或者構(gòu)造隨機序列的過程中需要較大的計算量,如果直接移植到移動平臺,可能會影響圖像加密速度。
2、混沌系統(tǒng)
混沌是非線性系統(tǒng)中出現(xiàn)的一種貌似無規(guī)則的類隨機過程,是普遍存在的復(fù)雜運動形式和自然現(xiàn)象。混沌系統(tǒng)一般都具有對初始條件的敏感依賴性、整體穩(wěn)定而局部不穩(wěn)定、軌道不穩(wěn)定及分岔、長期不可預(yù)測性等特點。此系統(tǒng)由于具有良好的隨機特點,因此經(jīng)常應(yīng)用于圖像加密算法一混沌系統(tǒng)中常見的有Logistic系統(tǒng)和tent系統(tǒng)。
Logistic映射源自于對人口統(tǒng)計的動力學(xué)系統(tǒng),是一個典型非線性混沌方程。它具有遍歷性、非周期性、長期不可預(yù)測性以及非收斂性等良好的混沌性質(zhì),其映射定義為(當(dāng)系數(shù)3. 596≤a≤4時,系統(tǒng)進入混沌狀態(tài)):
Tent系統(tǒng)是一種分段線性的一維映射,具有均勻的概率密度與功率譜密度,以及較理想的自相關(guān)性。Tent映射定義為(其中當(dāng)O<a≤2時,系統(tǒng)處于混沌狀態(tài)):
二、Android移動平臺圖像加密
1、算法設(shè)計思想
本文通過對圖像加密技術(shù)的研究,提出了一種創(chuàng)新的移動平臺圖像加密算法。首先將待加密圖像矩陣J分成若干個小的矩陣塊;再利用圖像置亂與灰度變換處理每一個小的分塊;然后把每個分塊內(nèi)的像素值發(fā)散到其他分塊內(nèi);最后將所有分塊合成加密后的圖片,加密流程如圖1所示。本算法在保證加密效果的同時,減少了圖像置亂處理所需要的計算量,使之適合在移動平臺上加密圖像。
2、加密算法描述
(1)預(yù)處理
對于原始圖片f,其像素矩陣大小為MXN,擴充(用O填充)像素矩陣使其大小變?yōu)镸'×N',使得其中m'、N'為完全平方數(shù),不妨設(shè)M'=m,N'=n。將M'×N'的像素矩陣按順序分成m×n2個大小為m×n的分塊。為了方便起見,用二維數(shù)組Aij來表示第(i,j個分塊。用二維數(shù)組BAij[x][y]來表示分塊A[ij]中的像素值(其中0≤i≤m-1,O≤j≤n-l,0≤z≤m-l,O≤y≤n-1)。為了增加安全性,先將Logistic混沌系統(tǒng)和Tent混沌系統(tǒng)分別迭代keyl、key2次。迭代次數(shù)keyl、key2作為加密密鑰。其中Logistic的初值作為密鑰key3,參數(shù)a作為密鑰key4。其中tent系統(tǒng)的初值作為密鑰key5。參數(shù)b作為密鑰key6。
(2)分塊內(nèi)的處理
利用Logistic混沌系統(tǒng)構(gòu)造序列T[m×n],使得O≤T[i]≤mXn-l,其中o≤i≤mXn-1,并且有T[i]≠T[j],當(dāng)i≠j時。對每個分塊內(nèi)像素值的處理方法如下,以分塊A[i]j]為例。
a)構(gòu)造置換數(shù)組
利用tent混沌系統(tǒng)產(chǎn)生一個隨機數(shù)temp。再對mXn取余,得到新的序列T[mXn]。公式表述:
b)按照序列T[mxn]的順序,置換分塊內(nèi)的像素值
如對于BA[ij] [x] [y],首先計算置換位置,設(shè):
c)異或操作
對于分塊內(nèi)的每一個像素值BA[ij] [x] [y],利用tent混沌系統(tǒng)產(chǎn)生一個偽隨機數(shù)e,再將像素值BA[ij] [x] [y]與e異或。即:
(4)將步驟(3)處置之后的分塊按列序優(yōu)先從小到大的順序排列,得到加密后的圖像I'。
3、解密算法描述:
利用加密時密鑰keyl、key2、key3、key4、key5、key6的值,按照加密的逆過程解密,然后去掉添加的多余數(shù)據(jù)(如果存在),即可得到解密后的圖像。
三、實驗分析
實驗的測試平臺為雙核CPU,其型號為ARM Cortex-A9,頻率為l024MHz,RAM容量為lGB,搭載Android 4.O操作系統(tǒng)。利用本文的算法對Lena(256×256)加密的效果如圖2所示。圖2(a)為加密前的圖像,圖2(b)為加密后的圖像,圖2(c)為解密后的圖像,由圖可知,通過本算法,達到了較好的加密效果,通過加密后的圖像無法看到原圖的信息。
1、密鑰敏感性分析
通過對密鑰做微小的改變來測試密文對密鑰的敏感性。為了簡單起見,這里只測試對密鑰key3的敏感性。將couple(256×256)圖像作為用例,不妨令key3=0.9000000。圖3(a)為加密前的圖像,圖3(b)為加密后的圖像,圖3(c)為輸入正確密鑰key3=0. 9000000后得到的解密圖像。圖3(d)為輸入錯誤密鑰key3=0.90000001后得到的解密圖像。
2、直方圖分析
Lena圖像加密前后的直方圖對比如圖4所示,該直方圖是一幅圖像像素有序分布的圖表,反映了圖像處理之后像素的分布。由圖4可知,加密后直方圖分布非常均勻,掩蓋了圖像加密前像素值的分布規(guī)律,從而可以有效地抵抗統(tǒng)計分析和已知密文攻擊。
3、相關(guān)性分析
加密效果之一是盡可能地降低相鄰像素的相關(guān)性,用如下離散化式計算相關(guān)系數(shù):
隨機在水平、垂直方向各選取1000對相鄰像素值,利用上面的公式計算出相關(guān)系數(shù),如表1所列。通過對比加密前后的相關(guān)系數(shù),可以發(fā)現(xiàn)本算法有效地減小了相鄰像素值之間的相關(guān)性。
4、信息熵分析
圖像信息熵是一種特征的統(tǒng)計形式,它反映了圖像中平均信息量的多少。在信息論中,一個系統(tǒng)越是有序,信息熵就越低;反之,一個系統(tǒng)越是混亂,信息熵就越高。所以信息熵也可以說是系統(tǒng)有序化程度的一個度量。
對圖像信息熵的計算,可利用如下公式:
其中,p(i)表示圖像中灰度值為Z的像素所占的比例。利用以上公式可計算出加密前后的信息熵,表2為加密前后的信息熵的比較,從中看出加密后的各個顏色分量的信息熵均大于加密前的信息熵,說明加密后圖像中的信息變得混亂,達到了加密的效果。
小知識之直方圖
直方圖(Histogram)又稱質(zhì)量分布圖。是一種統(tǒng)計報告圖,由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況。 一般用橫軸表示數(shù)據(jù)類型,縱軸表示分布情況。













