專利名稱:一種加密的Huffman編碼方法,及其解碼方法
技術領域:
本發(fā)明涉及Huffman編碼,尤其涉及一種加密的Huffman編碼方法,及其解碼方法, 和該編解碼方法在數(shù)字內(nèi)容保護上的應用,屬于信息安全和數(shù)字內(nèi)容保護技術領域。
背景技術:
近二十年來,計算技術的日新月異以及網(wǎng)絡技術的迅猛發(fā)展,推動了數(shù)字多媒體技術 的產(chǎn)生和發(fā)展。數(shù)字多媒體音視頻被廣泛應用于各種場合,其中,包括信息保密和數(shù)字版 權保護在內(nèi)的一些應用需要保護數(shù)字內(nèi)容不被非授權地使用,因此對數(shù)字內(nèi)容保護的研究 和開發(fā)隨之產(chǎn)生。早期的安全方法大多依賴于權限控制,比如通過用戶名、密碼來實現(xiàn)對 接收和下載的控制,但這類方法的缺陷是數(shù)字內(nèi)容本身沒有被加密,在傳輸過程中容易被 竊取,因此,需要研究對數(shù)字內(nèi)容本身的保護算法??紤]到數(shù)字內(nèi)容及其編碼的特點,新 的算法需要從加密代價、安全性、實時性、簡單性、壓縮比保持、數(shù)據(jù)格式保持等方面考 慮算法的設計方案進而對它們的性能進行評價,由于這些性能對說明本發(fā)明的內(nèi)容至關重
要,以下簡單地介紹它們
(1) 一定強度的安全性。它是保護的首要要求,針對不同安全性級別的應用,需要加 密方法達到相應的安全性要求,力求在安全性與執(zhí)行效率之間實現(xiàn)最優(yōu)折衷。另外可調節(jié) 加密強度的方案有著比較廣的應用范圍。
(2) 壓縮比不變性。能夠保持安全處理前后的數(shù)據(jù)量不變的性質被稱為壓縮比不變性。 例如視頻數(shù)據(jù)量一般較大,如果保護處理后的數(shù)字內(nèi)容數(shù)據(jù)的壓縮比相對原來的數(shù)據(jù)有較 大差別,將需要傳輸、存儲更多的數(shù)據(jù),增加了網(wǎng)絡和設備的負擔。理想的數(shù)字內(nèi)容保護 算法應該具有壓縮率不變性或者盡量保證安全處理對數(shù)字內(nèi)容編碼壓縮比僅有小的影響。
(3) 實時性和易用性。為了保證收看/收聽的質量,數(shù)字多媒體數(shù)據(jù)在實時傳輸和存取 方面的要求較高,保護算法不能給傳輸和存取帶來過大的延時;隨著電子消費設備不斷地 向小型化和移動化發(fā)展,工程技術人員一般希望保護算法的構造復雜度不能高。
(4) 數(shù)據(jù)格式不變性。指保護處理前后數(shù)字內(nèi)容的格式信息不變,這樣可以對數(shù)字內(nèi) 容進行定位,也可以方便管理和識別。Huffman編碼是1952年為文本文件而建立,是一種熵編碼。屬于無損壓縮編碼。 Huffman編碼的碼長是變化的,對于出現(xiàn)頻率高的信息,編碼的長度較短;而對于出現(xiàn)頻 率低的信息,編碼長度較長。這樣,處理全部信息的總碼長一定小于實際信息的符號長度。
目前很多數(shù)字內(nèi)容(例如jpeg、 mpeg-4、 mp3文件)都采用了 Huffman編碼作為熵編碼 過程,所以對于采用Huffman編碼的數(shù)字內(nèi)容,各種保護方法可以按照應用保護的不同位 置分為Huffman編碼前、Huffman編碼中以及Huffman編碼后。
在Huffman編碼前,數(shù)字內(nèi)容需要進行變換域編碼,量化等預操作。針對這一特點, Tang(L. Tang. Methods for encrypting and decrypting MPEG video data efficiently, Proceedings of the 4th ACM International Multimedia Conference (ACM Multimedia'96), Boston, MA, USA: 1996, pp. 219-229.)提出了離散余弦變換(DCT)系數(shù)置亂的方法,Shi和Bhargava(C. G. Shi, B. Bhargava. A fast MPEG video encryption algorithm, Proceedings of the 6th ACM International Multimedia Conference, Bristol, United Kingdom, 1998, pp. 81-88.)提出了部分加密DCT系數(shù) 符號的方法。Zeng禾口Lei(W. J. Zeng, and S. M. Lei. Efficient frequency domain selective scrambling of digital video, IEEE Transactions on Multimedia, 2003, 5(1): 118隱129.)提出了對 DCT變換系數(shù)進行選擇性置亂,同時結合對DCT變換系數(shù)符號以及運動補償向量符號進 行加密的方法。姚曄等人(姚曄,徐正全,李偉.基于ZigZag置亂的MPEG4視頻加密方案 及改進.計算機工程與設計,2005, 26(8): 2042 - 2044.)提出了對Zig-Zag掃描順序進行置亂 的加密保護方法。
在Huffinan編碼后,將整個編碼后數(shù)據(jù)看作無意義的數(shù)據(jù)流進行整體加密保護的方法 稱為直接加密方法,如Qiao和Nahrstedt(L. Qiao, and K. Nahrstedt. A new algorithm for MPEG video encryption, Proceedings of the First International Conference on Imaging Science, System and Technology (CISST97), Las Vegas, Nevada, USA, 1997, pp. 21-29.)提出利用數(shù)據(jù) 加密標準(DES)進行這類保護。這類方法雖然可以保證較高的安全性,但是附加的計算代 價也較大,在一些情況下較難滿足實時性的要求,如今在視頻/音頻保護領域已很少使用。
上述數(shù)字內(nèi)容的保護方法本質上仍是通過在編碼過程中加入加解密模塊來實現(xiàn)加密 處理,存在與各種數(shù)字內(nèi)容編碼標準不能很好兼容的問題;而且,當前的數(shù)字內(nèi)容接受設 備不斷向小型化、移動化的方向發(fā)展,這些設備自身的計算能力和物理空間有限,附加的 密碼模塊對其運算能力造成了負擔,也限制了進一步縮減其尺寸的努力。
而將加密保護與Huffinan編碼過程相結合的方案能很好地在增強保護效果的同時減小 加密開銷,同時滿足待保護數(shù)據(jù)的編碼兼容性。目前最有代表性的方案是由Chung-Ping.Wu和C,C.Jay.Kuo提出的MHT(多重Huffman編碼表)(C. R Wu and C,C.Jay.Kuo. E伍cient Multimedia Encryption via Entropy Codec Design, IS&T/SPIE 13th Annual Symposium on Electronic Imaging, Proceedings of SPIE, San Jose CA, 2001, pp.22隱25.),他的基本思路是采用 多個Huffman編碼表,在編碼過程中通過密鑰控制當前待編碼單元(symbol)所采用的 Huffman編碼表。其算法的加密部分如下
(1) 產(chǎn)生2A個不同的Huffman編碼表,編號依次標記為0到2fc-1;
(2) 產(chǎn)生偽隨機向量/^O,,A,..../ ),其中的p,是在[O, 2*-l]范圍內(nèi)取值的yt比 特整數(shù);
(3) 對于原始數(shù)據(jù)流中的第'段數(shù)據(jù),采用第戶(,—Km。d"))w個編碼表進行編碼操作。
從加密方案可見,它將數(shù)據(jù)流的壓縮編碼和加密過程同時完成,沒有附加過多的計算 步驟,所以這類方法相比以前的加密方法是比較高效的。但是在后來的研究中,這種方法 被發(fā)現(xiàn)存在嚴重的安全問題,Dahua.Xie和C.-C.Jay.Kuo (D. H. Xie and C.-C.Jay.Kuo.
HOPPING, Circuits and Systems, 2004. ISCAS '04. Proceedings of the 2004 International Symposium on, pp. 568-571 Vol.5.)分析了 MHT在選擇明文攻擊下是不安全的,并提出了一 個基于偽隨機索引序列代替原偽隨機向量的改進方案,另外Goce.Jakimoski和 K.P.Subbalakshmi也指出在選擇明文攻擊下MHT的不安全性(G. Jakimoski and K. P. Subbalakshmi. Crypt analysis of some multimedia encryption schemes, IEEE Transactions on Multimedia, Vol. 10, No. 3. 2008.4, pp. 330-338.),并同時分析了兩種改進方案(隨機比特嵌 入、偽隨機索引序列密鑰)的缺陷。另外,這種方案無法抵抗同步攻擊,會產(chǎn)生額外存儲空 間上的開銷,并且會在一定程度上對編碼長度產(chǎn)生影響。
除了以上回顧的科技論文,本發(fā)明也與數(shù)字內(nèi)容編碼加密與保護的專利相關,但是它 們也不同程度地存在前述的問題,并且與本發(fā)明的技術路線和基本特征非常不同。相關專 利的基本情況如下
(1)專利申請?zhí)枮?00610033168的中國專利"一種圖像數(shù)據(jù)的加密、解密以及轉碼的 方法和裝置"(劉文予;王軍偉;張帆;范云松.一種圖像數(shù)據(jù)的加密、解密以及轉碼的方法和裝 置,專利申請?zhí)?00610033168,申請日2006年01月18日,
公開日2007年07月25日.)
提出的方法公開了一種適用于圖像處理領域的圖像數(shù)據(jù)的加密、解密以及轉碼的方法和裝
置,所述方法包括在量化階段之后、熵編碼階段之前,利用偽隨機數(shù)序列加密算法對所述圖像數(shù)據(jù)進行加密,輸出數(shù)據(jù)密文。通過該發(fā)明可以使圖像數(shù)據(jù)密文透明于轉碼服務器 上的空間下采樣處理,避免造成轉碼服務器的額外開銷以及密鑰等敏感信息的泄漏。
(2) 專利申請?zhí)枮?00310114727的中國專利"加密和壓縮多媒體數(shù)據(jù)的方法與設備" (趙晟娟;文炳人.加密和壓縮多媒體數(shù)據(jù)的方法與設備,專利申請?zhí)?00310114727,申請 日2003年11月21日,2004年08月11日.)公開了一種加密和壓縮多媒體數(shù)據(jù)的方法和設 備,其通過在壓縮多媒體數(shù)據(jù)來記錄和傳送該多媒體數(shù)據(jù)的過程中,使用一加密密鑰來轉 換和壓縮多媒體數(shù)據(jù),并且加密所述多媒體數(shù)據(jù),以使得只能使用所述加密密鑰對所述數(shù) 據(jù)進行解碼。該方法包括通過將輸入的多媒體數(shù)據(jù)施加到DCT單元,以產(chǎn)生離散余弦 變換(DCT)系數(shù),并量化該DCT系數(shù);在熵編碼已量化DCT系數(shù)的已量化DC和AC系數(shù) 時,通過使用特定加密密鑰轉換已編碼DC和AC系數(shù),并加密和壓縮己轉換的差分系數(shù) (DC系數(shù))與振幅系數(shù)(AC系數(shù));對已加密DC和AC系數(shù)進行霍夫曼編碼,并輸出已編碼 DC和AC系數(shù)。該方法是一種適合于處理無線通信中多媒體數(shù)據(jù)的數(shù)據(jù)壓縮方法。
(3) 專利申請?zhí)枮?00410061293的中國專利"一種視頻信息的動態(tài)隨機置亂加解密方 法"(徐正全;姚曄;李偉;楊志云;徐彥彥;張明;王恰琳. 一種視頻信息的動態(tài)隨機置亂加解密 方法,專利申請?zhí)?00410061293,申請日2004年12月06日,
公開日2005年05月18日.) 從所需要加密的視頻信息中提取幾種關鍵數(shù)據(jù)塊進行置亂,然后將置亂后的數(shù)據(jù)塊還原至 提取位置和那些非關鍵數(shù)據(jù)混合作為置亂加密后的視頻碼流輸出,解密則是類似的過程。 該發(fā)明用于置亂的矩陣采用偽隨機序列動態(tài)產(chǎn)生,對于所有的視頻幀,采用的置亂矩陣都 不一樣,保密性可達到實用的水平。該發(fā)明可實現(xiàn)保密性可分級的標準壓縮視頻信息的加 密和解密;基于視頻信息信源特征實現(xiàn),運算量小,可滿足視頻信息處理與傳輸?shù)膶崟r性 要求;不增加碼流大小,不影響視頻交互性和視頻傳輸?shù)木W(wǎng)絡容錯性;獨立于視頻編解碼 器,支持符合MPEG/H.26x序列標準的視頻碼流的加密,加密后的視頻碼流仍符合碼流語 法。
發(fā)明內(nèi)容
本發(fā)明的目的在于,提供一種能夠有效抵抗選擇明文攻擊,加密代價小,保持編碼長 度不變,無縫嵌入壓縮編碼過程的加密的Huffman編碼方法和相應的解碼方法。本發(fā)明編 碼方法在傳統(tǒng)的Huffman編碼方法的基礎上,對于各個編碼單元,對Huffman編碼樹(典 型的或非典型的均可)中的部分編碼節(jié)點進行加密擾動,然后根據(jù)擾動后的Huffman編碼樹獲得該編碼單元的碼字。相應地,本發(fā)明解碼方法在傳統(tǒng)的Huffman解碼方法的基礎上, 對于各個碼字,對相同的Huffman編碼樹中相同的部分編碼節(jié)點進行相同的加密擾動,然 后根據(jù)擾動后的Huffman編碼樹獲得該碼字的編碼單元。可見,在本發(fā)明的編解碼方法中, 編碼單元和碼字之間互相轉換所依據(jù)的是相同的Huffman編碼樹,但對于各個不同的"編 碼單元<=>碼字"的組合,該Huffinan編碼樹均由同一個Huffman編碼樹經(jīng)加密擾動而得 到,因此不一定相同。
本發(fā)明方法特別適用于數(shù)字內(nèi)容(特別是文本、圖片、音頻、視頻等)的保護。在目前 常用的數(shù)字內(nèi)容編碼標準中,編解碼過程普遍釆用了 Huffman編碼,因此,本發(fā)明進一步 通過構造、使用加密參數(shù)生成偽隨機索引序列控制相應待編碼單元的Huffman編碼過程, 給出了一種數(shù)字內(nèi)容的快速保護方法。該方法利用密鑰生成每個待編碼單元的加密索引序 列,在編碼過程中,根據(jù)當前加密索引對Huffman樹應用不同的加密擾動,進而使用加密 擾動后的Huffman樹來替換標準Huffman編碼樹來對待編碼單元進行編碼(圖1),在解碼 過程中,使用解密參數(shù)獲得與加密一致的索引序列,從而進行相應的Huffman反編碼,獲 得初始數(shù)據(jù)(圖2)。在沒有密鑰的情況下,受保護數(shù)字內(nèi)容的接收者無法得知解碼用各 Huffman樹加密擾動的方式,因而無法對待解碼數(shù)據(jù)進行Huffinan反編碼,從而實現(xiàn)了對 數(shù)字內(nèi)容的保護。
本發(fā)明提出的加密的Huffman編碼方法在數(shù)字內(nèi)容保護的應用中主要包括以下步驟 (如無特殊說明,以下步驟均由計算機和電子設備的軟硬件執(zhí)行)
(1) 生成和分發(fā)密鑰s。生成偽隨機索引序列發(fā)生器的初值(亦稱種子)作為數(shù)字內(nèi)容保 護和解保護密鑰,將它分發(fā)給數(shù)字內(nèi)容的保護方和解保護方。
(2) 輸入密鑰,選擇合適的方法義(.),比如Logistics混沌序列生成器,或者AES分組
密碼算法,生成長度為m的用于加密的偽隨機索引序列段M^X(",基于w決定對
Huffman樹進行加密擾動的不同方式,
其中,上述兩種方法的原理簡述如下
* Logistics混純序列生成器 Ae(O,l), ZeZ,初值!'""e(O,l)
偽隨機索引序列尸—A),A,/V…),A =(丄,x 1000000)%256, A e
(一e)
具體的編碼流程如下(圖3):
a) 由待保護數(shù)字內(nèi)容文件讀入數(shù)據(jù),根據(jù)數(shù)字內(nèi)容的不同形式(文本、圖片、音 頻、視頻等),對當前緩沖區(qū)進行填充;
b) 根據(jù)數(shù)字內(nèi)容的不同形式(文本、圖片、音頻、視頻等)應用其對應的Huffman 編碼過程之前的標準編碼過程,得到Huffman編碼的待編碼單元序列;
c) 對待編碼單元序列進行Huffman編碼,基于偽隨機索引序列段vv ,在對每個待 編碼單元進行編碼前,對Huffinan樹進行不同方式的加密擾動,利用加密擾動過的Huffman 樹對當前待編碼單元進行編碼。最終Huffman編碼后的數(shù)據(jù)寫入要輸出的目標數(shù)字內(nèi)容文 件或傳入流媒體中,其間根據(jù)加密強度要求對偽隨機索引序列段進行不同頻率的更新 vr = ^T(w)。
d) 完成當前緩沖區(qū)的編碼后,如果沒有編碼完畢,返回到步驟a)繼續(xù)進行,否則 編碼完成。
(3) 數(shù)字內(nèi)容的分發(fā)。將通過以上方法編碼加密后的數(shù)字內(nèi)容通過網(wǎng)絡或介質分發(fā)給 合法用戶,后者在前面的(l)中已經(jīng)獲得了解保護所需的密鑰。
(4) 用密鑰恢復出偽隨機索引序列對編碼單元進行反擾動,首先根據(jù)解密密鑰s生成相 應的偽隨機索引序列段w-X^;),典型的解密步驟如下(圖4):
a) 由待解碼數(shù)字內(nèi)容文件讀入數(shù)據(jù),根據(jù)數(shù)字內(nèi)容不同格式,對當前緩沖區(qū)進行 填充;
b) 基于偽隨機索引序列段w對Huffman樹(由編碼器預先定義)應用和加密過程 相同的擾動,利用擾動后的Huffman樹對當前待解碼單元進行反Huffman編碼,從而得到 Huffinan編碼前的數(shù)據(jù),其間根據(jù)對偽隨機索引序列段進行相應頻率的更新w-X(w);
c) 根據(jù)數(shù)字內(nèi)容的具體形式應用除了 Huffman以外的反編碼過程;
d) 如果解碼完成,則結束,否則回到步驟a)繼續(xù)執(zhí)行。 上述使用的數(shù)字內(nèi)容保護方法對相關技術領域的有益效果包括
(1)對數(shù)字內(nèi)容的保護執(zhí)行效率高。保護和解保護操作分別是正常編解碼過程中的兩 個必要環(huán)節(jié)(熵編碼、熵編碼解碼),本發(fā)明在原編碼過程中引入的計算代價主要來源于-a)生成和更新偽隨機索引序列;b)對Huffman樹進行加密擾動。從下面的具體實施方式
中
9可以看出,對Huffman樹的隨機擾動僅僅需要相應的查找過程和簡單的比特移位異或操作, 這些開銷在底層操作中是很小的。為了更直觀地說明問題,發(fā)明人選擇了改進的AES加密 算法、DCT系數(shù)置亂算法、 一般MHT算法這幾個具有代表性的視頻保護加密算法與本發(fā) 明的算法進行比對試驗。實驗分別利用各種加密方法對不同的視頻文件進行了加解密操 作,實驗的部分結果如圖10所示。結果顯示本發(fā)明編碼方法平均編碼時間約為正常編 碼時間的113.8%,高于MHT方案的101.4%,優(yōu)于AES方案的197.3Q/。以及DCT置亂算 法的122.6%,。從試驗結果來看,本方案在提升了MHT方案性能的同時,引入的有限計 算代價是可以接受的。
特別地,本發(fā)明方法和MHT方案相比,在極大增加了密鑰空間的同時減小了多 Huffman樹的存儲空間,對每個編碼單元對應編碼的擾動方式多樣,每種擾動的概率均等, 沒有明顯的統(tǒng)計偏向,能有效抵抗差分攻擊與同步攻擊。另一方面,攻擊者無法通過己知 的一些名密文對對加密密鑰進行猜測,使得選擇明文攻擊成為不可能。該方法的特點是保
護過程和編碼過程完全結合,運算代價小,安全性高,加密過程對編碼長度沒有影響,保 護效果能夠很好地滿足大量的應用需求。
(2) 可選擇的加密強度。為了適用于不同的加密強度要求,本發(fā)明提供了兩種生成和 更新偽隨機索引序列的方式Logistics混沌序列以及AES分組密碼算法。Logistics混沌序 列生成代價相對較小,適合于一般安全性要求下的加密操作;AES分組算法生成偽隨機索 引序列的方式代價稍大,但是安全性更高。通過實驗,發(fā)明人發(fā)現(xiàn),應用AES分組密碼算 法來對偽隨機索引序列定期更新的方法計算代價約為應用Logistics混沌序列發(fā)生器對偽隨 機索引序列進行定時更新方法的102.7%(這個數(shù)值與偽隨機索引序列的更新頻率有關,更 新頻率越快,AES方法的相對計算代價越大)。需要說明的是,偽隨機索引序列生成器的形 式多種多樣,本發(fā)明可根據(jù)其最終的用途選擇適合的偽隨機索引序列生成方法,并不局限 于上述兩種。
(3) 安全性高,改進了原有MHT方法的缺陷。前面提到的MHT方法之所以容易受到 選擇明文攻擊,是因為通過分析明文和密文對,可以比較容易得到這段視頻數(shù)據(jù)隨機選擇 的Huffman編碼表順序。通過對MHT方法的分析,發(fā)明人發(fā)現(xiàn)在多重統(tǒng)計模型意義下, 固定編碼用可選擇參數(shù)模型以及釆用長度相對短的固定選擇密鑰的方法是不安全的。在有 針對性的攻擊下,有關信息會不可避免地發(fā)生泄露。但是,對于本發(fā)明基于偽隨機Huffman 編碼加密方案,即使攻擊者獲得了初始Huffman編碼樹,由于每一次編碼使用的都是經(jīng)過 不同方式擾動的Huffman樹,攻擊者于是無法從已知名密文對中把握它們之間真正的相對關系。由下面的"方案具體實施方式
"可以看出,對于原Huffinan編碼長度為iV的碼字,利 用加密擾動以后的Huffman樹進行編碼,其輸出的可能形式會有2^種(對于Huffman編碼 樹的隨機擾動會對每一編碼位產(chǎn)生可能的影響,例如某編碼單元對應的普通Huffman編碼 為0001,如果對Huffman樹編號為2和4的節(jié)點進行擾動,則其輸出的編碼則為0111)。 由于擾動方式的選擇基于偽隨機索引序列,每種擾動的概率均等,沒有明顯的統(tǒng)計偏向, 這樣對于不知道密鑰的攻擊者而言,得到的碼流則是完全沒有意義的隨機比特流。通過已 知有限的名密文對無法對加密密鑰或加密方法進行有效推斷,攻擊者難以通過已知的部分 明密文對對加密密鑰進行猜測,從而使得選擇明文攻擊成為不可行。
(4) 壓縮率不變。通過下面的"方案具體實施方式
"可以看出,本發(fā)明對Huffman樹的 加密擾動是基于特定Huffinan樹編碼節(jié)點進行的,擾動過程是在同一編碼層面上完成的。 對特定編碼單元使用加密擾動前后的Huffman樹進行編碼,其編碼長度不受影響,故此本 發(fā)明對Huffman編碼的壓縮性能沒有影響,圖11給出應用了應用本發(fā)明的mp4視頻編碼 的比對結果。
(5) 存儲開銷降低。對于MHT方案,由于其基于多個Huffman樹進行選擇編碼,那 么需要對多個Huffman樹的相關信息進行維護存儲。而本發(fā)明提出的方法基于對標準 Huffman樹進行不同方式的加密擾動,由于無需對多個Huffman編碼表進行存儲,故而減 小了算法所需的存儲空間。
圖1是本發(fā)明數(shù)字內(nèi)容編碼和保護示意圖2是本發(fā)明受保護數(shù)字內(nèi)容解碼示意圖3是本發(fā)明數(shù)字內(nèi)容編碼和保護處理流程圖4是本發(fā)明受保護數(shù)字內(nèi)容解碼處理流程圖5是典型的用于Huffman編碼的Huffman樹示意圖6是對編碼節(jié)點進行編號后的Huffman樹示意圖7是根據(jù)偽隨機索引序列給每個編碼單元分配加密擾動索引示意圖,其中 /二(…[1:5],[4:8,1,5,6],[2:9,3]…〉;
圖8是對Huffman樹編碼節(jié)點進行加密擾動的示意圖,其中/MD議=[2:5,8]; 圖9是視頻數(shù)據(jù)保護的效果示意圖,圖9a經(jīng)正常解碼獲得的,圖9b經(jīng)錯誤解碼獲得;圖IO是本發(fā)明方案與其他數(shù)字內(nèi)容保護方案對編碼代價影響的實驗結果示意圖; 圖11是本發(fā)明方案與其他數(shù)字內(nèi)容保護方案對編碼長度影響的實驗結果示意圖。
具體實施例方式
下面結合附圖和具體實施例對本發(fā)明方法作進一步描述。
以下結合圖5 9,通過與一般Huffman編碼過程的對比,描述一個完整的偽隨機 Huffinan編碼加密過程。
圖5所示是一棵典型的Huffman樹,為了方便說明,假定待編碼編碼單元序列為 M = [5,10,2,6,9], 一般的Huffman編碼過程詳述如下
根據(jù)Huffman編碼樹查找各編碼單元對應的碼字5對應的碼字為000111, 10對應的 為00000001, 2對應100, 6對應000110, 9對應0000001,則編碼后的比特流為 000111000000011000001100000001。
本實施例采用的方案對各編碼單元對應的Huffman編碼樹進行偽隨機加密擾動,然后 基于加密擾動后的Huffman樹對當前編碼單元進行編碼,具體操作細節(jié)如下
1) 對標準Huffman樹各編碼節(jié)點進行編號,^ e{0,l,2...W},其中W+l為編碼節(jié)點個 數(shù),編號后的Huffman樹如圖6所示。
2) 用加密密鑰作為初值生成偽隨機索引序列(生成的方式可以是Logistics混沌序列 生成器或者是AES分組加密算法),基于偽隨機索引序列給每個編碼單元分配相應的擾動 索弓I /7VDEA^ = [A^/m: /"cfej^, /wfeci2... /"cfejcWwm〗,/"tfex,) e {0, 1,2…〃}, 擾動索引
的第一個數(shù)值A^附指示對Huffman樹進行加密擾動的節(jié)點個數(shù),/"A 具體指示
需要進行加密擾動的節(jié)點編號(如圖7所示)。
3) 根據(jù)擾動索引對Huffman編碼樹進行相應的加密擾動。擾動方式如下根據(jù)索 引序列找到需要進行擾動的編碼節(jié)點,對其下的"O"和'T'進行互換。例如某編碼單元對應 的擾動索引為[2:5,8],則說明要對Huffinan樹的兩個節(jié)點進行擾動,這兩個節(jié)點編號分別 為5和8,擾動后的Huffman樹見圖8,然后該編碼單元就使用擾動過的Huffinan樹進行 編碼,例如當前編碼單元是8,對應原Huffman編碼為000001,則使用經(jīng)過加密擾動的 Huffman樹進行編碼后輸出000101 。
4) 按照上述加密擾動方式,假設待編碼單元序列還是M-[5,10,2,6,9],相應的偽隨 機擾動索引序列/ = {[2:4,5],[3:2,6,11],[1:1],[5:1,3,3,4,7,8],[2:6,10]},應用加密后,5對應的編碼為001011, 10對應的編碼01000000, 2對應的編碼110, 6對應001111, 9對應 0000000,編碼后相應輸出的比特流為001011010000001100011110000000。
從加擾的方式可以看出,擾動前后各編碼單元所處的編碼層次沒有發(fā)生變化,也就是
加密前后數(shù)據(jù)編碼長度沒有發(fā)生變化,很好地保持了 Huffman編碼的壓縮性能。另一方面 由于加密擾動是基于標準Huffman樹,于是節(jié)省了多Huffman樹的存儲空間。從加密效果 來看,原先編碼長度為iV的碼字,加密后的碼字有2"種可能的形式,這大大增加了同步攻 擊的難度,而且由于擾動方式的選擇基于偽隨機索引序列,通過已知有限的名密文對無法 對加密密鑰或加密方法進行有效推斷,從而使得選擇明文攻擊無法實現(xiàn)。
權利要求
1、一種加密的Huffman編碼方法,其特征在于,包括下列步驟a)由待編碼內(nèi)容獲得編碼單元序列;b)對于各個編碼單元,對Huffman編碼樹中的部分編碼節(jié)點進行加密擾動,并根據(jù)擾動后的Huffman編碼樹獲得該編碼單元的碼字;c)由所述碼字依次組合得到編碼結果。
2、 如權利要求1所述的Huffman編碼方法,其特征在于,所述Huffman編碼樹由編碼器在編碼之前建立。
3、 如權利要求l所述的Huffinan編碼方法,其特征在于,通過下述方法進行加密擾動在Huffman編碼樹中將編碼節(jié)點下的"0"和"1"互換。
4、 如權利要求3所述的Huffman編碼方法,其特征在于,通過下述方法確定所述Huffman編碼樹中進行加密擾動的部分編碼節(jié)點以加密密鑰作為初值生成偽隨機索引序列;所述全部或部分編碼單元中的每一個編碼單元對應一個偽隨機索引;所述偽隨機索引確定所述Huffman編碼樹中進行加密擾動的編碼節(jié)點。
5、 如權利要求4所述的Huffman編碼方法,其特征在于,所述偽隨機索引序列中的偽隨機索引符合下式其中,/iVD五《表示所述偽隨機索引,7W^表示進行加密擾動的節(jié)點個數(shù),/"&;^表示進行加密擾動的節(jié)點編號,各個節(jié)點編號之間不一定連續(xù)。
6、 如權利要求4所述的Huffman編碼方法,其特征在于,通過Logistics混沌序列生成器或者AES分組加密算法生成所述偽隨機索引序列。
7、 如權利要求l所述的Huffman編碼方法,其特征在于,所述方法用于文本、圖像、視頻和/或音頻型數(shù)字內(nèi)容的加密保護。
8、如權利要求1-7任意一項所述的Huffman編碼方法的解碼方法,其特征在于,包括下列步驟a) 對于所述編碼結果中的各個碼字,對所述Huffman編碼樹進行和編碼過程相同的 加密擾動,并根據(jù)擾動后的Huffman編碼樹獲得該碼字的編碼單元;b) 由所述編碼單元依次組合得到編碼前的內(nèi)容。
全文摘要
本發(fā)明公開了一種加密的Huffman編碼方法及其解碼方法,屬于信息安全和數(shù)字內(nèi)容保護技術領域。本發(fā)明編碼方法包括a)由待編碼內(nèi)容獲得編碼單元序列;b)對于各個編碼單元,對Huffman編碼樹中的部分編碼節(jié)點進行加密擾動,并根據(jù)擾動后的Huffman編碼樹獲得該編碼單元的碼字;c)由所述碼字依次組合得到編碼結果。本發(fā)明解碼方法包括a)對于所述編碼結果中的各個碼字,對所述Huffman編碼樹進行和編碼過程相同的加密擾動,并根據(jù)擾動后的Huffman編碼樹獲得該碼字的編碼單元;b)由所述編碼單元依次組合得到編碼前的內(nèi)容。本發(fā)明方法可用于數(shù)字內(nèi)容,特別是文本、圖片、音頻、視頻等的保護;能夠有效抵抗選擇明文攻擊,加密代價小,可保持編碼長度不變,可無縫嵌入壓縮編碼過程。
文檔編號H04L9/00GK101465724SQ200910076038
公開日2009年6月24日 申請日期2009年1月6日 優(yōu)先權日2009年1月6日
發(fā)明者馮登國, 紜 曹, 趙險峰 申請人:中國科學院軟件研究所