本發(fā)明涉及一種視頻數(shù)據(jù)隱藏方法,尤其是涉及一種基于CABAC二進制串映射的加密域H.264/AVC視頻數(shù)據(jù)隱藏方法。
背景技術(shù):隨著網(wǎng)絡(luò)和多媒體技術(shù)的飛速發(fā)展,視頻數(shù)據(jù)呈爆炸式增長,海量的視頻處理需要相應的存儲和計算平臺,而云計算與云存儲技術(shù)為大數(shù)據(jù)處理及其相關(guān)應用提供了最有效的解決方案。為確保云計算環(huán)境下的內(nèi)容安全和隱私保護,內(nèi)容所有者將原始視頻數(shù)據(jù)加密后上傳到云端,云端所有的處理和計算都在加密域進行,保證了敏感視頻數(shù)據(jù)的安全。在很多應用場景,某些沒有解密權(quán)限的云服務(wù)管理者需在加密載體中嵌入一些附加消息,如標注或認證數(shù)據(jù)、作品來源信息、所有者身份信息等,用于管理和認證加密視頻數(shù)據(jù)。例如,為保護病人隱私,對醫(yī)學影像等視頻信息進行了加密,數(shù)據(jù)庫管理者會在相應的加密視頻中嵌入病人的隱私信息和認證信息。如果在敏感視頻數(shù)據(jù)中嵌入附加消息之前,需先對敏感視頻數(shù)據(jù)解密,這就意味著在敏感視頻數(shù)據(jù)的整個生命周期中,至少有一部分時間是以明文形式存在的,這樣會帶來嚴重的隱私問題。加密域數(shù)據(jù)隱藏技術(shù)可以確保數(shù)據(jù)隱藏者在不解密的前提下,直接對加密視頻進行數(shù)據(jù)的嵌入和提取操作,可以幫助解決視頻安全和隱私的擔憂。無論視頻加密還是視頻數(shù)據(jù)隱藏,都要考慮視頻壓縮編碼的影響。鑒于H.264/AVC高效的編碼性能和良好的網(wǎng)絡(luò)適應性,也是目前應用最普及的視頻編碼標準,加密域H.264/AVC視頻數(shù)據(jù)隱藏技術(shù)無疑將成為學術(shù)界研究的熱點。如何在密文前提下實現(xiàn)數(shù)據(jù)隱藏,如何保證加密和數(shù)據(jù)隱藏與CABAC熵編碼相兼容,以及如何保證加密和嵌入數(shù)據(jù)不影響H.264/AVC的編碼效率,國內(nèi)外這方面的研究也才剛剛開始,加密和數(shù)據(jù)隱藏的結(jié)合還有很多難點問題有待解決。
技術(shù)實現(xiàn)要素:本發(fā)明所要解決的技術(shù)問題是提供一種基于CABAC二進制串映射的加密域H.264/AVC視頻數(shù)據(jù)隱藏方法,其在與H.264/AVC視頻壓縮編碼標準和CABAC熵編碼相兼容的前提下對H.264/AVC視頻進行加密,能夠在加密后的H.264/AVC視頻中進行數(shù)據(jù)隱藏,且加密和數(shù)據(jù)隱藏不影響視頻碼率,并能夠保證隱秘信息在加密域和解密域H.264/AVC視頻中都能有效地被提取出。本發(fā)明解決上述技術(shù)問題所采用的技術(shù)方案為:一種基于CABAC二進制串映射的加密域H.264/AVC視頻數(shù)據(jù)隱藏方法,其特征在于包括H.264/AVC視頻加密、加密域的H.264/AVC視頻數(shù)據(jù)隱藏及隱秘數(shù)據(jù)提取三部分;其中,所述的H.264/AVC視頻加密的處理過程為:對于原始的H.264/AVC視頻中預測模式為幀間預測模式且運動矢量差分不為0的所有宏塊,利用第一密鑰生成的二值偽隨機序列對每個宏塊的運動矢量差分符號的CABAC二進制串進行比特異或加密,完成每個宏塊的運動矢量差分的加密;對于原始的H.264/AVC視頻中預測模式為幀間預測模式且運動矢量差分為0的所有宏塊,對每個宏塊的運動矢量差分不加密;對于原始的H.264/AVC視頻中量化殘差系數(shù)不為0的所有宏塊,利用第二密鑰生成的二值偽隨機序列對每個宏塊的量化殘差系數(shù)符號的CABAC二進制串進行比特異或加密,完成每個宏塊的量化殘差系數(shù)的加密;對于原始的H.264/AVC視頻中量化殘差系數(shù)為0的所有宏塊,對每個宏塊的量化殘差系數(shù)不加密;通過上述加密得到加密域的H.264/AVC視頻;所述的加密域的H.264/AVC視頻數(shù)據(jù)隱藏的具體過程為:②-1、將H.264/AVC視頻壓縮編碼標準中所有絕對值大于32的運動矢量差分的絕對值的CABAC二進制串分成第一空間C0和第二空間C1,其中,第一空間C0中的CABAC二進制串與第二空間C1中的CABAC二進制串一一對應,且第一空間C0和第二空間C1中對應的兩個CABAC二進制串的長度相同,第一空間C0和第二空間C1中對應的兩個CABAC二進制串各自所對應的運動矢量差分的絕對值相差1;②-2、將加密域的H.264/AVC視頻中當前識別出的運動矢量差分的絕對值的CABAC二進制串定義為當前二進制串,將待嵌入的隱秘信息中當前待嵌入的信息比特定義為當前信息比特;②-3、判斷當前二進制串是否屬于第一空間C0或?qū)儆诘诙臻gC1,如果是,則采用映射方法將當前信息比特嵌入到當前二進制串中,然后執(zhí)行步驟②-4;否則,對當前二進制串不進行處理,然后執(zhí)行步驟②-4;②-4、將加密域的H.264/AVC視頻中下一個識別出的運動矢量差分的絕對值的CABAC二進制串作為當前二進制串,將待嵌入的隱秘信息中下一個待嵌入的信息比特作為當前信息比特,然后返回步驟②-3繼續(xù)執(zhí)行,直至隱秘信息嵌入完畢,完成加密域的H.264/AVC視頻數(shù)據(jù)隱藏,得到含隱秘信息的加密域的H.264/AVC視頻;所述的隱秘數(shù)據(jù)提取在加密域完成或在解密域完成,在加密域完成隱秘數(shù)據(jù)提取的具體過程為:③-1a、采用與步驟②-1相同的方式,將H.264/AVC視頻壓縮編碼標準中所有絕對值大于32的運動矢量差分的絕對值的CABAC二進制串分成第一空間C0和第二空間C1;③-1b、在加密域,對含隱秘信息的加密域的H.264/AVC視頻碼流進行二進制算術(shù)解碼,識別含隱秘信息的加密的運動矢量差分的絕對值的CABAC二進制串;③-1c、將當前識別出的運動矢量差分的絕對值的CABAC二進制串定義為當前二進制串;③-1d、如果當前二進制串屬于第一空間C0,則提取出信息比特0,然后繼續(xù)執(zhí)行步驟③-1e;如果當前二進制串屬于第二空間C1,則提取出信息比特1,然后繼續(xù)執(zhí)行步驟③-1e;如果當前二進制串不屬于第一空間C0也不屬于第二空間C1,則直接執(zhí)行步驟③-1e;③-1e、在加密域,將下一個識別出的含隱秘信息的加密的運動矢量差分的絕對值的CABAC二進制串作為當前二進制串,然后返回步驟③-1d繼續(xù)執(zhí)行,直至含隱秘信息的加密域的H.264/AVC視頻碼流中的所有運動矢量差分的絕對值的CABAC二進制串處理完畢,提取得到隱秘信息;在解密域完成隱秘數(shù)據(jù)提取的具體過程為:③-2a、采用與步驟②-1相同的方式,將H.264/AVC視頻壓縮編碼標準中所有絕對值大于32的運動矢量差分的絕對值的CABAC二進制串分成第一空間C0和第二空間C1;③-2b、對含隱秘信息的加密域的H.264/AVC視頻碼流進行二進制算術(shù)解碼,識別加密的運動矢量差分符號的CABAC二進制串和加密的量化殘差系數(shù)符號的CABAC二進制串,然后對加密的運動矢量差分符號的CABAC二進制串和加密的量化殘差系數(shù)符號的CABAC二進制串進行解密,再進行二進制算術(shù)編碼,得到解密后的含隱秘信息的H.264/AVC視頻碼流;③-2c、在解密域,對解密后的含隱秘信息的H.264/AVC視頻碼流進行二進制算術(shù)解碼,識別解密后的含隱秘信息的運動矢量差分的絕對值的CABAC二進制串;③-2d、將當前識別出的運動矢量差分的絕對值的CABAC二進制串定義為當前二進制串;③-2e、如果當前二進制串屬于第一空間C0,則提取出信息比特0,然后繼續(xù)執(zhí)行步驟③-2f;如果當前二進制串屬于第二空間C1,則提取出信息比特1,然后繼續(xù)執(zhí)行步驟③-2f;如果當前二進制串不屬于第一空間C0也不屬于第二空間C1,則直接執(zhí)行步驟③-2f;③-2f、在解密域,將下一個識別出的解密后的含隱秘信息的運動矢量差分的絕對值的CABAC二進制串作為當前二進制串,然后返回步驟③-2e繼續(xù)執(zhí)行,直至解密后的含隱秘信息的H.264/AVC視頻中的所有運動矢量差分的絕對值的CABAC二進制串處理完畢,提取得到隱秘信息。所述的H.264/AVC視頻加密的的具體過程為:①-1、將原始的H.264/AVC視頻中當前待處理的幀定義為當前幀;①-2、將當前幀中當前待處理的宏塊定義為當前宏塊;①-3、判斷當前宏塊的預測模式為幀內(nèi)預測模式還是為幀間預測模式,如果當前宏塊的預測模式為幀間預測模式,則繼續(xù)執(zhí)行步驟①-4,如果當前宏塊的預測模式為幀內(nèi)預測模式,則繼續(xù)執(zhí)行步驟①-5;①-4、當當前宏塊的運動矢量差分不為0時,利用第一密鑰生成的二值偽隨機序列中的第k1位比特至第k1+L1位比特對當前宏塊的運動矢量差分符號的CABAC二進制串進行按位比特異或加密,完成當前宏塊的運動矢量差分的加密,然后令k1=k1+L1+1,再執(zhí)行步驟①-5,其中,k1的初始值為1,L1表示當前宏塊的運動矢量差分符號的CABAC二進制串的長度,k1=k1+L1+1中的“=”為賦值符號;當當前宏塊的運動矢量差分為0時,對當前宏塊的運動矢量差分不加密,然后執(zhí)行步驟①-5;①-5、當當前宏塊的量化殘差系數(shù)不為0時,利用第二密鑰生成的二值偽隨機序列中的第k2位比特至第k2+L2位比特對當前宏塊的量化殘差系數(shù)符號的CABAC二進制串進行按位比特異或加密,完成當前宏塊的量化殘差系數(shù)的加密,然后令k2=k2+L2+1,再執(zhí)行步驟①-6,其中,k2的初始值為1,L2表示當前宏塊的量化殘差系數(shù)符號的CABAC二進制串的長度,k2=k2+L2+1中的“=”為賦值符號;對于原始的H.264/AVC視頻中量化殘差系數(shù)為0的所有宏塊,對每個宏塊的量化殘差系數(shù)不加密,然后執(zhí)行步驟①-6;①-6、將當前幀中下一個待處理的宏塊作為當前宏塊,然后返回步驟①-3繼續(xù)執(zhí)行,直至當前幀中的所有宏塊處理完畢;①-7、將原始的H.264/AVC視頻中下一個待處理的幀作為當前幀,然后返回步驟①-2繼續(xù)執(zhí)行,直至原始的H.264/AVC視頻中的所有幀處理完畢,得到加密域的H.264/AVC視頻。所述的步驟②-3中采用映射方法將當前信息比特嵌入到當前二進制串中的具體過程為:如果當前信息比特為0且當前二進制串屬于第一空間C0,則當前二進制串保持不變;如果當前信息比特為0且當前二進制串屬于第二空間C1,則用第一空間C0中與當前二進制串一一對應的CABAC二進制串替換當前二進制串;如果當前信息比特為1且當前二進制串屬于第二空間C1,則當前二進制串保持不變;如果當前信息比特為1且當前二進制串屬于第一空間C0,則用第二空間C1中與當前二進制串一一對應的CABAC二進制串替換當前二進制串。所述的步驟③-2b中對加密的運動矢量差分符號的CABAC二進制串進行解密的過程為:1)將當前識別出的加密的運動矢量差分符號的CABAC二進制串定義為當前二進制串;2)利用第一密鑰生成的二值偽隨機序列中的第k1位比特至第k1+LS1位比特對當前二進制串進行按位比特異或解密,然后令k1=k1+LS1+1,再執(zhí)行步驟3),其中,k1的初始值為1,LS1表示當前二進制串的長度,k1=k1+LS1+1中的“=”為賦值符號;3)將下一個識別出的加密的運動矢量差分符號的CABAC二進制串作為當前二進制串,然后返回步驟2)繼續(xù)執(zhí)行,完成識別出的所有加密的運動矢量差分符號的CABAC二進制串的解密;所述的步驟③-2b中對加密的量化殘差系數(shù)符號的CABAC二進制串進行解密的過程為:(1)將當前識別出的加密的量化殘差系數(shù)符號的CABAC二進制串定義為當前二進制串;(2)利用第二密鑰生成的二值偽隨機序列中的第k2位比特至第k2+LS2位比特對當前二進制串進行按位比特異或解密,然后令k2=k2+LS2+1,再執(zhí)行步驟(3),其中,k2的初始值為1,LS2表示當前二進制串的長度,k2=k2+LS2+1中的“=”為賦值符號;(3)將下一個識別出的加密的量化殘差系數(shù)符號的CABAC二進制串作為當前二進制串,然后返回步驟(2)繼續(xù)執(zhí)行,完成識別出的所有加密的量化殘差系數(shù)符號的CABAC二進制串的解密。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:1)本發(fā)明方法選擇CABAC中旁路編碼模式的語法元素進行等長二進制串替換操作實現(xiàn)視頻加密,采用運動矢量差分的絕對值的CABAC二進制串映射方法進行數(shù)據(jù)隱藏,加密和數(shù)據(jù)隱藏都對H.264/AVC視頻流的碼率沒有任何改變,解決了視頻加密和數(shù)據(jù)隱藏中的數(shù)據(jù)擴張問題。2)本發(fā)明方法中加密和隱藏數(shù)據(jù)都是在CABAC熵編碼下完成,與CABAC熵編碼完全兼容,可用標準H.264/AVC視頻解碼器對加密和數(shù)據(jù)隱藏后的視頻流進行解碼。3)數(shù)據(jù)隱藏者利用本發(fā)明方法可以直接在加密的H.264/AVC視頻中嵌入隱秘信息,即使數(shù)據(jù)隱藏者不知道原始視頻內(nèi)容,也可有效地解決視頻內(nèi)容安全和隱私泄露問題;此外,本發(fā)明方法既可以在加密域有效地提取出隱秘數(shù)據(jù),也可以在解密域有效地提取出隱秘數(shù)據(jù),也即數(shù)據(jù)提取與解密是完全分離,實用性更強。附圖說明圖1a為本發(fā)明方法中的視頻加密和數(shù)據(jù)隱藏的總體實現(xiàn)框圖;圖1b為本發(fā)明方法中的隱秘數(shù)據(jù)提取的總體實現(xiàn)框圖;圖2為兩個空間中的運動矢量差分的絕對值的CABAC二進制串的后綴對應關(guān)系。具體實施方式以下結(jié)合附圖實施例對本發(fā)明作進一步詳細描述。實施例一:本實施例提出的一種基于CABAC二進制串映射的加密域H.264/AVC視頻數(shù)據(jù)隱藏方法,其包括H.264/AVC視頻加密、加密域的H.264/AVC視頻數(shù)據(jù)隱藏及隱秘數(shù)據(jù)提取三部分。在此具體實施例中,為降低計算復雜度,并保持加密后的H.264/AVC視頻碼流的碼率不變,同時具有較高的感知安全性,本發(fā)明方法選擇對運動矢量差分(MVD)符號的CABAC二進制串(binstring)和量化殘差系數(shù)符號的CABAC二進制串進行加密,H.264/AVC視頻加密的處理過程(如圖1a所示)為:對于原始的H.264/AVC視頻中預測模式為幀間預測模式且運動矢量差分不為0的所有宏塊,利用第一密鑰生成的二值偽隨機序列對每個宏塊的運動矢量差分符號的CABAC二進制串進行比特異或加密,完成每個宏塊的運動矢量差分的加密;對于原始的H.264/AVC視頻中預測模式為幀間預測模式且運動矢量差分為0的所有宏塊,對每個宏塊的運動矢量差分不加密;對于原始的H.264/AVC視頻中量化殘差系數(shù)不為0的所有宏塊,利用第二密鑰生成的二值偽隨機序列對每個宏塊的量化殘差系數(shù)符號的CABAC二進制串進行比特異或加密,完成每個宏塊的量化殘差系數(shù)的加密;對于原始的H.264/AVC視頻中量化殘差系數(shù)為0的所有宏塊,對每個宏塊的量化殘差系數(shù)不加密;通過上述加密得到加密域的H.264/AVC視頻。即H.264/AVC視頻加密的具體過程為:①-1、將原始的H.264/AVC視頻中當前待處理的幀定義為當前幀。①-2、將當前幀中當前待處理的宏塊定義為當前宏塊。①-3、判斷當前宏塊的預測模式為幀內(nèi)預測模式還是為幀間預測模式,如果當前宏塊的預測模式為幀間預測模式,則繼續(xù)執(zhí)行步驟①-4,如果當前宏塊的預測模式為幀內(nèi)預測模式,則繼續(xù)執(zhí)行步驟①-5。①-4、當當前宏塊的運動矢量差分不為0時,利用第一密鑰生成的二值偽隨機序列中的第k1位比特至第k1+L1位比特對當前宏塊的運動矢量差分符號的CABAC二進制串進行按位比特異或加密,完成當前宏塊的運動矢量差分的加密,然后令k1=k1+L1+1,再執(zhí)行步驟①-5,其中,k1的初始值為1,L1表示當前宏塊的運動矢量差分符號的CABAC二進制串的長度,k1=k1+L1+1中的“=”為賦值符號。由于宏塊的運動矢量差分符號的CABAC二進制串是直接進入旁路編碼模式的,因此利用第一密鑰生成的二值偽隨機序列中的第k1位比特至第k1+L1位比特對當前宏塊的運動矢量差分符號的CABAC二進制串進行按位比特異或加密,不會改變最終CABAC二進制串的長度,滿足格式兼容性。當當前宏塊的運動矢量差分為0時,對當前宏塊的運動矢量差分不加密,然后執(zhí)行步驟①-5。①-5、當當前宏塊的量化殘差系數(shù)不為0時,利用第二密鑰生成的二值偽隨機序列中的第k2位比特至第k2+L2位比特對當前宏塊的量化殘差系數(shù)符號的CABAC二進制串進行按位比特異或加密,完成當前宏塊的量化殘差系數(shù)的加密,然后令k2=k2+L2+1,再執(zhí)行步驟①-6,其中,k2的初始值為1,L2表示當前宏塊的量化殘差系數(shù)符號的CABAC二進制串的長度,k2=k2+L2+1中的“=”為賦值符號。對于原始的H.264/AVC視頻中量化殘差系數(shù)為0的所有宏塊,對每個宏塊的量化殘差系數(shù)不加密,然后執(zhí)行步驟①-6。①-6、將當前幀中下一個待處理的宏塊作為當前宏塊,然后返回步驟①-3繼續(xù)執(zhí)行,直至當前幀中的所有宏塊處理完畢。①-7、將原始的H.264/AVC視頻中下一個待處理的幀作為當前幀,然后返回步驟①-2繼續(xù)執(zhí)行,直至原始的H.264/AVC視頻中的所有幀處理完畢,得到加密域的H.264/AVC視頻。上述,對宏塊的運動矢量差分符號的CABAC二進制串和量化殘差系數(shù)符號的CABAC二進制串進行加密所利用的二值偽隨機序列可以是由同一個密鑰生成的,也可以是由不同的密鑰生成的,即第一密鑰和第二密鑰可以相同,也可以不相同,但是解密時所采用的密鑰與加密時所采用的密鑰需一致。在此具體實施例中,如圖1a所示,加密域的H.264/AVC視頻數(shù)據(jù)隱藏的具體過程為:②-1、將H.264/AVC視頻壓縮編碼標準中所有絕對值大于32的運動矢量差分的絕對值的CABAC二進制串分成兩個空間,即將H.264/AVC視頻壓縮編碼標準中的部分運動矢量差分的絕對值的CABAC二進制串分成兩個空間,且兩個空間內(nèi)的每個CABAC二進制串所對應的運動矢量差分的絕對值大于32。運動矢量差分的絕對值是由截斷一元碼和3階指數(shù)哥倫布編碼(EG3)完成二進制化的,如果運動矢量差分的絕對值小于9,則CABAC二進制串僅僅由前綴組成;如果運動矢量差分的絕對值大于或等于9,則CABAC二進制串由前綴和后綴組成。表1給出了H.264/AVC視頻壓縮編碼標準中的運動矢量差分的絕對值的CABAC二進制串。隱秘信息是通過替換表1中的CABAC二進制串進行嵌入的。表1H.264/AVC視頻壓縮編碼標準中的運動矢量差分的絕對值的CABAC二進制串運動矢量差分的絕對值的CABAC二進制串的TU前綴是采用常規(guī)編碼模式進行二進制算術(shù)編碼,而非旁路編碼模式。通過計算上下文索引(ctxIdx)來選擇上下文模型,并在選定的上下文模型中進行概率的估計更新和算術(shù)編碼。上下文索引(ctxIdx)等于上下文索引起始偏移量(ctxIdxOffset)和上下文索引增量(ctxIdxInc)之和。根據(jù)H.264/AVC標準中指定,對于水平分量,上下文索引起始偏移量等于40;對于垂直分量,上下文索引起始偏移量等于47。對于運動矢量差分的絕對值的CABAC二進制串中的第一個比特串,上下文索引增量由下述公式得到,其中,e(A,B,cmp)=|mvd(A,cmp)|+|mvd(B,cmp)|,A表示一個宏塊的左相鄰塊,B表示一個宏塊的上相鄰塊,cmp用于表示方向,指水平方向或垂直方向,mvd(A,cmp)表示A宏塊的cmp方向的運動矢量差分,mvd(B,cmp)表示B宏塊的cmp方向的運動矢量差分,計算時A宏塊的運動矢量差分的方向與B宏塊的運動矢量差分的方向一致,即兩者的運動矢量差分的方向要么為水平方向要么為垂直方向,符號“||”為取絕對值符號,e(A,B,cmp)的取值區(qū)間可以分成三個區(qū)域,即[0,3)、[3,32]、(32,+∞)。對于運動矢量差分的絕對值的CABAC二進制串中的剩余比特串,上下文索引增量由其比特位置確定,如表2所示。表2確定上下文索引增量的比特位置二進制比特串上下文索引增量1由e(A,B,cmp)來判斷其值為0,或1,或2233445566或者更高6數(shù)據(jù)嵌入可能會引起|mvd(A,cmp)|和/或|mvd(B,cmp)|發(fā)生改變,使得e(A,B,cmp)的取值區(qū)間會發(fā)生改變。在這種情況下,數(shù)據(jù)嵌入后計算得到的上下文索引增量與原始的上下文索引增量會不一致,從而引起解碼錯誤。為了解決這個問題,本發(fā)明方法僅僅選擇絕對值大于32的運動矢量差分的絕對值的CABAC二進制串嵌入數(shù)據(jù)。即將表1中所有絕對值大于32的運動矢量差分的絕對值的CABAC二進制串分成第一空間C0和第二空間C1:如果運動矢量差分的絕對值為奇數(shù),則將該運動矢量差分的絕對值的CABAC二進制串分到第一空間C0中;如果運動矢量差分的絕對值為偶數(shù),則將該運動矢量差分的絕對值的CABAC二進制串分到第二空間C1中;也可以將絕對值為偶數(shù)的運動矢量差分的絕對值的CABAC二進制串分到第一空間C0中,將絕對值為奇數(shù)的運動矢量差分的絕對值的CABAC二進制串分到第二空間C1中。圖2給出了兩個空間中的CABAC二進制串的對應關(guān)系(第一空間和第二空間中相對應的兩個CABAC二進制串所對應的運動矢量差分的絕對值相差1),由于絕對值大于32的運動矢量差分的絕對值的CABAC二進制串的前綴都相同,因此圖2中僅列出了后綴部分。圖2中第一空間C0中的每個CABAC二進制串所對應的運動矢量差分的絕對值為奇數(shù),第二空間C1中的每個CABAC二進制串所對應的運動矢量差分的絕對值為偶數(shù)。②-2、將加密域的H.264/AVC視頻中當前識別出的運動矢量差分的絕對值的CABAC二進制串定義為當前二進制串,將待嵌入的隱秘信息中當前待嵌入的信息比特定義為當前信息比特。②-3、判斷當前二進制串是否屬于第一空間C0或?qū)儆诘诙臻gC1,如果是,則采用映射方法將當前信息比特嵌入到當前二進制串中,然后執(zhí)行步驟②-4;否則,對當前二進制串不進行處理,然后執(zhí)行步驟②-4。在此,步驟②-3中采用映射方法將當前信息比特嵌入到當前二進制串中的具體過程為:如果當前信息比特為0且當前二進制串屬于第一空間C0,則當前二進制串保持不變;如果當前信息比特為0且當前二進制串屬于第二空間C1,則用第一空間C0中與當前二進制串一一對應的CABAC二進制串替換當前二進制串;如果當前信息比特為1且當前二進制串屬于第二空間C1,則當前二進制串保持不變;如果當前信息比特為1且當前二進制串屬于第一空間C0,則用第二空間C1中與當前二進制串一一對應的CABAC二進制串替換當前二進制串。②-4、將加密域的H.264/AVC視頻中下一個識別出的運動矢量差分的絕對值的CABAC二進制串作為當前二進制串,將待嵌入的隱秘信息中下一個待嵌入的信息比特作為當前信息比特,然后返回步驟②-3繼續(xù)執(zhí)行,直至隱秘信息嵌入完畢,完成加密域的H.264/AVC視頻數(shù)據(jù)隱藏,得到含隱秘信息的加密域的H.264/AVC視頻。由于隱秘信息提取與視頻解密是可完全分割的,因此隱秘數(shù)據(jù)提取可在加密域完成,也可在解密域完成。如圖1b所示,在加密域完成隱秘數(shù)據(jù)提取的具體過程為:③-1a、采用與步驟②-1相同的方式,將H.264/AVC視頻壓縮編碼標準中所有絕對值大于32的運動矢量差分的絕對值的CABAC二進制串分成第一空間C0和第二空間C1。③-1b、在加密域,對含隱秘信息的加密域的H.264/AVC視頻碼流進行二進制算術(shù)解碼即進行部分CABAC熵解碼,識別含隱秘信息的加密的運動矢量差分的絕對值的CABAC二進制串。③-1c、將當前識別出的運動矢量差分的絕對值的CABAC二進制串定義為當前二進制串。③-1d、如果當前二進制串屬于第一空間C0,則提取出信息比特0,然后繼續(xù)執(zhí)行步驟③-1e;如果當前二進制串屬于第二空間C1,則提取出信息比特1,然后繼續(xù)執(zhí)行步驟③-1e;如果當前二進制串不屬于第一空間C0也不屬于第二空間C1,則直接執(zhí)行步驟③-1e。③-1e、在加密域,將下一個識別出的含隱秘信息的加密的運動矢量差分的絕對值的CABAC二進制串作為當前二進制串,然后返回步驟③-1d繼續(xù)執(zhí)行,直至含隱秘信息的加密域的H.264/AVC視頻碼流中的所有運動矢量差分的絕對值的CABAC二進制串處理完畢,提取得到隱秘信息。在加密域完成隱秘數(shù)據(jù)提取,即數(shù)據(jù)的嵌入和提取都是在加密域進行的,可有效解決視頻內(nèi)容安全和隱私泄露問題。實施例二:本實施例提出的基于CABAC二進制串映射的加密域H.264/AVC視頻數(shù)據(jù)隱藏方法中的H.264/AVC視頻加密和加密域的H.264/AVC視頻數(shù)據(jù)隱藏兩部分的處理過程,與實施例一給出的方法中的H.264/AVC視頻加密和加密域的H.264/AVC視頻數(shù)據(jù)隱藏兩部分的處理過程一致,不同之處僅在于本實施例給出的方法中的隱秘數(shù)據(jù)提取在解密域完成。有些情況下用戶需要先對加密視頻進行解密,然后從解密后的視頻中提取隱秘信息,例如,一個擁有加密密鑰(該密鑰即為加密時所利用的二值偽隨機序列對應的密鑰)的授權(quán)用戶收到含隱秘信息的加密視頻,可以先用加密密鑰對視頻進行解密,解密后的視頻仍然含有隱秘信息,該隱秘信息可以用于追蹤數(shù)據(jù)源。如圖1b所示,本實施例給出的方法在解密域完成隱秘數(shù)據(jù)提取的具體過程為:③-2a、采用與步驟②-1相同的方式,將H.264/AVC視頻壓縮編碼標準中所有絕對值大于32的運動矢量差分的絕對值的CABAC二進制串分成第一空間C0和第二空間C1。③-2b、對含隱秘信息的加密域的H.264/AVC視頻碼流進行二進制算術(shù)解碼即進行部分CABAC熵解碼,識別加密的運動矢量差分符號的CABAC二進制串和加密的量化殘差系數(shù)符號的CABAC二進制串,然后對加密的運動矢量差分符號的CABAC二進制串和加密的量化殘差系數(shù)符號的CABAC二進制串進行解密,再進行二進制算術(shù)編碼,得到解密后的含隱秘信息的H.264/AVC視頻碼流。在此,利用第一密鑰生成的二值偽隨機序列對加密的運動矢量差分符號的CABAC二進制串進行解密,解密過程與加密過程一致,即從第一密鑰生成的二值偽隨機序列中按序取出LS1(LS1表示運動矢量差分符號的CABAC二進制串)位,與運動矢量差分符號的CABAC二進制串進行異或解密,并且密鑰為同一個,即加密和解密時所利用的二值偽隨機序列為同一個;利用第二密鑰生成的二值偽隨機序列對量化殘差系數(shù)符號的CABAC二進制串進行解密,解密的過程與加密時利用第二密鑰生成的二值偽隨機序列對量化殘差系數(shù)符號的CABAC二進制串加密的過程一致,即從第二密鑰生成的二值偽隨機序列中按序取出LS2(LS2表示量化殘差系數(shù)符號的CABAC二進制串)位,與量化殘差系數(shù)符號的CABAC二進制串進行異或解密,并且密鑰為同一個,即加密和解密時所利用的二值偽隨機序列為同一個。即:對加密的運動矢量差分符號的CABAC二進制串進行解密的過程為:1)將當前識別出的加密的運動矢量差分符號的CABAC二進制串定義為當前二進制串。2)利用第一密鑰生成的二值偽隨機序列中的第k1位比特至第k1+LS1位比特對當前二進制串進行按位比特異或解密,然后令k1=k1+LS1+1,再執(zhí)行步驟3),其中,k1的初始值為1,LS1表示當前二進制串的長度,k1=k1+LS1+1中的“=”為賦值符號。3)將下一個識別出的加密的運動矢量差分符號的CABAC二進制串作為當前二進制串,然后返回步驟2)繼續(xù)執(zhí)行,完成識別出的所有加密的運動矢量差分符號的CABAC二進制串的解密。對加密的量化殘差系數(shù)符號的CABAC二進制串進行解密的過程為:(1)將當前識別出的加密的量化殘差系數(shù)符號的CABAC二進制串定義為當前二進制串。(2)利用第二密鑰生成的二值偽隨機序列中的第k2位比特至第k2+LS2位比特對當前二進制串進行按位比特異或解密,然后令k2=k2+LS2+1,再執(zhí)行步驟(3),其中,k2的初始值為1,LS2表示當前二進制串的長度,k2=k2+LS2+1中的“=”為賦值符號。(3)將下一個識別出的加密的量化殘差系數(shù)符號的CABAC二進制串作為當前二進制串,然后返回步驟(2)繼續(xù)執(zhí)行,完成識別出的所有加密的量化殘差系數(shù)符號的CABAC二進制串的解密。③-2c、在解密域,對解密后的含隱秘信息的H.264/AVC視頻碼流進行二進制算術(shù)解碼即進行部分CABAC熵解碼,識別解密后的含隱秘信息的運動矢量差分的絕對值的CABAC二進制串。③-2d、將當前識別出的運動矢量差分的絕對值的CABAC二進制串定義為當前二進制串。③-2e、如果當前二進制串屬于第一空間C0,則提取出信息比特0,然后繼續(xù)執(zhí)行步驟③-2f;如果當前二進制串屬于第二空間C1,則提取出信息比特1,然后繼續(xù)執(zhí)行步驟③-2f;如果當前二進制串不屬于第一空間C0也不屬于第二空間C1,則直接執(zhí)行步驟③-2f。③-2f、在解密域,將下一個識別出的解密后的含隱秘信息的運動矢量差分的絕對值的CABAC二進制串作為當前二進制串,然后返回步驟③-2e繼續(xù)執(zhí)行,直至解密后的含隱秘信息的H.264/AVC視頻中的所有運動矢量差分的絕對值的CABAC二進制串處理完畢,提取得到隱秘信息。