基于H.264的幀異或視頻加密算法

針對現(xiàn)有視頻加密算法的不足,我們提出了一種基于H.264的幀異或視頻加密算法,該加密算法通過與保密的異或圖像異或產(chǎn)生低可理解度的疊加圖像達(dá)到加密效果,滿足了視頻實(shí)時(shí)通信時(shí)的加密要求,并且能夠作為通用插件植入現(xiàn)有的H.264編解碼器中。

一、基于H.264的幀異或視頻加密算法

1、加密算法思想

加密算法的基本思路是將密鑰決定的另一幀圖像異或在原始圖像幀上,對視覺重疊圖像進(jìn)行精心處理使其不明顯降低H.264視頻編碼效率,在保持視頻流能夠正常解碼的同時(shí)使非授權(quán)的圖像理解變得不可行。

以圖1為例說明這一加密原理。圖像幀(a)是重疊圖像,它雖然并不是近似噪聲圖像,但在安全要求并不十分高的網(wǎng)絡(luò)視頻應(yīng)用場合,這樣令人煩躁的圖像已經(jīng)達(dá)到了足夠的加密效果。事實(shí)上它是由圖像(b)和(b)反轉(zhuǎn)180°并向左下平移后的圖像幀(c)疊加產(chǎn)生的。遵循密碼協(xié)議的設(shè)計(jì)要求,假設(shè)異或平移操作是公開的,但圖像(c)需要合法密鑰才能獲得,則合法用戶可以容易地將圖像幀(a)與(c)二次異或還原原始圖像幀(b),非法用戶則只能看到可理解性極低的疊加圖像(a)。從密碼破譯角度看,不知道(c)的情況下從(a)恢復(fù)出(b)在計(jì)算上是困難的,并且必須包含人工的視覺理解過程。

幀異或視頻加密算法在整個(gè)視頻應(yīng)用的過程如圖2所示。

2、加密算法過程

首先以偽代碼形式說明幀異或視頻加密算法的異或(加密)過程。

幀異或視頻加密算法

輸入:待加密原始圖像序列Ori_Seq[N];由密鑰種子k生成的流密鑰Key_Str[t];滑動(dòng)窗口大小為2w

輸出:加密后的圖像序列Cry_Seq[N]

寄存器說明:i,j,k分別用于標(biāo)記當(dāng)前操作的原始圖像幀,異或圖像幀和流密鑰比特位;

1)從原始圖像序列中取出下一組以I幀開始的待加密原始圖像幀組(I幀后均為時(shí)空相關(guān)性較強(qiáng)的P、B幀),記為Ori_Seq[r]至Ori_Seq[y],i-x,轉(zhuǎn)步驟2);

2)根據(jù)滑動(dòng)窗口和流密鑰確定一個(gè)以I幀開始的時(shí)空相關(guān)性較強(qiáng)的異或圖像幀組,具體操作為t根據(jù)Key_Str[t]至Key_Str[t十w-1]的wbit流密鑰定位Ori_Seq[x]之前的2w個(gè)巳解碼圖像幀(滑動(dòng)窗口)中的一個(gè)異或圖像幀,找到距其最近的I幀Xor_Seq[m]及其后的P、B幀,記為Xor_Seq[m]至Xor_Seq[n],t+-w,轉(zhuǎn)步驟3);

3)若f≤y,按序取出原始圖像幀組中的一幀圖像Ori_Seq[i],根據(jù)Key_Str[t]至Key_Str[t+[log2m-n]-1的[log2m-n]bit流密鑰定位Xor_Seq[m]至Xor_Seq[n]中的一個(gè)異或圖像幀Xor_Seq[j],轉(zhuǎn)步驟4)將ori_Seq[i]與XorSeq[j]異或;否則轉(zhuǎn)步驟1;

4)若ori_Seq[i]采用幀內(nèi)預(yù)測,首先檢查Ori_Seq[i]和Xor_Seq[j]是否均適用細(xì)節(jié)集中模型(人臉或細(xì)粒度近景一粗粒度背景的典型圖像),若是,轉(zhuǎn)步驟5),否則轉(zhuǎn)步驟6);若Ori_Seq[i]采用幀間預(yù)測,轉(zhuǎn)步驟7);

5)若均為細(xì)節(jié)集中模型,采用宏觀“套取”策略進(jìn)行異或,使用矩形套索將Xor_Seq[j]的細(xì)節(jié)整體“摳出”“套取”在Ori_ Seq[i]的細(xì)節(jié)部分,并向左上各作10像素位平移(以防細(xì)節(jié)完全相同情況出現(xiàn)異或無效),將二者異或以產(chǎn)生加密圖像Cry_Seq[i]在相應(yīng)位置宏塊的像素值。當(dāng)Xor_Seq[j]的細(xì)節(jié)存在多個(gè)時(shí),按右下—左上逆序選用以增加圖像不可理解度,Xor_SeqDl細(xì)節(jié)矩形框大小超過Ori_Seq[i]細(xì)節(jié)尺寸時(shí),只截取左上相應(yīng)大小矩形框;Xor_Scq[j]細(xì)節(jié)矩形框不足以覆蓋Ori_Seq[i]細(xì)節(jié)時(shí),將Xor_Seq[j]細(xì)節(jié)塊循環(huán)賦值填充達(dá)到相應(yīng)大??;Xor_Seq[j]細(xì)節(jié)數(shù)量多于Ori_Seq[i]時(shí),拋棄剩余細(xì)節(jié),ori_Seq[j]細(xì)節(jié)數(shù)量少于Ori_Seq[i]時(shí),循環(huán)使用Xor_Scq[j]細(xì)節(jié)。細(xì)節(jié)“套取”工作完畢后,加密圖像Cry_Seq[i]剩余位置宏塊的像素通過直接異或Ori_Seq[i]和Xor_Seq[j]的對應(yīng)位置獲得,若Xor_Seq[j]在相應(yīng)位置為4×4細(xì)粒度塊,則不作異或處理(避免增加圖像復(fù)雜度),i++,轉(zhuǎn)步驟3);

6)只要Ori_Scq[i]或Xor_Seq[j]中的一個(gè)由于細(xì)節(jié)過于分散不便宏觀“摳出”,即使用微觀套取方式。按右下一左上逆序選擇Xor_Seq[j]中的4×4細(xì)粒度宏塊,按左上一右下順序異或在ori_Seq[i]的4X4宏塊上,若Xor_Seq[j]4×4宏塊過多,丟棄剩余部分,若塊數(shù)較少,則循環(huán)使用,生成Cry_Seq[i],i++,轉(zhuǎn)步驟3);

7)幀間預(yù)測一律采用微觀“套取”。將Xor_ScqFj]視為一個(gè)材料池,其中的宏塊按照運(yùn)動(dòng)補(bǔ)償分割尺寸的不同分為如下五組:八16×16、Bb 16×8或8×16、C.8×8、D.8×4或4X8、E 4X4;Ori_Seq[i]中的運(yùn)動(dòng)補(bǔ)償塊同樣按照此分割劃人五個(gè)類中,各組仍按右下—左上的逆序分別異或,即Ori_Seq[i]中16×16的運(yùn)動(dòng)補(bǔ)償分割只與Xor_Seq[i]中的16×16分割異或,Xor_Seq[j]各組材料過多丟棄,不足則循環(huán)使用,對于B組和D組中的分割塊,異或時(shí)若出現(xiàn)二者尺寸顛倒的情況,將Xor_Seq[j]相應(yīng)分割塊順序翻轉(zhuǎn)900后使用,生成Cry_Seq[i],i++,轉(zhuǎn)步驟3)。

幀異或視頻加密算法的去異或(解密)過程與加密過程相反且類似,是一個(gè)由加密圖像序列Cry_Seq[N]和異或圖像序列Xor_Seq[n]再次異或恢復(fù)原始圖像序列Ori_Seq[N]的過程,不再展開。

二、基于H.264的幀異或視頻加密算法實(shí)現(xiàn)細(xì)節(jié)

1、套取策略和分類方式

“套取”是對矩形圖像塊或宏塊異或在原始圖像幀上這一工作的形象說明.其工作的原則是:異或圖像塊(宏塊)只是用于降低原始圖像可理解度的“材料”,其可理解性不需保持,因而隱藏其宏觀圖像的“套取”規(guī)則更合適;同時(shí),“套取”規(guī)則應(yīng)當(dāng)保證疊加圖像的編碼性能相比原圖像序列沒有明顯下降,即保證壓縮率不變。

幀異或視頻加密算法的“套取”策略和宏塊分類方式都是公開確定的,這滿足安全密碼協(xié)議設(shè)計(jì)的要求,同時(shí)也是保證方案正常運(yùn)行的必要條件,只有解碼器端做出與編碼器端相同的“套取”判斷并將塊或宏塊以相同方式分類,才能保證去異或操作為異或操作的逆操作。

2、異或圖像塊使用方式

異或圖像的相應(yīng)塊(宏塊)是循環(huán)使用的,并且無論在宏觀“套取”或微觀“套取”過程中,都是按從右下到左上逆序取用的。

這是因?yàn)樵诤暧^套取中,不能要求異或圖像的細(xì)節(jié)尺寸大小和數(shù)量與原始圖像非常近似,因而對異或圖像的每個(gè)細(xì)節(jié),應(yīng)當(dāng)按原始圖像細(xì)節(jié)的尺寸大小進(jìn)行裁剪或拼接(以對原始圖像細(xì)節(jié)達(dá)到最小覆蓋為標(biāo)準(zhǔn)),逆序使用異或細(xì)節(jié)塊能進(jìn)一步降低視覺可理解性;同時(shí),如果異或細(xì)節(jié)比需要的更多,則將多余細(xì)節(jié)塊丟棄,若異或細(xì)節(jié)塊過少(不足以將全部原始圖像細(xì)節(jié)覆蓋),則循環(huán)使用。

微觀套取中只涉及相應(yīng)尺寸宏塊材料的“數(shù)量問題”,當(dāng)異或宏塊數(shù)量不夠時(shí)同樣需循環(huán)使用。需要注意的是在幀間預(yù)測模式中,由于尺寸分割方式更多,須將這些“材料”按五種不同“規(guī)格”分類,分別逆序循環(huán)使用。

3、壓縮率保證

一個(gè)I幀及其后的一組P、B幀序列表示一組時(shí)空相關(guān)性較強(qiáng)的視頻序列,而P、B幀的使用可以有效降低碼率。不難想象,用于異或的相應(yīng)異或幀組也必須是以一個(gè)I幀打頭的一組P、B幀序列,中間的P、B幀序列在疊加后具體幀間編碼使用情況可以根據(jù)疊加幀的相關(guān)性重新確定。

1)幀間預(yù)測

通過異或疊加在原始幀上的圖像同樣是有意義的連續(xù)視頻運(yùn)動(dòng)圖像,因而運(yùn)動(dòng)殘差、運(yùn)動(dòng)矢量描述和MV預(yù)測在減小疊加圖像碼率方面的處理就仍然是有效的。幀異或視頻加密方案只需保證原本使用幀間預(yù)測的幀仍適用幀間預(yù)測,但具體預(yù)測方式可能發(fā)生變化。

H.264的幀間預(yù)測較幀內(nèi)情況稍為復(fù)雜,主要原因是其樹狀結(jié)構(gòu)的運(yùn)動(dòng)補(bǔ)償分割,只能采取微觀套取方式:將異或圖像視為一個(gè)材料池,運(yùn)動(dòng)補(bǔ)償按照分割尺寸的不同分為如下五組:A、16×16、B、16×8和8X16、C、8×8、D、8×4和4×8、E、4×4;而后將原始圖像中的運(yùn)動(dòng)補(bǔ)償塊同樣按照此分割劃入五個(gè)類中分別異或,即原圖像中16×16的運(yùn)動(dòng)補(bǔ)償分割只與異或幀中的16×16分割異或;對于B組和D組中的分割塊,取用時(shí)若出現(xiàn)尺寸顛倒的情況,將異或幀相應(yīng)分割塊順序翻轉(zhuǎn)90°后使用。

2)幀內(nèi)預(yù)測

對于幀內(nèi)預(yù)測而言,其亮度預(yù)測類型分4×4和16×16兩種。疊加圖像和原始圖像的相同位置宏塊可以選擇相同尺寸分割中不同的模式進(jìn)行預(yù)測,這種選擇僅改變編碼數(shù)值但不改變碼率。幀內(nèi)編碼的圖像幀通常是細(xì)節(jié)較多較復(fù)雜的獨(dú)立圖像,圖像的不規(guī)則疊加會(huì)導(dǎo)致均勻漸變色塊大小的成倍減少,這對碼率的影響是比較明顯的。在宏觀套取中并不能保證異或圖像中細(xì)節(jié)位置總是與原圖像中的細(xì)節(jié)位置接近,故此時(shí)應(yīng)將異或圖像細(xì)節(jié)平移“套取”在原始圖像細(xì)節(jié)附近。

三、基于H.264的幀異或視頻加密算法的實(shí)驗(yàn)結(jié)果及性能分析

為滿足視頻應(yīng)用的要求,視頻加密算法一般在安全性、實(shí)時(shí)性、壓縮比及數(shù)據(jù)可操作性方面有一定要求。本文使用標(biāo)準(zhǔn)的foreman_qcif. yuv視頻文件作為實(shí)驗(yàn)對象進(jìn)行測試,H.264編解碼器選用通用的JM86程序,原始圖像、加密圖像和解密圖像分別如圖3中(a)、(b)、(c)所示。

在安全性方面,該加密算法的安全性是由異或操作固有特性決定的。從實(shí)驗(yàn)結(jié)果看,加密圖像(b)已經(jīng)難以辨認(rèn)原始圖像輪廓,加密效果明顯,解碼后的宏塊像素值并不完全等同于原始圖像,將其與異或圖像去異或生成的原始解密圖像(c)會(huì)產(chǎn)生椒鹽噪聲和色彩失真,需經(jīng)圖像降噪和平滑處理輸出最終圖像(d)。

在數(shù)據(jù)可操作性方面,由于方案并未干預(yù)H.264編解碼過程,加密后的圖像序列可以在不解密的情況下直接進(jìn)行定位暫停操作,在不解密情況下直接進(jìn)行剪切、刪除操作也是可行的。幀異或視頻加密算法可作為獨(dú)立通用插件固化在H.264編解碼器的輸入輸出端,具有一般熵編碼方案沒有的優(yōu)良可移植性。

在操作實(shí)時(shí)性方面,原始圖像序列和加密圖像序列對3幀示例視頻序列的H.264編解碼耗費(fèi)時(shí)間分別如表1所示。方案只在編碼時(shí)間上相對原始碼流稍有延遲,考慮到網(wǎng)絡(luò)應(yīng)用編碼一般為事先完成,少許延遲幾乎不會(huì)對實(shí)際應(yīng)用造成影響,而兩者的解密時(shí)間非常接近;異或和去異或本身耗費(fèi)的時(shí)間可以忽略不計(jì),因此完全能夠滿足網(wǎng)絡(luò)視頻應(yīng)用實(shí)時(shí)性要求。

在壓縮比方面,示例加密序列為展現(xiàn)方案的最壞情況統(tǒng)一使用了微觀“套取”方式,比較結(jié)果如表2所示??梢娫谧顗那闆r下,當(dāng)前方案還是會(huì)導(dǎo)致一定的壓縮比下降,但H.264編碼壓縮在此時(shí)仍是有效的,下一步的工作將考慮如何進(jìn)一步減小方案對壓縮率的影響。

綜上所述,幀異或視頻加密方案在安全性方面完全能夠滿足一般網(wǎng)絡(luò)視頻應(yīng)用需求,是一種具有應(yīng)用價(jià)值的改進(jìn)視頻加密方案。

小知識(shí)之H.264

H.264是國際標(biāo)準(zhǔn)化組織(ISO)和國際電信聯(lián)盟(ITU)共同提出的繼MPEG4之后的新一代數(shù)字視頻壓縮格式。H.264是ITU-T以H.26x系列為名稱命名的視頻編解碼技術(shù)標(biāo)準(zhǔn)之一。H.264是ITU-T的VCEG(視頻編碼專家組)和ISO/IEC的MPEG(活動(dòng)圖像編碼專家組)的聯(lián)合視頻組(JVT:joint video team)開發(fā)的一個(gè)數(shù)字視頻編碼標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)最早來自于ITU-T的稱之為H.26L的項(xiàng)目的開發(fā)。H.26L這個(gè)名稱雖然不太常見,但是一直被使用著。H.264是ITU-T以H.26x系列為名稱命名的標(biāo)準(zhǔn)之一,AVC是ISO/IEC MPEG一方的稱呼。