標籤:
http://www.jiamisoft.com/blog/11238-liumeitijiamijishu.html
隨著Internet的飛速發展和網上多媒體應用的普及,數字著作權和隱私權的保護已成了一個愈來愈令人關注的問題,媒體資源的安全 也就成了一個熱點的研究課題,而加密技術是保護媒體資源安全最重要的技術手段之一。筆者從傳統密碼技術入手,在結合流式媒體的特徵基礎上對其加密/解密機 制進行了深入的研究目的是將傳統的密碼技術與新興的流媒體技術相結合,實現多媒體資料的即時加密保護。
一、用常規密碼對流媒體加密的總體分析
現代密碼學根據加密金鑰使用方式的不同,將密碼體制分成兩大類:對稱密碼體系和非對稱密碼體系對稱密碼體系中加解密雙方所用密鑰相同,而非對稱密碼體系中加密和解密使用的不是同一把密鑰兩種密碼體制各有利弊,分別適用於不同的應用場合。
在串流過程中,伺服器在發送資料時進行加密,用戶端在播放前進行解密加解密都是針對流化了的媒體流進行的,也就是說欲加密的明文是一個資料包或其中的一部分,而不是整個多媒體檔案串流加密模型1所示。
那麼,在使用常規密碼技術對流媒體資料進行安全保護時,應當考慮哪些因素呢?通過分析研究,我們認為至少應當考慮以下幾點。
一是密碼體制的選擇
首先要考慮使用公開金鑰密碼還是對稱密碼流媒體傳輸要求很強的即時性,資料量又很大,而公開金鑰密碼演算法的計算都比較複雜,效率較低,這就限制了只能使用對 稱密碼體制進行媒體資料流的加密對稱密碼體制中又有分組密碼和序列密碼之分,兩者都可用於串流。因為通訊過程中媒體資料本來就是被成塊處理和傳輸的, 因此可以使用分組密碼,這樣做的另一個好處是一個密文塊中的傳輸錯誤不會對其他塊產生影響,也就是不存在塊間的錯誤擴散使用流密碼是因為它加密速度快,處 理簡單。
二是密碼編譯演算法的選取
每一種密碼體制都存在多種標準演算法,每種演算法的效能和安全性也有所差異所以,應當根據應用的特點和網路的狀況,在保密性和實現代價之間做出權衡後, 選用一種合適的演算法當然也可以自行設計合適的密碼編譯演算法,只要保證有足夠的安全性具體到某個演算法中還應考慮許多其他因素,如分組長度和密鑰長度的選取等等, 都會對加密速度和安全性產生直接的影響。
三是工作模式的選擇
任一種電腦加密程式都是按照某種固定的步驟和方式執行的,因此如果加密時明文和密鑰都相同,則必然得到相同的結果,而這樣資料保密性就會受到影響 因為在電腦系統中,由於資料結構和資料冗餘使得許多資料資訊都具有某種固有的模式,比如標準的多媒體檔案都具有一種固定的結構,一個資料庫中所有的記錄 也都具有相同的結構等等這樣經過加密程式的作用後,這些固定的格式就會在密文中露出痕迹為避免這些問題,可以使用資料預先處理技術和連結技術,不同的技術就 形成了分組密碼的不同工作模式。
常見的工作模式有電子編碼本模式(ECB)、密碼分組連結模式(CBG)、密碼反饋模(CFB)式和輸出反饋模式(OFB)。ECB使用同一個密鑰 將每個明文塊分別加密,各塊間相互獨立:在CBC方式中,每個明文塊在加密前先與前一個密文塊進行“異或”運算,增加了複雜度和密碼分析的難度CBC模式 的安全性較ECB好,因而受到廣泛使甩CFB和OFB類似於CBC方式,但是進行“異或”的量是獨立產生的在同一工作模式下可以選用不同的初始化向量進行 資料預先處理。
流媒體資料加密是對一個個的資料包進行的,也可以看成是對小資料檔案進行加密,工作模式可選用EBC或CBC方式但是,在對非壓縮的多媒體資料(如位元影像檔案等)進行加密時,由於其高度冗餘性,若簡單地選用ECB模式將無法掩蓋某些原始資訊,最好使用CBC模式。
四是資料填充的需要
採用分組密碼演算法時需要將明文根據分組長度來分成若干塊,實際應用中明文訊息通常比分組長得多,因此最後的分組可能是一個長度較小的短塊如何處理這些短塊呢?主要有三種方法:填
充法、密文挪用法和序列密碼加密法。
另外還有許多其它因素,如同步需要、密鑰管理原則等都需要考慮周全。
二、用序列密碼對媒體流加密
如Bit上述分Byte演算法中的分組長度隨為一個Bit或一個Byte,也就是將明文空間元素逐位或逐位元組地加密,這就是序列密碼(流密碼)的實現思想對流密碼而言,密鑰是一個與明文長度相同的序列加密時明文序列與密鑰流序列通過逐位元運算來實現加密,解密時以同步產生的密鑰流進行相反的變換,其基本原理2所示。
與普通分組密碼和公開金鑰密碼相比,序列密碼速度最快,即時性最好因此,序列密碼適用於資料量大且即時性要求高的流媒體加密,它也是目前軍事、外交領域應用的一種主流密碼體制。
序列密碼的強度完全依賴於密鑰序列的隨機性和不可預測性。另外,保持收發兩端密鑰流的精確同步也是實現可靠解密的關鍵技術所以,序列密碼的核心問題是密鑰流產生器的設計,一般可使用偽隨機數發生器密鑰流產生器需要一個加密金鑰作為輸入參數,如果同一個產生器每次都使用相同的加密金鑰,那麼它產生的密鑰流也總是相同胞所以,為了保證安全,不能重複使用相同的密鑰常見的產生器有基於線性和非線性移位寄存器的序列密碼、基於混沌的序列密碼等等下面就來研究用序列密碼如何對流媒體進行加密。
使用序列密碼加密,首先要把明文資訊如文本、映像、聲音等排成明文序列,再將它與密鑰序列逐位元組(位)進行“異或”運算產生密文序列,接收者用相同的密鑰序列對密文序列進行“異或”運算來恢複明文。
在用序列密碼對媒體流加密時,網路資料包的大小可以根據網路的需要來設定,與區塊編碼器不同,這裡需要考慮的僅僅是網路傳輸的需求。
整個加密過程是:播放過程一旦開始,密鑰流產生器就不斷地產生出密碼序列,伺服器也周期性地發送網路資料包在資料流化的過程中,將隨機數序列與資料包中的明文序列進行逐位(位元組)的異或運算後,再按照網路通訊協定進行打包解密端從網路上收到資料包後,先進行解鎖裝得到密文資料流,然後再與密鑰流進行異或運算得到明文。
三、MPEG-1加密方法的比較及分析
從多媒體檔案或即時的多媒體資料流中所含的資訊來看,大部分資料都是視頻資訊,因此以MPEG-1為例對視頻資料的加密法進行分析對於其他類型的多媒體檔案,也可以參照類似方法進行分析和處理。
MPEG系列都是有關運動映像和編碼的標型剮,每個標準又分為音頻和視頻兩個部分,以MPEG-1標準為例來說明其加密原理實現時,可以對M PEG-1系統流直接進行加密操作,也可以對音視頻流進行單獨的加密因為在進行資料的RTP打包時,可以將音視頻資料流分別打包形成兩路媒體流進行網路發送下面以其視頻流的加密方法進行比較與分析。
目前對M PEG-1視頻流加密的方法,歸納起來,可以分為以下幾大類:
第一類是完全加密法這種演算法把視頻資料與一般的文本資料同等對待,完全不考慮視頻本身的特點它首先把映像肩見頻的二維或三維結構變為一維的資料流,再使用DES、AES等標準演算法直接將資料逐位進行加密,其優點之一是安全性高,優點之二是加密可以免去考慮媒體資料格式的區別,這樣無論對於MPEG格式、ASF格式還是RM等格式的媒體資料均可以採用統一的加密方法缺點是開銷較大。
第二類是選擇性加密法總的來說,這類方法是通過分析MPEG視頻結構上的特點之後,有選擇地對部分資料進行加密雖然只是對部分資料加密,加密後的位流已經不再具有標準的MPEG結構特點,因此實現了資料保密要對加密後的視頻資料進行破解,攻擊者面臨著兩大難題,一是必須找出哪一部分資料被加密了,二是找到後還要知道如何進行解密選擇性加密由於只對部分敏感性資料進行加密,從而減小了開銷。
可以根據不同的應用需求來選擇不同的選擇性加密方案,常見的有以下幾種選擇方案。
(1)是選擇對視頻序列中所有的I幀進行加密因為P幀只記錄了與其前面J幀進行比較的差分資訊,B幀只記錄了與其前後的,P幀相比較的差分資訊,I幀資訊一旦被加密,B幀和P幀便失去意義但由於資料的幀間關聯,僅僅加密,幀後仍然能夠暴露出一些資訊,這些資訊主要來自於B幀和P幀中的I塊。
(2)對視頻序列中所有,幀進行加密的同時,再選擇對B幀和P幀中的,塊進行加密,以提高安全性,但這樣增加了尋找,塊的開銷:因為,幀占整個視頻的30%~60%,再加上尋找,塊,其開銷已接近於全部加密。
(3)選擇對視頻序列頭加密,因為序列頭中包含瞭解碼所需的一些初始化參數,像大小、幀率、位率以及緩衝區的大小等等,對頭部資訊加密就使得標準解碼器無法識別出視頻流,從而達到了加密的目的要進一步增加安全性,可以同時對視頻序列尾進行加密。
上述幾種選擇加密法可單獨選用也可綜合使用,還可制定其他的選擇方案。
第三類是VEA視頻密碼編譯演算法這種方法是基於MPEG-1視頻序列的統計特性,演算法簡單描述如下:
(1)將原視頻序列按奇偶位分成兩個序列a1,a3,…,a2n-1和a2,a4,…,a2n。
(2)對以上兩個序列進行按位異或運算a1,a3,…,a2n-1XORa2,a4,…,a2n,得到一個新的序列:c1,c2,…,Cn。
(3)選擇一個加密函數E(最初用DES)對偶數序列a2,a4,…,a2n進行加密得到E (a2,a4,…,a2n),最後將序列C1,C2,…,cm,E(a2,a4,…,a2n)組合作為加密結果。
這種加密模式對已知明文攻擊有很好的抵抗力,因為每一幀加密時都要進行密鑰的變更對唯密文攻擊也有很強的免疫力,因為唯密文攻擊是通過頻率分析得出的,也就是要找到一對(a,b)使得以XOR b=c統計表明這種機率最多是10-5,所以攻擊極其困難。
第四類是將壓縮和加密過程相結合的方法一般來說,加密應當在壓縮之後進行,因為加密之後再壓縮將會因密文資料的隨機性而降低壓縮效能但有時MPEG的壓縮和選擇性加密會相互矛盾,此時必須在兩者之間進行權衡此類研究都是針對不同的視頻格式進行的比如有一種典型的Zig-Zag置換密碼編譯演算法,在MPEG-1的編碼過程中將8*8區塊對應到1*64的向量時不使用原來的映射順序,而用一個隨機映射表來代替之這種方法在加解密上的開銷極小,但是它卻造成了映像尺寸的增加,這與資料壓縮的目標背道而馳,因而是不合適的。
第五類是標誌位(Sign Bit)加密法這是通過隨機密鑰來改變所有DCT係數和運動向量的標誌位來實現加密的方法如下:
假設k= b1b2.–bm是長度為m的隨機密鑰,加密函數選為:
Ek(s)=…(b1XOR s1)…(bmXORsm)(b1 XOR sm+1)…(bn XOR s2m)…
這裡S1S2,Smsm+1,.S2n…是所有DC係數和AC係數的標誌位加密函數將DCT係數的標誌位進行了隨機的改變該方法也被稱為VEA,其安全性不夠高另有兩種對它的改進方法MVEA和RVEA。
第六類是將流密碼和分組密碼結合起來實現高效的資料加密。
上述方法中無論如何處理視頻,大都要和常規密碼編譯演算法結合使用,比如VEA中就用到了DES演算法,選擇性加密時也要對被選中的部分進行加密運算無論怎樣考慮,流媒體傳輸的即時性是一個重要參數,而即時性與加密速度有著很大的關係。
四、加密速度對即時性的影響分析
從上面的分析看到,有多種密碼編譯演算法可用來對流媒體資料加密,但要確定某種演算法是否實用,要看它是否影響流媒體的即時播放效果基於這樣的思路來進行分析在MPEG-1資料流的編碼過程中,每個資料幀的幀頭資訊中都包含了該幀相對於系統頭的解碼時間,在實際運行中,通過這個解碼時間我們就可以判斷出某一幀是否能夠按時解碼,也可以判斷出有多少時間可以用來進行解密。
因為一個資料流中,資料幀的大小不同,在網路傳輸時可能出現這樣的情況:較小的幀用一個資料包就能夠容納得下,而較大的幀可能會被分裝在若干個資料包中。對於這些被分割的幀,由於每包都要分別加解密,將會帶來較大的延時,如果它們能夠實現即時加解密,那小幀自然不成問題,因此我們可以只需考慮大資料幀的情況,假設在M PEG流中某一幀相對於系統流中第一幀的解碼時間為D,而實際得到的第一幀的解碼時間為D1,那麼當前幀的指定解碼時間以應當是:a=D1+D。
將這個指定解碼時間日與該幀的最後一個包到達用戶端的時間b相比,如果b晚於a,就說明該幀因某種原因已經遲到了,此時加解密已經不可避免地影響到了播放的即時性如果b早於a,那麼兩者之間的差值即是可用來解密該資料包的時間。
對任一資料幀,用戶端都是在收到它的所有資料包之後才開始解碼播放的我們來分析最長的資料幀,如果它能夠在a-b內解密完畢,其他的幀解密自然不成問題因此,若在a-b時間段之內該幀的最後一個資料包能夠解密完畢,我們就認為所用的解密演算法可以滿足即時播放的要求。
設這個最長幀共包含n個資料包,每個包需要的解密時間為t,所以,應當有:t<a-b,即:解密速度>包長/(a-b)。
從而得出以下結論:對某一個MPEG-1資料流來說,只有解密速度>資料包長/(該幀的指定解碼時間一該幀最後資料包的到達時間)的密碼編譯演算法才能夠滿足即時加密的要求。
小知識之流媒體
所謂流媒體是指採用串流的方式在Internet播放的媒體格式。 流媒體又叫流式媒體,它是指商家用一個視頻傳送伺服器把節目當成資料包發出,傳送到網路上。使用者通過解壓裝置對這些資料進行解壓後,節目就會像發送前那樣顯示出來。
流媒體加密(1)