本發(fā)明涉及一種視頻數(shù)據(jù)隱藏方法,尤其是涉及一種兼容CABAC的加密域H.264/AVC視頻數(shù)據(jù)隱藏方法。
背景技術(shù):在移動互聯(lián)網(wǎng)和云計算迅猛發(fā)展的大背景下,數(shù)字視頻的應(yīng)用日益普及和深入,隨之而來個人隱私的泄露、數(shù)字視頻的非法復(fù)制、肆意傳播、任意篡改等安全問題也日益突出。為適應(yīng)移動互聯(lián)網(wǎng)和云計算等新興技術(shù)環(huán)境下數(shù)據(jù)安全和隱私保護(hù)需求,敏感視頻數(shù)據(jù)常以加密形勢存儲在云端,這樣攻擊者即使獲得了視頻數(shù)據(jù)也無法獲得其內(nèi)容,保證了敏感視頻數(shù)據(jù)的安全。在很多應(yīng)用場景,云服務(wù)端需在加密載體中嵌入一些附加消息,如標(biāo)注或認(rèn)證數(shù)據(jù)、作品來源信息、所有者身份信息等,用于管理和認(rèn)證加密視頻數(shù)據(jù)。例如,為保護(hù)病人隱私,對醫(yī)學(xué)影像等視頻信息進(jìn)行了加密,數(shù)據(jù)庫管理者會在相應(yīng)的加密視頻中嵌入病人的隱私信息和認(rèn)證信息。如果在敏感視頻數(shù)據(jù)中嵌入附加消息之前,需先對敏感視頻數(shù)據(jù)解密,這就意味著在敏感視頻數(shù)據(jù)的整個生命周期中,至少有一部分時間是以明文形式存在的,這樣會帶來嚴(yán)重的隱私問題。加密域數(shù)據(jù)隱藏技術(shù)可以確保數(shù)據(jù)隱藏者在不解密的前提下,直接對加密視頻進(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)。如何在密文前提下實現(xiàn)數(shù)據(jù)隱藏,如何保證加密和數(shù)據(jù)隱藏與CABAC熵編碼相兼容,以及如何保證加密和嵌入數(shù)據(jù)不影響H.264/AVC的編碼效率,國內(nèi)外這方面的研究也才剛剛開始,加密和數(shù)據(jù)隱藏的結(jié)合還有很多難點(diǎn)問題有待解決。
技術(shù)實現(xiàn)要素:本發(fā)明所要解決的技術(shù)問題是提供一種兼容CABAC的加密域H.264/AVC視頻數(shù)據(jù)隱藏方法,其在與H.264/AVC視頻壓縮編碼標(biāo)準(zhǔn)和CABAC熵編碼相兼容的前提下對H.264/AVC視頻進(jìn)行加密,能夠在加密后的H.264/AVC視頻中進(jìn)行數(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視頻中預(yù)測模式為幀間預(yù)測模式且運(yùn)動矢量差分不為0的所有宏塊,利用第一密鑰生成的二值偽隨機(jī)序列對每個宏塊的運(yùn)動矢量差分符號的CABAC二進(jìn)制串進(jìn)行比特異或加密,完成每個宏塊的運(yùn)動矢量差分的加密;對于原始的H.264/AVC視頻中預(yù)測模式為幀間預(yù)測模式且運(yùn)動矢量差分為0的所有宏塊,對每個宏塊的運(yùn)動矢量差分不加密;對于原始的H.264/AVC視頻中量化殘差系數(shù)不為0的所有宏塊,利用第二密鑰生成的二值偽隨機(jī)序列對每個宏塊的量化殘差系數(shù)符號的CABAC二進(jìn)制串進(jìn)行比特異或加密,完成每個宏塊的量化殘差系數(shù)的加密;對于原始的H.264/AVC視頻中量化殘差系數(shù)為0的所有宏塊,對每個宏塊的量化殘差系數(shù)不加密;通過上述加密得到加密域的H.264/AVC視頻;所述的加密域的H.264/AVC視頻數(shù)據(jù)隱藏的具體過程為:②-1、將H.264/AVC視頻壓縮編碼標(biāo)準(zhǔn)中所有絕對值大于15的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串分成第一空間C0和第二空間C1,其中,第一空間C0中的CABAC二進(jìn)制串與第二空間C1中的CABAC二進(jìn)制串一一對應(yīng),且第一空間C0和第二空間C1中對應(yīng)的兩個CABAC二進(jìn)制串的長度相同,第一空間C0和第二空間C1中對應(yīng)的兩個CABAC二進(jìn)制串各自所對應(yīng)的量化殘差系數(shù)的絕對值相差1;②-2、將加密域的H.264/AVC視頻中當(dāng)前識別出的量化殘差系數(shù)的絕對值的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;否則,對當(dāng)前二進(jìn)制串不進(jìn)行處理,然后執(zhí)行步驟②-4;②-4、將加密域的H.264/AVC視頻中下一個識別出的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串作為當(dāng)前二進(jìn)制串,將待嵌入的隱秘信息中下一個待嵌入的信息比特作為當(dāng)前信息比特,然后返回步驟②-3繼續(xù)執(zhí)行,直至隱秘信息嵌入完畢,完成加密域的H.264/AVC視頻數(shù)據(jù)隱藏,得到含隱秘信息的加密域的H.264/AVC視頻;所述的隱秘數(shù)據(jù)提取在加密域完成或在解密域完成,在加密域完成隱秘數(shù)據(jù)提取的具體過程為:③-1a、采用與步驟②-1相同的方式,將H.264/AVC視頻壓縮編碼標(biāo)準(zhǔn)中所有絕對值大于15的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串分成第一空間C0和第二空間C1;③-1b、在加密域,對含隱秘信息的加密域的H.264/AVC視頻碼流進(jìn)行二進(jìn)制算術(shù)解碼,識別含隱秘信息的加密的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串;③-1c、將當(dāng)前識別出的量化殘差系數(shù)的絕對值的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、在加密域,將下一個識別出的含隱秘信息的加密的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串作為當(dāng)前二進(jìn)制串,然后返回步驟③-1d繼續(xù)執(zhí)行,直至含隱秘信息的加密域的H.264/AVC視頻碼流中的所有量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串處理完畢,提取得到隱秘信息;在解密域完成隱秘數(shù)據(jù)提取的具體過程為:③-2a、采用與步驟②-1相同的方式,將H.264/AVC視頻壓縮編碼標(biāo)準(zhǔn)中所有絕對值大于15的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串分成第一空間C0和第二空間C1;③-2b、對含隱秘信息的加密域的H.264/AVC視頻碼流進(jìn)行二進(jìn)制算術(shù)解碼,識別加密的運(yùn)動矢量差分符號的CABAC二進(jìn)制串和加密的量化殘差系數(shù)符號的CABAC二進(jìn)制串,然后對加密的運(yùn)動矢量差分符號的CABAC二進(jìn)制串和加密的量化殘差系數(shù)符號的CABAC二進(jìn)制串進(jìn)行解密,再進(jìn)行二進(jìn)制算術(shù)編碼,得到解密后的含隱秘信息的H.264/AVC視頻碼流;③-2c、在解密域,對解密后的含隱秘信息的H.264/AVC視頻碼流進(jìn)行二進(jìn)制算術(shù)解碼,識別解密后的含隱秘信息的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串;③-2d、將當(dāng)前識別出的量化殘差系數(shù)的絕對值的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、在解密域,將下一個識別出的解密后的含隱秘信息的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串作為當(dāng)前二進(jìn)制串,然后返回步驟③-2e繼續(xù)執(zhí)行,直至解密后的含隱秘信息的H.264/AVC視頻中的所有量化殘差系數(shù)的絕對值的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ù)測模式為幀內(nèi)預(yù)測模式還是為幀間預(yù)測模式,如果當(dāng)前宏塊的預(yù)測模式為幀間預(yù)測模式,則繼續(xù)執(zhí)行步驟①-4,如果當(dāng)前宏塊的預(yù)測模式為幀內(nèi)預(yù)測模式,則繼續(xù)執(zhí)行步驟①-5;①-4、當(dāng)當(dāng)前宏塊的運(yùn)動矢量差分不為0時,利用第一密鑰生成的二值偽隨機(jī)序列中的第k1位比特至第k1+L1位比特對當(dāng)前宏塊的運(yùn)動矢量差分符號的CABAC二進(jìn)制串進(jìn)行按位比特異或加密,完成當(dāng)前宏塊的運(yùn)動矢量差分的加密,然后令k1=k1+L1+1,再執(zhí)行步驟①-5,其中,k1的初始值為1,L1表示當(dāng)前宏塊的運(yùn)動矢量差分符號的CABAC二進(jìn)制串的長度,k1=k1+L1+1中的“=”為賦值符號;當(dāng)當(dāng)前宏塊的運(yùn)動矢量差分為0時,對當(dāng)前宏塊的運(yùn)動矢量差分不加密,然后執(zhí)行步驟①-5;①-5、當(dāng)當(dāng)前宏塊的量化殘差系數(shù)不為0時,利用第二密鑰生成的二值偽隨機(jī)序列中的第k2位比特至第k2+L2位比特對當(dāng)前宏塊的量化殘差系數(shù)符號的CABAC二進(jìn)制串進(jìn)行按位比特異或加密,完成當(dāng)前宏塊的量化殘差系數(shù)的加密,然后令k2=k2+L2+1,再執(zhí)行步驟①-6,其中,k2的初始值為1,L2表示當(dāng)前宏塊的量化殘差系數(shù)符號的CABAC二進(jìn)制串的長度,k2=k2+L2+1中的“=”為賦值符號;對于原始的H.264/AVC視頻中量化殘差系數(shù)為0的所有宏塊,對每個宏塊的量化殘差系數(shù)不加密,然后執(zhí)行步驟①-6;①-6、將當(dāng)前幀中下一個待處理的宏塊作為當(dāng)前宏塊,然后返回步驟①-3繼續(xù)執(zhí)行,直至當(dāng)前幀中的所有宏塊處理完畢;①-7、將原始的H.264/AVC視頻中下一個待處理的幀作為當(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)制串一一對應(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)制串一一對應(yīng)的CABAC二進(jìn)制串替換當(dāng)前二進(jìn)制串。所述的步驟③-2b中對加密的運(yùn)動矢量差分符號的CABAC二進(jìn)制串進(jìn)行解密的過程為:1)將當(dāng)前識別出的加密的運(yùn)動矢量差分符號的CABAC二進(jìn)制串定義為當(dāng)前二進(jìn)制串;2)利用第一密鑰生成的二值偽隨機(jī)序列中的第k1位比特至第k1+LS1位比特對當(dāng)前二進(jìn)制串進(jìn)行按位比特異或解密,然后令k1=k1+LS1+1,再執(zhí)行步驟3),其中,k1的初始值為1,LS1表示當(dāng)前二進(jìn)制串的長度,k1=k1+LS1+1中的“=”為賦值符號;3)將下一個識別出的加密的運(yùn)動矢量差分符號的CABAC二進(jìn)制串作為當(dāng)前二進(jìn)制串,然后返回步驟2)繼續(xù)執(zhí)行,完成識別出的所有加密的運(yùn)動矢量差分符號的CABAC二進(jìn)制串的解密;所述的步驟③-2b中對加密的量化殘差系數(shù)符號的CABAC二進(jìn)制串進(jìn)行解密的過程為:(1)將當(dāng)前識別出的加密的量化殘差系數(shù)符號的CABAC二進(jìn)制串定義為當(dāng)前二進(jìn)制串;(2)利用第二密鑰生成的二值偽隨機(jī)序列中的第k2位比特至第k2+LS2位比特對當(dāng)前二進(jìn)制串進(jìn)行按位比特異或解密,然后令k2=k2+LS2+1,再執(zhí)行步驟(3),其中,k2的初始值為1,LS2表示當(dāng)前二進(jìn)制串的長度,k2=k2+LS2+1中的“=”為賦值符號;(3)將下一個識別出的加密的量化殘差系數(shù)符號的CABAC二進(jìn)制串作為當(dāng)前二進(jìn)制串,然后返回步驟(2)繼續(xù)執(zhí)行,完成識別出的所有加密的量化殘差系數(shù)符號的CABAC二進(jìn)制串的解密。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:1)本發(fā)明方法選擇CABAC中旁路編碼模式的語法元素進(jìn)行等長二進(jìn)制串替換操作實現(xiàn)視頻加密,采用量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串映射方法進(jìn)行數(shù)據(jù)隱藏,加密和數(shù)據(jù)隱藏都對H.264/AVC視頻流的碼率沒有任何改變,解決了視頻加密和數(shù)據(jù)隱藏中的數(shù)據(jù)擴(kuò)張問題。2)本發(fā)明方法中加密和隱藏數(shù)據(jù)都是在CABAC熵編碼下完成,與CABAC熵編碼完全兼容,可用標(biāo)準(zhǔn)H.264/AVC視頻解碼器對加密和數(shù)據(jù)隱藏后的視頻流進(jìn)行解碼。3)數(shù)據(jù)隱藏者利用本發(fā)明方法可以直接在加密的H.264/AVC視頻中嵌入隱秘信息,即使數(shù)據(jù)隱藏者不知道原始視頻內(nèi)容,也可有效地解決視頻內(nèi)容安全和隱私泄露問題;此外,本發(fā)明方法既可以在加密域有效地提取出隱秘數(shù)據(jù),也可以在解密域有效地提取出隱秘數(shù)據(jù),也即數(shù)據(jù)提取與解密是完全分離,實用性更強(qiáng)。附圖說明圖1a為本發(fā)明方法中的視頻加密和數(shù)據(jù)隱藏的總體實現(xiàn)框圖;圖1b為本發(fā)明方法中的隱秘數(shù)據(jù)提取的總體實現(xiàn)框圖;圖2為兩個空間中的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串的后綴對應(yīng)關(guān)系。具體實施方式以下結(jié)合附圖實施例對本發(fā)明作進(jìn)一步詳細(xì)描述。實施例一:本實施例提出的一種兼容CABAC的加密域H.264/AVC視頻數(shù)據(jù)隱藏方法,其包括H.264/AVC視頻加密、加密域的H.264/AVC視頻數(shù)據(jù)隱藏及隱秘數(shù)據(jù)提取三部分。在此具體實施例中,為降低計算復(fù)雜度,并保持加密后的H.264/AVC視頻碼流的碼率不變,同時具有較高的感知安全性,本發(fā)明方法選擇對運(yùn)動矢量差分(MVD)符號的CABAC二進(jìn)制串(binstring)和量化殘差系數(shù)符號的CABAC二進(jìn)制串進(jìn)行加密,H.264/AVC視頻加密的處理過程(如圖1a所示)為:對于原始的H.264/AVC視頻中預(yù)測模式為幀間預(yù)測模式且運(yùn)動矢量差分不為0的所有宏塊,利用第一密鑰生成的二值偽隨機(jī)序列對每個宏塊的運(yùn)動矢量差分符號的CABAC二進(jìn)制串進(jìn)行比特異或加密,完成每個宏塊的運(yùn)動矢量差分的加密;對于原始的H.264/AVC視頻中預(yù)測模式為幀間預(yù)測模式且運(yùn)動矢量差分為0的所有宏塊,對每個宏塊的運(yùn)動矢量差分不加密;對于原始的H.264/AVC視頻中量化殘差系數(shù)不為0的所有宏塊,利用第二密鑰生成的二值偽隨機(jī)序列對每個宏塊的量化殘差系數(shù)符號的CABAC二進(jìn)制串進(jìn)行比特異或加密,完成每個宏塊的量化殘差系數(shù)的加密;對于原始的H.264/AVC視頻中量化殘差系數(shù)為0的所有宏塊,對每個宏塊的量化殘差系數(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ù)測模式為幀內(nèi)預(yù)測模式還是為幀間預(yù)測模式,如果當(dāng)前宏塊的預(yù)測模式為幀間預(yù)測模式,則繼續(xù)執(zhí)行步驟①-4,如果當(dāng)前宏塊的預(yù)測模式為幀內(nèi)預(yù)測模式,則繼續(xù)執(zhí)行步驟①-5。①-4、當(dāng)當(dāng)前宏塊的運(yùn)動矢量差分不為0時,利用第一密鑰生成的二值偽隨機(jī)序列中的第k1位比特至第k1+L1位比特對當(dāng)前宏塊的運(yùn)動矢量差分符號的CABAC二進(jìn)制串進(jìn)行按位比特異或加密,完成當(dāng)前宏塊的運(yùn)動矢量差分的加密,然后令k1=k1+L1+1,再執(zhí)行步驟①-5,其中,k1的初始值為1,L1表示當(dāng)前宏塊的運(yùn)動矢量差分符號的CABAC二進(jìn)制串的長度,k1=k1+L1+1中的“=”為賦值符號。由于宏塊的運(yùn)動矢量差分符號的CABAC二進(jìn)制串是直接進(jìn)入旁路編碼模式的,因此利用第一密鑰生成的二值偽隨機(jī)序列中的第k1位比特至第k1+L1位比特對當(dāng)前宏塊的運(yùn)動矢量差分符號的CABAC二進(jìn)制串進(jìn)行按位比特異或加密,不會改變最終CABAC二進(jìn)制串的長度,滿足格式兼容性。當(dāng)當(dāng)前宏塊的運(yùn)動矢量差分為0時,對當(dāng)前宏塊的運(yùn)動矢量差分不加密,然后執(zhí)行步驟①-5。①-5、當(dāng)當(dāng)前宏塊的量化殘差系數(shù)不為0時,利用第二密鑰生成的二值偽隨機(jī)序列中的第k2位比特至第k2+L2位比特對當(dāng)前宏塊的量化殘差系數(shù)符號的CABAC二進(jìn)制串進(jìn)行按位比特異或加密,完成當(dāng)前宏塊的量化殘差系數(shù)的加密,然后令k2=k2+L2+1,再執(zhí)行步驟①-6,其中,k2的初始值為1,L2表示當(dāng)前宏塊的量化殘差系數(shù)符號的CABAC二進(jìn)制串的長度,k2=k2+L2+1中的“=”為賦值符號。對于原始的H.264/AVC視頻中量化殘差系數(shù)為0的所有宏塊,對每個宏塊的量化殘差系數(shù)不加密,然后執(zhí)行步驟①-6。①-6、將當(dāng)前幀中下一個待處理的宏塊作為當(dāng)前宏塊,然后返回步驟①-3繼續(xù)執(zhí)行,直至當(dāng)前幀中的所有宏塊處理完畢。①-7、將原始的H.264/AVC視頻中下一個待處理的幀作為當(dāng)前幀,然后返回步驟①-2繼續(xù)執(zhí)行,直至原始的H.264/AVC視頻中的所有幀處理完畢,得到加密域的H.264/AVC視頻。上述,對宏塊的運(yùn)動矢量差分符號的CABAC二進(jìn)制串和量化殘差系數(shù)符號的CABAC二進(jìn)制串進(jìn)行加密所利用的二值偽隨機(jī)序列可以是由同一個密鑰生成的,也可以是由不同的密鑰生成的,即第一密鑰和第二密鑰可以相同,也可以不相同,但是解密時所采用的密鑰與加密時所采用的密鑰需一致。在此具體實施例中,如圖1a所示,加密域的H.264/AVC視頻數(shù)據(jù)隱藏的具體過程為:②-1、將H.264/AVC視頻壓縮編碼標(biāo)準(zhǔn)中所有絕對值大于15的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串分成兩個空間,即將H.264/AVC視頻壓縮編碼標(biāo)準(zhǔn)中的部分量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串分成兩個空間,且兩個空間內(nèi)的每個CABAC二進(jìn)制串所對應(yīng)的量化殘差系數(shù)的絕對值大于15。非零量化殘差系數(shù)的絕對值是由截斷一元碼和0階指數(shù)哥倫布編碼(EG0)完成二進(jìn)制化的,如果絕對值不大于14,則CABAC二進(jìn)制串僅僅由前綴組成;如果絕對值大于14,則CABAC二進(jìn)制串由前綴和后綴組成。表1給出了H.264/AVC視頻壓縮編碼標(biāo)準(zhǔn)中的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串。隱秘信息是通過替換表1中的CABAC二進(jìn)制串進(jìn)行嵌入的。用于嵌入隱秘信息的CABAC二進(jìn)制串需滿足兩個條件限制:1)嵌入隱秘信息后的視頻碼流必須保持格式兼容,同時不影響編碼效率,因此替代的CABAC二進(jìn)制串應(yīng)該與原CABAC二進(jìn)制串具有相同的長度;2)嵌入隱秘信息對視頻的視覺質(zhì)量影響應(yīng)該盡可能小,因此替換的CABAC二進(jìn)制串與原CABAC二進(jìn)制串對應(yīng)的量化殘差系數(shù)的絕對值應(yīng)該盡量接近。表1H.264/AVC視頻壓縮編碼標(biāo)準(zhǔn)中的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串將表1中所有絕對值大于15的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串分成第一空間C0和第二空間C1:如果量化殘差系數(shù)的絕對值為偶數(shù),則將該量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串分到第一空間C0中;如果量化殘差系數(shù)的絕對值為奇數(shù),則將該量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串分到第二空間C1中;也可以將絕對值為奇數(shù)的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串分到第一空間C0中,將絕對值為偶數(shù)的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串分到第二空間C1中。圖2給出了兩個空間中的CABAC二進(jìn)制串的對應(yīng)關(guān)系(第一空間和第二空間中相對應(yīng)的兩個CABAC二進(jìn)制串所對應(yīng)的量化殘差系數(shù)的絕對值相差1),由于絕對值大于15的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串的前綴都相同,因此圖2中僅列出了后綴部分。圖2中第一空間C0中的每個CABAC二進(jìn)制串所對應(yīng)的量化殘差系數(shù)的絕對值為偶數(shù),第二空間C1中的每個CABAC二進(jìn)制串所對應(yīng)的量化殘差系數(shù)的絕對值為奇數(shù)。②-2、將加密域的H.264/AVC視頻中當(dāng)前識別出的量化殘差系數(shù)的絕對值的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;否則,對當(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)制串一一對應(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)制串一一對應(yīng)的CABAC二進(jìn)制串替換當(dāng)前二進(jìn)制串。②-4、將加密域的H.264/AVC視頻中下一個識別出的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串作為當(dāng)前二進(jìn)制串,將待嵌入的隱秘信息中下一個待嵌入的信息比特作為當(dāng)前信息比特,然后返回步驟②-3繼續(xù)執(zhí)行,直至隱秘信息嵌入完畢,完成加密域的H.264/AVC視頻數(shù)據(jù)隱藏,得到含隱秘信息的加密域的H.264/AVC視頻。由于隱秘信息提取與視頻解密是可完全分割的,因此隱秘數(shù)據(jù)提取可在加密域完成,也可在解密域完成。如圖1b所示,在加密域完成隱秘數(shù)據(jù)提取的具體過程為:③-1a、采用與步驟②-1相同的方式,將H.264/AVC視頻壓縮編碼標(biāo)準(zhǔn)中所有絕對值大于15的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串分成第一空間C0和第二空間C1。③-1b、在加密域,對含隱秘信息的加密域的H.264/AVC視頻碼流進(jìn)行二進(jìn)制算術(shù)解碼即進(jìn)行部分CABAC熵解碼,識別含隱秘信息的加密的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串。③-1c、將當(dāng)前識別出的量化殘差系數(shù)的絕對值的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、在加密域,將下一個識別出的含隱秘信息的加密的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串作為當(dāng)前二進(jìn)制串,然后返回步驟③-1d繼續(xù)執(zhí)行,直至含隱秘信息的加密域的H.264/AVC視頻碼流中的所有量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串處理完畢,提取得到隱秘信息。在加密域完成隱秘數(shù)據(jù)提取,即數(shù)據(jù)的嵌入和提取都是在加密域進(jìn)行的,可有效解決視頻內(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ù)提取在解密域完成。有些情況下用戶需要先對加密視頻進(jìn)行解密,然后從解密后的視頻中提取隱秘信息,例如,一個擁有加密密鑰(該密鑰即為加密時所利用的二值偽隨機(jī)序列對應(yīng)的密鑰)的授權(quán)用戶收到含隱秘信息的加密視頻,可以先用加密密鑰對視頻進(jìn)行解密,解密后的視頻仍然含有隱秘信息,該隱秘信息可以用于追蹤數(shù)據(jù)源。如圖1b所示,本實施例給出的方法在解密域完成隱秘數(shù)據(jù)提取的具體過程為:③-2a、采用與步驟②-1相同的方式,將H.264/AVC視頻壓縮編碼標(biāo)準(zhǔn)中所有絕對值大于15的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串分成第一空間C0和第二空間C1。③-2b、對含隱秘信息的加密域的H.264/AVC視頻碼流進(jìn)行二進(jìn)制算術(shù)解碼即進(jìn)行部分CABAC熵解碼,識別加密的運(yùn)動矢量差分符號的CABAC二進(jìn)制串和加密的量化殘差系數(shù)符號的CABAC二進(jìn)制串,然后對加密的運(yùn)動矢量差分符號的CABAC二進(jìn)制串和加密的量化殘差系數(shù)符號的CABAC二進(jìn)制串進(jìn)行解密,再進(jìn)行二進(jìn)制算術(shù)編碼,得到解密后的含隱秘信息的H.264/AVC視頻碼流。在此,利用第一密鑰生成的二值偽隨機(jī)序列對加密的運(yùn)動矢量差分符號的CABAC二進(jìn)制串進(jìn)行解密,解密過程與加密過程一致,即從第一密鑰生成的二值偽隨機(jī)序列中按序取出LS1(LS1表示運(yùn)動矢量差分符號的CABAC二進(jìn)制串)位,與運(yùn)動矢量差分符號的CABAC二進(jìn)制串進(jìn)行異或解密,并且密鑰為同一個,即加密和解密時所利用的二值偽隨機(jī)序列為同一個;利用第二密鑰生成的二值偽隨機(jī)序列對量化殘差系數(shù)符號的CABAC二進(jìn)制串進(jìn)行解密,解密的過程與加密時利用第二密鑰生成的二值偽隨機(jī)序列對量化殘差系數(shù)符號的CABAC二進(jìn)制串加密的過程一致,即從第二密鑰生成的二值偽隨機(jī)序列中按序取出LS2(LS2表示量化殘差系數(shù)符號的CABAC二進(jìn)制串)位,與量化殘差系數(shù)符號的CABAC二進(jìn)制串進(jìn)行異或解密,并且密鑰為同一個,即加密和解密時所利用的二值偽隨機(jī)序列為同一個。即:對加密的運(yùn)動矢量差分符號的CABAC二進(jìn)制串進(jìn)行解密的過程為:1)將當(dāng)前識別出的加密的運(yùn)動矢量差分符號的CABAC二進(jìn)制串定義為當(dāng)前二進(jìn)制串。2)利用第一密鑰生成的二值偽隨機(jī)序列中的第k1位比特至第k1+LS1位比特對當(dāng)前二進(jìn)制串進(jìn)行按位比特異或解密,然后令k1=k1+LS1+1,再執(zhí)行步驟3),其中,k1的初始值為1,LS1表示當(dāng)前二進(jìn)制串的長度,k1=k1+LS1+1中的“=”為賦值符號。3)將下一個識別出的加密的運(yùn)動矢量差分符號的CABAC二進(jìn)制串作為當(dāng)前二進(jìn)制串,然后返回步驟2)繼續(xù)執(zhí)行,完成識別出的所有加密的運(yùn)動矢量差分符號的CABAC二進(jìn)制串的解密。對加密的量化殘差系數(shù)符號的CABAC二進(jìn)制串進(jìn)行解密的過程為:(1)將當(dāng)前識別出的加密的量化殘差系數(shù)符號的CABAC二進(jìn)制串定義為當(dāng)前二進(jìn)制串。(2)利用第二密鑰生成的二值偽隨機(jī)序列中的第k2位比特至第k2+LS2位比特對當(dāng)前二進(jìn)制串進(jìn)行按位比特異或解密,然后令k2=k2+LS2+1,再執(zhí)行步驟(3),其中,k2的初始值為1,LS2表示當(dāng)前二進(jìn)制串的長度,k2=k2+LS2+1中的“=”為賦值符號。(3)將下一個識別出的加密的量化殘差系數(shù)符號的CABAC二進(jìn)制串作為當(dāng)前二進(jìn)制串,然后返回步驟(2)繼續(xù)執(zhí)行,完成識別出的所有加密的量化殘差系數(shù)符號的CABAC二進(jìn)制串的解密。③-2c、在解密域,對解密后的含隱秘信息的H.264/AVC視頻碼流進(jìn)行二進(jìn)制算術(shù)解碼即進(jìn)行部分CABAC熵解碼,識別解密后的含隱秘信息的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串。③-2d、將當(dāng)前識別出的量化殘差系數(shù)的絕對值的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、在解密域,將下一個識別出的解密后的含隱秘信息的量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串作為當(dāng)前二進(jìn)制串,然后返回步驟③-2e繼續(xù)執(zhí)行,直至解密后的含隱秘信息的H.264/AVC視頻中的所有量化殘差系數(shù)的絕對值的CABAC二進(jìn)制串處理完畢,提取得到隱秘信息。