基于偽隨機(jī)序列的宏塊置亂視頻加密方法

目前,已有不少利用數(shù)字視頻信號(hào)特征的加密方法被提出,但都不完善,不能同時(shí)滿(mǎn)足安全性、實(shí)時(shí)性以及低成本的要求。下面我們將介紹的這款視頻加密方法,充分利用了視頻數(shù)據(jù)的碼流結(jié)構(gòu)特點(diǎn),在不改變碼流語(yǔ)法的基礎(chǔ)上,將每個(gè)視頻幀內(nèi)的宏塊按照置亂矩陣進(jìn)行置亂,從而達(dá)到解碼后的圖像無(wú)法識(shí)別的目的。

一、視頻數(shù)據(jù)碼流結(jié)構(gòu)及宏塊置亂技術(shù)

數(shù)字視頻技術(shù)在近十年得到飛速發(fā)展和廣泛應(yīng)用,這在很大程度上得益于其標(biāo)準(zhǔn)化活動(dòng)。國(guó)際標(biāo)準(zhǔn)化組織于1986年成立了運(yùn)動(dòng)圖像專(zhuān)家組MPEG(Moving Picture Expert Group),主要致力于制定運(yùn)動(dòng)圖像的壓縮編碼標(biāo)準(zhǔn)。該專(zhuān)家組從1993年起至今正式編輯出版了MPEG1、MPEG2、MPEG4等一序列的標(biāo)準(zhǔn)。與此同時(shí),國(guó)際電信聯(lián)盟ITU-T 從1990年起至今接連發(fā)布了H.261、H.263及H.264等一序列的標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)極大地促進(jìn)了視頻編碼技術(shù)的迅速發(fā)展和廣泛應(yīng)用。

MPEG和H26序列都按嚴(yán)格結(jié)構(gòu)組織圖像數(shù)據(jù)。例如,H263視頻通過(guò)4層結(jié)構(gòu)來(lái)管理,從外到內(nèi)分別是圖像層(Picture_Layer)、塊組層(Group_of_blocks_layer)、宏塊層(Macro_block_layer)、塊層(Block_layer)。它們都由一個(gè)標(biāo)志信息頭開(kāi)始(塊層除外),后接圖像數(shù)據(jù)。MPEG4視頻按對(duì)象管理,分層與此類(lèi)似。各層頭信息是一些很容易從數(shù)據(jù)流中分辨出來(lái)的特殊碼字組合,起同步和指示數(shù)據(jù)結(jié)構(gòu)的作用。

本文提出的視頻加密方案就是基于這種結(jié)構(gòu),先對(duì)編碼后的視頻數(shù)據(jù)進(jìn)行分析,對(duì)結(jié)構(gòu)部分保持不變,對(duì)圖像數(shù)據(jù)部分以宏塊為單位,按照置亂矩陣置亂,從而達(dá)到視頻文件加密的目的。此方案適用于所有基于這種結(jié)構(gòu)的標(biāo)準(zhǔn),包括H.26序列和MPEG序列。

本文采用偽隨機(jī)序列來(lái)產(chǎn)生置亂矩陣。每幀使用一個(gè)不同的置亂矩陣置亂。解密端采用同步的偽隨機(jī)序列就可以進(jìn)行解密。使用偽隨機(jī)序列產(chǎn)生置亂矩陣,可以避免傳遞置亂矩陣,而且每幀圖像都可以使用不同的置亂矩陣置亂。這為算法的安全性提供了有效的保障,同時(shí)也沒(méi)有增加碼流。

二、偽隨機(jī)序列生成及加密置亂矩陣的產(chǎn)生

1、偽隨機(jī)序列的生成

本文采用的偽隨機(jī)序列為m序列。它由一個(gè)n階的線(xiàn)性反饋移位寄存器(LFSR)生成。LFSR是一種研究得非常成熟得序列生成方法,已被廣泛地應(yīng)用于密碼技術(shù)、保密通信技術(shù)等方面。它通過(guò)一個(gè)有限長(zhǎng)的種子產(chǎn)生具有足夠長(zhǎng)周期和良好隨機(jī)性的序列。在傳遞、存儲(chǔ)序列時(shí),只須傳遞、存儲(chǔ)生成器的方法和種子。

一個(gè)n階LFSR能夠處于2n-1個(gè)內(nèi)部狀態(tài)中的一個(gè)。由n階LFSR所產(chǎn)生的序列長(zhǎng)度因反饋邏輯函數(shù)的不同而不一樣。最長(zhǎng)的序列為2n-1位。只有具有一定反饋邏輯函數(shù)的LFSR才能循環(huán)地通過(guò)所有2n-1個(gè)內(nèi)部狀態(tài),在重復(fù)之前才能夠產(chǎn)生2n-1位長(zhǎng)的偽隨機(jī)序列。滿(mǎn)足這個(gè)條件的反饋邏輯函數(shù)稱(chēng)作LFSR的本原多項(xiàng)式。由它生成的2n-1位長(zhǎng)的偽隨機(jī)序列被稱(chēng)為m序列。

由上可見(jiàn),一個(gè)本原多項(xiàng)式及其寄存器初始值完全確定了一個(gè)m序列生成器,只要找到了本原多項(xiàng)式,就能由它來(lái)構(gòu)成m序列發(fā)生器。但是尋找本原多項(xiàng)式并不是很容易的,尤其當(dāng)n次數(shù)較高時(shí),要把所有n次本原多項(xiàng)式的具體形式找出來(lái)是一項(xiàng)很繁瑣的工作,必須借助計(jì)算機(jī)來(lái)完成。這方面的工作已由前人完成,并已將計(jì)算結(jié)果制成表以供查用。

本方案采用的本原多項(xiàng)式為(1279,216,0)。這意味著使用1279位移位寄存器,通過(guò)對(duì)第1279,216和0位進(jìn)行異或產(chǎn)生一個(gè)新的位,則得到的LFSR將是最大長(zhǎng)度LFSR,在重復(fù)之前,它將循環(huán)地通過(guò)21279-1個(gè)值。本方案可以選用的不同階數(shù)的本原多項(xiàng)式,但是,為了保證安全性,應(yīng)該選用階數(shù)足夠大的。

2、加密置亂矩陣的產(chǎn)生

由于偽隨機(jī)序列具有良好的隨機(jī)性,所以我們可以用它來(lái)產(chǎn)生具有良好隨機(jī)性的置亂矩陣。具體方式是:

(1)得到宏塊總數(shù)M,求滿(mǎn)足條件(2k-1<M<2k)的k;

(2)用LFSR輸出k個(gè)新的位,用這k個(gè)新的位組成一個(gè)隨機(jī)數(shù);

(3)重復(fù)b得到M個(gè)隨機(jī)數(shù);

(4)用洗牌算法把這M個(gè)數(shù)映射到[1,M]上,產(chǎn)生[1,M]上隨機(jī)但不重復(fù)的M個(gè)整數(shù);

(5)用這M個(gè)整數(shù)組成置亂矩陣。

重復(fù)以上操作,可以得到多個(gè)不同的置亂矩陣,依次用于每個(gè)視頻幀中。

三、宏塊置亂方案及效果

1、宏塊置亂方案

本方案是對(duì)編碼后的碼流進(jìn)行置亂的。其總體思想是,首先視頻圖像數(shù)據(jù)經(jīng)過(guò)編碼壓縮得到了標(biāo)準(zhǔn)格式的視頻碼流數(shù)據(jù),然后對(duì)碼流進(jìn)行分析,得到每幀圖像中每個(gè)宏塊的起點(diǎn)和長(zhǎng)度信息,最后按照置亂矩陣對(duì)每幀圖像中的宏塊進(jìn)行置亂。

對(duì)碼流進(jìn)行分析,得到宏塊的信息方法如下:

(1)定義結(jié)構(gòu)體,保存宏塊的信息。結(jié)構(gòu)體定義如下:

typedef_struct

{

int_startadd;

//記錄宏塊起點(diǎn)相對(duì)緩沖區(qū)起點(diǎn)的偏移bit數(shù)_int_length;

//記錄宏塊的數(shù)據(jù)的長(zhǎng)度,單位為bit

}

ShiftUnit;

(2)對(duì)碼流進(jìn)行分析,得到宏塊的起點(diǎn)和長(zhǎng)度信息,記到一個(gè)結(jié)構(gòu)體變量中。

(3)把此結(jié)構(gòu)體變量存放到申請(qǐng)的緩沖區(qū)中。

(4)重復(fù)操作,得到一幀圖像中所有宏塊的信息,組成一個(gè)宏塊信息表。

對(duì)碼流的置亂是按照下面的操作進(jìn)行的:

(1)根據(jù)得到的置亂矩陣對(duì)宏塊信息表進(jìn)行重新排列,得到置亂后的宏塊信息表。

(2)按照置亂后的宏塊信息表,將宏塊數(shù)據(jù)進(jìn)行移動(dòng),重新排列碼流數(shù)據(jù)。

(3)將置亂后得到的碼流寫(xiě)回緩沖區(qū),覆蓋編碼后的碼流,置亂完成。

2、宏塊置亂效果

下面的兩個(gè)圖中,圖1是沒(méi)有置亂的效果,圖2是置亂后的效果。所用的測(cè)試序列為的QCIF格式foreman序列。圖1和圖2是I幀的效果,對(duì)于P幀,由于是通過(guò)前一幀預(yù)測(cè)得到的,但是前一幀已經(jīng)被置亂,所以加密后的效果會(huì)更理想。圖3即為第157幀的加密效果。從圖中可以看出,無(wú)論是I幀還是P幀,圖像文件加密的效果都是比較理想的。

基于偽隨機(jī)序列的宏塊置亂視頻加密方法

四、加密方案的安全性分析

1、唯密文攻擊

攻擊者在截取了密文之后,可以采用窮舉法和統(tǒng)計(jì)法,對(duì)置亂后的圖像進(jìn)行攻擊。攻擊要分為以下幾步:

(1)根據(jù)密文得到相應(yīng)的明文;

(2)對(duì)比密文和明文得到置亂矩陣;

(3)根據(jù)置亂矩陣,按照本方案相反的算法得到n階LFSR的一個(gè)狀態(tài);

(4)根據(jù)公開(kāi)的n階m序列本原多項(xiàng)式和已知的這個(gè)狀態(tài),用算法產(chǎn)生一個(gè)周期的m序列。

(5)根據(jù)得到的m序列破解其它視頻幀。

下面我們對(duì)以上的攻擊方法進(jìn)行復(fù)雜度分析。由于視頻圖像是由3種類(lèi)型的幀組成的,即I幀、P幀和B幀。P幀和B幀大多數(shù)宏塊是通過(guò)和前一幀相應(yīng)宏塊預(yù)測(cè)得到的,前一幀相應(yīng)的宏塊已經(jīng)被置亂,所以攻擊者是無(wú)法對(duì)P幀和B幀用窮舉法復(fù)原得到完整的圖像的,也就無(wú)法根據(jù)密文得到相應(yīng)的明文??梢圆扇〉姆椒ㄊ菍?duì)I幀用窮舉法。對(duì)第1步,我們假設(shè)攻擊者截取了一幀置亂后的I幀的圖像,企圖采取窮舉法復(fù)原圖像得到明文。如果圖像是QCIF格式的(每幀有99個(gè)宏塊),則要進(jìn)行窮舉的最大次數(shù)是99的階乘,約為10+156次。對(duì)于CIF格式,由于其有396個(gè)宏塊,要進(jìn)行的窮舉次數(shù)就更多。所以破解第1步是很困難的。

2、已知明文攻擊

如果攻擊者知道了密文和相應(yīng)的明文,那么其攻擊就是唯密文攻擊的第2步~第5步。具體要分以下幾步:

(1)對(duì)比密文和明文得到置亂矩陣;

(2)基于統(tǒng)計(jì)特征得到LFSR的階數(shù)n;

(3)截取連續(xù)的n位作為n階LFSR的一個(gè)狀態(tài);

(4)用可能的本原多項(xiàng)式和這個(gè)狀態(tài)進(jìn)行運(yùn)算,得到一個(gè)完整的m序列;

(5)用得到的m序列破解其它視頻幀。

下面我們對(duì)其攻擊方法的復(fù)雜度進(jìn)行分析。對(duì)于第1步,攻擊者是很容易對(duì)比密文和明文得到置亂矩陣的。對(duì)于第2步,其破譯方法是利用m序列的游程特性及序列本身的遞推關(guān)系,徹底還原產(chǎn)生該m序列的線(xiàn)性反饋移位寄存器。但是本方案采用的是1279階的LFSR,攻擊者在僅知道一個(gè)置亂矩陣還原得到的部分序列下,是無(wú)法得到足夠的游程統(tǒng)計(jì)特征的,所以也就無(wú)法破解。

對(duì)于第3步,攻擊者不一定可以得到連續(xù)的n位來(lái)作為n階LFSR的一個(gè)狀態(tài)。分析如下:對(duì)于本方案,QCIF格式的視頻,每幀有的最大宏塊數(shù)為11×9,即99個(gè)宏塊。那么生成一幀圖像的置亂矩陣就要99個(gè)數(shù)字,每個(gè)數(shù)字用7位表示就足夠了。所以攻擊者如果截取一個(gè)QCIF格式的視頻幀,得到了它的置亂矩陣,那么他最多只可以得到m序列的99×7位,這遠(yuǎn)小于我們使用的階數(shù)1279。所以,攻擊者無(wú)法僅通過(guò)一幀的數(shù)據(jù)來(lái)得到n階LFSR的一個(gè)狀態(tài)。所以也就無(wú)法破解。

3、應(yīng)對(duì)攻擊的方法

從以上的分析中,我們可以看出本方案可能受到的攻擊。為了增加安全性,可以從以下方面做些改進(jìn),從而有效地避免攻擊。

對(duì)于唯密文攻擊,攻擊者的主要任務(wù)是破解第1步。P幀和B幀由參考幀得到,所以無(wú)法破解。I幀從理論上是可以直接破解的,其主要難度在計(jì)算量上。為了增加破解的難度,對(duì)于I幀,我們可以結(jié)合其它的加密方案,進(jìn)一步增加安全性??蛇x的其它加密方案有加密DC系數(shù)值。加密算法可以選用高強(qiáng)度的AES加密算法。

對(duì)于已知明文攻擊,攻擊者的主要任務(wù)是破解第3步。為了增加破解的難度,可以采取的一種辦法是加大LFSR的階數(shù)。從上面的分析可以看出,對(duì)于QCIF格式,LFSR的階數(shù)n大于99×7就可以了。但是對(duì)于CIF格式,則要大于___396×9。這樣,攻擊者就無(wú)法僅通過(guò)一幀數(shù)據(jù)得到n階LFSR的一個(gè)狀態(tài),所以就無(wú)法破解。另外一種辦法是重復(fù)利用LFSR輸出的位。例如,對(duì)于LFSR輸出的10位,我們?nèi)∏?位得到一個(gè)整型數(shù),取后7位得到另外一個(gè)整型數(shù)。這樣我們就重復(fù)利用了其中的4位,LFSR一個(gè)狀態(tài)的所有位就不會(huì)同時(shí)出現(xiàn)在一個(gè)置亂矩陣中。

五、加密方案的速度分析

在本方案中,影響加密速度的主要有兩個(gè)部分:偽隨機(jī)序列的產(chǎn)生和碼流按照宏塊來(lái)置亂。其中宏塊置亂操作比較快,只是些緩沖區(qū)的數(shù)據(jù)拷貝操作,對(duì)加密速度的影響不大。本方案的偽隨機(jī)序列是用軟件的方式產(chǎn)生的,所以算法的好壞直接影響到加密的效率。對(duì)于偽隨機(jī)序列的產(chǎn)生,已經(jīng)有很多研究,讀者可以參閱其它資料。

小知識(shí)之宏塊

在視頻編碼中,一個(gè)編碼圖像通常劃分成若干宏塊組成,一個(gè)宏塊由一個(gè)亮度像素塊和附加的兩個(gè)色度像素塊組成。一般來(lái)說(shuō),亮度塊為16x16大小的像素塊,而兩個(gè)色度圖像像素塊的大小依據(jù)其圖像的采樣格式而定,如:對(duì)于YUV420采樣圖像,色度塊為8x8大小的像素塊。每個(gè)圖象中,若干宏塊被排列成片的形式,視頻編碼算法以宏塊為單位,逐個(gè)宏塊進(jìn)行編碼,組織成連續(xù)的視頻碼流。