專利名稱:一種數(shù)字音頻防篡改方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字音頻的防篡改方法,應(yīng)用了基于小波變換的數(shù)字水印技術(shù)。
背景技術(shù):
隨著數(shù)字音頻的廣泛應(yīng)用,數(shù)字音頻數(shù)據(jù)容易受到篡改使得數(shù)據(jù)的完整性難以得到保證等一系列問題出現(xiàn)在我們的面前。例如1)網(wǎng)絡(luò)中傳輸?shù)囊纛l信息很容易受到篡改,需要有方法來保證音頻信息的完整性。2)筆錄是公檢法等部門傳統(tǒng)的取證手段,然而單獨(dú)的筆錄取證手段具有準(zhǔn)確度不高、記錄速度慢、易于篡改、易于產(chǎn)生爭(zhēng)議等缺點(diǎn)。數(shù)字錄音取證手段在相當(dāng)程度上可以解決上述存在的問題,特別是在事后判斷是否存在誘供、逼供行為時(shí)等可以起到很好的說明作用,且便于查詢。但普通的數(shù)字錄音也存在數(shù)據(jù)容易被篡改的缺陷。一旦解決數(shù)據(jù)防篡改和完整性認(rèn)證問題,數(shù)字錄音將可以作為一種重要的取證手段。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種數(shù)字音頻的防篡改方法,該方法具有良好的抗裁剪能力,而且具有保護(hù)音頻數(shù)據(jù)完整性的能力,使處理后的音頻與原始音頻在聽覺上差別不大。
為了實(shí)現(xiàn)上述目的,本發(fā)明方法分為水印和同步碼的嵌入和檢測(cè)兩個(gè)步驟水印和同步碼的嵌入過程如下1)錄音根據(jù)用戶的需求選取特定的采樣率和量化精度進(jìn)行錄音,對(duì)于普通語(yǔ)音,選取22.1kHz采樣率,8bits量化精度;對(duì)于高保真音頻選取44.1kHz采樣率,16bits量化精度;將模擬音頻信號(hào)通過A/D變換形成數(shù)字信號(hào);2)實(shí)時(shí)嵌入水印和同步碼在錄音的同時(shí),按用戶需求的長(zhǎng)度將數(shù)字語(yǔ)音信號(hào)分段,分段長(zhǎng)度缺省值為0.1秒,選取周期長(zhǎng)度為63bit或31bit的m序列作為同步碼,對(duì)每一段數(shù)據(jù)采取Daubechies(雙正交)系列小波進(jìn)行5層小波變換然后嵌入同步碼以及缺省長(zhǎng)度為44bits的水印,整個(gè)音頻數(shù)據(jù)中嵌入的水印可以構(gòu)成一個(gè)連續(xù)的數(shù)字序列,嵌入水印后的數(shù)字音頻信號(hào)可以存入計(jì)算機(jī)磁盤;水印的檢測(cè)過程如下1)水印的檢測(cè)對(duì)于正常情況下水印的檢測(cè),將待檢測(cè)音頻數(shù)據(jù)按不短于水印嵌入時(shí)的長(zhǎng)度分段,保證每段音頻中至少包含一個(gè)同步碼,對(duì)每一段數(shù)據(jù)進(jìn)行與嵌入過程相同分解層數(shù)和相同小波的小波變換,從分解得到的低頻系數(shù)中提取并搜索同步碼,最后根據(jù)同步碼的位置提取水印;2)判斷篡改對(duì)于一段音頻數(shù)據(jù)被裁剪情況下水印的檢測(cè),同樣先對(duì)數(shù)據(jù)進(jìn)行分段并進(jìn)行小波變換,從小波系數(shù)中提取水印,當(dāng)出現(xiàn)提取出的水印不連續(xù)時(shí)則認(rèn)為音頻數(shù)據(jù)出現(xiàn)了斷點(diǎn),對(duì)于只有一段音頻數(shù)據(jù)被裁剪的情況斷點(diǎn)后的數(shù)據(jù)是完整的,利用這一點(diǎn)就可以判斷出斷點(diǎn)位置,從而提取出剩余的所有水印;3)對(duì)于多段音頻數(shù)據(jù)被裁剪情況下水印的檢測(cè),則利用小波變換的平移性質(zhì)對(duì)斷點(diǎn)后的水印進(jìn)行重同步,從而提取出剩余的所有水印。
為了能夠?qū)崿F(xiàn)實(shí)時(shí)的對(duì)音頻信號(hào)嵌入水印,可采用了多線程的技術(shù)以實(shí)現(xiàn)錄音和水印嵌入的同步進(jìn)行。系統(tǒng)建立了語(yǔ)音線程和水印嵌入線程,并在內(nèi)存中開辟了兩個(gè)內(nèi)存隊(duì)列,分別是語(yǔ)音數(shù)據(jù)隊(duì)列和等待嵌入水印數(shù)據(jù)隊(duì)列。在系統(tǒng)中兩個(gè)隊(duì)列的大小相同,每個(gè)隊(duì)列都是由20塊大小為36096個(gè)字節(jié)的內(nèi)存塊組成的循環(huán)隊(duì)列,內(nèi)存塊的大小具體可按照實(shí)際需要對(duì)音頻數(shù)據(jù)分段的大小進(jìn)行調(diào)整。
具體的做法是一、水印和同步碼的嵌入一)錄音過程如下(1)錄音機(jī)放音,聲音模擬信號(hào)接入計(jì)算機(jī)的聲卡,語(yǔ)音線程控制聲卡在22050KHz的采樣率和8比特量化精度下通過A/D變換完成聲音信號(hào)的數(shù)字化并且使數(shù)字聲音信號(hào)被不斷的存入語(yǔ)音數(shù)據(jù)隊(duì)列。
(2)通過語(yǔ)音線程監(jiān)控語(yǔ)音數(shù)據(jù)隊(duì)列,一旦發(fā)現(xiàn)隊(duì)列不為空,即有數(shù)據(jù)進(jìn)入隊(duì)列則立刻通過Windows提供的回調(diào)函數(shù)將語(yǔ)音數(shù)據(jù)隊(duì)列內(nèi)的數(shù)據(jù)存入等待嵌入水印數(shù)據(jù)隊(duì)列。
二)嵌入水印和同步碼(1)需要的水印數(shù)據(jù)是由二進(jìn)制比特序列構(gòu)成的連續(xù)數(shù)字序列,每一個(gè)數(shù)字由16比特構(gòu)成。用于定位水印的同步碼選擇為長(zhǎng)度為31的m序列。對(duì)語(yǔ)音信號(hào)進(jìn)行的數(shù)學(xué)變換采用離散小波變換(DWT),分解層數(shù)為5,小波基選用Daubechies系列中最簡(jiǎn)單的Haar小波。由選定的水印和小波變換的參數(shù)可以計(jì)算出嵌入的每一個(gè)水印數(shù)據(jù)塊的長(zhǎng)度為32×(16+31)=1504個(gè)字節(jié)。
(2)基于小波變換嵌入水印的算法步驟如下1)將需要嵌入水印的原始語(yǔ)音信號(hào)按水印數(shù)據(jù)塊的長(zhǎng)度分段;2)分別對(duì)分段所得到每一段數(shù)據(jù)做DWT變換,得到每一段音頻數(shù)據(jù)所對(duì)應(yīng)的DWT域低頻系數(shù);
3)將需要嵌入的水印和同步碼信息轉(zhuǎn)換為{-1,+1}序列,然后將序列按適當(dāng)?shù)膹?qiáng)度嵌入DWT域低頻系數(shù)中;4)通過對(duì)嵌入了水印信息的DWT域低頻系數(shù)作逆離散小波變換(IDWT)得到的到含有水印音頻數(shù)據(jù)。
音頻數(shù)據(jù)中嵌入同步碼的作用是用于定位水印信號(hào),使水印信號(hào)具有抗裁剪和平移的性能。嵌入完成之后的水印與同步碼的結(jié)構(gòu)如下……同步碼、水印、同步碼、水印、同步碼、水印……(3)水印嵌入線程監(jiān)控等待嵌入水印隊(duì)列,一旦發(fā)現(xiàn)有數(shù)據(jù)進(jìn)入隊(duì)列則立刻按上述嵌入算法對(duì)隊(duì)列內(nèi)的數(shù)據(jù)嵌入水印。隊(duì)列中的每一個(gè)數(shù)據(jù)塊長(zhǎng)36096個(gè)字節(jié),按照水印數(shù)據(jù)塊的長(zhǎng)度將其分段,分段數(shù)=36096/1504=24,然后對(duì)每一段嵌入水印及其同步信息,即隊(duì)列中的每一個(gè)數(shù)據(jù)塊中可以嵌入24個(gè)水印。水印嵌入線程再將嵌入了水印的數(shù)據(jù)塊從隊(duì)列中取出存入硬盤。
嵌入的水印具有很強(qiáng)的連續(xù)性,由這種連續(xù)性可以檢測(cè)音頻數(shù)據(jù)是否完整,如果音頻數(shù)據(jù)是完整的則相應(yīng)提取出來的水印也是連續(xù)的。相反,如果提取出的水印出現(xiàn)了斷點(diǎn)則證明音頻數(shù)據(jù)有殘缺。由水印斷點(diǎn)可以找出殘缺的位置。
二、水印的檢測(cè)過程一)正常音頻數(shù)據(jù)的檢測(cè)(1)基于小波變換提取水印的算法步驟如下1)將語(yǔ)音信號(hào)按水印數(shù)據(jù)塊的長(zhǎng)度分段,對(duì)每一段信號(hào)進(jìn)行DWT變換;2)從分解得到的DWT域低頻系數(shù)中提取出{-1,+1}序列;3)從{-1,+1}序列中搜索定位水印的同步碼,一旦同步碼找到則隨后的就是水印數(shù)字。
(2)在內(nèi)存中開辟一個(gè)長(zhǎng)度為9024個(gè)字節(jié)的緩沖區(qū),將所需要提取的數(shù)據(jù)按緩沖區(qū)長(zhǎng)度一塊一塊的讀入緩沖區(qū),按水印數(shù)據(jù)塊的長(zhǎng)度將緩沖區(qū)內(nèi)的數(shù)據(jù)分為9024/1504=6段,分別對(duì)每一段做DWT變換,如果音頻數(shù)據(jù)是完整的則可以從每一段中找到同步碼并得到水印。提取出的水印是0、1、2、3……等連續(xù)的整數(shù)。
系統(tǒng)在檢測(cè)過程中如果遇到提取出的前后水印差值不為1或提取不出水印則認(rèn)為音頻數(shù)據(jù)塊出現(xiàn)了殘缺,可以通過水印的斷點(diǎn)來確定音頻數(shù)據(jù)殘缺的位置,要找出水印斷點(diǎn)的關(guān)鍵是找到斷點(diǎn)后第一個(gè)水印的同步碼。對(duì)于只有一段被裁剪的音頻數(shù)據(jù),利用斷點(diǎn)后的同步碼和水印都是完整的可以準(zhǔn)確的定位出斷點(diǎn)。而對(duì)于有多段數(shù)據(jù)被裁剪的音頻數(shù)據(jù),由于斷點(diǎn)前后的水印不再完整,所以利用小波變換的平移性質(zhì)來定位斷點(diǎn)。
二)判斷篡改對(duì)于一段音頻數(shù)據(jù)被裁剪的檢測(cè)對(duì)于音頻數(shù)據(jù)中只有一個(gè)斷點(diǎn)的檢測(cè),具體做法是一旦發(fā)現(xiàn)提取出來的水印不連續(xù)則認(rèn)為當(dāng)前正在提取的的數(shù)據(jù)塊是殘缺的,然后從斷點(diǎn)的數(shù)據(jù)塊起始地址開始求出剩余數(shù)據(jù)所包括的具有完整水印和同步碼的數(shù)據(jù)塊(完整的數(shù)據(jù)塊長(zhǎng)度等于緩沖區(qū)長(zhǎng)度即9024個(gè)字節(jié))的個(gè)數(shù),以次計(jì)算出所有完整數(shù)據(jù)塊的總長(zhǎng)度,用剩余數(shù)據(jù)減去這些數(shù)據(jù)塊則得到殘余數(shù)據(jù)塊的長(zhǎng)度,再提取出殘余數(shù)據(jù)塊中的完整的水印則可以確定斷點(diǎn),由水印斷點(diǎn)就可以找出音頻數(shù)據(jù)被裁剪的位置。
對(duì)于多段音頻數(shù)據(jù)被裁剪的檢測(cè)對(duì)于音頻數(shù)據(jù)中有多個(gè)斷點(diǎn)的檢測(cè),具體做法是采用小波變換特殊的“平移不變性”,當(dāng)檢測(cè)到水印不連續(xù)時(shí),對(duì)當(dāng)前正在提取的數(shù)據(jù)塊進(jìn)行平移搜索,利用平移找到斷點(diǎn)后的水印,由于平移搜索會(huì)出現(xiàn)虛警(沒有嵌入同步碼的位置檢測(cè)出了同步碼,這樣就會(huì)把在該位置后面的隨機(jī)數(shù)據(jù)誤認(rèn)為水印數(shù)據(jù),從而得到不正確的結(jié)果),平移搜索包括了正確和錯(cuò)誤的結(jié)果,所以系統(tǒng)對(duì)搜索結(jié)果進(jìn)行篩選,挑出正確的水印,從而確定了水印斷點(diǎn)。
本發(fā)明方法具有如下的突出優(yōu)點(diǎn)1)于小波變換對(duì)音頻數(shù)據(jù)嵌入具有自同步能力的連續(xù)性水印,選擇適當(dāng)?shù)那度霃?qiáng)度可以使嵌入水印后的音頻與原始音頻在聽覺上只有很小的差別。
2)印具有良好的抗裁剪能力,具有保護(hù)音頻數(shù)據(jù)完整性的能力。初步實(shí)現(xiàn)了通過對(duì)水印音頻數(shù)據(jù)進(jìn)行提取來檢測(cè)該音頻數(shù)據(jù)是否被裁剪過,對(duì)于斷點(diǎn)數(shù)量很少的音頻數(shù)據(jù)有較強(qiáng)的檢測(cè)出斷點(diǎn)的能力,并且能以很高的精度定位音頻數(shù)據(jù)的殘缺位置。
為了測(cè)試水印音頻數(shù)據(jù)抗裁剪的性能作了錄音、對(duì)所錄數(shù)據(jù)實(shí)時(shí)嵌入水印,并測(cè)試水印抗裁剪性能的實(shí)驗(yàn),實(shí)驗(yàn)中所采用的音頻數(shù)據(jù)格式是wav格式,例如音頻數(shù)據(jù)*.wav中,*表示音頻數(shù)據(jù)的文件名,隨后的.wav表示該音頻數(shù)據(jù)文件是采用wav格式。
圖1為沒有嵌入水印的所錄長(zhǎng)度為3分38秒原始音頻Original.wav的數(shù)據(jù)圖。
圖2為Original.wav經(jīng)水印嵌入后的音頻water1.wav的數(shù)據(jù)圖。
圖3為water1.wav尾部被裁剪所剩的音頻remain1.wav的數(shù)據(jù)圖。
圖4為water1.wav開頭被裁剪所剩的音頻remain2.wav的數(shù)據(jù)圖。
圖5為water1.wav中間部位被裁剪所剩的音頻remain3.wav的數(shù)據(jù)圖。
圖6為嵌入水印的音頻water2.wav的數(shù)據(jù)圖。
圖7為water2.wav中有多段數(shù)據(jù)被裁剪所剩的音頻remain4.wav的數(shù)據(jù)圖。
圖1中表示采用量化精度為8,采樣頻率為22050Hz,單聲道,錄取的長(zhǎng)度約為3分38秒的原始音頻數(shù)據(jù)Original.wav圖。
圖2中表示取嵌入強(qiáng)度為30對(duì)原始音頻數(shù)據(jù)Original.wav進(jìn)行實(shí)時(shí)嵌入所得到的音頻water1.wav的數(shù)據(jù)圖。
所錄的音頻一共嵌入了3192個(gè)數(shù)字,每一個(gè)數(shù)字是16bit,數(shù)字的范圍是從0到3191。系統(tǒng)在對(duì)錄音數(shù)據(jù)進(jìn)行嵌入并存盤的同時(shí)也將沒有嵌入水印的原始音頻數(shù)據(jù)存盤,在錄音結(jié)束之后將兩組音頻數(shù)據(jù)進(jìn)行比較,在聽覺上二者的差別是很小的。
對(duì)于單個(gè)斷點(diǎn)的測(cè)試結(jié)果測(cè)試一將音頻文件water1.wav的尾部從3分開始的地方裁剪掉,所得到的音頻數(shù)據(jù)remain1.wav如圖3所示。
圖3中可看出,從剩余的音頻文件提取出的水印數(shù)字是從0到2640,共計(jì)2641個(gè)。對(duì)于被裁剪下的那段音頻,取搜索上下限分別為2640和3192,再平移搜索,則可以提取出共551個(gè)水印數(shù)字,提取出的水印數(shù)字范圍是從2641到3191,正好是丟失的數(shù)字。
測(cè)試二將音頻文件water1.wav的頭部從1分開始的地方裁剪掉,所得到的音頻數(shù)據(jù)remain2.wav如圖4所示。
從剩余的音頻文件提取出的水印數(shù)字是從879到3191,共計(jì)2513個(gè),對(duì)于被裁剪下的音頻,取搜索上下限分別為-1和879,再平移搜索,可以提取出共878個(gè)水印數(shù)字,從0到877,正好是丟失的數(shù)字,888由于受到裁剪破壞,所以無法提取出來。
測(cè)試三將音頻文件water1.wav的頭部從1分30秒開始的地方到1分32秒裁剪掉,所得到的音頻數(shù)據(jù)remain3.wav如圖5所示。
圖5中可看出,從剩余的音頻文件中提取出共計(jì)3171個(gè)數(shù)字,并判斷出裁剪的上限是1321,裁剪的下限是1343。所提取出的數(shù)字是從0到1321和1343到1391。對(duì)于裁剪下的音頻取其搜索上下限為1321和1343進(jìn)行平移搜索,可以提取出21個(gè)數(shù)字,從1322到1342,剛好是丟失的數(shù)字。
對(duì)于多個(gè)斷點(diǎn)的測(cè)試結(jié)果采用量化精度為8,采樣頻率為22050Hz,單聲道,錄取的原始音頻長(zhǎng)度約為3分45秒。并取嵌入強(qiáng)度為30對(duì)其進(jìn)行實(shí)時(shí)嵌入。所得到的音頻water2.wav數(shù)據(jù)如圖6所示。
圖6可看出,音頻文件一共嵌入水印3384個(gè),數(shù)字范圍是從0到3383。
將音頻文件water2.wav從2分25秒到2分27秒、1分45秒到1分46秒、1分19秒到1分22秒三段數(shù)據(jù)裁剪掉,得到的音頻數(shù)據(jù)remain4.wav如圖7所示。
圖7中,對(duì)裁剪后的音頻數(shù)據(jù)進(jìn)行水印的提取,結(jié)果出現(xiàn)3個(gè)斷點(diǎn),分別是(1140,1232),(1610,1645)和(2202,2253),提取出的水印總數(shù)是3209個(gè),最后一個(gè)數(shù)字是3383。對(duì)三段被剪切下來的音頻數(shù)據(jù)進(jìn)行提取,用各自的斷點(diǎn)作為平移搜索的上下限,提取出三段數(shù)據(jù)的水印范圍分別是1142-1230共89個(gè)、1612-1642共31個(gè)和2204-2251共48個(gè)。正好是丟失的數(shù)字。
從實(shí)驗(yàn)結(jié)果可以看出在發(fā)生音頻數(shù)據(jù)被裁剪時(shí),仍然可以從剩余的音頻數(shù)據(jù)中提取出含有缺損斷點(diǎn)的不連續(xù)水印數(shù)字,為定位斷點(diǎn)信息提供了重要的依據(jù)。
權(quán)利要求
1.一種數(shù)字音頻防篡改方法,其特征在于該方法分為水印和同步碼的嵌入和檢測(cè)兩個(gè)步驟水印和同步碼的嵌入過程如下1)錄音根據(jù)用戶的需求選取特定的采樣率和量化精度進(jìn)行錄音,對(duì)于普通語(yǔ)音,選取22.1kHz采樣率,8bits量化精度;對(duì)于高保真音頻選取44.1kHz采樣率,16bits量化精度;將模擬音頻信號(hào)通過A/D變換形成數(shù)字信號(hào);2)實(shí)時(shí)嵌入水印和同步碼在錄音的同時(shí),采用基于小波變換的水印算法,按用戶需求的長(zhǎng)度將數(shù)字語(yǔ)音信號(hào)分段,分段長(zhǎng)度的缺省值為0.1秒,然后對(duì)每段音頻嵌入一個(gè)同步碼和一個(gè)水印,整個(gè)音頻數(shù)據(jù)中所嵌入的水印構(gòu)成了一個(gè)連續(xù)的數(shù)字序列,嵌入同步碼與水印后的數(shù)字音頻信號(hào)可以存入計(jì)算機(jī)磁盤;水印的檢測(cè)過程如下1)水印的檢測(cè)對(duì)于正常情況下水印的檢測(cè),將待檢測(cè)音頻數(shù)據(jù)按不短于水印嵌入時(shí)的長(zhǎng)度分段,保證每段音頻中至少包含一個(gè)同步碼,對(duì)每一段數(shù)據(jù)進(jìn)行與嵌入過程相同分解層數(shù)和相同小波的小波變換,從分解得到的低頻系數(shù)中提取并搜索同步碼,最后根據(jù)同步碼的位置提取水印;2)判斷篡改對(duì)于一段音頻數(shù)據(jù)被裁剪情況下水印的檢測(cè),同樣先對(duì)數(shù)據(jù)進(jìn)行分段并進(jìn)行小波變換,從小波系數(shù)中提取水印,當(dāng)出現(xiàn)提取出的水印不連續(xù)時(shí)則認(rèn)為音頻數(shù)據(jù)出現(xiàn)了斷點(diǎn),對(duì)于只有一段音頻數(shù)據(jù)被裁剪的情況斷點(diǎn)后的數(shù)據(jù)是完整的,利用這一點(diǎn)就可以判斷出斷點(diǎn)位置,從而提取出剩余的所有水印;3)對(duì)于多段音頻數(shù)據(jù)被裁剪情況下水印的檢測(cè),則利用小波變換的平移性質(zhì)對(duì)斷點(diǎn)后的水印進(jìn)行重同步,從而提取出剩余的所有水印。
全文摘要
本發(fā)明涉及一種數(shù)字音頻防篡改方法,是基于小波變換的數(shù)字水印技術(shù)。對(duì)于需要保護(hù)的音頻數(shù)據(jù),在錄音的同時(shí),利用小波變換對(duì)所錄的音頻數(shù)據(jù)實(shí)時(shí)嵌入水印,即錄音和嵌入水印同步進(jìn)行。錄音結(jié)束后水印嵌入過程也隨之結(jié)束。嵌入方法是對(duì)所錄音頻數(shù)據(jù)進(jìn)行小波分解,然后在小波變換的低頻系數(shù)中嵌入水印和同步碼,通過小波逆變換得到含有同步碼和水印的音頻。嵌入的水印具有很強(qiáng)的連續(xù)性,通過對(duì)水印的提取可以對(duì)該含有水印的音頻數(shù)據(jù)進(jìn)行判斷,以識(shí)別出音頻數(shù)據(jù)是否遭到裁剪及被裁剪的位置。本發(fā)明可以用于敏感錄音和重要音頻數(shù)據(jù)的防篡改。
文檔編號(hào)G11B20/10GK1585020SQ20041002735
公開日2005年2月23日 申請(qǐng)日期2004年5月28日 優(yōu)先權(quán)日2004年5月28日
發(fā)明者黃繼武, 吳紹權(quán), 施禮 申請(qǐng)人:中山大學(xué)