如何加密嵌入式視頻數(shù)據(jù)庫數(shù)據(jù)

多媒體數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸,存儲(chǔ)更加頻繁,因而多媒體信息的安全與保密就顯得非常重要,成為新的研究熱點(diǎn)。我們根據(jù)系統(tǒng)的需求和研究加密算法現(xiàn)狀的基礎(chǔ)上,提出了一種基于嵌入式數(shù)據(jù)庫Berkeley DB的視頻數(shù)據(jù)加密系統(tǒng)設(shè)計(jì)方案。

一、視頻系統(tǒng)總體設(shè)計(jì)

進(jìn)入信息化時(shí)代以來,隨著寬帶網(wǎng)絡(luò)和多媒體技術(shù)的高速發(fā)展和日趨成熟,引發(fā)了視頻監(jiān)控系統(tǒng)的革命性變化,以數(shù)字硬盤錄像機(jī)(DVR,Digital Video Recorder),磁盤陣列等相關(guān)產(chǎn)品為代表的新一代監(jiān)控設(shè)備使視頻監(jiān)控行業(yè)迅速向數(shù)字化、網(wǎng)絳化和智能化方向發(fā)。其中實(shí)時(shí)數(shù)據(jù)的加密、壓縮、檢索、存儲(chǔ)和傳輸是數(shù)字視頻監(jiān)控領(lǐng)域的關(guān)鍵技術(shù)。

1、系統(tǒng)硬件總體結(jié)構(gòu)

如何加密嵌入式視頻數(shù)據(jù)庫數(shù)據(jù)

在對(duì)嵌入式視頻存儲(chǔ)和檢索的關(guān)鍵技術(shù)進(jìn)行了深入分析后,本系統(tǒng)選用并對(duì)NAS-3000的軟硬件結(jié)構(gòu)進(jìn)行了設(shè)計(jì),給出主要的數(shù)據(jù)結(jié)構(gòu)和函數(shù)接口,對(duì)系統(tǒng)初始化、數(shù)據(jù)庫使用、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)檢索、數(shù)據(jù)轉(zhuǎn)發(fā)的流程進(jìn)行描述,下圖為系統(tǒng)硬件結(jié)構(gòu)示意圖。整個(gè)系統(tǒng)主要包括4個(gè)部分:主控板,存儲(chǔ)板,擴(kuò)展板,外圍電路。

2、應(yīng)用軟件總體結(jié)構(gòu)

整個(gè)系統(tǒng)自下而上大體上可分成以下幾部分:數(shù)據(jù)存取模塊:視頻特征提取模塊,視頻數(shù)據(jù)加密模塊,嵌入式數(shù)據(jù)庫模塊,查詢接口模塊,其他模塊。數(shù)據(jù)存取模塊,數(shù)據(jù)存取模塊負(fù)責(zé)視頻數(shù)據(jù)和特征索引的存儲(chǔ)與管理,是數(shù)據(jù)庫系統(tǒng)的底層存儲(chǔ)引擎,把用戶與數(shù)據(jù)的物理存儲(chǔ)分開。這是基于內(nèi)容視頻檢索的核心,通過視頻結(jié)構(gòu)分析和圖像處理、目標(biāo)識(shí)別等技術(shù),提取視頻的結(jié)構(gòu)特征和語義信息,生成視頻數(shù)據(jù)的索引。數(shù)據(jù)加密是結(jié)合MPEG編碼技術(shù),實(shí)現(xiàn)圖象數(shù)據(jù)從明文轉(zhuǎn)換為密文,從而實(shí)現(xiàn)數(shù)據(jù)的安全存儲(chǔ)與傳輸。嵌入式數(shù)據(jù)庫是基于內(nèi)容視頻存儲(chǔ)和檢索系統(tǒng)的神經(jīng)中樞,主要負(fù)責(zé)視頻索引的管理及數(shù)據(jù)庫的日常維護(hù),并為上層程序提供數(shù)據(jù)查詢、數(shù)據(jù)存取和數(shù)捷庫管理的編程接口,其結(jié)構(gòu)圖如圖2所示。

如何加密嵌入式視頻數(shù)據(jù)庫數(shù)據(jù)

二、視頻數(shù)據(jù)編碼與加密設(shè)計(jì)

1、選擇性加密算法

但是由于圖像和視頻信號(hào)數(shù)據(jù)量很大,所以這種加密方法計(jì)算量非常大,不僅浪費(fèi)資源,而且難以保證實(shí)時(shí)性,不易投入實(shí)用。為解決這對(duì)矛盾,研究視頻的信源特征,把密碼原理與視頻技術(shù)結(jié)合起來,對(duì)數(shù)據(jù)進(jìn)行加密。考慮到多媒體數(shù)據(jù)的加密是對(duì)內(nèi)容的加密,選擇加密對(duì)內(nèi)容敏感的一部分?jǐn)?shù)據(jù),可以在滿足安全性的同時(shí)達(dá)到降低計(jì)算復(fù)雜度的目的,本文選擇了VEA算法作為視頻數(shù)據(jù)的加密算法,如圖3所示。

1

2、VEA算法實(shí)現(xiàn)與分析

VEA算法主要內(nèi)容是用私鑰隨機(jī)改變DCT系數(shù)的符號(hào)位。因?yàn)閂EA算法僅對(duì)非零DCT系數(shù)的1 bit異或運(yùn)算,大六降低了運(yùn)算復(fù)雜度。MPEG視頻加密的目的是通過置亂視頻舞阻止非授權(quán)接收者解碼視頻流。常用的方法是對(duì)視頻流S(稱為明文)施以一個(gè)可逆變換Ekl,得到一個(gè)比特流C(稱為密文)既C=Ekl(S),一個(gè)授權(quán)用戶使用另一個(gè)私鑰K2,通過轉(zhuǎn)換:Dkl= E-1kl可能解密接收到的視頻流,整個(gè)解密操作如下:

如何加密嵌入式視頻數(shù)據(jù)庫數(shù)據(jù)

MPEG壓縮視頻S是一個(gè)比特流,它可以表示為:S=…S1…S2…SM…SM+1…SM+2…其中Si(i=l,2,…DC系數(shù)和A系數(shù)的符號(hào)位(對(duì)于I幀的Y,Cr,Cb塊,因?yàn)镈C系數(shù)是差分值的符號(hào)位,因此DC系數(shù)是差分編碼的)

VEA算法的加密方程EK,可以表達(dá)如下:

如何加密嵌入式視頻數(shù)據(jù)庫數(shù)據(jù)

加密算法隨機(jī)改變DCT系數(shù)的符號(hào)位,根據(jù)給定密鑰,一個(gè)符號(hào)位或者不變(相應(yīng)的密鑰位為O),或者從0變?yōu)?,或者從1變?yōu)镺(相應(yīng)的密鑰位為1)。VEA的加密效果在MPEG視頻解碼的IDCT i DCT逆變換)時(shí)體現(xiàn)出來。即使只有一些DCT系數(shù)改變,這些改變將擴(kuò)散到大多數(shù)IDCT系數(shù)中o對(duì)于有密鑰的用戶,可以解密視頻,獲得原始視頻。對(duì)于不知道密鑰的用戶,獲得的圖像將和原始圖像不同,有的變得無法理解,因?yàn)閳D像大部分像素值都己經(jīng)改變。

我們?cè)诨赬viD源代碼的MPEG4-SP編解碼平臺(tái)上進(jìn)行了該算法的仿真。在MPEG4-SP XviD源代碼中,DC系數(shù)的編碼是通過DC系數(shù)差分值的范圍確定尺度變長碼,再加唯一標(biāo)識(shí)該差分值的附加碼,來確定寫入碼流的碼字:AC系數(shù)的編碼是在對(duì)AC系數(shù)塊掃描時(shí),通過(RUN,LEVEL)行程編碼完成,RUN表示O的個(gè)數(shù),LEVEL表示當(dāng)前AC系數(shù)值,由RUN,LEVEL找到相對(duì)應(yīng)的變長碼,符號(hào)位通過該AC系數(shù)的正負(fù)關(guān)系在變長碼碼字最后一位以O(shè)或1標(biāo)識(shí),0表示正而1表示負(fù)。因此我們?cè)趲瑑?nèi)宏塊DC,AC系數(shù)預(yù)測(cè)之后和幀間宏塊在DCT系數(shù)量化后加入VEA算法,將非0值的DC系數(shù),AC系數(shù)的正負(fù)進(jìn)行隨機(jī)翻轉(zhuǎn),同時(shí)為了提高算法的安全性及增加加密圖像的不可理解性,我們根據(jù)判斷加密后的第一個(gè)塊的DC系數(shù)正負(fù)關(guān)系,改變運(yùn)動(dòng)向量的符號(hào),并將每個(gè)塊的第一行和第一列AC系數(shù)作異或運(yùn)算,部分的改變了原有的AC系數(shù)值。加密效果如圖4所示。從視覺效果上看,該算法可以很好的遮蓋原始視頻內(nèi)容,左邊的為原始圖像,右邊的為加密后的圖象。

如何加密嵌入式視頻數(shù)據(jù)庫數(shù)據(jù)

三、Berkeley DB數(shù)據(jù)庫的設(shè)計(jì)與實(shí)現(xiàn)

1、打開和使用數(shù)據(jù)庫

本系統(tǒng)的數(shù)據(jù)庫引擎為Berkeley DB,在系統(tǒng)初始化階段, 首先要打開數(shù)據(jù)庫,讀數(shù)據(jù)庫文件,根據(jù)索引對(duì)視頻文件進(jìn)行完整性檢查。BerkeleyDB用鍵值/數(shù)據(jù)來區(qū)分?jǐn)?shù)據(jù)庫中的數(shù)據(jù),鍵值/數(shù)據(jù)對(duì)是Berkeley DB的基本組成部分。也就是說,調(diào)用數(shù)據(jù)庫接口實(shí)際 上就是提供了相應(yīng)的鍵值,通過鍵值查找要操作的數(shù)據(jù)。在Berkeley DB中,所有的鍵值/數(shù)據(jù)對(duì)都存儲(chǔ)在一個(gè)叫做DBT的結(jié)構(gòu)內(nèi)。Berkeley DB的庫函數(shù)調(diào)用規(guī)則和面向?qū)ο蟮乃枷牒芟嗨?。打開數(shù)據(jù)庫分兩個(gè)步驟,首先調(diào)用db create函數(shù)創(chuàng)建一個(gè)DB結(jié)構(gòu)的句柄,然后再利用open函數(shù)來執(zhí)行——正打開數(shù)據(jù)庫的操作一其函數(shù)接口分別為:

如何加密嵌入式視頻數(shù)據(jù)庫數(shù)據(jù)

打開數(shù)據(jù)庫后,就可以進(jìn)行添加記錄、查找記錄刪除一記錄等操作。

2、數(shù)據(jù)存儲(chǔ)

數(shù)據(jù)存儲(chǔ)是視頻數(shù)據(jù)庫的中心任務(wù),其主要職責(zé)是將上層程序傳遞過來的視頻數(shù)據(jù)通過文件系統(tǒng)API存入硬盤,并創(chuàng)建視頻索引,為用戶檢索提供便利。我們只能將MPEG視頻流的結(jié)構(gòu)信息提取出來,結(jié)合其他外部信息(主要與視頻數(shù)據(jù)的物理存儲(chǔ)有關(guān)),作為索引的一部分存儲(chǔ)在Berkeley DB數(shù)據(jù)庫中。

系統(tǒng)正常運(yùn)行時(shí)將會(huì)創(chuàng)建兩個(gè)后臺(tái)守護(hù)進(jìn)程:disk monitors和diskwrite。

對(duì)于disk monitor進(jìn)程:用于定時(shí)檢查硬盤狀態(tài),確保當(dāng)前寫入數(shù)據(jù)的硬盤有足夠的空間o當(dāng)通道unit的空文件池中的保留句柄數(shù)小于最低閥值(通常為1)時(shí),嘗試從全局空文件池中獲取可用句柄。如果成功則disk monitor新創(chuàng)建一個(gè)空文件補(bǔ)充到全局空文件池中。否則說明全局空文件池中可用句柄數(shù)為O,disk monitor分別以O(shè)xfl:ffffff和unit為參數(shù)調(diào)用createempty_file0創(chuàng)建空文件,直到句柄數(shù)恢復(fù)正?;蛘哂脖P剩余容量不足。對(duì)于diskwrite主要是對(duì)接收到的數(shù)據(jù)進(jìn)行存儲(chǔ),其流程如圖5所示。

如何加密嵌入式視頻數(shù)據(jù)庫數(shù)據(jù)

3、數(shù)據(jù)檢索

提供靈活多樣的數(shù)據(jù)檢索服務(wù)是視頻數(shù)據(jù)庫的重要職能,也是視頻數(shù)據(jù)庫比一般的文件管理程序優(yōu)越的根本原因。當(dāng)用戶申請(qǐng)數(shù)據(jù)檢索時(shí),查詢處理進(jìn)程根據(jù)具體的查詢請(qǐng)求逐級(jí)檢索文件索引、段索引和幀索引,定位到最符合條件的數(shù)據(jù)幀,返回該幀在文件內(nèi)的偏移量。找到符合條件的視頻文件后,根據(jù)應(yīng)用需求和系統(tǒng)資源,就可以建立一條端對(duì)端的UDP或TCP連接,使遠(yuǎn)程用戶能夠在線播放或下載感興趣的視頻片斷。查詢處理進(jìn)程還維護(hù)一份全局的用戶連接表,并將所有操作以日志方式記錄下來。

查找文件的函數(shù)接口為:int find_ file(struct STRU_FILE_QUERY*query, struct STR—FILE—RETURN*files, intmax_ num—re-turned)

根據(jù)傳入的文件查詢結(jié)構(gòu)query中的參數(shù)進(jìn)行文件級(jí)檢索,符合條件的文件的相關(guān)信息放入查詢結(jié)果結(jié)構(gòu)files中返回,最大返回個(gè)數(shù)為 max num returned。

小知識(shí)之嵌入式數(shù)據(jù)庫

嵌入式數(shù)據(jù)庫的名稱來自其獨(dú)特的運(yùn)行模式。這種數(shù)據(jù)庫嵌入到了應(yīng)用程序進(jìn)程中,消除了與客戶機(jī)服務(wù)器配置相關(guān)的開銷。嵌入式數(shù)據(jù)庫實(shí)際上是輕量級(jí)的,在運(yùn)行時(shí),它們需要較少的內(nèi)存。它們是使用精簡代碼編寫的,對(duì)于嵌入式設(shè)備,其速度更快,效果更理想。嵌入式運(yùn)行模式允許嵌入式數(shù)據(jù)庫通過 SQL 來輕松管理應(yīng)用程序數(shù)據(jù),而不依靠原始的文本文件。嵌入式數(shù)據(jù)庫還提供零配置運(yùn)行模式,這樣可以啟用其中一個(gè)并運(yùn)行一個(gè)快照。