焦陽(yáng)+趙嵩
摘 要:針對(duì)數(shù)字檔案安全存儲(chǔ)需求,提出了一種靈活有效的數(shù)據(jù)壓縮和加密方案。首先比較了主流壓縮算法,選取適合于檔案保存的無(wú)損壓縮方法。然后利用前反饋非線性動(dòng)力學(xué)濾波器產(chǎn)生偽隨機(jī)序列結(jié)合自適應(yīng)隨機(jī)算術(shù)編碼對(duì)SPIHT分類的位進(jìn)行編碼,獲得壓縮加密的比特流,實(shí)現(xiàn)在不同需求級(jí)別的完全加密和選擇性加密方案。實(shí)驗(yàn)結(jié)果表明,該方案具有良好的加密安全性,不影響壓縮效率,兼容多種文檔類型,適合于各類數(shù)字檔案保存需要。
關(guān)鍵詞:數(shù)字檔案;文件加密;數(shù)據(jù)壓縮
1 引言
隨著各種圖像采集設(shè)備的廣泛應(yīng)用,當(dāng)今的網(wǎng)絡(luò)數(shù)據(jù)以及檔案數(shù)據(jù)中,數(shù)字圖像所占比例正在不斷增長(zhǎng)。相比傳統(tǒng)文本文件,圖像文件的數(shù)據(jù)往往是海量的。面對(duì)越來(lái)越多的多媒體文檔,檔案存儲(chǔ)的技術(shù)方式需要改進(jìn)。本文提出一種針對(duì)數(shù)字檔案文件存儲(chǔ)的壓縮結(jié)合加密方法。
2 數(shù)字檔案的安全保存特點(diǎn)與需求
2.1 數(shù)據(jù)量巨大,有效的壓縮可以提高存儲(chǔ)的效率。相比實(shí)時(shí)場(chǎng)景圖像壓縮方法對(duì)于時(shí)效性的極高需求,數(shù)字檔案存儲(chǔ)可以在實(shí)時(shí)性和壓縮效率上實(shí)現(xiàn)靈活的平衡,因此一些更先進(jìn)更復(fù)雜的算法可以引入數(shù)據(jù)壓縮過程中。
2.2 數(shù)字檔案文檔中,文本、數(shù)據(jù)、圖像往往混合交替出現(xiàn)。每一種類型的文檔的數(shù)據(jù)特點(diǎn)各不相同,它們的碼率、原始編碼格式、無(wú)損壓縮極限對(duì)壓縮編碼器提出了不同要求,因此編碼器應(yīng)當(dāng)能夠自適應(yīng)調(diào)整編碼方式,實(shí)現(xiàn)速率可控的壓縮編碼。
2.3 數(shù)字檔案具有較高的安全性需求。檔案安全的重要性自不待言,然而傳統(tǒng)的加密方案如DES和AES等不適合應(yīng)用在高計(jì)算復(fù)雜性的圖像加密中。另一方面,一些加密方案比如基于秘密分割或盲源分離算法,對(duì)空間域中的像素進(jìn)行擴(kuò)散,得到良好加密安全性,但加密后的密文文檔會(huì)產(chǎn)生遠(yuǎn)大于明文的數(shù)據(jù)量[1]。如果一套檔案存儲(chǔ)方案中先后使用了壓縮與加密方法,那么加密帶來(lái)的冗余數(shù)據(jù)將抵消掉壓縮編碼的效果。因此在壓縮域同時(shí)實(shí)現(xiàn)加密是有必要的,最近的研究已開始重視在壓縮過程中集成加密算法[2]。
3 壓縮編碼的選擇
為了確定適合于數(shù)字檔案文件壓縮的方法,我們分析和測(cè)試目前主流的無(wú)損壓縮算法,包括基于變換的方法:JPEG、JPEG2000以及基于SP的變換編碼方法;基于預(yù)測(cè)的無(wú)損壓縮算法:LJPEG,CALIC;基于字典的壓縮方法:PNG和RAR;以及SPIHT方法。
JPEG2000,是一個(gè)ISO/ITU-T標(biāo)準(zhǔn)的圖像編碼方法,它基于離散小波變換(DWT)、標(biāo)量量化、上下文建模、算術(shù)編碼和壓縮后的速率分配等方法。
SPIHT,根據(jù)變換系數(shù)的量級(jí)來(lái)將它們從最高有效位傳輸?shù)阶畹陀行黄矫?,采用重要信息確定樹形結(jié)構(gòu),算法的執(zhí)行取決于零樹結(jié)構(gòu)。
S+P變換,使用簡(jiǎn)單的金字塔多分辨率方法,通過預(yù)測(cè)編碼增強(qiáng),它的計(jì)算量小,只使用整數(shù)增補(bǔ)和位移,解決了有限精度的問題。
無(wú)損JPEG (L-JPEG),使用三個(gè)最近的鄰居(上,左,左上方),熵編碼用于預(yù)測(cè)誤差,無(wú)損JPEG在醫(yī)療成像方面有一定的知名度。
PNG,便攜式網(wǎng)絡(luò)圖形是W3C推薦作為替代GIF的編碼方法,它是基于預(yù)測(cè)方法的熵編碼。該熵編碼用于深受歡迎的Zip文件壓縮程序。
WinRAR,是一款共享的文件歸檔和數(shù)據(jù)壓縮工具,它完全支持RAR、ZIP、TAR、GZ、BZ2、JAR、ISO、7Z和Z文件。這些算法都基于一般的文本壓縮字典。
使用香港理工大學(xué)的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)進(jìn)行對(duì)比實(shí)驗(yàn),選取7000幅圖像作為實(shí)驗(yàn)樣本,測(cè)試平臺(tái)為Pentium處理器(2.66 GHz),4GB內(nèi)存,Windows 7操作系統(tǒng)和Visual C++6.0開發(fā)環(huán)境。所有無(wú)損壓縮程序均在Win7的VC環(huán)境中重新編譯。我們衡量壓縮R=(原始圖像大?。?(壓縮圖像大?。^大的R值表明更好的壓縮性能。
圖1給出的壓縮方法的時(shí)間/壓縮比,是數(shù)據(jù)庫(kù)中全部7000次樣本測(cè)試運(yùn)行結(jié)果的平均值。標(biāo)準(zhǔn)JPEG(B+ECT)方法的壓縮率比較低。S+P的壓縮比很高,但此方法有較長(zhǎng)的運(yùn)行時(shí)間。LJPEG和PNG得到了幾乎相同的壓縮比。而Winrar軟件僅適合用于壓縮文本文件,不適合用于壓縮多媒體文件,如視頻、圖像或音頻文件。CALIC雖然是壓縮率最高的算法,但是SPIHT在壓縮率和壓縮速度上找到了最佳的平衡。因此,對(duì)于數(shù)字圖像檔案文檔數(shù)據(jù)壓縮的大多數(shù)情況下優(yōu)先推薦SPIHT方法。
4 結(jié)合SPIHT和RAC方法在壓縮域?qū)崿F(xiàn)文檔加密
最近的研究表明,信息熵編碼方法在加密的同時(shí)仍然可以保留明文的壓縮性能?;煦缦到y(tǒng)具有許多重要的性質(zhì),比如對(duì)初始條件和控制參數(shù)具有高度敏感性,適合用于加密方案?;诨煦缦到y(tǒng)隨機(jī)算術(shù)編碼(RAC)已經(jīng)應(yīng)用于圖像加密,混沌系統(tǒng)作為偽隨機(jī)位生成器(PRBG)。前反饋非線性動(dòng)力學(xué)濾波器(FFNDF)可以產(chǎn)生具有均勻分布的n階混沌信號(hào)并被成功的應(yīng)用于構(gòu)造哈希函數(shù),它可以用來(lái)產(chǎn)生更安全的偽隨機(jī)序列。通常算術(shù)編碼(AC)是信源編碼的最后階段,它可以做到對(duì)圖像、文本等各種類型文檔實(shí)現(xiàn)數(shù)據(jù)壓縮,而RAC方法可以提供安全性且不影響壓縮性能。上文中已經(jīng)證明,SPIHT算法是有效的圖像壓縮算法,在SPIHT算法中應(yīng)用RAC方法可以得到靈活的保護(hù)機(jī)制,實(shí)現(xiàn)完全加密或選擇性加密。
SPIHT算法根據(jù)變換系數(shù)的大小將它們從最高有效位傳輸?shù)阶畹陀行黄矫?。SPIHT采用重要信息集確定樹形結(jié)構(gòu),算法的執(zhí)行取決于零樹結(jié)構(gòu),即使在編碼器數(shù)據(jù)開始階段出現(xiàn)極小的重要信息誤差,算法都不能正確地解碼圖像。這種敏感特性使得它適合于實(shí)現(xiàn)加密。壓縮算法產(chǎn)生的許多不同類型的位(符號(hào)位,細(xì)化位,重要位,重要集合)。解壓縮算法必須解釋每一位在上下文中的正確意義。錯(cuò)誤的重要位將導(dǎo)致后續(xù)位錯(cuò)誤,而細(xì)化位則不會(huì)。本文提出的算法框架如圖2所示,首先,原始數(shù)據(jù)通過小波變換得到變換系數(shù);隨后采用SPIHT進(jìn)行分類,決定重要映射。根據(jù)閾值給出的重要系數(shù),不重要的空間方向樹和孤立的不重要系數(shù)重新排序,得到重要位和符號(hào)位;接下來(lái)是細(xì)化階段,獲得重要系數(shù)的附加細(xì)化位;最后,使用FFNDF生成偽隨機(jī)位序列,控制對(duì)符號(hào)位與比特流進(jìn)行異或運(yùn)算,實(shí)現(xiàn)自適應(yīng)的二進(jìn)制RAC對(duì)量化的符號(hào)流進(jìn)行數(shù)據(jù)壓縮和加密。
在SPIHT編碼階段,重要系數(shù)的坐標(biāo)隱藏在重要位中。由于SPIHT的預(yù)測(cè)性和可變長(zhǎng)度編碼,解碼不僅取決于當(dāng)前的位,而且取決于重要位。一個(gè)重要位錯(cuò)誤會(huì)導(dǎo)致嚴(yán)重的錯(cuò)誤傳播。而標(biāo)志位和細(xì)化位不能提供足夠的視覺信息。所以,如果想實(shí)現(xiàn)選擇性加密,標(biāo)志位和細(xì)化位可以不必被加密,從而獲得更快的加密速度。如果我們想保護(hù)信息的全部?jī)?nèi)容,就需要加密所有的位。因此,根據(jù)應(yīng)用的情形,我們可以靈活地將編碼算法分為全部加密和選擇性加密。由于SPIHT方法針對(duì)圖像的空間冗余,而RAC針對(duì)熵冗余,所以該加密方法是文件格式兼容的,文本、圖像和任意文檔都可以使用此算法進(jìn)行加密和壓縮。
5 實(shí)驗(yàn)結(jié)果和安全性分析
實(shí)驗(yàn)采用國(guó)際標(biāo)準(zhǔn)圖像goldhill(512*512),壓縮比為0.25bpp(比特每像素),二階FFNDF的產(chǎn)生密鑰和仿真條件為:反饋系數(shù)為3.57和4.0,轉(zhuǎn)換系數(shù)為5.70和7.0,初始值是0.7238。狀態(tài)值分別是0.3552和0.8421,控制參數(shù)是分段線性映射0.35。所有的仿真采用雙浮點(diǎn)運(yùn)算IEEE754浮點(diǎn)標(biāo)準(zhǔn)。
(a)原始圖像;(b)圖像的小波域;(c)全加密和壓縮的圖像;(d)僅細(xì)化階段加密的圖像;(e)僅系數(shù)加密的圖像;(f)使用錯(cuò)誤密鑰解密后的圖像
圖3給出了原始圖像以及變換過程和加密解密結(jié)果,完全加密可以獲得良好的安全性,但是僅使用細(xì)化位或系數(shù)參與加密運(yùn)算則只改變了圖像的亮度/對(duì)比度,實(shí)現(xiàn)有限的保護(hù)。
優(yōu)秀的加密系統(tǒng)需要有極敏感的密鑰保證系統(tǒng)能夠抵御暴力破解。FFNDF對(duì)于初始值和控制參數(shù)非常敏感,根據(jù)圖6(f),與初始密鑰差別在10-15量級(jí)的錯(cuò)誤密鑰解密后的圖像完全不可讀取。系統(tǒng)對(duì)初始密鑰值的敏感度達(dá)到了的10-15,而其他參數(shù)的敏感度是10-16,密鑰空間為 ,這足以抵抗密鑰搜索破解。
6 結(jié)束語(yǔ)
本文提出的基于FFNDF加密并結(jié)合SPIHT和RAC的方法可以有效對(duì)各類數(shù)字化檔案文檔進(jìn)行壓縮和加密,提供了靈活的可選擇加密方案。從密碼學(xué)角度的理論分析和實(shí)驗(yàn)結(jié)果表明,該方案是安全可靠的,并且計(jì)算復(fù)雜度可根據(jù)需要調(diào)整,適用范圍廣。