??? 摘??要: 幾種常用數字視頻信號加密技術的原理與方法,分析了這些加密方法的優點和存在的不足。提出了一種僅對視頻碼流中解碼和視頻圖像的重建起著重要作用的少部分數據進行高強度加密的方法,這一方法可以取得對整個視頻碼流安全加密的效果。?
??? 關鍵詞: 數字視頻; 加密技術; 嵌入式系統
?
??? 數字視頻在許多方面與靜止圖像有相同特性,例如數據量大、結構性強、各部分數據的重要性不同等,視頻的幀內編碼與靜止圖像編碼類似。數字視頻是由數字圖像的時間序列構成的,每一幅圖像稱為一幀。為了保證流暢的視覺效果,視頻顯示的幀速率即圖像序列的播放速率,通常為每秒25~30幀,視頻加密在一定時間內必須處理大量數據,因此要求有很高的處理速度。當前的視頻加密技術還很難同時滿足安全、及時等加密要求。?
1 視頻加密的原理和方法?
1.1 視頻加密的密碼學方法?
??? 最早的視頻信號加擾方法是模擬視頻加密技術,但這種方法安全級別很低。最早的高保密級視頻加密技術是對全部視頻數據流直接用密碼技術加密和解密,故稱為圖像和視頻加密的密碼學方法,也稱之為自然加密方法。國內大部分文獻稱之為傳統加密方法。其原理如圖1所示。?
?
?
??? 由于密碼技術已有許多安全可靠的成熟算法,以二維或多維數據表示的圖像和視頻在傳輸和存儲時都要映射成一維數據,若不考慮具體的數據特征,很適合直接應用已有的成熟密碼技術加密。其研究基本是基于純密碼科學技術的研究,安全性評價取決于所用密碼加密技術。在當前的大多數實用圖像和視頻加密系統中,圖像和視頻數據被等同為一維比特流而采用DES等算法加密。也有一些新的密碼技術用于視頻加密,同時在性能上有了進一步的改進。?
??? 是由于圖像和視頻信號數據量很大,所以這種加密方法計算量非常大,不僅浪費資源,而且難以保證實時性。由于許多圖像信號特別是視頻信號往往要求實時在線傳輸,且大多數應用都要求降低成本,從而限制了這種加密方法的應用。另外,若標志信息經加密無法識別,則不能實現在線傳輸和檢索功能。?
1.2選擇性加密方法?
??? 密碼學方法雖然安全,但這種加密方法計算量非常大,往往難以實用。為解決這一對矛盾,人們研究了視頻的信源特征,把密碼原理與視頻技術結合起來,取得了一些研究成果。有人提出一種針對圖像和視頻編碼的部分數據加密思路。圖2(a)表示密碼學方法,對所有數據用密碼技術加密;圖2(b)表示部分數據加密方法,只對選擇的重要數據加密。?
?
?
??? 在視頻加密的算法中,除純密碼學方法之外,對選擇性加密方法研究得比較多,其中又以對加密變換(DCT)系數的算法為多。主要有以下幾種:?
??? (1) 僅對I幀加密算法?
??? 僅對I幀DCT系數塊加密,具有擴散作用,使P、B幀利用運動補償進行差值編碼的相應塊不加密也難以正確解碼,達到了選擇部分數據加密減少計算量的目的。該算法由于減少了加密數據量,因而節約30%~50%的加解密時間,提高了加、解密速度,且不改變原視頻編碼數據碼流量大小,因而不影響壓縮率。但這種算法不安全,場景變換和運動劇烈的P、B幀(P、B幀內的I塊)會被正確解碼,在保密要求高的場合不能單獨使用。本算法可通過增加I幀頻率來提高密級,但是I幀頻率越高,計算量越大,速度就越慢。有人討論了其改進方法,加密包括P、B幀中I塊的所有I-block,但也存在問題:①在P、B幀中識別I塊需要一定的額外開銷;②在某些視頻中,P、B幀中的I塊數量與I幀中數量相近,因此,減少數據量不明顯,還不如改用純密碼(Naive)算法。?
??? (2) 加密運動矢量算法?
??? 隨機改變運動矢量的符號位或同時改變符號位和數值來影響P、B幀正確解碼。對I幀編解碼完全沒有影響,故不能單獨使用,主要作為增強安全性的補充算法。加密數據量小,計算量小,因而速度快;不降低編碼壓縮率,只適用于視頻編碼數據。?
??? (3) DCT塊系數分層加密算法?
??? 把DCT系數從低頻到高頻分為基本層(base layer)、中間層(middle layer)和增強層(enhancement layer)三部分。在0~63范圍定義兩個整數分界點(breakpoint),作為一個分界點組(breakpoint group),確定三部分之間的邊界。定義第一個分界點為容損點(loss-tolerance breakpoint),第二個點為安全點(security breakpoint)。在這個算法中,只加密基本層和中間層,可以減少計算量;保證基本層傳送,即使中間層和增強層丟失,接收方也能顯示出主要信息。該算法可以讓用戶根據不同的安全性級別來選擇分界點組合,在安全性、計算量、容錯能力之間進行折中。對基本層和中間層加密的密碼算法也可以另行選擇。該算法只對部分DCT系數加密,減少了計算量。類似的選擇性加密的算法有:僅加密DC系數或加密DC系數和少量低頻AC系數、隨機改變DCT系數符號等。?
??? (4) 僅加密頭信息算法?
??? 將頭信息加密,再與其他數據隨機混合,使接收方難以按原數據結構區分結構信息和視頻信息并解碼。該算法不降低壓縮率,計算量小。但是安全性較低,因為頭信息所含信息量小,加密效率低,這種加密方式比較容易破譯。為便于合法收方解碼,需加入同步信息,或保留原來部分同步信息。?
1.3 針對MPEG碼流統計特性的算法?
??? 針對MPEG碼流統計特性(Statistical behavior of MPEG)的算法稱為VEA(Video Encryption Algorithm)算法。經壓縮編碼的碼流因去除相關性,具有一定的隨機性。將I幀(撇開頭標志等特殊碼流)分為8或16(通常16)大塊(chunk),在任何chunk中,沒有重復的字節模式。據此提出下面的VEA算法。?
??? 設一個I幀的某個chunk為如下形式:a1,a2,a3,a4,...,a2n-1,a2n。選擇奇數號的字節組成奇隊列(Odd List),選擇偶數號的字節組成偶隊列(Even List)。將兩個新數據流異或。選擇一種加密函數(例如DES)來加密偶隊列a2,a4,...,a2n。得到的密文為:c1,c2,…,cn,E(a2,a4,…,a2n)。如果a2,a4,…,a2n沒有重復模式(repeated pattern),說明具有足夠隨機性,a2,a4,…,a2n對a1,a3,…,a2n-1的簡單異或,是一次一密亂碼本(one-time pad)加密,這是被公認為非常保密的。VEA算法密級就決定于函數E。?
??? 該方法只加密部分視頻流,待加密數據分為兩半,一半用密碼方法(函數E)加密,另一半用簡單異或,因此總體減少了計算量,提高了計算速度。該方法不影響壓縮率,適用于壓縮的視頻編碼數據,而且壓縮效果越好,加密效果也越好。?
1.4 DCT頻域系數亂序算法?
??? DCT頻域系數亂序算法(Zig-Zag Permutation Algorithm)把DCT頻域系數8×8塊按隨機的順序映射成1×64矢量,而不按ZIG-ZAG順序。有人首先提供了三步基本算法,但設計者自己指出,基本算法對已知明文攻擊是脆弱的,因此提供了兩種附加方法增強算法的安全性。?
??? (1) 對DC系數另用DES加密。?
??? (2) 產生兩張不同的順序置亂序列表,隨機選用。?
??? DCT頻域系數亂序算法速度很快。但存在嚴重的安全性問題。兩種附加方法也無法解決。已知明文攻擊(Known-plaintext attack)和唯密文攻擊(Ciphertext only attack)都可以成功破解該算法。另外,經過加密的MPEG流大小將顯著增加,最大可增加46%,嚴重降低壓縮率。?
2 新的視頻加密方法?
??? 針對視頻數據具有層次結構性強、數據量大以及實時傳輸要求高的特點,本系統采用了一種新式的視頻加密算法。其主要思想為:僅對視頻碼流中的少部分重要數據進行高強度的加密。因為視頻碼流中各部分數據的重要性不同,某些關鍵數據(如視頻宏塊中的直流分量值DC,交流分量值AC和位移矢量MV等)雖然數據量比較小,但是對視頻碼流的解碼和視頻圖像的重建起著至關重要的作用,所以僅對這些少量數據運用AES、IDEA等加密算法進行加密,就可以取得對整個視頻碼流安全加密的效果。該視頻加密算法原理如圖3所示。?
?
?
??? 該視頻加密算法具有如下特點:(1)獨立于視頻編解碼器。(2)獨立于密碼學算法,用戶可以根據自己的要求選擇不同的加密算法,如DES、AES或IDEA等。(3)對不同關鍵數據的選取和組合,可以提供高、中、低三個不同的加密級別,用戶可根據不同的保密要求和網絡帶寬進行選擇。(4)計算量小、加密速度快、附加帶寬少。?
3 新的視頻加密方法的實現?
3.1 新的視頻加密方法的硬件實現?
??? 圖4所示是基于對上述新的視頻加密算法而設計的一種采用嵌入式主處理器DM1105和加密配置芯片DM2016的數字視頻加密系統。?
?
?
??? DM1105主要應用于衛星、有線信號以及地面傳輸的數字電視、IP數據的接收,也可以用于8/16位CCIR656標準YUV視頻信號的接收。DM1105內集成了DVB標準解擾算法,可以同時進行32路解擾,還具備遙控器接收功能,通過擴展還能夠外接兩個PCMCIA插槽。圖5是DM1105應用的原理結構框圖。 ?
?
?
3.2 新的視頻加密方法的軟件實現?
??? 示例采用C語言實現基于嵌入式系統的AES加密運算。?
??? (1)先定義sbox 和pbox,并初始化,將它們放入code 中:?
??? unsigned long code sbox[18] = {?
??? 0x243F6A88L , ……, 0x8979FB1BL?
??? };?
??? unsigned long code pbox[ 4 ] [256 ] = {?
??? 0xD1310BA6L , ……?
??? };?
??? (2) 定義兩個全局變量key_pbox 和key_sbox ,存儲初始化后的子密鑰:?
??? unsigned long key_pbox[18 ];?
??? unsigned long key_sbox[ 4 ] [256 ];?
??? (3) 完成下列函數:?
??? //AES初始化函數?
??? void AES_Constructor(void);?
??? void AES_Destructor(void);?
??? //設置AES密鑰函數?
??? BOOLEAN SetKey(const unsigned char *key, int keylen);?
??? //AES加密函數?
??? BOOLEAN Encrypt(const unsigned char *in, int inlen, ?
??? unsigned char *out, int *outlen);?
??? //AES解密函數?
??? BOOLEAN Decrypt(const unsigned char *in, int inlen, ?
??? unsigned char *out, int *outlen);?
??? ……?
??? (4) 初始化嵌入式系統,用TESTKEY作為密鑰進行初始化,對算法進行測試。?
??? 在編譯優化后,對代碼做進一步優化。首先使用TI集成開發環境的代碼分析器(profiler)對代碼進行分析。在CCS中可以統計某段代碼的執行時間,這被稱作剖析(profile)。代碼剖析可以迅速地評估程序的性能以便優化代碼。經過編譯優化和代碼優化后,AES算法在該嵌入式系統中具有高速數據處理能力,在保證安全性目標的同時,又不影響數字視頻信號對通信實時性要求,從而有助于解決數字電視傳輸控制網絡中實時數據加密和安全問題。?
??? 本文介紹了幾種常用視頻加密算法,分析了這幾種算法的優缺點,提出了一種僅對視頻碼流中解碼和視頻圖像的重建起著至關重要作用的少部分數據進行高強度加密的方法,并利用嵌入式芯片DM1105和加密配置芯片DM2016組成一個加密、解密系統來實現上述數字視頻信號的加密。?
參考文獻?
[1] 張鐳,張川,徐正全.基于H.323協議的視頻加密網關的設計[J].計算機工程,2006(14):138-140.?
[2] 廉士國,孫金生,王執銓.幾種典型視頻加密算法的性能評價[J].中國圖像圖形學報2004(4):483-490.?
[3] 李偉,劉樹波,徐正全.基于TM1300的嵌入式網絡視頻編碼器的設計[J].武漢大學學報,2004(3):110-113.?
[4] 洪家平. 嵌入式系統加密技術在數字電視中的應用研究[J]. 電子技術應用,2008(9).?
[5] 洪家平.AES在嵌入式系統起動加載程序中的應用[J].信息安全與通信保密,2007(2).