分享常見的視頻加密算法原理及其優缺點

近期關注視頻加密領域知識,看到這篇文章對於想了解加密的人羣有很大幫助,因此轉載到這裏和大家一起分享。本文主要是介紹常見的視頻加密算法原理和過程,以及每種方法的優缺點。

 

1. 全部加密(Naive Algorithm)

也就是使用標準 加密方法(比如DES)加密整個視頻流。將視頻比特流同傳統的文本數據同樣對待,沒有利用視頻壓縮後數據流的特殊結 構。這種方法顯然計算量巨大,很難保證視頻的實時傳輸。

2. 選擇性加密(Selective Algorithm)

選擇性 加密是基於信源特徵的視頻加密方法的主要方向,其中可分爲以下幾類:

(1) 基本的選擇性加密算法是基於視頻 IPB幀結構的。這其 中最有代表性且最早提出的一種加密方法是僅僅加密I幀。然而, Agi and Gong 表明由於幀間的相關性和主要是由於P幀和B幀中的I-block沒有加密,這種僅加密I幀的方法不能達 到一個令人滿意的密級。這樣,有人提出加密I幀的同時還應加 密PB幀中的 I塊。但這樣增大 了計算量,同時視頻圖像中的運動信息也沒有被加密,保密性仍不夠好。

於是,有人提出 利用提高視頻序列中I幀頻率的方法來 增加加密的內容從而提高密級。但這樣很明顯會增大加密的數據量,大大增加計算量,同時減小視頻壓縮率。

(2) 僅加密頭信息的方法:MPEG、H26X序列都按一定結構組織圖像數據。例如,圖片組、圖片(幀)、片組、片、宏塊組、宏塊等 ,都由一個頭信息開始,後接圖像數據。經編碼後的視頻數據,要按標準規定的特定結構排列組織,收方按相同 的標準結構解碼,才能正確恢復原視頻圖像。

該算法的原理是對這些頭信息數據加密,將其變成隨 機序列,再與其它數據混合,使接收方在不知道密鑰的情況下難以區分結構信息數據和視頻信息數據,更難以知 道數據結構和數據的具體內容,難以按原數據結構解碼接收到的視頻編碼數據,無法獲得原圖像,達到加密目的 。

該算法僅加密頭信息,安全性較低。因爲按照編碼標 準,頭信息具有固定的位置和內容,所以含信息量很小,加密的意義不大。只要能分辨出頭信息和視頻數據,就 可以恢復視頻圖像,並且一旦知道頭信息,密鑰和密碼算法也很容易破譯。事實上,基於MPEG、H26x等標準的視頻數據結構比較固定,視頻數據本身又有很強的特徵,這種加密方式比較 容易破譯。

該算法不降低壓縮率。增加計算量很小,適用於各種 標準視頻或圖像壓縮編碼數據。

經過該算法加密的視頻編碼數據沒有通用的數據結構 信息,全部爲隨機序列。爲便於合法收方接收,需加入加密同步信息,或保留原來部分同步信息,只加密其它結 構信息。如果加密結構信息誤碼,合法收方恢復視頻圖像也很困難。

(3) Meyer and Gadegast 設計了一種新的似MPEG比特流,稱之爲 SECMPEG。SECAM既能使用標準加密算法DES和RSA又能實現不同級別的密級。但SECMPEG與標準的MPEG不兼容,需要設計專門的編解碼器。

第一級:加密所 有的頭信息(Headers)

第二級:加密所 有的頭信息(Headers)和I-Block中的DC和AC係數

第三級:加密 I幀和 PB幀中的所有 I-Block

第四級:加密所 有的數據

(4) 選擇性加密的另一個主要的方向是由Bharat Bhargava等提出的加密DCT符號,運動矢量MV符號。文獻[5]中將僅加密I幀的DCT符號位的方法稱爲VEA算法。第二種方 法除了加密I幀,還要加密 PB幀的 DCT符號位和運動矢量MV的符號位稱之爲MVEA算法。相對保密性要好得多的第三種方法是使用 密鑰加密(如DES或IDEA)的密碼學算法來對DCT係數或運動矢量 MV符號位進行加密 ,作者稱之爲RVEA算法。

選擇性加密的保 密性根據具體使用什麼方法而定,一般選擇性加密的計算量不大,且通常不會增大碼流大小(改變I幀頻率的選擇性 加密算法除外)。

3. Zig-Zag置亂算法(Zig-Zag Permutation Algorithm)

Zig-Zag置亂算法的基本思想:使用一個隨機的置亂序列來代替 Zig-Zag掃描順序,來將各個8×8塊的DCT係數映射成一個1×64矢量。

基本算法由三步組成,步驟如下:

(1)產生一個基數爲64的置亂序列表;

(2)把DC係數分成兩個較小值的數。假設 DC是二進制數d7d6d5d4d3d2d1d0,將它分成兩個數d7d6d5d4和d3d2d1d0,它們的範圍都在[0,15]。然後將DC系 數置爲d7d6d5d4,將原最後一個AC係數置爲d3d2d1d0。(這種分離處理是基於以下兩點:(1)通常DC係數值 遠大於AC係數值,因此亂序後很容易被識別。分離變小後就難於從AC係數中區分出來;(2)最末一個AC係數作 用很小,通常爲0,可以用其存放d3d2d1d0,恢復時取0值,不影響圖象質量,也不增加數據量。)

(3)用隨機置亂序列表將經分離處理的8× 8塊映射成1×64序列(vector)。

該算法設計者自己指出,上述基本 算法對已知明文攻擊是脆弱的,因此提供了兩種附加方法增強算法的安全性(security):

方法1: 將每8個塊分成一組,把8個DC係數組合在一起(每系 數8位,恰好64位),然後運用DES加密。加密的結果按字節映射回到8個塊中,然後(按上面1~3步驟)用分離 過程和置亂對每塊進行加密。

方法2: 產生兩張不同的置亂序列表(表1和表2),對每個8×8 塊拋擲硬幣,反面用表1,正面用表2。拋幣產生的正反序列和兩張表作爲密碼。

Zig-Zag置亂算法有嚴重的安全性問題[1]。文獻[1]提供兩種可以成功破解該算法的方法。Zig-Zag置亂算法速度很 快,不影響視頻的實時傳輸。但是經過加密的視頻壓縮後碼流大小將顯著增加。因爲運用非zig-zag順序將8×8塊映射到1×64的矢量,將會極大減少連續零個數,從而減少壓縮率。文獻[1]表明 視頻流大小經加密後增加可達46%(表中最大值)。考慮到MPEG視頻流數據量的巨大,這種大小增量是很難容 忍的。

4.改變 Huffman碼錶算法

改變Huffman碼錶的視頻加密算法原理是:對於熵 編碼用Huffman編碼的視頻編碼標準,將通用Huffman碼錶修改後使用,修改後的特殊 Huffman碼錶作爲密鑰。非法接收方無此特殊碼錶,不能正確解碼視頻(圖像)信息。

該算法的安全性取決於保持壓縮率不變的前提下, Huffman碼錶的可變空間(密碼空間)。文獻[8]做了定量的分析。

改變Huffman碼錶,一般會降低 壓縮率。Huffman編碼是對數據流中出現頻率高的位組合模式對應短碼字,出現頻率低的位組合模式對應長碼字, 達到縮短平均碼字,壓縮數據的目的。Huffman碼錶通過統計碼流中各種位組合模式出現的概率製作。本算法在改 變各組合模式對應的Huffman碼字時,保持對應碼字長度不變,即保持了特定出現概率的組合模式對應的特定碼字 長度不變,也就保持了原壓縮率不變。

該算法完全不增加計算量。適用於使用Huffman編碼的各種視頻和圖像壓縮編碼標準和算法。其缺點是安全性較差(密鑰空間小)。

5. 基於統計規律的視頻加密算法

基於統計規律的 視頻加密算法在文獻[1]中稱 之爲VEA算法(Video Encryption Algorithm)。文獻[1]認爲,壓縮和 加密之間具有共同點,即兩者都致力於去除冗餘信息(Redundant information)。經MPEG壓縮編碼的碼流具有一定的隨機性。文獻[1]把碼流分成以字節爲單元的流,每字節單元的 值爲整數0~255。按字節測試統計(Byte-by-Byte),編碼後字節值在0~255上的分佈接近均勻,最高的字節出現 頻率低於0.0178, 方差爲10-6。最高相鄰字節對(digrams:pairs of two adjacent numbers)的出現頻率低於10-4,因此提出以下設想:將I幀分爲8或16(通常16)大塊( chunk),在任何chunk中,沒有重複的字節模式。依據這個設想提出下面的VEA算法。

(1)設一I幀的某個chunk爲如下形式:a1 ,a2,a3,a4,...,a2n-1,a2n。

(2)選擇奇數號的字節組成奇隊列(Odd List),選擇偶數號的字節組成偶隊列(Even List)。

(3)將兩個新數據流異或

 

(4)選擇一種加密函數(例如DES)來加 密偶隊列a2,a4,...,a2n。得到的密文爲:c1,c2,…,cn, E(a2,a4,…,a2n).

容易看出:如果a2a4…a2n沒有 重複模式(repeated pattern),VEA算法密級就決定於function E。 因爲a2,a4,…,a2n對a1,a3,…,a2n-1雖是簡單異或,卻是一次一 密亂碼本(one-time pad)加密密鑰,這是公認非常保密的。

該方法不加密頭信息結構格式等數據,只加密圖像數 據本身。將待加密數據分爲兩半,一半用密碼方法(函數E)加密,另一半用簡單異或,因 此總體減少了計算量,提高了計算速度。前一半的計算速度取決於E。

該方法不影響壓縮率。適用於壓縮的視頻(或圖像) 編碼數據,而且壓縮效果越好,加密效果也越好。

6. 純置亂算法 (Pure Permutation Algorithm)

基於上一節中的 統計結果,我們知MPEG視頻的字節流有一個非常低的字節對出現頻率。因此,通常的利用數據頻率,字節對頻率特性等密碼 分析方法對此沒有用(至少很難)。

Pure Permutation Algorithm 應運而生:Pure Permutation Algorithm簡單的置亂字節流。置亂密碼序列的基數是根據密級和應用需求動態 可變的。比如我們可以用64個數的置亂序列 或 一個長的 I幀的 1/8的置亂序列。

Pure Permutation Algorithm的問題在於它對已知明文攻擊非常脆弱。

一旦通過比較密文和已知原始幀數據,獲取了隨機置亂序列,所有的幀將很容易被破譯。爲了找出隨機置亂序列 ,我們需要已知隨機序列長度倍數大小的明文。然而注意到MPEG數據流的單一性(unicity)和幀 大小在同一個數量級上,因此基於Shannon’s Theorem,如果已知一個I幀數據足以破譯整個隨機序列。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章