流媒體加密技術(shù)
隨著Internet的飛速發(fā)展和網(wǎng)上多媒體應(yīng)用的普及,數(shù)字版權(quán)和隱私權(quán)的保護(hù)已成了一個(gè)愈來(lái)愈令人關(guān)注的問(wèn)題,媒體資源的安全也就成了一個(gè)熱點(diǎn)的研究課題,而加密技術(shù)是保護(hù)媒體資源安全最重要的技術(shù)手段之一。筆者從傳統(tǒng)密碼技術(shù)入手,在結(jié)合流式媒體的特征基礎(chǔ)上對(duì)其加密/解密機(jī)制進(jìn)行了深入的研究目的是將傳統(tǒng)的密碼技術(shù)與新興的流媒體技術(shù)相結(jié)合,實(shí)現(xiàn)多媒體數(shù)據(jù)的實(shí)時(shí)加密保護(hù)。
一、用常規(guī)密碼對(duì)流媒體加密的總體分析
現(xiàn)代密碼學(xué)根據(jù)加密密鑰使用方式的不同,將密碼體制分成兩大類(lèi):對(duì)稱(chēng)密碼體系和非對(duì)稱(chēng)密碼體系對(duì)稱(chēng)密碼體系中加解密雙方所用密鑰相同,而非對(duì)稱(chēng)密碼體系中加密和解密使用的不是同一把密鑰兩種密碼體制各有利弊,分別適用于不同的應(yīng)用場(chǎng)合。
在流式傳輸過(guò)程中,服務(wù)器在發(fā)送數(shù)據(jù)時(shí)進(jìn)行加密,客戶(hù)端在播放前進(jìn)行解密加解密都是針對(duì)流化了的媒體流進(jìn)行的,也就是說(shuō)欲加密的明文是一個(gè)數(shù)據(jù)包或其中的一部分,而不是整個(gè)多媒體文件流式傳輸加密模型如圖1所示。

那么,在使用常規(guī)密碼技術(shù)對(duì)流媒體數(shù)據(jù)進(jìn)行安全保護(hù)時(shí),應(yīng)當(dāng)考慮哪些因素呢?通過(guò)分析研究,我們認(rèn)為至少應(yīng)當(dāng)考慮以下幾點(diǎn)。
一是密碼體制的選擇
首先要考慮使用公鑰密碼還是對(duì)稱(chēng)密碼流媒體傳輸要求很強(qiáng)的實(shí)時(shí)性,數(shù)據(jù)量又很大,而公鑰密碼算法的計(jì)算都比較復(fù)雜,效率較低,這就限制了只能使用對(duì)稱(chēng)密碼體制進(jìn)行媒體數(shù)據(jù)流的加密對(duì)稱(chēng)密碼體制中又有分組密碼和序列密碼之分,兩者都可用于流式傳輸。因?yàn)橥ㄐ胚^(guò)程中媒體數(shù)據(jù)本來(lái)就是被成塊處理和傳輸?shù)?,因此可以使用分組密碼,這樣做的另一個(gè)好處是一個(gè)密文塊中的傳輸錯(cuò)誤不會(huì)對(duì)其他塊產(chǎn)生影響,也就是不存在塊間的錯(cuò)誤擴(kuò)散使用流密碼是因?yàn)樗用芩俣瓤?,處理?jiǎn)單。
二是加密算法的選取
每一種密碼體制都存在多種標(biāo)準(zhǔn)算法,每種算法的性能和安全性也有所差異所以,應(yīng)當(dāng)根據(jù)應(yīng)用的特點(diǎn)和網(wǎng)絡(luò)的狀況,在保密性和實(shí)現(xiàn)代價(jià)之間做出權(quán)衡后,選用一種合適的算法當(dāng)然也可以自行設(shè)計(jì)合適的加密算法,只要保證有足夠的安全性具體到某個(gè)算法中還應(yīng)考慮許多其他因素,如分組長(zhǎng)度和密鑰長(zhǎng)度的選取等等,都會(huì)對(duì)加密速度和安全性產(chǎn)生直接的影響。
三是工作模式的選擇
任一種計(jì)算機(jī)加密程序都是按照某種固定的步驟和方式執(zhí)行的,因此如果加密時(shí)明文和密鑰都相同,則必然得到相同的結(jié)果,而這樣數(shù)據(jù)保密性就會(huì)受到影響因?yàn)樵谟?jì)算機(jī)系統(tǒng)中,由于數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)冗余使得許多數(shù)據(jù)信息都具有某種固有的模式,比如標(biāo)準(zhǔn)的多媒體文件都具有一種固定的結(jié)構(gòu),一個(gè)數(shù)據(jù)庫(kù)中所有的記錄也都具有相同的結(jié)構(gòu)等等這樣經(jīng)過(guò)加密程序的作用后,這些固定的格式就會(huì)在密文中露出痕跡為避免這些問(wèn)題,可以使用數(shù)據(jù)預(yù)處理技術(shù)和鏈接技術(shù),不同的技術(shù)就形成了分組密碼的不同工作模式。
常見(jiàn)的工作模式有電子編碼本模式(ECB)、密碼分組鏈接模式(CBG)、密碼反饋模(CFB)式和輸出反饋模式(OFB)。ECB使用同一個(gè)密鑰將每個(gè)明文塊分別加密,各塊間相互獨(dú)立:在CBC方式中,每個(gè)明文塊在加密前先與前一個(gè)密文塊進(jìn)行“異或”運(yùn)算,增加了復(fù)雜度和密碼分析的難度CBC模式的安全性較ECB好,因而受到廣泛使甩CFB和OFB類(lèi)似于CBC方式,但是進(jìn)行“異或”的量是獨(dú)立生成的在同一工作模式下可以選用不同的初始化向量進(jìn)行數(shù)據(jù)預(yù)處理。
流媒體數(shù)據(jù)加密是對(duì)一個(gè)個(gè)的數(shù)據(jù)包進(jìn)行的,也可以看成是對(duì)小數(shù)據(jù)文件進(jìn)行加密,工作模式可選用EBC或CBC方式但是,在對(duì)非壓縮的多媒體數(shù)據(jù)(如位圖文件等)進(jìn)行加密時(shí),由于其高度冗余性,若簡(jiǎn)單地選用ECB模式將無(wú)法掩蓋某些原始信息,最好使用CBC模式。
四是數(shù)據(jù)填充的需要
采用分組密碼算法時(shí)需要將明文根據(jù)分組長(zhǎng)度來(lái)分成若干塊,實(shí)際應(yīng)用中明文消息通常比分組長(zhǎng)得多,因此最后的分組可能是一個(gè)長(zhǎng)度較小的短塊如何處理這些短塊呢?主要有三種方法:填
充法、密文挪用法和序列密碼加密法。
另外還有許多其它因素,如同步需要、密鑰管理策略等都需要考慮周全。
二、用序列密碼對(duì)媒體流加密
如Bit上述分Byte算法中的分組長(zhǎng)度隨為一個(gè)Bit或一個(gè)Byte,也就是將明文空間元素逐位或逐字節(jié)地加密,這就是序列密碼(流密碼)的實(shí)現(xiàn)思想對(duì)流密碼而言,密鑰是一個(gè)與明文長(zhǎng)度相同的序列加密時(shí)明文序列與密鑰流序列通過(guò)逐位運(yùn)算來(lái)實(shí)現(xiàn)加密,解密時(shí)以同步產(chǎn)生的密鑰流進(jìn)行相反的變換,其基本原理如圖2所示。

與普通分組密碼和公鑰密碼相比,序列密碼速度最快,實(shí)時(shí)性最好因此,序列密碼適用于數(shù)據(jù)量大且實(shí)時(shí)性要求高的流媒體加密,它也是目前軍事、外交領(lǐng)域應(yīng)用的一種主流密碼體制。
序列密碼的強(qiáng)度完全依賴(lài)于密鑰序列的隨機(jī)性和不可預(yù)測(cè)性。另外,保持收發(fā)兩端密鑰流的精確同步也是實(shí)現(xiàn)可靠解密的關(guān)鍵技術(shù)所以,序列密碼的核心問(wèn)題是密鑰流生成器的設(shè)計(jì),一般可使用偽隨機(jī)數(shù)發(fā)生器密鑰流生成器需要一個(gè)加密密鑰作為輸入?yún)?shù),如果同一個(gè)生成器每次都使用相同的加密密鑰,那么它生成的密鑰流也總是相同胞所以,為了保證安全,不能重復(fù)使用相同的密鑰常見(jiàn)的生成器有基于線性和非線性移位寄存器的序列密碼、基于混沌的序列密碼等等下面就來(lái)研究用序列密碼如何對(duì)流媒體進(jìn)行加密。
使用序列密碼加密,首先要把明文信息如文本、圖像、聲音等排成明文序列,再將它與密鑰序列逐字節(jié)(位)進(jìn)行“異或”運(yùn)算生成密文序列,接收者用相同的密鑰序列對(duì)密文序列進(jìn)行“異或”運(yùn)算來(lái)恢復(fù)明文。
在用序列密碼對(duì)媒體流加密時(shí),網(wǎng)絡(luò)數(shù)據(jù)包的大小可以根據(jù)網(wǎng)絡(luò)的需要來(lái)設(shè)定,與分組加密不同,這里需要考慮的僅僅是網(wǎng)絡(luò)傳輸?shù)男枨蟆?/p>
整個(gè)加密過(guò)程是:播放過(guò)程一旦開(kāi)始,密鑰流生成器就不斷地產(chǎn)生出密碼序列,服務(wù)器也周期性地發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包在數(shù)據(jù)流化的過(guò)程中,將隨機(jī)數(shù)序列與數(shù)據(jù)包中的明文序列進(jìn)行逐位(字節(jié))的異或運(yùn)算后,再按照網(wǎng)絡(luò)協(xié)議進(jìn)行打包解密端從網(wǎng)絡(luò)上收到數(shù)據(jù)包后,先進(jìn)行解封裝得到密文數(shù)據(jù)流,然后再與密鑰流進(jìn)行異或運(yùn)算得到明文。
三、MPEG-1加密方法的比較及分析
從多媒體文件或?qū)崟r(shí)的多媒體數(shù)據(jù)流中所含的信息來(lái)看,大部分?jǐn)?shù)據(jù)都是視頻信息,因此以MPEG-1為例對(duì)視頻數(shù)據(jù)的加密法進(jìn)行分析對(duì)于其他類(lèi)型的多媒體文件,也可以參照類(lèi)似方法進(jìn)行分析和處理。
MPEG系列都是有關(guān)運(yùn)動(dòng)圖像和編碼的標(biāo)型剮,每個(gè)標(biāo)準(zhǔn)又分為音頻和視頻兩個(gè)部分,以MPEG-1標(biāo)準(zhǔn)為例來(lái)說(shuō)明其加密原理實(shí)現(xiàn)時(shí),可以對(duì)M PEG-1系統(tǒng)流直接進(jìn)行加密操作,也可以對(duì)音視頻流進(jìn)行單獨(dú)的加密因?yàn)樵谶M(jìn)行數(shù)據(jù)的RTP打包時(shí),可以將音視頻數(shù)據(jù)流分別打包形成兩路媒體流進(jìn)行網(wǎng)絡(luò)發(fā)送下面以其視頻流的加密方法進(jìn)行比較與分析。
目前對(duì)M PEG-1視頻流加密的方法,歸納起來(lái),可以分為以下幾大類(lèi):
第一類(lèi)是完全加密法這種算法把視頻數(shù)據(jù)與一般的文本數(shù)據(jù)同等對(duì)待,完全不考慮視頻本身的特點(diǎn)它首先把圖像肩見(jiàn)頻的二維或三維結(jié)構(gòu)變?yōu)橐痪S的數(shù)據(jù)流,再使用DES、AES等標(biāo)準(zhǔn)算法直接將數(shù)據(jù)逐位進(jìn)行加密,其優(yōu)點(diǎn)之一是安全性高,優(yōu)點(diǎn)之二是加密可以免去考慮媒體數(shù)據(jù)格式的區(qū)別,這樣無(wú)論對(duì)于MPEG格式、ASF格式還是RM等格式的媒體數(shù)據(jù)均可以采用統(tǒng)一的加密方法缺點(diǎn)是開(kāi)銷(xiāo)較大。
第二類(lèi)是選擇性加密法總的來(lái)說(shuō),這類(lèi)方法是通過(guò)分析MPEG視頻結(jié)構(gòu)上的特點(diǎn)之后,有選擇地對(duì)部分?jǐn)?shù)據(jù)進(jìn)行加密雖然只是對(duì)部分?jǐn)?shù)據(jù)加密,加密后的位流已經(jīng)不再具有標(biāo)準(zhǔn)的MPEG結(jié)構(gòu)特點(diǎn),因此實(shí)現(xiàn)了數(shù)據(jù)保密要對(duì)加密后的視頻數(shù)據(jù)進(jìn)行破解,攻擊者面臨著兩大難題,一是必須找出哪一部分?jǐn)?shù)據(jù)被加密了,二是找到后還要知道如何進(jìn)行解密選擇性加密由于只對(duì)部分敏感數(shù)據(jù)進(jìn)行加密,從而減小了開(kāi)銷(xiāo)。
可以根據(jù)不同的應(yīng)用需求來(lái)選擇不同的選擇性加密方案,常見(jiàn)的有以下幾種選擇方案。
(1)是選擇對(duì)視頻序列中所有的I幀進(jìn)行加密因?yàn)镻幀只記錄了與其前面J幀進(jìn)行比較的差分信息,B幀只記錄了與其前后的,P幀相比較的差分信息,I幀信息一旦被加密,B幀和P幀便失去意義但由于數(shù)據(jù)的幀間關(guān)聯(lián),僅僅加密,幀后仍然能夠暴露出一些信息,這些信息主要來(lái)自于B幀和P幀中的I塊。
(2)對(duì)視頻序列中所有,幀進(jìn)行加密的同時(shí),再選擇對(duì)B幀和P幀中的,塊進(jìn)行加密,以提高安全性,但這樣增加了尋找,塊的開(kāi)銷(xiāo):因?yàn)?,幀占整個(gè)視頻的30%~60%,再加上尋找,塊,其開(kāi)銷(xiāo)已接近于全部加密。
(3)選擇對(duì)視頻序列頭加密,因?yàn)樾蛄蓄^中包含了解碼所需的一些初始化參數(shù),如圖像大小、幀率、位率以及緩沖區(qū)的大小等等,對(duì)頭部信息加密就使得標(biāo)準(zhǔn)解碼器無(wú)法識(shí)別出視頻流,從而達(dá)到了加密的目的要進(jìn)一步增加安全性,可以同時(shí)對(duì)視頻序列尾進(jìn)行加密。
上述幾種選擇加密法可單獨(dú)選用也可綜合使用,還可制定其他的選擇方案。
第三類(lèi)是VEA視頻加密算法這種方法是基于MPEG-1視頻序列的統(tǒng)計(jì)特性,算法簡(jiǎn)單描述如下:
(1)將原視頻序列按奇偶位分成兩個(gè)序列a1,a3,…,a2n-1和a2,a4,…,a2n。
(2)對(duì)以上兩個(gè)序列進(jìn)行按位異或運(yùn)算a1,a3,…,a2n-1XORa2,a4,…,a2n,得到一個(gè)新的序列:c1,c2,…,Cn。
(3)選擇一個(gè)加密函數(shù)E(最初用DES)對(duì)偶數(shù)序列a2,a4,…,a2n進(jìn)行加密得到E (a2,a4,…,a2n),最后將序列C1,C2,…,cm,E(a2,a4,…,a2n)組合作為加密結(jié)果。
這種加密模式對(duì)已知明文攻擊有很好的抵抗力,因?yàn)槊恳粠用軙r(shí)都要進(jìn)行密鑰的變更對(duì)唯密文攻擊也有很強(qiáng)的免疫力,因?yàn)槲芪墓羰峭ㄟ^(guò)頻率分析得出的,也就是要找到一對(duì)(a,b)使得以XOR b=c統(tǒng)計(jì)表明這種概率最多是10-5,所以攻擊極其困難。
第四類(lèi)是將壓縮和加密過(guò)程相結(jié)合的方法一般來(lái)說(shuō),加密應(yīng)當(dāng)在壓縮之后進(jìn)行,因?yàn)榧用苤笤賶嚎s將會(huì)因密文數(shù)據(jù)的隨機(jī)性而降低壓縮性能但有時(shí)MPEG的壓縮和選擇性加密會(huì)相互矛盾,此時(shí)必須在兩者之間進(jìn)行權(quán)衡此類(lèi)研究都是針對(duì)不同的視頻格式進(jìn)行的比如有一種典型的Zig-Zag置換加密算法,在MPEG-1的編碼過(guò)程中將8*8塊映射到1*64的向量時(shí)不使用原來(lái)的映射順序,而用一個(gè)隨機(jī)映射表來(lái)代替之這種方法在加解密上的開(kāi)銷(xiāo)極小,但是它卻造成了圖像尺寸的增加,這與數(shù)據(jù)壓縮的目標(biāo)背道而馳,因而是不合適的。
第五類(lèi)是標(biāo)志位(Sign Bit)加密法這是通過(guò)隨機(jī)密鑰來(lái)改變所有DCT系數(shù)和運(yùn)動(dòng)向量的標(biāo)志位來(lái)實(shí)現(xiàn)加密的方法如下:
假設(shè)k= b1b2.--bm是長(zhǎng)度為m的隨機(jī)密鑰,加密函數(shù)選為:
Ek(s)=…(b1XOR s1)…(bmXORsm)(b1 XOR sm+1)…(bn XOR s2m)…
這里S1S2,Smsm+1,.S2n…是所有DC系數(shù)和AC系數(shù)的標(biāo)志位加密函數(shù)將DCT系數(shù)的標(biāo)志位進(jìn)行了隨機(jī)的改變?cè)摲椒ㄒ脖环Q(chēng)為VEA,其安全性不夠高另有兩種對(duì)它的改進(jìn)方法MVEA和RVEA。
第六類(lèi)是將流密碼和分組密碼結(jié)合起來(lái)實(shí)現(xiàn)高效的數(shù)據(jù)加密。
上述方法中無(wú)論如何處理視頻,大都要和常規(guī)加密算法結(jié)合使用,比如VEA中就用到了DES算法,選擇性加密時(shí)也要對(duì)被選中的部分進(jìn)行加密運(yùn)算無(wú)論怎樣考慮,流媒體傳輸?shù)膶?shí)時(shí)性是一個(gè)重要參數(shù),而實(shí)時(shí)性與加密速度有著很大的關(guān)系。
四、加密速度對(duì)實(shí)時(shí)性的影響分析
從上面的分析看到,有多種加密算法可用來(lái)對(duì)流媒體數(shù)據(jù)加密,但要確定某種算法是否實(shí)用,要看它是否影響流媒體的實(shí)時(shí)播放效果基于這樣的思路來(lái)進(jìn)行分析在MPEG-1數(shù)據(jù)流的編碼過(guò)程中,每個(gè)數(shù)據(jù)幀的幀頭信息中都包含了該幀相對(duì)于系統(tǒng)頭的解碼時(shí)間,在實(shí)際運(yùn)行中,通過(guò)這個(gè)解碼時(shí)間我們就可以判斷出某一幀是否能夠按時(shí)解碼,也可以判斷出有多少時(shí)間可以用來(lái)進(jìn)行解密。
因?yàn)橐粋€(gè)數(shù)據(jù)流中,數(shù)據(jù)幀的大小不同,在網(wǎng)絡(luò)傳輸時(shí)可能出現(xiàn)這樣的情況:較小的幀用一個(gè)數(shù)據(jù)包就能夠容納得下,而較大的幀可能會(huì)被分裝在若干個(gè)數(shù)據(jù)包中。對(duì)于這些被分割的幀,由于每包都要分別加解密,將會(huì)帶來(lái)較大的延時(shí),如果它們能夠?qū)崿F(xiàn)實(shí)時(shí)加解密,那小幀自然不成問(wèn)題,因此我們可以只需考慮大數(shù)據(jù)幀的情況,假設(shè)在M PEG流中某一幀相對(duì)于系統(tǒng)流中第一幀的解碼時(shí)間為D,而實(shí)際得到的第一幀的解碼時(shí)間為D1,那么當(dāng)前幀的指定解碼時(shí)間以應(yīng)當(dāng)是:a=D1+D。
將這個(gè)指定解碼時(shí)間日與該幀的最后一個(gè)包到達(dá)客戶(hù)端的時(shí)間b相比,如果b晚于a,就說(shuō)明該幀因某種原因已經(jīng)遲到了,此時(shí)加解密已經(jīng)不可避免地影響到了播放的實(shí)時(shí)性如果b早于a,那么兩者之間的差值即是可用來(lái)解密該數(shù)據(jù)包的時(shí)間。
對(duì)任一數(shù)據(jù)幀,客戶(hù)端都是在收到它的所有數(shù)據(jù)包之后才開(kāi)始解碼播放的我們來(lái)分析最長(zhǎng)的數(shù)據(jù)幀,如果它能夠在a-b內(nèi)解密完畢,其他的幀解密自然不成問(wèn)題因此,若在a-b時(shí)間段之內(nèi)該幀的最后一個(gè)數(shù)據(jù)包能夠解密完畢,我們就認(rèn)為所用的解密算法可以滿(mǎn)足實(shí)時(shí)播放的要求。
設(shè)這個(gè)最長(zhǎng)幀共包含n個(gè)數(shù)據(jù)包,每個(gè)包需要的解密時(shí)間為t,所以,應(yīng)當(dāng)有:t<a-b,即:解密速度>包長(zhǎng)/(a-b)。
從而得出以下結(jié)論:對(duì)某一個(gè)MPEG-1數(shù)據(jù)流來(lái)說(shuō),只有解密速度>數(shù)據(jù)包長(zhǎng)/(該幀的指定解碼時(shí)間一該幀最后數(shù)據(jù)包的到達(dá)時(shí)間)的加密算法才能夠滿(mǎn)足實(shí)時(shí)加密的要求。
小知識(shí)之流媒體
所謂流媒體是指采用流式傳輸?shù)姆绞皆贗nternet播放的媒體格式。 流媒體又叫流式媒體,它是指商家用一個(gè)視頻傳送服務(wù)器把節(jié)目當(dāng)成數(shù)據(jù)包發(fā)出,傳送到網(wǎng)絡(luò)上。用戶(hù)通過(guò)解壓設(shè)備對(duì)這些數(shù)據(jù)進(jìn)行解壓后,節(jié)目就會(huì)像發(fā)送前那樣顯示出來(lái)。



