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