文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)01-0133-03
2003年3月發(fā)布的H.264是目前最新的視頻編碼標(biāo)準(zhǔn)。它采用了1/8精度的運動估計、4×4整數(shù)變換、CAVLC和CABAC等新技術(shù),使得壓縮效率和圖像播放質(zhì)量有了顯著提高。與以往標(biāo)準(zhǔn)相比,在相同率失真的條件下,編碼效率提高了50%左右。H.264應(yīng)用范圍非常廣闊,包括視頻會議、可視電話、會議電視等即時通信,以及數(shù)字電視廣播、數(shù)字存儲、流媒體等方面。
隨著視頻應(yīng)用的日益廣泛,視頻的安全性變得越來越重要。基于以往的標(biāo)準(zhǔn),人們研究了許多加密算法:有用傳統(tǒng)密碼技術(shù)進(jìn)行全部加密的方法,如DES算法、CSC算法和VEA算法,這類算法雖然有較高的安全性并且不改變壓縮比,但是計算復(fù)雜度很高;有對DCT系數(shù)進(jìn)行加密的方法,如分段置亂算法,這類算法雖然有較低的計算復(fù)雜度,但是安全性低于全部加密的算法,壓縮比也有所改變;有在熵編碼過程中進(jìn)行加密的方法,如多狀態(tài)索引方法,這類算法雖然計算復(fù)雜度低,對壓縮比的影響較小,但在已知明文攻擊情況下是不安全的。上述方法各有優(yōu)缺點,而且大多針對MPEG標(biāo)準(zhǔn),因此研究適合H.264特點的安全加密技術(shù)成為目前研究的熱點。
針對現(xiàn)有視頻加密算法的不足,本文提出一種基于H.264的可感知加密算法。
1 加密數(shù)據(jù)元素的分析與選取
對H.264編碼宏塊語義層進(jìn)行分析,決定提取幀內(nèi)預(yù)測模式字(Intra Prediction Mode)、運動向量差值(Motion Vector Differ_ence)和殘差系數(shù)(Residual Coefficient)三類定長語法元素(fix-length code)進(jìn)行加密操作[1]。
1.1 幀內(nèi)預(yù)測模式字
根據(jù)每個宏塊所屬片組的不同,每一個宏塊都有幾種編碼預(yù)測模式。但幀內(nèi)預(yù)測編碼是所有片組編碼類型中都支持的。對亮度像素塊而言,存在有Intra_4×4, Intra_8×8、Intra_16×16三種預(yù)測模式。Intra_4×4模式下有9種預(yù)測模式,適用于對圖像細(xì)節(jié)部分進(jìn)行編碼,Intra_16×16有4種預(yù)測模式,適用于對平坦區(qū)域進(jìn)行圖像編碼[2]。
采用Intra_4×4的編碼模式字進(jìn)行加密操作。每一個4×4塊都是通過上方和左方像素預(yù)測而來,如圖1所示,a-p為待預(yù)測像素,它利用相鄰塊中已經(jīng)解碼的A-Q像素來進(jìn)行預(yù)測。對每一個4×4塊,總共有9種模式供選擇[2],其中除了DC模式,另外8種預(yù)測模式的方向也在圖1中。
Intra_4×4的編碼預(yù)測模式總共有9種預(yù)測模式,至少需要4個bit位來進(jìn)行編碼。在H.264的標(biāo)準(zhǔn)中,利用一個“prev_ Intra_4×4_pred_mode”字段來排除一種預(yù)測方式,用另外3個bit位來表示余下的8種預(yù)測模式。因此,只對后3個bit位進(jìn)行加密擾亂,這樣的加密過程中,不會影響到其他字段,也不會產(chǎn)生額外的碼流。
1.2 運動向量差值
如圖2所示,在P幀或B幀中,每個宏塊(16×16像素)可以有4種方式來進(jìn)行分割:16×16、8×16、16×8、8×8。如圖2(d)是采用8×8模式,分為4個子宏塊(8×8像素)。每個字宏塊可以進(jìn)一步進(jìn)行分割:8×8、4×8、8×4、4×4。
每一個分區(qū)或者子宏塊都有一個單獨的運動向量MV(Motion Vector),用于引用前面參考幀的對應(yīng)區(qū)域來對當(dāng)前塊進(jìn)行預(yù)測編碼。每個預(yù)測區(qū)的MV都需要相當(dāng)數(shù)目的比特位來進(jìn)行編碼。為了進(jìn)一步減少比特數(shù),可以利用鄰近的MV之間的相關(guān)性進(jìn)行預(yù)測編碼。后一個MV可由前面已經(jīng)編碼的MV預(yù)測得到,只需要對它們的差值MVD(Motion Vector Difference)進(jìn)行編碼。在H.264中,MVD值是采用指數(shù)哥倫布(Exp-Golomb)進(jìn)行編碼的,這是一種變長編碼[3]。
本文只對MVD的符號位進(jìn)行加密,對于每一個MVD值,只需要對一個bit位進(jìn)行加密操作。
1.3 殘差系數(shù)
在H.264中,殘差塊系數(shù)通過CAVLC和CABAC進(jìn)行編碼[4]。在進(jìn)行CAVLC編碼的過程中,涉及到以下幾個語義字段[2]:非零系數(shù)數(shù)目(Total Coeffs)、拖尾系數(shù)數(shù)目(TrailingOnes)、非零系數(shù)幅值(Level)以及最后一個非零系數(shù)前零的個數(shù)(TotalZero)和每個非零系數(shù)前零的個數(shù)(RunBefore)。 經(jīng)過分析,只有TrailingOnes和Level的符號位是屬于定長字段[6],因此提取這兩個字段的符號位進(jìn)行加密操作。如圖3所示。
2 算法設(shè)計
分別引入三個不同的控制參數(shù)P1、P1、P3對預(yù)測模式字IPM、運動向量MVD和殘差系數(shù)Residual Coefficient的加密強(qiáng)度進(jìn)行控制[1],具體方案為:以P1、P2的概率分別對IPM、MVD進(jìn)行加密,當(dāng)P1、P2從0到1進(jìn)行變化時,相應(yīng)地進(jìn)行不加密到完全加密;以P3對Residual Coefficients 系數(shù)符號位進(jìn)行不加密到完全加密控制。
下面是算法的具體偽代碼描述:
While( syntax element)
{
Switch(syntax element_type)
{
Case: IPM read 3bits from pseudo random sequence;
new_mode=original_mode XOR 3_bits;
break;
Case:MVD Read 1bits from pseudo random sequence;
new_sign=original_sign XOR 1_bits;
break;
Case:DCT coefficients for each none zero coefficients
read 1 bits from pseudo random sequence;
new_sign=original_sign XOR 1_bits;
break;
}
scan for next syntax element;
}
3 仿真結(jié)果與分析
3.1 實驗環(huán)境
實驗測試條件:H.264/AVC標(biāo)準(zhǔn),JM10.2版本,以IPPP方式進(jìn)行編碼,I幀刷新率為10,幀率為30 F/s,2 GB內(nèi)存,Intel T5670處理器,并用VS2008完成對JM10.2代碼的調(diào)試。實驗中采用CIF格式的352288的foreman作為視頻序列。
3.2 加密效果分析
單獨加密IPM字段,只是對亮度信息進(jìn)行加密,如圖4中人臉和輪廓信息清晰可見;單獨進(jìn)行MVD加密的過程中,如圖5中,I幀圖像完全不受任何影響,B、P幀的I bock也完全不受影響,關(guān)鍵信息很容易泄露。單獨對殘差系數(shù)進(jìn)行加密,如圖6,與IPM一樣,圖像的輪廓信息沒有很好的隱藏。另外,從對抗解密攻擊能力上來看,單獨對一種加密元素進(jìn)行分析加密空間更小,也更容易實施破解。因此,在視覺安全性要求比較高的場合,應(yīng)該聯(lián)合對所有三種元素進(jìn)行加密,從圖7可以看到,隨著加密強(qiáng)度不斷提高,視頻圖像可感知性不斷下降,在最強(qiáng)的加密強(qiáng)度下,整幅圖像完全被擾亂有很高的視覺安全性。各種方漢加密后PSNR值如表1所示。
3.3安全性分析
在加密方案中,保持視頻格式的語義兼容性,加密操作并不改變相關(guān)字段的長度。攻擊者會很自然地通過單獨猜解每個字段元素的值來進(jìn)行Cipher-only Attacks[7]。
3.4 性能分析
一個加密算法的計算復(fù)雜度主要取決于它要進(jìn)行加密的數(shù)據(jù)量。本文加密的數(shù)據(jù)量主要包括IPM、MVD和殘差系數(shù)。在一個宏塊中,IPM和MVD符號位,還有Residual Coefficient的符號位需要加密,因此,要加密的數(shù)據(jù)量同整個視頻數(shù)據(jù)相比,只占很小的部分。所采用的加密操作也僅僅是對相關(guān)的bit位進(jìn)行“異或”操作,所需的系統(tǒng)開銷極小,基本上不會對編解碼帶來影響。
本文研究了一種在H.264編碼下進(jìn)行Perceptual Encryption的方法,通過對語法元素的分析和編碼方式的研究,選取了IPM、MVD和Residual Coefficient這三種定長字段的元素進(jìn)行加密。通過引入概率參數(shù)來對每種類型的字段加密強(qiáng)度進(jìn)行控制,分析加密不同元素所帶來的視頻加密效果。實驗結(jié)果表明,單獨加密其中任何一種元素,都能對圖像帶來很大的干擾。但要獲得很好的安全性,必須聯(lián)合加密三種元素。這種加密方案具有很好的安全性和實時性,而且不會帶來額外的碼流,保持了視頻的壓縮比不變,并且可以調(diào)整不同的加密強(qiáng)度,適用于各種應(yīng)用的需求。
參考文獻(xiàn)
[1] 劉蕭.基于H.264編碼的視頻加密研究[D].杭州:浙江大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,2010:18-29.
[2] 畢厚杰. 新一代視頻壓縮編碼標(biāo)準(zhǔn): H.264/AVC[M]. 北京:人民郵電出版社,2005.
[3] 李曉舉,馮戰(zhàn)申,胡友情.基于H.264 CAVLC熵編碼的視頻加密方案[J].計算機(jī)工程與應(yīng)用,2009,45(34):114-117.
[4] 包先雨,蔣建國,袁煒,等.H.264/AVC標(biāo)準(zhǔn)中基于CABAC的數(shù)字視頻加密研究[J].通信學(xué)報,2007,28(6):24-29.
[5] QAO L,NAHRSTEDT K. A new algorithm for MPEG video encryption[C]. In:Proceeding of the Frist International Conference on Imaging Science,Systems and Technology(CISST’ 97),LasVegas,Nevada,1997:21-29.
[6] LIAN S G,LIU Z, REN Z. Secure advanced video coding based on selection algorithms[J]. IEEE Transactions on Consumer Electronics,2006,52(2):621-629.
[7] 李曉舉,忽海娜,劉麗.一種基于H.264CABAC的視頻加密方案[J].電信科學(xué),2010,26(7):80-83.