加密變長碼字并保持視頻格式的加密方案
視頻加密通常要求滿足實時性和保持碼流格式不變。而直接加密視頻碼流中的DCT系數(shù)和MV變長碼字會產生非法變長碼字從而破壞碼流格式,不利于視頻通信的正常應用。針對這種矛盾,我們提出了一種使用合法碼字隨機置換碼流中DCT和MV變長碼字以達到對其加密的保密方法,從而可以在加密變長碼字的同時保持碼流格式不變。將此方法同加密定長碼字結合起來使用可以構成一個完整的視頻加密方案。
一、現(xiàn)有保持視頻格式的加密方案
1、Zig-zag置亂算法
用一個隨機的置亂序列置亂DCT系數(shù)的Zig-Zag掃描順序,從而達到加密視頻圖像的效果,它被認為不夠安全,另外這種視頻文件加密方法顯著增加了視頻碼流大小,減小了視頻編碼的壓縮比。
2、加密符號位
包括僅加密I幀的DCT符號位的VEA算法;除了I幀還要加密PB幀的DCT符號位和運動矢量MV的符號位的MVEA算法;使用分組密碼算法對DCT系數(shù)或運動矢量MV符號位進行加密的RVEA算法,它對每個宏塊限定最多加密64個符號位。加密符號位的方法計算量小,但是僅僅加密上述符號位不夠安全,對于加密了上述全部符號位的視頻碼流,實驗表明,如果將幀內塊DC符號位全部設置為某個常量(如128),即使其它DCT和MV符號位不解密,由于DC含有像素塊的主要能量信息,仍可以看出圖像的大致輪廓。
另外還有兩種能夠保持視頻碼流格式不變的加密方法:
(1)將碼表中變長碼字與定長序號——映射將視頻碼流中的每個變長碼字對應的序號組合起來使用公開密鑰算法或者對稱密鑰算法進行加密,接著將加密后的序號通過碼表映射成其它變長碼字,然后將這些變長碼字代替明文視頻中原始碼字就得到了被加密后的碼流。作者僅給出了運動矢量變長碼字加密的具體方法。這種方法采用公開密鑰算法或對稱密鑰算法,保密性較好,但由于序號段數(shù)據(jù)量較大,其計算復雜度較高;
(2)在保持結構信息(如起始碼和標志字)不變的前提下,從碼流空間位置上置亂壓縮后碼流的基本數(shù)據(jù)單元。置亂單元可以是碼字、8×8塊或者宏塊。有時一個包可能只有幾個宏塊,那么以塊或宏塊為基本單元置亂時,置亂空間將非常有限,不利于安全性。
二、一種加密變長碼字并保持格式不變的加密方案
基于現(xiàn)有的視頻加密方案,特別是對運動矢量變長碼字序號加密方法的啟示下,本文提出了一種計算復雜度較低的變長碼字的加密方法。整個方案的基本框架主要由兩部分組成:定長碼字加密和變長碼字加密。定長碼字包括幀內塊DC碼字(INTRADC)、DCT系數(shù)符號位(TCOEF_sign)和MV的符號位(MV_sign)。變長碼字則包括DCT系數(shù)碼字(TCOEF_code)和運動矢量碼字(MV_code)。其中定長碼字加密采用某種分組密碼算法(如AES或IDEA)加密。變長碼字加密的過程需要定長碼字的參與,以利用定長碼字的隨機性來加密,以下是其加密思路和具體實現(xiàn)方法。
事先對不同長度變長碼字預先定義不同的替換表,替換表中都是協(xié)議標準中規(guī)定的合法碼字,用來采用某種方式隨機替換碼流中的變長碼字。假設替換表中有N個碼字(2n_=_N),則表中每個碼字可以分配一個長度為n(bit)的定長序號index。替換表中的碼字長度需要等于或盡量接近被替換碼字的長度,這樣可以減少碼字替換引起的對增加碼流大小的影響。例如可以將所有的2bits、3bits和4bits的TCOEF碼字組成一個替換表。這樣對于碼流中所有2~4bits長度的變長碼字code,可以通過查表得到它在該替換表中的序號index。如果改變該序號得到index’,也就在替換表中對應了一個相等或相近長度的變長碼字code’。而由于序號是定長的,對其直接加密得到任意一個index’也都是有效的(對應一個符合標準的有效碼字),因此可以通過index’對應的一個任意碼字code’來替換碼流中的原始變長碼字,從而達到加密的目的。
本方案提出的視頻加密原理如圖1所示。

加密步驟如下:
(1)從視頻碼流中逐一提取定長碼字組成數(shù)據(jù)段F和變長碼字組成數(shù)據(jù)段V;
(2)將V中變長碼字查找替換表一一映射成序號index并組合成序號數(shù)據(jù)段I;
(3)將序號數(shù)據(jù)段I和定長碼字數(shù)據(jù)段F異或,得到序號數(shù)據(jù)段I’;當F字段長度小于I長度時,在F后循環(huán)連接F字段;
(4)將新序號數(shù)據(jù)段I’中序號index’一一映射成變長碼字code’得到數(shù)據(jù)段V’;
(5)對定長碼字數(shù)據(jù)段F使用分組密碼算法(AES/IDEA)加密得到F’;
(6)將加密后的定長碼字和新的變長碼字一一放回碼流中相應位置即得到密文視頻碼流。
本加密方案具體的數(shù)據(jù)流程如圖2所示。解密則是相反的過程。

需要說明的是,使用本方案設計替換表時為保證碼字替換后碼流格式不變需要注意一些實際問題。以H.263為例,TCOEF的變長碼字是一個(LAST, RUN, LEVEL)的組合。LAST為0表示這個碼字所在塊中還有非零系數(shù),為1表示這個碼字就是所在塊中的最后一個非零系數(shù),即為該塊的邊界。RUN表示該碼字前連續(xù)零系數(shù)的個數(shù),一個塊中所有碼字的RUN的總和不應該超過64。LEVEL是該碼字表示的非零系數(shù)的大小。如果LAST為1的碼字替換了LAST為0的碼字,那么解碼時會誤判為塊邊界,造成碼流格式解碼出錯。
另外,如果將具有不同RUN值的碼字相互替換,則會出現(xiàn)一個塊中RUN的總和大于64的情況,同樣會解碼出錯。因此設計替換表時,需要將不同LAST和RUN的碼字放在不同的替換表中。對于LAST為1的碼字也可以采取忽略的方法,即不予以進行替換加密。對于MV碼字則不存在上述問題。另外設計替換表時需要盡量使碼表中的碼字個數(shù)N為2的冪(2n = N),如果一些變長碼字的某個集合中碼字個數(shù)N不是2的整數(shù)次冪,那么可以將該集合劃分成幾個符合上述要求的替換表。例如可以將一個6個碼字的集合劃分成2個替換表,一個含4個碼字,另一個含2個碼字。
三、試驗與結果分析
本方案在H.263的參考源碼TMN8上實現(xiàn)了以下4種方案:
(1)RVEA方案,即對每個宏塊最多加密64個MV和TCOEF符號位;
(2)使用本文提出的方法僅加密變長碼字(VLC);
(3)僅加密定長碼字(FLC),包括幀內塊DC碼字、TCOEF和MV符號位;
(4)本文提出的完整方案即同時加密VLC和FLC。從圖3和圖4中可以看出,

僅僅加密VLC是不足以置亂或加密整個視頻圖像的;RVEA和加密FLC的加密效果較好;VLC和FLC同時加密可以置亂整個視頻圖像,看不出任何內容信息。
從加密后視覺效果上看,RVEA或僅加密FLC和本方案差別不大,但實際上由于本方案加密了代表視頻內容主要信息的VLC碼字,因此實質上其保密性相對僅加密FLC或RVEA要好得多。例如根據(jù)DCT系數(shù)分布的特性,容易找出密文碼流中TCOEF和MV符號的位置。如果攻擊者將這些符號位全部設為0或1,如圖5和圖6所示。
可以看出同時加密FLC和VLC按上述方法被攻擊后的視頻圖像比僅加密FLC被攻擊后的視頻顯露的信息要少。也就是說從攻擊者的角度而言,本加密方案比僅加密FLC和RVEA加密或屏蔽了更多的信息。
除觀察加密后的視頻視覺效果外,衡量視頻加密方案性能的3個主要尺度是:保密性,加密速度和對碼流大小的影響。在保密性方面,首先由于對定長碼字和變長碼字都加密了,因此無論從加密的視頻顯示上還是視頻內容的安全性上都具有較高的保密性。另一方面從攻擊者的角度來看,本加密算法的保密性主要跟針對關鍵信息采用的密碼算法的保密強度有關。如果采用國際標準的分組加密算法AES,破解視頻加密算法同破解AES算法的難度相當,而AES目前被公認是難以破解的。另外,要正確解密一幀視頻圖像需要對重建圖像內容參與主觀判斷和分析,這也大大增加了攻擊時間和難度。
對于加密速度,變長碼字加密主要使用異或操作,計算量非常小,主要計算量集中在定長碼字的分組加密上,而由于定長碼字總共占碼流的比例通常為10%左右,本方案的計算量僅相當于全部加密的約10%。表1列出了加密耗時與編碼耗時比例和解密耗時與解碼耗時比例,可以看出其加解密計算比重是比較小的,能夠保證視頻實時處理。

對于增加碼流大小的影響,一方面加密定長碼字不會影響碼流大小,因為分組加密算法不改變加密數(shù)據(jù)的長度。另一方面對于加密變長碼字,如果變長碼字替換表內碼字都是等長的則不會增加碼流大?。蝗绻鎿Q表內碼字不等長則會增加碼流。因為根據(jù)變長編碼的原理,實際碼流短碼字出現(xiàn)的頻率較高,所以替換時變長碼字大部分時候是被一個相對較長的碼字替換。在TMN8的測試表明,對不同的序列碼流大小增加的比例是變化的,但是如果設計替換表合理,增加的比例通常不會超過25%。
本文提出了一種能夠保持碼流格式不變的方法解決了視頻碼流中變長碼字加密的問題,本方法結合加密碼流中幀內塊DC、DCT和MV符號位的加密方案,可以在保密性、計算復雜度和對碼流大小影響3個方面到達一種平衡。本方案保持了碼流格式不變,密文碼流仍然可以被普通解碼器順利解碼。本加密方案的軟件實現(xiàn)僅有不到2ms的附加延時,完全可以滿足視頻編解碼的實時性要求。










