李曉舉 ,忽海娜 ,劉 麗
(1.鄭州航空工業(yè)管理學(xué)院 鄭州 450015;2.許昌學(xué)院網(wǎng)絡(luò)管理中心 許昌 461000)
H.264是2003年3月發(fā)布的目前最新的國際視頻編碼標準。H.264的編碼模型與以往的標準沒有本質(zhì)的改變,但它采用了1/8精度運動估計、4×4整數(shù)變換、CAVLC和CABAC等新技術(shù),使得壓縮效率和圖像播放質(zhì)量有了顯著提高。它的應(yīng)用范圍非常廣闊,既可用于視頻會議、可視電話等即時通信方面,又可用于數(shù)字電視廣播、數(shù)字存儲、流媒體等方面。它具有的出色性能,吸引了越來越多人的關(guān)注。
隨著視頻應(yīng)用的日益廣泛,視頻的安全性變得越來越重要。基于以往的標準,人們研究了許多加密方法:有用傳統(tǒng)密碼技術(shù)進行全部加密的方法,如VEA算法[1]、CSC算法[2],這類算法雖然有較高的安全性并且不改變壓縮比,但是計算復(fù)雜度很高;有對DCT系數(shù)進行加密的方法,如分段置亂算法[3],這類算法雖然有較低的計算復(fù)雜度,但是安全性低于全部加密的算法,壓縮比也有所改變;有在熵編碼過程中進行加密的方法,如多狀態(tài)索引方法[4],這類算法雖然計算復(fù)雜度低,對壓縮比的影響較小,但在已知明文攻擊情況下是不安全的。這些方法各有優(yōu)缺點,而且它們大多是針對MPEG標準的,因此研究適合H.264特點的安全加密技術(shù)成為目前研究的熱點。
針對現(xiàn)有視頻加密算法的不足,基于H.264的CABAC熵編碼新技術(shù),本文提出一種與CABAC熵編碼過程相結(jié)合的安全、高效的視頻加密方法。
CABAC的編碼流程如圖1所示。CABAC使用了399種上下文模型,一種直觀的加密思路就是對上下文模型索引號ctxIdx進行加密,但這種方式的明密文空間只有399,極易被攻破?;蛘呶覀兛梢詫@些模型進行置亂,置亂空間約達399!,但是通過仔細分析可知,CABAC中每種語法元素分配的上下文模型是有限的,不同的語法元素需要分配特定范圍內(nèi)的ctxIdx,這大大減小了實際的置亂空間。進一步分析又可知,因為語法元素依賴于某些特定的上下文模型,對上下文模型索引值的簡單加密和對上下文模型的置亂后將導(dǎo)致符合H.264標準的解碼器不能正確解碼,顯然這兩種加密方式都是不可行的,所以本文提出的CABAC加密方案主要在二進制化和算術(shù)編碼兩個步驟中進行加密處理。
CABAC中的二進制化主要采用了一元編碼(U)、截斷一元編碼(TU)、一元及k階指數(shù)哥倫布編碼(UEGk)、定長編碼 (FL)4種基本編碼方案和通過2個基本編碼方案分別作前綴和后綴進行串接的串接編碼方案,因此只要對基本編碼方案進行加密就可以了。
(1)對一元編碼(U)的加密
一元編碼主要用于二進制化語法元素ref_idx_l0和ref_idx_l1,生成的比特串經(jīng)由圖1中的普通編碼路徑進行算術(shù)編碼(RCM)。因為ref_idx_l0和ref_idx_l1表示運動估計時的參考幀索引號,所以對一元編碼的加密將影響宏塊的幀間預(yù)測。一元編碼將值為C(C≥0)的語法元素用長度為C+1的二進制碼表示,碼位小于C的位用“1”表示,第C位用“0”表示,即前面連續(xù) C 個“1”,后面跟一個“0”,如“3”被編碼為“1110”。
對一元編碼的加密方式如下:
C′i為第 i次一元編碼加密時生成的密文值,C′i必須被限定在參考幀列表的最大索引號以內(nèi);EU為加密函數(shù);Ci-1′為第i-1次一元編碼加密時生成的密文值;Ci為第i次一元編碼加密時的語法元素值;Keyi為加密密鑰。
(2)截斷一元編碼(TU)的加密
截斷一元編碼主要用于二進制化語法元素intra_chroma_pred_mode,生成的比特串經(jīng)由圖1中的普通編碼路徑進行算術(shù)編碼。對截斷一元編碼的加密將影響色度塊預(yù)測模式,從而影響色度塊的預(yù)測。截斷一元編碼在一元編碼的基礎(chǔ)上設(shè)定了一個閾值cMax,當語法元素值C小于cMax時,編碼方式與一元編碼相同;當語法元素值C等于cMax時,所有碼位全用“1”表示,cMax為該語法元素所能取得的最大值。
對截斷一元編碼的加密方式如下:
C′i為第i次截斷一元編碼加密時生成的密文值,0≤C′i≤cMax;ETU為加密函數(shù);Ci-1′為第 i-1 次截斷一元編碼加密時生成的密文值;Ci為第i次截斷一元編碼加密時的語法元素值,0≤Ci≤cMax;Keyi為加密密鑰。
(3)對一元及k階指數(shù)哥倫布編碼(UEGk)的加密
一元及k階指數(shù)哥倫布編碼主要用于二進制化語法元素運動矢量差mvd_lx和殘差系數(shù)絕對值減1后的值coeff_abs_level_minus1,其二進制碼由前綴和后綴構(gòu)成(有些情況下沒有后綴)。前綴采用截斷一元編碼方式,其碼形為 M 個“1”后跟一個“0”,其中 M=Floor(log2(S/2k+1)),S 為語法元素的值,生成的比特串經(jīng)由圖1中的普通編碼路徑進行算術(shù)編碼;后綴INFO由M個比特構(gòu)成,INFO=S-2k(2M-1),生成的比特串經(jīng)由圖1中的輔助編碼路徑進行算術(shù)編碼。在運動矢量的編碼中,TU碼的閾值cMax等于9,指數(shù)k為3;在殘差系數(shù)的編碼中,TU碼的閾值cMax等于 14,指數(shù) k為 0。
對一元及k階指數(shù)哥倫布編碼加密影響的是運動矢量或殘差系數(shù)。當語法元素值小于cMax時,按截斷一元編碼方式加密;當語法元素值大于等于cMax時,只對后綴進行加密,加密方式如下:
INFOi′為第i次UEGk加密時生成的密文串,其長度為 Mi;EUEGk為加 密函數(shù) ;INFOi-1為 第 i-1 次 UEGk 加密時生成的密文串;INFOi為第i次UEGk加密時的定長比特串;Keyi為加密密鑰。
(4)對定長編碼(FL)的加密
定長編碼用于二進制化4×4亮度塊的幀內(nèi)預(yù)測模式和殘差系數(shù)符號等語法元素,其中殘差系數(shù)符號的比特串經(jīng)由圖1中的輔助編碼路徑進行算術(shù)編碼,其他語法元素的比特串經(jīng)由圖1中的普通編碼路徑進行算術(shù)編碼。定長碼的長度 L=Ceil(log2(cMax+1)),其中 cMax的值與語法元素有關(guān)。
對定長編碼的加密如下:
bitStri′為第i次定長編碼加密時生成的L比特密文串;EFL為加密函數(shù);bitStri-1′為第 i-1次定長編碼加密時生成的密文串;bitStri為第i次定長編碼加密時的定長比特串;Keyi為加密密鑰。
(5)對串接編碼的加密
串接碼由基本編碼方式串接而成,包含前綴和后綴,前綴經(jīng)由圖1中的普通編碼路徑進行算術(shù)編碼,后綴經(jīng)由圖1中的輔助編碼路徑進行算術(shù)編碼。對前綴和后綴分別使用與前述4種基本編碼相對應(yīng)的加密方式進行加密。
4個加密函數(shù) EU、ETU、EFL和 EUEGk采用了密文反饋模式。加密函數(shù)的具體操作可以根據(jù)實際情況采用不同的方式,比如進行置換或按位異或操作。密鑰可以是流密鑰,或每個函數(shù)采用特殊的密鑰生成算法。
以上5種加密分別對應(yīng)了H.264中的不同語法元素,而各語法元素的重要性是不同的。如果有選擇地使用上述5個加密操作,則可以分成若干個加密級別。其中對一元及k階指數(shù)哥倫布編碼(UEGk)的加密關(guān)系到運動矢量和殘差系數(shù),因而這個加密操作最為重要。由于人眼對色度不是很敏感,因此色度預(yù)測模式加密不是很重要。
本文實驗中的加密函數(shù)EU、ETU、EFL和EUEGk均采用簡單的與明文和密鑰進行等比特異或操作的方式,密鑰統(tǒng)一由流密鑰提供。F-FCSR是歐洲ECRYPT(European network of excellence for cryptology)流密碼計劃征集到的候選算法之一,該算法的輸入密鑰為128 bit,序列周期可達2128,具有很好的性能和較高的安全性,目前已經(jīng)進入流密碼計劃的第三階段的評估。本文采用F-FCSR-H流密碼算法作為流密鑰的生成算法,加密算法嵌入在JM12.0測試模型[5]里。實驗所用計算機平臺為:Intel PIII800E CPU,256 Mbyte SDRAM,Windows XP操作系統(tǒng),VC6.0。實驗所用標準測試視頻序列為foreman.qcif(176×144)和container.qcif(176×144)。
在圖2中,(a)所示為foreman序列加密前的第一幀圖像,(b)所示為 foreman序列加密后的第一幀圖像,(c)所示為 container序列加密前的第一幀圖像,(d)所示為container序列加密后的第一幀圖像。從圖像來看,加密后的圖像完全不可辨認。
(1)計算復(fù)雜度
設(shè)視頻幀寬度為W,高度為H。每個視頻幀有W×H/(16×16)個亮度宏塊和 1/2×W×H/(8×8)個色度塊。對于I幀,全部采用幀內(nèi)預(yù)測,需要進行 W×H/(16×16)×16 個亮度預(yù)測模式的加密、1/2×W×H/(8×8)×4 個色度預(yù)測模式的加密和 W×H/(16×16)×256+1/2×W×H/(8×8)×64 個殘差系數(shù)的加密。對于 P、B 幀,還需要對 W×H/(16×16)×16 個運動矢量進行加密。如果采用異或方式進行,則加密操作是很快的。
(2)安全性
對于密鑰分析,選用高度安全的流密鑰算法完全可以保證安全性。再加上加密操作采用了密文反饋模式,大大增強了抗分析攻擊的能力。對于窮舉攻擊,對每個幀內(nèi)亮度宏塊需要嘗試 9 種預(yù)測模式,共需要進行次嘗試,對于每個幀內(nèi)色度塊需要嘗試4種預(yù)測模式,共需要進行次嘗試。可以看出,窮舉計算量非常大因此本方案具有很高的安全性。
(3)編碼壓縮性能
分析各級的加密情況可知,對一元及k階指數(shù)哥倫布編碼和定長編碼的加密不會增加碼長,對一元編碼和截斷一元編碼可能減少碼長或增加碼長,但增加量是非常小的,因此該方案對壓縮效率幾乎沒有影響。
(4)數(shù)據(jù)的可操作性
本方案加密后的碼流仍然符合H.264標準,故加密后的碼流的數(shù)據(jù)操作性非常強,可以正常解碼播放。
CABAC是H.264的另一種熵編碼方法,它的壓縮效率比CAVLC要好。本文提出的CABAC加密方案可以根據(jù)實際應(yīng)用選擇不同部分的數(shù)據(jù)進行加密,因而加密操作可分為若干個級別。加密函數(shù)具有密文反饋功能,大大提高了加密的安全性。CABAC加密方案與CAVLC加密方案構(gòu)成了基于H.264熵編碼的兩個重要加密方案,覆蓋了H.264的全部應(yīng)用。
1 Qao L,Nahrstedt K.A new algorithm for MPEG video encryption.In:Proceeding of the First International Conference on Imaging Science,Systems and Technology(CISST’97),LasVegas,Nevada,1997:21~29
2 Chiaraluce F,Ciccarelli L,Gambi E,et al.A new chaotic algorithm for video encryption.IEEE Transactions on Consumer Electronics,2002,48(4):838~844
3 Tosum A S,Feng Wu-Chi.Efficient multi-layer coding and encryption of MPEG video stream.In:IEEE International Conference on Multimedia and Expo,New York,2000
4 Wu Chunping,Kuo C J.Efficient multimedia encryption via entropy codec design.In:SPIE International Symposium on Electronic Imaging 2001,San Jose,CA,USA,2001
5 H.264/AVC joint model 12 (JM-12)reference software,http://iphome.hhi.de/suehring/tml/,2007