流式網(wǎng)絡圖像的保留格式加密
在網(wǎng)絡環(huán)境中圖像的傳輸越來越普遍,很容易遭受人為攻擊,圖像信息的保密性和安全性也變得日益重要,圖像按照壓縮方式分為無損壓縮格式(PNG,TIFF,GIF,RAW,PCX,TAG,BMP)和有損壓縮格式(JPEG,JPG,WMF)。流式網(wǎng)絡圖像(portable network graphic,PNG)格式是一種保證最不失真的位圖文件存儲格式,目前越來越多地應用在軟件、網(wǎng)絡以及手機。
以PNG為代表的無損壓縮格式主要加密方式有:矩陣置亂加密、混沌加密、視覺密碼加密等。這些加密方式很好地滿足了圖像加密中的一個重要指標——格式兼容性。
格式兼容加密(FCE)已經(jīng)成為圖像加密的重要加密方法,F(xiàn)CE使加密后的多媒體語法不受破壞,仍然能用標準的解碼器進行解碼。保留格式加密(FPE)是一種確保密文與明文屬于同一消息空間的加密技術(shù),保證了密文與明文格式的一致性。因此,對圖像進行保留格式加密,加密后的圖像可以滿足格式兼容性。
本文針對FPE在PNG圖像加密中的應用展開研究,概述了格式兼容加密的研究現(xiàn)狀,分析了PNG圖像的壓縮編碼過程與兼容加密的格式需求,進而基于FPE技術(shù)提出了一種全新的PNG圖像的格式兼容加密方案,并深入探討了所提出的方案在退化和保密兩個方面的應用。
一、格式兼容加密
衡量圖像加密技術(shù)的性能主要包括4個指標:格式兼容性、安全性、加密數(shù)據(jù)量、壓縮率、格式兼容性是最重要的指標,它對于圖像加密以及加密的圖像在網(wǎng)絡中的傳輸具有很現(xiàn)實的意義,格式兼容性使得密文繼承了加密前文件的一些良好特性,如糾錯能力、網(wǎng)絡友好性、視頻的隨機訪問、自適應帶寬、視頻轉(zhuǎn)換等.具有如下優(yōu)點:滿足特定商業(yè)應用需求;保持多媒體對象的搜索功能;保持同步和容錯功能;便于加密數(shù)據(jù)的定位;提高密碼系統(tǒng)的安全性;便于網(wǎng)絡中間結(jié)點的處理等。
格式兼容加密有多種實現(xiàn)方法,如JPEG2000圖像的迭代加密方案、基于JPSEC框架的加密方案、針對MPEG-21視頻壓縮域的加密方案、FCE后H.264/SVC網(wǎng)絡適應性的加密方案等。
2010年后,最新的研究熱點FPE被應用到格式兼容加密領(lǐng)域,成為格式兼容加密的一種新的實現(xiàn)方式。Stutz以有限自動機描述了JPEG2000壓縮流的包體部分j并運用了FPE的Cycle-walking方法,從而將這個加密問題轉(zhuǎn)化為正則語言上的FPE問題。因此,現(xiàn)有的正則語言的FPE解決方案都可直接應用到JPEG2000壓縮流包體數(shù)據(jù)的加密中.而無損的PNG圖像本身也有格式限制,F(xiàn)PE同樣能用于實現(xiàn)PNG的格式兼容加密。
二、PNG的保留格式加密方案
1、需求分析
(1)加密流程
PNG源圖像的壓縮過程為:重新排列PNG圖像的像素,形成幾個較小的圖像,讓圖像漸進顯示;將圖像序列化成一個掃描線,像素在掃描線中從左到右排列,掃描線是有序的從上到下,形成像素矩陣;每個掃描線轉(zhuǎn)化成一個過濾的掃描線;對所有過濾后的掃描線進行壓縮編碼;將壓縮后的圖像劃分成合適大小的塊;最后將塊拼接形成數(shù)據(jù)流。
FPE加密作用于像素矩陣,運用在序列化之后,過濾壓縮之前,F(xiàn)PE解密過程是加密過程的逆過程,運用在反過濾之后。
(2)FPE的基本算法
本方案中需要用到3個FPE基本算法:Prefix,Cycle-walking和Generalized-feistel。
Prefix方法是基于內(nèi)存中建立的全明文集合置換表完成對數(shù)據(jù)的加解密,僅適合于較小有限域。Cycle-walking方法可簡單描述為:要加密明文z∈(0,1,…,n-l),選用分組密碼E(如AES),設y=Ek(x),若z∈{O,1,…,n-l}則返回y,否則循環(huán)執(zhí)行y=Ek(z),直到有{0,1,…,n-l)范圍內(nèi)的密文y產(chǎn)生為止.Generalized-feistel方法利用Feistel網(wǎng)絡構(gòu)造分組密碼,并結(jié)合Cycle-walking方法,理論上能對任意大小的整數(shù)集進行保留格式加密。
FPE的這幾種方法都具有可證明的安全性,達到了偽隨機置換(pseudo random permutation,PRP) 安全。
(3)格式要求
若對PNG圖像壓縮之后的碼流進行加密,則無法保留其格式,加密后會使得圖像不兼容。而PNG的格式要求在壓縮前的像素矩陣上有很明顯的體現(xiàn),因此對像素矩陣進行保留格式加密尤為重
要.PNG圖像像素矩陣的格式要求主要體現(xiàn)在顏色類型以及圖像的寬度和高度上:
①加密后的圖像類型與原來的圖像類型保持一致;
②加密后圖像的寬度、高度與原圖像保持一致。
PNG圖像類型分為灰度圖像、真彩色圖像、索引彩色圖像、帶口通道數(shù)據(jù)的灰度圖像、帶α通道數(shù)據(jù)的真彩色圖像,壓縮前的PNG圖像是一個像素矩陣,各類型圖像的像素具有不同的格式。如grey表示一個灰度樣本值;RGB表示紅、綠、藍3個顏色樣本值;index表示一個索引值;α表示像素的不透明度值(0代表一個完全透明的像素,最高數(shù)字代表完全不透明的像素)。不同圖像類型的像素點格式如下所示。
①灰度圖像:每一個像素點存放grey;
②真彩色圖像:每一個像素點存放RGB;
③索引彩色圖像:每一個像素點存放index;
④帶口通道數(shù)據(jù)的灰度圖像:每一個像素點存放grey和d;
⑤帶α通道數(shù)據(jù)的真彩色圖像:每一個像素點存放RGB和α。像素點的取值范圍由Bitdepth確定。
2、方案描述
總體設計方案為:①灰度圖像,Colortype為0以及真彩色圖像,Colortype為2,行加密方法為FPE直接加密;
②索引彩色圖像,Colortype為3,行加密方法為了解index的取值范圍,F(xiàn)PE(結(jié)合Cycle-walking);
③帶口通道數(shù)據(jù)的灰度圖像,Colortype為4,行加密方法為將grey值和口值分別提取出來,用FPE直接加密grey值,α值設置成最大值,將grey值和d值分別寫回到每個像素;
④帶a通道數(shù)據(jù)的真彩色圖像,Colortype為6,行加密方法為將RGB值和α值提取出來,加密RGB值,α設置成最大值,將RGB值和α值分別寫回到每個像素。
對像素矩陣的每一行都進行保留格式加密,即可得到加密后的PNG像素矩陣.具體的實現(xiàn)方案用三元組F= (GEN,ENC,DEC)來描述。
算法GEN(W,params):初始化階段主要定義以下幾個方面的內(nèi)容。
①PNG格式W一{Colortype,Bitdepth,Width,Height);
②產(chǎn)生必要的密鑰忌、分組長度n和輪次數(shù)r等;
③建立必要的置換表;
④采集必要的樣本。
算法ENC(S,ZF,SF):輸人為PNG的格式W、密鑰忌、分組長度n、輪次數(shù)r、置換表Z、像素矩陣,輸出為加密后的像素矩陣。
建立算法元組ZF={ Enca,Encb,Encc),ZF為滿足PNG的不同格式的需要所建立的算法元組;建立一個加密選擇方案元組SF——{Degradation,Confidentiality},SF是根據(jù)不同的應用需求所建立的算法元組。用算法Select選擇元組中的算法。
①選擇ZF中的合適算法,加密算法是一個映射Enc,將明文Enc密文,Enca,Encb和Ence為針對不同格式圖像的加密算法:對于不帶α通道數(shù)據(jù)的圖像(灰度圖像、真彩色圖像)選擇Enca;對于索引圖像選擇Encb;對于帶口通道數(shù)據(jù)的格式選擇Encc。
②選擇SF中的合適算法,Degradation,Confi-dentiality為針對不同應用需求的加密算法:對于退化的PNG圖像采用加密方法Prefix;對于保密的PNG圖像采用加密方法Generalized-eistel;不管要得到退化或是保密的PNG圖像,對于索引圖像類型都要使用Cycle-walking方法。
下面給出了算法Select,Enca,Encb,Encc。
Algorithm Select
輸入:W,ZF
輸出:Enc
if W[Ol=OIIW[0]=2
Enc= ZF[O] = Enca ;
else if W[0]=3
Enc= ZF[1] = Encb ;
else W[0l=4 11 W[0]=6
Enc= ZF[2] = Encb ;
Algorithm Enca
if apply=SF[O]
S'Prefix[S] ;
Algorithm Encb
輸入:k,n,r,Z,S
輸出:S'
if apply=SF[O],
if S'不滿足 W
r _ S' <-Cycle-walking[Prefix[S]] ;
else if apply=SF[I]
S' Generalized-feistel [S] ;
Algorithm Ence
輸入:k,n,r,Z,S
輸出:S'
if apply= SF[O]
S1 非α值
S2 α值
S Prefix[Si];
S2 設置S2最大
S’ s1S2
else if apply= SF[I]
S1非α值
S2α值
S;Generalized-feistel [Si];
S設置d值;
s‘s1'||S’2
算法DEC(S’,ZF,SF):ENC的逆運算。
由于方案底層采用的都是FPE基本方法,安全性可以歸結(jié)到FPE的安全性,即達到了PRP安全。
三、退化和保密
1、退化
圖像退化( degradation)是指在一些商業(yè)的應用模式下,商家希望用戶能夠獲得圖像的一部分信息,從而能夠知道圖像的大致內(nèi)容,但在沒有授權(quán)的情況下不能看到更高質(zhì)量的圖像信息。
PNG圖像退化加密算法的初始化和加密過程描述如下:
算法GEN:退化的PNG加密方案的初始化階段的步驟如下:
①生成置換表,
②讀取Colortype,判斷是否為索引圖像:若為索引圖像,則需要確定其數(shù)值的取值范圍;若不為索引圖像,則判斷是否為帶α通道數(shù)據(jù)的圖像;若帶α,則需要將非α樣本取出;若不帶d通道數(shù)據(jù),不需要處理。
③確定圖像的Width和Height值。
算法ENC:輸人為置換表、像素矩陣S、Colortype值、Bitdepth值、矩陣的Height、矩陣的Width。輸出為加密后的像素矩陣。所使用的加密方法是置換表大小n-256的Prefix算法。
算法DEC:算法ENC的逆過程,由圖1~圖3看出,3種類型的圖像都滿足了所需要的退化效果,其中帶α通道數(shù)據(jù)的真彩色圖像的退化加密效果最佳,背景色仍然保持了原有的透明度;其次是真彩色圖像的退化加密,背景顏色比較單一;效果最差的是索引圖像的退化圖像,背景色與圖像的主要內(nèi)容部分的顏色相似。



圖4給出退化加密的效率分析,通過加密時間來分析效率。從圖中可以看出,效率與圖像類型有關(guān),首先,真彩色圖像的效率相對于帶α通道數(shù)據(jù)的真彩色圖像較高,真彩色圖像只需對每個字節(jié)進行Prefix加密,較為簡單,因此效率較高;由于帶α通道數(shù)據(jù)的真彩色圖像需要將像素的RGB值與α值分別提取出來進行處理,然后再寫入像素,這個過程需要更多的時間,因此效率較低。其次,索引圖像的加密效率較高不穩(wěn)定。對于顏色不復雜圖像,索引圖像類型需要加密的數(shù)據(jù)量比真彩色圖像要少得多,但是加密時需要使用Cycle-walking,Cycle-walking的效率具有不確定性,所以加密的效率曲線呈現(xiàn)不穩(wěn)定,由于在Prefix的基礎(chǔ)上使用Cycle-walking比較簡單,效率較高,因此所需要的時間仍然比帶口通道數(shù)據(jù)的真彩色圖像要少得多。

2、保密
圖像保密( confidentiality)是指為了防止涉及到商業(yè)、政治、軍事及個人隱私的機密信息被未授權(quán)的第三方看到,因此保密的目的是要實現(xiàn)對圖像內(nèi)容的完全保護,非授權(quán)用戶能夠解碼圖像,但是看到的是與源圖像內(nèi)容完全不相關(guān)的圖像。PNG圖像保密加密算法的初始化和加密過程描述如下:
算法Gen:
①基礎(chǔ)分組密碼的密鑰k、分組長度72和輪次數(shù)r等;
②讀取Colortype,判斷是否為索引圖像;
③確定圖像的Height和Width值。
算法Enc:輸人為密鑰k、分組長度n(n為31 B)、輪次數(shù)r(r取值為6,保證足夠安全的基礎(chǔ)上具有較高的效率)、像素矩陣、Colortype值、Bitdepth值、矩陣的Height、矩陣的Width。輸出為
加密后的像素矩陣,使用的加密方法是Generalized-feistel。
算法DEC:算法ENC的逆過程,由圖5~圖7看出,3種類型的圖像基本上滿足了所需要的保密效果。其中,真彩色圖像的保密加密效果最佳,其加密后的圖像隱藏了源圖像的顏色;其次是索引圖像的保密加密,雖然加密后的圖像很好的保密了源圖像的內(nèi)容,但是暴露了原圖像的顏色信息;效果最差的是帶通道數(shù)據(jù)的真彩色圖像的保密加密,其稍微有一些退化效果,保密效果不佳。

圖8給出保密加密的效率分析,通過加密時間來分析效率。保密加密的效率明顯低于退化加密的效率,原因是退化加密要達到的加密要求比較低,所使用的Prefix方法比較簡單,相比分組長度較大的Generalized-feistel方法,效率較高。

對于保密加密,同樣的圖像,因為圖像類型不同,加密的時間也有明顯的變化。首先,真彩色圖像與帶通道數(shù)據(jù)的真彩色圖像的加密效率較接近,因為對于效率較低的Generalized-f eistel方法,將α值與RGB值分離的這個過程所消耗的時間不那么明顯,所以兩種類型圖像加密的效率差值不大,其次,索引圖像的加密效率不穩(wěn)定,其明顯低于其他圖像類型,雖然索引圖像需要加密的數(shù)據(jù)量比真彩色圖像要少得多,但是加密時需要使用Cycle-walking,由于在Generalized-feistel的基礎(chǔ)上使用Cycle-walking,需要循環(huán)的次數(shù)比較多,因此效率比較低;又因為Cycle-walking的效率具有不確定性,效率浮動較明顯。
同時,對于保密加密,使用不同的分組長度,其效率也會有所不同,使用不同的分組長度對真彩色圖像進行保密加密,其效率與分組長度的關(guān)系如圖9所示。

保密加密的效率隨著分組長度的增大而提高,小的分組長度進行分割和拼接運算比較復雜,以致于效率較低,使用較大分組加密時,效率較高。而使用分組過小時,保密效果越來越差,當分組長度為2B時則為退化效果,因此基于效率和保密效果的角度考慮,使用較大的分組較好。
小知識之PNG
PNG,圖像文件存儲格式,其目的是試圖替代GIF和TIFF文件格式,同時增加一些GIF文件格式所不具備的特性??梢浦簿W(wǎng)絡圖形格式(Portable Network Graphic Format,PNG)名稱來源于非官方的“PNG's Not GIF”,是一種位圖文件(bitmap file)存儲格式,讀成“ping”。PNG用來存儲灰度圖像時,灰度圖像的深度可多到16位,存儲彩色圖像時,彩色圖像的深度可多到48位,并且還可存儲多到16位的α通道數(shù)據(jù)。PNG使用從LZ77派生的無損數(shù)據(jù)壓縮算法,一般應用于JAVA程序中,或網(wǎng)頁或S60程序中是因為它壓縮比高,生成文件容量小。



