主動攻擊安全的可擴展FGS加密算法

一、引言

流式服務(wù)中的細(xì)粒度可擴展視頻編碼標(biāo)準(zhǔn)MPEG-4 FGS(Fine Granularity Scalability),它的基本思想是將視頻編碼分成一個可以單獨解碼的基本層碼流( Base Layer Bitstream)和一個可以在任何地點截斷的增強層碼流(Enh ancement Layer Bit -stream),其中基本層碼流能夠適應(yīng)最低的網(wǎng)絡(luò)帶寬,提供一個基本的圖像質(zhì)量,增強層碼流能夠覆蓋一定網(wǎng)絡(luò)帶寬變化的動態(tài)范圍,提供從基本層圖像到無損失圖像質(zhì)量的細(xì)粒度增強,如圖1所示。

目前,針對M PEG2/4壓縮編碼視頻流的加密算法,大多采用選擇某些關(guān)鍵碼字信息進行加密,如DC系數(shù),AC系數(shù)或運動向量,以及它們各自的符號位,但是這種加密算法是否安全,缺乏有效的分析和證明,另一方面,從MPEG-4 FGS的結(jié)構(gòu)(圖1)可以看到,因為增強層是采用基本層的VOP作為參照層而獲得的,從理論上看,只對FGS基本層采用非可擴展視頻加密處理,就可以得到對整個FGS視頻的加密效果,實際上,如果針對每一個獨立的VOP考慮,這種觀點是完全正確的,但是如果對整個運動序列和連續(xù)的VOP進行觀測和處理,情況就完全不同,選擇性加密,就是選擇壓縮視頻流的關(guān)鍵數(shù)據(jù)進行部分加密,這種方式是目前壓縮視頻流加密的普遍方式,對于這種方式的安全性的討論目前只限于被動式的安全分析,即視覺效果分析,但是,對于這種方式在主動攻擊下的安全性的討論比較欠缺,這里我們對選擇加密算法進行時域一頻域相關(guān)性的主動攻擊的安全性分析。

1、加密算法分析

采用選擇加密或者采用完全加密,對于系統(tǒng)安全,或者是對已知明文攻擊來說都是魯棒的,因為對于每幀的加密所采用的偽隨機序列都是不同的,并采用了內(nèi)容獨立的RC4密鑰設(shè)定,選擇性加密模式和完全加密模式對于其它攻擊方法所表現(xiàn)出的可靠性因素也不同,在完全加密模式下,安全性依賴于加密所運用的具體算法,采用C&S算法是足夠安全的,對于選擇性加密模式,安全性會根據(jù)視頻流的具體特點而不同,相關(guān)性強的視頻,安全性就較弱。

對于Tang的加密算法,即僅僅加密DC系數(shù),會使加密幀的某些邊緣信息暴露出來;加密AC系數(shù)的符號位只能針對AC系數(shù)的非零參數(shù),對QCIF圖像的非零AC參數(shù)進行測試實驗得到,如果將AC參數(shù)預(yù)測功能開啟,序列M iss-A-marican平均30kbps的碼率下才有一個非零AC參數(shù),而Coast Guard序列平均每lOOkbps才會出現(xiàn)4.3個非零的AC系數(shù),因此,如果對AC系數(shù)的符號位進行窮取攻擊,一個8×8的塊前一個序列只需要進行2次運算測試,后一個序列只需進行16次運算測試就可以得到,對于符號位的破解在這種情況下是較為容易的,之所以非零AC系數(shù)會很少,是因為選擇的圖像序列具有很強的相關(guān)性,同時所限定的碼率很?。贿@樣對AC系數(shù)的翻轉(zhuǎn)處理就會失去效果。

由于一幀圖像內(nèi)的運動向量的數(shù)目是有限的,對于窮取攻擊來說,運動向量的符號位加密也不夠安全,對于運動向量的殘余碼進行加密也不會有很好的效果,這是由于運動向量殘余碼只要很少的位數(shù),而且一個錯誤的運動向量殘余碼字不會對整個圖像帶來很大的視覺混亂。

2、視頻基本層加密算法的時域一頻域相關(guān)性攻擊方法

針對基本層的加密,或者時域可擴展FGST編碼方式下的選擇加密算法,都可以利用壓縮視頻流的時域、頻域相關(guān)性,設(shè)計主動攻擊策略,目前絕大多數(shù)的選擇加密算法主要是選擇壓縮視頻流的DC信息,AC信息,運動向量,以及其它如量化參數(shù)等信息,加密時既能是整個碼字,也可以是其符號位。

對選擇加密算法的攻擊可以先從最薄弱的部分開始,例如選擇加密是運動向量的符號位,那么首先對運動向量的符號位進行攻擊,如圖2所示,當(dāng)一個球從圖的左下角勻速運動到圖的右上角,球所包含的宏塊的運動向量經(jīng)過隨機翻轉(zhuǎn)加密,那么,從加密算法的隨機特性得出,對于像素來說,總會有將近一半的像素具有正確的運動向量(正負(fù)符號各半),對一個宏塊來說,也總會有將近一半的幀具有正確的運動向量,表現(xiàn)出整體的運動趨勢。

對于運動向量碼字加密攻擊方法,可以根據(jù)相同物體在空間和時間的運動相關(guān)性進行攻擊,設(shè)小球內(nèi)宏塊a在frame-1的運動向量為a1,其預(yù)測運動向量a’1,編碼運動向量為a1''=a1-a1’,如果小球勻速運動,那么宏塊a會出現(xiàn)a1''=a2''a3”=a”4,在這種情況下,如果對明文加密的密鑰相同,密文也必定相同,那么物體的運動依然保持一定程度的一致性,實際的測試也證明這一點,如果對明文加密的密鑰不同,可以采用已知明文攻擊的方法,根據(jù)明文相關(guān)性的特點,進行選擇明密文的攻擊。

對于DC碼字加密攻擊方法,由于DCT變換后的DC值表示塊內(nèi)8×8像素的平均亮度和Cr,Cb色差值,仍然可以利用物體的空間相關(guān)性,相鄰塊可能具有相同的DC值,時間相關(guān)性表示相鄰幀的同一位置的宏塊(塊)有可能具有相同的DC值,雖然DC也采用差值編碼,但是對其的攻擊可以采用和MV攻擊方法類似的方法進行。

對于AC系數(shù)的攻擊方法。AC系數(shù)符號位的翻轉(zhuǎn)加密,實質(zhì)上是對8×8塊DCT變換后的相應(yīng)頻率的系數(shù)進行相位翻轉(zhuǎn),在i幀中,AC系數(shù)和原圖像與亮度值相關(guān),那么兩個相鄰I幀就有可能具有相同的AC參數(shù),相鄰塊的AC系數(shù)也有可能相同,根據(jù)這些信息,可以對AC系數(shù)的符號位采用相應(yīng)的方法進行攻擊,在P,B幀中,AC系數(shù)與當(dāng)前圖像和預(yù)測圖像的差值相關(guān),AC系數(shù)的符號位需要采用窮舉的方法進行測試,由于塊中有限的非零AC系數(shù)的緣故,尤其是在低碼率壓縮的情況下,測試的數(shù)量可以更少。

3、視頻基本層加密算法的安全性測試

我們對FGS的基本層加密做以下選擇性實驗,首先將一個QCIF的視頻流壓縮為較低碼率(50kbps)的基本層,和較高碼率的增強層,總碼率為1.OMbps。然后將基本層的像素值值設(shè)置為0(或者別的固定值),然后進行FGS流的重構(gòu)。通過對不同類型的視頻剪輯的測試,得到了有趣的結(jié)果。如果觀察每一個單獨的量構(gòu)幀,那么會顯示明顯的隨機特性,不可能獲得更多有用的信息,但如果對重構(gòu)幀進行播放,此時運動對象的輪廓會較為清楚地顯現(xiàn).更為嚴(yán)重的是,這種運動對象和它的行動,可以通過人的觀察獲得正確語義描述。在許多應(yīng)用中,視頻加密系統(tǒng)的這種信息泄漏是不可接受的,從一個視頻流的相鄰幀間的強相關(guān)性進行解釋,當(dāng)基本層中的參考幀非常相關(guān)的情況下,這些序列的增強幀會澄漏較多的有用信息,也就是說,僅僅對基本層進行加密不能保證整個MPEG4FGS視頻流的安全。

二、基于主動攻擊安全的可擴展FGS加密算法

本文提出的對FGS的基本層和增強層同時進行加密,其加密算法原理圖如圖3所示,圖中分別給出了三種加密模型:基于細(xì)粒度時域可擴展編碼FGST (fine granularity scalable temporal)的VOP加密模型,基于C&S(chain&sum)的VOP加密模型和基于RC4(二進制加法瀧密碼算法)的VOP加密模型。從圖中看到,基本層既可以是選擇加密,也可以是完全加密;增強層采用選擇加密,也就是選擇偽隨機序列異或增強層的DCT系效符號位進行加密,不同的幀采用不同的隨機序列,以避免相同的隨機序列在不同的幀中重復(fù)使用,這種重復(fù)使用對于流加密來說是一個最大的安全隱患。

本算法可以應(yīng)用于任何的網(wǎng)絡(luò)分布模型,在超分布模型中,內(nèi)容加密和許可證是分別進行分發(fā)的,許可證一般分發(fā)到特定的用戶;只有合法的被允許的機器才可以對保護的內(nèi)容進行訪問,為了最大意義的安全,對每個節(jié)目視頻采用不同的加密密鑰。

1、基本層加密算法

基本層加密采用C&S加密算法。C&S(chain&sum)加密算法由Jakubowski和Venkatesan最近提出,主要是基于CBC-MAC(塊加密鏈、消息提取碼)的加密算法,用于加密單元的加密運算既可以是選擇加密,也可以是完全加密,在選擇加密情況下,加密域包括:比特位數(shù)量DC值(intra_dc_coef-ficient和dct-dc_differential),DCT系效符號位,運動向量符號位(horizontal_mv_data和vertical_mv_data)和運動向量余效(horizontal_mv_residual和vertiC81—mv- residual)。對于每一幀數(shù)據(jù),這些數(shù)據(jù)被提取出來形成消息序列,然后采用C&S的方法進行加密,密文再放圓FGS流的原位置中替換原效據(jù),在完全加密情況下,基本層每幀中除了VOP頭信息以外的熵編碼視頻數(shù)據(jù)均被C&S算法加密。

基本層采取選擇加密或選擇完全加密,都不會影響視頻效據(jù)的熵編碼,因為C&S加密算法保持被加密數(shù)據(jù)的大小,不會對FGS的壓縮效率帶來負(fù)面影響,選擇加密算法與MPEG4 FGS格式是全兼容的,就是說,一個FGS的標(biāo)準(zhǔn)播放器可以播放選擇加密的視頻流,這一點比完全加密算法具有優(yōu)勢。完全加密具有較高的保密性,但在不解密或者是解密錯誤的情況下,播放加密視頻會使標(biāo)準(zhǔn)的FGS播放器崩潰。

通常情況下,采用基本層加密方法必須等到一幀圖像的所有加密數(shù)據(jù)都收集到后才可以進行解密,這就需要緩存區(qū)必須存儲整個幀的基本層,同時還需要記住每一個加密域的位置和比特效,還必須進行兩次基本層數(shù)據(jù)的提取,其中一次進行解密運算,另一次進行解壓縮運算,這對于某些應(yīng)用環(huán)境是不適宜的.如果客戶端的處理器能力或資源存在限制,可以采用流加密算法,如使用RC4算法來替代以上兩種方式所采用的C&S算法。

本文提出的基本層加密方法如下:在每幀基本層的頭信息中,產(chǎn)生不同的隨機數(shù),由它和加密密鑰作為流加密的密鑰,對每幀生成不同的隨機序列對幀效據(jù)進行異或處理。對于一般長度的視頻流,采用32位的隨機數(shù)對于每幀來說已經(jīng)足夠,確保了一個視頻流中不同幀的隨機序列不同,除非隨機數(shù)產(chǎn)生碰撞,但如果選擇好的隨機序列發(fā)生器,這種概率就會非常小,因為RC4存在極大的可能狀態(tài)(大約2的1700次方)。這就保證了加密內(nèi)容的安全性.插入的隨機數(shù)被作為增強層加密所采用的C&S算法的預(yù)MAC值。

2、增強層加密算法

增強層加密采用RC4加密算法,RC4是一種二進制加法流密碼算法,它使用可變長度密鑰,從8到2048位。算法的核心部分是一個密鑰流的發(fā)生函數(shù),產(chǎn)生的流序列和明文進行異或運算以獲得密文。

從基本層獲得的預(yù)MAC值用于增強幀的加密,它和加密密鑰一起作為RC4算法的一個輸入,產(chǎn)生一個隨機序列來與增強層的DCT系數(shù)的符號位進行異或處理,可以設(shè)定任意的字串如uenhancement layer一來作為RC4的另一個輸入,以保證基本層和增強層產(chǎn)生的RC4隨機序列的不同。通過RC4產(chǎn)生的偽隨機序列被捧列成和原圖像大小相同的二進制矩陣,增強層中DCT系效的符號位一旦在增強層出現(xiàn),就和偽隨機二進制矩陣的相同位置上的位進行異或,這種情況下,即使在傳輸過程中出現(xiàn)某個包丟失,也可以容易地將所接受到的其它包和正確的隨機位對齊,進行解密處理。

對于FGST VOPs的情況,某些FGST VOPs可能使用相同的基本層幀作為參考幀,以上描述的方法會對不同的FGST VOPs產(chǎn)生相同的隨機序列,造成對安全性不利的影響,為避免這種情況發(fā)生,在每個FGST VOP的頭信息中插入幀序列號,這個序列號作為RC4的輸入,這樣對于具有相同參考基本幀的FGST VOPs就會產(chǎn)生不同偽隨機序列。幀計數(shù)器可以被不同的FGST VOPs組重復(fù)使用,因為由它所參考的基本層獲得的預(yù)MAC也會作為RC4的密鑰輸入。對于絕大多效的應(yīng)用,每幀2到3個比特就足夠使用了。這種加入幀計效囂的方法比利用增強層幀的時間戳要好,因為傳輸過程的中間階段一些標(biāo)準(zhǔn)的操作需要改變時間戳,如果某些FGST VOPs被丟失,解密操作就不能對以后的FGST VOPs產(chǎn)生正確的隨機序列。

這種增強層加密方法,具有恢復(fù)原來未加密的增強層錯誤的能力,它可以支持FGS壓縮所提供的增強層上的所有操作和功能,由于在絕大部分應(yīng)用當(dāng)中,基本層一般被重點保護以防止包丟失和位镥誤,由于其碼率較低,處理的計算負(fù)荷不會很大,所以碼率切割等操作一般都只在增強層上進行。

三、實驗結(jié)果

本文所提出的算法方案以C++語言進行實現(xiàn),所有的測試基于P4 2.8GHZ Dell PC,512M內(nèi)存,我們在該環(huán)境下對許多的QCIF視頒序列進行了測試,結(jié)果如下。

對于MPEG提供的akyio序列,基本層的碼率為7.65kbps,增強層的碼率為2.581Mbps。

采用選擇加密算法進行加密時,加密位的數(shù)據(jù)占基本層全部數(shù)據(jù)位的15. 72%,基本層加密運算的處理速度為25Mbps,基本層和增強層同時加密時總速度為7905 MbpsI采用完全加密算法進行加密時,基本層加密處理速度為55mbps,基本層和增強層同時加密時總速度為17391 Mbps。加密速度比選擇加密時要快,這是由于采用基本層加密時,雖然C&S算法的速度比較快,但是對加密碼字的提取和加密后碼字的放回需要花費較多的時間。

從實驗結(jié)果可以看到,加密/解密算法的速度相對于C&S算法/RC4或RC5算法要低,這是因為沒有針對某個特定的硬件平臺進行匯編代碼優(yōu)化的緣故。

在實驗中,我們對視頻流中兩個連續(xù)視頻點(a點和b點)的圖像進行了抓拍,得到的加密圖像如圖4所示。

其中圖4(a1)、(b1)為兩個視頻點的原始圖像。(a2)、(b2)為加密基本層后得到的圖像,(a3),(b3)為同時加密基本層和增強層后得到的圖像。從圖4中可以看到,采用基本層加密沒有獲得很好的加密效果,如果采用基本層和增強層同時加密,將獲得十分理想的加密效果。

四、結(jié)論

本文通過對傳統(tǒng)視頻流加密算法的安全性分析,提出了針對MPEG4 FGS視頓流的基于主動攻擊安全的可擴展FGS加密算法,即基本層和增強層同時進行加密,加密支持FGST特殊情況下的加密要求,支持FGS流格式所具有的可擴展的功能和特性,加密只需一次,就可以使傳輸?shù)闹虚g階段直接在密文上進行處理而不需要解密過程,使系統(tǒng)資源得到最大的利用。這種加密方式不會對FGS的視頻恢復(fù)和壓縮效率帶來負(fù)面影響,而在提高視頻安全性的同時,視頻回放沒有出現(xiàn)掉包現(xiàn)象,獲得了理想的效果。

小知識之視頻流視頻流是指視頻數(shù)據(jù)的傳輸,例如,它能夠被作為一個穩(wěn)定的和連續(xù)的流通過網(wǎng)絡(luò)處理。因為流動,客戶機瀏覽器或插件能夠在整個文件被傳輸完成前顯示多媒體數(shù)據(jù)。視頻流技術(shù)基于 2 密鑰技術(shù),視頻譯碼技術(shù)和可升級的視頻分發(fā)技術(shù)發(fā)展。